* [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).