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 |
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"),
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"), >
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 --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"),