diff options
author | Shashank Sharma <shashank.sharma@intel.com> | 2016-10-14 10:26:50 -0400 |
---|---|---|
committer | Jani Nikula <jani.nikula@intel.com> | 2016-10-18 05:42:54 -0400 |
commit | 6389dd83768485a251dc0c5252dbc9a96f86ca53 (patch) | |
tree | dadbec0d3b74b0539ee50f015c64842e3a2a884b /drivers/gpu/drm/i915/intel_bios.c | |
parent | dbe9e61b8e4306df24b3e8370a62f7954a81ff5d (diff) |
drm/i915: Parse VBT data for lspcon
Many GEN9 boards come with on-board lspcon cards.
Fot these boards, VBT configuration should properly point out
if a particular port contains lspcon device, so that driver can
initialize it properly.
This patch adds a utility function, which checks the VBT flag
for lspcon bit, and tells us if a port is configured to have a
lspcon device or not.
V2: Fixed review comments from Ville
- Do not forget PORT_D while checking lspcon for GEN9
V3: Addressed review comments from Rodrigo
- Create a HAS_LSPCON() macro for better use case handling.
- Do not dump warnings for non-gen-9 platforms, it will be noise.
V4: Rebase
V5: Rebase
V6: Pass dev_priv to HAS_LSPCON() macro
Signed-off-by: Shashank Sharma <shashank.sharma@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1476455212-27893-4-git-send-email-shashank.sharma@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/intel_bios.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_bios.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c index 83667e8cdd6b..32e1def6a9ef 100644 --- a/drivers/gpu/drm/i915/intel_bios.c +++ b/drivers/gpu/drm/i915/intel_bios.c | |||
@@ -1763,3 +1763,52 @@ intel_bios_is_port_hpd_inverted(struct drm_i915_private *dev_priv, | |||
1763 | 1763 | ||
1764 | return false; | 1764 | return false; |
1765 | } | 1765 | } |
1766 | |||
1767 | /** | ||
1768 | * intel_bios_is_lspcon_present - if LSPCON is attached on %port | ||
1769 | * @dev_priv: i915 device instance | ||
1770 | * @port: port to check | ||
1771 | * | ||
1772 | * Return true if LSPCON is present on this port | ||
1773 | */ | ||
1774 | bool | ||
1775 | intel_bios_is_lspcon_present(struct drm_i915_private *dev_priv, | ||
1776 | enum port port) | ||
1777 | { | ||
1778 | int i; | ||
1779 | |||
1780 | if (!HAS_LSPCON(dev_priv)) | ||
1781 | return false; | ||
1782 | |||
1783 | for (i = 0; i < dev_priv->vbt.child_dev_num; i++) { | ||
1784 | if (!dev_priv->vbt.child_dev[i].common.lspcon) | ||
1785 | continue; | ||
1786 | |||
1787 | switch (dev_priv->vbt.child_dev[i].common.dvo_port) { | ||
1788 | case DVO_PORT_DPA: | ||
1789 | case DVO_PORT_HDMIA: | ||
1790 | if (port == PORT_A) | ||
1791 | return true; | ||
1792 | break; | ||
1793 | case DVO_PORT_DPB: | ||
1794 | case DVO_PORT_HDMIB: | ||
1795 | if (port == PORT_B) | ||
1796 | return true; | ||
1797 | break; | ||
1798 | case DVO_PORT_DPC: | ||
1799 | case DVO_PORT_HDMIC: | ||
1800 | if (port == PORT_C) | ||
1801 | return true; | ||
1802 | break; | ||
1803 | case DVO_PORT_DPD: | ||
1804 | case DVO_PORT_HDMID: | ||
1805 | if (port == PORT_D) | ||
1806 | return true; | ||
1807 | break; | ||
1808 | default: | ||
1809 | break; | ||
1810 | } | ||
1811 | } | ||
1812 | |||
1813 | return false; | ||
1814 | } | ||