Commit 790ea70c authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Pass intel_encoder to infoframe functions

Make life simpler by passing around intel_encoder instead of
drm_encoder.

@r1@
identifier F =~ "infoframe";
identifier I, M;
@@
F(
- struct drm_encoder *I
+ struct intel_encoder *I
  , ...)
{
<...
(
- I->M
+ I->base.M
|
- I
+ &I->base
)
...>
}

@r2@
identifier F =~ "infoframe";
identifier I;
type T, ST;
@@
ST {
...
	T (*F)(
-	       struct drm_encoder *I
+	       struct intel_encoder *encoder
	       , ...);
...
};

@@
identifier r1.F;
expression E;
@@
F(
- E
+ to_intel_encoder(E)
  ,...)

@@
identifier r2.F;
expression E, X;
@@
(
X.F(
-   E
+   to_intel_encoder(E)
    ,...)
|
X->F(
-    E
+    to_intel_encoder(E)
     ,...)
)

@@
expression E;
@@
(
- to_intel_encoder(&E->base)
+ E
|
- to_intel_encoder(&E->base.base)
+ &E->base
)

@@
identifier D, M;
expression E;
@@
 D = enc_to_dig_port(&E->base)
<...
(
- D->base.M
+ E->M
|
- &D->base
+ E
)
...>

