The kernel mis-interprets the display geometry given by the Lenovo D330 as incorrect. The values are correct, but the display output is rotated by 90°. With the kernel's firmware quirk applied, the output is garbled.
Remove the firmware quirk for the Lenovo D330 and let DRM's sysfb drivers set the correct panel orientation instead. To make this work for any display mode, use the panel size for looking up the correct orientation. Tested on a Lenovo D330-10IGM IdeaPad. v3: - rename EDID helper to drm_edid_detect_panel_size() - clean up EDID code (Jani) - mention possible dependency on device firmware version v2: - reorder patches to have the immediate fix first - detect and handle broken EDID better (Sashiko) - fix width/height pointer check (Sashiko) Thomas Zimmermann (3): firmware/sysfb: Remove rotation quirk for Lenovo D330 drm/edid: Add drm_edid_detect_panel_size() drm/sysfb: Use preferred panel size for panel orientation quirks drivers/firmware/efi/sysfb_efi.c | 9 ------ drivers/gpu/drm/drm_edid.c | 47 ++++++++++++++++++++++++++++++++ drivers/gpu/drm/sysfb/efidrm.c | 17 +++++++++++- drivers/gpu/drm/sysfb/ofdrm.c | 18 ++++++++++-- drivers/gpu/drm/sysfb/vesadrm.c | 17 +++++++++++- include/drm/drm_edid.h | 2 ++ 6 files changed, 97 insertions(+), 13 deletions(-) base-commit: aa389a514292b196ae89c6515568b3329abeec63 -- 2.55.0
