diff mbox series

drm: panel-orientation-quirks: Add quirk for Aya Neo Next

Message ID 20220611103911.9417-1-maccraft123mc@gmail.com (mailing list archive)
State New, archived
Headers show
Series drm: panel-orientation-quirks: Add quirk for Aya Neo Next | expand

Commit Message

Maya Matuszczyk June 11, 2022, 10:39 a.m. UTC
From: Maya Matuszczyk <maccraft123mc@gmail.com>

The device is identified by "NEXT" in board name, however there are
different versions of it, "Next Advance" and "Next Pro", that have
different DMI board names.
Due to a production error a batch or two have their board names prefixed
by "AYANEO" and that's how we ended up with 6 different entries for
what's basically one device with different hardware specifications.

Signed-off-by: Maya Matuszczyk <maccraft123mc@gmail.com>
---
 .../gpu/drm/drm_panel_orientation_quirks.c    | 36 +++++++++++++++++++
 1 file changed, 36 insertions(+)

Comments

Hans de Goede June 18, 2022, 8:57 p.m. UTC | #1
Hi Maya,

On 6/11/22 12:39, Maccraft123 wrote:
> From: Maya Matuszczyk <maccraft123mc@gmail.com>
> 
> The device is identified by "NEXT" in board name, however there are
> different versions of it, "Next Advance" and "Next Pro", that have
> different DMI board names.
> Due to a production error a batch or two have their board names prefixed
> by "AYANEO" and that's how we ended up with 6 different entries for
> what's basically one device with different hardware specifications.
> 
> Signed-off-by: Maya Matuszczyk <maccraft123mc@gmail.com>
> ---
>  .../gpu/drm/drm_panel_orientation_quirks.c    | 36 +++++++++++++++++++
>  1 file changed, 36 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_panel_orientation_quirks.c b/drivers/gpu/drm/drm_panel_orientation_quirks.c
> index 4e853acfd1e8..62fc7eb69341 100644
> --- a/drivers/gpu/drm/drm_panel_orientation_quirks.c
> +++ b/drivers/gpu/drm/drm_panel_orientation_quirks.c
> @@ -152,6 +152,42 @@ static const struct dmi_system_id orientation_data[] = {
>  		  DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "AYA NEO 2021"),
>  		},
>  		.driver_data = (void *)&lcd800x1280_rightside_up,
> +	}, {	/* AYA NEO NEXT */
> +		.matches = {
> +		  DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
> +		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT"),
> +		},
> +		.driver_data = (void *)&lcd800x1280_rightside_up,
> +	},

If you change:

		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT"),

to:

		  DMI_MATCH(DMI_BOARD_NAME, "NEXT"),

Then the matching code will do a substring search for "NEXT"
in DMI_BOARD_NAME. IOW it will do a strstr using DMI_BOARD_NAME
as the haystack and "NEXT" as the needle.

And since all 6 board-names contain "NEXT", this single entry
will then match all 6 variants.

So please respin this patch using just a single entry with:

		  DMI_MATCH(DMI_BOARD_NAME, "NEXT"),

Thanks & Regards,

