diff options
Diffstat (limited to 'drivers/gpu/drm/meson')
| -rw-r--r-- | drivers/gpu/drm/meson/meson_drv.c | 13 | ||||
| -rw-r--r-- | drivers/gpu/drm/meson/meson_dw_hdmi.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/meson/meson_vpp.c | 2 | 
3 files changed, 11 insertions, 6 deletions
| diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c index 79bfe3938d3c..7caf937c3c90 100644 --- a/drivers/gpu/drm/meson/meson_drv.c +++ b/drivers/gpu/drm/meson/meson_drv.c @@ -325,23 +325,23 @@ static int meson_drv_bind_master(struct device *dev, bool has_components)  	ret = meson_encoder_hdmi_init(priv);  	if (ret) -		goto exit_afbcd; +		goto unbind_all;  	ret = meson_plane_create(priv);  	if (ret) -		goto exit_afbcd; +		goto unbind_all;  	ret = meson_overlay_create(priv);  	if (ret) -		goto exit_afbcd; +		goto unbind_all;  	ret = meson_crtc_create(priv);  	if (ret) -		goto exit_afbcd; +		goto unbind_all;  	ret = request_irq(priv->vsync_irq, meson_irq, 0, drm->driver->name, drm);  	if (ret) -		goto exit_afbcd; +		goto unbind_all;  	drm_mode_config_reset(drm); @@ -359,6 +359,9 @@ static int meson_drv_bind_master(struct device *dev, bool has_components)  uninstall_irq:  	free_irq(priv->vsync_irq, drm); +unbind_all: +	if (has_components) +		component_unbind_all(drm->dev, drm);  exit_afbcd:  	if (priv->afbcd.ops)  		priv->afbcd.ops->exit(priv); diff --git a/drivers/gpu/drm/meson/meson_dw_hdmi.c b/drivers/gpu/drm/meson/meson_dw_hdmi.c index 534621a13a34..3d046878ce6c 100644 --- a/drivers/gpu/drm/meson/meson_dw_hdmi.c +++ b/drivers/gpu/drm/meson/meson_dw_hdmi.c @@ -718,7 +718,7 @@ static int meson_dw_hdmi_bind(struct device *dev, struct device *master,  	dw_plat_data = &meson_dw_hdmi->dw_plat_data;  	ret = devm_regulator_get_enable_optional(dev, "hdmi"); -	if (ret < 0) +	if (ret < 0 && ret != -ENODEV)  		return ret;  	meson_dw_hdmi->hdmitx_apb = devm_reset_control_get_exclusive(dev, diff --git a/drivers/gpu/drm/meson/meson_vpp.c b/drivers/gpu/drm/meson/meson_vpp.c index 154837688ab0..5df1957c8e41 100644 --- a/drivers/gpu/drm/meson/meson_vpp.c +++ b/drivers/gpu/drm/meson/meson_vpp.c @@ -100,6 +100,8 @@ void meson_vpp_init(struct meson_drm *priv)  			       priv->io_base + _REG(VPP_DOLBY_CTRL));  		writel_relaxed(0x1020080,  				priv->io_base + _REG(VPP_DUMMY_DATA1)); +		writel_relaxed(0x42020, +				priv->io_base + _REG(VPP_DUMMY_DATA));  	} else if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A))  		writel_relaxed(0xf, priv->io_base + _REG(DOLBY_PATH_CTRL)); |