Dear All, This patch series adds DU/DRM support for the 2 Display Units (DUs) interface found on the Renesas RZ/G3E SoC.
RZ/G3E SoC has 2 LCD controller (LCDC0 and LCDC1), both are composed of Frame Compression Processor (FCPVD), Video Signal Processor (VSPD), and Display Unit (DU). LCDC0 is connected to LVDS (single or dual channel) and DSI. LCDC1 is connected to LVDS (single ch), DSI, and GPIO (Parallel I/F). The first patches prepare the driver for SoCs with more than one DU channel: the registers, clocks and resets become per channel, and the CRTCs are created from the channels_mask of the SoC information. The RZ/G3E support and the DU node follow. This series apply on top of RZ/G3L du support [1] [1] https://lore.kernel.org/all/[email protected]/ Kind regards, Tommaso v7->v8: - Rebased on top of next-20260827 + [1]. - Improved cover letter. - Modelled using ports/port instead of port/ep. - PATCH 01/9: Add RZ/G3E support on top of [1] using R-Car like architecture, improved commit msg and commit body. - PATCH 08/9: Use R-Car like architecture for RZ/G3E and added mode_clock_min, mode_clock_max for parallel output, improved commit msg and commit body. v6->v7: - Rebased on top of next-20260605 - Splitted the original series into smaller chunks for easy review and easy merging. The original series is available here: http://lore.kernel.org/all/[email protected]/ - PATCH 01/13: Collected LPinchart tag. Removed wrong fixes tag. - PATCH 02/13: Rebased on top of [1]. Use single DRM device aggregating both DU instances (1 DU dt node), modelling single port for each DU0, DU1 and multiple endpoints for outputs. - PATCH 12/13: Removed feature flag usage, rebased on top of T2H/N2H LCDC series [1] Reworked commit body as now outputs routing is based on endpoint id instead of port number. Fixed rzg2l_du_r9a09g047_info instead of rzg2l_du_r9a09g047_du_info. Added bump of RZG2L_DU_MAX_CRTCS and RZG2L_DU_MAX_VSPS to 2. v5->v6: - Rebased on top of next-20260406 - PATCH 1: Fixed rzv2h_cpg_plldsi_smux_clk_register() removed u8 width, mask variables and replaced with direct use of smux.width and clk_div_mask(smux.width). - PATCH 9: New patch. - PATCH 10: Extend patternProperties from "^port@[0-1]$" to "^port@[0-3]$" and explicitly disable port@2 and port@3 for existing SoCs that do not expose them. Reworked ports numbering + improved/fixed ports descriptions in the bindings documentation. Improved commit body. - PATCH 15: Aligned ports numbering with the bindings changes. - PATCH 20: Update ports numbering accordingly to the latest DT bindings. v4->v5: - Rebased on top of next-20260211 - PATCH 9: Dropped renesas,id property. - PATCH 10: Collected tag. - PATCH 14: Fixed RG2L_DU_FEATURE_SMUX2_DSI_CLK to RZG2L_DU_FEATURE_SMUX2_DSI_CLK Added features field documentation. - PATCH 19: Rename du0_out_dsi0 into du0_out_dsi. Rename du1_out_dsi0 into du1_out_dsi. Drop renesas,id entry from DU nodes. - PATCH 20: Use DU0 -> DSI instead of DU1 -> DSI. v3->v4: - Rebased on top of next-20260130 - PATCH 1: Fixed build error: https://lore.kernel.org/oe-kbuild-all/[email protected]/ v2->v3: - PATCH 1: Added missing defines for duty num/den. v1->v2: - Rebased on top of next-20260129. - PATCH 1: Added rzv2h_cpg_plldsi_smux_{get,set}_duty_cycle clock operations to allow the DRM driver to query and configure the appropriate clock path based on the required output duty cycle. Updated commit message accordingly. - PATCH 2-5: Collected tags. - PATCH 6: Moved clk_ids to match enum order. - PATCH 7: Collected GUytterhoeven tag. Fixed "dsi_0_vclk2" position to match order. - PATCH 8: Collected GUytterhoeven tag. - PATCH 9: Use single compatible string instead of multiple compatible strings for the two DU instances, leveraging a 'renesas,id' property to differentiate between DU0 and DU1. Updated commit message. - PATCH 10: Removed oneOf from clocks property, which is not sufficient to differentiate between RZ/G3E, RZ/V2H(P) and RZ/G2L. Use the already existing vclk instead of vclk1 for RZ/G3E DSI bindings. Updated allOf. - PATCH 14: Instead of using clk-provider API to select the right parent clock, just set the correct duty cycle based on the output. Updated commit message accordingly. - PATCH 15-16: Collected tags. - PATCH 17: Squashed fcpvd0 and fcpvd1 patches into a single patch. Collected tags. - PATCH 18: Squashed vspd0 and vspd1 patches into a single patch. Collected tags. - PATCH 19: Reworked DU nodes to use single compatible. Use vclk instead of vclk1 for DSI Node and set to the right position. - PATCH 20: Fixed: dsi, du and adv7535 are part of the R9A09G047E57 SMARC SoM board then add entries in the rzg3e-smarc-som.dtsi instead of using the r9a09g047e57-smarc-du1-adv7535.dtsi. Tommaso Merciai (9): dt-bindings: display: renesas,rzg2l-du: Document RZ/G3E SoC drm: renesas: rz-du: Move mmio from rzg2l_du_device to rzg2l_du_crtc drm: renesas: rz-du: crtc: Parameterize rzg2l_du_crtc_create() drm: renesas: rz-du: vsp: Keep the planes in the VSP drm: renesas: rz-du: kms: Enable multi CRTC creation drm: renesas: rz-du: crtc: Support per-channel named resources drm: renesas: rz-du: Rename possible_outputs to possible_crtcs drm: renesas: rz-du: Add RZ/G3E (R9A09G047) DU support arm64: dts: renesas: r9a09g047: Add DU node .../bindings/display/renesas,rzg2l-du.yaml | 95 ++++++++++++++++++- arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 52 ++++++++++ drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.c | 88 ++++++++++++----- drivers/gpu/drm/renesas/rz-du/rzg2l_du_crtc.h | 5 +- drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c | 50 +++++++--- drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.h | 14 +-- .../gpu/drm/renesas/rz-du/rzg2l_du_encoder.c | 3 +- drivers/gpu/drm/renesas/rz-du/rzg2l_du_kms.c | 18 +++- drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.c | 21 +--- drivers/gpu/drm/renesas/rz-du/rzg2l_du_vsp.h | 11 +-- 10 files changed, 279 insertions(+), 78 deletions(-) -- 2.54.0
