diff options
Diffstat (limited to 'drivers/gpu/drm/meson/meson_drv.c')
| -rw-r--r-- | drivers/gpu/drm/meson/meson_drv.c | 17 | 
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c index 79bfe3938d3c..bb72fda9106d 100644 --- a/drivers/gpu/drm/meson/meson_drv.c +++ b/drivers/gpu/drm/meson/meson_drv.c @@ -18,7 +18,7 @@  #include <drm/drm_aperture.h>  #include <drm/drm_atomic_helper.h>  #include <drm/drm_drv.h> -#include <drm/drm_fbdev_generic.h> +#include <drm/drm_fbdev_dma.h>  #include <drm/drm_gem_dma_helper.h>  #include <drm/drm_gem_framebuffer_helper.h>  #include <drm/drm_modeset_helper_vtables.h> @@ -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); @@ -353,12 +353,15 @@ static int meson_drv_bind_master(struct device *dev, bool has_components)  	if (ret)  		goto uninstall_irq; -	drm_fbdev_generic_setup(drm, 32); +	drm_fbdev_dma_setup(drm, 32);  	return 0;  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);  | 
