mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
Revert "drm/i915/bios: gracefully disable dual eDP for now"
This reverts commit05734ca2a8. It's not graceful, instead it leads to boot time warning splats in the case it is supposed to handle gracefully. Apparently the BIOS/GOP enabling the port we end up skipping leads to state readout problems. Back to the drawing board. References: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_21255/bat-adlp-4/boot0.txt Fixes:05734ca2a8("drm/i915/bios: gracefully disable dual eDP for now") Cc: José Roberto de Souza <jose.souza@intel.com> Cc: Uma Shankar <uma.shankar@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Swati Sharma <swati2.sharma@intel.com> Reviewed-by: José Roberto de Souza <jose.souza@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20211019114334.24643-1-jani.nikula@intel.com
This commit is contained in:
parent
1af10a97b3
commit
171c555c2c
|
|
@ -1930,50 +1930,6 @@ static int _intel_bios_max_tmds_clock(const struct intel_bios_encoder_data *devd
|
|||
}
|
||||
}
|
||||
|
||||
static enum port get_edp_port(struct drm_i915_private *i915)
|
||||
{
|
||||
const struct intel_bios_encoder_data *devdata;
|
||||
enum port port;
|
||||
|
||||
for_each_port(port) {
|
||||
devdata = i915->vbt.ports[port];
|
||||
|
||||
if (devdata && intel_bios_encoder_supports_edp(devdata))
|
||||
return port;
|
||||
}
|
||||
|
||||
return PORT_NONE;
|
||||
}
|
||||
|
||||
/*
|
||||
* FIXME: The power sequencer and backlight code currently do not support more
|
||||
* than one set registers, at least not on anything other than VLV/CHV. It will
|
||||
* clobber the registers. As a temporary workaround, gracefully prevent more
|
||||
* than one eDP from being registered.
|
||||
*/
|
||||
static void sanitize_dual_edp(struct intel_bios_encoder_data *devdata,
|
||||
enum port port)
|
||||
{
|
||||
struct drm_i915_private *i915 = devdata->i915;
|
||||
struct child_device_config *child = &devdata->child;
|
||||
enum port p;
|
||||
|
||||
/* CHV might not clobber PPS registers. */
|
||||
if (IS_CHERRYVIEW(i915))
|
||||
return;
|
||||
|
||||
p = get_edp_port(i915);
|
||||
if (p == PORT_NONE)
|
||||
return;
|
||||
|
||||
drm_dbg_kms(&i915->drm, "both ports %c and %c configured as eDP, "
|
||||
"disabling port %c eDP\n", port_name(p), port_name(port),
|
||||
port_name(port));
|
||||
|
||||
child->device_type &= ~DEVICE_TYPE_DISPLAYPORT_OUTPUT;
|
||||
child->device_type &= ~DEVICE_TYPE_INTERNAL_CONNECTOR;
|
||||
}
|
||||
|
||||
static bool is_port_valid(struct drm_i915_private *i915, enum port port)
|
||||
{
|
||||
/*
|
||||
|
|
@ -2031,9 +1987,6 @@ static void parse_ddi_port(struct drm_i915_private *i915,
|
|||
supports_typec_usb, supports_tbt,
|
||||
devdata->dsc != NULL);
|
||||
|
||||
if (is_edp)
|
||||
sanitize_dual_edp(devdata, port);
|
||||
|
||||
if (is_dvi)
|
||||
sanitize_ddc_pin(devdata, port);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user