aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoji Matsuoka <koji.matsuoka.xm@renesas.com>2016-06-28 03:33:45 -0400
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>2016-11-14 18:44:51 -0500
commit85e8f8d175caa6a39f4c4e11dd4d0ab038f43324 (patch)
tree0d6f6e136f0c25b40164877e6aa6d43cf8af94e0
parentfd1adef3bff0663c5ac31b45bc4a05fafd43d19b (diff)
drm: rcar-du: Fix LVDS start sequence on Gen3
According to the latest revision of the datasheet, the LVDS I/O pins must be enabled before starting the PLL. Fix it. Signed-off-by: Koji Matsuoka <koji.matsuoka.xm@renesas.com> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
-rw-r--r--drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.c b/drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.c
index b74105a80a6e..e3a4985f6f3f 100644
--- a/drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.c
+++ b/drivers/gpu/drm/rcar-du/rcar_du_lvdsenc.c
@@ -104,7 +104,14 @@ static void rcar_du_lvdsenc_start_gen3(struct rcar_du_lvdsenc *lvds,
104 104
105 rcar_lvds_write(lvds, LVDPLLCR, pllcr); 105 rcar_lvds_write(lvds, LVDPLLCR, pllcr);
106 106
107 /* Turn the PLL on, set it to LVDS normal mode, wait for the startup 107 /* Turn all the channels on. */
108 rcar_lvds_write(lvds, LVDCR1,
109 LVDCR1_CHSTBY_GEN3(3) | LVDCR1_CHSTBY_GEN3(2) |
110 LVDCR1_CHSTBY_GEN3(1) | LVDCR1_CHSTBY_GEN3(0) |
111 LVDCR1_CLKSTBY_GEN3);
112
113 /*
114 * Turn the PLL on, set it to LVDS normal mode, wait for the startup
108 * delay and turn the output on. 115 * delay and turn the output on.
109 */ 116 */
110 lvdcr0 = LVDCR0_PLLON; 117 lvdcr0 = LVDCR0_PLLON;
@@ -117,12 +124,6 @@ static void rcar_du_lvdsenc_start_gen3(struct rcar_du_lvdsenc *lvds,
117 124
118 lvdcr0 |= LVDCR0_LVRES; 125 lvdcr0 |= LVDCR0_LVRES;
119 rcar_lvds_write(lvds, LVDCR0, lvdcr0); 126 rcar_lvds_write(lvds, LVDCR0, lvdcr0);
120
121 /* Turn all the channels on. */
122 rcar_lvds_write(lvds, LVDCR1,
123 LVDCR1_CHSTBY_GEN3(3) | LVDCR1_CHSTBY_GEN3(2) |
124 LVDCR1_CHSTBY_GEN3(1) | LVDCR1_CHSTBY_GEN3(0) |
125 LVDCR1_CLKSTBY_GEN3);
126} 127}
127 128
128static int rcar_du_lvdsenc_start(struct rcar_du_lvdsenc *lvds, 129static int rcar_du_lvdsenc_start(struct rcar_du_lvdsenc *lvds,