Commit 6e3c9717 authored by Ander Conselvan de Oliveira's avatar Ander Conselvan de Oliveira Committed by Daniel Vetter

drm/i915: Make intel_crtc->config a pointer

To match the semantics of drm_crtc->state, which this will eventually
become. The allocation of the memory for config will be fixed in a
followup patch. By adding the extra _config field to intel_crtc it was
possible to generate this entire patch with the cocci script below.

@@ @@
struct intel_crtc {
...
-struct intel_crtc_state config;
+struct intel_crtc_state _config;
+struct intel_crtc_state *config;
...
}
@@ struct intel_crtc *crtc; @@
-memset(&crtc->config, 0, sizeof(crtc->config));
+memset(crtc->config, 0, sizeof(*crtc->config));
@@ @@
__intel_set_mode(...) {
<...
-to_intel_crtc(crtc)->config = *pipe_config;
+(*(to_intel_crtc(crtc)->config)) = *pipe_config;
...>
}
@@ @@
intel_crtc_init(...) {
...
WARN_ON(drm_crtc_index(&intel_crtc->base) != intel_crtc->pipe);
+intel_crtc->config = &intel_crtc->_config;
return;
...
}
@@ struct intel_crtc *crtc; @@
-&crtc->config
+crtc->config
@@ struct intel_crtc *crtc; identifier member; @@
-crtc->config.member
+crtc->config->member
@@ expression E; @@
-&(to_intel_crtc(E)->config)
+to_intel_crtc(E)->config
@@ expression E; identifier member; @@
-to_intel_crtc(E)->config.member
+to_intel_crtc(E)->config->member

v2: Clarify manual changes by splitting them into another patch. (Matt)
    Improve cocci script to generate even more of the changes. (Ander)