@@
identifier D;
expression E;
type T;
@@
- T D = enc_to_dig_port(E);
... when != D
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180920185145.1912-10-ville.syrjala@linux.intel.comAcked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 121f0ff5
...@@ -2947,7 +2947,7 @@ static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder, ...@@ -2947,7 +2947,7 @@ static void intel_ddi_pre_enable_hdmi(struct intel_encoder *encoder,
intel_ddi_enable_pipe_clock(crtc_state); intel_ddi_enable_pipe_clock(crtc_state);
intel_dig_port->set_infoframes(&encoder->base, intel_dig_port->set_infoframes(encoder,
crtc_state->has_infoframe, crtc_state->has_infoframe,
crtc_state, conn_state); crtc_state, conn_state);
} }
...@@ -3046,7 +3046,7 @@ static void intel_ddi_post_disable_hdmi(struct intel_encoder *encoder, ...@@ -3046,7 +3046,7 @@ static void intel_ddi_post_disable_hdmi(struct intel_encoder *encoder,
struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base); struct intel_digital_port *dig_port = enc_to_dig_port(&encoder->base);
struct intel_hdmi *intel_hdmi = &dig_port->hdmi; struct intel_hdmi *intel_hdmi = &dig_port->hdmi;
dig_port->set_infoframes(&encoder->base, false, dig_port->set_infoframes(encoder, false,
old_crtc_state, old_conn_state); old_crtc_state, old_conn_state);
intel_ddi_disable_pipe_clock(old_crtc_state); intel_ddi_disable_pipe_clock(old_crtc_state);
...@@ -3390,7 +3390,7 @@ void intel_ddi_get_config(struct intel_encoder *encoder, ...@@ -3390,7 +3390,7 @@ void intel_ddi_get_config(struct intel_encoder *encoder,
pipe_config->has_hdmi_sink = true; pipe_config->has_hdmi_sink = true;
intel_dig_port = enc_to_dig_port(&encoder->base); intel_dig_port = enc_to_dig_port(&encoder->base);
if (intel_dig_port->infoframe_enabled(&encoder->base, pipe_config)) if (intel_dig_port->infoframe_enabled(encoder, pipe_config))
pipe_config->has_infoframe = true; pipe_config->has_infoframe = true;
if ((temp & TRANS_DDI_HDMI_SCRAMBLING_MASK) == if ((temp & TRANS_DDI_HDMI_SCRAMBLING_MASK) ==
......
...@@ -1172,15 +1172,15 @@ struct intel_digital_port { ...@@ -1172,15 +1172,15 @@ struct intel_digital_port {
enum intel_display_power_domain ddi_io_power_domain; enum intel_display_power_domain ddi_io_power_domain;
enum tc_port_type tc_type; enum tc_port_type tc_type;
void (*write_infoframe)(struct drm_encoder *encoder, void (*write_infoframe)(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
unsigned int type, unsigned int type,
const void *frame, ssize_t len); const void *frame, ssize_t len);
void (*set_infoframes)(struct drm_encoder *encoder, void (*set_infoframes)(struct intel_encoder *encoder,
bool enable, bool enable,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state); const struct drm_connector_state *conn_state);
bool (*infoframe_enabled)(struct drm_encoder *encoder, bool (*infoframe_enabled)(struct intel_encoder *encoder,
const struct intel_crtc_state *pipe_config); const struct intel_crtc_state *pipe_config);
}; };
......
...@@ -148,14 +148,13 @@ hsw_dip_data_reg(struct drm_i915_private *dev_priv, ...@@ -148,14 +148,13 @@ hsw_dip_data_reg(struct drm_i915_private *dev_priv,
} }
} }
static void g4x_write_infoframe(struct drm_encoder *encoder, static void g4x_write_infoframe(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
unsigned int type, unsigned int type,
const void *frame, ssize_t len) const void *frame, ssize_t len)
{ {
const u32 *data = frame; const u32 *data = frame;
struct drm_device *dev = encoder->dev; struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct drm_i915_private *dev_priv = to_i915(dev);
u32 val = I915_READ(VIDEO_DIP_CTL); u32 val = I915_READ(VIDEO_DIP_CTL);
int i; int i;
...@@ -186,31 +185,29 @@ static void g4x_write_infoframe(struct drm_encoder *encoder, ...@@ -186,31 +185,29 @@ static void g4x_write_infoframe(struct drm_encoder *encoder,
POSTING_READ(VIDEO_DIP_CTL); POSTING_READ(VIDEO_DIP_CTL);
} }
static bool g4x_infoframe_enabled(struct drm_encoder *encoder, static bool g4x_infoframe_enabled(struct intel_encoder *encoder,
const struct intel_crtc_state *pipe_config) const struct intel_crtc_state *pipe_config)
{ {
struct drm_i915_private *dev_priv = to_i915(encoder->dev); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
u32 val = I915_READ(VIDEO_DIP_CTL); u32 val = I915_READ(VIDEO_DIP_CTL);
if ((val & VIDEO_DIP_ENABLE) == 0) if ((val & VIDEO_DIP_ENABLE) == 0)
return false; return false;
if ((val & VIDEO_DIP_PORT_MASK) != VIDEO_DIP_PORT(intel_dig_port->base.port)) if ((val & VIDEO_DIP_PORT_MASK) != VIDEO_DIP_PORT(encoder->port))
return false; return false;
return val & (VIDEO_DIP_ENABLE_AVI | return val & (VIDEO_DIP_ENABLE_AVI |
VIDEO_DIP_ENABLE_VENDOR | VIDEO_DIP_ENABLE_SPD); VIDEO_DIP_ENABLE_VENDOR | VIDEO_DIP_ENABLE_SPD);
} }
static void ibx_write_infoframe(struct drm_encoder *encoder, static void ibx_write_infoframe(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
unsigned int type, unsigned int type,
const void *frame, ssize_t len) const void *frame, ssize_t len)
{ {
const u32 *data = frame; const u32 *data = frame;
struct drm_device *dev = encoder->dev; struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc); struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc);
i915_reg_t reg = TVIDEO_DIP_CTL(intel_crtc->pipe); i915_reg_t reg = TVIDEO_DIP_CTL(intel_crtc->pipe);
u32 val = I915_READ(reg); u32 val = I915_READ(reg);
...@@ -243,11 +240,10 @@ static void ibx_write_infoframe(struct drm_encoder *encoder, ...@@ -243,11 +240,10 @@ static void ibx_write_infoframe(struct drm_encoder *encoder,
POSTING_READ(reg); POSTING_READ(reg);
} }
static bool ibx_infoframe_enabled(struct drm_encoder *encoder, static bool ibx_infoframe_enabled(struct intel_encoder *encoder,
const struct intel_crtc_state *pipe_config) const struct intel_crtc_state *pipe_config)
{ {
struct drm_i915_private *dev_priv = to_i915(encoder->dev); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
enum pipe pipe = to_intel_crtc(pipe_config->base.crtc)->pipe; enum pipe pipe = to_intel_crtc(pipe_config->base.crtc)->pipe;
i915_reg_t reg = TVIDEO_DIP_CTL(pipe); i915_reg_t reg = TVIDEO_DIP_CTL(pipe);
u32 val = I915_READ(reg); u32 val = I915_READ(reg);
...@@ -255,7 +251,7 @@ static bool ibx_infoframe_enabled(struct drm_encoder *encoder, ...@@ -255,7 +251,7 @@ static bool ibx_infoframe_enabled(struct drm_encoder *encoder,
if ((val & VIDEO_DIP_ENABLE) == 0) if ((val & VIDEO_DIP_ENABLE) == 0)
return false; return false;
if ((val & VIDEO_DIP_PORT_MASK) != VIDEO_DIP_PORT(intel_dig_port->base.port)) if ((val & VIDEO_DIP_PORT_MASK) != VIDEO_DIP_PORT(encoder->port))
return false; return false;
return val & (VIDEO_DIP_ENABLE_AVI | return val & (VIDEO_DIP_ENABLE_AVI |
...@@ -263,14 +259,13 @@ static bool ibx_infoframe_enabled(struct drm_encoder *encoder, ...@@ -263,14 +259,13 @@ static bool ibx_infoframe_enabled(struct drm_encoder *encoder,
VIDEO_DIP_ENABLE_SPD | VIDEO_DIP_ENABLE_GCP); VIDEO_DIP_ENABLE_SPD | VIDEO_DIP_ENABLE_GCP);
} }
static void cpt_write_infoframe(struct drm_encoder *encoder, static void cpt_write_infoframe(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
unsigned int type, unsigned int type,
const void *frame, ssize_t len) const void *frame, ssize_t len)
{ {
const u32 *data = frame; const u32 *data = frame;
struct drm_device *dev = encoder->dev; struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc); struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc);
i915_reg_t reg = TVIDEO_DIP_CTL(intel_crtc->pipe); i915_reg_t reg = TVIDEO_DIP_CTL(intel_crtc->pipe);
u32 val = I915_READ(reg); u32 val = I915_READ(reg);
...@@ -306,10 +301,10 @@ static void cpt_write_infoframe(struct drm_encoder *encoder, ...@@ -306,10 +301,10 @@ static void cpt_write_infoframe(struct drm_encoder *encoder,
POSTING_READ(reg); POSTING_READ(reg);
} }
static bool cpt_infoframe_enabled(struct drm_encoder *encoder, static bool cpt_infoframe_enabled(struct intel_encoder *encoder,
const struct intel_crtc_state *pipe_config) const struct intel_crtc_state *pipe_config)
{ {
struct drm_i915_private *dev_priv = to_i915(encoder->dev); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
enum pipe pipe = to_intel_crtc(pipe_config->base.crtc)->pipe; enum pipe pipe = to_intel_crtc(pipe_config->base.crtc)->pipe;
u32 val = I915_READ(TVIDEO_DIP_CTL(pipe)); u32 val = I915_READ(TVIDEO_DIP_CTL(pipe));
...@@ -321,14 +316,13 @@ static bool cpt_infoframe_enabled(struct drm_encoder *encoder, ...@@ -321,14 +316,13 @@ static bool cpt_infoframe_enabled(struct drm_encoder *encoder,
VIDEO_DIP_ENABLE_SPD | VIDEO_DIP_ENABLE_GCP); VIDEO_DIP_ENABLE_SPD | VIDEO_DIP_ENABLE_GCP);
} }
static void vlv_write_infoframe(struct drm_encoder *encoder, static void vlv_write_infoframe(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
unsigned int type, unsigned int type,
const void *frame, ssize_t len) const void *frame, ssize_t len)
{ {
const u32 *data = frame; const u32 *data = frame;
struct drm_device *dev = encoder->dev; struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc); struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc);
i915_reg_t reg = VLV_TVIDEO_DIP_CTL(intel_crtc->pipe); i915_reg_t reg = VLV_TVIDEO_DIP_CTL(intel_crtc->pipe);
u32 val = I915_READ(reg); u32 val = I915_READ(reg);
...@@ -361,18 +355,17 @@ static void vlv_write_infoframe(struct drm_encoder *encoder, ...@@ -361,18 +355,17 @@ static void vlv_write_infoframe(struct drm_encoder *encoder,
POSTING_READ(reg); POSTING_READ(reg);
} }
static bool vlv_infoframe_enabled(struct drm_encoder *encoder, static bool vlv_infoframe_enabled(struct intel_encoder *encoder,
const struct intel_crtc_state *pipe_config) const struct intel_crtc_state *pipe_config)
{ {
struct drm_i915_private *dev_priv = to_i915(encoder->dev); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
enum pipe pipe = to_intel_crtc(pipe_config->base.crtc)->pipe; enum pipe pipe = to_intel_crtc(pipe_config->base.crtc)->pipe;
u32 val = I915_READ(VLV_TVIDEO_DIP_CTL(pipe)); u32 val = I915_READ(VLV_TVIDEO_DIP_CTL(pipe));
if ((val & VIDEO_DIP_ENABLE) == 0) if ((val & VIDEO_DIP_ENABLE) == 0)
return false; return false;
if ((val & VIDEO_DIP_PORT_MASK) != VIDEO_DIP_PORT(intel_dig_port->base.port)) if ((val & VIDEO_DIP_PORT_MASK) != VIDEO_DIP_PORT(encoder->port))
return false; return false;
return val & (VIDEO_DIP_ENABLE_AVI | return val & (VIDEO_DIP_ENABLE_AVI |
...@@ -380,14 +373,13 @@ static bool vlv_infoframe_enabled(struct drm_encoder *encoder, ...@@ -380,14 +373,13 @@ static bool vlv_infoframe_enabled(struct drm_encoder *encoder,
VIDEO_DIP_ENABLE_SPD | VIDEO_DIP_ENABLE_GCP); VIDEO_DIP_ENABLE_SPD | VIDEO_DIP_ENABLE_GCP);
} }
static void hsw_write_infoframe(struct drm_encoder *encoder, static void hsw_write_infoframe(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
unsigned int type, unsigned int type,
const void *frame, ssize_t len) const void *frame, ssize_t len)
{ {
const u32 *data = frame; const u32 *data = frame;
struct drm_device *dev = encoder->dev; struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct drm_i915_private *dev_priv = to_i915(dev);
enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
i915_reg_t ctl_reg = HSW_TVIDEO_DIP_CTL(cpu_transcoder); i915_reg_t ctl_reg = HSW_TVIDEO_DIP_CTL(cpu_transcoder);
int data_size = type == DP_SDP_VSC ? int data_size = type == DP_SDP_VSC ?
...@@ -415,10 +407,10 @@ static void hsw_write_infoframe(struct drm_encoder *encoder, ...@@ -415,10 +407,10 @@ static void hsw_write_infoframe(struct drm_encoder *encoder,
POSTING_READ(ctl_reg); POSTING_READ(ctl_reg);
} }
static bool hsw_infoframe_enabled(struct drm_encoder *encoder, static bool hsw_infoframe_enabled(struct intel_encoder *encoder,
const struct intel_crtc_state *pipe_config) const struct intel_crtc_state *pipe_config)
{ {
struct drm_i915_private *dev_priv = to_i915(encoder->dev); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
u32 val = I915_READ(HSW_TVIDEO_DIP_CTL(pipe_config->cpu_transcoder)); u32 val = I915_READ(HSW_TVIDEO_DIP_CTL(pipe_config->cpu_transcoder));
return val & (VIDEO_DIP_ENABLE_VSC_HSW | VIDEO_DIP_ENABLE_AVI_HSW | return val & (VIDEO_DIP_ENABLE_VSC_HSW | VIDEO_DIP_ENABLE_AVI_HSW |
...@@ -443,11 +435,11 @@ static bool hsw_infoframe_enabled(struct drm_encoder *encoder, ...@@ -443,11 +435,11 @@ static bool hsw_infoframe_enabled(struct drm_encoder *encoder,
* trick them by giving an offset into the buffer and moving back the header * trick them by giving an offset into the buffer and moving back the header
* bytes by one. * bytes by one.
*/ */
static void intel_write_infoframe(struct drm_encoder *encoder, static void intel_write_infoframe(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
union hdmi_infoframe *frame) union hdmi_infoframe *frame)
{ {
struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder); struct intel_digital_port *intel_dig_port = enc_to_dig_port(&encoder->base);
u8 buffer[VIDEO_DIP_DATA_SIZE]; u8 buffer[VIDEO_DIP_DATA_SIZE];
ssize_t len; ssize_t len;
...@@ -461,14 +453,16 @@ static void intel_write_infoframe(struct drm_encoder *encoder, ...@@ -461,14 +453,16 @@ static void intel_write_infoframe(struct drm_encoder *encoder,
buffer[3] = 0; buffer[3] = 0;
len++; len++;
intel_dig_port->write_infoframe(encoder, crtc_state, frame->any.type, buffer, len); intel_dig_port->write_infoframe(encoder,
crtc_state,
frame->any.type, buffer, len);
} }
static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, static void intel_hdmi_set_avi_infoframe(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state) const struct drm_connector_state *conn_state)
{ {
struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
const struct drm_display_mode *adjusted_mode = const struct drm_display_mode *adjusted_mode =
&crtc_state->base.adjusted_mode; &crtc_state->base.adjusted_mode;
struct drm_connector *connector = &intel_hdmi->attached_connector->base; struct drm_connector *connector = &intel_hdmi->attached_connector->base;
...@@ -500,10 +494,11 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, ...@@ -500,10 +494,11 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
conn_state); conn_state);
/* TODO: handle pixel repetition for YCBCR420 outputs */ /* TODO: handle pixel repetition for YCBCR420 outputs */
intel_write_infoframe(encoder, crtc_state, &frame); intel_write_infoframe(encoder, crtc_state,
&frame);
} }
static void intel_hdmi_set_spd_infoframe(struct drm_encoder *encoder, static void intel_hdmi_set_spd_infoframe(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state) const struct intel_crtc_state *crtc_state)
{ {
union hdmi_infoframe frame; union hdmi_infoframe frame;
...@@ -517,11 +512,12 @@ static void intel_hdmi_set_spd_infoframe(struct drm_encoder *encoder, ...@@ -517,11 +512,12 @@ static void intel_hdmi_set_spd_infoframe(struct drm_encoder *encoder,
frame.spd.sdi = HDMI_SPD_SDI_PC; frame.spd.sdi = HDMI_SPD_SDI_PC;
intel_write_infoframe(encoder, crtc_state, &frame); intel_write_infoframe(encoder, crtc_state,
&frame);
} }
static void static void
intel_hdmi_set_hdmi_infoframe(struct drm_encoder *encoder, intel_hdmi_set_hdmi_infoframe(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state) const struct drm_connector_state *conn_state)
{ {
...@@ -534,20 +530,21 @@ intel_hdmi_set_hdmi_infoframe(struct drm_encoder *encoder, ...@@ -534,20 +530,21 @@ intel_hdmi_set_hdmi_infoframe(struct drm_encoder *encoder,
if (ret < 0) if (ret < 0)
return; return;
intel_write_infoframe(encoder, crtc_state, &frame); intel_write_infoframe(encoder, crtc_state,
&frame);
} }
static void g4x_set_infoframes(struct drm_encoder *encoder, static void g4x_set_infoframes(struct intel_encoder *encoder,
bool enable, bool enable,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state) const struct drm_connector_state *conn_state)
{ {
struct drm_i915_private *dev_priv = to_i915(encoder->dev); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder); struct intel_digital_port *intel_dig_port = enc_to_dig_port(&encoder->base);
struct intel_hdmi *intel_hdmi = &intel_dig_port->hdmi; struct intel_hdmi *intel_hdmi = &intel_dig_port->hdmi;
i915_reg_t reg = VIDEO_DIP_CTL; i915_reg_t reg = VIDEO_DIP_CTL;
u32 val = I915_READ(reg); u32 val = I915_READ(reg);
u32 port = VIDEO_DIP_PORT(intel_dig_port->base.port); u32 port = VIDEO_DIP_PORT(encoder->port);
assert_hdmi_port_disabled(intel_hdmi); assert_hdmi_port_disabled(intel_hdmi);
...@@ -655,11 +652,11 @@ static bool gcp_default_phase_possible(int pipe_bpp, ...@@ -655,11 +652,11 @@ static bool gcp_default_phase_possible(int pipe_bpp,
mode->crtc_htotal/2 % pixels_per_group == 0); mode->crtc_htotal/2 % pixels_per_group == 0);
} }
static bool intel_hdmi_set_gcp_infoframe(struct drm_encoder *encoder, static bool intel_hdmi_set_gcp_infoframe(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state) const struct drm_connector_state *conn_state)
{ {
struct drm_i915_private *dev_priv = to_i915(encoder->dev); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc); struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
i915_reg_t reg; i915_reg_t reg;
u32 val = 0; u32 val = 0;
...@@ -687,18 +684,18 @@ static bool intel_hdmi_set_gcp_infoframe(struct drm_encoder *encoder, ...@@ -687,18 +684,18 @@ static bool intel_hdmi_set_gcp_infoframe(struct drm_encoder *encoder,
return val != 0; return val != 0;
} }
static void ibx_set_infoframes(struct drm_encoder *encoder, static void ibx_set_infoframes(struct intel_encoder *encoder,
bool enable, bool enable,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state) const struct drm_connector_state *conn_state)
{ {
struct drm_i915_private *dev_priv = to_i915(encoder->dev); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc); struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc);
struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder); struct intel_digital_port *intel_dig_port = enc_to_dig_port(&encoder->base);
struct intel_hdmi *intel_hdmi = &intel_dig_port->hdmi; struct intel_hdmi *intel_hdmi = &intel_dig_port->hdmi;
i915_reg_t reg = TVIDEO_DIP_CTL(intel_crtc->pipe); i915_reg_t reg = TVIDEO_DIP_CTL(intel_crtc->pipe);
u32 val = I915_READ(reg); u32 val = I915_READ(reg);
u32 port = VIDEO_DIP_PORT(intel_dig_port->base.port); u32 port = VIDEO_DIP_PORT(encoder->port);
assert_hdmi_port_disabled(intel_hdmi); assert_hdmi_port_disabled(intel_hdmi);
...@@ -740,14 +737,14 @@ static void ibx_set_infoframes(struct drm_encoder *encoder, ...@@ -740,14 +737,14 @@ static void ibx_set_infoframes(struct drm_encoder *encoder,
intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state); intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state);
} }
static void cpt_set_infoframes(struct drm_encoder *encoder, static void cpt_set_infoframes(struct intel_encoder *encoder,
bool enable, bool enable,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state) const struct drm_connector_state *conn_state)
{ {
struct drm_i915_private *dev_priv = to_i915(encoder->dev); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc); struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc);
struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
i915_reg_t reg = TVIDEO_DIP_CTL(intel_crtc->pipe); i915_reg_t reg = TVIDEO_DIP_CTL(intel_crtc->pipe);
u32 val = I915_READ(reg); u32 val = I915_READ(reg);
...@@ -783,18 +780,17 @@ static void cpt_set_infoframes(struct drm_encoder *encoder, ...@@ -783,18 +780,17 @@ static void cpt_set_infoframes(struct drm_encoder *encoder,
intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state); intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state);
} }
static void vlv_set_infoframes(struct drm_encoder *encoder, static void vlv_set_infoframes(struct intel_encoder *encoder,
bool enable, bool enable,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state) const struct drm_connector_state *conn_state)
{ {
struct drm_i915_private *dev_priv = to_i915(encoder->dev); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc); struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc);
struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
i915_reg_t reg = VLV_TVIDEO_DIP_CTL(intel_crtc->pipe); i915_reg_t reg = VLV_TVIDEO_DIP_CTL(intel_crtc->pipe);
u32 val = I915_READ(reg); u32 val = I915_READ(reg);
u32 port = VIDEO_DIP_PORT(intel_dig_port->base.port); u32 port = VIDEO_DIP_PORT(encoder->port);
assert_hdmi_port_disabled(intel_hdmi); assert_hdmi_port_disabled(intel_hdmi);
...@@ -836,12 +832,12 @@ static void vlv_set_infoframes(struct drm_encoder *encoder, ...@@ -836,12 +832,12 @@ static void vlv_set_infoframes(struct drm_encoder *encoder,
intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state); intel_hdmi_set_hdmi_infoframe(encoder, crtc_state, conn_state);
} }
static void hsw_set_infoframes(struct drm_encoder *encoder, static void hsw_set_infoframes(struct intel_encoder *encoder,
bool enable, bool enable,
const struct intel_crtc_state *crtc_state, const struct intel_crtc_state *crtc_state,
const struct drm_connector_state *conn_state) const struct drm_connector_state *conn_state)
{ {
struct drm_i915_private *dev_priv = to_i915(encoder->dev); struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
i915_reg_t reg = HSW_TVIDEO_DIP_CTL(crtc_state->cpu_transcoder); i915_reg_t reg = HSW_TVIDEO_DIP_CTL(crtc_state->cpu_transcoder);
u32 val = I915_READ(reg); u32 val = I915_READ(reg);
...@@ -1215,7 +1211,7 @@ static void intel_hdmi_get_config(struct intel_encoder *encoder, ...@@ -1215,7 +1211,7 @@ static void intel_hdmi_get_config(struct intel_encoder *encoder,
if (tmp & HDMI_MODE_SELECT_HDMI) if (tmp & HDMI_MODE_SELECT_HDMI)
pipe_config->has_hdmi_sink = true; pipe_config->has_hdmi_sink = true;
if (intel_dig_port->infoframe_enabled(&encoder->base, pipe_config)) if (intel_dig_port->infoframe_enabled(encoder, pipe_config))
pipe_config->has_infoframe = true; pipe_config->has_infoframe = true;
if (tmp & SDVO_AUDIO_ENABLE) if (tmp & SDVO_AUDIO_ENABLE)
...@@ -1436,7 +1432,8 @@ static void intel_disable_hdmi(struct intel_encoder *encoder, ...@@ -1436,7 +1432,8 @@ static void intel_disable_hdmi(struct intel_encoder *encoder,
intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, true); intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, true);
} }
intel_dig_port->set_infoframes(&encoder->base, false, intel_dig_port->set_infoframes(encoder,
false,
old_crtc_state, old_conn_state); old_crtc_state, old_conn_state);
intel_dp_dual_mode_set_tmds_output(intel_hdmi, false); intel_dp_dual_mode_set_tmds_output(intel_hdmi, false);
...@@ -1971,7 +1968,7 @@ static void intel_hdmi_pre_enable(struct intel_encoder *encoder, ...@@ -1971,7 +1968,7 @@ static void intel_hdmi_pre_enable(struct intel_encoder *encoder,
intel_hdmi_prepare(encoder, pipe_config); intel_hdmi_prepare(encoder, pipe_config);
intel_dig_port->set_infoframes(&encoder->base, intel_dig_port->set_infoframes(encoder,
pipe_config->has_infoframe, pipe_config->has_infoframe,
pipe_config, conn_state); pipe_config, conn_state);
} }
...@@ -1989,7 +1986,7 @@ static void vlv_hdmi_pre_enable(struct intel_encoder *encoder, ...@@ -1989,7 +1986,7 @@ static void vlv_hdmi_pre_enable(struct intel_encoder *encoder,
vlv_set_phy_signal_level(encoder, 0x2b245f5f, 0x00002000, 0x5578b83a, vlv_set_phy_signal_level(encoder, 0x2b245f5f, 0x00002000, 0x5578b83a,
0x2b247878); 0x2b247878);
dport->set_infoframes(&encoder->base, dport->set_infoframes(encoder,
pipe_config->has_infoframe, pipe_config->has_infoframe,
pipe_config, conn_state); pipe_config, conn_state);
...@@ -2060,7 +2057,7 @@ static void chv_hdmi_pre_enable(struct intel_encoder *encoder, ...@@ -2060,7 +2057,7 @@ static void chv_hdmi_pre_enable(struct intel_encoder *encoder,
/* Use 800mV-0dB */ /* Use 800mV-0dB */
chv_set_phy_signal_level(encoder, 128, 102, false); chv_set_phy_signal_level(encoder, 128, 102, false);
dport->set_infoframes(&encoder->base, dport->set_infoframes(encoder,
pipe_config->has_infoframe, pipe_config->has_infoframe,
pipe_config, conn_state); pipe_config, conn_state);
......
...@@ -294,7 +294,8 @@ static void intel_psr_setup_vsc(struct intel_dp *intel_dp, ...@@ -294,7 +294,8 @@ static void intel_psr_setup_vsc(struct intel_dp *intel_dp,
psr_vsc.sdp_header.HB3 = 0x8; psr_vsc.sdp_header.HB3 = 0x8;
} }
intel_dig_port->write_infoframe(&intel_dig_port->base.base, crtc_state, intel_dig_port->write_infoframe(&intel_dig_port->base,
crtc_state,
DP_SDP_VSC, &psr_vsc, sizeof(psr_vsc)); DP_SDP_VSC, &psr_vsc, sizeof(psr_vsc));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment