mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-23 10:12:24 +00:00
Changes in Dynamic Range and Mastering infoframe should not trigger a full modeset. Therefore, allow fastset. DP SDP programming is already hooked up in the fastset flow but HDMI AVI infoframe update is not, add it. Any other infoframe that can be fastset should be added to the helper intel_hdmi_fastset_infoframes(). v3: - Create a wrapper intel_ddi_update_pipe_hdmi to stick to uniform naming (Jani) - Do not disable HDMI AVI infoframe if already disabled (Uma) v2: - Update HDMI AVI infoframe during fastset. Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com> Reviewed-by: Uma Shankar <uma.shankar@intel.com> Signed-off-by: Animesh Manna <animesh.manna@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241023044122.3889137-1-chaitanya.kumar.borah@intel.com
66 lines
2.6 KiB
C
66 lines
2.6 KiB
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2019 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __INTEL_HDMI_H__
|
|
#define __INTEL_HDMI_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
enum hdmi_infoframe_type;
|
|
enum intel_output_format;
|
|
enum port;
|
|
struct drm_connector;
|
|
struct drm_connector_state;
|
|
struct drm_encoder;
|
|
struct drm_i915_private;
|
|
struct intel_connector;
|
|
struct intel_crtc_state;
|
|
struct intel_digital_port;
|
|
struct intel_encoder;
|
|
struct intel_hdmi;
|
|
union hdmi_infoframe;
|
|
|
|
void intel_hdmi_init_connector(struct intel_digital_port *dig_port,
|
|
struct intel_connector *intel_connector);
|
|
bool intel_hdmi_compute_has_hdmi_sink(struct intel_encoder *encoder,
|
|
const struct intel_crtc_state *crtc_state,
|
|
const struct drm_connector_state *conn_state);
|
|
int intel_hdmi_compute_config(struct intel_encoder *encoder,
|
|
struct intel_crtc_state *pipe_config,
|
|
struct drm_connector_state *conn_state);
|
|
void intel_hdmi_encoder_shutdown(struct intel_encoder *encoder);
|
|
bool intel_hdmi_handle_sink_scrambling(struct intel_encoder *encoder,
|
|
struct drm_connector *connector,
|
|
bool high_tmds_clock_ratio,
|
|
bool scrambling);
|
|
void intel_dp_dual_mode_set_tmds_output(struct intel_hdmi *hdmi, bool enable);
|
|
void intel_infoframe_init(struct intel_digital_port *dig_port);
|
|
u32 intel_hdmi_infoframes_enabled(struct intel_encoder *encoder,
|
|
const struct intel_crtc_state *crtc_state);
|
|
u32 intel_hdmi_infoframe_enable(unsigned int type);
|
|
void intel_hdmi_read_gcp_infoframe(struct intel_encoder *encoder,
|
|
struct intel_crtc_state *crtc_state);
|
|
void intel_hdmi_fastset_infoframes(struct intel_encoder *encoder,
|
|
const struct intel_crtc_state *crtc_state,
|
|
const struct drm_connector_state *conn_state);
|
|
void intel_read_infoframe(struct intel_encoder *encoder,
|
|
const struct intel_crtc_state *crtc_state,
|
|
enum hdmi_infoframe_type type,
|
|
union hdmi_infoframe *frame);
|
|
bool intel_hdmi_limited_color_range(const struct intel_crtc_state *crtc_state,
|
|
const struct drm_connector_state *conn_state);
|
|
bool intel_hdmi_bpc_possible(const struct intel_crtc_state *crtc_state,
|
|
int bpc, bool has_hdmi_sink);
|
|
int intel_hdmi_tmds_clock(int clock, int bpc, enum intel_output_format sink_format);
|
|
int intel_hdmi_dsc_get_bpp(int src_fractional_bpp, int slice_width,
|
|
int num_slices, int output_format, bool hdmi_all_bpp,
|
|
int hdmi_max_chunk_bytes);
|
|
int intel_hdmi_dsc_get_num_slices(const struct intel_crtc_state *crtc_state,
|
|
int src_max_slices, int src_max_slice_width,
|
|
int hdmi_max_slices, int hdmi_throughput);
|
|
int intel_hdmi_dsc_get_slice_height(int vactive);
|
|
|
|
#endif /* __INTEL_HDMI_H__ */
|