diff options
Diffstat (limited to 'drivers/gpu/drm/meson/meson_drv.c')
| -rw-r--r-- | drivers/gpu/drm/meson/meson_drv.c | 13 | 
1 files changed, 8 insertions, 5 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); |