This is the second round of the vop2 series. There are still some issues open, but I thought it's about time to let people see and test it. I integrated the review feedback I got from v1. Other changes include: All framesync waiting is gone from the driver which makes it more straight forward. To accomplish this the port_mux setup is now static in the driver. This means each video port has a fixed maximum number of planes which is less flexible but much easier to handle. I also removed much of the register mapping and shadow register handling around struct vop_reg. This basically resembles regmap and can eventually replaced by regmap. Some places are still left in the driver, I plan to remove those in later versions. I think I have found the issue why only 1080p resolutions work, this seems to be an issue in the way the clock tree is arranged. See the last patch in this series which points to the problem, so far I don't have a good solution for it. As usual, all comments and feedback welcome. Sascha Changes since v1: - drop all unnecessary waiting for frames within atomic modeset and plane update - Cluster subwin support removed - gamma support removed - unnecessary irq_lock removed - interrupt handling simplified - simplified zpos handling - drop is_alpha_support(), use fb->format->has_alpha instead - use devm_regulator_get() rather than devm_regulator_get_optional() for hdmi regulators - Use fixed number of planes per video port - Drop homegrown regmap code from vop2 driver (not complete yet) - Add separate include file for vop2 driver to not pollute the vop include Andy Yan (1): drm: rockchip: Add VOP2 driver Benjamin Gaignard (1): dt-bindings: display: rockchip: dw-hdmi: Add compatible for rk3568 HDMI Michael Riesch (1): arm64: dts: rockchip: enable vop2 and hdmi tx on quartz64a Sascha Hauer (15): drm/rockchip: dw_hdmi: Do not leave clock enabled in error case drm/rockchip: dw_hdmi: rename vpll clock to reference clock drm/rockchip: dw_hdmi: add rk3568 support drm/rockchip: dw_hdmi: add regulator support dt-bindings: display: rockchip: dw-hdmi: Make unwedge pinctrl optional dt-bindings: display: rockchip: dw-hdmi: Allow "ref" as clock name dt-bindings: display: rockchip: dw-hdmi: Add regulator support arm64: dts: rockchip: rk3399: reorder hmdi clocks dt-bindings: display: rockchip: Add binding for VOP2 arm64: dts: rockchip: rk356x: Add VOP2 nodes arm64: dts: rockchip: rk356x: Add HDMI nodes arm64: dts: rockchip: rk3568-evb: Enable VOP2 and hdmi drm/encoder: Add of_graph port to struct drm_encoder drm/rockchip: Make VOP driver optional [HACK, RFC] clk: rk3568: do not divide dclk_vop0 .../display/rockchip/rockchip,dw-hdmi.yaml | 14 +- .../display/rockchip/rockchip-vop2.yaml | 118 + arch/arm64/boot/dts/rockchip/rk3399.dtsi | 6 +- .../boot/dts/rockchip/rk3566-quartz64-a.dts | 31 + arch/arm64/boot/dts/rockchip/rk3566.dtsi | 4 + .../boot/dts/rockchip/rk3568-evb1-v10.dts | 31 + arch/arm64/boot/dts/rockchip/rk3568.dtsi | 4 + arch/arm64/boot/dts/rockchip/rk356x.dtsi | 75 + drivers/clk/rockchip/clk-rk3568.c | 4 +- drivers/gpu/drm/rockchip/Kconfig | 14 + drivers/gpu/drm/rockchip/Makefile | 4 +- drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 107 +- drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 3 +- drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 7 +- drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 2 + drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 15 + drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 2636 +++++++++++++++++ drivers/gpu/drm/rockchip/rockchip_drm_vop2.h | 625 ++++ drivers/gpu/drm/rockchip/rockchip_vop2_reg.c | 505 ++++ include/drm/drm_encoder.h | 2 + include/dt-bindings/soc/rockchip,vop2.h | 14 + 21 files changed, 4193 insertions(+), 28 deletions(-) create mode 100644 Documentation/devicetree/bindings/display/rockchip/rockchip-vop2.yaml create mode 100644 drivers/gpu/drm/rockchip/rockchip_drm_vop2.c create mode 100644 drivers/gpu/drm/rockchip/rockchip_drm_vop2.h create mode 100644 drivers/gpu/drm/rockchip/rockchip_vop2_reg.c create mode 100644 include/dt-bindings/soc/rockchip,vop2.h -- 2.30.2