Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm: rcar-du: Add R8A7796 support

Document the R8A7796-specific DT bindings and support them in the
driver. The HDMI output is currently not supported.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

+31 -4
+6 -4
Documentation/devicetree/bindings/display/renesas,du.txt
··· 10 10 - "renesas,du-r8a7793" for R8A7793 (R-Car M2-N) compatible DU 11 11 - "renesas,du-r8a7794" for R8A7794 (R-Car E2) compatible DU 12 12 - "renesas,du-r8a7795" for R8A7795 (R-Car H3) compatible DU 13 + - "renesas,du-r8a7796" for R8A7796 (R-Car M3-W) compatible DU 13 14 14 15 - reg: A list of base address and length of each memory resource, one for 15 16 each entry in the reg-names property. ··· 27 26 - clock-names: Name of the clocks. This property is model-dependent. 28 27 - R8A7779 uses a single functional clock. The clock doesn't need to be 29 28 named. 30 - - R8A779[012345] use one functional clock per channel and one clock per LVDS 31 - encoder (if available). The functional clocks must be named "du.x" with 32 - "x" being the channel numerical index. The LVDS clocks must be named 33 - "lvds.x" with "x" being the LVDS encoder numerical index. 29 + - R8A779[0123456] use one functional clock per channel and one clock per 30 + LVDS encoder (if available). The functional clocks must be named "du.x" 31 + with "x" being the channel numerical index. The LVDS clocks must be 32 + named "lvds.x" with "x" being the LVDS encoder numerical index. 34 33 - In addition to the functional and encoder clocks, all DU versions also 35 34 support externally supplied pixel clocks. Those clocks are optional. 36 35 When supplied they must be named "dclkin.x" with "x" being the input ··· 53 52 R8A7793 (M2-N) DPAD LVDS 0 - - 54 53 R8A7794 (E2) DPAD 0 DPAD 1 - - 55 54 R8A7795 (H3) DPAD HDMI 0 HDMI 1 LVDS 55 + R8A7796 (M3-W) DPAD HDMI LVDS - 56 56 57 57 58 58 Example: R8A7790 (R-Car H2) DU
+25
drivers/gpu/drm/rcar-du/rcar_du_drv.c
··· 178 178 .num_lvds = 1, 179 179 }; 180 180 181 + static const struct rcar_du_device_info rcar_du_r8a7796_info = { 182 + .gen = 3, 183 + .features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK 184 + | RCAR_DU_FEATURE_EXT_CTRL_REGS 185 + | RCAR_DU_FEATURE_VSP1_SOURCE, 186 + .num_crtcs = 3, 187 + .routes = { 188 + /* R8A7796 has one RGB output, one LVDS output and one 189 + * (currently unsupported) HDMI output. 190 + */ 191 + [RCAR_DU_OUTPUT_DPAD0] = { 192 + .possible_crtcs = BIT(2), 193 + .encoder_type = DRM_MODE_ENCODER_NONE, 194 + .port = 0, 195 + }, 196 + [RCAR_DU_OUTPUT_LVDS0] = { 197 + .possible_crtcs = BIT(0), 198 + .encoder_type = DRM_MODE_ENCODER_LVDS, 199 + .port = 2, 200 + }, 201 + }, 202 + .num_lvds = 1, 203 + }; 204 + 181 205 static const struct of_device_id rcar_du_of_table[] = { 182 206 { .compatible = "renesas,du-r8a7779", .data = &rcar_du_r8a7779_info }, 183 207 { .compatible = "renesas,du-r8a7790", .data = &rcar_du_r8a7790_info }, ··· 210 186 { .compatible = "renesas,du-r8a7793", .data = &rcar_du_r8a7791_info }, 211 187 { .compatible = "renesas,du-r8a7794", .data = &rcar_du_r8a7794_info }, 212 188 { .compatible = "renesas,du-r8a7795", .data = &rcar_du_r8a7795_info }, 189 + { .compatible = "renesas,du-r8a7796", .data = &rcar_du_r8a7796_info }, 213 190 { } 214 191 }; 215 192