Commit13ea6db2cf
("drm/i915/edp: Ignore short pulse when panel powered off") completely broke short pulse handling for eDP as it is usually generated by sink when it is displaying image and there is some error or status that source needs to handle. When power panel is enabled, this state is enough to power aux transactions and VDD override is disabled, so intel_pps_have_power() is always returning false causing short pulses to be ignored. So here better naming this function that intends to check if aux lines are powered to avoid the endless cycle mentioned in the commit being fixed and fixing the check for what it is intended. v2: - renamed to intel_pps_have_panel_power_or_vdd() - fixed indentation Fixes:13ea6db2cf
("drm/i915/edp: Ignore short pulse when panel powered off") Cc: Anshuman Gupta <anshuman.gupta@intel.com> Cc: Jani Nikula <jani.nikula@intel.com> Cc: Uma Shankar <uma.shankar@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220311185149.110527-1-jose.souza@intel.com (cherry picked from commit8f0c1c0949
) Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
55 lines
1.8 KiB
C
55 lines
1.8 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2020 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __INTEL_PPS_H__
|
|
#define __INTEL_PPS_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
#include "intel_wakeref.h"
|
|
|
|
enum pipe;
|
|
struct drm_i915_private;
|
|
struct intel_connector;
|
|
struct intel_crtc_state;
|
|
struct intel_dp;
|
|
struct intel_encoder;
|
|
|
|
intel_wakeref_t intel_pps_lock(struct intel_dp *intel_dp);
|
|
intel_wakeref_t intel_pps_unlock(struct intel_dp *intel_dp, intel_wakeref_t wakeref);
|
|
|
|
#define with_intel_pps_lock(dp, wf) \
|
|
for ((wf) = intel_pps_lock(dp); (wf); (wf) = intel_pps_unlock((dp), (wf)))
|
|
|
|
void intel_pps_backlight_on(struct intel_dp *intel_dp);
|
|
void intel_pps_backlight_off(struct intel_dp *intel_dp);
|
|
void intel_pps_backlight_power(struct intel_connector *connector, bool enable);
|
|
|
|
bool intel_pps_vdd_on_unlocked(struct intel_dp *intel_dp);
|
|
void intel_pps_vdd_off_unlocked(struct intel_dp *intel_dp, bool sync);
|
|
void intel_pps_on_unlocked(struct intel_dp *intel_dp);
|
|
void intel_pps_off_unlocked(struct intel_dp *intel_dp);
|
|
void intel_pps_check_power_unlocked(struct intel_dp *intel_dp);
|
|
|
|
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_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);
|
|
void intel_pps_encoder_reset(struct intel_dp *intel_dp);
|
|
void intel_pps_reset_all(struct drm_i915_private *i915);
|
|
|
|
void vlv_pps_init(struct intel_encoder *encoder,
|
|
const struct intel_crtc_state *crtc_state);
|
|
|
|
void intel_pps_unlock_regs_wa(struct drm_i915_private *i915);
|
|
void intel_pps_setup(struct drm_i915_private *i915);
|
|
|
|
void assert_pps_unlocked(struct drm_i915_private *i915, enum pipe pipe);
|
|
|
|
#endif /* __INTEL_PPS_H__ */
|