return ret;
 }
 
-int dp_display_request_irq(struct msm_dp *dp_display)
+static int dp_display_request_irq(struct dp_display_private *dp)
 {
        int rc = 0;
-       struct dp_display_private *dp;
-
-       if (!dp_display) {
-               DRM_ERROR("invalid input\n");
-               return -EINVAL;
-       }
-
-       dp = container_of(dp_display, struct dp_display_private, dp_display);
+       struct platform_device *pdev = dp->dp_display.pdev;
 
-       dp->irq = irq_of_parse_and_map(dp->dp_display.pdev->dev.of_node, 0);
+       dp->irq = platform_get_irq(pdev, 0);
        if (!dp->irq) {
                DRM_ERROR("failed to get irq\n");
                return -EINVAL;
        }
 
-       rc = devm_request_irq(dp_display->drm_dev->dev, dp->irq,
-                       dp_display_irq_handler,
+       rc = devm_request_irq(&pdev->dev, dp->irq, dp_display_irq_handler,
                        IRQF_TRIGGER_HIGH, "dp_display_isr", dp);
        if (rc < 0) {
                DRM_ERROR("failed to request IRQ%u: %d\n",
 
        platform_set_drvdata(pdev, &dp->dp_display);
 
+       rc = dp_display_request_irq(dp);
+       if (rc)
+               goto err;
+
        rc = component_add(&pdev->dev, &dp_display_comp_ops);
        if (rc) {
                DRM_ERROR("component add failed, rc=%d\n", rc);
-               dp_display_deinit_sub_modules(dp);
+               goto err;
        }
 
        return rc;
+
+err:
+       dp_display_deinit_sub_modules(dp);
+       return rc;
 }
 
 static void dp_display_remove(struct platform_device *pdev)
 
        dp_priv = container_of(dp_display, struct dp_display_private, dp_display);
 
-       ret = dp_display_request_irq(dp_display);
-       if (ret) {
-               DRM_ERROR("request_irq failed, ret=%d\n", ret);
-               return ret;
-       }
-
        ret = dp_display_get_next_bridge(dp_display);
        if (ret)
                return ret;
 
 int dp_display_set_plugged_cb(struct msm_dp *dp_display,
                hdmi_codec_plugged_cb fn, struct device *codec_dev);
 int dp_display_get_modes(struct msm_dp *dp_display);
-int dp_display_request_irq(struct msm_dp *dp_display);
 bool dp_display_check_video_test(struct msm_dp *dp_display);
 int dp_display_get_test_bpp(struct msm_dp *dp_display);
 void dp_display_signal_audio_start(struct msm_dp *dp_display);