diff options
| author | Dave Airlie <airlied@redhat.com> | 2017-01-08 18:13:13 -0500 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2017-01-08 18:13:13 -0500 |
| commit | 90e5d2d45776451e58989361a182c067008d5941 (patch) | |
| tree | 19e75092d593f6c2b79cb949e54cca985ac9b8d7 | |
| parent | 13fe46b589c216f3a0c8e142282125c782a175f5 (diff) | |
| parent | 5db60ea93d4fbf146c8f7ca286b8b2a091761460 (diff) | |
Merge tag 'meson-drm-fixes-for-4.10' of git://people.freedesktop.org/~narmstrong/linux into drm-fixes
- plan atomic check oops fix
- fix CVBS init when HDMI is configured by bootloader
- fix CVBS VDAC disable
* tag 'meson-drm-fixes-for-4.10' of git://people.freedesktop.org/~narmstrong/linux:
drm/meson: Fix CVBS VDAC disable
drm/meson: Fix CVBS initialization when HDMI is configured by bootloader
drm/meson: Fix plane atomic check when no crtc for the plane
| -rw-r--r-- | drivers/gpu/drm/meson/meson_plane.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/meson/meson_venc.c | 19 | ||||
| -rw-r--r-- | drivers/gpu/drm/meson/meson_venc_cvbs.c | 2 |
3 files changed, 23 insertions, 1 deletions
diff --git a/drivers/gpu/drm/meson/meson_plane.c b/drivers/gpu/drm/meson/meson_plane.c index 4942ca090b46..7890e30eb584 100644 --- a/drivers/gpu/drm/meson/meson_plane.c +++ b/drivers/gpu/drm/meson/meson_plane.c | |||
| @@ -51,6 +51,9 @@ static int meson_plane_atomic_check(struct drm_plane *plane, | |||
| 51 | struct drm_crtc_state *crtc_state; | 51 | struct drm_crtc_state *crtc_state; |
| 52 | struct drm_rect clip = { 0, }; | 52 | struct drm_rect clip = { 0, }; |
| 53 | 53 | ||
| 54 | if (!state->crtc) | ||
| 55 | return 0; | ||
| 56 | |||
| 54 | crtc_state = drm_atomic_get_crtc_state(state->state, state->crtc); | 57 | crtc_state = drm_atomic_get_crtc_state(state->state, state->crtc); |
| 55 | if (IS_ERR(crtc_state)) | 58 | if (IS_ERR(crtc_state)) |
| 56 | return PTR_ERR(crtc_state); | 59 | return PTR_ERR(crtc_state); |
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 | |||
| 41 | struct meson_cvbs_enci_mode meson_cvbs_enci_pal = { | 46 | struct 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 | ||
| 243 | void meson_venc_init(struct meson_drm *priv) | 248 | void 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)); |
diff --git a/drivers/gpu/drm/meson/meson_venc_cvbs.c b/drivers/gpu/drm/meson/meson_venc_cvbs.c index c809c085fd78..a2bcc70a03ef 100644 --- a/drivers/gpu/drm/meson/meson_venc_cvbs.c +++ b/drivers/gpu/drm/meson/meson_venc_cvbs.c | |||
| @@ -167,7 +167,7 @@ static void meson_venc_cvbs_encoder_disable(struct drm_encoder *encoder) | |||
| 167 | 167 | ||
| 168 | /* Disable CVBS VDAC */ | 168 | /* Disable CVBS VDAC */ |
| 169 | regmap_write(priv->hhi, HHI_VDAC_CNTL0, 0); | 169 | regmap_write(priv->hhi, HHI_VDAC_CNTL0, 0); |
| 170 | regmap_write(priv->hhi, HHI_VDAC_CNTL1, 0); | 170 | regmap_write(priv->hhi, HHI_VDAC_CNTL1, 8); |
| 171 | } | 171 | } |
| 172 | 172 | ||
| 173 | static void meson_venc_cvbs_encoder_enable(struct drm_encoder *encoder) | 173 | static void meson_venc_cvbs_encoder_enable(struct drm_encoder *encoder) |
