* [PATCH resend] drm/i915/bios: Apply vlv_fixup_mipi_sequences() to v2 mipi-sequences too @ 2025-07-03 14:38 Hans de Goede 2025-07-04 9:26 ` Jani Nikula 2025-07-04 10:31 ` Ville Syrjälä 0 siblings, 2 replies; 6+ messages in thread From: Hans de Goede @ 2025-07-03 14:38 UTC (permalink / raw) To: Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, Ville Syrjälä Cc: Hans de Goede, intel-gfx, dri-devel, Hans de Goede From: Hans de Goede <hdegoede@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. Signed-off-by: Hans de Goede <hdegoede@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 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH resend] drm/i915/bios: Apply vlv_fixup_mipi_sequences() to v2 mipi-sequences too 2025-07-03 14:38 [PATCH resend] drm/i915/bios: Apply vlv_fixup_mipi_sequences() to v2 mipi-sequences too Hans de Goede @ 2025-07-04 9:26 ` Jani Nikula 2025-07-04 10:31 ` Ville Syrjälä 1 sibling, 0 replies; 6+ messages in thread From: Jani Nikula @ 2025-07-04 9:26 UTC (permalink / raw) To: Hans de Goede, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, Ville Syrjälä Cc: Hans de Goede, intel-gfx, dri-devel, Hans de Goede On Thu, 03 Jul 2025, Hans de Goede <hansg@kernel.org> wrote: > From: Hans de Goede <hdegoede@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. I believe you have the most extensive collection of VLV/CHV DSI machines, and I basically take your word for what works and what doesn't. Acked-by: Jani Nikula <jani.nikula@intel.com> > Signed-off-by: Hans de Goede <hdegoede@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 */ -- Jani Nikula, Intel ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH resend] drm/i915/bios: Apply vlv_fixup_mipi_sequences() to v2 mipi-sequences too 2025-07-03 14:38 [PATCH resend] drm/i915/bios: Apply vlv_fixup_mipi_sequences() to v2 mipi-sequences too Hans de Goede 2025-07-04 9:26 ` Jani Nikula @ 2025-07-04 10:31 ` Ville Syrjälä 2025-07-07 21:10 ` Hans de Goede 1 sibling, 1 reply; 6+ messages in thread From: Ville Syrjälä @ 2025-07-04 10:31 UTC (permalink / raw) To: Hans de Goede Cc: Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, intel-gfx, dri-devel, Hans de Goede On Thu, Jul 03, 2025 at 04:38:24PM +0200, Hans de Goede wrote: > From: Hans de Goede <hdegoede@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. > > Signed-off-by: Hans de Goede <hdegoede@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 -- Ville Syrjälä Intel ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH resend] drm/i915/bios: Apply vlv_fixup_mipi_sequences() to v2 mipi-sequences too 2025-07-04 10:31 ` Ville Syrjälä @ 2025-07-07 21:10 ` Hans de Goede 2025-07-10 15:34 ` Rodrigo Vivi 0 siblings, 1 reply; 6+ messages in thread From: Hans de Goede @ 2025-07-07 21:10 UTC (permalink / raw) To: Ville Syrjälä Cc: Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, intel-gfx, dri-devel, Hans de Goede 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@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. Regards, Hans > >> >> Signed-off-by: Hans de Goede <hdegoede@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 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH resend] drm/i915/bios: Apply vlv_fixup_mipi_sequences() to v2 mipi-sequences too 2025-07-07 21:10 ` Hans de Goede @ 2025-07-10 15:34 ` Rodrigo Vivi 2025-07-10 15:47 ` Hans de Goede 0 siblings, 1 reply; 6+ messages in thread From: Rodrigo Vivi @ 2025-07-10 15:34 UTC (permalink / raw) To: Hans de Goede Cc: Ville Syrjälä, Jani Nikula, Joonas Lahtinen, Tvrtko Ursulin, intel-gfx, dri-devel, Hans de Goede 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@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@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 > > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH resend] drm/i915/bios: Apply vlv_fixup_mipi_sequences() to v2 mipi-sequences too 2025-07-10 15:34 ` Rodrigo Vivi @ 2025-07-10 15:47 ` Hans de Goede 0 siblings, 0 replies; 6+ messages in thread From: Hans de Goede @ 2025-07-10 15:47 UTC (permalink / raw) To: Rodrigo Vivi Cc: Ville Syrjälä, Jani Nikula, Joonas Lahtinen, Tvrtko Ursulin, intel-gfx, dri-devel, Hans de Goede Hi Rodrigo, On 10-Jul-25 5:34 PM, Rodrigo Vivi wrote: > 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@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. Ok, I'll try to remember that for next time. > I have just moved it around with a force-push, pushed to drm-intel-next and > cherry-picked back. Thank you for fixing things up. Regards, Hans >>>> Signed-off-by: Hans de Goede <hdegoede@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 >>> >> ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-07-10 15:47 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-07-03 14:38 [PATCH resend] drm/i915/bios: Apply vlv_fixup_mipi_sequences() to v2 mipi-sequences too Hans de Goede 2025-07-04 9:26 ` Jani Nikula 2025-07-04 10:31 ` Ville Syrjälä 2025-07-07 21:10 ` Hans de Goede 2025-07-10 15:34 ` Rodrigo Vivi 2025-07-10 15:47 ` Hans de Goede
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).