[PATCH v6 02/22] drm/connector: Add HDMI 2.0 scrambler infrastructure
Maxime Ripard
mripard at kernel.org
Mon Jun 8 07:33:17 PDT 2026
On Fri, May 22, 2026 at 01:57:16PM +0300, Cristian Ciocaltea wrote:
> Hi Maxime,
>
> On 5/21/26 10:52 AM, Maxime Ripard wrote:
> > Hi,
> >
> > Thanks for working on this!
>
> Thanks for your quick review! :-)
>
> >
> > On Wed, May 20, 2026 at 09:38:13PM +0300, Cristian Ciocaltea wrote:
> >> Add the connector-level infrastructure to support HDMI 2.0 scrambling:
> >>
> >> - .scrambler_src_{enable|disable}() callbacks in
> >> drm_connector_hdmi_funcs for source-side scrambling control
> >> - A delayed work item (scdc_work) with an associated callback (scdc_cb)
> >> for periodic monitoring of sink-side scrambling status
> >> - A scrambler_enabled flag to track whether scrambling is currently
> >> active
> >>
> >> These are intended to be used by SCDC scrambling helpers to coordinate
> >> scrambling setup and teardown between the source driver and the DRM
> >> core.
> >>
> >> Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea at collabora.com>
> >> ---
> >> drivers/gpu/drm/drm_connector.c | 14 +++++++++++
> >> include/drm/drm_connector.h | 52 +++++++++++++++++++++++++++++++++++++++++
> >> 2 files changed, 66 insertions(+)
> >
> > So we would need kunit tests for this.
>
> Ack.
>
> >
> >> diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
> >> index 3fa4d2082cd7..91e58362fbc0 100644
> >> --- a/drivers/gpu/drm/drm_connector.c
> >> +++ b/drivers/gpu/drm/drm_connector.c
> >> @@ -220,6 +220,19 @@ void drm_connector_free_work_fn(struct work_struct *work)
> >> }
> >> }
>
> [...]
>
> >> + /**
> >> + * @scdc_work: Work item currently used to monitor sink-side scrambling
> >> + * status and retry setup if the sink resets it.
> >> + */
> >> + struct delayed_work scdc_work;
> >> +
> >> + /** @scdc_cb: Callback to be invoked as part of @scdc_work.
> >> + *
> >> + * Currently used to monitor sink-side scrambling status and retry
> >> + * setup if the sink resets it.
> >> + *
> >> + * This is assigned by the framework when making use of
> >> + * drm_scdc_start_scrambling() helper.
> >> + */
> >> + void (*scdc_cb)(struct drm_connector *connector);
> >> +
> >
> > I'm really not sure what the monitor thing is about. If we have setup
> > the scrambler at enable time, and we set it again on hotplugging, why
> > would we need to monitor anything?
>
> This is similar to 257d36d493e9 ("drm/vc4: hdmi: Add a workqueue to set
> scrambling") in order to deal with some displays needing a retry on scrambling
> setup.
Ah, I see, sorry :)
It looks pretty generic though, should we have a helper for this then?
> > Also, scrambling is only relevant for HDMI 2.0. We need a way to expose
> > that somehow and make sure that HDMI 2.0 drivers actually have
> > scrambling setup.
>
> I assumed drivers that do not reject the HDMI 2.0 rates in their
> .tmds_char_rate_valid() are implicitly expected to support scrambling.
> Thinking again we could extend the framework to provide some additional checks,
> but let's discuss the topic on the SCDC patch.
HDMI 2.0 isn't just about scrambling though, YUV420 is another big
addition, and iirc you have more audio formats too.
Maxime
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 273 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20260608/6bcab009/attachment.sig>
More information about the linux-arm-kernel
mailing list