mirror of
https://github.com/torvalds/linux.git
synced 2026-04-21 08:13:56 -04:00
Track whether DSC is enabled on any CRTC on a link. On DP-SST (and DSI) this will always match the CRTC's DSC state, those links having only a single stream (aka CRTC). For instance, on DP-MST if DSC is enabled for CRTC#0, but disabled for CRTC#1, the DSC/FEC state for these CRTCs will be as follows: CRTC#0: - compression_enable = true - compression_enabled_on_link = true - fec_enable = true for 8b10b, false for 128b132b CRTC#1: - compression_enable = false - compression_enabled_on_link = true - fec_enable = true for 8b10b, false for 128b132b This patch only sets compression_enabled_on_link for CRTC#0 above and enables FEC on CRTC#0 if DSC was enabled on any other CRTC on the 8b10b MST link. A follow-up change will make sure that the state of all the CRTCs (CRTC#1 above) on an MST link is recomputed if DSC gets enabled on any CRTC, setting compression_enabled_on_link and fec_enable for these. Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Jouni Högander <jouni.hogander@intel.com> Link: https://lore.kernel.org/r/20251015161934.262108-6-imre.deak@intel.com
40 lines
1.6 KiB
C
40 lines
1.6 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2019 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __INTEL_VDSC_H__
|
|
#define __INTEL_VDSC_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
struct drm_printer;
|
|
|
|
enum transcoder;
|
|
struct intel_crtc;
|
|
struct intel_crtc_state;
|
|
struct intel_encoder;
|
|
|
|
bool intel_dsc_source_support(const struct intel_crtc_state *crtc_state);
|
|
void intel_uncompressed_joiner_enable(const struct intel_crtc_state *crtc_state);
|
|
void intel_dsc_enable(const struct intel_crtc_state *crtc_state);
|
|
void intel_dsc_disable(const struct intel_crtc_state *crtc_state);
|
|
int intel_dsc_compute_params(struct intel_crtc_state *pipe_config);
|
|
void intel_dsc_enable_on_crtc(struct intel_crtc_state *crtc_state);
|
|
bool intel_dsc_enabled_on_link(const struct intel_crtc_state *crtc_state);
|
|
void intel_dsc_get_config(struct intel_crtc_state *crtc_state);
|
|
enum intel_display_power_domain
|
|
intel_dsc_power_domain(struct intel_crtc *crtc, enum transcoder cpu_transcoder);
|
|
struct intel_crtc *intel_dsc_get_bigjoiner_secondary(const struct intel_crtc *primary_crtc);
|
|
int intel_dsc_get_num_vdsc_instances(const struct intel_crtc_state *crtc_state);
|
|
void intel_dsc_dsi_pps_write(struct intel_encoder *encoder,
|
|
const struct intel_crtc_state *crtc_state);
|
|
void intel_dsc_dp_pps_write(struct intel_encoder *encoder,
|
|
const struct intel_crtc_state *crtc_state);
|
|
void intel_vdsc_state_dump(struct drm_printer *p, int indent,
|
|
const struct intel_crtc_state *crtc_state);
|
|
int intel_vdsc_min_cdclk(const struct intel_crtc_state *crtc_state);
|
|
unsigned int intel_vdsc_prefill_lines(const struct intel_crtc_state *crtc_state);
|
|
|
|
#endif /* __INTEL_VDSC_H__ */
|