[PATCH resend] drm/i915/bios: Apply vlv_fixup_mipi_sequences() to v2 mipi-sequences too

Rodrigo Vivi rodrigo.vivi at intel.com
Thu Jul 10 15:34:45 UTC 2025


On Mon, Jul 07, 2025 at 11:10:59PM +0200, Hans de Goede wrote:
> Hi Ville,
> 
> On 4-Jul-25 12:31 PM, Ville Syrjälä wrote:
> > On Thu, Jul 03, 2025 at 04:38:24PM +0200, Hans de Goede wrote:
> >> From: Hans de Goede <hdegoede at redhat.com>
> >>
> >> It turns out that the fixup from vlv_fixup_mipi_sequences() is necessary
> >> for some DSI panel's with version 2 mipi-sequences too.
> >>
> >> Specifically the Acer Iconia One 8 A1-840 (not to be confused with the
> >> A1-840FHD which is different) has the following sequences:
> >>
> >> BDB block 53 (1284 bytes) - MIPI sequence block:
> >> 	Sequence block version v2
> >> 	Panel 0 *
> >>
> >> Sequence 2 - MIPI_SEQ_INIT_OTP
> >> 	GPIO index 9, source 0, set 0 (0x00)
> >> 	Delay: 50000 us
> >> 	GPIO index 9, source 0, set 1 (0x01)
> >> 	Delay: 6000 us
> >> 	GPIO index 9, source 0, set 0 (0x00)
> >> 	Delay: 6000 us
> >> 	GPIO index 9, source 0, set 1 (0x01)
> >> 	Delay: 25000 us
> >> 	Send DCS: Port A, VC 0, LP, Type 39, Length 5, Data ff aa 55 a5 80
> >> 	Send DCS: Port A, VC 0, LP, Type 39, Length 3, Data 6f 11 00
> >> 	...
> >> 	Send DCS: Port A, VC 0, LP, Type 05, Length 1, Data 29
> >> 	Delay: 120000 us
> >>
> >> Sequence 4 - MIPI_SEQ_DISPLAY_OFF
> >> 	Send DCS: Port A, VC 0, LP, Type 05, Length 1, Data 28
> >> 	Delay: 105000 us
> >> 	Send DCS: Port A, VC 0, LP, Type 05, Length 2, Data 10 00
> >> 	Delay: 10000 us
> >>
> >> Sequence 5 - MIPI_SEQ_ASSERT_RESET
> >> 	Delay: 10000 us
> >> 	GPIO index 9, source 0, set 0 (0x00)
> >>
> >> Notice how there is no MIPI_SEQ_DEASSERT_RESET, instead the deassert
> >> is done at the beginning of MIPI_SEQ_INIT_OTP, which is exactly what
> >> the fixup from vlv_fixup_mipi_sequences() fixes up.
> >>
> >> Extend it to also apply to v2 sequences, this fixes the panel not working
> >> on the Acer Iconia One 8 A1-840.
> > 
> > Do we have the full VBT for this machine already in some bug? If not,
> > please file a new issue with the VBT attached for posterity.
> 
> I've filed: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14605
> with the VBT attached and I'll add a Closes: tag pointing to that
> to the patch while applying it to drm-intel-fixes.

Hi Hans,

Thank you so much for all the work here.

Just one thing here is that in drm-intel and drm-xe branches,
differently from drm-misc ones, we push to the -next variants, and
then the maintainers run cherry-pick rounds to propagate to the -fixes ones.

I have just moved it around with a force-push, pushed to drm-intel-next and
cherry-picked back.

Thank you,
Rodrigo.

> 
> Regards,
> 
> Hans
> 
> 
> 
> > 
> >>
> >> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> >> ---
> >>  drivers/gpu/drm/i915/display/intel_bios.c | 8 ++++----
> >>  1 file changed, 4 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> >> index ba7b8938b17c..166ee11831ab 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> >> @@ -1938,7 +1938,7 @@ static int get_init_otp_deassert_fragment_len(struct intel_display *display,
> >>  	int index, len;
> >>  
> >>  	if (drm_WARN_ON(display->drm,
> >> -			!data || panel->vbt.dsi.seq_version != 1))
> >> +			!data || panel->vbt.dsi.seq_version >= 3))
> >>  		return 0;
> >>  
> >>  	/* index = 1 to skip sequence byte */
> >> @@ -1961,7 +1961,7 @@ static int get_init_otp_deassert_fragment_len(struct intel_display *display,
> >>  }
> >>  
> >>  /*
> >> - * Some v1 VBT MIPI sequences do the deassert in the init OTP sequence.
> >> + * Some v1/v2 VBT MIPI sequences do the deassert in the init OTP sequence.
> >>   * The deassert must be done before calling intel_dsi_device_ready, so for
> >>   * these devices we split the init OTP sequence into a deassert sequence and
> >>   * the actual init OTP part.
> >> @@ -1972,9 +1972,9 @@ static void vlv_fixup_mipi_sequences(struct intel_display *display,
> >>  	u8 *init_otp;
> >>  	int len;
> >>  
> >> -	/* Limit this to v1 vid-mode sequences */
> >> +	/* Limit this to v1/v2 vid-mode sequences */
> >>  	if (panel->vbt.dsi.config->is_cmd_mode ||
> >> -	    panel->vbt.dsi.seq_version != 1)
> >> +	    panel->vbt.dsi.seq_version >= 3)
> >>  		return;
> >>  
> >>  	/* Only do this if there are otp and assert seqs and no deassert seq */
> >> -- 
> >> 2.49.0
> > 
> 


More information about the Intel-gfx mailing list