Hi Jani,
I've added the complete dmesg logs with drm.debug=0x1ff to GitLab
issue #6868. The logs confirm stable operation with the patch applied,
showing proper HDMI 2.0 scrambling timing at 4K@60Hz.

Please let me know if you need any additional information.

Thanks,
Jerome

Le mar. 30 déc. 2025 à 18:37, Jérôme Tollet <[email protected]> a écrit :
>
> Hi Jani,
>
>   Yes, there is an existing GitLab issue:
>   https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/6868
>
>   The issue contains:
>   - Original problem description and hardware details
>   - dmesg logs showing the SCDC timing issue (16ms between disable/enable)
>   - Discussion with Ankit Nautiyal who recommended submitting this patch
>
>   I can provide additional logs if needed:
>   - dmesg with drm.debug enabled (before and after the fix)
>   - Logs showing the improved timing (112-142ms) with the patch applied
>
>   Please let me know if you need specific debug information.
>
>   Thanks,
>   Jerome
>
>
> Le mar. 30 déc. 2025 à 15:59, Jani Nikula
> <[email protected]> a écrit :
> >
> > On Tue, 30 Dec 2025, Jerome Tollet <[email protected]> wrote:
> > > Some HDMI 2.0 monitors fail to decode the signal at 4K@60Hz (594 MHz)
> > > when SCDC scrambling is configured too quickly. The monitor displays
> > > "format detection" error and never recovers, despite SCDC I2C
> > > transactions succeeding.
> > >
> > > Root cause: The SCDC disable/enable sequence happens too fast (~16ms),
> > > causing the monitor to lose sync during the transition. HDMI 2.0 spec
> > > section 10.4.1.7 states that the sink can disable scrambling if it
> > > doesn't detect a scrambled clock within 100ms.
> > >
> > > Solution: Add timing delays to allow the monitor to properly handle
> > > the SCDC configuration:
> > > - 100ms before SCDC configuration (let monitor stabilize)
> > > - 150ms after DDI enable (let monitor lock onto scrambled signal)
> > >
> > > Testing performed on:
> > > - Hardware: Intel Alder Lake-N N100 (Gen12.0, PCI ID 8086:46d1)
> > > - Monitor: Cisco Desk Pro (HDMI 2.0 capable)
> > > - Resolution: 3840x2160@60Hz via HDMI 2.0
> > > - Kernel: Linux 6.18.1
> > > - Test scenarios:
> > >   * Multiple reboots (stable across all tests)
> > >   * DPMS ON/OFF cycles (suspend/resume works correctly)
> > >
> > > Impact: Adds 250ms delay during boot, only when hdmi_scrambling is
> > > active (resolutions > 340 MHz). No impact on lower resolutions or
> > > runtime performance.
> > >
> > > Fixes display initialization on monitors sensitive to SCDC timing.
> > >
> > > Signed-off-by: Jerome Tollet <[email protected]>
> >
> > Do you have a gitlab issue open about this? If not, please open one and
> > provide your dmesg with debugs enabled as described at [1].
> >
> > Thanks,
> > Jani.
> >
> >
> > [1] https://drm.pages.freedesktop.org/intel-docs/how-to-file-i915-bugs.html
> >
> >
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_ddi.c | 8 ++++++++
> > >  1 file changed, 8 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
> > > b/drivers/gpu/drm/i915/display/intel_ddi.c
> > > index abcdef123456..fedcba654321 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> > > @@ -3414,6 +3414,10 @@ static void intel_ddi_enable_hdmi(struct 
> > > intel_atomic_state *state,
> > >       enum port port = encoder->port;
> > >       u32 buf_ctl = 0;
> > >
> > > +     /* Give monitor time to be ready before SCDC configuration */
> > > +     if (crtc_state->hdmi_scrambling)
> > > +             msleep(100);
> > > +
> > >       if (!intel_hdmi_handle_sink_scrambling(encoder, connector,
> > >                                              
> > > crtc_state->hdmi_high_tmds_clock_ratio,
> > >                                              crtc_state->hdmi_scrambling))
> > > @@ -3502,6 +3506,10 @@ static void intel_ddi_enable_hdmi(struct 
> > > intel_atomic_state *state,
> > >       }
> > >
> > >       intel_ddi_buf_enable(encoder, buf_ctl);
> > > +
> > > +     /* Give monitor time to lock onto scrambled signal after DDI enable 
> > > */
> > > +     if (crtc_state->hdmi_scrambling)
> > > +             msleep(150);
> > >  }
> > >
> > >  static void intel_ddi_enable(struct intel_atomic_state *state,
> > > --
> > > 2.43.0
> >
> > --
> > Jani Nikula, Intel

Reply via email to