OSDN Git Service

drm/i915/bios: add intel_bios_port_supports_*()
authorJani Nikula <jani.nikula@intel.com>
Fri, 17 Jan 2020 14:29:27 +0000 (16:29 +0200)
committerJani Nikula <jani.nikula@intel.com>
Tue, 21 Jan 2020 08:51:44 +0000 (10:51 +0200)
Don't access i915->vbt.ddi_port_info[] directly.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/21549ff74e8e5746917b0e2be4afbfb141e26657.1579270868.git.jani.nikula@intel.com
drivers/gpu/drm/i915/display/intel_bios.c
drivers/gpu/drm/i915/display/intel_bios.h
drivers/gpu/drm/i915/display/intel_ddi.c

index 23cbbe3..4c69253 100644 (file)
@@ -2606,3 +2606,29 @@ int intel_bios_alternate_ddc_pin(struct intel_encoder *encoder)
 
        return i915->vbt.ddi_port_info[encoder->port].alternate_ddc_pin;
 }
+
+bool intel_bios_port_supports_dvi(struct drm_i915_private *i915, enum port port)
+{
+       return i915->vbt.ddi_port_info[port].supports_dvi;
+}
+
+bool intel_bios_port_supports_hdmi(struct drm_i915_private *i915, enum port port)
+{
+       return i915->vbt.ddi_port_info[port].supports_hdmi;
+}
+
+bool intel_bios_port_supports_dp(struct drm_i915_private *i915, enum port port)
+{
+       return i915->vbt.ddi_port_info[port].supports_dp;
+}
+
+bool intel_bios_port_supports_typec_usb(struct drm_i915_private *i915,
+                                       enum port port)
+{
+       return i915->vbt.ddi_port_info[port].supports_typec_usb;
+}
+
+bool intel_bios_port_supports_tbt(struct drm_i915_private *i915, enum port port)
+{
+       return i915->vbt.ddi_port_info[port].supports_tbt;
+}
index 077828d..c17199c 100644 (file)
@@ -253,5 +253,10 @@ int intel_bios_dp_boost_level(struct intel_encoder *encoder);
 int intel_bios_hdmi_boost_level(struct intel_encoder *encoder);
 int intel_bios_dp_max_link_rate(struct intel_encoder *encoder);
 int intel_bios_alternate_ddc_pin(struct intel_encoder *encoder);
+bool intel_bios_port_supports_dvi(struct drm_i915_private *i915, enum port port);
+bool intel_bios_port_supports_hdmi(struct drm_i915_private *i915, enum port port);
+bool intel_bios_port_supports_dp(struct drm_i915_private *i915, enum port port);
+bool intel_bios_port_supports_typec_usb(struct drm_i915_private *i915, enum port port);
+bool intel_bios_port_supports_tbt(struct drm_i915_private *i915, enum port port);
 
 #endif /* _INTEL_BIOS_H_ */
index 3697fa0..18a8186 100644 (file)
@@ -4780,15 +4780,14 @@ intel_ddi_max_lanes(struct intel_digital_port *intel_dport)
 
 void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
 {
-       struct ddi_vbt_port_info *port_info =
-               &dev_priv->vbt.ddi_port_info[port];
        struct intel_digital_port *intel_dig_port;
        struct intel_encoder *encoder;
        bool init_hdmi, init_dp, init_lspcon = false;
        enum phy phy = intel_port_to_phy(dev_priv, port);
 
-       init_hdmi = port_info->supports_dvi || port_info->supports_hdmi;
-       init_dp = port_info->supports_dp;
+       init_hdmi = intel_bios_port_supports_dvi(dev_priv, port) ||
+               intel_bios_port_supports_hdmi(dev_priv, port);
+       init_dp = intel_bios_port_supports_dp(dev_priv, port);
 
        if (intel_bios_is_lspcon_present(dev_priv, port)) {
                /*
@@ -4849,8 +4848,9 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
        intel_dig_port->aux_ch = intel_bios_port_aux_ch(dev_priv, port);
 
        if (intel_phy_is_tc(dev_priv, phy)) {
-               bool is_legacy = !port_info->supports_typec_usb &&
-                                !port_info->supports_tbt;
+               bool is_legacy =
+                       !intel_bios_port_supports_typec_usb(dev_priv, port) &&
+                       !intel_bios_port_supports_tbt(dev_priv, port);
 
                intel_tc_port_init(intel_dig_port, is_legacy);