struct platform_device *pdev = to_platform_device(dev);
        struct msm_dp *dp_display = platform_get_drvdata(pdev);
        struct dp_display_private *dp;
-       u32 status;
+       int sink_count = 0;
 
        dp = container_of(dp_display, struct dp_display_private, dp_display);
 
 
        dp_catalog_ctrl_hpd_config(dp->catalog);
 
-       status = dp_catalog_link_is_connected(dp->catalog);
+       /*
+        * set sink to normal operation mode -- D0
+        * before dpcd read
+        */
+       dp_link_psm_config(dp->link, &dp->panel->link_info, false);
+
+       if (dp_catalog_link_is_connected(dp->catalog)) {
+               sink_count = drm_dp_read_sink_count(dp->aux);
+               if (sink_count < 0)
+                       sink_count = 0;
+       }
 
+       dp->link->sink_count = sink_count;
        /*
         * can not declared display is connected unless
         * HDMI cable is plugged in and sink_count of
         * dongle become 1
         */
-       if (status && dp->link->sink_count)
+       if (dp->link->sink_count)
                dp->dp_display.is_connected = true;
        else
                dp->dp_display.is_connected = false;