Hans



 {	/* AYA NEO NEXT Advance */
> +		.matches = {
> +		  DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
> +		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT Advance"),
> +		},
> +		.driver_data = (void *)&lcd800x1280_rightside_up,
> +	}, {	/* AYA NEO NEXT Pro */
> +		.matches = {
> +		  DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
> +		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT Pro"),
> +		},
> +		.driver_data = (void *)&lcd800x1280_rightside_up,
> +	}, {	/* AYA NEO NEXT (Batch with different board name) */
> +		.matches = {
> +		  DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
> +		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO NEXT"),
> +		},
> +		.driver_data = (void *)&lcd800x1280_rightside_up,
> +	}, {	/* AYA NEO NEXT Advance (Batch with different board name) */
> +		.matches = {
> +		  DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
> +		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO NEXT Advance"),
> +		},
> +		.driver_data = (void *)&lcd800x1280_rightside_up,
> +	}, {	/* AYA NEO NEXT Pro (Batch with different board name) */
> +		.matches = {
> +		  DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
> +		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO NEXT Pro"),
> +		},
> +		.driver_data = (void *)&lcd800x1280_rightside_up,
>  	}, {	/* Chuwi HiBook (CWI514) */
>  		.matches = {
>  			DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
Maya Matuszczyk June 18, 2022, 9:08 p.m. UTC | #2
sob., 18 cze 2022 o 22:57 Hans de Goede <hdegoede@redhat.com> napisał(a):
>
> Hi Maya,
>
> On 6/11/22 12:39, Maccraft123 wrote:
> > From: Maya Matuszczyk <maccraft123mc@gmail.com>
> >
> > The device is identified by "NEXT" in board name, however there are
> > different versions of it, "Next Advance" and "Next Pro", that have
> > different DMI board names.
> > Due to a production error a batch or two have their board names prefixed
> > by "AYANEO" and that's how we ended up with 6 different entries for
> > what's basically one device with different hardware specifications.
> >
> > Signed-off-by: Maya Matuszczyk <maccraft123mc@gmail.com>
> > ---
> >  .../gpu/drm/drm_panel_orientation_quirks.c    | 36 +++++++++++++++++++
> >  1 file changed, 36 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/drm_panel_orientation_quirks.c b/drivers/gpu/drm/drm_panel_orientation_quirks.c
> > index 4e853acfd1e8..62fc7eb69341 100644
> > --- a/drivers/gpu/drm/drm_panel_orientation_quirks.c
> > +++ b/drivers/gpu/drm/drm_panel_orientation_quirks.c
> > @@ -152,6 +152,42 @@ static const struct dmi_system_id orientation_data[] = {
> >                 DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "AYA NEO 2021"),
> >               },
> >               .driver_data = (void *)&lcd800x1280_rightside_up,
> > +     }, {    /* AYA NEO NEXT */
> > +             .matches = {
> > +               DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
> > +               DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT"),
> > +             },
> > +             .driver_data = (void *)&lcd800x1280_rightside_up,
> > +     },
>
> If you change:
>
>                   DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT"),
>
> to:
>
>                   DMI_MATCH(DMI_BOARD_NAME, "NEXT"),
>
> Then the matching code will do a substring search for "NEXT"
> in DMI_BOARD_NAME. IOW it will do a strstr using DMI_BOARD_NAME
> as the haystack and "NEXT" as the needle.
>
> And since all 6 board-names contain "NEXT", this single entry
> will then match all 6 variants.
>
> So please respin this patch using just a single entry with:
>
>                   DMI_MATCH(DMI_BOARD_NAME, "NEXT"),
>
I considered this and decided against it because if "Aya Neo Next 2" was
released it would likely have "NEXT 2" as DMI board name, and if it had
screen rotated differently this patch would rotate it in a wrong way.


