drm: bridge: analogix: Destroy connector & encoder when unbinding
authorJeffy Chen <jeffy.chen@rock-chips.com>
Thu, 6 Apr 2017 12:31:17 +0000 (20:31 +0800)
committerSean Paul <seanpaul@chromium.org>
Fri, 7 Apr 2017 17:28:32 +0000 (13:28 -0400)
Normally we do this in drm_mode_config_cleanup. But:
1/ analogix dp's connector is allocated in bind, and freed after unbind.
So we need to destroy it in unbind to avoid further access.
2/ the drm bridge is attached in bind, and detached in encoder cleanup.
So we need to destroy encoder in unbind.

Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Sean Paul <seanpaul@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1491481885-13775-5-git-send-email-jeffy.chen@rock-chips.com
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c

index d05ade4fb7fdf56a4d63284a3d926182d80fb786..4c758ed51939d5a4fdacb9cacb93bab4f0953bb8 100644 (file)
@@ -1439,6 +1439,8 @@ void analogix_dp_unbind(struct device *dev, struct device *master,
        struct analogix_dp_device *dp = dev_get_drvdata(dev);
 
        analogix_dp_bridge_disable(dp->bridge);
+       dp->connector.funcs->destroy(&dp->connector);
+       dp->encoder->funcs->destroy(dp->encoder);
 
        if (dp->plat_data->panel) {
                if (drm_panel_unprepare(dp->plat_data->panel))