This is the second version of a largely reshaped series that brings 5 new DDIC panel drivers (4 Samsung, 1 LGD) that are compatible with 14 Sony phones:
- LGD LG699QH3-EDB1 (1440x2880@60Hz, DSC): - Sony Xperia XZ3 - Samsung SOFEF01 (1080x2520@60Hz): - Sony Xperia 5 - Sony Xperia 10 II - Sony Xperia 10 III - Sony Xperia 10 IV (yet untested) - Sony Xperia 10 V (yet untested) - Sony Xperia 10 VI (yet untested) - Samsung SOFEF03 (1080x2520@120Hz, DSC): - Sony Xperia 5 II - Sony Xperia 5 III - Samsung SOUXP00 (1644x3840@60Hz, DSC): - Sony Xperia 1 - Sony Xperia 1 II - Samsung ANA6707 (1644x3840@120Hz, DSC, dual-DSI): - Sony Xperia 1 III - Sony Xperia 1 IV (yet untested) - Sony Xperia 1 V (yet untested) DTS changes will follow shortly to collectively enable the GPU, touchscreen and configure this panel driver for aforementioned (tested) devices. After that we can focus on the untested devices and ultimately all newer devices that are not even mentioned here. The ANA6707 driver depends on [1] (revert of quad-DSC over dual-DSI) to function correctly. A few limitations/issues with these drivers: - Panels/drivers featuring multiple modes Most of these drivers support multiple modes, for example to save bandwidth/energy by running on lower resolutions or framerates. These can be picked via mode selection by userspace, but are not yet forwarded to the drm_panel abstractions. Work is underway to bring those atomic modeset calls to drm_panel together with moving where drm_dsc_config lives, since its configuration depends on the resolution for example. For now the choice between either mode has been hardcoded behind a static const bool. - pclk The brunt of some older discussion was around getting these command mode panels functioning at their desired 60Hz or 120Hz refresh rate without tearing/artifacts, and without hacks. Part of that discussion around DSC-specific timing adjustments is happening in [2], but the SOFEF01 (non-DSC) Driver-IC is also struggling on the Xperia 5 specifically, as outlined in that specific patch. That is currently "addressed" with a "porch hack" but should probably have some sort of overhead / transfer time taken into account in the MSM DSI driver. Let me know what the best place is to collate all the relevant info (links to downstream panel DTS, outcomes with different patches and tweaks, etc). A new fd.o drm/msm issue? - Flickering on brightness changes Likely because of the missing "transfer overhead" calculations and/or proper sequencing in the DSI host driver, changing brightness results in corruption on all (Samsung) panels excluding the LGD panel for the XZ3. It is yet unknown why this is happening and likely requires more debugging outside of these panel drivers. [1]: https://lore.kernel.org/linux-arm-msm/20251219-drm-msm-dpu-revert-quad-pipe-broken-v1-0-654b46505...@oss.qualcomm.com/ [2]: https://gitlab.freedesktop.org/drm/msm/-/issues/24#note_1917707 Signed-off-by: Marijn Suijten <[email protected]> --- Changes in v2: - Names of all panels are now included; - All drivers are rewritten against the latest _multi() API with dsi_ctx struct; - DSC structures are no longer optional; - get_brightness is removed; - set_brightness no longer takes DSI out of LPM - specifically on the SOFEF01 brightness changes are ignored otherwise; - Regulators converted to regulator_bulk_data; - Panel driver for ANA6707 following up on my dual-DSI-dual-DSC work in MSM DPU is now included; - Possibly more that I've either forgotten or been too careless to diff properly with the *over 2.5 years old!* v1: - Link to v1: https://lore.kernel.org/r/[email protected] --- Marijn Suijten (11): drm/panel: Clean up SOFEF00 config dependencies dt-bindings: display: panel: Describe LGD LH599QH3-EDB1 panel drm/panel: Add LGD LH599QH3-EDB1 panel driver for Sony Xperia XZ3 dt-bindings: display: panel: Describe Samsung SOFEF01-M DDIC drm/panel: Add panel driver for Samsung SOFEF01 DDIC dt-bindings: display: panel: Describe Samsung SOFEF03-M DDIC drm/panel: Add panel driver for Samsung SOFEF03-M DDIC dt-bindings: display: panel: Describe Samsung SOUXP00-A DDIC drm/panel: Add panel driver for Samsung SOUXP00-A DDIC dt-bindings: display: panel: Describe Samsung ANA6707 DDIC drm/panel: Add panel driver for Samsung ANA6707 DDIC .../bindings/display/panel/lgd,lh599qh3-edb1.yaml | 76 ++++ .../bindings/display/panel/samsung,ana6707.yaml | 91 ++++ .../bindings/display/panel/samsung,sofef01-m.yaml | 120 ++++++ .../bindings/display/panel/samsung,sofef03-m.yaml | 79 ++++ .../bindings/display/panel/samsung,souxp00-a.yaml | 79 ++++ MAINTAINERS | 30 ++ drivers/gpu/drm/panel/Kconfig | 84 +++- drivers/gpu/drm/panel/Makefile | 5 + drivers/gpu/drm/panel/panel-lgd-lh599qh3-edb1.c | 340 +++++++++++++++ drivers/gpu/drm/panel/panel-samsung-ana6707.c | 461 ++++++++++++++++++++ drivers/gpu/drm/panel/panel-samsung-sofef01.c | 463 +++++++++++++++++++++ drivers/gpu/drm/panel/panel-samsung-sofef03.c | 373 +++++++++++++++++ drivers/gpu/drm/panel/panel-samsung-souxp00.c | 399 ++++++++++++++++++ 13 files changed, 2599 insertions(+), 1 deletion(-) --- base-commit: cc3aa43b44bdb43dfbac0fcb51c56594a11338a8 change-id: 20230521-drm-panels-sony-3c5ac3218427 Best regards, -- Marijn Suijten <[email protected]>
