aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/meson/meson_venc.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/meson/meson_venc.c b/drivers/gpu/drm/meson/meson_venc.c
index d836b2274531..f7c870172220 100644
--- a/drivers/gpu/drm/meson/meson_venc.c
+++ b/drivers/gpu/drm/meson/meson_venc.c
@@ -38,6 +38,11 @@
38 * - TV Panel encoding via ENCT 38 * - TV Panel encoding via ENCT
39 */ 39 */
40 40
41/* HHI Registers */
42#define HHI_VDAC_CNTL0 0x2F4 /* 0xbd offset in data sheet */
43#define HHI_VDAC_CNTL1 0x2F8 /* 0xbe offset in data sheet */
44#define HHI_HDMI_PHY_CNTL0 0x3a0 /* 0xe8 offset in data sheet */
45
41struct meson_cvbs_enci_mode meson_cvbs_enci_pal = { 46struct meson_cvbs_enci_mode meson_cvbs_enci_pal = {
42 .mode_tag = MESON_VENC_MODE_CVBS_PAL, 47 .mode_tag = MESON_VENC_MODE_CVBS_PAL,
43 .hso_begin = 3, 48 .hso_begin = 3,
@@ -242,6 +247,20 @@ void meson_venc_disable_vsync(struct meson_drm *priv)
242 247
243void meson_venc_init(struct meson_drm *priv) 248void meson_venc_init(struct meson_drm *priv)
244{ 249{
250 /* Disable CVBS VDAC */
251 regmap_write(priv->hhi, HHI_VDAC_CNTL0, 0);
252 regmap_write(priv->hhi, HHI_VDAC_CNTL1, 8);
253
254 /* Power Down Dacs */
255 writel_relaxed(0xff, priv->io_base + _REG(VENC_VDAC_SETTING));
256
257 /* Disable HDMI PHY */
258 regmap_write(priv->hhi, HHI_HDMI_PHY_CNTL0, 0);
259
260 /* Disable HDMI */
261 writel_bits_relaxed(0x3, 0,
262 priv->io_base + _REG(VPU_HDMI_SETTING));
263
245 /* Disable all encoders */ 264 /* Disable all encoders */
246 writel_relaxed(0, priv->io_base + _REG(ENCI_VIDEO_EN)); 265 writel_relaxed(0, priv->io_base + _REG(ENCI_VIDEO_EN));
247 writel_relaxed(0, priv->io_base + _REG(ENCP_VIDEO_EN)); 266 writel_relaxed(0, priv->io_base + _REG(ENCP_VIDEO_EN));