drm/i915: Introduce intel_hpd_pin function.
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
This commit is contained in:
parent
256cfdde42
commit
f761bef2f3
4 changed files with 31 additions and 22 deletions
|
@ -3195,6 +3195,7 @@ void intel_hpd_init(struct drm_i915_private *dev_priv);
|
|||
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);
|
||||
|
||||
|
|
|
@ -5916,26 +5916,22 @@ intel_dp_init_connector_port_info(struct intel_digital_port *intel_dig_port)
|
|||
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;
|
||||
|
|
|
@ -1920,23 +1920,9 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
|
|||
|
||||
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;
|
||||
|
|
|
@ -101,6 +101,32 @@ enum port intel_hpd_pin_to_port(enum hpd_pin pin)
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
|
||||
|
|
Loading…
Reference in a new issue