@@ -170,11 +170,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;
@@ -209,11 +209,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;
@@ -348,7 +348,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;
@@ -372,7 +373,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);
@@ -424,7 +426,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;
@@ -997,11 +1000,12 @@ static int dp_display_probe(struct platform_device *pdev)
return -EPROBE_DEFER;
}
- platform_set_drvdata(pdev, dp);
-
mutex_init(&dp->event_mutex);
+
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);
@@ -1015,7 +1019,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);
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. Signed-off-by: Abhinav Kumar <abhinavk@codeaurora.org> --- drivers/gpu/drm/msm/dp/dp_display.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-)