drm/i915: Set invert bit for hpd based on VBT
This patch sets the invert bit for hpd detection for each port based on VBT configuration. Since each AOB can be designed to depend on invert bit or not, it is expected if an AOB requires invert bit, the user will set respective bit in VBT. v2: Separated VBT parsing from the rest of the logic. (Jani) v3: Moved setting invert bit logic to bxt_hpd_irq_setup() and changed its logic to avoid looping twice. (Ville) v4: Changed the logic to mask out the bits first and then set them to remove need of temporary variable. (Ville) v5: Moved defines to existing set of defines for the register and added required breaks. (Ville) Signed-off-by: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com> Signed-off-by: Durgadoss R <durgadoss.r@intel.com> Signed-off-by: Shubhangi Shrivastava <shubhangi.shrivastava@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> [Jani: fixed some checkpatch noise, added kernel-doc.] Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1459420907-11383-2-git-send-email-shubhangi.shrivastava@intel.com
This commit is contained in:

committed by
Jani Nikula

parent
4e27bd5073
commit
d252bf68b7
@@ -3500,6 +3500,26 @@ static void bxt_hpd_irq_setup(struct drm_device *dev)
|
||||
hotplug = I915_READ(PCH_PORT_HOTPLUG);
|
||||
hotplug |= PORTC_HOTPLUG_ENABLE | PORTB_HOTPLUG_ENABLE |
|
||||
PORTA_HOTPLUG_ENABLE;
|
||||
|
||||
DRM_DEBUG_KMS("Invert bit setting: hp_ctl:%x hp_port:%x\n",
|
||||
hotplug, enabled_irqs);
|
||||
hotplug &= ~BXT_DDI_HPD_INVERT_MASK;
|
||||
|
||||
/*
|
||||
* For BXT invert bit has to be set based on AOB design
|
||||
* for HPD detection logic, update it based on VBT fields.
|
||||
*/
|
||||
|
||||
if ((enabled_irqs & BXT_DE_PORT_HP_DDIA) &&
|
||||
intel_bios_is_port_hpd_inverted(dev_priv, PORT_A))
|
||||
hotplug |= BXT_DDIA_HPD_INVERT;
|
||||
if ((enabled_irqs & BXT_DE_PORT_HP_DDIB) &&
|
||||
intel_bios_is_port_hpd_inverted(dev_priv, PORT_B))
|
||||
hotplug |= BXT_DDIB_HPD_INVERT;
|
||||
if ((enabled_irqs & BXT_DE_PORT_HP_DDIC) &&
|
||||
intel_bios_is_port_hpd_inverted(dev_priv, PORT_C))
|
||||
hotplug |= BXT_DDIC_HPD_INVERT;
|
||||
|
||||
I915_WRITE(PCH_PORT_HOTPLUG, hotplug);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user