From 8208ed931eea9b00a3b29c9ef36da382b5480881 Mon Sep 17 00:00:00 2001 From: Archit Taneja Date: Mon, 2 May 2016 11:05:53 +0530 Subject: drm/msm: Centralize connector registration/unregistration Move the drm_connector registration from the encoder(HDMI/DSI etc) drivers to the msm platform driver. This will simplify the task of ensuring that the connectors are registered only after the drm_device itself is registered. The connectors' destroy ops are made to use kzalloc instead of devm_kzalloc to ensure that that the connectors can be successfully unregistered when the msm driver module is removed. The memory for the connectors is unallocated when drm_mode_config_cleanup() is called during either during an error or during driver remove. Signed-off-by: Archit Taneja Signed-off-by: Rob Clark --- drivers/gpu/drm/msm/msm_drv.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'drivers/gpu/drm/msm/msm_drv.c') diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index c257cdd..336070d 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -199,6 +199,8 @@ static int msm_unload(struct drm_device *dev) drm_kms_helper_poll_fini(dev); + drm_connector_unregister_all(dev); + #ifdef CONFIG_DRM_FBDEV_EMULATION if (fbdev && priv->fbdev) msm_fbdev_free(dev); @@ -414,6 +416,12 @@ static int msm_load(struct drm_device *dev, unsigned long flags) goto fail; } + ret = drm_connector_register_all(dev); + if (ret) { + dev_err(dev->dev, "failed to register connectors\n"); + goto fail; + } + drm_mode_config_reset(dev); #ifdef CONFIG_DRM_FBDEV_EMULATION -- cgit v1.1