drm/i915/vbt: split out defaults that are set when there is no VBT
The main thing are the DDI ports. If there's a VBT that says there are no outputs, we should trust that, and not have semi-random defaults. Unfortunately, the defaults have resulted in some Chromebooks without VBT to rely on this behaviour, so we split out the defaults for the missing VBT case. Reviewed-by: Manasi Navare <manasi.d.navare@intel.com> Cc: Manasi Navare <manasi.d.navare@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/95c26079ff640d43f53b944f17e9fc356b36daec.1489152288.git.jani.nikula@intel.com
This commit is contained in:
parent
44e921d4a1
commit
bb1d132935
@ -1341,6 +1341,7 @@ parse_device_mapping(struct drm_i915_private *dev_priv,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Common defaults which may be overridden by VBT. */
|
||||||
static void
|
static void
|
||||||
init_vbt_defaults(struct drm_i915_private *dev_priv)
|
init_vbt_defaults(struct drm_i915_private *dev_priv)
|
||||||
{
|
{
|
||||||
@ -1377,6 +1378,18 @@ init_vbt_defaults(struct drm_i915_private *dev_priv)
|
|||||||
&dev_priv->vbt.ddi_port_info[port];
|
&dev_priv->vbt.ddi_port_info[port];
|
||||||
|
|
||||||
info->hdmi_level_shift = HDMI_LEVEL_SHIFT_UNKNOWN;
|
info->hdmi_level_shift = HDMI_LEVEL_SHIFT_UNKNOWN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Defaults to initialize only if there is no VBT. */
|
||||||
|
static void
|
||||||
|
init_vbt_missing_defaults(struct drm_i915_private *dev_priv)
|
||||||
|
{
|
||||||
|
enum port port;
|
||||||
|
|
||||||
|
for (port = PORT_A; port < I915_MAX_PORTS; port++) {
|
||||||
|
struct ddi_vbt_port_info *info =
|
||||||
|
&dev_priv->vbt.ddi_port_info[port];
|
||||||
|
|
||||||
info->supports_dvi = (port != PORT_A && port != PORT_E);
|
info->supports_dvi = (port != PORT_A && port != PORT_E);
|
||||||
info->supports_hdmi = info->supports_dvi;
|
info->supports_hdmi = info->supports_dvi;
|
||||||
@ -1516,8 +1529,10 @@ void intel_bios_init(struct drm_i915_private *dev_priv)
|
|||||||
parse_ddi_ports(dev_priv, bdb);
|
parse_ddi_ports(dev_priv, bdb);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
if (!vbt)
|
if (!vbt) {
|
||||||
DRM_INFO("Failed to find VBIOS tables (VBT)\n");
|
DRM_INFO("Failed to find VBIOS tables (VBT)\n");
|
||||||
|
init_vbt_missing_defaults(dev_priv);
|
||||||
|
}
|
||||||
|
|
||||||
if (bios)
|
if (bios)
|
||||||
pci_unmap_rom(pdev, bios);
|
pci_unmap_rom(pdev, bios);
|
||||||
|
Loading…
Reference in New Issue
Block a user