}
 
        /* enable HDP irq_hpd/replug interrupt */
-       dp_catalog_hpd_config_intr(dp->catalog,
-               DP_DP_IRQ_HPD_INT_MASK | DP_DP_HPD_REPLUG_INT_MASK, true);
+       if (dp->dp_display.internal_hpd)
+               dp_catalog_hpd_config_intr(dp->catalog,
+                                          DP_DP_IRQ_HPD_INT_MASK | DP_DP_HPD_REPLUG_INT_MASK,
+                                          true);
 
        drm_dbg_dp(dp->drm_dev, "After, type=%d hpd_state=%d\n",
                        dp->dp_display.connector_type, state);
                        dp->dp_display.connector_type, state);
 
        /* disable irq_hpd/replug interrupts */
-       dp_catalog_hpd_config_intr(dp->catalog,
-               DP_DP_IRQ_HPD_INT_MASK | DP_DP_HPD_REPLUG_INT_MASK, false);
+       if (dp->dp_display.internal_hpd)
+               dp_catalog_hpd_config_intr(dp->catalog,
+                                          DP_DP_IRQ_HPD_INT_MASK | DP_DP_HPD_REPLUG_INT_MASK,
+                                          false);
 
        /* unplugged, no more irq_hpd handle */
        dp_del_event(dp, EV_IRQ_HPD_INT);
        }
 
        /* disable HPD plug interrupts */
-       dp_catalog_hpd_config_intr(dp->catalog, DP_DP_HPD_PLUG_INT_MASK, false);
+       if (dp->dp_display.internal_hpd)
+               dp_catalog_hpd_config_intr(dp->catalog, DP_DP_HPD_PLUG_INT_MASK, false);
 
        /*
         * We don't need separate work for disconnect as
        dp_display_handle_plugged_change(&dp->dp_display, false);
 
        /* enable HDP plug interrupt to prepare for next plugin */
-       if (!dp->dp_display.is_edp)
+       if (dp->dp_display.internal_hpd)
                dp_catalog_hpd_config_intr(dp->catalog, DP_DP_HPD_PLUG_INT_MASK, true);
 
        drm_dbg_dp(dp->drm_dev, "After, type=%d hpd_state=%d\n",
        dp_display_host_init(dp);
        dp_catalog_ctrl_hpd_config(dp->catalog);
 
-       /* Enable plug and unplug interrupts only for external DisplayPort */
-       if (!dp->dp_display.is_edp)
+       /* Enable plug and unplug interrupts only if requested */
+       if (dp->dp_display.internal_hpd)
                dp_catalog_hpd_config_intr(dp->catalog,
                                DP_DP_HPD_PLUG_INT_MASK |
                                DP_DP_HPD_UNPLUG_INT_MASK,
 
        dp_catalog_ctrl_hpd_config(dp->catalog);
 
-
-       if (!dp->dp_display.is_edp)
+       if (dp->dp_display.internal_hpd)
                dp_catalog_hpd_config_intr(dp->catalog,
                                DP_DP_HPD_PLUG_INT_MASK |
                                DP_DP_HPD_UNPLUG_INT_MASK,
        dp_display->dp_mode.h_active_low =
                !!(dp_display->dp_mode.drm_mode.flags & DRM_MODE_FLAG_NHSYNC);
 }
+
+void dp_bridge_hpd_enable(struct drm_bridge *bridge)
+{
+       struct msm_dp_bridge *dp_bridge = to_dp_bridge(bridge);
+       struct msm_dp *dp_display = dp_bridge->dp_display;
+
+       dp_display->internal_hpd = true;
+}
+
+void dp_bridge_hpd_disable(struct drm_bridge *bridge)
+{
+       struct msm_dp_bridge *dp_bridge = to_dp_bridge(bridge);
+       struct msm_dp *dp_display = dp_bridge->dp_display;
+
+       dp_display->internal_hpd = false;
+}