Store the dp_display in the platform driver data instead of the
dp_display_private.

This is required to allow other sub-modules to reuse the platform
driver data.

Changes in v3: none
Changes in v4: none
Changes in v5: none
Changes in v6: rebase on top of latest patchset of dependency

Signed-off-by: Abhinav Kumar <[email protected]>
---
 drivers/gpu/drm/msm/dp/dp_display.c | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/msm/dp/dp_display.c 
b/drivers/gpu/drm/msm/dp/dp_display.c
index fa92b6cd6e3e..0defab6e2478 100644
--- a/drivers/gpu/drm/msm/dp/dp_display.c
+++ b/drivers/gpu/drm/msm/dp/dp_display.c
@@ -181,11 +181,11 @@ static int dp_display_bind(struct device *dev, struct 
device *master,
        struct dp_display_private *dp;
        struct drm_device *drm;
        struct msm_drm_private *priv;
-       struct platform_device *pdev = to_platform_device(dev);
 
        drm = dev_get_drvdata(master);
 
-       dp = platform_get_drvdata(pdev);
+       dp = container_of(g_dp_display,
+                       struct dp_display_private, dp_display);
        if (!dp) {
                DRM_ERROR("DP driver bind failed. Invalid driver data\n");
                return -EINVAL;
@@ -220,11 +220,11 @@ static void dp_display_unbind(struct device *dev, struct 
device *master,
                              void *data)
 {
        struct dp_display_private *dp;
-       struct platform_device *pdev = to_platform_device(dev);
        struct drm_device *drm = dev_get_drvdata(master);
        struct msm_drm_private *priv = drm->dev_private;
 
-       dp = platform_get_drvdata(pdev);
+       dp = container_of(g_dp_display,
+                       struct dp_display_private, dp_display);
        if (!dp) {
                DRM_ERROR("Invalid DP driver data\n");
                return;
@@ -359,7 +359,8 @@ static int dp_display_usbpd_configure_cb(struct device *dev)
                goto end;
        }
 
-       dp = dev_get_drvdata(dev);
+       dp = container_of(g_dp_display,
+                       struct dp_display_private, dp_display);
        if (!dp) {
                DRM_ERROR("no driver data found\n");
                rc = -ENODEV;
@@ -383,7 +384,8 @@ static int dp_display_usbpd_disconnect_cb(struct device 
*dev)
        int rc = 0;
        struct dp_display_private *dp;
 
-       dp = dev_get_drvdata(dev);
+       dp = container_of(g_dp_display,
+                       struct dp_display_private, dp_display);
 
        dp_add_event(dp, EV_USER_NOTIFICATION, false, 0);
 
@@ -435,7 +437,8 @@ static int dp_display_usbpd_attention_cb(struct device *dev)
                return -EINVAL;
        }
 
-       dp = dev_get_drvdata(dev);
+       dp = container_of(g_dp_display,
+                       struct dp_display_private, dp_display);
        if (!dp) {
                DRM_ERROR("no driver data found\n");
                return -ENODEV;
@@ -1070,12 +1073,14 @@ static int dp_display_probe(struct platform_device 
*pdev)
                return -EPROBE_DEFER;
        }
 
-       platform_set_drvdata(pdev, dp);
-
        mutex_init(&dp->event_mutex);
+
        init_completion(&dp->resume_comp);
+
        g_dp_display = &dp->dp_display;
 
+       platform_set_drvdata(pdev, g_dp_display);
+
        rc = component_add(&pdev->dev, &dp_display_comp_ops);
        if (rc) {
                DRM_ERROR("component add failed, rc=%d\n", rc);
@@ -1089,7 +1094,8 @@ static int dp_display_remove(struct platform_device *pdev)
 {
        struct dp_display_private *dp;
 
-       dp = platform_get_drvdata(pdev);
+       dp = container_of(g_dp_display,
+                       struct dp_display_private, dp_display);
 
        dp_display_deinit_sub_modules(dp);
 
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to