[PATCH 00/22] drm/mediatek: Add mt8195 DisplayPort driver

Guillaume Ranquet
2022-03-27T22:41:13Z

this series is built around the DisplayPort driver. The dpi/dpintf
driver and the added helper functions are required for the DisplayPort
driver to work.

This v9 is not quite ready yet, as project constraints forces me to
publish v9 this week, I'm sorry if it's not standard practice.

Moreover, it is still un-tested on a recent kernel.
The integration kernel we are using is still based on 5.10... but we
are actively working on bringing up a mt8195 integration branch on 5.17.
The patches have been rebased on top of next-20220301 and have been
tested to build sucessfully (no functional testing).

Changes from v8:
- The DP-Phy now has its own dt-bindings and now shares a regmap using the
syscon facility with the DP driver.
- hot plug detection has been removed from the Embedded Display Port.
patch and moved to the patch adding External Display Port support.
- started working on better error handling for the mtk_dp driver.
- rebased on linux-next.
- removal of tvd pll clocks re-introduced by mistake.
- various coding style fixes.

Things that are in my todolist for v10:
- fixing the train_handler in the mtk_dp driver, as I haven't been able
to reproduce locally (hopefully migrating to running the tests on a
more recent kernel will help)
- explaining the various sleep/delays introduced in the drivers
- explaining some of the differences between mt8195 and "legacy"
- retrieve CK/DE support from panel driver instead of hardcoding it into
the dpi driver.
- better error handling/reporting in mtk_dp
- look into re-implementing mtk_dp_aux_transfer() using drm_dp_dpcd_read and
drm_dp_dpcd_write as suggested by Rex.

Older revisions:
RFC - https://lore.kernel.org/linux-mediatek/20210816192523.1739365-1-msp@baylibre.com/
v1 - https://lore.kernel.org/linux-mediatek/20210906193529.718845-1-msp@baylibre.com/
v2 - https://lore.kernel.org/linux-mediatek/20210920084424.231825-1-msp@baylibre.com/
v3 - https://lore.kernel.org/linux-mediatek/20211001094443.2770169-1-msp@baylibre.com/
v4 - https://lore.kernel.org/linux-mediatek/20211011094624.3416029-1-msp@baylibre.com/
v5 - https://lore.kernel.org/all/20211021092707.3562523-1-msp@baylibre.com/
v6 - https://lore.kernel.org/linux-mediatek/20211110130623.20553-1-granquet@baylibre.com/
v7 - https://lore.kernel.org/linux-mediatek/20211217150854.2081-1-granquet@baylibre.com/
v8 - https://lore.kernel.org/linux-mediatek/20220218145437.18563-1-granquet@baylibre.com/

Functional dependencies are:
- Add Mediatek Soc DRM (vdosys0) support for mt8195
https://lore.kernel.org/all/20211026155911.17651-1-jason-jh.lin@mediatek.com/
- Add MediaTek SoC DRM (vdosys1) support for mt8195
https://lore.kernel.org/all/20211029075203.17093-1-nancy.lin@mediatek.com/

Guillaume Ranquet (15):
dt-bindings: mediatek,dp_phy: Add Display Port PHY binding
drm/edid: Convert cea_sad helper struct to kernelDoc
drm/edid: Add cea_sad helpers for freq/length
drm/mediatek: dpi: move dpi limits to SoC config
drm/mediatek: dpi: implement a CK/DE pol toggle in SoC config
drm/mediatek: dpi: implement a swap_input toggle in SoC config
drm/mediatek: dpi: move dimension mask to SoC config
drm/mediatek: dpi: move hvsize_mask to SoC config
drm/mediatek: dpi: move swap_shift to SoC config
drm/mediatek: dpi: move the yuv422_en_bit to SoC config
drm/mediatek: dpi: move the csc_enable bit to SoC config
drm/mediatek: dpi: Add dpintf support
drm/meditek: dpi: Add matrix_sel helper
drm/mediatek: Add mt8195 External DisplayPort support
drm/mediatek: DP audio support for mt8195

Jitao Shi (2):
drm/mediatek: add hpd debounce
drm/mediatek: change the aux retries times when receiving AUX_DEFER

Markus Schneider-Pargmann (5):
dt-bindings: mediatek,dpi: Add DP_INTF compatible
dt-bindings: mediatek,dp: Add Display Port binding
video/hdmi: Add audio_infoframe packing for DP
phy: phy-mtk-dp: Add driver for DP phy
drm/mediatek: Add mt8195 Embedded DisplayPort driver

.../display/mediatek/mediatek,dp.yaml | 97 +
.../display/mediatek/mediatek,dpi.yaml | 11 +-
.../bindings/phy/mediatek,dp-phy.yaml | 43 +
MAINTAINERS | 1 +
drivers/gpu/drm/drm_edid.c | 74 +
drivers/gpu/drm/mediatek/Kconfig | 8 +
drivers/gpu/drm/mediatek/Makefile | 2 +
drivers/gpu/drm/mediatek/mtk_dp.c | 3204 +++++++++++++++++
drivers/gpu/drm/mediatek/mtk_dp_reg.h | 568 +++
drivers/gpu/drm/mediatek/mtk_dpi.c | 222 +-
drivers/gpu/drm/mediatek/mtk_dpi_regs.h | 38 +
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 8 +
drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.h | 1 +
drivers/gpu/drm/mediatek/mtk_drm_drv.c | 6 +-
drivers/gpu/drm/mediatek/mtk_drm_drv.h | 1 +
drivers/phy/mediatek/Kconfig | 8 +
drivers/phy/mediatek/Makefile | 1 +
drivers/phy/mediatek/phy-mtk-dp.c | 202 ++
drivers/video/hdmi.c | 82 +-
include/drm/dp/drm_dp_helper.h | 2 +
include/drm/drm_edid.h | 25 +-
include/linux/hdmi.h | 7 +-
include/linux/soc/mediatek/mtk-mmsys.h | 3 +-
23 files changed, 4541 insertions(+), 73 deletions(-)
create mode 100644 Documentation/devicetree/bindings/display/mediatek/mediatek,dp.yaml
create mode 100644 Documentation/devicetree/bindings/phy/mediatek,dp-phy.yaml
create mode 100644 drivers/gpu/drm/mediatek/mtk_dp.c
create mode 100644 drivers/gpu/drm/mediatek/mtk_dp_reg.h
create mode 100644 drivers/phy/mediatek/phy-mtk-dp.c

--
2.34.1