Add a single point of truth for figuring out the primary/secondary crtc for bigjoiner instead of duplicating the magic pipe +/- 1 in multiple places. Also fix the pipe validity checks to properly take non-contiguous pipes into account. The current checks may theoretically overflow i915->pipe_to_crtc_mapping[pipe], albeit with a warning, due to fused off pipes, as INTEL_NUM_PIPES() returns the actual number of pipes on the platform, and the check is for INTEL_NUM_PIPES() == pipe + 1. Prefer primary/secondary terminology going forward. v2: - Improved abstractions for pipe validity etc. Fixes:8a029c113b
("drm/i915/dp: Modify VDSC helpers to configure DSC for Bigjoiner slave") Fixes:d961eb20ad
("drm/i915/bigjoiner: atomic commit changes for uncompressed joiner") Cc: Animesh Manna <animesh.manna@intel.com> Cc: Manasi Navare <manasi.d.navare@intel.com> Cc: Vandita Kulkarni <vandita.kulkarni@intel.com> Reviewed-by: Manasi Navare <manasi.dl.navare@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210610090528.20511-1-jani.nikula@intel.com (cherry picked from commit17203224f0
) Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
27 lines
1,009 B
C
27 lines
1,009 B
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2019 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __INTEL_VDSC_H__
|
|
#define __INTEL_VDSC_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
struct intel_encoder;
|
|
struct intel_crtc_state;
|
|
|
|
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(struct intel_encoder *encoder,
|
|
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_encoder *encoder,
|
|
struct intel_crtc_state *pipe_config);
|
|
void intel_uncompressed_joiner_get_config(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(const struct intel_crtc_state *crtc_state);
|
|
struct intel_crtc *intel_dsc_get_bigjoiner_secondary(const struct intel_crtc *primary_crtc);
|
|
|
|
#endif /* __INTEL_VDSC_H__ */
|