mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-30 07:16:43 +07:00
Merge branch 'drm/next/du' of git://linuxtv.org/pinchartl/fbdev into drm-next
rcar-du support for r8a7793/4 * 'drm/next/du' of git://linuxtv.org/pinchartl/fbdev: drm: rcar-du: Add support for the R8A7794 DU drm: rcar-du: Add support for the R8A7793 DU
This commit is contained in:
commit
2b5f900e4f
@ -5,7 +5,9 @@ Required Properties:
|
|||||||
- compatible: must be one of the following.
|
- compatible: must be one of the following.
|
||||||
- "renesas,du-r8a7779" for R8A7779 (R-Car H1) compatible DU
|
- "renesas,du-r8a7779" for R8A7779 (R-Car H1) compatible DU
|
||||||
- "renesas,du-r8a7790" for R8A7790 (R-Car H2) compatible DU
|
- "renesas,du-r8a7790" for R8A7790 (R-Car H2) compatible DU
|
||||||
- "renesas,du-r8a7791" for R8A7791 (R-Car M2) compatible DU
|
- "renesas,du-r8a7791" for R8A7791 (R-Car M2-W) compatible DU
|
||||||
|
- "renesas,du-r8a7793" for R8A7793 (R-Car M2-N) compatible DU
|
||||||
|
- "renesas,du-r8a7794" for R8A7794 (R-Car E2) compatible DU
|
||||||
|
|
||||||
- reg: A list of base address and length of each memory resource, one for
|
- reg: A list of base address and length of each memory resource, one for
|
||||||
each entry in the reg-names property.
|
each entry in the reg-names property.
|
||||||
@ -22,9 +24,9 @@ Required Properties:
|
|||||||
- clock-names: Name of the clocks. This property is model-dependent.
|
- clock-names: Name of the clocks. This property is model-dependent.
|
||||||
- R8A7779 uses a single functional clock. The clock doesn't need to be
|
- R8A7779 uses a single functional clock. The clock doesn't need to be
|
||||||
named.
|
named.
|
||||||
- R8A7790 and R8A7791 use one functional clock per channel and one clock
|
- R8A779[0134] use one functional clock per channel and one clock per LVDS
|
||||||
per LVDS encoder. The functional clocks must be named "du.x" with "x"
|
encoder (if available). The functional clocks must be named "du.x" with
|
||||||
being the channel numerical index. The LVDS clocks must be named
|
"x" being the channel numerical index. The LVDS clocks must be named
|
||||||
"lvds.x" with "x" being the LVDS encoder numerical index.
|
"lvds.x" with "x" being the LVDS encoder numerical index.
|
||||||
- In addition to the functional and encoder clocks, all DU versions also
|
- In addition to the functional and encoder clocks, all DU versions also
|
||||||
support externally supplied pixel clocks. Those clocks are optional.
|
support externally supplied pixel clocks. Those clocks are optional.
|
||||||
@ -43,7 +45,9 @@ corresponding to each DU output.
|
|||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
R8A7779 (H1) DPAD 0 DPAD 1 -
|
R8A7779 (H1) DPAD 0 DPAD 1 -
|
||||||
R8A7790 (H2) DPAD LVDS 0 LVDS 1
|
R8A7790 (H2) DPAD LVDS 0 LVDS 1
|
||||||
R8A7791 (M2) DPAD LVDS 0 -
|
R8A7791 (M2-W) DPAD LVDS 0 -
|
||||||
|
R8A7793 (M2-N) DPAD LVDS 0 -
|
||||||
|
R8A7794 (E2) DPAD 0 DPAD 1 -
|
||||||
|
|
||||||
|
|
||||||
Example: R8A7790 (R-Car H2) DU
|
Example: R8A7790 (R-Car H2) DU
|
||||||
|
@ -84,12 +84,13 @@ static const struct rcar_du_device_info rcar_du_r8a7790_info = {
|
|||||||
.num_lvds = 2,
|
.num_lvds = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* M2-W (r8a7791) and M2-N (r8a7793) are identical */
|
||||||
static const struct rcar_du_device_info rcar_du_r8a7791_info = {
|
static const struct rcar_du_device_info rcar_du_r8a7791_info = {
|
||||||
.features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
|
.features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
|
||||||
| RCAR_DU_FEATURE_EXT_CTRL_REGS,
|
| RCAR_DU_FEATURE_EXT_CTRL_REGS,
|
||||||
.num_crtcs = 2,
|
.num_crtcs = 2,
|
||||||
.routes = {
|
.routes = {
|
||||||
/* R8A7791 has one RGB output, one LVDS output and one
|
/* R8A779[13] has one RGB output, one LVDS output and one
|
||||||
* (currently unsupported) TCON output.
|
* (currently unsupported) TCON output.
|
||||||
*/
|
*/
|
||||||
[RCAR_DU_OUTPUT_DPAD0] = {
|
[RCAR_DU_OUTPUT_DPAD0] = {
|
||||||
@ -106,10 +107,34 @@ static const struct rcar_du_device_info rcar_du_r8a7791_info = {
|
|||||||
.num_lvds = 1,
|
.num_lvds = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct rcar_du_device_info rcar_du_r8a7794_info = {
|
||||||
|
.features = RCAR_DU_FEATURE_CRTC_IRQ_CLOCK
|
||||||
|
| RCAR_DU_FEATURE_EXT_CTRL_REGS,
|
||||||
|
.num_crtcs = 2,
|
||||||
|
.routes = {
|
||||||
|
/* R8A7794 has two RGB outputs and one (currently unsupported)
|
||||||
|
* TCON output.
|
||||||
|
*/
|
||||||
|
[RCAR_DU_OUTPUT_DPAD0] = {
|
||||||
|
.possible_crtcs = BIT(0),
|
||||||
|
.encoder_type = DRM_MODE_ENCODER_NONE,
|
||||||
|
.port = 0,
|
||||||
|
},
|
||||||
|
[RCAR_DU_OUTPUT_DPAD1] = {
|
||||||
|
.possible_crtcs = BIT(1),
|
||||||
|
.encoder_type = DRM_MODE_ENCODER_NONE,
|
||||||
|
.port = 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.num_lvds = 0,
|
||||||
|
};
|
||||||
|
|
||||||
static const struct of_device_id rcar_du_of_table[] = {
|
static const struct of_device_id rcar_du_of_table[] = {
|
||||||
{ .compatible = "renesas,du-r8a7779", .data = &rcar_du_r8a7779_info },
|
{ .compatible = "renesas,du-r8a7779", .data = &rcar_du_r8a7779_info },
|
||||||
{ .compatible = "renesas,du-r8a7790", .data = &rcar_du_r8a7790_info },
|
{ .compatible = "renesas,du-r8a7790", .data = &rcar_du_r8a7790_info },
|
||||||
{ .compatible = "renesas,du-r8a7791", .data = &rcar_du_r8a7791_info },
|
{ .compatible = "renesas,du-r8a7791", .data = &rcar_du_r8a7791_info },
|
||||||
|
{ .compatible = "renesas,du-r8a7793", .data = &rcar_du_r8a7791_info },
|
||||||
|
{ .compatible = "renesas,du-r8a7794", .data = &rcar_du_r8a7794_info },
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -49,9 +49,10 @@ static void rcar_du_group_setup_defr8(struct rcar_du_group *rgrp)
|
|||||||
u32 defr8 = DEFR8_CODE | DEFR8_DEFE8;
|
u32 defr8 = DEFR8_CODE | DEFR8_DEFE8;
|
||||||
|
|
||||||
/* The DEFR8 register for the first group also controls RGB output
|
/* The DEFR8 register for the first group also controls RGB output
|
||||||
* routing to DPAD0
|
* routing to DPAD0 for DU instances that support it.
|
||||||
*/
|
*/
|
||||||
if (rgrp->index == 0)
|
if (rgrp->dev->info->routes[RCAR_DU_OUTPUT_DPAD0].possible_crtcs > 1 &&
|
||||||
|
rgrp->index == 0)
|
||||||
defr8 |= DEFR8_DRGBS_DU(rgrp->dev->dpad0_source);
|
defr8 |= DEFR8_DRGBS_DU(rgrp->dev->dpad0_source);
|
||||||
|
|
||||||
rcar_du_group_write(rgrp, DEFR8, defr8);
|
rcar_du_group_write(rgrp, DEFR8, defr8);
|
||||||
|
Loading…
Reference in New Issue
Block a user