From: Icenowy Zheng <[email protected]> This patchset tries to add a driver for Verisilicon DC8200 driver, and demonstrates the driver on T-Head TH1520 with its HDMI output.
This display controller IP is used on StarFive JH7110 too, but as the HDMI controller used there isn't as common as the DesignWare one, I choose to use TH1520 in this patchset. The DC driver is written with other DC-series (mainly DC8000, which is known to be used on Eswin EIC7700 SoC) display controllers in mind, and uses the identification registers available on all Vivante branded IPs. A known exception is DCNano display controller, which is unlikely to be supported by this driver because of totally different register map and no known identification registers. (P.S. the in-tree loongson DRM driver seems to be for some DCNano instances based on the register map.) The HDMI controller seems to come with some common PHY by Synopsys, the DesignWare HDMI TX 2.0 PHY. By searching a few register names from the BSP driver of that PHY, that PHY seems to be used by a in-tree dw-hdmi glue, rcar_dw_hdmi -- an updated downstream version of rcar_dw_hdmi contains all 6 registers set here in the th1520-dw-hdmi driver. Some more suprising thing is that RK3288 uses the same PHY too, but the in-tree dw_hdmi-rockchip driver writes the configuration data array in a weird way to reuse the HDMI 3D TX PHY configuring function. It might be valuable to add common configuring function and configuration data definition for this HDMI 2.0 PHY too, but the current driver in this patchset simply duplicated most configuration logic from rcar_dw_hdmi driver (but with 3 extra configuration registers configured). Resent for switching the sending email to ISCAS one -- the password keeping problem is solved thanks to git-credential-libsecret . Icenowy Zheng (9): dt-bindings: vendor-prefixes: add verisilicon dt-bindings: display: add verisilicon,dc drm: verisilicon: add a driver for Verisilicon display controllers dt-bindings: display/bridge: add binding for TH1520 HDMI controller drm/bridge: add a driver for T-Head TH1520 HDMI controller riscv: dts: thead: add DPU and HDMI device tree nodes riscv: dts: thead: lichee-pi-4a: enable HDMI MAINTAINERS: assign myself as maintainer for verisilicon DC driver mailmap: map all Icenowy Zheng's mail addresses .mailmap | 4 + .../display/bridge/thead,th1520-dw-hdmi.yaml | 120 +++++++ .../bindings/display/verisilicon,dc.yaml | 146 ++++++++ .../devicetree/bindings/vendor-prefixes.yaml | 2 + MAINTAINERS | 8 + .../boot/dts/thead/th1520-lichee-pi-4a.dts | 25 ++ arch/riscv/boot/dts/thead/th1520.dtsi | 70 ++++ drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/bridge/Kconfig | 10 + drivers/gpu/drm/bridge/Makefile | 1 + drivers/gpu/drm/bridge/th1520-dw-hdmi.c | 173 +++++++++ drivers/gpu/drm/verisilicon/Kconfig | 15 + drivers/gpu/drm/verisilicon/Makefile | 5 + drivers/gpu/drm/verisilicon/vs_bridge.c | 330 ++++++++++++++++++ drivers/gpu/drm/verisilicon/vs_bridge.h | 40 +++ drivers/gpu/drm/verisilicon/vs_bridge_regs.h | 54 +++ drivers/gpu/drm/verisilicon/vs_crtc.c | 217 ++++++++++++ drivers/gpu/drm/verisilicon/vs_crtc.h | 29 ++ drivers/gpu/drm/verisilicon/vs_crtc_regs.h | 60 ++++ drivers/gpu/drm/verisilicon/vs_dc.c | 205 +++++++++++ drivers/gpu/drm/verisilicon/vs_dc.h | 39 +++ drivers/gpu/drm/verisilicon/vs_dc_top_regs.h | 27 ++ drivers/gpu/drm/verisilicon/vs_drm.c | 177 ++++++++++ drivers/gpu/drm/verisilicon/vs_drm.h | 29 ++ drivers/gpu/drm/verisilicon/vs_hwdb.c | 150 ++++++++ drivers/gpu/drm/verisilicon/vs_hwdb.h | 29 ++ drivers/gpu/drm/verisilicon/vs_plane.c | 102 ++++++ drivers/gpu/drm/verisilicon/vs_plane.h | 68 ++++ .../gpu/drm/verisilicon/vs_primary_plane.c | 157 +++++++++ .../drm/verisilicon/vs_primary_plane_regs.h | 53 +++ 31 files changed, 2348 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/bridge/thead,th1520-dw-hdmi.yaml create mode 100644 Documentation/devicetree/bindings/display/verisilicon,dc.yaml create mode 100644 drivers/gpu/drm/bridge/th1520-dw-hdmi.c create mode 100644 drivers/gpu/drm/verisilicon/Kconfig create mode 100644 drivers/gpu/drm/verisilicon/Makefile create mode 100644 drivers/gpu/drm/verisilicon/vs_bridge.c create mode 100644 drivers/gpu/drm/verisilicon/vs_bridge.h create mode 100644 drivers/gpu/drm/verisilicon/vs_bridge_regs.h create mode 100644 drivers/gpu/drm/verisilicon/vs_crtc.c create mode 100644 drivers/gpu/drm/verisilicon/vs_crtc.h create mode 100644 drivers/gpu/drm/verisilicon/vs_crtc_regs.h create mode 100644 drivers/gpu/drm/verisilicon/vs_dc.c create mode 100644 drivers/gpu/drm/verisilicon/vs_dc.h create mode 100644 drivers/gpu/drm/verisilicon/vs_dc_top_regs.h create mode 100644 drivers/gpu/drm/verisilicon/vs_drm.c create mode 100644 drivers/gpu/drm/verisilicon/vs_drm.h create mode 100644 drivers/gpu/drm/verisilicon/vs_hwdb.c create mode 100644 drivers/gpu/drm/verisilicon/vs_hwdb.h create mode 100644 drivers/gpu/drm/verisilicon/vs_plane.c create mode 100644 drivers/gpu/drm/verisilicon/vs_plane.h create mode 100644 drivers/gpu/drm/verisilicon/vs_primary_plane.c create mode 100644 drivers/gpu/drm/verisilicon/vs_primary_plane_regs.h -- 2.52.0
