mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-08-22 00:42:01 +02:00

Panel Self Refresh on eDP requires the AUX IO power to be enabled whenever the output (main link) is enabled. This is required by the AUX_PHY_WAKE/ML_PHY_LOCK signaling initiated by the HW automatically to re-enable the main link after it got disabled in power saving states (see eDP v1.4b, sections 5.1, 6.1.3.3.1.1). The Panel Replay mode on non-eDP outputs on the other hand is only supported by keeping the main link active, thus not requiring the above AUX_PHY_WAKE/ML_PHY_LOCK signaling (eDP v1.4b, section 6.1.3.3.1.2). Thus enabling the AUX IO power for this case is not required either. Based on the above enable the AUX IO power only for eDP/PSR outputs. Bspec: 49274, 53370 v2: - Add a TODO comment to adjust the requirement for AUX IO based on whether the ALPM/main-link off mode gets enabled. (Rodrigo) Cc: Animesh Manna <animesh.manna@intel.com> Fixes:b8cf5b5d26
("drm/i915/panelreplay: Initializaton and compute config for panel replay") Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240910111847.2995725-1-imre.deak@intel.com (cherry picked from commitf7c2ed9d4c
) Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
68 lines
2.6 KiB
C
68 lines
2.6 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2019 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __INTEL_PSR_H__
|
|
#define __INTEL_PSR_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
enum fb_op_origin;
|
|
struct drm_connector;
|
|
struct drm_connector_state;
|
|
struct intel_atomic_state;
|
|
struct intel_connector;
|
|
struct intel_crtc;
|
|
struct intel_crtc_state;
|
|
struct intel_display;
|
|
struct intel_dp;
|
|
struct intel_encoder;
|
|
struct intel_plane;
|
|
struct intel_plane_state;
|
|
|
|
#define CAN_PANEL_REPLAY(intel_dp) ((intel_dp)->psr.sink_panel_replay_support && \
|
|
(intel_dp)->psr.source_panel_replay_support)
|
|
|
|
bool intel_encoder_can_psr(struct intel_encoder *encoder);
|
|
bool intel_psr_needs_aux_io_power(struct intel_encoder *encoder,
|
|
const struct intel_crtc_state *crtc_state);
|
|
void intel_psr_init_dpcd(struct intel_dp *intel_dp);
|
|
void intel_psr_enable_sink(struct intel_dp *intel_dp,
|
|
const struct intel_crtc_state *crtc_state);
|
|
void intel_psr_pre_plane_update(struct intel_atomic_state *state,
|
|
struct intel_crtc *crtc);
|
|
void intel_psr_post_plane_update(struct intel_atomic_state *state,
|
|
struct intel_crtc *crtc);
|
|
void intel_psr_disable(struct intel_dp *intel_dp,
|
|
const struct intel_crtc_state *old_crtc_state);
|
|
int intel_psr_debug_set(struct intel_dp *intel_dp, u64 value);
|
|
void intel_psr_invalidate(struct intel_display *display,
|
|
unsigned frontbuffer_bits,
|
|
enum fb_op_origin origin);
|
|
void intel_psr_flush(struct intel_display *display,
|
|
unsigned frontbuffer_bits,
|
|
enum fb_op_origin origin);
|
|
void intel_psr_init(struct intel_dp *intel_dp);
|
|
void intel_psr_compute_config(struct intel_dp *intel_dp,
|
|
struct intel_crtc_state *crtc_state,
|
|
struct drm_connector_state *conn_state);
|
|
void intel_psr_get_config(struct intel_encoder *encoder,
|
|
struct intel_crtc_state *pipe_config);
|
|
void intel_psr_irq_handler(struct intel_dp *intel_dp, u32 psr_iir);
|
|
void intel_psr_short_pulse(struct intel_dp *intel_dp);
|
|
void intel_psr_wait_for_idle_locked(const struct intel_crtc_state *new_crtc_state);
|
|
bool intel_psr_enabled(struct intel_dp *intel_dp);
|
|
int intel_psr2_sel_fetch_update(struct intel_atomic_state *state,
|
|
struct intel_crtc *crtc);
|
|
void intel_psr2_program_trans_man_trk_ctl(const struct intel_crtc_state *crtc_state);
|
|
void intel_psr_pause(struct intel_dp *intel_dp);
|
|
void intel_psr_resume(struct intel_dp *intel_dp);
|
|
|
|
void intel_psr_lock(const struct intel_crtc_state *crtc_state);
|
|
void intel_psr_unlock(const struct intel_crtc_state *crtc_state);
|
|
void intel_psr_connector_debugfs_add(struct intel_connector *connector);
|
|
void intel_psr_debugfs_register(struct intel_display *display);
|
|
|
|
#endif /* __INTEL_PSR_H__ */
|