mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-17 02:36:21 +00:00
- Only check eDP HPD when AUX CH is shared.
-----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEEbSBwaO7dZQkcLOKj+mJfZA7rE8oFAmUC/fQACgkQ+mJfZA7r E8opGQf9EK0NS4kbREACCnLwZDHhZteTil6DysJzG4bydMBWa04Dbb7bsSW8hMNB zb+N2Gne6U3qOdD/lH9ZStSRCT3F9ZN94w/yTfErc76D3mfEQyy40wx+2cnKYEld 0Rm8W3j/dXkC7uHKkUWwfPSq0mx+oA1WWYCrHo4BQDTbfJpRxFWzuZoDbIREtF4L YoQamuaEa8Y3Zt0YF2rNg31qKyQaUR0Wrxo/y0y8IEZ9lK1zwX1vasrb8uLIIzoK u+8VfQx56AA+TJJ/1Tg5FxnC8dBEO/R/QRPjbK4s4UxoGpIlC1DwLJK4XoQfrdoC EsKbsSkHa/yMaEiersW6Qw3gvoj/nA== =aYeP -----END PGP SIGNATURE----- Merge tag 'drm-intel-fixes-2023-09-14' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes - Only check eDP HPD when AUX CH is shared. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/ZQL+NqtIZH5F/Nxr@intel.com
This commit is contained in:
commit
c6fbd2b0ca
@ -3540,6 +3540,27 @@ enum aux_ch intel_bios_dp_aux_ch(const struct intel_bios_encoder_data *devdata)
|
||||
return map_aux_ch(devdata->i915, devdata->child.aux_channel);
|
||||
}
|
||||
|
||||
bool intel_bios_dp_has_shared_aux_ch(const struct intel_bios_encoder_data *devdata)
|
||||
{
|
||||
struct drm_i915_private *i915;
|
||||
u8 aux_channel;
|
||||
int count = 0;
|
||||
|
||||
if (!devdata || !devdata->child.aux_channel)
|
||||
return false;
|
||||
|
||||
i915 = devdata->i915;
|
||||
aux_channel = devdata->child.aux_channel;
|
||||
|
||||
list_for_each_entry(devdata, &i915->display.vbt.display_devices, node) {
|
||||
if (intel_bios_encoder_supports_dp(devdata) &&
|
||||
aux_channel == devdata->child.aux_channel)
|
||||
count++;
|
||||
}
|
||||
|
||||
return count > 1;
|
||||
}
|
||||
|
||||
int intel_bios_dp_boost_level(const struct intel_bios_encoder_data *devdata)
|
||||
{
|
||||
if (!devdata || devdata->i915->display.vbt.version < 196 || !devdata->child.iboost)
|
||||
|
@ -273,6 +273,7 @@ enum aux_ch intel_bios_dp_aux_ch(const struct intel_bios_encoder_data *devdata);
|
||||
int intel_bios_dp_boost_level(const struct intel_bios_encoder_data *devdata);
|
||||
int intel_bios_dp_max_lane_count(const struct intel_bios_encoder_data *devdata);
|
||||
int intel_bios_dp_max_link_rate(const struct intel_bios_encoder_data *devdata);
|
||||
bool intel_bios_dp_has_shared_aux_ch(const struct intel_bios_encoder_data *devdata);
|
||||
int intel_bios_hdmi_boost_level(const struct intel_bios_encoder_data *devdata);
|
||||
int intel_bios_hdmi_ddc_pin(const struct intel_bios_encoder_data *devdata);
|
||||
int intel_bios_hdmi_level_shift(const struct intel_bios_encoder_data *devdata);
|
||||
|
@ -5512,8 +5512,13 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
|
||||
/*
|
||||
* VBT and straps are liars. Also check HPD as that seems
|
||||
* to be the most reliable piece of information available.
|
||||
*
|
||||
* ... expect on devices that forgot to hook HPD up for eDP
|
||||
* (eg. Acer Chromebook C710), so we'll check it only if multiple
|
||||
* ports are attempting to use the same AUX CH, according to VBT.
|
||||
*/
|
||||
if (!intel_digital_port_connected(encoder)) {
|
||||
if (intel_bios_dp_has_shared_aux_ch(encoder->devdata) &&
|
||||
!intel_digital_port_connected(encoder)) {
|
||||
/*
|
||||
* If this fails, presume the DPCD answer came
|
||||
* from some other port using the same AUX CH.
|
||||
|
Loading…
x
Reference in New Issue
Block a user