> Thanks & Regards,
>
> Hans
>
>
>
>  {      /* AYA NEO NEXT Advance */
> > +             .matches = {
> > +               DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
> > +               DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT Advance"),
> > +             },
> > +             .driver_data = (void *)&lcd800x1280_rightside_up,
> > +     }, {    /* AYA NEO NEXT Pro */
> > +             .matches = {
> > +               DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
> > +               DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT Pro"),
> > +             },
> > +             .driver_data = (void *)&lcd800x1280_rightside_up,
> > +     }, {    /* AYA NEO NEXT (Batch with different board name) */
> > +             .matches = {
> > +               DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
> > +               DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO NEXT"),
> > +             },
> > +             .driver_data = (void *)&lcd800x1280_rightside_up,
> > +     }, {    /* AYA NEO NEXT Advance (Batch with different board name) */
> > +             .matches = {
> > +               DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
> > +               DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO NEXT Advance"),
> > +             },
> > +             .driver_data = (void *)&lcd800x1280_rightside_up,
> > +     }, {    /* AYA NEO NEXT Pro (Batch with different board name) */
> > +             .matches = {
> > +               DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
> > +               DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO NEXT Pro"),
> > +             },
> > +             .driver_data = (void *)&lcd800x1280_rightside_up,
> >       }, {    /* Chuwi HiBook (CWI514) */
> >               .matches = {
> >                       DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
>
Hans de Goede June 18, 2022, 9:36 p.m. UTC | #3
Hi,

On 6/18/22 23:08, Maya Matuszczyk wrote:
> sob., 18 cze 2022 o 22:57 Hans de Goede <hdegoede@redhat.com> napisał(a):
>>
>> Hi Maya,
>>
>> On 6/11/22 12:39, Maccraft123 wrote:
>>> From: Maya Matuszczyk <maccraft123mc@gmail.com>
>>>
>>> The device is identified by "NEXT" in board name, however there are
>>> different versions of it, "Next Advance" and "Next Pro", that have
>>> different DMI board names.
>>> Due to a production error a batch or two have their board names prefixed
>>> by "AYANEO" and that's how we ended up with 6 different entries for
>>> what's basically one device with different hardware specifications.
>>>
>>> Signed-off-by: Maya Matuszczyk <maccraft123mc@gmail.com>
>>> ---
>>>  .../gpu/drm/drm_panel_orientation_quirks.c    | 36 +++++++++++++++++++
>>>  1 file changed, 36 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/drm_panel_orientation_quirks.c b/drivers/gpu/drm/drm_panel_orientation_quirks.c
>>> index 4e853acfd1e8..62fc7eb69341 100644
>>> --- a/drivers/gpu/drm/drm_panel_orientation_quirks.c
>>> +++ b/drivers/gpu/drm/drm_panel_orientation_quirks.c
>>> @@ -152,6 +152,42 @@ static const struct dmi_system_id orientation_data[] = {
>>>                 DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "AYA NEO 2021"),
>>>               },
>>>               .driver_data = (void *)&lcd800x1280_rightside_up,
>>> +     }, {    /* AYA NEO NEXT */
>>> +             .matches = {
>>> +               DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
>>> +               DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT"),
>>> +             },
>>> +             .driver_data = (void *)&lcd800x1280_rightside_up,
>>> +     },
>>
>> If you change:
>>
>>                   DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT"),
>>
>> to:
>>
>>                   DMI_MATCH(DMI_BOARD_NAME, "NEXT"),
>>
>> Then the matching code will do a substring search for "NEXT"
>> in DMI_BOARD_NAME. IOW it will do a strstr using DMI_BOARD_NAME
>> as the haystack and "NEXT" as the needle.
>>
>> And since all 6 board-names contain "NEXT", this single entry
>> will then match all 6 variants.
>>
>> So please respin this patch using just a single entry with:
>>
>>                   DMI_MATCH(DMI_BOARD_NAME, "NEXT"),
>>
> I considered this and decided against it because if "Aya Neo Next 2" was
> released it would likely have "NEXT 2" as DMI board name, and if it had
> screen rotated differently this patch would rotate it in a wrong way.

Hmm, I understand but I'm not sure what is the best thing to do.

There also is the resolution check. So if a new "NEXT 2" is released
then this really only is an issue if it too uses a 800x1280 screen,
but then with its left-side-up.

If it uses a normal landscape 1280x800 screen the resolution won't
match the 800x1280 the quirk checks for so nothing happens.

If it again uses a 800x1280 portrait screen in landscape mode
with its right-side-up then the quirk matching actualy is
a good thing.

So the only bad scenario is a 800x1280 screen which is left-side-up,
which the quirk will then turn from being on its side to being
upside-down. The question then is though if upside-down is much
worse then on its side, neither is really usable, so we would
need a quirk for this screen then anyways...

