The idea is to have an unique place to decide the pin-port
per platform.
So let's create this function now without any functional
change. Just adding together code from hdmi and dp together.
v2: Add missing pin for port A.
v3: Fix typo on subject.
    Avoid behaviour change so add WARN_ON and return
    if port A on HDMI. (by DK).
Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170811182650.14327-2-rodrigo.vivi@intel.com
 void intel_hpd_init_work(struct drm_i915_private *dev_priv);
 void intel_hpd_cancel_work(struct drm_i915_private *dev_priv);
 enum port intel_hpd_pin_to_port(enum hpd_pin pin);
+enum hpd_pin intel_hpd_pin(enum port port);
 bool intel_hpd_disable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 void intel_hpd_enable(struct drm_i915_private *dev_priv, enum hpd_pin pin);
 
 
        struct intel_encoder *encoder = &intel_dig_port->base;
        struct intel_dp *intel_dp = &intel_dig_port->dp;
 
+       encoder->hpd_pin = intel_hpd_pin(intel_dig_port->port);
+
        switch (intel_dig_port->port) {
        case PORT_A:
-               encoder->hpd_pin = HPD_PORT_A;
                intel_dp->aux_power_domain = POWER_DOMAIN_AUX_A;
                break;
        case PORT_B:
-               encoder->hpd_pin = HPD_PORT_B;
                intel_dp->aux_power_domain = POWER_DOMAIN_AUX_B;
                break;
        case PORT_C:
-               encoder->hpd_pin = HPD_PORT_C;
                intel_dp->aux_power_domain = POWER_DOMAIN_AUX_C;
                break;
        case PORT_D:
-               encoder->hpd_pin = HPD_PORT_D;
                intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
                break;
        case PORT_E:
-               encoder->hpd_pin = HPD_PORT_E;
-
                /* FIXME: Check VBT for actual wiring of PORT E */
                intel_dp->aux_power_domain = POWER_DOMAIN_AUX_D;
                break;
 
 
        intel_hdmi->ddc_bus = intel_hdmi_ddc_pin(dev_priv, port);
 
-       switch (port) {
-       case PORT_B:
-               intel_encoder->hpd_pin = HPD_PORT_B;
-               break;
-       case PORT_C:
-               intel_encoder->hpd_pin = HPD_PORT_C;
-               break;
-       case PORT_D:
-               intel_encoder->hpd_pin = HPD_PORT_D;
-               break;
-       case PORT_E:
-               intel_encoder->hpd_pin = HPD_PORT_E;
-               break;
-       default:
-               MISSING_CASE(port);
+       if (WARN_ON(port == PORT_A))
                return;
-       }
+       intel_encoder->hpd_pin = intel_hpd_pin(port);
 
        if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
                intel_hdmi->write_infoframe = vlv_write_infoframe;
 
        }
 }
 
+/**
+ * intel_hpd_pin - return pin hard associated with certain port.
+ * @port: the hpd port to get associated pin
+ *
+ * Return pin that is associatade with @port and HDP_NONE if no pin is
+ * hard associated with that @port.
+ */
+enum hpd_pin intel_hpd_pin(enum port port)
+{
+       switch (port) {
+       case PORT_A:
+               return HPD_PORT_A;
+       case PORT_B:
+               return HPD_PORT_B;
+       case PORT_C:
+               return HPD_PORT_C;
+       case PORT_D:
+               return HPD_PORT_D;
+       case PORT_E:
+               return HPD_PORT_E;
+       default:
+               MISSING_CASE(port);
+               return HPD_NONE;
+       }
+}
+
 #define HPD_STORM_DETECT_PERIOD                1000
 #define HPD_STORM_REENABLE_DELAY       (2 * 60 * 1000)