#include <drm/display/drm_dp_dual_mode_helper.h>
#include <drm/display/drm_hdmi_helper.h>
#include <drm/drm_atomic_helper.h>
#include <drm/drm_edid.h>
#include "i915_reg.h"
#include "intel_de.h"
#include "intel_display_types.h"
#include "intel_dp.h"
#include "intel_lspcon.h"
#include "intel_hdmi.h"
#define LSPCON_VENDOR_PARADE_OUI …
#define LSPCON_VENDOR_MCA_OUI …
#define DPCD_MCA_LSPCON_HDR_STATUS …
#define DPCD_PARADE_LSPCON_HDR_STATUS …
#define LSPCON_MCA_AVI_IF_WRITE_OFFSET …
#define LSPCON_MCA_AVI_IF_CTRL …
#define LSPCON_MCA_AVI_IF_KICKOFF …
#define LSPCON_MCA_AVI_IF_HANDLED …
#define LSPCON_PARADE_AVI_IF_WRITE_OFFSET …
#define LSPCON_PARADE_AVI_IF_CTRL …
#define LSPCON_PARADE_AVI_IF_KICKOFF …
#define LSPCON_PARADE_AVI_IF_DATA_SIZE …
static struct intel_dp *lspcon_to_intel_dp(struct intel_lspcon *lspcon)
{ … }
static const char *lspcon_mode_name(enum drm_lspcon_mode mode)
{ … }
static bool lspcon_detect_vendor(struct intel_lspcon *lspcon)
{ … }
static u32 get_hdr_status_reg(struct intel_lspcon *lspcon)
{ … }
void lspcon_detect_hdr_capability(struct intel_lspcon *lspcon)
{ … }
static enum drm_lspcon_mode lspcon_get_current_mode(struct intel_lspcon *lspcon)
{ … }
static int lspcon_get_mode_settle_timeout(struct intel_lspcon *lspcon)
{ … }
static enum drm_lspcon_mode lspcon_wait_mode(struct intel_lspcon *lspcon,
enum drm_lspcon_mode mode)
{ … }
static int lspcon_change_mode(struct intel_lspcon *lspcon,
enum drm_lspcon_mode mode)
{ … }
static bool lspcon_wake_native_aux_ch(struct intel_lspcon *lspcon)
{ … }
static bool lspcon_probe(struct intel_lspcon *lspcon)
{ … }
static void lspcon_resume_in_pcon_wa(struct intel_lspcon *lspcon)
{ … }
static bool lspcon_parade_fw_ready(struct drm_dp_aux *aux)
{ … }
static bool _lspcon_parade_write_infoframe_blocks(struct drm_dp_aux *aux,
u8 *avi_buf)
{ … }
static bool _lspcon_write_avi_infoframe_parade(struct drm_dp_aux *aux,
const u8 *frame,
ssize_t len)
{ … }
static bool _lspcon_write_avi_infoframe_mca(struct drm_dp_aux *aux,
const u8 *buffer, ssize_t len)
{ … }
void lspcon_write_infoframe(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
unsigned int type,
const void *frame, ssize_t len)
{ … }
void lspcon_read_infoframe(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
unsigned int type,
void *frame, ssize_t len)
{ … }
void lspcon_set_infoframes(struct intel_encoder *encoder,
bool enable,
const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state)
{ … }
static bool _lspcon_read_avi_infoframe_enabled_mca(struct drm_dp_aux *aux)
{ … }
static bool _lspcon_read_avi_infoframe_enabled_parade(struct drm_dp_aux *aux)
{ … }
u32 lspcon_infoframes_enabled(struct intel_encoder *encoder,
const struct intel_crtc_state *pipe_config)
{ … }
void lspcon_wait_pcon_mode(struct intel_lspcon *lspcon)
{ … }
bool lspcon_init(struct intel_digital_port *dig_port)
{ … }
u32 intel_lspcon_infoframes_enabled(struct intel_encoder *encoder,
const struct intel_crtc_state *pipe_config)
{ … }
void lspcon_resume(struct intel_digital_port *dig_port)
{ … }