So I understand where you are coming from, but I see the chances
of this becoming a problem as pretty small (and we can fix it
when it does happen). OTOH the dmi_system_id table we are
discussing is almost always built into the vmlinuz image.
So growing it will cause extra disk/RAM uses for every Linux
user out there (not just Aya Neo Next users).

So IMHO going with only using 1 entry with the small risc of
needing to revisit this later is the better solution here.

Regards,

Hans



> 
> 
>> Thanks & Regards,
>>
>> Hans
>>
>>
>>
>>  {      /* AYA NEO NEXT Advance */
>>> +             .matches = {
>>> +               DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
>>> +               DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT Advance"),
>>> +             },
>>> +             .driver_data = (void *)&lcd800x1280_rightside_up,
>>> +     }, {    /* AYA NEO NEXT Pro */
>>> +             .matches = {
>>> +               DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
>>> +               DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT Pro"),
>>> +             },
>>> +             .driver_data = (void *)&lcd800x1280_rightside_up,
>>> +     }, {    /* AYA NEO NEXT (Batch with different board name) */
>>> +             .matches = {
>>> +               DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
>>> +               DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO NEXT"),
>>> +             },
>>> +             .driver_data = (void *)&lcd800x1280_rightside_up,
>>> +     }, {    /* AYA NEO NEXT Advance (Batch with different board name) */
>>> +             .matches = {
>>> +               DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
>>> +               DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO NEXT Advance"),
>>> +             },
>>> +             .driver_data = (void *)&lcd800x1280_rightside_up,
>>> +     }, {    /* AYA NEO NEXT Pro (Batch with different board name) */
>>> +             .matches = {
>>> +               DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
>>> +               DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO NEXT Pro"),
>>> +             },
>>> +             .driver_data = (void *)&lcd800x1280_rightside_up,
>>>       }, {    /* Chuwi HiBook (CWI514) */
>>>               .matches = {
>>>                       DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
>>
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/drm_panel_orientation_quirks.c b/drivers/gpu/drm/drm_panel_orientation_quirks.c
index 4e853acfd1e8..62fc7eb69341 100644
--- a/drivers/gpu/drm/drm_panel_orientation_quirks.c
+++ b/drivers/gpu/drm/drm_panel_orientation_quirks.c
@@ -152,6 +152,42 @@  static const struct dmi_system_id orientation_data[] = {
 		  DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "AYA NEO 2021"),
 		},
 		.driver_data = (void *)&lcd800x1280_rightside_up,
+	}, {	/* AYA NEO NEXT */
+		.matches = {
+		  DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
+		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT"),
+		},
+		.driver_data = (void *)&lcd800x1280_rightside_up,
+	}, {	/* AYA NEO NEXT Advance */
+		.matches = {
+		  DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
+		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT Advance"),
+		},
+		.driver_data = (void *)&lcd800x1280_rightside_up,
+	}, {	/* AYA NEO NEXT Pro */
+		.matches = {
+		  DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
+		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "NEXT Pro"),
+		},
+		.driver_data = (void *)&lcd800x1280_rightside_up,
+	}, {	/* AYA NEO NEXT (Batch with different board name) */
+		.matches = {
+		  DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
+		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO NEXT"),
+		},
+		.driver_data = (void *)&lcd800x1280_rightside_up,
+	}, {	/* AYA NEO NEXT Advance (Batch with different board name) */
+		.matches = {
+		  DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
+		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO NEXT Advance"),
+		},
+		.driver_data = (void *)&lcd800x1280_rightside_up,
+	}, {	/* AYA NEO NEXT Pro (Batch with different board name) */
+		.matches = {
+		  DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
+		  DMI_EXACT_MATCH(DMI_BOARD_NAME, "AYANEO NEXT Pro"),
+		},
+		.driver_data = (void *)&lcd800x1280_rightside_up,
 	}, {	/* Chuwi HiBook (CWI514) */
 		.matches = {
 			DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),