summaryrefslogtreecommitdiff
path: root/sys/dev/pci/drm/i915
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2022-04-11 03:57:40 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2022-04-11 03:57:40 +0000
commit064e82c346ef3be59ba91516c2ca016ff36bf0a8 (patch)
tree47379704489ff4cd4ed61192da0b8bb84191a185 /sys/dev/pci/drm/i915
parent3ba6d7bcc85607a04e08184a471519fbe6155b66 (diff)
drm/i915/display: Fix HPD short pulse handling for eDP
From Jose Souza 7ff346ee019bcf3b008a56a43b7aac45e771479b in linux 5.15.y/5.15.33 3a84fd1ed53582b31e843a152ee3219e9e4ccb8c in mainline linux
Diffstat (limited to 'sys/dev/pci/drm/i915')
-rw-r--r--sys/dev/pci/drm/i915/display/intel_dp.c2
-rw-r--r--sys/dev/pci/drm/i915/display/intel_pps.c6
-rw-r--r--sys/dev/pci/drm/i915/display/intel_pps.h2
3 files changed, 5 insertions, 5 deletions
diff --git a/sys/dev/pci/drm/i915/display/intel_dp.c b/sys/dev/pci/drm/i915/display/intel_dp.c
index b5fc1bc3c42..465cb36bb22 100644
--- a/sys/dev/pci/drm/i915/display/intel_dp.c
+++ b/sys/dev/pci/drm/i915/display/intel_dp.c
@@ -4601,7 +4601,7 @@ intel_dp_hpd_pulse(struct intel_digital_port *dig_port, bool long_hpd)
struct intel_dp *intel_dp = &dig_port->dp;
if (dig_port->base.type == INTEL_OUTPUT_EDP &&
- (long_hpd || !intel_pps_have_power(intel_dp))) {
+ (long_hpd || !intel_pps_have_panel_power_or_vdd(intel_dp))) {
/*
* vdd off can generate a long/short pulse on eDP which
* would require vdd on to handle it, and thus we
diff --git a/sys/dev/pci/drm/i915/display/intel_pps.c b/sys/dev/pci/drm/i915/display/intel_pps.c
index 697ff05dee1..16e6c11213c 100644
--- a/sys/dev/pci/drm/i915/display/intel_pps.c
+++ b/sys/dev/pci/drm/i915/display/intel_pps.c
@@ -1074,14 +1074,14 @@ static void intel_pps_vdd_sanitize(struct intel_dp *intel_dp)
edp_panel_vdd_schedule_off(intel_dp);
}
-bool intel_pps_have_power(struct intel_dp *intel_dp)
+bool intel_pps_have_panel_power_or_vdd(struct intel_dp *intel_dp)
{
intel_wakeref_t wakeref;
bool have_power = false;
with_intel_pps_lock(intel_dp, wakeref) {
- have_power = edp_have_panel_power(intel_dp) &&
- edp_have_panel_vdd(intel_dp);
+ have_power = edp_have_panel_power(intel_dp) ||
+ edp_have_panel_vdd(intel_dp);
}
return have_power;
diff --git a/sys/dev/pci/drm/i915/display/intel_pps.h b/sys/dev/pci/drm/i915/display/intel_pps.h
index fbbcca782e7..9fe7be4fe86 100644
--- a/sys/dev/pci/drm/i915/display/intel_pps.h
+++ b/sys/dev/pci/drm/i915/display/intel_pps.h
@@ -36,7 +36,7 @@ void intel_pps_vdd_on(struct intel_dp *intel_dp);
void intel_pps_on(struct intel_dp *intel_dp);
void intel_pps_off(struct intel_dp *intel_dp);
void intel_pps_vdd_off_sync(struct intel_dp *intel_dp);
-bool intel_pps_have_power(struct intel_dp *intel_dp);
+bool intel_pps_have_panel_power_or_vdd(struct intel_dp *intel_dp);
void intel_pps_wait_power_cycle(struct intel_dp *intel_dp);
void intel_pps_init(struct intel_dp *intel_dp);