Signed-off-by: default avatarAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 681a8504
...@@ -2628,7 +2628,8 @@ static int i915_display_info(struct seq_file *m, void *unused) ...@@ -2628,7 +2628,8 @@ static int i915_display_info(struct seq_file *m, void *unused)
seq_printf(m, "CRTC %d: pipe: %c, active=%s (size=%dx%d)\n", seq_printf(m, "CRTC %d: pipe: %c, active=%s (size=%dx%d)\n",
crtc->base.base.id, pipe_name(crtc->pipe), crtc->base.base.id, pipe_name(crtc->pipe),
yesno(crtc->active), crtc->config.pipe_src_w, crtc->config.pipe_src_h); yesno(crtc->active), crtc->config->pipe_src_w,
crtc->config->pipe_src_h);
if (crtc->active) { if (crtc->active) {
intel_crtc_info(m, crtc); intel_crtc_info(m, crtc);
...@@ -3362,9 +3363,9 @@ static void hsw_trans_edp_pipe_A_crc_wa(struct drm_device *dev) ...@@ -3362,9 +3363,9 @@ static void hsw_trans_edp_pipe_A_crc_wa(struct drm_device *dev)
* relevant on hsw with pipe A when using the always-on power well * relevant on hsw with pipe A when using the always-on power well
* routing. * routing.
*/ */
if (crtc->config.cpu_transcoder == TRANSCODER_EDP && if (crtc->config->cpu_transcoder == TRANSCODER_EDP &&
!crtc->config.pch_pfit.enabled) { !crtc->config->pch_pfit.enabled) {
crtc->config.pch_pfit.force_thru = true; crtc->config->pch_pfit.force_thru = true;
intel_display_power_get(dev_priv, intel_display_power_get(dev_priv,
POWER_DOMAIN_PIPE_PANEL_FITTER(PIPE_A)); POWER_DOMAIN_PIPE_PANEL_FITTER(PIPE_A));
...@@ -3388,8 +3389,8 @@ static void hsw_undo_trans_edp_pipe_A_crc_wa(struct drm_device *dev) ...@@ -3388,8 +3389,8 @@ static void hsw_undo_trans_edp_pipe_A_crc_wa(struct drm_device *dev)
* relevant on hsw with pipe A when using the always-on power well * relevant on hsw with pipe A when using the always-on power well
* routing. * routing.
*/ */
if (crtc->config.pch_pfit.force_thru) { if (crtc->config->pch_pfit.force_thru) {
crtc->config.pch_pfit.force_thru = false; crtc->config->pch_pfit.force_thru = false;
dev_priv->display.crtc_disable(&crtc->base); dev_priv->display.crtc_disable(&crtc->base);
dev_priv->display.crtc_enable(&crtc->base); dev_priv->display.crtc_enable(&crtc->base);
......
...@@ -593,7 +593,7 @@ static u32 i915_get_vblank_counter(struct drm_device *dev, int pipe) ...@@ -593,7 +593,7 @@ static u32 i915_get_vblank_counter(struct drm_device *dev, int pipe)
struct intel_crtc *intel_crtc = struct intel_crtc *intel_crtc =
to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]); to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]);
const struct drm_display_mode *mode = const struct drm_display_mode *mode =
&intel_crtc->config.base.adjusted_mode; &intel_crtc->config->base.adjusted_mode;
htotal = mode->crtc_htotal; htotal = mode->crtc_htotal;
hsync_start = mode->crtc_hsync_start; hsync_start = mode->crtc_hsync_start;
...@@ -664,7 +664,7 @@ static int __intel_get_crtc_scanline(struct intel_crtc *crtc) ...@@ -664,7 +664,7 @@ static int __intel_get_crtc_scanline(struct intel_crtc *crtc)
{ {
struct drm_device *dev = crtc->base.dev; struct drm_device *dev = crtc->base.dev;
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
const struct drm_display_mode *mode = &crtc->config.base.adjusted_mode; const struct drm_display_mode *mode = &crtc->config->base.adjusted_mode;
enum pipe pipe = crtc->pipe; enum pipe pipe = crtc->pipe;
int position, vtotal; int position, vtotal;
...@@ -691,7 +691,7 @@ static int i915_get_crtc_scanoutpos(struct drm_device *dev, int pipe, ...@@ -691,7 +691,7 @@ static int i915_get_crtc_scanoutpos(struct drm_device *dev, int pipe,
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe];
struct intel_crtc *intel_crtc = to_intel_crtc(crtc); struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
const struct drm_display_mode *mode = &intel_crtc->config.base.adjusted_mode; const struct drm_display_mode *mode = &intel_crtc->config->base.adjusted_mode;
int position; int position;
int vbl_start, vbl_end, hsync_start, htotal, vtotal; int vbl_start, vbl_end, hsync_start, htotal, vtotal;
bool in_vbl = true; bool in_vbl = true;
...@@ -849,7 +849,7 @@ static int i915_get_vblank_timestamp(struct drm_device *dev, int pipe, ...@@ -849,7 +849,7 @@ static int i915_get_vblank_timestamp(struct drm_device *dev, int pipe,
return drm_calc_vbltimestamp_from_scanoutpos(dev, pipe, max_error, return drm_calc_vbltimestamp_from_scanoutpos(dev, pipe, max_error,
vblank_time, flags, vblank_time, flags,
crtc, crtc,
&to_intel_crtc(crtc)->config.base.adjusted_mode); &to_intel_crtc(crtc)->config->base.adjusted_mode);
} }
static bool intel_hpd_irq_event(struct drm_device *dev, static bool intel_hpd_irq_event(struct drm_device *dev,
......
...@@ -108,9 +108,9 @@ static int intel_plane_atomic_check(struct drm_plane *plane, ...@@ -108,9 +108,9 @@ static int intel_plane_atomic_check(struct drm_plane *plane,
intel_state->clip.x1 = 0; intel_state->clip.x1 = 0;
intel_state->clip.y1 = 0; intel_state->clip.y1 = 0;
intel_state->clip.x2 = intel_state->clip.x2 =
intel_crtc->active ? intel_crtc->config.pipe_src_w : 0; intel_crtc->active ? intel_crtc->config->pipe_src_w : 0;
intel_state->clip.y2 = intel_state->clip.y2 =
intel_crtc->active ? intel_crtc->config.pipe_src_h : 0; intel_crtc->active ? intel_crtc->config->pipe_src_h : 0;
/* /*
* Disabling a plane is always okay; we just need to update * Disabling a plane is always okay; we just need to update
......
...@@ -400,7 +400,7 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder) ...@@ -400,7 +400,7 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder)
{ {
struct drm_encoder *encoder = &intel_encoder->base; struct drm_encoder *encoder = &intel_encoder->base;
struct intel_crtc *crtc = to_intel_crtc(encoder->crtc); struct intel_crtc *crtc = to_intel_crtc(encoder->crtc);
struct drm_display_mode *mode = &crtc->config.base.adjusted_mode; struct drm_display_mode *mode = &crtc->config->base.adjusted_mode;
struct drm_connector *connector; struct drm_connector *connector;
struct drm_device *dev = encoder->dev; struct drm_device *dev = encoder->dev;
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
......
...@@ -157,7 +157,7 @@ static void intel_crt_set_dpms(struct intel_encoder *encoder, int mode) ...@@ -157,7 +157,7 @@ static void intel_crt_set_dpms(struct intel_encoder *encoder, int mode)
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_crt *crt = intel_encoder_to_crt(encoder); struct intel_crt *crt = intel_encoder_to_crt(encoder);
struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
struct drm_display_mode *adjusted_mode = &crtc->config.base.adjusted_mode; struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
u32 adpa; u32 adpa;
if (INTEL_INFO(dev)->gen >= 5) if (INTEL_INFO(dev)->gen >= 5)
......
...@@ -328,7 +328,7 @@ void hsw_fdi_link_train(struct drm_crtc *crtc) ...@@ -328,7 +328,7 @@ void hsw_fdi_link_train(struct drm_crtc *crtc)
/* Enable the PCH Receiver FDI PLL */ /* Enable the PCH Receiver FDI PLL */
rx_ctl_val = dev_priv->fdi_rx_config | FDI_RX_ENHANCE_FRAME_ENABLE | rx_ctl_val = dev_priv->fdi_rx_config | FDI_RX_ENHANCE_FRAME_ENABLE |
FDI_RX_PLL_ENABLE | FDI_RX_PLL_ENABLE |
FDI_DP_PORT_WIDTH(intel_crtc->config.fdi_lanes); FDI_DP_PORT_WIDTH(intel_crtc->config->fdi_lanes);
I915_WRITE(_FDI_RXA_CTL, rx_ctl_val); I915_WRITE(_FDI_RXA_CTL, rx_ctl_val);
POSTING_READ(_FDI_RXA_CTL); POSTING_READ(_FDI_RXA_CTL);
udelay(220); udelay(220);
...@@ -338,8 +338,8 @@ void hsw_fdi_link_train(struct drm_crtc *crtc) ...@@ -338,8 +338,8 @@ void hsw_fdi_link_train(struct drm_crtc *crtc)
I915_WRITE(_FDI_RXA_CTL, rx_ctl_val); I915_WRITE(_FDI_RXA_CTL, rx_ctl_val);
/* Configure Port Clock Select */ /* Configure Port Clock Select */
I915_WRITE(PORT_CLK_SEL(PORT_E), intel_crtc->config.ddi_pll_sel); I915_WRITE(PORT_CLK_SEL(PORT_E), intel_crtc->config->ddi_pll_sel);
WARN_ON(intel_crtc->config.ddi_pll_sel != PORT_CLK_SEL_SPLL); WARN_ON(intel_crtc->config->ddi_pll_sel != PORT_CLK_SEL_SPLL);
/* Start the training iterating through available voltages and emphasis, /* Start the training iterating through available voltages and emphasis,
* testing each value twice. */ * testing each value twice. */
...@@ -357,7 +357,7 @@ void hsw_fdi_link_train(struct drm_crtc *crtc) ...@@ -357,7 +357,7 @@ void hsw_fdi_link_train(struct drm_crtc *crtc)
* port reversal bit */ * port reversal bit */
I915_WRITE(DDI_BUF_CTL(PORT_E), I915_WRITE(DDI_BUF_CTL(PORT_E),
DDI_BUF_CTL_ENABLE | DDI_BUF_CTL_ENABLE |
((intel_crtc->config.fdi_lanes - 1) << 1) | ((intel_crtc->config->fdi_lanes - 1) << 1) |
DDI_BUF_TRANS_SELECT(i / 2)); DDI_BUF_TRANS_SELECT(i / 2));
POSTING_READ(DDI_BUF_CTL(PORT_E)); POSTING_READ(DDI_BUF_CTL(PORT_E));
...@@ -1191,13 +1191,13 @@ void intel_ddi_set_pipe_settings(struct drm_crtc *crtc) ...@@ -1191,13 +1191,13 @@ void intel_ddi_set_pipe_settings(struct drm_crtc *crtc)
struct drm_i915_private *dev_priv = crtc->dev->dev_private; struct drm_i915_private *dev_priv = crtc->dev->dev_private;
struct intel_crtc *intel_crtc = to_intel_crtc(crtc); struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc); struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc);
enum transcoder cpu_transcoder = intel_crtc->config.cpu_transcoder; enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
int type = intel_encoder->type; int type = intel_encoder->type;
uint32_t temp; uint32_t temp;
if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP || type == INTEL_OUTPUT_DP_MST) { if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP || type == INTEL_OUTPUT_DP_MST) {
temp = TRANS_MSA_SYNC_CLK; temp = TRANS_MSA_SYNC_CLK;
switch (intel_crtc->config.pipe_bpp) { switch (intel_crtc->config->pipe_bpp) {
case 18: case 18:
temp |= TRANS_MSA_6_BPC; temp |= TRANS_MSA_6_BPC;
break; break;
...@@ -1222,7 +1222,7 @@ void intel_ddi_set_vc_payload_alloc(struct drm_crtc *crtc, bool state) ...@@ -1222,7 +1222,7 @@ void intel_ddi_set_vc_payload_alloc(struct drm_crtc *crtc, bool state)
struct intel_crtc *intel_crtc = to_intel_crtc(crtc); struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
struct drm_device *dev = crtc->dev; struct drm_device *dev = crtc->dev;
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
enum transcoder cpu_transcoder = intel_crtc->config.cpu_transcoder; enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
uint32_t temp; uint32_t temp;
temp = I915_READ(TRANS_DDI_FUNC_CTL(cpu_transcoder)); temp = I915_READ(TRANS_DDI_FUNC_CTL(cpu_transcoder));
if (state == true) if (state == true)
...@@ -1240,7 +1240,7 @@ void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc) ...@@ -1240,7 +1240,7 @@ void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc)
struct drm_device *dev = crtc->dev; struct drm_device *dev = crtc->dev;
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
enum pipe pipe = intel_crtc->pipe; enum pipe pipe = intel_crtc->pipe;
enum transcoder cpu_transcoder = intel_crtc->config.cpu_transcoder; enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
enum port port = intel_ddi_get_encoder_port(intel_encoder); enum port port = intel_ddi_get_encoder_port(intel_encoder);
int type = intel_encoder->type; int type = intel_encoder->type;
uint32_t temp; uint32_t temp;
...@@ -1249,7 +1249,7 @@ void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc) ...@@ -1249,7 +1249,7 @@ void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc)
temp = TRANS_DDI_FUNC_ENABLE; temp = TRANS_DDI_FUNC_ENABLE;
temp |= TRANS_DDI_SELECT_PORT(port); temp |= TRANS_DDI_SELECT_PORT(port);
switch (intel_crtc->config.pipe_bpp) { switch (intel_crtc->config->pipe_bpp) {
case 18: case 18:
temp |= TRANS_DDI_BPC_6; temp |= TRANS_DDI_BPC_6;
break; break;
...@@ -1266,9 +1266,9 @@ void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc) ...@@ -1266,9 +1266,9 @@ void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc)
BUG(); BUG();
} }
if (intel_crtc->config.base.adjusted_mode.flags & DRM_MODE_FLAG_PVSYNC) if (intel_crtc->config->base.adjusted_mode.flags & DRM_MODE_FLAG_PVSYNC)
temp |= TRANS_DDI_PVSYNC; temp |= TRANS_DDI_PVSYNC;
if (intel_crtc->config.base.adjusted_mode.flags & DRM_MODE_FLAG_PHSYNC) if (intel_crtc->config->base.adjusted_mode.flags & DRM_MODE_FLAG_PHSYNC)
temp |= TRANS_DDI_PHSYNC; temp |= TRANS_DDI_PHSYNC;
if (cpu_transcoder == TRANSCODER_EDP) { if (cpu_transcoder == TRANSCODER_EDP) {
...@@ -1279,8 +1279,8 @@ void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc) ...@@ -1279,8 +1279,8 @@ void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc)
* using motion blur mitigation (which we don't * using motion blur mitigation (which we don't
* support). */ * support). */
if (IS_HASWELL(dev) && if (IS_HASWELL(dev) &&
(intel_crtc->config.pch_pfit.enabled || (intel_crtc->config->pch_pfit.enabled ||
intel_crtc->config.pch_pfit.force_thru)) intel_crtc->config->pch_pfit.force_thru))
temp |= TRANS_DDI_EDP_INPUT_A_ONOFF; temp |= TRANS_DDI_EDP_INPUT_A_ONOFF;
else else
temp |= TRANS_DDI_EDP_INPUT_A_ON; temp |= TRANS_DDI_EDP_INPUT_A_ON;
...@@ -1298,14 +1298,14 @@ void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc) ...@@ -1298,14 +1298,14 @@ void intel_ddi_enable_transcoder_func(struct drm_crtc *crtc)
} }
if (type == INTEL_OUTPUT_HDMI) { if (type == INTEL_OUTPUT_HDMI) {
if (intel_crtc->config.has_hdmi_sink) if (intel_crtc->config->has_hdmi_sink)
temp |= TRANS_DDI_MODE_SELECT_HDMI; temp |= TRANS_DDI_MODE_SELECT_HDMI;
else else
temp |= TRANS_DDI_MODE_SELECT_DVI; temp |= TRANS_DDI_MODE_SELECT_DVI;
} else if (type == INTEL_OUTPUT_ANALOG) { } else if (type == INTEL_OUTPUT_ANALOG) {
temp |= TRANS_DDI_MODE_SELECT_FDI; temp |= TRANS_DDI_MODE_SELECT_FDI;
temp |= (intel_crtc->config.fdi_lanes - 1) << 1; temp |= (intel_crtc->config->fdi_lanes - 1) << 1;
} else if (type == INTEL_OUTPUT_DISPLAYPORT || } else if (type == INTEL_OUTPUT_DISPLAYPORT ||
type == INTEL_OUTPUT_EDP) { type == INTEL_OUTPUT_EDP) {
...@@ -1455,7 +1455,7 @@ void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc) ...@@ -1455,7 +1455,7 @@ void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc)
struct drm_i915_private *dev_priv = crtc->dev->dev_private; struct drm_i915_private *dev_priv = crtc->dev->dev_private;
struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc); struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc);
enum port port = intel_ddi_get_encoder_port(intel_encoder); enum port port = intel_ddi_get_encoder_port(intel_encoder);
enum transcoder cpu_transcoder = intel_crtc->config.cpu_transcoder; enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
if (cpu_transcoder != TRANSCODER_EDP) if (cpu_transcoder != TRANSCODER_EDP)
I915_WRITE(TRANS_CLK_SEL(cpu_transcoder), I915_WRITE(TRANS_CLK_SEL(cpu_transcoder),
...@@ -1465,7 +1465,7 @@ void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc) ...@@ -1465,7 +1465,7 @@ void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc)
void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc) void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc)
{ {
struct drm_i915_private *dev_priv = intel_crtc->base.dev->dev_private; struct drm_i915_private *dev_priv = intel_crtc->base.dev->dev_private;
enum transcoder cpu_transcoder = intel_crtc->config.cpu_transcoder; enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
if (cpu_transcoder != TRANSCODER_EDP) if (cpu_transcoder != TRANSCODER_EDP)
I915_WRITE(TRANS_CLK_SEL(cpu_transcoder), I915_WRITE(TRANS_CLK_SEL(cpu_transcoder),
...@@ -1487,7 +1487,7 @@ static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder) ...@@ -1487,7 +1487,7 @@ static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder)
} }
if (IS_SKYLAKE(dev)) { if (IS_SKYLAKE(dev)) {
uint32_t dpll = crtc->config.ddi_pll_sel; uint32_t dpll = crtc->config->ddi_pll_sel;
uint32_t val; uint32_t val;
/* /*
...@@ -1502,7 +1502,7 @@ static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder) ...@@ -1502,7 +1502,7 @@ static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder)
val &= ~(DPLL_CTRL1_HDMI_MODE(dpll) | val &= ~(DPLL_CTRL1_HDMI_MODE(dpll) |
DPLL_CTRL1_SSC(dpll) | DPLL_CTRL1_SSC(dpll) |
DPLL_CRTL1_LINK_RATE_MASK(dpll)); DPLL_CRTL1_LINK_RATE_MASK(dpll));
val |= crtc->config.dpll_hw_state.ctrl1 << (dpll * 6); val |= crtc->config->dpll_hw_state.ctrl1 << (dpll * 6);
I915_WRITE(DPLL_CTRL1, val); I915_WRITE(DPLL_CTRL1, val);
POSTING_READ(DPLL_CTRL1); POSTING_READ(DPLL_CTRL1);
...@@ -1519,8 +1519,8 @@ static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder) ...@@ -1519,8 +1519,8 @@ static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder)
I915_WRITE(DPLL_CTRL2, val); I915_WRITE(DPLL_CTRL2, val);
} else { } else {
WARN_ON(crtc->config.ddi_pll_sel == PORT_CLK_SEL_NONE); WARN_ON(crtc->config->ddi_pll_sel == PORT_CLK_SEL_NONE);
I915_WRITE(PORT_CLK_SEL(port), crtc->config.ddi_pll_sel); I915_WRITE(PORT_CLK_SEL(port), crtc->config->ddi_pll_sel);
} }
if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) { if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) {
...@@ -1537,8 +1537,8 @@ static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder) ...@@ -1537,8 +1537,8 @@ static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder)
struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
intel_hdmi->set_infoframes(encoder, intel_hdmi->set_infoframes(encoder,
crtc->config.has_hdmi_sink, crtc->config->has_hdmi_sink,
&crtc->config.base.adjusted_mode); &crtc->config->base.adjusted_mode);
} }
} }
...@@ -1612,7 +1612,7 @@ static void intel_enable_ddi(struct intel_encoder *intel_encoder) ...@@ -1612,7 +1612,7 @@ static void intel_enable_ddi(struct intel_encoder *intel_encoder)
intel_psr_enable(intel_dp); intel_psr_enable(intel_dp);
} }
if (intel_crtc->config.has_audio) { if (intel_crtc->config->has_audio) {
intel_display_power_get(dev_priv, POWER_DOMAIN_AUDIO); intel_display_power_get(dev_priv, POWER_DOMAIN_AUDIO);
intel_audio_codec_enable(intel_encoder); intel_audio_codec_enable(intel_encoder);
} }
...@@ -1627,7 +1627,7 @@ static void intel_disable_ddi(struct intel_encoder *intel_encoder) ...@@ -1627,7 +1627,7 @@ static void intel_disable_ddi(struct intel_encoder *intel_encoder)
struct drm_device *dev = encoder->dev; struct drm_device *dev = encoder->dev;
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
if (intel_crtc->config.has_audio) { if (intel_crtc->config->has_audio) {
intel_audio_codec_disable(intel_encoder); intel_audio_codec_disable(intel_encoder);
intel_display_power_put(dev_priv, POWER_DOMAIN_AUDIO); intel_display_power_put(dev_priv, POWER_DOMAIN_AUDIO);
} }
...@@ -2036,7 +2036,7 @@ void intel_ddi_get_config(struct intel_encoder *encoder, ...@@ -2036,7 +2036,7 @@ void intel_ddi_get_config(struct intel_encoder *encoder,
{ {
struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; struct drm_i915_private *dev_priv = encoder->base.dev->dev_private;
struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
enum transcoder cpu_transcoder = intel_crtc->config.cpu_transcoder; enum transcoder cpu_transcoder = intel_crtc->config->cpu_transcoder;
struct intel_hdmi *intel_hdmi; struct intel_hdmi *intel_hdmi;
u32 temp, flags = 0; u32 temp, flags = 0;
......
This diff is collapsed.
...@@ -1295,11 +1295,12 @@ static void ironlake_set_pll_cpu_edp(struct intel_dp *intel_dp) ...@@ -1295,11 +1295,12 @@ static void ironlake_set_pll_cpu_edp(struct intel_dp *intel_dp)
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
u32 dpa_ctl; u32 dpa_ctl;
DRM_DEBUG_KMS("eDP PLL enable for clock %d\n", crtc->config.port_clock); DRM_DEBUG_KMS("eDP PLL enable for clock %d\n",
crtc->config->port_clock);
dpa_ctl = I915_READ(DP_A); dpa_ctl = I915_READ(DP_A);
dpa_ctl &= ~DP_PLL_FREQ_MASK; dpa_ctl &= ~DP_PLL_FREQ_MASK;
if (crtc->config.port_clock == 162000) { if (crtc->config->port_clock == 162000) {
/* For a long time we've carried around a ILK-DevA w/a for the /* For a long time we've carried around a ILK-DevA w/a for the
* 160MHz clock. If we're really unlucky, it's still required. * 160MHz clock. If we're really unlucky, it's still required.
*/ */
...@@ -1324,7 +1325,7 @@ static void intel_dp_prepare(struct intel_encoder *encoder) ...@@ -1324,7 +1325,7 @@ static void intel_dp_prepare(struct intel_encoder *encoder)
struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base); struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
enum port port = dp_to_dig_port(intel_dp)->port; enum port port = dp_to_dig_port(intel_dp)->port;
struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
struct drm_display_mode *adjusted_mode = &crtc->config.base.adjusted_mode; struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
/* /*
* There are four kinds of DP registers: * There are four kinds of DP registers:
...@@ -1352,7 +1353,7 @@ static void intel_dp_prepare(struct intel_encoder *encoder) ...@@ -1352,7 +1353,7 @@ static void intel_dp_prepare(struct intel_encoder *encoder)
intel_dp->DP |= DP_VOLTAGE_0_4 | DP_PRE_EMPHASIS_0; intel_dp->DP |= DP_VOLTAGE_0_4 | DP_PRE_EMPHASIS_0;
intel_dp->DP |= DP_PORT_WIDTH(intel_dp->lane_count); intel_dp->DP |= DP_PORT_WIDTH(intel_dp->lane_count);
if (crtc->config.has_audio) if (crtc->config->has_audio)
intel_dp->DP |= DP_AUDIO_OUTPUT_ENABLE; intel_dp->DP |= DP_AUDIO_OUTPUT_ENABLE;
/* Split out the IBX/CPU vs CPT settings */ /* Split out the IBX/CPU vs CPT settings */
...@@ -2102,7 +2103,7 @@ static void intel_disable_dp(struct intel_encoder *encoder) ...@@ -2102,7 +2103,7 @@ static void intel_disable_dp(struct intel_encoder *encoder)
struct drm_device *dev = encoder->base.dev; struct drm_device *dev = encoder->base.dev;
struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
if (crtc->config.has_audio) if (crtc->config->has_audio)
intel_audio_codec_disable(encoder); intel_audio_codec_disable(encoder);
if (HAS_PSR(dev) && !HAS_DDI(dev)) if (HAS_PSR(dev) && !HAS_DDI(dev))
...@@ -2312,7 +2313,7 @@ static void intel_enable_dp(struct intel_encoder *encoder) ...@@ -2312,7 +2313,7 @@ static void intel_enable_dp(struct intel_encoder *encoder)
intel_dp_complete_link_train(intel_dp); intel_dp_complete_link_train(intel_dp);
intel_dp_stop_link_train(intel_dp); intel_dp_stop_link_train(intel_dp);
if (crtc->config.has_audio) { if (crtc->config->has_audio) {
DRM_DEBUG_DRIVER("Enabling DP audio on pipe %c\n", DRM_DEBUG_DRIVER("Enabling DP audio on pipe %c\n",
pipe_name(crtc->pipe)); pipe_name(crtc->pipe));
intel_audio_codec_enable(encoder); intel_audio_codec_enable(encoder);
...@@ -4780,7 +4781,7 @@ static void intel_dp_set_drrs_state(struct drm_device *dev, int refresh_rate) ...@@ -4780,7 +4781,7 @@ static void intel_dp_set_drrs_state(struct drm_device *dev, int refresh_rate)
return; return;
} }
config = &intel_crtc->config; config = intel_crtc->config;
if (dev_priv->drrs.type < SEAMLESS_DRRS_SUPPORT) { if (dev_priv->drrs.type < SEAMLESS_DRRS_SUPPORT) {
DRM_DEBUG_KMS("Only Seamless DRRS supported.\n"); DRM_DEBUG_KMS("Only Seamless DRRS supported.\n");
...@@ -4803,7 +4804,7 @@ static void intel_dp_set_drrs_state(struct drm_device *dev, int refresh_rate) ...@@ -4803,7 +4804,7 @@ static void intel_dp_set_drrs_state(struct drm_device *dev, int refresh_rate)
} }
if (INTEL_INFO(dev)->gen > 6 && INTEL_INFO(dev)->gen < 8) { if (INTEL_INFO(dev)->gen > 6 && INTEL_INFO(dev)->gen < 8) {
reg = PIPECONF(intel_crtc->config.cpu_transcoder); reg = PIPECONF(intel_crtc->config->cpu_transcoder);
val = I915_READ(reg); val = I915_READ(reg);
if (index > DRRS_HIGH_RR) { if (index > DRRS_HIGH_RR) {
val |= PIPECONF_EDP_RR_MODE_SWITCH; val |= PIPECONF_EDP_RR_MODE_SWITCH;
......
...@@ -157,7 +157,8 @@ static void intel_mst_pre_enable_dp(struct intel_encoder *encoder) ...@@ -157,7 +157,8 @@ static void intel_mst_pre_enable_dp(struct intel_encoder *encoder)
if (intel_dp->active_mst_links == 0) { if (intel_dp->active_mst_links == 0) {
enum port port = intel_ddi_get_encoder_port(encoder); enum port port = intel_ddi_get_encoder_port(encoder);
I915_WRITE(PORT_CLK_SEL(port), intel_crtc->config.ddi_pll_sel); I915_WRITE(PORT_CLK_SEL(port),
intel_crtc->config->ddi_pll_sel);
intel_ddi_init_dp_buf_reg(&intel_dig_port->base); intel_ddi_init_dp_buf_reg(&intel_dig_port->base);
...@@ -170,7 +171,8 @@ static void intel_mst_pre_enable_dp(struct intel_encoder *encoder) ...@@ -170,7 +171,8 @@ static void intel_mst_pre_enable_dp(struct intel_encoder *encoder)
} }
ret = drm_dp_mst_allocate_vcpi(&intel_dp->mst_mgr, ret = drm_dp_mst_allocate_vcpi(&intel_dp->mst_mgr,
intel_mst->port, intel_crtc->config.pbn, &slots); intel_mst->port,
intel_crtc->config->pbn, &slots);
if (ret == false) { if (ret == false) {
DRM_ERROR("failed to allocate vcpi\n"); DRM_ERROR("failed to allocate vcpi\n");
return; return;
...@@ -223,7 +225,7 @@ static void intel_dp_mst_enc_get_config(struct intel_encoder *encoder, ...@@ -223,7 +225,7 @@ static void intel_dp_mst_enc_get_config(struct intel_encoder *encoder,
struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
struct drm_device *dev = encoder->base.dev; struct drm_device *dev = encoder->base.dev;
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
enum transcoder cpu_transcoder = crtc->config.cpu_transcoder; enum transcoder cpu_transcoder = crtc->config->cpu_transcoder;
u32 temp, flags = 0; u32 temp, flags = 0;
pipe_config->has_dp_encoder = true; pipe_config->has_dp_encoder = true;
......
...@@ -469,7 +469,8 @@ struct intel_crtc { ...@@ -469,7 +469,8 @@ struct intel_crtc {
uint32_t cursor_base; uint32_t cursor_base;
struct intel_plane_config plane_config; struct intel_plane_config plane_config;
struct intel_crtc_state config; struct intel_crtc_state _config;
struct intel_crtc_state *config;
struct intel_crtc_state *new_config; struct intel_crtc_state *new_config;
bool new_enabled; bool new_enabled;
......
...@@ -237,7 +237,7 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder) ...@@ -237,7 +237,7 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder)
I915_WRITE(DPLL(pipe), tmp); I915_WRITE(DPLL(pipe), tmp);
/* update the hw state for DPLL */ /* update the hw state for DPLL */
intel_crtc->config.dpll_hw_state.dpll = DPLL_INTEGRATED_CLOCK_VLV | intel_crtc->config->dpll_hw_state.dpll = DPLL_INTEGRATED_CLOCK_VLV |
DPLL_REFA_CLK_ENABLE_VLV; DPLL_REFA_CLK_ENABLE_VLV;
tmp = I915_READ(DSPCLK_GATE_D); tmp = I915_READ(DSPCLK_GATE_D);
...@@ -511,7 +511,7 @@ static void set_dsi_timings(struct drm_encoder *encoder, ...@@ -511,7 +511,7 @@ static void set_dsi_timings(struct drm_encoder *encoder,
struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
enum port port; enum port port;
unsigned int bpp = intel_crtc->config.pipe_bpp; unsigned int bpp = intel_crtc->config->pipe_bpp;
unsigned int lane_count = intel_dsi->lane_count; unsigned int lane_count = intel_dsi->lane_count;
u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp; u16 hactive, hfp, hsync, hbp, vfp, vsync, vbp;
...@@ -566,9 +566,9 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder) ...@@ -566,9 +566,9 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder)
struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
struct drm_display_mode *adjusted_mode = struct drm_display_mode *adjusted_mode =
&intel_crtc->config.base.adjusted_mode; &intel_crtc->config->base.adjusted_mode;
enum port port; enum port port;
unsigned int bpp = intel_crtc->config.pipe_bpp; unsigned int bpp = intel_crtc->config->pipe_bpp;
u32 val, tmp; u32 val, tmp;
u16 mode_hdisplay; u16 mode_hdisplay;
......
...@@ -186,8 +186,8 @@ static void intel_enable_dvo(struct intel_encoder *encoder) ...@@ -186,8 +186,8 @@ static void intel_enable_dvo(struct intel_encoder *encoder)
u32 temp = I915_READ(dvo_reg); u32 temp = I915_READ(dvo_reg);
intel_dvo->dev.dev_ops->mode_set(&intel_dvo->dev, intel_dvo->dev.dev_ops->mode_set(&intel_dvo->dev,
&crtc->config.base.mode, &crtc->config->base.mode,
&crtc->config.base.adjusted_mode); &crtc->config->base.adjusted_mode);
I915_WRITE(dvo_reg, temp | DVO_ENABLE); I915_WRITE(dvo_reg, temp | DVO_ENABLE);
I915_READ(dvo_reg); I915_READ(dvo_reg);
...@@ -221,7 +221,7 @@ static void intel_dvo_dpms(struct drm_connector *connector, int mode) ...@@ -221,7 +221,7 @@ static void intel_dvo_dpms(struct drm_connector *connector, int mode)
/* We call connector dpms manually below in case pipe dpms doesn't /* We call connector dpms manually below in case pipe dpms doesn't
* change due to cloning. */ * change due to cloning. */
if (mode == DRM_MODE_DPMS_ON) { if (mode == DRM_MODE_DPMS_ON) {
config = &to_intel_crtc(crtc)->config; config = to_intel_crtc(crtc)->config;
intel_dvo->base.connectors_active = true; intel_dvo->base.connectors_active = true;
...@@ -295,7 +295,7 @@ static void intel_dvo_pre_enable(struct intel_encoder *encoder) ...@@ -295,7 +295,7 @@ static void intel_dvo_pre_enable(struct intel_encoder *encoder)
struct drm_device *dev = encoder->base.dev; struct drm_device *dev = encoder->base.dev;
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
struct drm_display_mode *adjusted_mode = &crtc->config.base.adjusted_mode; struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
struct intel_dvo *intel_dvo = enc_to_dvo(encoder); struct intel_dvo *intel_dvo = enc_to_dvo(encoder);
int pipe = crtc->pipe; int pipe = crtc->pipe;
u32 dvo_val; u32 dvo_val;
......
...@@ -542,7 +542,7 @@ void intel_fbc_update(struct drm_device *dev) ...@@ -542,7 +542,7 @@ void intel_fbc_update(struct drm_device *dev)
intel_crtc = to_intel_crtc(crtc); intel_crtc = to_intel_crtc(crtc);
fb = crtc->primary->fb; fb = crtc->primary->fb;
obj = intel_fb_obj(fb); obj = intel_fb_obj(fb);
adjusted_mode = &intel_crtc->config.base.adjusted_mode; adjusted_mode = &intel_crtc->config->base.adjusted_mode;
if (i915.enable_fbc < 0) { if (i915.enable_fbc < 0) {
if (set_no_fbc_reason(dev_priv, FBC_CHIP_DEFAULT)) if (set_no_fbc_reason(dev_priv, FBC_CHIP_DEFAULT))
...@@ -572,8 +572,8 @@ void intel_fbc_update(struct drm_device *dev) ...@@ -572,8 +572,8 @@ void intel_fbc_update(struct drm_device *dev)
max_width = 2048; max_width = 2048;
max_height = 1536; max_height = 1536;
} }
if (intel_crtc->config.pipe_src_w > max_width || if (intel_crtc->config->pipe_src_w > max_width ||
intel_crtc->config.pipe_src_h > max_height) { intel_crtc->config->pipe_src_h > max_height) {
if (set_no_fbc_reason(dev_priv, FBC_MODE_TOO_LARGE)) if (set_no_fbc_reason(dev_priv, FBC_MODE_TOO_LARGE))
DRM_DEBUG_KMS("mode too large for compression, disabling\n"); DRM_DEBUG_KMS("mode too large for compression, disabling\n");
goto out_disable; goto out_disable;
......
...@@ -443,7 +443,7 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper, ...@@ -443,7 +443,7 @@ static bool intel_fb_initial_config(struct drm_fb_helper *fb_helper,
DRM_DEBUG_KMS("looking for current mode on connector %s\n", DRM_DEBUG_KMS("looking for current mode on connector %s\n",
connector->name); connector->name);
intel_mode_from_pipe_config(&encoder->crtc->hwmode, intel_mode_from_pipe_config(&encoder->crtc->hwmode,
&to_intel_crtc(encoder->crtc)->config); to_intel_crtc(encoder->crtc)->config);
modes[i] = &encoder->crtc->hwmode; modes[i] = &encoder->crtc->hwmode;
} }
crtcs[i] = new_crtc; crtcs[i] = new_crtc;
...@@ -581,7 +581,7 @@ static bool intel_fbdev_init_bios(struct drm_device *dev, ...@@ -581,7 +581,7 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
* pipe. Note we need to use the selected fb's pitch and bpp * pipe. Note we need to use the selected fb's pitch and bpp
* rather than the current pipe's, since they differ. * rather than the current pipe's, since they differ.
*/ */
cur_size = intel_crtc->config.base.adjusted_mode.crtc_hdisplay; cur_size = intel_crtc->config->base.adjusted_mode.crtc_hdisplay;
cur_size = cur_size * fb->base.bits_per_pixel / 8; cur_size = cur_size * fb->base.bits_per_pixel / 8;
if (fb->base.pitches[0] < cur_size) { if (fb->base.pitches[0] < cur_size) {
DRM_DEBUG_KMS("fb not wide enough for plane %c (%d vs %d)\n", DRM_DEBUG_KMS("fb not wide enough for plane %c (%d vs %d)\n",
...@@ -592,13 +592,13 @@ static bool intel_fbdev_init_bios(struct drm_device *dev, ...@@ -592,13 +592,13 @@ static bool intel_fbdev_init_bios(struct drm_device *dev,
break; break;
} }
cur_size = intel_crtc->config.base.adjusted_mode.crtc_vdisplay; cur_size = intel_crtc->config->base.adjusted_mode.crtc_vdisplay;
cur_size = ALIGN(cur_size, plane_config->tiled ? (IS_GEN2(dev) ? 16 : 8) : 1); cur_size = ALIGN(cur_size, plane_config->tiled ? (IS_GEN2(dev) ? 16 : 8) : 1);
cur_size *= fb->base.pitches[0]; cur_size *= fb->base.pitches[0];
DRM_DEBUG_KMS("pipe %c area: %dx%d, bpp: %d, size: %d\n", DRM_DEBUG_KMS("pipe %c area: %dx%d, bpp: %d, size: %d\n",
pipe_name(intel_crtc->pipe), pipe_name(intel_crtc->pipe),
intel_crtc->config.base.adjusted_mode.crtc_hdisplay, intel_crtc->config->base.adjusted_mode.crtc_hdisplay,
intel_crtc->config.base.adjusted_mode.crtc_vdisplay, intel_crtc->config->base.adjusted_mode.crtc_vdisplay,
fb->base.bits_per_pixel, fb->base.bits_per_pixel,
cur_size); cur_size);
......
...@@ -337,13 +337,13 @@ static void hsw_write_infoframe(struct drm_encoder *encoder, ...@@ -337,13 +337,13 @@ static void hsw_write_infoframe(struct drm_encoder *encoder,
struct drm_device *dev = encoder->dev; struct drm_device *dev = encoder->dev;
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
u32 ctl_reg = HSW_TVIDEO_DIP_CTL(intel_crtc->config.cpu_transcoder); u32 ctl_reg = HSW_TVIDEO_DIP_CTL(intel_crtc->config->cpu_transcoder);
u32 data_reg; u32 data_reg;
int i; int i;
u32 val = I915_READ(ctl_reg); u32 val = I915_READ(ctl_reg);
data_reg = hsw_infoframe_data_reg(type, data_reg = hsw_infoframe_data_reg(type,
intel_crtc->config.cpu_transcoder, intel_crtc->config->cpu_transcoder,
dev_priv); dev_priv);
if (data_reg == 0) if (data_reg == 0)
return; return;
...@@ -371,7 +371,7 @@ static bool hsw_infoframe_enabled(struct drm_encoder *encoder) ...@@ -371,7 +371,7 @@ static bool hsw_infoframe_enabled(struct drm_encoder *encoder)
struct drm_device *dev = encoder->dev; struct drm_device *dev = encoder->dev;
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
u32 ctl_reg = HSW_TVIDEO_DIP_CTL(intel_crtc->config.cpu_transcoder); u32 ctl_reg = HSW_TVIDEO_DIP_CTL(intel_crtc->config->cpu_transcoder);
u32 val = I915_READ(ctl_reg); u32 val = I915_READ(ctl_reg);
return val & (VIDEO_DIP_ENABLE_AVI_HSW | VIDEO_DIP_ENABLE_SPD_HSW | return val & (VIDEO_DIP_ENABLE_AVI_HSW | VIDEO_DIP_ENABLE_SPD_HSW |
...@@ -436,7 +436,7 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, ...@@ -436,7 +436,7 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
} }
if (intel_hdmi->rgb_quant_range_selectable) { if (intel_hdmi->rgb_quant_range_selectable) {
if (intel_crtc->config.limited_color_range) if (intel_crtc->config->limited_color_range)
frame.avi.quantization_range = frame.avi.quantization_range =
HDMI_QUANTIZATION_RANGE_LIMITED; HDMI_QUANTIZATION_RANGE_LIMITED;
else else
...@@ -672,7 +672,7 @@ static void hsw_set_infoframes(struct drm_encoder *encoder, ...@@ -672,7 +672,7 @@ static void hsw_set_infoframes(struct drm_encoder *encoder,
struct drm_i915_private *dev_priv = encoder->dev->dev_private; struct drm_i915_private *dev_priv = encoder->dev->dev_private;
struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc);
struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder);
u32 reg = HSW_TVIDEO_DIP_CTL(intel_crtc->config.cpu_transcoder); u32 reg = HSW_TVIDEO_DIP_CTL(intel_crtc->config->cpu_transcoder);
u32 val = I915_READ(reg); u32 val = I915_READ(reg);
assert_hdmi_port_disabled(intel_hdmi); assert_hdmi_port_disabled(intel_hdmi);
...@@ -700,7 +700,7 @@ static void intel_hdmi_prepare(struct intel_encoder *encoder) ...@@ -700,7 +700,7 @@ static void intel_hdmi_prepare(struct intel_encoder *encoder)
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
struct drm_display_mode *adjusted_mode = &crtc->config.base.adjusted_mode; struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
u32 hdmi_val; u32 hdmi_val;
hdmi_val = SDVO_ENCODING_HDMI; hdmi_val = SDVO_ENCODING_HDMI;
...@@ -711,12 +711,12 @@ static void intel_hdmi_prepare(struct intel_encoder *encoder) ...@@ -711,12 +711,12 @@ static void intel_hdmi_prepare(struct intel_encoder *encoder)
if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC)
hdmi_val |= SDVO_HSYNC_ACTIVE_HIGH; hdmi_val |= SDVO_HSYNC_ACTIVE_HIGH;
if (crtc->config.pipe_bpp > 24) if (crtc->config->pipe_bpp > 24)
hdmi_val |= HDMI_COLOR_FORMAT_12bpc; hdmi_val |= HDMI_COLOR_FORMAT_12bpc;
else else
hdmi_val |= SDVO_COLOR_FORMAT_8bpc; hdmi_val |= SDVO_COLOR_FORMAT_8bpc;
if (crtc->config.has_hdmi_sink) if (crtc->config->has_hdmi_sink)
hdmi_val |= HDMI_MODE_SELECT_HDMI; hdmi_val |= HDMI_MODE_SELECT_HDMI;
if (HAS_PCH_CPT(dev)) if (HAS_PCH_CPT(dev))
...@@ -814,7 +814,7 @@ static void intel_enable_hdmi(struct intel_encoder *encoder) ...@@ -814,7 +814,7 @@ static void intel_enable_hdmi(struct intel_encoder *encoder)
u32 temp; u32 temp;
u32 enable_bits = SDVO_ENABLE; u32 enable_bits = SDVO_ENABLE;
if (intel_crtc->config.has_audio) if (intel_crtc->config->has_audio)
enable_bits |= SDVO_AUDIO_ENABLE; enable_bits |= SDVO_AUDIO_ENABLE;
temp = I915_READ(intel_hdmi->hdmi_reg); temp = I915_READ(intel_hdmi->hdmi_reg);
...@@ -845,8 +845,8 @@ static void intel_enable_hdmi(struct intel_encoder *encoder) ...@@ -845,8 +845,8 @@ static void intel_enable_hdmi(struct intel_encoder *encoder)
POSTING_READ(intel_hdmi->hdmi_reg); POSTING_READ(intel_hdmi->hdmi_reg);
} }
if (intel_crtc->config.has_audio) { if (intel_crtc->config->has_audio) {
WARN_ON(!intel_crtc->config.has_hdmi_sink); WARN_ON(!intel_crtc->config->has_hdmi_sink);
DRM_DEBUG_DRIVER("Enabling HDMI audio on pipe %c\n", DRM_DEBUG_DRIVER("Enabling HDMI audio on pipe %c\n",
pipe_name(intel_crtc->pipe)); pipe_name(intel_crtc->pipe));
intel_audio_codec_enable(encoder); intel_audio_codec_enable(encoder);
...@@ -866,7 +866,7 @@ static void intel_disable_hdmi(struct intel_encoder *encoder) ...@@ -866,7 +866,7 @@ static void intel_disable_hdmi(struct intel_encoder *encoder)
u32 temp; u32 temp;
u32 enable_bits = SDVO_ENABLE | SDVO_AUDIO_ENABLE; u32 enable_bits = SDVO_ENABLE | SDVO_AUDIO_ENABLE;
if (crtc->config.has_audio) if (crtc->config->has_audio)
intel_audio_codec_disable(encoder); intel_audio_codec_disable(encoder);
temp = I915_READ(intel_hdmi->hdmi_reg); temp = I915_READ(intel_hdmi->hdmi_reg);
...@@ -1252,12 +1252,12 @@ static void intel_hdmi_pre_enable(struct intel_encoder *encoder) ...@@ -1252,12 +1252,12 @@ static void intel_hdmi_pre_enable(struct intel_encoder *encoder)
struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base);
struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
struct drm_display_mode *adjusted_mode = struct drm_display_mode *adjusted_mode =
&intel_crtc->config.base.adjusted_mode; &intel_crtc->config->base.adjusted_mode;
intel_hdmi_prepare(encoder); intel_hdmi_prepare(encoder);
intel_hdmi->set_infoframes(&encoder->base, intel_hdmi->set_infoframes(&encoder->base,
intel_crtc->config.has_hdmi_sink, intel_crtc->config->has_hdmi_sink,
adjusted_mode); adjusted_mode);
} }
...@@ -1270,7 +1270,7 @@ static void vlv_hdmi_pre_enable(struct intel_encoder *encoder) ...@@ -1270,7 +1270,7 @@ static void vlv_hdmi_pre_enable(struct intel_encoder *encoder)
struct intel_crtc *intel_crtc = struct intel_crtc *intel_crtc =
to_intel_crtc(encoder->base.crtc); to_intel_crtc(encoder->base.crtc);
struct drm_display_mode *adjusted_mode = struct drm_display_mode *adjusted_mode =
&intel_crtc->config.base.adjusted_mode; &intel_crtc->config->base.adjusted_mode;
enum dpio_channel port = vlv_dport_to_channel(dport); enum dpio_channel port = vlv_dport_to_channel(dport);
int pipe = intel_crtc->pipe; int pipe = intel_crtc->pipe;
u32 val; u32 val;
...@@ -1302,7 +1302,7 @@ static void vlv_hdmi_pre_enable(struct intel_encoder *encoder) ...@@ -1302,7 +1302,7 @@ static void vlv_hdmi_pre_enable(struct intel_encoder *encoder)
mutex_unlock(&dev_priv->dpio_lock); mutex_unlock(&dev_priv->dpio_lock);
intel_hdmi->set_infoframes(&encoder->base, intel_hdmi->set_infoframes(&encoder->base,
intel_crtc->config.has_hdmi_sink, intel_crtc->config->has_hdmi_sink,
adjusted_mode); adjusted_mode);
intel_enable_hdmi(encoder); intel_enable_hdmi(encoder);
...@@ -1467,7 +1467,7 @@ static void chv_hdmi_pre_enable(struct intel_encoder *encoder) ...@@ -1467,7 +1467,7 @@ static void chv_hdmi_pre_enable(struct intel_encoder *encoder)
struct intel_crtc *intel_crtc = struct intel_crtc *intel_crtc =
to_intel_crtc(encoder->base.crtc); to_intel_crtc(encoder->base.crtc);
struct drm_display_mode *adjusted_mode = struct drm_display_mode *adjusted_mode =
&intel_crtc->config.base.adjusted_mode; &intel_crtc->config->base.adjusted_mode;
enum dpio_channel ch = vlv_dport_to_channel(dport); enum dpio_channel ch = vlv_dport_to_channel(dport);
int pipe = intel_crtc->pipe; int pipe = intel_crtc->pipe;
int data, i; int data, i;
...@@ -1593,7 +1593,7 @@ static void chv_hdmi_pre_enable(struct intel_encoder *encoder) ...@@ -1593,7 +1593,7 @@ static void chv_hdmi_pre_enable(struct intel_encoder *encoder)
mutex_unlock(&dev_priv->dpio_lock); mutex_unlock(&dev_priv->dpio_lock);
intel_hdmi->set_infoframes(&encoder->base, intel_hdmi->set_infoframes(&encoder->base,
intel_crtc->config.has_hdmi_sink, intel_crtc->config->has_hdmi_sink,
adjusted_mode); adjusted_mode);
intel_enable_hdmi(encoder); intel_enable_hdmi(encoder);
......
...@@ -139,7 +139,7 @@ static void intel_pre_enable_lvds(struct intel_encoder *encoder) ...@@ -139,7 +139,7 @@ static void intel_pre_enable_lvds(struct intel_encoder *encoder)
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
const struct drm_display_mode *adjusted_mode = const struct drm_display_mode *adjusted_mode =
&crtc->config.base.adjusted_mode; &crtc->config->base.adjusted_mode;
int pipe = crtc->pipe; int pipe = crtc->pipe;
u32 temp; u32 temp;
...@@ -167,7 +167,7 @@ static void intel_pre_enable_lvds(struct intel_encoder *encoder) ...@@ -167,7 +167,7 @@ static void intel_pre_enable_lvds(struct intel_encoder *encoder)
/* set the corresponsding LVDS_BORDER bit */ /* set the corresponsding LVDS_BORDER bit */
temp &= ~LVDS_BORDER_ENABLE; temp &= ~LVDS_BORDER_ENABLE;
temp |= crtc->config.gmch_pfit.lvds_border_bits; temp |= crtc->config->gmch_pfit.lvds_border_bits;
/* Set the B0-B3 data pairs corresponding to whether we're going to /* Set the B0-B3 data pairs corresponding to whether we're going to
* set the DPLLs for dual-channel mode or not. * set the DPLLs for dual-channel mode or not.
*/ */
...@@ -190,7 +190,7 @@ static void intel_pre_enable_lvds(struct intel_encoder *encoder) ...@@ -190,7 +190,7 @@ static void intel_pre_enable_lvds(struct intel_encoder *encoder)
if (INTEL_INFO(dev)->gen == 4) { if (INTEL_INFO(dev)->gen == 4) {
/* Bspec wording suggests that LVDS port dithering only exists /* Bspec wording suggests that LVDS port dithering only exists
* for 18bpp panels. */ * for 18bpp panels. */
if (crtc->config.dither && crtc->config.pipe_bpp == 18) if (crtc->config->dither && crtc->config->pipe_bpp == 18)
temp |= LVDS_ENABLE_DITHER; temp |= LVDS_ENABLE_DITHER;
else else
temp &= ~LVDS_ENABLE_DITHER; temp &= ~LVDS_ENABLE_DITHER;
......
...@@ -856,7 +856,7 @@ static int check_overlay_possible_on_crtc(struct intel_overlay *overlay, ...@@ -856,7 +856,7 @@ static int check_overlay_possible_on_crtc(struct intel_overlay *overlay,
return -EINVAL; return -EINVAL;
/* can't use the overlay with double wide pipe */ /* can't use the overlay with double wide pipe */
if (crtc->config.double_wide) if (crtc->config->double_wide)
return -EINVAL; return -EINVAL;
return 0; return 0;
......
...@@ -539,7 +539,7 @@ static void pineview_update_wm(struct drm_crtc *unused_crtc) ...@@ -539,7 +539,7 @@ static void pineview_update_wm(struct drm_crtc *unused_crtc)
int pixel_size = crtc->primary->fb->bits_per_pixel / 8; int pixel_size = crtc->primary->fb->bits_per_pixel / 8;
int clock; int clock;
adjusted_mode = &to_intel_crtc(crtc)->config.base.adjusted_mode; adjusted_mode = &to_intel_crtc(crtc)->config->base.adjusted_mode;
clock = adjusted_mode->crtc_clock; clock = adjusted_mode->crtc_clock;
/* Display SR */ /* Display SR */
...@@ -608,10 +608,10 @@ static bool g4x_compute_wm0(struct drm_device *dev, ...@@ -608,10 +608,10 @@ static bool g4x_compute_wm0(struct drm_device *dev,
return false; return false;
} }
adjusted_mode = &to_intel_crtc(crtc)->config.base.adjusted_mode; adjusted_mode = &to_intel_crtc(crtc)->config->base.adjusted_mode;
clock = adjusted_mode->crtc_clock; clock = adjusted_mode->crtc_clock;
htotal = adjusted_mode->crtc_htotal; htotal = adjusted_mode->crtc_htotal;
hdisplay = to_intel_crtc(crtc)->config.pipe_src_w; hdisplay = to_intel_crtc(crtc)->config->pipe_src_w;
pixel_size = crtc->primary->fb->bits_per_pixel / 8; pixel_size = crtc->primary->fb->bits_per_pixel / 8;
/* Use the small buffer method to calculate plane watermark */ /* Use the small buffer method to calculate plane watermark */
...@@ -695,10 +695,10 @@ static bool g4x_compute_srwm(struct drm_device *dev, ...@@ -695,10 +695,10 @@ static bool g4x_compute_srwm(struct drm_device *dev,
} }
crtc = intel_get_crtc_for_plane(dev, plane); crtc = intel_get_crtc_for_plane(dev, plane);
adjusted_mode = &to_intel_crtc(crtc)->config.base.adjusted_mode; adjusted_mode = &to_intel_crtc(crtc)->config->base.adjusted_mode;
clock = adjusted_mode->crtc_clock; clock = adjusted_mode->crtc_clock;
htotal = adjusted_mode->crtc_htotal; htotal = adjusted_mode->crtc_htotal;
hdisplay = to_intel_crtc(crtc)->config.pipe_src_w; hdisplay = to_intel_crtc(crtc)->config->pipe_src_w;
pixel_size = crtc->primary->fb->bits_per_pixel / 8; pixel_size = crtc->primary->fb->bits_per_pixel / 8;
line_time_us = max(htotal * 1000 / clock, 1); line_time_us = max(htotal * 1000 / clock, 1);
...@@ -729,7 +729,7 @@ static bool vlv_compute_drain_latency(struct drm_crtc *crtc, ...@@ -729,7 +729,7 @@ static bool vlv_compute_drain_latency(struct drm_crtc *crtc,
{ {
struct drm_device *dev = crtc->dev; struct drm_device *dev = crtc->dev;
int entries; int entries;
int clock = to_intel_crtc(crtc)->config.base.adjusted_mode.crtc_clock; int clock = to_intel_crtc(crtc)->config->base.adjusted_mode.crtc_clock;
if (WARN(clock == 0, "Pixel clock is zero!\n")) if (WARN(clock == 0, "Pixel clock is zero!\n"))
return false; return false;
...@@ -1059,10 +1059,10 @@ static void i965_update_wm(struct drm_crtc *unused_crtc) ...@@ -1059,10 +1059,10 @@ static void i965_update_wm(struct drm_crtc *unused_crtc)
/* self-refresh has much higher latency */ /* self-refresh has much higher latency */
static const int sr_latency_ns = 12000; static const int sr_latency_ns = 12000;
const struct drm_display_mode *adjusted_mode = const struct drm_display_mode *adjusted_mode =
&to_intel_crtc(crtc)->config.base.adjusted_mode; &to_intel_crtc(crtc)->config->base.adjusted_mode;
int clock = adjusted_mode->crtc_clock; int clock = adjusted_mode->crtc_clock;
int htotal = adjusted_mode->crtc_htotal; int htotal = adjusted_mode->crtc_htotal;
int hdisplay = to_intel_crtc(crtc)->config.pipe_src_w; int hdisplay = to_intel_crtc(crtc)->config->pipe_src_w;
int pixel_size = crtc->primary->fb->bits_per_pixel / 8; int pixel_size = crtc->primary->fb->bits_per_pixel / 8;
unsigned long line_time_us; unsigned long line_time_us;
int entries; int entries;
...@@ -1144,7 +1144,7 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc) ...@@ -1144,7 +1144,7 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc)
if (IS_GEN2(dev)) if (IS_GEN2(dev))
cpp = 4; cpp = 4;
adjusted_mode = &to_intel_crtc(crtc)->config.base.adjusted_mode; adjusted_mode = &to_intel_crtc(crtc)->config->base.adjusted_mode;
planea_wm = intel_calculate_wm(adjusted_mode->crtc_clock, planea_wm = intel_calculate_wm(adjusted_mode->crtc_clock,
wm_info, fifo_size, cpp, wm_info, fifo_size, cpp,
pessimal_latency_ns); pessimal_latency_ns);
...@@ -1166,7 +1166,7 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc) ...@@ -1166,7 +1166,7 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc)
if (IS_GEN2(dev)) if (IS_GEN2(dev))
cpp = 4; cpp = 4;
adjusted_mode = &to_intel_crtc(crtc)->config.base.adjusted_mode; adjusted_mode = &to_intel_crtc(crtc)->config->base.adjusted_mode;
planeb_wm = intel_calculate_wm(adjusted_mode->crtc_clock, planeb_wm = intel_calculate_wm(adjusted_mode->crtc_clock,
wm_info, fifo_size, cpp, wm_info, fifo_size, cpp,
pessimal_latency_ns); pessimal_latency_ns);
...@@ -1205,10 +1205,10 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc) ...@@ -1205,10 +1205,10 @@ static void i9xx_update_wm(struct drm_crtc *unused_crtc)
/* self-refresh has much higher latency */ /* self-refresh has much higher latency */
static const int sr_latency_ns = 6000; static const int sr_latency_ns = 6000;
const struct drm_display_mode *adjusted_mode = const struct drm_display_mode *adjusted_mode =
&to_intel_crtc(enabled)->config.base.adjusted_mode; &to_intel_crtc(enabled)->config->base.adjusted_mode;
int clock = adjusted_mode->crtc_clock; int clock = adjusted_mode->crtc_clock;
int htotal = adjusted_mode->crtc_htotal; int htotal = adjusted_mode->crtc_htotal;
int hdisplay = to_intel_crtc(enabled)->config.pipe_src_w; int hdisplay = to_intel_crtc(enabled)->config->pipe_src_w;
int pixel_size = enabled->primary->fb->bits_per_pixel / 8; int pixel_size = enabled->primary->fb->bits_per_pixel / 8;
unsigned long line_time_us; unsigned long line_time_us;
int entries; int entries;
...@@ -1261,7 +1261,7 @@ static void i845_update_wm(struct drm_crtc *unused_crtc) ...@@ -1261,7 +1261,7 @@ static void i845_update_wm(struct drm_crtc *unused_crtc)
if (crtc == NULL) if (crtc == NULL)
return; return;
adjusted_mode = &to_intel_crtc(crtc)->config.base.adjusted_mode; adjusted_mode = &to_intel_crtc(crtc)->config->base.adjusted_mode;
planea_wm = intel_calculate_wm(adjusted_mode->crtc_clock, planea_wm = intel_calculate_wm(adjusted_mode->crtc_clock,
&i845_wm_info, &i845_wm_info,
dev_priv->display.get_fifo_size(dev, 0), dev_priv->display.get_fifo_size(dev, 0),
...@@ -1280,17 +1280,17 @@ static uint32_t ilk_pipe_pixel_rate(struct drm_device *dev, ...@@ -1280,17 +1280,17 @@ static uint32_t ilk_pipe_pixel_rate(struct drm_device *dev,
struct intel_crtc *intel_crtc = to_intel_crtc(crtc); struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
uint32_t pixel_rate; uint32_t pixel_rate;
pixel_rate = intel_crtc->config.base.adjusted_mode.crtc_clock; pixel_rate = intel_crtc->config->base.adjusted_mode.crtc_clock;
/* We only use IF-ID interlacing. If we ever use PF-ID we'll need to /* We only use IF-ID interlacing. If we ever use PF-ID we'll need to
* adjust the pixel_rate here. */ * adjust the pixel_rate here. */
if (intel_crtc->config.pch_pfit.enabled) { if (intel_crtc->config->pch_pfit.enabled) {
uint64_t pipe_w, pipe_h, pfit_w, pfit_h; uint64_t pipe_w, pipe_h, pfit_w, pfit_h;
uint32_t pfit_size = intel_crtc->config.pch_pfit.size; uint32_t pfit_size = intel_crtc->config->pch_pfit.size;
pipe_w = intel_crtc->config.pipe_src_w; pipe_w = intel_crtc->config->pipe_src_w;
pipe_h = intel_crtc->config.pipe_src_h; pipe_h = intel_crtc->config->pipe_src_h;
pfit_w = (pfit_size >> 16) & 0xFFFF; pfit_w = (pfit_size >> 16) & 0xFFFF;
pfit_h = pfit_size & 0xFFFF; pfit_h = pfit_size & 0xFFFF;
if (pipe_w < pfit_w) if (pipe_w < pfit_w)
...@@ -1643,7 +1643,7 @@ hsw_compute_linetime_wm(struct drm_device *dev, struct drm_crtc *crtc) ...@@ -1643,7 +1643,7 @@ hsw_compute_linetime_wm(struct drm_device *dev, struct drm_crtc *crtc)
{ {
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_crtc *intel_crtc = to_intel_crtc(crtc); struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
struct drm_display_mode *mode = &intel_crtc->config.base.adjusted_mode; struct drm_display_mode *mode = &intel_crtc->config->base.adjusted_mode;
u32 linetime, ips_linetime; u32 linetime, ips_linetime;
if (!intel_crtc_active(crtc)) if (!intel_crtc_active(crtc))
...@@ -1903,11 +1903,11 @@ static void ilk_compute_wm_parameters(struct drm_crtc *crtc, ...@@ -1903,11 +1903,11 @@ static void ilk_compute_wm_parameters(struct drm_crtc *crtc,
return; return;
p->active = true; p->active = true;
p->pipe_htotal = intel_crtc->config.base.adjusted_mode.crtc_htotal; p->pipe_htotal = intel_crtc->config->base.adjusted_mode.crtc_htotal;
p->pixel_rate = ilk_pipe_pixel_rate(dev, crtc); p->pixel_rate = ilk_pipe_pixel_rate(dev, crtc);
p->pri.bytes_per_pixel = crtc->primary->fb->bits_per_pixel / 8; p->pri.bytes_per_pixel = crtc->primary->fb->bits_per_pixel / 8;
p->cur.bytes_per_pixel = 4; p->cur.bytes_per_pixel = 4;
p->pri.horiz_pixels = intel_crtc->config.pipe_src_w; p->pri.horiz_pixels = intel_crtc->config->pipe_src_w;
p->cur.horiz_pixels = intel_crtc->cursor_width; p->cur.horiz_pixels = intel_crtc->cursor_width;
/* TODO: for now, assume primary and cursor planes are always enabled. */ /* TODO: for now, assume primary and cursor planes are always enabled. */
p->pri.enabled = true; p->pri.enabled = true;
...@@ -2647,8 +2647,8 @@ static void skl_compute_wm_pipe_parameters(struct drm_crtc *crtc, ...@@ -2647,8 +2647,8 @@ static void skl_compute_wm_pipe_parameters(struct drm_crtc *crtc,
p->active = intel_crtc_active(crtc); p->active = intel_crtc_active(crtc);
if (p->active) { if (p->active) {
p->pipe_htotal = intel_crtc->config.base.adjusted_mode.crtc_htotal; p->pipe_htotal = intel_crtc->config->base.adjusted_mode.crtc_htotal;
p->pixel_rate = skl_pipe_pixel_rate(&intel_crtc->config); p->pixel_rate = skl_pipe_pixel_rate(intel_crtc->config);
/* /*
* For now, assume primary and cursor planes are always enabled. * For now, assume primary and cursor planes are always enabled.
...@@ -2656,8 +2656,8 @@ static void skl_compute_wm_pipe_parameters(struct drm_crtc *crtc, ...@@ -2656,8 +2656,8 @@ static void skl_compute_wm_pipe_parameters(struct drm_crtc *crtc,
p->plane[0].enabled = true; p->plane[0].enabled = true;
p->plane[0].bytes_per_pixel = p->plane[0].bytes_per_pixel =
crtc->primary->fb->bits_per_pixel / 8; crtc->primary->fb->bits_per_pixel / 8;
p->plane[0].horiz_pixels = intel_crtc->config.pipe_src_w; p->plane[0].horiz_pixels = intel_crtc->config->pipe_src_w;
p->plane[0].vert_pixels = intel_crtc->config.pipe_src_h; p->plane[0].vert_pixels = intel_crtc->config->pipe_src_h;
p->cursor.enabled = true; p->cursor.enabled = true;
p->cursor.bytes_per_pixel = 4; p->cursor.bytes_per_pixel = 4;
......
...@@ -79,8 +79,8 @@ static void intel_psr_write_vsc(struct intel_dp *intel_dp, ...@@ -79,8 +79,8 @@ static void intel_psr_write_vsc(struct intel_dp *intel_dp,
struct drm_device *dev = dig_port->base.base.dev; struct drm_device *dev = dig_port->base.base.dev;
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_crtc *crtc = to_intel_crtc(dig_port->base.base.crtc); struct intel_crtc *crtc = to_intel_crtc(dig_port->base.base.crtc);
u32 ctl_reg = HSW_TVIDEO_DIP_CTL(crtc->config.cpu_transcoder); u32 ctl_reg = HSW_TVIDEO_DIP_CTL(crtc->config->cpu_transcoder);
u32 data_reg = HSW_TVIDEO_DIP_VSC_DATA(crtc->config.cpu_transcoder); u32 data_reg = HSW_TVIDEO_DIP_VSC_DATA(crtc->config->cpu_transcoder);
uint32_t *data = (uint32_t *) vsc_psr; uint32_t *data = (uint32_t *) vsc_psr;
unsigned int i; unsigned int i;
...@@ -263,14 +263,14 @@ static bool intel_psr_match_conditions(struct intel_dp *intel_dp) ...@@ -263,14 +263,14 @@ static bool intel_psr_match_conditions(struct intel_dp *intel_dp)
} }
if (IS_HASWELL(dev) && if (IS_HASWELL(dev) &&
I915_READ(HSW_STEREO_3D_CTL(intel_crtc->config.cpu_transcoder)) & I915_READ(HSW_STEREO_3D_CTL(intel_crtc->config->cpu_transcoder)) &
S3D_ENABLE) { S3D_ENABLE) {
DRM_DEBUG_KMS("PSR condition failed: Stereo 3D is Enabled\n"); DRM_DEBUG_KMS("PSR condition failed: Stereo 3D is Enabled\n");
return false; return false;
} }
if (IS_HASWELL(dev) && if (IS_HASWELL(dev) &&
intel_crtc->config.base.adjusted_mode.flags & DRM_MODE_FLAG_INTERLACE) { intel_crtc->config->base.adjusted_mode.flags & DRM_MODE_FLAG_INTERLACE) {
DRM_DEBUG_KMS("PSR condition failed: Interlaced is Enabled\n"); DRM_DEBUG_KMS("PSR condition failed: Interlaced is Enabled\n");
return false; return false;
} }
......
...@@ -1007,7 +1007,7 @@ static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo, ...@@ -1007,7 +1007,7 @@ static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo,
} }
if (intel_sdvo->rgb_quant_range_selectable) { if (intel_sdvo->rgb_quant_range_selectable) {
if (intel_crtc->config.limited_color_range) if (intel_crtc->config->limited_color_range)
frame.avi.quantization_range = frame.avi.quantization_range =
HDMI_QUANTIZATION_RANGE_LIMITED; HDMI_QUANTIZATION_RANGE_LIMITED;
else else
...@@ -1181,8 +1181,8 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder) ...@@ -1181,8 +1181,8 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder)
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
struct intel_crtc *crtc = to_intel_crtc(intel_encoder->base.crtc); struct intel_crtc *crtc = to_intel_crtc(intel_encoder->base.crtc);
struct drm_display_mode *adjusted_mode = struct drm_display_mode *adjusted_mode =
&crtc->config.base.adjusted_mode; &crtc->config->base.adjusted_mode;
struct drm_display_mode *mode = &crtc->config.base.mode; struct drm_display_mode *mode = &crtc->config->base.mode;
struct intel_sdvo *intel_sdvo = to_sdvo(intel_encoder); struct intel_sdvo *intel_sdvo = to_sdvo(intel_encoder);
u32 sdvox; u32 sdvox;
struct intel_sdvo_in_out_map in_out; struct intel_sdvo_in_out_map in_out;
...@@ -1224,7 +1224,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder) ...@@ -1224,7 +1224,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder)
if (!intel_sdvo_set_target_input(intel_sdvo)) if (!intel_sdvo_set_target_input(intel_sdvo))
return; return;
if (crtc->config.has_hdmi_sink) { if (crtc->config->has_hdmi_sink) {
intel_sdvo_set_encode(intel_sdvo, SDVO_ENCODE_HDMI); intel_sdvo_set_encode(intel_sdvo, SDVO_ENCODE_HDMI);
intel_sdvo_set_colorimetry(intel_sdvo, intel_sdvo_set_colorimetry(intel_sdvo,
SDVO_COLORIMETRY_RGB256); SDVO_COLORIMETRY_RGB256);
...@@ -1244,7 +1244,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder) ...@@ -1244,7 +1244,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder)
DRM_INFO("Setting input timings on %s failed\n", DRM_INFO("Setting input timings on %s failed\n",
SDVO_NAME(intel_sdvo)); SDVO_NAME(intel_sdvo));
switch (crtc->config.pixel_multiplier) { switch (crtc->config->pixel_multiplier) {
default: default:
WARN(1, "unknown pixel mutlipler specified\n"); WARN(1, "unknown pixel mutlipler specified\n");
case 1: rate = SDVO_CLOCK_RATE_MULT_1X; break; case 1: rate = SDVO_CLOCK_RATE_MULT_1X; break;
...@@ -1259,7 +1259,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder) ...@@ -1259,7 +1259,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder)
/* The real mode polarity is set by the SDVO commands, using /* The real mode polarity is set by the SDVO commands, using
* struct intel_sdvo_dtd. */ * struct intel_sdvo_dtd. */
sdvox = SDVO_VSYNC_ACTIVE_HIGH | SDVO_HSYNC_ACTIVE_HIGH; sdvox = SDVO_VSYNC_ACTIVE_HIGH | SDVO_HSYNC_ACTIVE_HIGH;
if (!HAS_PCH_SPLIT(dev) && crtc->config.limited_color_range) if (!HAS_PCH_SPLIT(dev) && crtc->config->limited_color_range)
sdvox |= HDMI_COLOR_RANGE_16_235; sdvox |= HDMI_COLOR_RANGE_16_235;
if (INTEL_INFO(dev)->gen < 5) if (INTEL_INFO(dev)->gen < 5)
sdvox |= SDVO_BORDER_ENABLE; sdvox |= SDVO_BORDER_ENABLE;
...@@ -1289,7 +1289,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder) ...@@ -1289,7 +1289,7 @@ static void intel_sdvo_pre_enable(struct intel_encoder *intel_encoder)
} else if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) { } else if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) {
/* done in crtc_mode_set as it lives inside the dpll register */ /* done in crtc_mode_set as it lives inside the dpll register */
} else { } else {
sdvox |= (crtc->config.pixel_multiplier - 1) sdvox |= (crtc->config->pixel_multiplier - 1)
<< SDVO_PORT_MULTIPLY_SHIFT; << SDVO_PORT_MULTIPLY_SHIFT;
} }
......
...@@ -80,7 +80,7 @@ static int usecs_to_scanlines(const struct drm_display_mode *mode, int usecs) ...@@ -80,7 +80,7 @@ static int usecs_to_scanlines(const struct drm_display_mode *mode, int usecs)
bool intel_pipe_update_start(struct intel_crtc *crtc, uint32_t *start_vbl_count) bool intel_pipe_update_start(struct intel_crtc *crtc, uint32_t *start_vbl_count)
{ {
struct drm_device *dev = crtc->base.dev; struct drm_device *dev = crtc->base.dev;
const struct drm_display_mode *mode = &crtc->config.base.adjusted_mode; const struct drm_display_mode *mode = &crtc->config->base.adjusted_mode;
enum pipe pipe = crtc->pipe; enum pipe pipe = crtc->pipe;
long timeout = msecs_to_jiffies_timeout(1); long timeout = msecs_to_jiffies_timeout(1);
int scanline, min, max, vblank_start; int scanline, min, max, vblank_start;
......
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