Message ID | 2e79909f8a060d7ff1744911f8da9300eb1f225c.1739378095.git.jani.nikula@intel.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drm/i915/display: conversions to struct intel_display | expand |
> -----Original Message----- > From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Jani > Nikula > Sent: Wednesday, February 12, 2025 10:07 PM > To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org > Cc: Nikula, Jani <jani.nikula@intel.com> > Subject: [PATCH 08/14] drm/i915/sdvo: convert intel_sdvo.[ch] to struct > intel_display > > Going forward, struct intel_display is the main display device data pointer. > Convert as much as possible of intel_sdvo.[ch] to struct intel_display. > > Signed-off-by: Jani Nikula <jani.nikula@intel.com> > --- > drivers/gpu/drm/i915/display/g4x_hdmi.c | 3 +- > drivers/gpu/drm/i915/display/intel_display.c | 6 +- > .../gpu/drm/i915/display/intel_pch_display.c | 2 +- > drivers/gpu/drm/i915/display/intel_sdvo.c | 281 +++++++++--------- > drivers/gpu/drm/i915/display/intel_sdvo.h | 10 +- > 5 files changed, 150 insertions(+), 152 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/g4x_hdmi.c > b/drivers/gpu/drm/i915/display/g4x_hdmi.c > index 089f1a4d7720..5c5eb3d621c8 100644 > --- a/drivers/gpu/drm/i915/display/g4x_hdmi.c > +++ b/drivers/gpu/drm/i915/display/g4x_hdmi.c > @@ -67,7 +67,6 @@ static bool intel_hdmi_get_hw_state(struct > intel_encoder *encoder, > enum pipe *pipe) > { > struct intel_display *display = to_intel_display(encoder); > - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); > intel_wakeref_t wakeref; > bool ret; > @@ -77,7 +76,7 @@ static bool intel_hdmi_get_hw_state(struct > intel_encoder *encoder, > if (!wakeref) > return false; > > - ret = intel_sdvo_port_enabled(dev_priv, intel_hdmi->hdmi_reg, > pipe); > + ret = intel_sdvo_port_enabled(display, intel_hdmi->hdmi_reg, pipe); > > intel_display_power_put(display, encoder->power_domain, > wakeref); > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c > b/drivers/gpu/drm/i915/display/intel_display.c > index 9bcbd52f23cf..e1186f46088d 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -8236,7 +8236,7 @@ void intel_setup_outputs(struct drm_i915_private > *dev_priv) > > if (intel_de_read(dev_priv, PCH_HDMIB) & SDVO_DETECTED) > { > /* PCH SDVOB multiplex with HDMIB */ > - found = intel_sdvo_init(dev_priv, PCH_SDVOB, > PORT_B); > + found = intel_sdvo_init(display, PCH_SDVOB, > PORT_B); > if (!found) > g4x_hdmi_init(display, PCH_HDMIB, > PORT_B); > if (!found && (intel_de_read(dev_priv, PCH_DP_B) & > DP_DETECTED)) @@ -8315,7 +8315,7 @@ void intel_setup_outputs(struct > drm_i915_private *dev_priv) > > if (intel_de_read(dev_priv, GEN3_SDVOB) & > SDVO_DETECTED) { > drm_dbg_kms(&dev_priv->drm, "probing SDVOB\n"); > - found = intel_sdvo_init(dev_priv, GEN3_SDVOB, > PORT_B); > + found = intel_sdvo_init(display, GEN3_SDVOB, > PORT_B); > if (!found && IS_G4X(dev_priv)) { > drm_dbg_kms(&dev_priv->drm, > "probing HDMI on SDVOB\n"); > @@ -8330,7 +8330,7 @@ void intel_setup_outputs(struct drm_i915_private > *dev_priv) > > if (intel_de_read(dev_priv, GEN3_SDVOB) & > SDVO_DETECTED) { > drm_dbg_kms(&dev_priv->drm, "probing SDVOC\n"); > - found = intel_sdvo_init(dev_priv, GEN3_SDVOC, > PORT_C); > + found = intel_sdvo_init(display, GEN3_SDVOC, > PORT_C); > } > > if (!found && (intel_de_read(dev_priv, GEN3_SDVOC) & > SDVO_DETECTED)) { diff --git > a/drivers/gpu/drm/i915/display/intel_pch_display.c > b/drivers/gpu/drm/i915/display/intel_pch_display.c > index 98a6b57ac956..1abe0a784570 100644 > --- a/drivers/gpu/drm/i915/display/intel_pch_display.c > +++ b/drivers/gpu/drm/i915/display/intel_pch_display.c > @@ -65,7 +65,7 @@ static void assert_pch_hdmi_disabled(struct > drm_i915_private *dev_priv, > enum pipe port_pipe; > bool state; > > - state = intel_sdvo_port_enabled(dev_priv, hdmi_reg, &port_pipe); > + state = intel_sdvo_port_enabled(display, hdmi_reg, &port_pipe); > > INTEL_DISPLAY_STATE_WARN(display, state && port_pipe == pipe, > "PCH HDMI %c enabled on transcoder %c, > should be disabled\n", diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c > b/drivers/gpu/drm/i915/display/intel_sdvo.c > index 46203d796fcc..1ae766212e8a 100644 > --- a/drivers/gpu/drm/i915/display/intel_sdvo.c > +++ b/drivers/gpu/drm/i915/display/intel_sdvo.c > @@ -213,29 +213,29 @@ intel_sdvo_create_enhance_property(struct > intel_sdvo *intel_sdvo, > */ > static void intel_sdvo_write_sdvox(struct intel_sdvo *intel_sdvo, u32 val) { > - struct drm_device *dev = intel_sdvo->base.base.dev; > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > + struct drm_i915_private *dev_priv = to_i915(display->drm); > u32 bval = val, cval = val; > int i; > > if (HAS_PCH_SPLIT(dev_priv)) { > - intel_de_write(dev_priv, intel_sdvo->sdvo_reg, val); > - intel_de_posting_read(dev_priv, intel_sdvo->sdvo_reg); > + intel_de_write(display, intel_sdvo->sdvo_reg, val); > + intel_de_posting_read(display, intel_sdvo->sdvo_reg); > /* > * HW workaround, need to write this twice for issue > * that may result in first write getting masked. > */ > if (HAS_PCH_IBX(dev_priv)) { > - intel_de_write(dev_priv, intel_sdvo->sdvo_reg, val); > - intel_de_posting_read(dev_priv, intel_sdvo- > >sdvo_reg); > + intel_de_write(display, intel_sdvo->sdvo_reg, val); > + intel_de_posting_read(display, intel_sdvo- > >sdvo_reg); > } > return; > } > > if (intel_sdvo->base.port == PORT_B) > - cval = intel_de_read(dev_priv, GEN3_SDVOC); > + cval = intel_de_read(display, GEN3_SDVOC); > else > - bval = intel_de_read(dev_priv, GEN3_SDVOB); > + bval = intel_de_read(display, GEN3_SDVOB); > > /* > * Write the registers twice for luck. Sometimes, @@ -243,17 +243,17 > @@ static void intel_sdvo_write_sdvox(struct intel_sdvo *intel_sdvo, u32 > val) > * The BIOS does this too. Yay, magic > */ > for (i = 0; i < 2; i++) { > - intel_de_write(dev_priv, GEN3_SDVOB, bval); > - intel_de_posting_read(dev_priv, GEN3_SDVOB); > + intel_de_write(display, GEN3_SDVOB, bval); > + intel_de_posting_read(display, GEN3_SDVOB); > > - intel_de_write(dev_priv, GEN3_SDVOC, cval); > - intel_de_posting_read(dev_priv, GEN3_SDVOC); > + intel_de_write(display, GEN3_SDVOC, cval); > + intel_de_posting_read(display, GEN3_SDVOC); > } > } > > static bool intel_sdvo_read_byte(struct intel_sdvo *intel_sdvo, u8 addr, u8 > *ch) { > - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > struct i2c_msg msgs[] = { > { > .addr = intel_sdvo->target_addr, > @@ -273,7 +273,7 @@ static bool intel_sdvo_read_byte(struct intel_sdvo > *intel_sdvo, u8 addr, u8 *ch) > if ((ret = i2c_transfer(intel_sdvo->i2c, msgs, 2)) == 2) > return true; > > - drm_dbg_kms(&i915->drm, "i2c transfer returned %d\n", ret); > + drm_dbg_kms(display->drm, "i2c transfer returned %d\n", ret); > return false; > } > > @@ -415,7 +415,7 @@ static const char *sdvo_cmd_name(u8 cmd) static > void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd, > const void *args, int args_len) > { > - struct drm_i915_private *dev_priv = to_i915(intel_sdvo- > >base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > const char *cmd_name; > int i, pos = 0; > char buffer[64]; > @@ -436,10 +436,10 @@ static void intel_sdvo_debug_write(struct > intel_sdvo *intel_sdvo, u8 cmd, > else > BUF_PRINT("(%02X)", cmd); > > - drm_WARN_ON(&dev_priv->drm, pos >= sizeof(buffer) - 1); > + drm_WARN_ON(display->drm, pos >= sizeof(buffer) - 1); > #undef BUF_PRINT > > - drm_dbg_kms(&dev_priv->drm, "%s: W: %02X %s\n", > SDVO_NAME(intel_sdvo), > + drm_dbg_kms(display->drm, "%s: W: %02X %s\n", > SDVO_NAME(intel_sdvo), > cmd, buffer); > } > > @@ -465,7 +465,7 @@ static bool __intel_sdvo_write_cmd(struct intel_sdvo > *intel_sdvo, u8 cmd, > const void *args, int args_len, > bool unlocked) > { > - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > u8 *buf, status; > struct i2c_msg *msgs; > int i, ret = true; > @@ -515,13 +515,13 @@ static bool __intel_sdvo_write_cmd(struct > intel_sdvo *intel_sdvo, u8 cmd, > else > ret = __i2c_transfer(intel_sdvo->i2c, msgs, i+3); > if (ret < 0) { > - drm_dbg_kms(&i915->drm, "I2c transfer returned %d\n", > ret); > + drm_dbg_kms(display->drm, "I2c transfer returned %d\n", > ret); > ret = false; > goto out; > } > if (ret != i+3) { > /* failure in I2C transfer */ > - drm_dbg_kms(&i915->drm, "I2c transfer returned > %d/%d\n", ret, i+3); > + drm_dbg_kms(display->drm, "I2c transfer returned > %d/%d\n", ret, i + > +3); > ret = false; > } > > @@ -540,7 +540,7 @@ static bool intel_sdvo_write_cmd(struct intel_sdvo > *intel_sdvo, u8 cmd, static bool intel_sdvo_read_response(struct intel_sdvo > *intel_sdvo, > void *response, int response_len) { > - struct drm_i915_private *dev_priv = to_i915(intel_sdvo- > >base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > const char *cmd_status; > u8 retry = 15; /* 5 quick checks, followed by 10 long checks */ > u8 status; > @@ -605,15 +605,15 @@ static bool intel_sdvo_read_response(struct > intel_sdvo *intel_sdvo, > BUF_PRINT(" %02X", ((u8 *)response)[i]); > } > > - drm_WARN_ON(&dev_priv->drm, pos >= sizeof(buffer) - 1); > + drm_WARN_ON(display->drm, pos >= sizeof(buffer) - 1); > #undef BUF_PRINT > > - drm_dbg_kms(&dev_priv->drm, "%s: R: %s\n", > + drm_dbg_kms(display->drm, "%s: R: %s\n", > SDVO_NAME(intel_sdvo), buffer); > return true; > > log_fail: > - drm_dbg_kms(&dev_priv->drm, "%s: R: ... failed %s\n", > + drm_dbg_kms(display->drm, "%s: R: ... failed %s\n", > SDVO_NAME(intel_sdvo), buffer); > return false; > } > @@ -1009,7 +1009,7 @@ static bool intel_sdvo_write_infoframe(struct > intel_sdvo *intel_sdvo, > unsigned int if_index, u8 tx_rate, > const u8 *data, unsigned int length) { > - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > u8 set_buf_index[2] = { if_index, 0 }; > u8 hbuf_size, tmp[8]; > int i; > @@ -1022,7 +1022,7 @@ static bool intel_sdvo_write_infoframe(struct > intel_sdvo *intel_sdvo, > if (!intel_sdvo_get_hbuf_size(intel_sdvo, &hbuf_size)) > return false; > > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "writing sdvo hbuf: %i, length %u, hbuf_size: %i\n", > if_index, length, hbuf_size); > > @@ -1049,7 +1049,7 @@ static ssize_t intel_sdvo_read_infoframe(struct > intel_sdvo *intel_sdvo, > unsigned int if_index, > u8 *data, unsigned int length) > { > - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > u8 set_buf_index[2] = { if_index, 0 }; > u8 hbuf_size, tx_rate, av_split; > int i; > @@ -1079,7 +1079,7 @@ static ssize_t intel_sdvo_read_infoframe(struct > intel_sdvo *intel_sdvo, > if (!intel_sdvo_get_hbuf_size(intel_sdvo, &hbuf_size)) > return false; > > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "reading sdvo hbuf: %i, length %u, hbuf_size: %i\n", > if_index, length, hbuf_size); > > @@ -1100,7 +1100,7 @@ static bool > intel_sdvo_compute_avi_infoframe(struct intel_sdvo *intel_sdvo, > struct intel_crtc_state *crtc_state, > struct drm_connector_state > *conn_state) { > - struct drm_i915_private *dev_priv = to_i915(intel_sdvo- > >base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > struct hdmi_avi_infoframe *frame = &crtc_state->infoframes.avi.avi; > const struct drm_display_mode *adjusted_mode = > &crtc_state->hw.adjusted_mode; > @@ -1126,7 +1126,7 @@ static bool > intel_sdvo_compute_avi_infoframe(struct intel_sdvo *intel_sdvo, > > HDMI_QUANTIZATION_RANGE_FULL); > > ret = hdmi_avi_infoframe_check(frame); > - if (drm_WARN_ON(&dev_priv->drm, ret)) > + if (drm_WARN_ON(display->drm, ret)) > return false; > > return true; > @@ -1135,7 +1135,7 @@ static bool > intel_sdvo_compute_avi_infoframe(struct intel_sdvo *intel_sdvo, static bool > intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo, > const struct intel_crtc_state > *crtc_state) { > - struct drm_i915_private *dev_priv = to_i915(intel_sdvo- > >base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > u8 sdvo_data[HDMI_INFOFRAME_SIZE(AVI)]; > const union hdmi_infoframe *frame = &crtc_state->infoframes.avi; > ssize_t len; > @@ -1144,12 +1144,12 @@ static bool intel_sdvo_set_avi_infoframe(struct > intel_sdvo *intel_sdvo, > intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_AVI)) == > 0) > return true; > > - if (drm_WARN_ON(&dev_priv->drm, > + if (drm_WARN_ON(display->drm, > frame->any.type != HDMI_INFOFRAME_TYPE_AVI)) > return false; > > len = hdmi_infoframe_pack_only(frame, sdvo_data, > sizeof(sdvo_data)); > - if (drm_WARN_ON(&dev_priv->drm, len < 0)) > + if (drm_WARN_ON(display->drm, len < 0)) > return false; > > return intel_sdvo_write_infoframe(intel_sdvo, > SDVO_HBUF_INDEX_AVI_IF, @@ -1160,7 +1160,7 @@ static bool > intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo, static void > intel_sdvo_get_avi_infoframe(struct intel_sdvo *intel_sdvo, > struct intel_crtc_state *crtc_state) { > - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > u8 sdvo_data[HDMI_INFOFRAME_SIZE(AVI)]; > union hdmi_infoframe *frame = &crtc_state->infoframes.avi; > ssize_t len; > @@ -1172,7 +1172,7 @@ static void intel_sdvo_get_avi_infoframe(struct > intel_sdvo *intel_sdvo, > len = intel_sdvo_read_infoframe(intel_sdvo, > SDVO_HBUF_INDEX_AVI_IF, > sdvo_data, sizeof(sdvo_data)); > if (len < 0) { > - drm_dbg_kms(&i915->drm, "failed to read AVI > infoframe\n"); > + drm_dbg_kms(display->drm, "failed to read AVI > infoframe\n"); > return; > } else if (len == 0) { > return; > @@ -1183,12 +1183,12 @@ static void intel_sdvo_get_avi_infoframe(struct > intel_sdvo *intel_sdvo, > > ret = hdmi_infoframe_unpack(frame, sdvo_data, len); > if (ret) { > - drm_dbg_kms(&i915->drm, "Failed to unpack AVI > infoframe\n"); > + drm_dbg_kms(display->drm, "Failed to unpack AVI > infoframe\n"); > return; > } > > if (frame->any.type != HDMI_INFOFRAME_TYPE_AVI) > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Found the wrong infoframe type 0x%x (expected > 0x%02x)\n", > frame->any.type, HDMI_INFOFRAME_TYPE_AVI); } > @@ -1196,7 +1196,7 @@ static void intel_sdvo_get_avi_infoframe(struct > intel_sdvo *intel_sdvo, static void intel_sdvo_get_eld(struct intel_sdvo > *intel_sdvo, > struct intel_crtc_state *crtc_state) { > - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > ssize_t len; > u8 val; > > @@ -1212,7 +1212,7 @@ static void intel_sdvo_get_eld(struct intel_sdvo > *intel_sdvo, > len = intel_sdvo_read_infoframe(intel_sdvo, > SDVO_HBUF_INDEX_ELD, > crtc_state->eld, sizeof(crtc_state- > >eld)); > if (len < 0) > - drm_dbg_kms(&i915->drm, "failed to read ELD\n"); > + drm_dbg_kms(display->drm, "failed to read ELD\n"); > } > > static bool intel_sdvo_set_tv_format(struct intel_sdvo *intel_sdvo, @@ - > 1282,7 +1282,7 @@ intel_sdvo_get_preferred_input_mode(struct > intel_sdvo *intel_sdvo, > > static int i9xx_adjust_sdvo_tv_clock(struct intel_crtc_state *pipe_config) { > - struct drm_i915_private *dev_priv = to_i915(pipe_config->uapi.crtc- > >dev); > + struct intel_display *display = to_intel_display(pipe_config); > unsigned int dotclock = pipe_config->hw.adjusted_mode.crtc_clock; > struct dpll *clock = &pipe_config->dpll; > > @@ -1303,7 +1303,7 @@ static int i9xx_adjust_sdvo_tv_clock(struct > intel_crtc_state *pipe_config) > clock->m1 = 12; > clock->m2 = 8; > } else { > - drm_dbg_kms(&dev_priv->drm, > + drm_dbg_kms(display->drm, > "SDVO TV clock out of range: %i\n", dotclock); > return -EINVAL; > } > @@ -1359,6 +1359,7 @@ static int intel_sdvo_compute_config(struct > intel_encoder *encoder, > struct intel_crtc_state *pipe_config, > struct drm_connector_state *conn_state) > { > + struct intel_display *display = to_intel_display(encoder); > struct drm_i915_private *i915 = to_i915(encoder->base.dev); > struct intel_sdvo *intel_sdvo = to_sdvo(encoder); > struct intel_sdvo_connector *intel_sdvo_connector = @@ -1366,13 > +1367,13 @@ static int intel_sdvo_compute_config(struct intel_encoder > *encoder, > struct drm_display_mode *adjusted_mode = &pipe_config- > >hw.adjusted_mode; > struct drm_display_mode *mode = &pipe_config->hw.mode; > > - if (HAS_PCH_SPLIT(to_i915(encoder->base.dev))) { > + if (HAS_PCH_SPLIT(i915)) { > pipe_config->has_pch_encoder = true; > if (!intel_fdi_compute_pipe_bpp(pipe_config)) > return -EINVAL; > } > > - drm_dbg_kms(&i915->drm, "forcing bpc to 8 for SDVO\n"); > + drm_dbg_kms(display->drm, "forcing bpc to 8 for SDVO\n"); > /* FIXME: Don't increase pipe_bpp */ > pipe_config->pipe_bpp = 8*3; > pipe_config->sink_format = INTEL_OUTPUT_FORMAT_RGB; @@ - > 1451,7 +1452,7 @@ static int intel_sdvo_compute_config(struct > intel_encoder *encoder, > > if (!intel_sdvo_compute_avi_infoframe(intel_sdvo, > pipe_config, conn_state)) { > - drm_dbg_kms(&i915->drm, "bad AVI infoframe\n"); > + drm_dbg_kms(display->drm, "bad AVI infoframe\n"); > return -EINVAL; > } > > @@ -1525,6 +1526,7 @@ static void intel_sdvo_pre_enable(struct > intel_atomic_state *state, > const struct intel_crtc_state *crtc_state, > const struct drm_connector_state > *conn_state) { > + struct intel_display *display = to_intel_display(intel_encoder); > struct drm_i915_private *dev_priv = to_i915(intel_encoder- > >base.dev); > struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); > const struct drm_display_mode *adjusted_mode = &crtc_state- > >hw.adjusted_mode; @@ -1570,7 +1572,7 @@ static void > intel_sdvo_pre_enable(struct intel_atomic_state *state, > intel_sdvo_get_dtd_from_mode(&output_dtd, mode); > } > if (!intel_sdvo_set_output_timing(intel_sdvo, &output_dtd)) > - drm_info(&dev_priv->drm, > + drm_info(display->drm, > "Setting output timings on %s failed\n", > SDVO_NAME(intel_sdvo)); > > @@ -1600,13 +1602,13 @@ static void intel_sdvo_pre_enable(struct > intel_atomic_state *state, > if (IS_TV(intel_sdvo_connector) || IS_LVDS(intel_sdvo_connector)) > input_dtd.part2.sdvo_flags = intel_sdvo->dtd_sdvo_flags; > if (!intel_sdvo_set_input_timing(intel_sdvo, &input_dtd)) > - drm_info(&dev_priv->drm, > + drm_info(display->drm, > "Setting input timings on %s failed\n", > SDVO_NAME(intel_sdvo)); > > switch (crtc_state->pixel_multiplier) { > default: > - drm_WARN(&dev_priv->drm, 1, > + drm_WARN(display->drm, 1, > "unknown pixel multiplier specified\n"); > fallthrough; > case 1: rate = SDVO_CLOCK_RATE_MULT_1X; break; @@ -1617,14 > +1619,14 @@ static void intel_sdvo_pre_enable(struct intel_atomic_state > *state, > return; > > /* Set the SDVO control regs. */ > - if (DISPLAY_VER(dev_priv) >= 4) { > + if (DISPLAY_VER(display) >= 4) { > /* The real mode polarity is set by the SDVO commands, > using > * struct intel_sdvo_dtd. */ > sdvox = SDVO_VSYNC_ACTIVE_HIGH | > SDVO_HSYNC_ACTIVE_HIGH; > - if (DISPLAY_VER(dev_priv) < 5) > + if (DISPLAY_VER(display) < 5) > sdvox |= SDVO_BORDER_ENABLE; > } else { > - sdvox = intel_de_read(dev_priv, intel_sdvo->sdvo_reg); > + sdvox = intel_de_read(display, intel_sdvo->sdvo_reg); > if (intel_sdvo->base.port == PORT_B) > sdvox &= SDVOB_PRESERVE_MASK; > else > @@ -1637,10 +1639,10 @@ static void intel_sdvo_pre_enable(struct > intel_atomic_state *state, > else > sdvox |= SDVO_PIPE_SEL(crtc->pipe); > > - if (DISPLAY_VER(dev_priv) >= 4) { > + if (DISPLAY_VER(display) >= 4) { > /* done in crtc_mode_set as the dpll_md reg must be > written early */ > - } else if (IS_I945G(dev_priv) || IS_I945GM(dev_priv) || > - IS_G33(dev_priv) || IS_PINEVIEW(dev_priv)) { > + } else if (display->platform.i945g || display->platform.i945gm || > + display->platform.g33 || display->platform.pineview) { > /* done in crtc_mode_set as it lives inside the dpll register > */ > } else { > sdvox |= (crtc_state->pixel_multiplier - 1) @@ -1648,7 > +1650,7 @@ static void intel_sdvo_pre_enable(struct intel_atomic_state > *state, > } > > if (input_dtd.part2.sdvo_flags & SDVO_NEED_TO_STALL && > - DISPLAY_VER(dev_priv) < 5) > + DISPLAY_VER(display) < 5) > sdvox |= SDVO_STALL_SELECT; > intel_sdvo_write_sdvox(intel_sdvo, sdvox); } @@ -1665,17 +1667,18 > @@ static bool intel_sdvo_connector_get_hw_state(struct intel_connector > *connector) > return active_outputs & intel_sdvo_connector->output_flag; > } > > -bool intel_sdvo_port_enabled(struct drm_i915_private *dev_priv, > +bool intel_sdvo_port_enabled(struct intel_display *display, > i915_reg_t sdvo_reg, enum pipe *pipe) { > + struct drm_i915_private *dev_priv = to_i915(display->drm); > u32 val; > > - val = intel_de_read(dev_priv, sdvo_reg); > + val = intel_de_read(display, sdvo_reg); > > /* asserts want to know the pipe even if the port is disabled */ > if (HAS_PCH_CPT(dev_priv)) > *pipe = (val & SDVO_PIPE_SEL_MASK_CPT) >> > SDVO_PIPE_SEL_SHIFT_CPT; > - else if (IS_CHERRYVIEW(dev_priv)) > + else if (display->platform.cherryview) > *pipe = (val & SDVO_PIPE_SEL_MASK_CHV) >> > SDVO_PIPE_SEL_SHIFT_CHV; > else > *pipe = (val & SDVO_PIPE_SEL_MASK) >> > SDVO_PIPE_SEL_SHIFT; @@ -1686,14 +1689,14 @@ bool > intel_sdvo_port_enabled(struct drm_i915_private *dev_priv, static bool > intel_sdvo_get_hw_state(struct intel_encoder *encoder, > enum pipe *pipe) > { > - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); > + struct intel_display *display = to_intel_display(encoder); > struct intel_sdvo *intel_sdvo = to_sdvo(encoder); > u16 active_outputs = 0; > bool ret; > > intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs); > > - ret = intel_sdvo_port_enabled(dev_priv, intel_sdvo->sdvo_reg, > pipe); > + ret = intel_sdvo_port_enabled(display, intel_sdvo->sdvo_reg, pipe); > > return ret || active_outputs; > } > @@ -1701,8 +1704,7 @@ static bool intel_sdvo_get_hw_state(struct > intel_encoder *encoder, static void intel_sdvo_get_config(struct > intel_encoder *encoder, > struct intel_crtc_state *pipe_config) { > - struct drm_device *dev = encoder->base.dev; > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct intel_display *display = to_intel_display(encoder); > struct intel_sdvo *intel_sdvo = to_sdvo(encoder); > struct intel_sdvo_dtd dtd; > int encoder_pixel_multiplier = 0; > @@ -1713,7 +1715,7 @@ static void intel_sdvo_get_config(struct > intel_encoder *encoder, > > pipe_config->output_types |= BIT(INTEL_OUTPUT_SDVO); > > - sdvox = intel_de_read(dev_priv, intel_sdvo->sdvo_reg); > + sdvox = intel_de_read(display, intel_sdvo->sdvo_reg); > > ret = intel_sdvo_get_input_timing(intel_sdvo, &dtd); > if (!ret) { > @@ -1721,7 +1723,7 @@ static void intel_sdvo_get_config(struct > intel_encoder *encoder, > * Some sdvo encoders are not spec compliant and don't > * implement the mandatory get_timings function. > */ > - drm_dbg(&dev_priv->drm, "failed to retrieve SDVO DTD\n"); > + drm_dbg_kms(display->drm, "failed to retrieve SDVO > DTD\n"); > pipe_config->quirks |= > PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS; > } else { > if (dtd.part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE) @@ - > 1744,7 +1746,7 @@ static void intel_sdvo_get_config(struct intel_encoder > *encoder, > * encoder->get_config we so already have a valid pixel multiplier on > all > * other platforms. > */ > - if (IS_I915G(dev_priv) || IS_I915GM(dev_priv)) { > + if (display->platform.i915g || display->platform.i915gm) { > pipe_config->pixel_multiplier = > ((sdvox & SDVO_PORT_MULTIPLY_MASK) > >> SDVO_PORT_MULTIPLY_SHIFT) + 1; > @@ -1773,7 +1775,7 @@ static void intel_sdvo_get_config(struct > intel_encoder *encoder, > } > } > > - drm_WARN(dev, > + drm_WARN(display->drm, > encoder_pixel_multiplier != pipe_config->pixel_multiplier, > "SDVO pixel multiplier mismatch, port: %i, encoder: %i\n", > pipe_config->pixel_multiplier, encoder_pixel_multiplier); > @@ -1849,7 +1851,7 @@ static void intel_disable_sdvo(struct > intel_atomic_state *state, > intel_sdvo_set_encoder_power_state(intel_sdvo, > DRM_MODE_DPMS_OFF); > > - temp = intel_de_read(dev_priv, intel_sdvo->sdvo_reg); > + temp = intel_de_read(display, intel_sdvo->sdvo_reg); > > temp &= ~SDVO_ENABLE; > intel_sdvo_write_sdvox(intel_sdvo, temp); @@ -1900,8 +1902,7 @@ > static void intel_enable_sdvo(struct intel_atomic_state *state, > const struct intel_crtc_state *pipe_config, > const struct drm_connector_state *conn_state) { > - struct drm_device *dev = encoder->base.dev; > - struct drm_i915_private *dev_priv = to_i915(dev); > + struct intel_display *display = to_intel_display(encoder); > struct intel_sdvo *intel_sdvo = to_sdvo(encoder); > struct intel_sdvo_connector *intel_sdvo_connector = > to_intel_sdvo_connector(conn_state->connector); > @@ -1911,7 +1912,7 @@ static void intel_enable_sdvo(struct > intel_atomic_state *state, > int i; > bool success; > > - temp = intel_de_read(dev_priv, intel_sdvo->sdvo_reg); > + temp = intel_de_read(display, intel_sdvo->sdvo_reg); > temp |= SDVO_ENABLE; > intel_sdvo_write_sdvox(intel_sdvo, temp); > > @@ -1926,7 +1927,7 @@ static void intel_enable_sdvo(struct > intel_atomic_state *state, > * a given it the status is a success, we succeeded. > */ > if (success && !input1) { > - drm_dbg_kms(&dev_priv->drm, > + drm_dbg_kms(display->drm, > "First %s output reported failure to sync\n", > SDVO_NAME(intel_sdvo)); > } > @@ -1941,12 +1942,13 @@ static enum drm_mode_status > intel_sdvo_mode_valid(struct drm_connector *connector, > const struct drm_display_mode *mode) { > + struct intel_display *display = to_intel_display(connector->dev); Why not &i915->display and declare this after i915 declaration Otherwise LGTM, Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> > struct drm_i915_private *i915 = to_i915(connector->dev); > struct intel_sdvo *intel_sdvo = > intel_attached_sdvo(to_intel_connector(connector)); > struct intel_sdvo_connector *intel_sdvo_connector = > to_intel_sdvo_connector(connector); > bool has_hdmi_sink = intel_has_hdmi_sink(intel_sdvo_connector, > connector->state); > - int max_dotclk = i915->display.cdclk.max_dotclk_freq; > + int max_dotclk = display->cdclk.max_dotclk_freq; > enum drm_mode_status status; > int clock = mode->clock; > > @@ -1982,14 +1984,15 @@ intel_sdvo_mode_valid(struct drm_connector > *connector, > > static bool intel_sdvo_get_capabilities(struct intel_sdvo *intel_sdvo, struct > intel_sdvo_caps *caps) { > - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > + > BUILD_BUG_ON(sizeof(*caps) != 8); > if (!intel_sdvo_get_value(intel_sdvo, > SDVO_CMD_GET_DEVICE_CAPS, > caps, sizeof(*caps))) > return false; > > - drm_dbg_kms(&i915->drm, "SDVO capabilities:\n" > + drm_dbg_kms(display->drm, "SDVO capabilities:\n" > " vendor_id: %d\n" > " device_id: %d\n" > " device_rev_id: %d\n" > @@ -2031,17 +2034,17 @@ static u8 intel_sdvo_get_colorimetry_cap(struct > intel_sdvo *intel_sdvo) > > static u16 intel_sdvo_get_hotplug_support(struct intel_sdvo *intel_sdvo) { > - struct drm_i915_private *dev_priv = to_i915(intel_sdvo- > >base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > u16 hotplug; > > - if (!I915_HAS_HOTPLUG(dev_priv)) > + if (!I915_HAS_HOTPLUG(display)) > return 0; > > /* > * HW Erratum: SDVO Hotplug is broken on all i945G chips, there's > noise > * on the line. > */ > - if (IS_I945G(dev_priv) || IS_I945GM(dev_priv)) > + if (display->platform.i945g || display->platform.i945gm) > return 0; > > if (!intel_sdvo_get_value(intel_sdvo, > SDVO_CMD_GET_HOT_PLUG_SUPPORT, @@ -2138,13 +2141,12 @@ static > enum drm_connector_status intel_sdvo_detect(struct drm_connector > *connector, bool force) { > struct intel_display *display = to_intel_display(connector->dev); > - struct drm_i915_private *i915 = to_i915(connector->dev); > struct intel_sdvo *intel_sdvo = > intel_attached_sdvo(to_intel_connector(connector)); > struct intel_sdvo_connector *intel_sdvo_connector = > to_intel_sdvo_connector(connector); > enum drm_connector_status ret; > u16 response; > > - drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s]\n", > + drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", > connector->base.id, connector->name); > > if (!intel_display_device_enabled(display)) > @@ -2162,7 +2164,7 @@ intel_sdvo_detect(struct drm_connector > *connector, bool force) > &response, 2)) > return connector_status_unknown; > > - drm_dbg_kms(&i915->drm, "SDVO response %d %d [%x]\n", > + drm_dbg_kms(display->drm, "SDVO response %d %d [%x]\n", > response & 0xff, response >> 8, > intel_sdvo_connector->output_flag); > > @@ -2301,7 +2303,6 @@ static int intel_sdvo_get_tv_modes(struct > drm_connector *connector) { > struct intel_display *display = to_intel_display(connector->dev); > struct intel_sdvo *intel_sdvo = > intel_attached_sdvo(to_intel_connector(connector)); > - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); > struct intel_sdvo_connector *intel_sdvo_connector = > to_intel_sdvo_connector(connector); > const struct drm_connector_state *conn_state = connector->state; > @@ -2310,7 +2311,7 @@ static int intel_sdvo_get_tv_modes(struct > drm_connector *connector) > int num_modes = 0; > int i; > > - drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s]\n", > + drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", > connector->base.id, connector->name); > > if (!intel_display_driver_check_access(display)) > @@ -2352,9 +2353,9 @@ static int intel_sdvo_get_tv_modes(struct > drm_connector *connector) > > static int intel_sdvo_get_lvds_modes(struct drm_connector *connector) { > - struct drm_i915_private *dev_priv = to_i915(connector->dev); > + struct intel_display *display = to_intel_display(connector->dev); > > - drm_dbg_kms(&dev_priv->drm, "[CONNECTOR:%d:%s]\n", > + drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", > connector->base.id, connector->name); > > return intel_panel_get_modes(to_intel_connector(connector)); > @@ -2618,14 +2619,14 @@ static struct intel_sdvo_ddc * > intel_sdvo_select_ddc_bus(struct intel_sdvo *sdvo, > struct intel_sdvo_connector *connector) { > - struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev); > + struct intel_display *display = to_intel_display(&sdvo->base); > const struct sdvo_device_mapping *mapping; > int ddc_bus; > > if (sdvo->base.port == PORT_B) > - mapping = &dev_priv->display.vbt.sdvo_mappings[0]; > + mapping = &display->vbt.sdvo_mappings[0]; > else > - mapping = &dev_priv->display.vbt.sdvo_mappings[1]; > + mapping = &display->vbt.sdvo_mappings[1]; > > if (mapping->initialized) > ddc_bus = (mapping->ddc_pin & 0xf0) >> 4; @@ -2642,14 > +2643,13 @@ static void intel_sdvo_select_i2c_bus(struct intel_sdvo *sdvo) > { > struct intel_display *display = to_intel_display(&sdvo->base); > - struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev); > const struct sdvo_device_mapping *mapping; > u8 pin; > > if (sdvo->base.port == PORT_B) > - mapping = &dev_priv->display.vbt.sdvo_mappings[0]; > + mapping = &display->vbt.sdvo_mappings[0]; > else > - mapping = &dev_priv->display.vbt.sdvo_mappings[1]; > + mapping = &display->vbt.sdvo_mappings[1]; > > if (mapping->initialized && > intel_gmbus_is_valid_pin(display, mapping->i2c_pin)) @@ -2657,7 > +2657,7 @@ intel_sdvo_select_i2c_bus(struct intel_sdvo *sdvo) > else > pin = GMBUS_PIN_DPB; > > - drm_dbg_kms(&dev_priv->drm, "[ENCODER:%d:%s] I2C pin %d, > target addr 0x%x\n", > + drm_dbg_kms(display->drm, "[ENCODER:%d:%s] I2C pin %d, target > addr > +0x%x\n", > sdvo->base.base.base.id, sdvo->base.base.name, > pin, sdvo->target_addr); > > @@ -2687,15 +2687,15 @@ intel_sdvo_is_hdmi_connector(struct intel_sdvo > *intel_sdvo) static u8 intel_sdvo_get_target_addr(struct intel_sdvo *sdvo) > { > - struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev); > + struct intel_display *display = to_intel_display(&sdvo->base); > const struct sdvo_device_mapping *my_mapping, *other_mapping; > > if (sdvo->base.port == PORT_B) { > - my_mapping = &dev_priv->display.vbt.sdvo_mappings[0]; > - other_mapping = &dev_priv->display.vbt.sdvo_mappings[1]; > + my_mapping = &display->vbt.sdvo_mappings[0]; > + other_mapping = &display->vbt.sdvo_mappings[1]; > } else { > - my_mapping = &dev_priv->display.vbt.sdvo_mappings[1]; > - other_mapping = &dev_priv->display.vbt.sdvo_mappings[0]; > + my_mapping = &display->vbt.sdvo_mappings[1]; > + other_mapping = &display->vbt.sdvo_mappings[0]; > } > > /* If the BIOS described our SDVO device, take advantage of it. */ > @@ -2731,7 +2731,7 @@ static int intel_sdvo_connector_init(struct > intel_sdvo_connector *connector, > struct intel_sdvo *encoder) > { > - struct drm_i915_private *i915 = to_i915(encoder->base.base.dev); > + struct intel_display *display = to_intel_display(&encoder->base); > struct intel_sdvo_ddc *ddc = NULL; > int ret; > > @@ -2756,7 +2756,7 @@ intel_sdvo_connector_init(struct > intel_sdvo_connector *connector, > intel_connector_attach_encoder(&connector->base, &encoder- > >base); > > if (ddc) > - drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] using > %s\n", > + drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s] using > %s\n", > connector->base.base.base.id, connector- > >base.base.name, > ddc->ddc.name); > > @@ -2799,14 +2799,14 @@ static struct intel_sdvo_connector > *intel_sdvo_connector_alloc(void) static bool intel_sdvo_dvi_init(struct > intel_sdvo *intel_sdvo, u16 type) { > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > struct drm_encoder *encoder = &intel_sdvo->base.base; > struct drm_connector *connector; > struct intel_encoder *intel_encoder = to_intel_encoder(encoder); > - struct drm_i915_private *i915 = to_i915(intel_encoder->base.dev); > struct intel_connector *intel_connector; > struct intel_sdvo_connector *intel_sdvo_connector; > > - drm_dbg_kms(&i915->drm, "initialising DVI type 0x%x\n", type); > + drm_dbg_kms(display->drm, "initialising DVI type 0x%x\n", type); > > intel_sdvo_connector = intel_sdvo_connector_alloc(); > if (!intel_sdvo_connector) > @@ -2852,13 +2852,13 @@ intel_sdvo_dvi_init(struct intel_sdvo > *intel_sdvo, u16 type) static bool intel_sdvo_tv_init(struct intel_sdvo > *intel_sdvo, u16 type) { > - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > struct drm_encoder *encoder = &intel_sdvo->base.base; > struct drm_connector *connector; > struct intel_connector *intel_connector; > struct intel_sdvo_connector *intel_sdvo_connector; > > - drm_dbg_kms(&i915->drm, "initialising TV type 0x%x\n", type); > + drm_dbg_kms(display->drm, "initialising TV type 0x%x\n", type); > > intel_sdvo_connector = intel_sdvo_connector_alloc(); > if (!intel_sdvo_connector) > @@ -2892,13 +2892,13 @@ intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, > u16 type) static bool intel_sdvo_analog_init(struct intel_sdvo *intel_sdvo, > u16 type) { > - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > struct drm_encoder *encoder = &intel_sdvo->base.base; > struct drm_connector *connector; > struct intel_connector *intel_connector; > struct intel_sdvo_connector *intel_sdvo_connector; > > - drm_dbg_kms(&i915->drm, "initialising analog type 0x%x\n", type); > + drm_dbg_kms(display->drm, "initialising analog type 0x%x\n", type); > > intel_sdvo_connector = intel_sdvo_connector_alloc(); > if (!intel_sdvo_connector) > @@ -2926,12 +2926,11 @@ intel_sdvo_lvds_init(struct intel_sdvo > *intel_sdvo, u16 type) { > struct intel_display *display = to_intel_display(&intel_sdvo->base); > struct drm_encoder *encoder = &intel_sdvo->base.base; > - struct drm_i915_private *i915 = to_i915(encoder->dev); > struct drm_connector *connector; > struct intel_connector *intel_connector; > struct intel_sdvo_connector *intel_sdvo_connector; > > - drm_dbg_kms(&i915->drm, "initialising LVDS type 0x%x\n", type); > + drm_dbg_kms(display->drm, "initialising LVDS type 0x%x\n", type); > > intel_sdvo_connector = intel_sdvo_connector_alloc(); > if (!intel_sdvo_connector) > @@ -2961,12 +2960,12 @@ intel_sdvo_lvds_init(struct intel_sdvo > *intel_sdvo, u16 type) > intel_panel_add_vbt_sdvo_fixed_mode(intel_connector); > > if (!intel_panel_preferred_fixed_mode(intel_connector)) { > - mutex_lock(&i915->drm.mode_config.mutex); > + mutex_lock(&display->drm->mode_config.mutex); > > intel_ddc_get_modes(connector, connector->ddc); > intel_panel_add_edid_fixed_modes(intel_connector, false); > > - mutex_unlock(&i915->drm.mode_config.mutex); > + mutex_unlock(&display->drm->mode_config.mutex); > } > > intel_panel_init(intel_connector, NULL); @@ -3015,7 +3014,7 @@ > static bool intel_sdvo_output_init(struct intel_sdvo *sdvo, u16 type) static > bool intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo) { > - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > static const u16 probe_order[] = { > SDVO_OUTPUT_TMDS0, > SDVO_OUTPUT_TMDS1, > @@ -3034,7 +3033,7 @@ intel_sdvo_output_setup(struct intel_sdvo > *intel_sdvo) > flags = intel_sdvo_filter_output_flags(intel_sdvo- > >caps.output_flags); > > if (flags == 0) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "%s: Unknown SDVO output type (0x%04x)\n", > SDVO_NAME(intel_sdvo), intel_sdvo- > >caps.output_flags); > return false; > @@ -3057,11 +3056,11 @@ intel_sdvo_output_setup(struct intel_sdvo > *intel_sdvo) > > static void intel_sdvo_output_cleanup(struct intel_sdvo *intel_sdvo) { > - struct drm_device *dev = intel_sdvo->base.base.dev; > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > struct drm_connector *connector, *tmp; > > list_for_each_entry_safe(connector, tmp, > - &dev->mode_config.connector_list, head) { > + &display->drm- > >mode_config.connector_list, head) { > if (intel_attached_encoder(to_intel_connector(connector)) > == &intel_sdvo->base) { > drm_connector_unregister(connector); > intel_connector_destroy(connector); > @@ -3073,7 +3072,7 @@ static bool intel_sdvo_tv_create_property(struct > intel_sdvo *intel_sdvo, > struct intel_sdvo_connector > *intel_sdvo_connector, > int type) > { > - struct drm_device *dev = intel_sdvo->base.base.dev; > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > struct intel_sdvo_tv_format format; > u32 format_map, i; > > @@ -3098,7 +3097,7 @@ static bool intel_sdvo_tv_create_property(struct > intel_sdvo *intel_sdvo, > > > intel_sdvo_connector->tv_format = > - drm_property_create(dev, DRM_MODE_PROP_ENUM, > + drm_property_create(display->drm, > DRM_MODE_PROP_ENUM, > "mode", intel_sdvo_connector- > >format_supported_num); > if (!intel_sdvo_connector->tv_format) > return false; > @@ -3120,12 +3119,12 @@ static bool intel_sdvo_tv_create_property(struct > intel_sdvo *intel_sdvo, > !intel_sdvo_get_value(intel_sdvo, > SDVO_CMD_GET_##NAME, &response, 2)) \ > return false; \ > intel_sdvo_connector->name = \ > - drm_property_create_range(dev, 0, #name, 0, > data_value[0]); \ > + drm_property_create_range(display->drm, 0, #name, > 0, data_value[0]); > +\ > if (!intel_sdvo_connector->name) return false; \ > state_assignment = response; \ > drm_object_attach_property(&connector->base, \ > intel_sdvo_connector->name, 0); \ > - drm_dbg_kms(dev, #name ": max %d, default %d, current > %d\n", \ > + drm_dbg_kms(display->drm, #name ": max %d, default %d, > current %d\n", > +\ > data_value[0], data_value[1], response); \ > } \ > } while (0) > @@ -3137,8 +3136,7 @@ intel_sdvo_create_enhance_property_tv(struct > intel_sdvo *intel_sdvo, > struct intel_sdvo_connector > *intel_sdvo_connector, > struct intel_sdvo_enhancements_reply > enhancements) { > - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); > - struct drm_device *dev = intel_sdvo->base.base.dev; > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > struct drm_connector *connector = &intel_sdvo_connector- > >base.base; > struct drm_connector_state *conn_state = connector->state; > struct intel_sdvo_connector_state *sdvo_state = @@ -3161,7 > +3159,7 @@ intel_sdvo_create_enhance_property_tv(struct intel_sdvo > *intel_sdvo, > > intel_sdvo_connector->max_hscan = data_value[0]; > intel_sdvo_connector->left = > - drm_property_create_range(dev, 0, "left_margin", 0, > data_value[0]); > + drm_property_create_range(display->drm, 0, > "left_margin", 0, > +data_value[0]); > if (!intel_sdvo_connector->left) > return false; > > @@ -3169,13 +3167,13 @@ intel_sdvo_create_enhance_property_tv(struct > intel_sdvo *intel_sdvo, > intel_sdvo_connector->left, 0); > > intel_sdvo_connector->right = > - drm_property_create_range(dev, 0, "right_margin", > 0, data_value[0]); > + drm_property_create_range(display->drm, 0, > "right_margin", 0, > +data_value[0]); > if (!intel_sdvo_connector->right) > return false; > > drm_object_attach_property(&connector->base, > intel_sdvo_connector->right, 0); > - drm_dbg_kms(&i915->drm, "h_overscan: max %d, default > %d, current %d\n", > + drm_dbg_kms(display->drm, "h_overscan: max %d, default > %d, current > +%d\n", > data_value[0], data_value[1], response); > } > > @@ -3194,7 +3192,7 @@ intel_sdvo_create_enhance_property_tv(struct > intel_sdvo *intel_sdvo, > > intel_sdvo_connector->max_vscan = data_value[0]; > intel_sdvo_connector->top = > - drm_property_create_range(dev, 0, > + drm_property_create_range(display->drm, 0, > "top_margin", 0, > data_value[0]); > if (!intel_sdvo_connector->top) > return false; > @@ -3203,14 +3201,14 @@ intel_sdvo_create_enhance_property_tv(struct > intel_sdvo *intel_sdvo, > intel_sdvo_connector->top, 0); > > intel_sdvo_connector->bottom = > - drm_property_create_range(dev, 0, > + drm_property_create_range(display->drm, 0, > "bottom_margin", 0, > data_value[0]); > if (!intel_sdvo_connector->bottom) > return false; > > drm_object_attach_property(&connector->base, > intel_sdvo_connector->bottom, 0); > - drm_dbg_kms(&i915->drm, "v_overscan: max %d, default > %d, current %d\n", > + drm_dbg_kms(display->drm, "v_overscan: max %d, default > %d, current > +%d\n", > data_value[0], data_value[1], response); > } > > @@ -3233,13 +3231,13 @@ intel_sdvo_create_enhance_property_tv(struct > intel_sdvo *intel_sdvo, > > sdvo_state->tv.dot_crawl = response & 0x1; > intel_sdvo_connector->dot_crawl = > - drm_property_create_range(dev, 0, "dot_crawl", 0, > 1); > + drm_property_create_range(display->drm, 0, > "dot_crawl", 0, 1); > if (!intel_sdvo_connector->dot_crawl) > return false; > > drm_object_attach_property(&connector->base, > intel_sdvo_connector->dot_crawl, > 0); > - drm_dbg_kms(&i915->drm, "dot crawl: current %d\n", > response); > + drm_dbg_kms(display->drm, "dot crawl: current %d\n", > response); > } > > return true; > @@ -3250,7 +3248,7 @@ intel_sdvo_create_enhance_property_lvds(struct > intel_sdvo *intel_sdvo, > struct intel_sdvo_connector > *intel_sdvo_connector, > struct > intel_sdvo_enhancements_reply enhancements) { > - struct drm_device *dev = intel_sdvo->base.base.dev; > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > struct drm_connector *connector = &intel_sdvo_connector- > >base.base; > u16 response, data_value[2]; > > @@ -3264,7 +3262,7 @@ intel_sdvo_create_enhance_property_lvds(struct > intel_sdvo *intel_sdvo, static bool > intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo, > struct intel_sdvo_connector > *intel_sdvo_connector) { > - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > union { > struct intel_sdvo_enhancements_reply reply; > u16 response; > @@ -3276,7 +3274,7 @@ static bool > intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo, > > SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS, > &enhancements, sizeof(enhancements)) || > enhancements.response == 0) { > - drm_dbg_kms(&i915->drm, "No enhancement is > supported\n"); > + drm_dbg_kms(display->drm, "No enhancement is > supported\n"); > return true; > } > > @@ -3351,8 +3349,8 @@ static int > intel_sdvo_init_ddc_proxy(struct intel_sdvo_ddc *ddc, > struct intel_sdvo *sdvo, int ddc_bus) { > - struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev); > - struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev); > + struct intel_display *display = to_intel_display(&sdvo->base); > + struct pci_dev *pdev = to_pci_dev(display->drm->dev); > > ddc->sdvo = sdvo; > ddc->ddc_bus = ddc_bus; > @@ -3368,25 +3366,26 @@ intel_sdvo_init_ddc_proxy(struct > intel_sdvo_ddc *ddc, > return i2c_add_adapter(&ddc->ddc); > } > > -static bool is_sdvo_port_valid(struct drm_i915_private *dev_priv, enum > port port) > +static bool is_sdvo_port_valid(struct intel_display *display, enum port > +port) > { > + struct drm_i915_private *dev_priv = to_i915(display->drm); > + > if (HAS_PCH_SPLIT(dev_priv)) > return port == PORT_B; > else > return port == PORT_B || port == PORT_C; } > > -static bool assert_sdvo_port_valid(struct drm_i915_private *dev_priv, > - enum port port) > +static bool assert_sdvo_port_valid(struct intel_display *display, enum > +port port) > { > - return !drm_WARN(&dev_priv->drm, !is_sdvo_port_valid(dev_priv, > port), > + return !drm_WARN(display->drm, !is_sdvo_port_valid(display, port), > "Platform does not support SDVO %c\n", > port_name(port)); } > > -bool intel_sdvo_init(struct drm_i915_private *dev_priv, > +bool intel_sdvo_init(struct intel_display *display, > i915_reg_t sdvo_reg, enum port port) { > - struct intel_display *display = &dev_priv->display; > + struct drm_i915_private *dev_priv = to_i915(display->drm); > struct intel_encoder *intel_encoder; > struct intel_sdvo *intel_sdvo; > int i; > @@ -3394,7 +3393,7 @@ bool intel_sdvo_init(struct drm_i915_private > *dev_priv, > if (!assert_port_valid(display, port)) > return false; > > - if (!assert_sdvo_port_valid(dev_priv, port)) > + if (!assert_sdvo_port_valid(display, port)) > return false; > > intel_sdvo = kzalloc(sizeof(*intel_sdvo), GFP_KERNEL); @@ -3407,7 > +3406,7 @@ bool intel_sdvo_init(struct drm_i915_private *dev_priv, > intel_encoder->power_domain = POWER_DOMAIN_PORT_OTHER; > intel_encoder->port = port; > > - drm_encoder_init(&dev_priv->drm, &intel_encoder->base, > + drm_encoder_init(display->drm, &intel_encoder->base, > &intel_sdvo_enc_funcs, 0, > "SDVO %c", port_name(port)); > > @@ -3421,7 +3420,7 @@ bool intel_sdvo_init(struct drm_i915_private > *dev_priv, > u8 byte; > > if (!intel_sdvo_read_byte(intel_sdvo, i, &byte)) { > - drm_dbg_kms(&dev_priv->drm, > + drm_dbg_kms(display->drm, > "No SDVO device found on %s\n", > SDVO_NAME(intel_sdvo)); > goto err; > @@ -3459,7 +3458,7 @@ bool intel_sdvo_init(struct drm_i915_private > *dev_priv, > } > > if (!intel_sdvo_output_setup(intel_sdvo)) { > - drm_dbg_kms(&dev_priv->drm, > + drm_dbg_kms(display->drm, > "SDVO output failed to setup on %s\n", > SDVO_NAME(intel_sdvo)); > /* Output_setup can leave behind connectors! */ @@ - > 3496,7 +3495,7 @@ bool intel_sdvo_init(struct drm_i915_private *dev_priv, > &intel_sdvo- > >pixel_clock_max)) > goto err_output; > > - drm_dbg_kms(&dev_priv->drm, "%s device VID/DID: > %02X:%02X.%02X, " > + drm_dbg_kms(display->drm, "%s device VID/DID: %02X:%02X.%02X, " > "clock range %dMHz - %dMHz, " > "num inputs: %d, " > "output 1: %c, output 2: %c\n", > diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.h > b/drivers/gpu/drm/i915/display/intel_sdvo.h > index d1815b4103d4..1a9e40fdd8a8 100644 > --- a/drivers/gpu/drm/i915/display/intel_sdvo.h > +++ b/drivers/gpu/drm/i915/display/intel_sdvo.h > @@ -10,22 +10,22 @@ > > #include "i915_reg_defs.h" > > -struct drm_i915_private; > enum pipe; > enum port; > +struct intel_display; > > #ifdef I915 > -bool intel_sdvo_port_enabled(struct drm_i915_private *dev_priv, > +bool intel_sdvo_port_enabled(struct intel_display *display, > i915_reg_t sdvo_reg, enum pipe *pipe); -bool > intel_sdvo_init(struct drm_i915_private *dev_priv, > +bool intel_sdvo_init(struct intel_display *display, > i915_reg_t reg, enum port port); #else -static inline bool > intel_sdvo_port_enabled(struct drm_i915_private *dev_priv, > +static inline bool intel_sdvo_port_enabled(struct intel_display > +*display, > i915_reg_t sdvo_reg, enum pipe > *pipe) { > return false; > } > -static inline bool intel_sdvo_init(struct drm_i915_private *dev_priv, > +static inline bool intel_sdvo_init(struct intel_display *display, > i915_reg_t reg, enum port port) > { > return false; > -- > 2.39.5
On Thu, 13 Feb 2025, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote: >> @@ -1941,12 +1942,13 @@ static enum drm_mode_status >> intel_sdvo_mode_valid(struct drm_connector *connector, >> const struct drm_display_mode *mode) { >> + struct intel_display *display = to_intel_display(connector->dev); > > Why not &i915->display and declare this after i915 declaration Because i915 will go away eventually, and I don't want to have to change this line again. BR, Jani. > > Otherwise LGTM, > Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com> > > >> struct drm_i915_private *i915 = to_i915(connector->dev); >> struct intel_sdvo *intel_sdvo = >> intel_attached_sdvo(to_intel_connector(connector)); >> struct intel_sdvo_connector *intel_sdvo_connector = >> to_intel_sdvo_connector(connector); >> bool has_hdmi_sink = intel_has_hdmi_sink(intel_sdvo_connector, >> connector->state); >> - int max_dotclk = i915->display.cdclk.max_dotclk_freq; >> + int max_dotclk = display->cdclk.max_dotclk_freq; >> enum drm_mode_status status; >> int clock = mode->clock; >>
diff --git a/drivers/gpu/drm/i915/display/g4x_hdmi.c b/drivers/gpu/drm/i915/display/g4x_hdmi.c index 089f1a4d7720..5c5eb3d621c8 100644 --- a/drivers/gpu/drm/i915/display/g4x_hdmi.c +++ b/drivers/gpu/drm/i915/display/g4x_hdmi.c @@ -67,7 +67,6 @@ static bool intel_hdmi_get_hw_state(struct intel_encoder *encoder, enum pipe *pipe) { struct intel_display *display = to_intel_display(encoder); - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); intel_wakeref_t wakeref; bool ret; @@ -77,7 +76,7 @@ static bool intel_hdmi_get_hw_state(struct intel_encoder *encoder, if (!wakeref) return false; - ret = intel_sdvo_port_enabled(dev_priv, intel_hdmi->hdmi_reg, pipe); + ret = intel_sdvo_port_enabled(display, intel_hdmi->hdmi_reg, pipe); intel_display_power_put(display, encoder->power_domain, wakeref); diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 9bcbd52f23cf..e1186f46088d 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -8236,7 +8236,7 @@ void intel_setup_outputs(struct drm_i915_private *dev_priv) if (intel_de_read(dev_priv, PCH_HDMIB) & SDVO_DETECTED) { /* PCH SDVOB multiplex with HDMIB */ - found = intel_sdvo_init(dev_priv, PCH_SDVOB, PORT_B); + found = intel_sdvo_init(display, PCH_SDVOB, PORT_B); if (!found) g4x_hdmi_init(display, PCH_HDMIB, PORT_B); if (!found && (intel_de_read(dev_priv, PCH_DP_B) & DP_DETECTED)) @@ -8315,7 +8315,7 @@ void intel_setup_outputs(struct drm_i915_private *dev_priv) if (intel_de_read(dev_priv, GEN3_SDVOB) & SDVO_DETECTED) { drm_dbg_kms(&dev_priv->drm, "probing SDVOB\n"); - found = intel_sdvo_init(dev_priv, GEN3_SDVOB, PORT_B); + found = intel_sdvo_init(display, GEN3_SDVOB, PORT_B); if (!found && IS_G4X(dev_priv)) { drm_dbg_kms(&dev_priv->drm, "probing HDMI on SDVOB\n"); @@ -8330,7 +8330,7 @@ void intel_setup_outputs(struct drm_i915_private *dev_priv) if (intel_de_read(dev_priv, GEN3_SDVOB) & SDVO_DETECTED) { drm_dbg_kms(&dev_priv->drm, "probing SDVOC\n"); - found = intel_sdvo_init(dev_priv, GEN3_SDVOC, PORT_C); + found = intel_sdvo_init(display, GEN3_SDVOC, PORT_C); } if (!found && (intel_de_read(dev_priv, GEN3_SDVOC) & SDVO_DETECTED)) { diff --git a/drivers/gpu/drm/i915/display/intel_pch_display.c b/drivers/gpu/drm/i915/display/intel_pch_display.c index 98a6b57ac956..1abe0a784570 100644 --- a/drivers/gpu/drm/i915/display/intel_pch_display.c +++ b/drivers/gpu/drm/i915/display/intel_pch_display.c @@ -65,7 +65,7 @@ static void assert_pch_hdmi_disabled(struct drm_i915_private *dev_priv, enum pipe port_pipe; bool state; - state = intel_sdvo_port_enabled(dev_priv, hdmi_reg, &port_pipe); + state = intel_sdvo_port_enabled(display, hdmi_reg, &port_pipe); INTEL_DISPLAY_STATE_WARN(display, state && port_pipe == pipe, "PCH HDMI %c enabled on transcoder %c, should be disabled\n", diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c index 46203d796fcc..1ae766212e8a 100644 --- a/drivers/gpu/drm/i915/display/intel_sdvo.c +++ b/drivers/gpu/drm/i915/display/intel_sdvo.c @@ -213,29 +213,29 @@ intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo, */ static void intel_sdvo_write_sdvox(struct intel_sdvo *intel_sdvo, u32 val) { - struct drm_device *dev = intel_sdvo->base.base.dev; - struct drm_i915_private *dev_priv = to_i915(dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); + struct drm_i915_private *dev_priv = to_i915(display->drm); u32 bval = val, cval = val; int i; if (HAS_PCH_SPLIT(dev_priv)) { - intel_de_write(dev_priv, intel_sdvo->sdvo_reg, val); - intel_de_posting_read(dev_priv, intel_sdvo->sdvo_reg); + intel_de_write(display, intel_sdvo->sdvo_reg, val); + intel_de_posting_read(display, intel_sdvo->sdvo_reg); /* * HW workaround, need to write this twice for issue * that may result in first write getting masked. */ if (HAS_PCH_IBX(dev_priv)) { - intel_de_write(dev_priv, intel_sdvo->sdvo_reg, val); - intel_de_posting_read(dev_priv, intel_sdvo->sdvo_reg); + intel_de_write(display, intel_sdvo->sdvo_reg, val); + intel_de_posting_read(display, intel_sdvo->sdvo_reg); } return; } if (intel_sdvo->base.port == PORT_B) - cval = intel_de_read(dev_priv, GEN3_SDVOC); + cval = intel_de_read(display, GEN3_SDVOC); else - bval = intel_de_read(dev_priv, GEN3_SDVOB); + bval = intel_de_read(display, GEN3_SDVOB); /* * Write the registers twice for luck. Sometimes, @@ -243,17 +243,17 @@ static void intel_sdvo_write_sdvox(struct intel_sdvo *intel_sdvo, u32 val) * The BIOS does this too. Yay, magic */ for (i = 0; i < 2; i++) { - intel_de_write(dev_priv, GEN3_SDVOB, bval); - intel_de_posting_read(dev_priv, GEN3_SDVOB); + intel_de_write(display, GEN3_SDVOB, bval); + intel_de_posting_read(display, GEN3_SDVOB); - intel_de_write(dev_priv, GEN3_SDVOC, cval); - intel_de_posting_read(dev_priv, GEN3_SDVOC); + intel_de_write(display, GEN3_SDVOC, cval); + intel_de_posting_read(display, GEN3_SDVOC); } } static bool intel_sdvo_read_byte(struct intel_sdvo *intel_sdvo, u8 addr, u8 *ch) { - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); struct i2c_msg msgs[] = { { .addr = intel_sdvo->target_addr, @@ -273,7 +273,7 @@ static bool intel_sdvo_read_byte(struct intel_sdvo *intel_sdvo, u8 addr, u8 *ch) if ((ret = i2c_transfer(intel_sdvo->i2c, msgs, 2)) == 2) return true; - drm_dbg_kms(&i915->drm, "i2c transfer returned %d\n", ret); + drm_dbg_kms(display->drm, "i2c transfer returned %d\n", ret); return false; } @@ -415,7 +415,7 @@ static const char *sdvo_cmd_name(u8 cmd) static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd, const void *args, int args_len) { - struct drm_i915_private *dev_priv = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); const char *cmd_name; int i, pos = 0; char buffer[64]; @@ -436,10 +436,10 @@ static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd, else BUF_PRINT("(%02X)", cmd); - drm_WARN_ON(&dev_priv->drm, pos >= sizeof(buffer) - 1); + drm_WARN_ON(display->drm, pos >= sizeof(buffer) - 1); #undef BUF_PRINT - drm_dbg_kms(&dev_priv->drm, "%s: W: %02X %s\n", SDVO_NAME(intel_sdvo), + drm_dbg_kms(display->drm, "%s: W: %02X %s\n", SDVO_NAME(intel_sdvo), cmd, buffer); } @@ -465,7 +465,7 @@ static bool __intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd, const void *args, int args_len, bool unlocked) { - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); u8 *buf, status; struct i2c_msg *msgs; int i, ret = true; @@ -515,13 +515,13 @@ static bool __intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd, else ret = __i2c_transfer(intel_sdvo->i2c, msgs, i+3); if (ret < 0) { - drm_dbg_kms(&i915->drm, "I2c transfer returned %d\n", ret); + drm_dbg_kms(display->drm, "I2c transfer returned %d\n", ret); ret = false; goto out; } if (ret != i+3) { /* failure in I2C transfer */ - drm_dbg_kms(&i915->drm, "I2c transfer returned %d/%d\n", ret, i+3); + drm_dbg_kms(display->drm, "I2c transfer returned %d/%d\n", ret, i + 3); ret = false; } @@ -540,7 +540,7 @@ static bool intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd, static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo, void *response, int response_len) { - struct drm_i915_private *dev_priv = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); const char *cmd_status; u8 retry = 15; /* 5 quick checks, followed by 10 long checks */ u8 status; @@ -605,15 +605,15 @@ static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo, BUF_PRINT(" %02X", ((u8 *)response)[i]); } - drm_WARN_ON(&dev_priv->drm, pos >= sizeof(buffer) - 1); + drm_WARN_ON(display->drm, pos >= sizeof(buffer) - 1); #undef BUF_PRINT - drm_dbg_kms(&dev_priv->drm, "%s: R: %s\n", + drm_dbg_kms(display->drm, "%s: R: %s\n", SDVO_NAME(intel_sdvo), buffer); return true; log_fail: - drm_dbg_kms(&dev_priv->drm, "%s: R: ... failed %s\n", + drm_dbg_kms(display->drm, "%s: R: ... failed %s\n", SDVO_NAME(intel_sdvo), buffer); return false; } @@ -1009,7 +1009,7 @@ static bool intel_sdvo_write_infoframe(struct intel_sdvo *intel_sdvo, unsigned int if_index, u8 tx_rate, const u8 *data, unsigned int length) { - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); u8 set_buf_index[2] = { if_index, 0 }; u8 hbuf_size, tmp[8]; int i; @@ -1022,7 +1022,7 @@ static bool intel_sdvo_write_infoframe(struct intel_sdvo *intel_sdvo, if (!intel_sdvo_get_hbuf_size(intel_sdvo, &hbuf_size)) return false; - drm_dbg_kms(&i915->drm, + drm_dbg_kms(display->drm, "writing sdvo hbuf: %i, length %u, hbuf_size: %i\n", if_index, length, hbuf_size); @@ -1049,7 +1049,7 @@ static ssize_t intel_sdvo_read_infoframe(struct intel_sdvo *intel_sdvo, unsigned int if_index, u8 *data, unsigned int length) { - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); u8 set_buf_index[2] = { if_index, 0 }; u8 hbuf_size, tx_rate, av_split; int i; @@ -1079,7 +1079,7 @@ static ssize_t intel_sdvo_read_infoframe(struct intel_sdvo *intel_sdvo, if (!intel_sdvo_get_hbuf_size(intel_sdvo, &hbuf_size)) return false; - drm_dbg_kms(&i915->drm, + drm_dbg_kms(display->drm, "reading sdvo hbuf: %i, length %u, hbuf_size: %i\n", if_index, length, hbuf_size); @@ -1100,7 +1100,7 @@ static bool intel_sdvo_compute_avi_infoframe(struct intel_sdvo *intel_sdvo, struct intel_crtc_state *crtc_state, struct drm_connector_state *conn_state) { - struct drm_i915_private *dev_priv = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); struct hdmi_avi_infoframe *frame = &crtc_state->infoframes.avi.avi; const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode; @@ -1126,7 +1126,7 @@ static bool intel_sdvo_compute_avi_infoframe(struct intel_sdvo *intel_sdvo, HDMI_QUANTIZATION_RANGE_FULL); ret = hdmi_avi_infoframe_check(frame); - if (drm_WARN_ON(&dev_priv->drm, ret)) + if (drm_WARN_ON(display->drm, ret)) return false; return true; @@ -1135,7 +1135,7 @@ static bool intel_sdvo_compute_avi_infoframe(struct intel_sdvo *intel_sdvo, static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo, const struct intel_crtc_state *crtc_state) { - struct drm_i915_private *dev_priv = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); u8 sdvo_data[HDMI_INFOFRAME_SIZE(AVI)]; const union hdmi_infoframe *frame = &crtc_state->infoframes.avi; ssize_t len; @@ -1144,12 +1144,12 @@ static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo, intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_AVI)) == 0) return true; - if (drm_WARN_ON(&dev_priv->drm, + if (drm_WARN_ON(display->drm, frame->any.type != HDMI_INFOFRAME_TYPE_AVI)) return false; len = hdmi_infoframe_pack_only(frame, sdvo_data, sizeof(sdvo_data)); - if (drm_WARN_ON(&dev_priv->drm, len < 0)) + if (drm_WARN_ON(display->drm, len < 0)) return false; return intel_sdvo_write_infoframe(intel_sdvo, SDVO_HBUF_INDEX_AVI_IF, @@ -1160,7 +1160,7 @@ static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo, static void intel_sdvo_get_avi_infoframe(struct intel_sdvo *intel_sdvo, struct intel_crtc_state *crtc_state) { - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); u8 sdvo_data[HDMI_INFOFRAME_SIZE(AVI)]; union hdmi_infoframe *frame = &crtc_state->infoframes.avi; ssize_t len; @@ -1172,7 +1172,7 @@ static void intel_sdvo_get_avi_infoframe(struct intel_sdvo *intel_sdvo, len = intel_sdvo_read_infoframe(intel_sdvo, SDVO_HBUF_INDEX_AVI_IF, sdvo_data, sizeof(sdvo_data)); if (len < 0) { - drm_dbg_kms(&i915->drm, "failed to read AVI infoframe\n"); + drm_dbg_kms(display->drm, "failed to read AVI infoframe\n"); return; } else if (len == 0) { return; @@ -1183,12 +1183,12 @@ static void intel_sdvo_get_avi_infoframe(struct intel_sdvo *intel_sdvo, ret = hdmi_infoframe_unpack(frame, sdvo_data, len); if (ret) { - drm_dbg_kms(&i915->drm, "Failed to unpack AVI infoframe\n"); + drm_dbg_kms(display->drm, "Failed to unpack AVI infoframe\n"); return; } if (frame->any.type != HDMI_INFOFRAME_TYPE_AVI) - drm_dbg_kms(&i915->drm, + drm_dbg_kms(display->drm, "Found the wrong infoframe type 0x%x (expected 0x%02x)\n", frame->any.type, HDMI_INFOFRAME_TYPE_AVI); } @@ -1196,7 +1196,7 @@ static void intel_sdvo_get_avi_infoframe(struct intel_sdvo *intel_sdvo, static void intel_sdvo_get_eld(struct intel_sdvo *intel_sdvo, struct intel_crtc_state *crtc_state) { - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); ssize_t len; u8 val; @@ -1212,7 +1212,7 @@ static void intel_sdvo_get_eld(struct intel_sdvo *intel_sdvo, len = intel_sdvo_read_infoframe(intel_sdvo, SDVO_HBUF_INDEX_ELD, crtc_state->eld, sizeof(crtc_state->eld)); if (len < 0) - drm_dbg_kms(&i915->drm, "failed to read ELD\n"); + drm_dbg_kms(display->drm, "failed to read ELD\n"); } static bool intel_sdvo_set_tv_format(struct intel_sdvo *intel_sdvo, @@ -1282,7 +1282,7 @@ intel_sdvo_get_preferred_input_mode(struct intel_sdvo *intel_sdvo, static int i9xx_adjust_sdvo_tv_clock(struct intel_crtc_state *pipe_config) { - struct drm_i915_private *dev_priv = to_i915(pipe_config->uapi.crtc->dev); + struct intel_display *display = to_intel_display(pipe_config); unsigned int dotclock = pipe_config->hw.adjusted_mode.crtc_clock; struct dpll *clock = &pipe_config->dpll; @@ -1303,7 +1303,7 @@ static int i9xx_adjust_sdvo_tv_clock(struct intel_crtc_state *pipe_config) clock->m1 = 12; clock->m2 = 8; } else { - drm_dbg_kms(&dev_priv->drm, + drm_dbg_kms(display->drm, "SDVO TV clock out of range: %i\n", dotclock); return -EINVAL; } @@ -1359,6 +1359,7 @@ static int intel_sdvo_compute_config(struct intel_encoder *encoder, struct intel_crtc_state *pipe_config, struct drm_connector_state *conn_state) { + struct intel_display *display = to_intel_display(encoder); struct drm_i915_private *i915 = to_i915(encoder->base.dev); struct intel_sdvo *intel_sdvo = to_sdvo(encoder); struct intel_sdvo_connector *intel_sdvo_connector = @@ -1366,13 +1367,13 @@ static int intel_sdvo_compute_config(struct intel_encoder *encoder, struct drm_display_mode *adjusted_mode = &pipe_config->hw.adjusted_mode; struct drm_display_mode *mode = &pipe_config->hw.mode; - if (HAS_PCH_SPLIT(to_i915(encoder->base.dev))) { + if (HAS_PCH_SPLIT(i915)) { pipe_config->has_pch_encoder = true; if (!intel_fdi_compute_pipe_bpp(pipe_config)) return -EINVAL; } - drm_dbg_kms(&i915->drm, "forcing bpc to 8 for SDVO\n"); + drm_dbg_kms(display->drm, "forcing bpc to 8 for SDVO\n"); /* FIXME: Don't increase pipe_bpp */ pipe_config->pipe_bpp = 8*3; pipe_config->sink_format = INTEL_OUTPUT_FORMAT_RGB; @@ -1451,7 +1452,7 @@ static int intel_sdvo_compute_config(struct intel_encoder *encoder, if (!intel_sdvo_compute_avi_infoframe(intel_sdvo, pipe_config, conn_state)) { - drm_dbg_kms(&i915->drm, "bad AVI infoframe\n"); + drm_dbg_kms(display->drm, "bad AVI infoframe\n"); return -EINVAL; } @@ -1525,6 +1526,7 @@ static void intel_sdvo_pre_enable(struct intel_atomic_state *state, const struct intel_crtc_state *crtc_state, const struct drm_connector_state *conn_state) { + struct intel_display *display = to_intel_display(intel_encoder); struct drm_i915_private *dev_priv = to_i915(intel_encoder->base.dev); struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc); const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode; @@ -1570,7 +1572,7 @@ static void intel_sdvo_pre_enable(struct intel_atomic_state *state, intel_sdvo_get_dtd_from_mode(&output_dtd, mode); } if (!intel_sdvo_set_output_timing(intel_sdvo, &output_dtd)) - drm_info(&dev_priv->drm, + drm_info(display->drm, "Setting output timings on %s failed\n", SDVO_NAME(intel_sdvo)); @@ -1600,13 +1602,13 @@ static void intel_sdvo_pre_enable(struct intel_atomic_state *state, if (IS_TV(intel_sdvo_connector) || IS_LVDS(intel_sdvo_connector)) input_dtd.part2.sdvo_flags = intel_sdvo->dtd_sdvo_flags; if (!intel_sdvo_set_input_timing(intel_sdvo, &input_dtd)) - drm_info(&dev_priv->drm, + drm_info(display->drm, "Setting input timings on %s failed\n", SDVO_NAME(intel_sdvo)); switch (crtc_state->pixel_multiplier) { default: - drm_WARN(&dev_priv->drm, 1, + drm_WARN(display->drm, 1, "unknown pixel multiplier specified\n"); fallthrough; case 1: rate = SDVO_CLOCK_RATE_MULT_1X; break; @@ -1617,14 +1619,14 @@ static void intel_sdvo_pre_enable(struct intel_atomic_state *state, return; /* Set the SDVO control regs. */ - if (DISPLAY_VER(dev_priv) >= 4) { + if (DISPLAY_VER(display) >= 4) { /* The real mode polarity is set by the SDVO commands, using * struct intel_sdvo_dtd. */ sdvox = SDVO_VSYNC_ACTIVE_HIGH | SDVO_HSYNC_ACTIVE_HIGH; - if (DISPLAY_VER(dev_priv) < 5) + if (DISPLAY_VER(display) < 5) sdvox |= SDVO_BORDER_ENABLE; } else { - sdvox = intel_de_read(dev_priv, intel_sdvo->sdvo_reg); + sdvox = intel_de_read(display, intel_sdvo->sdvo_reg); if (intel_sdvo->base.port == PORT_B) sdvox &= SDVOB_PRESERVE_MASK; else @@ -1637,10 +1639,10 @@ static void intel_sdvo_pre_enable(struct intel_atomic_state *state, else sdvox |= SDVO_PIPE_SEL(crtc->pipe); - if (DISPLAY_VER(dev_priv) >= 4) { + if (DISPLAY_VER(display) >= 4) { /* done in crtc_mode_set as the dpll_md reg must be written early */ - } else if (IS_I945G(dev_priv) || IS_I945GM(dev_priv) || - IS_G33(dev_priv) || IS_PINEVIEW(dev_priv)) { + } else if (display->platform.i945g || display->platform.i945gm || + display->platform.g33 || display->platform.pineview) { /* done in crtc_mode_set as it lives inside the dpll register */ } else { sdvox |= (crtc_state->pixel_multiplier - 1) @@ -1648,7 +1650,7 @@ static void intel_sdvo_pre_enable(struct intel_atomic_state *state, } if (input_dtd.part2.sdvo_flags & SDVO_NEED_TO_STALL && - DISPLAY_VER(dev_priv) < 5) + DISPLAY_VER(display) < 5) sdvox |= SDVO_STALL_SELECT; intel_sdvo_write_sdvox(intel_sdvo, sdvox); } @@ -1665,17 +1667,18 @@ static bool intel_sdvo_connector_get_hw_state(struct intel_connector *connector) return active_outputs & intel_sdvo_connector->output_flag; } -bool intel_sdvo_port_enabled(struct drm_i915_private *dev_priv, +bool intel_sdvo_port_enabled(struct intel_display *display, i915_reg_t sdvo_reg, enum pipe *pipe) { + struct drm_i915_private *dev_priv = to_i915(display->drm); u32 val; - val = intel_de_read(dev_priv, sdvo_reg); + val = intel_de_read(display, sdvo_reg); /* asserts want to know the pipe even if the port is disabled */ if (HAS_PCH_CPT(dev_priv)) *pipe = (val & SDVO_PIPE_SEL_MASK_CPT) >> SDVO_PIPE_SEL_SHIFT_CPT; - else if (IS_CHERRYVIEW(dev_priv)) + else if (display->platform.cherryview) *pipe = (val & SDVO_PIPE_SEL_MASK_CHV) >> SDVO_PIPE_SEL_SHIFT_CHV; else *pipe = (val & SDVO_PIPE_SEL_MASK) >> SDVO_PIPE_SEL_SHIFT; @@ -1686,14 +1689,14 @@ bool intel_sdvo_port_enabled(struct drm_i915_private *dev_priv, static bool intel_sdvo_get_hw_state(struct intel_encoder *encoder, enum pipe *pipe) { - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); + struct intel_display *display = to_intel_display(encoder); struct intel_sdvo *intel_sdvo = to_sdvo(encoder); u16 active_outputs = 0; bool ret; intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs); - ret = intel_sdvo_port_enabled(dev_priv, intel_sdvo->sdvo_reg, pipe); + ret = intel_sdvo_port_enabled(display, intel_sdvo->sdvo_reg, pipe); return ret || active_outputs; } @@ -1701,8 +1704,7 @@ static bool intel_sdvo_get_hw_state(struct intel_encoder *encoder, static void intel_sdvo_get_config(struct intel_encoder *encoder, struct intel_crtc_state *pipe_config) { - struct drm_device *dev = encoder->base.dev; - struct drm_i915_private *dev_priv = to_i915(dev); + struct intel_display *display = to_intel_display(encoder); struct intel_sdvo *intel_sdvo = to_sdvo(encoder); struct intel_sdvo_dtd dtd; int encoder_pixel_multiplier = 0; @@ -1713,7 +1715,7 @@ static void intel_sdvo_get_config(struct intel_encoder *encoder, pipe_config->output_types |= BIT(INTEL_OUTPUT_SDVO); - sdvox = intel_de_read(dev_priv, intel_sdvo->sdvo_reg); + sdvox = intel_de_read(display, intel_sdvo->sdvo_reg); ret = intel_sdvo_get_input_timing(intel_sdvo, &dtd); if (!ret) { @@ -1721,7 +1723,7 @@ static void intel_sdvo_get_config(struct intel_encoder *encoder, * Some sdvo encoders are not spec compliant and don't * implement the mandatory get_timings function. */ - drm_dbg(&dev_priv->drm, "failed to retrieve SDVO DTD\n"); + drm_dbg_kms(display->drm, "failed to retrieve SDVO DTD\n"); pipe_config->quirks |= PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS; } else { if (dtd.part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE) @@ -1744,7 +1746,7 @@ static void intel_sdvo_get_config(struct intel_encoder *encoder, * encoder->get_config we so already have a valid pixel multiplier on all * other platforms. */ - if (IS_I915G(dev_priv) || IS_I915GM(dev_priv)) { + if (display->platform.i915g || display->platform.i915gm) { pipe_config->pixel_multiplier = ((sdvox & SDVO_PORT_MULTIPLY_MASK) >> SDVO_PORT_MULTIPLY_SHIFT) + 1; @@ -1773,7 +1775,7 @@ static void intel_sdvo_get_config(struct intel_encoder *encoder, } } - drm_WARN(dev, + drm_WARN(display->drm, encoder_pixel_multiplier != pipe_config->pixel_multiplier, "SDVO pixel multiplier mismatch, port: %i, encoder: %i\n", pipe_config->pixel_multiplier, encoder_pixel_multiplier); @@ -1849,7 +1851,7 @@ static void intel_disable_sdvo(struct intel_atomic_state *state, intel_sdvo_set_encoder_power_state(intel_sdvo, DRM_MODE_DPMS_OFF); - temp = intel_de_read(dev_priv, intel_sdvo->sdvo_reg); + temp = intel_de_read(display, intel_sdvo->sdvo_reg); temp &= ~SDVO_ENABLE; intel_sdvo_write_sdvox(intel_sdvo, temp); @@ -1900,8 +1902,7 @@ static void intel_enable_sdvo(struct intel_atomic_state *state, const struct intel_crtc_state *pipe_config, const struct drm_connector_state *conn_state) { - struct drm_device *dev = encoder->base.dev; - struct drm_i915_private *dev_priv = to_i915(dev); + struct intel_display *display = to_intel_display(encoder); struct intel_sdvo *intel_sdvo = to_sdvo(encoder); struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(conn_state->connector); @@ -1911,7 +1912,7 @@ static void intel_enable_sdvo(struct intel_atomic_state *state, int i; bool success; - temp = intel_de_read(dev_priv, intel_sdvo->sdvo_reg); + temp = intel_de_read(display, intel_sdvo->sdvo_reg); temp |= SDVO_ENABLE; intel_sdvo_write_sdvox(intel_sdvo, temp); @@ -1926,7 +1927,7 @@ static void intel_enable_sdvo(struct intel_atomic_state *state, * a given it the status is a success, we succeeded. */ if (success && !input1) { - drm_dbg_kms(&dev_priv->drm, + drm_dbg_kms(display->drm, "First %s output reported failure to sync\n", SDVO_NAME(intel_sdvo)); } @@ -1941,12 +1942,13 @@ static enum drm_mode_status intel_sdvo_mode_valid(struct drm_connector *connector, const struct drm_display_mode *mode) { + struct intel_display *display = to_intel_display(connector->dev); struct drm_i915_private *i915 = to_i915(connector->dev); struct intel_sdvo *intel_sdvo = intel_attached_sdvo(to_intel_connector(connector)); struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); bool has_hdmi_sink = intel_has_hdmi_sink(intel_sdvo_connector, connector->state); - int max_dotclk = i915->display.cdclk.max_dotclk_freq; + int max_dotclk = display->cdclk.max_dotclk_freq; enum drm_mode_status status; int clock = mode->clock; @@ -1982,14 +1984,15 @@ intel_sdvo_mode_valid(struct drm_connector *connector, static bool intel_sdvo_get_capabilities(struct intel_sdvo *intel_sdvo, struct intel_sdvo_caps *caps) { - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); + BUILD_BUG_ON(sizeof(*caps) != 8); if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_DEVICE_CAPS, caps, sizeof(*caps))) return false; - drm_dbg_kms(&i915->drm, "SDVO capabilities:\n" + drm_dbg_kms(display->drm, "SDVO capabilities:\n" " vendor_id: %d\n" " device_id: %d\n" " device_rev_id: %d\n" @@ -2031,17 +2034,17 @@ static u8 intel_sdvo_get_colorimetry_cap(struct intel_sdvo *intel_sdvo) static u16 intel_sdvo_get_hotplug_support(struct intel_sdvo *intel_sdvo) { - struct drm_i915_private *dev_priv = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); u16 hotplug; - if (!I915_HAS_HOTPLUG(dev_priv)) + if (!I915_HAS_HOTPLUG(display)) return 0; /* * HW Erratum: SDVO Hotplug is broken on all i945G chips, there's noise * on the line. */ - if (IS_I945G(dev_priv) || IS_I945GM(dev_priv)) + if (display->platform.i945g || display->platform.i945gm) return 0; if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HOT_PLUG_SUPPORT, @@ -2138,13 +2141,12 @@ static enum drm_connector_status intel_sdvo_detect(struct drm_connector *connector, bool force) { struct intel_display *display = to_intel_display(connector->dev); - struct drm_i915_private *i915 = to_i915(connector->dev); struct intel_sdvo *intel_sdvo = intel_attached_sdvo(to_intel_connector(connector)); struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); enum drm_connector_status ret; u16 response; - drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s]\n", + drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", connector->base.id, connector->name); if (!intel_display_device_enabled(display)) @@ -2162,7 +2164,7 @@ intel_sdvo_detect(struct drm_connector *connector, bool force) &response, 2)) return connector_status_unknown; - drm_dbg_kms(&i915->drm, "SDVO response %d %d [%x]\n", + drm_dbg_kms(display->drm, "SDVO response %d %d [%x]\n", response & 0xff, response >> 8, intel_sdvo_connector->output_flag); @@ -2301,7 +2303,6 @@ static int intel_sdvo_get_tv_modes(struct drm_connector *connector) { struct intel_display *display = to_intel_display(connector->dev); struct intel_sdvo *intel_sdvo = intel_attached_sdvo(to_intel_connector(connector)); - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); const struct drm_connector_state *conn_state = connector->state; @@ -2310,7 +2311,7 @@ static int intel_sdvo_get_tv_modes(struct drm_connector *connector) int num_modes = 0; int i; - drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s]\n", + drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", connector->base.id, connector->name); if (!intel_display_driver_check_access(display)) @@ -2352,9 +2353,9 @@ static int intel_sdvo_get_tv_modes(struct drm_connector *connector) static int intel_sdvo_get_lvds_modes(struct drm_connector *connector) { - struct drm_i915_private *dev_priv = to_i915(connector->dev); + struct intel_display *display = to_intel_display(connector->dev); - drm_dbg_kms(&dev_priv->drm, "[CONNECTOR:%d:%s]\n", + drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s]\n", connector->base.id, connector->name); return intel_panel_get_modes(to_intel_connector(connector)); @@ -2618,14 +2619,14 @@ static struct intel_sdvo_ddc * intel_sdvo_select_ddc_bus(struct intel_sdvo *sdvo, struct intel_sdvo_connector *connector) { - struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&sdvo->base); const struct sdvo_device_mapping *mapping; int ddc_bus; if (sdvo->base.port == PORT_B) - mapping = &dev_priv->display.vbt.sdvo_mappings[0]; + mapping = &display->vbt.sdvo_mappings[0]; else - mapping = &dev_priv->display.vbt.sdvo_mappings[1]; + mapping = &display->vbt.sdvo_mappings[1]; if (mapping->initialized) ddc_bus = (mapping->ddc_pin & 0xf0) >> 4; @@ -2642,14 +2643,13 @@ static void intel_sdvo_select_i2c_bus(struct intel_sdvo *sdvo) { struct intel_display *display = to_intel_display(&sdvo->base); - struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev); const struct sdvo_device_mapping *mapping; u8 pin; if (sdvo->base.port == PORT_B) - mapping = &dev_priv->display.vbt.sdvo_mappings[0]; + mapping = &display->vbt.sdvo_mappings[0]; else - mapping = &dev_priv->display.vbt.sdvo_mappings[1]; + mapping = &display->vbt.sdvo_mappings[1]; if (mapping->initialized && intel_gmbus_is_valid_pin(display, mapping->i2c_pin)) @@ -2657,7 +2657,7 @@ intel_sdvo_select_i2c_bus(struct intel_sdvo *sdvo) else pin = GMBUS_PIN_DPB; - drm_dbg_kms(&dev_priv->drm, "[ENCODER:%d:%s] I2C pin %d, target addr 0x%x\n", + drm_dbg_kms(display->drm, "[ENCODER:%d:%s] I2C pin %d, target addr 0x%x\n", sdvo->base.base.base.id, sdvo->base.base.name, pin, sdvo->target_addr); @@ -2687,15 +2687,15 @@ intel_sdvo_is_hdmi_connector(struct intel_sdvo *intel_sdvo) static u8 intel_sdvo_get_target_addr(struct intel_sdvo *sdvo) { - struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&sdvo->base); const struct sdvo_device_mapping *my_mapping, *other_mapping; if (sdvo->base.port == PORT_B) { - my_mapping = &dev_priv->display.vbt.sdvo_mappings[0]; - other_mapping = &dev_priv->display.vbt.sdvo_mappings[1]; + my_mapping = &display->vbt.sdvo_mappings[0]; + other_mapping = &display->vbt.sdvo_mappings[1]; } else { - my_mapping = &dev_priv->display.vbt.sdvo_mappings[1]; - other_mapping = &dev_priv->display.vbt.sdvo_mappings[0]; + my_mapping = &display->vbt.sdvo_mappings[1]; + other_mapping = &display->vbt.sdvo_mappings[0]; } /* If the BIOS described our SDVO device, take advantage of it. */ @@ -2731,7 +2731,7 @@ static int intel_sdvo_connector_init(struct intel_sdvo_connector *connector, struct intel_sdvo *encoder) { - struct drm_i915_private *i915 = to_i915(encoder->base.base.dev); + struct intel_display *display = to_intel_display(&encoder->base); struct intel_sdvo_ddc *ddc = NULL; int ret; @@ -2756,7 +2756,7 @@ intel_sdvo_connector_init(struct intel_sdvo_connector *connector, intel_connector_attach_encoder(&connector->base, &encoder->base); if (ddc) - drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] using %s\n", + drm_dbg_kms(display->drm, "[CONNECTOR:%d:%s] using %s\n", connector->base.base.base.id, connector->base.base.name, ddc->ddc.name); @@ -2799,14 +2799,14 @@ static struct intel_sdvo_connector *intel_sdvo_connector_alloc(void) static bool intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, u16 type) { + struct intel_display *display = to_intel_display(&intel_sdvo->base); struct drm_encoder *encoder = &intel_sdvo->base.base; struct drm_connector *connector; struct intel_encoder *intel_encoder = to_intel_encoder(encoder); - struct drm_i915_private *i915 = to_i915(intel_encoder->base.dev); struct intel_connector *intel_connector; struct intel_sdvo_connector *intel_sdvo_connector; - drm_dbg_kms(&i915->drm, "initialising DVI type 0x%x\n", type); + drm_dbg_kms(display->drm, "initialising DVI type 0x%x\n", type); intel_sdvo_connector = intel_sdvo_connector_alloc(); if (!intel_sdvo_connector) @@ -2852,13 +2852,13 @@ intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, u16 type) static bool intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, u16 type) { - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); struct drm_encoder *encoder = &intel_sdvo->base.base; struct drm_connector *connector; struct intel_connector *intel_connector; struct intel_sdvo_connector *intel_sdvo_connector; - drm_dbg_kms(&i915->drm, "initialising TV type 0x%x\n", type); + drm_dbg_kms(display->drm, "initialising TV type 0x%x\n", type); intel_sdvo_connector = intel_sdvo_connector_alloc(); if (!intel_sdvo_connector) @@ -2892,13 +2892,13 @@ intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, u16 type) static bool intel_sdvo_analog_init(struct intel_sdvo *intel_sdvo, u16 type) { - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); struct drm_encoder *encoder = &intel_sdvo->base.base; struct drm_connector *connector; struct intel_connector *intel_connector; struct intel_sdvo_connector *intel_sdvo_connector; - drm_dbg_kms(&i915->drm, "initialising analog type 0x%x\n", type); + drm_dbg_kms(display->drm, "initialising analog type 0x%x\n", type); intel_sdvo_connector = intel_sdvo_connector_alloc(); if (!intel_sdvo_connector) @@ -2926,12 +2926,11 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, u16 type) { struct intel_display *display = to_intel_display(&intel_sdvo->base); struct drm_encoder *encoder = &intel_sdvo->base.base; - struct drm_i915_private *i915 = to_i915(encoder->dev); struct drm_connector *connector; struct intel_connector *intel_connector; struct intel_sdvo_connector *intel_sdvo_connector; - drm_dbg_kms(&i915->drm, "initialising LVDS type 0x%x\n", type); + drm_dbg_kms(display->drm, "initialising LVDS type 0x%x\n", type); intel_sdvo_connector = intel_sdvo_connector_alloc(); if (!intel_sdvo_connector) @@ -2961,12 +2960,12 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, u16 type) intel_panel_add_vbt_sdvo_fixed_mode(intel_connector); if (!intel_panel_preferred_fixed_mode(intel_connector)) { - mutex_lock(&i915->drm.mode_config.mutex); + mutex_lock(&display->drm->mode_config.mutex); intel_ddc_get_modes(connector, connector->ddc); intel_panel_add_edid_fixed_modes(intel_connector, false); - mutex_unlock(&i915->drm.mode_config.mutex); + mutex_unlock(&display->drm->mode_config.mutex); } intel_panel_init(intel_connector, NULL); @@ -3015,7 +3014,7 @@ static bool intel_sdvo_output_init(struct intel_sdvo *sdvo, u16 type) static bool intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo) { - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); static const u16 probe_order[] = { SDVO_OUTPUT_TMDS0, SDVO_OUTPUT_TMDS1, @@ -3034,7 +3033,7 @@ intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo) flags = intel_sdvo_filter_output_flags(intel_sdvo->caps.output_flags); if (flags == 0) { - drm_dbg_kms(&i915->drm, + drm_dbg_kms(display->drm, "%s: Unknown SDVO output type (0x%04x)\n", SDVO_NAME(intel_sdvo), intel_sdvo->caps.output_flags); return false; @@ -3057,11 +3056,11 @@ intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo) static void intel_sdvo_output_cleanup(struct intel_sdvo *intel_sdvo) { - struct drm_device *dev = intel_sdvo->base.base.dev; + struct intel_display *display = to_intel_display(&intel_sdvo->base); struct drm_connector *connector, *tmp; list_for_each_entry_safe(connector, tmp, - &dev->mode_config.connector_list, head) { + &display->drm->mode_config.connector_list, head) { if (intel_attached_encoder(to_intel_connector(connector)) == &intel_sdvo->base) { drm_connector_unregister(connector); intel_connector_destroy(connector); @@ -3073,7 +3072,7 @@ static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo, struct intel_sdvo_connector *intel_sdvo_connector, int type) { - struct drm_device *dev = intel_sdvo->base.base.dev; + struct intel_display *display = to_intel_display(&intel_sdvo->base); struct intel_sdvo_tv_format format; u32 format_map, i; @@ -3098,7 +3097,7 @@ static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo, intel_sdvo_connector->tv_format = - drm_property_create(dev, DRM_MODE_PROP_ENUM, + drm_property_create(display->drm, DRM_MODE_PROP_ENUM, "mode", intel_sdvo_connector->format_supported_num); if (!intel_sdvo_connector->tv_format) return false; @@ -3120,12 +3119,12 @@ static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo, !intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_##NAME, &response, 2)) \ return false; \ intel_sdvo_connector->name = \ - drm_property_create_range(dev, 0, #name, 0, data_value[0]); \ + drm_property_create_range(display->drm, 0, #name, 0, data_value[0]); \ if (!intel_sdvo_connector->name) return false; \ state_assignment = response; \ drm_object_attach_property(&connector->base, \ intel_sdvo_connector->name, 0); \ - drm_dbg_kms(dev, #name ": max %d, default %d, current %d\n", \ + drm_dbg_kms(display->drm, #name ": max %d, default %d, current %d\n", \ data_value[0], data_value[1], response); \ } \ } while (0) @@ -3137,8 +3136,7 @@ intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo, struct intel_sdvo_connector *intel_sdvo_connector, struct intel_sdvo_enhancements_reply enhancements) { - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); - struct drm_device *dev = intel_sdvo->base.base.dev; + struct intel_display *display = to_intel_display(&intel_sdvo->base); struct drm_connector *connector = &intel_sdvo_connector->base.base; struct drm_connector_state *conn_state = connector->state; struct intel_sdvo_connector_state *sdvo_state = @@ -3161,7 +3159,7 @@ intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo, intel_sdvo_connector->max_hscan = data_value[0]; intel_sdvo_connector->left = - drm_property_create_range(dev, 0, "left_margin", 0, data_value[0]); + drm_property_create_range(display->drm, 0, "left_margin", 0, data_value[0]); if (!intel_sdvo_connector->left) return false; @@ -3169,13 +3167,13 @@ intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo, intel_sdvo_connector->left, 0); intel_sdvo_connector->right = - drm_property_create_range(dev, 0, "right_margin", 0, data_value[0]); + drm_property_create_range(display->drm, 0, "right_margin", 0, data_value[0]); if (!intel_sdvo_connector->right) return false; drm_object_attach_property(&connector->base, intel_sdvo_connector->right, 0); - drm_dbg_kms(&i915->drm, "h_overscan: max %d, default %d, current %d\n", + drm_dbg_kms(display->drm, "h_overscan: max %d, default %d, current %d\n", data_value[0], data_value[1], response); } @@ -3194,7 +3192,7 @@ intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo, intel_sdvo_connector->max_vscan = data_value[0]; intel_sdvo_connector->top = - drm_property_create_range(dev, 0, + drm_property_create_range(display->drm, 0, "top_margin", 0, data_value[0]); if (!intel_sdvo_connector->top) return false; @@ -3203,14 +3201,14 @@ intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo, intel_sdvo_connector->top, 0); intel_sdvo_connector->bottom = - drm_property_create_range(dev, 0, + drm_property_create_range(display->drm, 0, "bottom_margin", 0, data_value[0]); if (!intel_sdvo_connector->bottom) return false; drm_object_attach_property(&connector->base, intel_sdvo_connector->bottom, 0); - drm_dbg_kms(&i915->drm, "v_overscan: max %d, default %d, current %d\n", + drm_dbg_kms(display->drm, "v_overscan: max %d, default %d, current %d\n", data_value[0], data_value[1], response); } @@ -3233,13 +3231,13 @@ intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo, sdvo_state->tv.dot_crawl = response & 0x1; intel_sdvo_connector->dot_crawl = - drm_property_create_range(dev, 0, "dot_crawl", 0, 1); + drm_property_create_range(display->drm, 0, "dot_crawl", 0, 1); if (!intel_sdvo_connector->dot_crawl) return false; drm_object_attach_property(&connector->base, intel_sdvo_connector->dot_crawl, 0); - drm_dbg_kms(&i915->drm, "dot crawl: current %d\n", response); + drm_dbg_kms(display->drm, "dot crawl: current %d\n", response); } return true; @@ -3250,7 +3248,7 @@ intel_sdvo_create_enhance_property_lvds(struct intel_sdvo *intel_sdvo, struct intel_sdvo_connector *intel_sdvo_connector, struct intel_sdvo_enhancements_reply enhancements) { - struct drm_device *dev = intel_sdvo->base.base.dev; + struct intel_display *display = to_intel_display(&intel_sdvo->base); struct drm_connector *connector = &intel_sdvo_connector->base.base; u16 response, data_value[2]; @@ -3264,7 +3262,7 @@ intel_sdvo_create_enhance_property_lvds(struct intel_sdvo *intel_sdvo, static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo, struct intel_sdvo_connector *intel_sdvo_connector) { - struct drm_i915_private *i915 = to_i915(intel_sdvo->base.base.dev); + struct intel_display *display = to_intel_display(&intel_sdvo->base); union { struct intel_sdvo_enhancements_reply reply; u16 response; @@ -3276,7 +3274,7 @@ static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo, SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS, &enhancements, sizeof(enhancements)) || enhancements.response == 0) { - drm_dbg_kms(&i915->drm, "No enhancement is supported\n"); + drm_dbg_kms(display->drm, "No enhancement is supported\n"); return true; } @@ -3351,8 +3349,8 @@ static int intel_sdvo_init_ddc_proxy(struct intel_sdvo_ddc *ddc, struct intel_sdvo *sdvo, int ddc_bus) { - struct drm_i915_private *dev_priv = to_i915(sdvo->base.base.dev); - struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev); + struct intel_display *display = to_intel_display(&sdvo->base); + struct pci_dev *pdev = to_pci_dev(display->drm->dev); ddc->sdvo = sdvo; ddc->ddc_bus = ddc_bus; @@ -3368,25 +3366,26 @@ intel_sdvo_init_ddc_proxy(struct intel_sdvo_ddc *ddc, return i2c_add_adapter(&ddc->ddc); } -static bool is_sdvo_port_valid(struct drm_i915_private *dev_priv, enum port port) +static bool is_sdvo_port_valid(struct intel_display *display, enum port port) { + struct drm_i915_private *dev_priv = to_i915(display->drm); + if (HAS_PCH_SPLIT(dev_priv)) return port == PORT_B; else return port == PORT_B || port == PORT_C; } -static bool assert_sdvo_port_valid(struct drm_i915_private *dev_priv, - enum port port) +static bool assert_sdvo_port_valid(struct intel_display *display, enum port port) { - return !drm_WARN(&dev_priv->drm, !is_sdvo_port_valid(dev_priv, port), + return !drm_WARN(display->drm, !is_sdvo_port_valid(display, port), "Platform does not support SDVO %c\n", port_name(port)); } -bool intel_sdvo_init(struct drm_i915_private *dev_priv, +bool intel_sdvo_init(struct intel_display *display, i915_reg_t sdvo_reg, enum port port) { - struct intel_display *display = &dev_priv->display; + struct drm_i915_private *dev_priv = to_i915(display->drm); struct intel_encoder *intel_encoder; struct intel_sdvo *intel_sdvo; int i; @@ -3394,7 +3393,7 @@ bool intel_sdvo_init(struct drm_i915_private *dev_priv, if (!assert_port_valid(display, port)) return false; - if (!assert_sdvo_port_valid(dev_priv, port)) + if (!assert_sdvo_port_valid(display, port)) return false; intel_sdvo = kzalloc(sizeof(*intel_sdvo), GFP_KERNEL); @@ -3407,7 +3406,7 @@ bool intel_sdvo_init(struct drm_i915_private *dev_priv, intel_encoder->power_domain = POWER_DOMAIN_PORT_OTHER; intel_encoder->port = port; - drm_encoder_init(&dev_priv->drm, &intel_encoder->base, + drm_encoder_init(display->drm, &intel_encoder->base, &intel_sdvo_enc_funcs, 0, "SDVO %c", port_name(port)); @@ -3421,7 +3420,7 @@ bool intel_sdvo_init(struct drm_i915_private *dev_priv, u8 byte; if (!intel_sdvo_read_byte(intel_sdvo, i, &byte)) { - drm_dbg_kms(&dev_priv->drm, + drm_dbg_kms(display->drm, "No SDVO device found on %s\n", SDVO_NAME(intel_sdvo)); goto err; @@ -3459,7 +3458,7 @@ bool intel_sdvo_init(struct drm_i915_private *dev_priv, } if (!intel_sdvo_output_setup(intel_sdvo)) { - drm_dbg_kms(&dev_priv->drm, + drm_dbg_kms(display->drm, "SDVO output failed to setup on %s\n", SDVO_NAME(intel_sdvo)); /* Output_setup can leave behind connectors! */ @@ -3496,7 +3495,7 @@ bool intel_sdvo_init(struct drm_i915_private *dev_priv, &intel_sdvo->pixel_clock_max)) goto err_output; - drm_dbg_kms(&dev_priv->drm, "%s device VID/DID: %02X:%02X.%02X, " + drm_dbg_kms(display->drm, "%s device VID/DID: %02X:%02X.%02X, " "clock range %dMHz - %dMHz, " "num inputs: %d, " "output 1: %c, output 2: %c\n", diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.h b/drivers/gpu/drm/i915/display/intel_sdvo.h index d1815b4103d4..1a9e40fdd8a8 100644 --- a/drivers/gpu/drm/i915/display/intel_sdvo.h +++ b/drivers/gpu/drm/i915/display/intel_sdvo.h @@ -10,22 +10,22 @@ #include "i915_reg_defs.h" -struct drm_i915_private; enum pipe; enum port; +struct intel_display; #ifdef I915 -bool intel_sdvo_port_enabled(struct drm_i915_private *dev_priv, +bool intel_sdvo_port_enabled(struct intel_display *display, i915_reg_t sdvo_reg, enum pipe *pipe); -bool intel_sdvo_init(struct drm_i915_private *dev_priv, +bool intel_sdvo_init(struct intel_display *display, i915_reg_t reg, enum port port); #else -static inline bool intel_sdvo_port_enabled(struct drm_i915_private *dev_priv, +static inline bool intel_sdvo_port_enabled(struct intel_display *display, i915_reg_t sdvo_reg, enum pipe *pipe) { return false; } -static inline bool intel_sdvo_init(struct drm_i915_private *dev_priv, +static inline bool intel_sdvo_init(struct intel_display *display, i915_reg_t reg, enum port port) { return false;
Going forward, struct intel_display is the main display device data pointer. Convert as much as possible of intel_sdvo.[ch] to struct intel_display. Signed-off-by: Jani Nikula <jani.nikula@intel.com> --- drivers/gpu/drm/i915/display/g4x_hdmi.c | 3 +- drivers/gpu/drm/i915/display/intel_display.c | 6 +- .../gpu/drm/i915/display/intel_pch_display.c | 2 +- drivers/gpu/drm/i915/display/intel_sdvo.c | 281 +++++++++--------- drivers/gpu/drm/i915/display/intel_sdvo.h | 10 +- 5 files changed, 150 insertions(+), 152 deletions(-)