On Mon, Feb 18, 2013 at 07:00:26PM -0300, Paulo Zanoni wrote: > From: Paulo Zanoni <paulo.r.zanoni at intel.com> > > Some (but not all) of the HDMI registers can be used to control sDVO, > so those registers have two names. IMHO, when we're talking about > HDMI, we really should call the HDMI control register "hdmi_reg" > instead of "sdvox_reg", otherwise we'll just confuse people reading > our code (we now have platforms with HDMI but without SDVO). So now > "struct intel_hdmi" has a member called "hdmi_reg" instead of > "sdvox_reg". > > Also, don't worry: "struct intel_sdvo" still has a member called > "sdvo_reg". > > v2: Rebase (v1 was sent in May 2012). > > Signed-off-by: Paulo Zanoni <paulo.r.zanoni at intel.com> I've merged patches 4-7 from this series, thanks. -Daniel > --- > drivers/gpu/drm/i915/intel_ddi.c | 4 +-- > drivers/gpu/drm/i915/intel_drv.h | 4 +-- > drivers/gpu/drm/i915/intel_hdmi.c | 72 ++++++++++++++++++------------------- > 3 files changed, 39 insertions(+), 41 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c > index 816c45c..56bb7cb 100644 > --- a/drivers/gpu/drm/i915/intel_ddi.c > +++ b/drivers/gpu/drm/i915/intel_ddi.c > @@ -1538,9 +1538,7 @@ void intel_ddi_init(struct drm_device *dev, enum port port) > intel_dig_port->port_reversal = I915_READ(DDI_BUF_CTL(port)) & > DDI_BUF_PORT_REVERSAL; > if (hdmi_connector) > - intel_dig_port->hdmi.sdvox_reg = DDI_BUF_CTL(port); > - else > - intel_dig_port->hdmi.sdvox_reg = 0; > + intel_dig_port->hdmi.hdmi_reg = DDI_BUF_CTL(port); > intel_dig_port->dp.output_reg = DDI_BUF_CTL(port); > > intel_encoder->type = INTEL_OUTPUT_UNKNOWN; > diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h > index 6f41a07..8659df2 100644 > --- a/drivers/gpu/drm/i915/intel_drv.h > +++ b/drivers/gpu/drm/i915/intel_drv.h > @@ -347,7 +347,7 @@ struct dip_infoframe { > } __attribute__((packed)); > > struct intel_hdmi { > - u32 sdvox_reg; > + u32 hdmi_reg; > int ddc_bus; > uint32_t color_range; > bool color_range_auto; > @@ -444,7 +444,7 @@ extern void intel_attach_broadcast_rgb_property(struct drm_connector *connector) > > extern void intel_crt_init(struct drm_device *dev); > extern void intel_hdmi_init(struct drm_device *dev, > - int sdvox_reg, enum port port); > + int hdmi_reg, enum port port); > extern void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, > struct intel_connector *intel_connector); > extern struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder); > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c > index ed65c6d..fcb36c6 100644 > --- a/drivers/gpu/drm/i915/intel_hdmi.c > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > @@ -50,7 +50,7 @@ assert_hdmi_port_disabled(struct intel_hdmi *intel_hdmi) > > enabled_bits = HAS_DDI(dev) ? DDI_BUF_CTL_ENABLE : SDVO_ENABLE; > > - WARN(I915_READ(intel_hdmi->sdvox_reg) & enabled_bits, > + WARN(I915_READ(intel_hdmi->hdmi_reg) & enabled_bits, > "HDMI port enabled, expecting disabled\n"); > } > > @@ -597,40 +597,40 @@ static void intel_hdmi_mode_set(struct drm_encoder *encoder, > struct drm_i915_private *dev_priv = dev->dev_private; > struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); > struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); > - u32 sdvox; > + u32 hdmi_val; > > - sdvox = SDVO_ENCODING_HDMI; > + hdmi_val = SDVO_ENCODING_HDMI; > if (!HAS_PCH_SPLIT(dev)) > - sdvox |= intel_hdmi->color_range; > + hdmi_val |= intel_hdmi->color_range; > if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) > - sdvox |= SDVO_VSYNC_ACTIVE_HIGH; > + hdmi_val |= SDVO_VSYNC_ACTIVE_HIGH; > if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) > - sdvox |= SDVO_HSYNC_ACTIVE_HIGH; > + hdmi_val |= SDVO_HSYNC_ACTIVE_HIGH; > > if (intel_crtc->bpp > 24) > - sdvox |= COLOR_FORMAT_12bpc; > + hdmi_val |= COLOR_FORMAT_12bpc; > else > - sdvox |= COLOR_FORMAT_8bpc; > + hdmi_val |= COLOR_FORMAT_8bpc; > > /* Required on CPT */ > if (intel_hdmi->has_hdmi_sink && HAS_PCH_CPT(dev)) > - sdvox |= HDMI_MODE_SELECT; > + hdmi_val |= HDMI_MODE_SELECT; > > if (intel_hdmi->has_audio) { > DRM_DEBUG_DRIVER("Enabling HDMI audio on pipe %c\n", > pipe_name(intel_crtc->pipe)); > - sdvox |= SDVO_AUDIO_ENABLE; > - sdvox |= SDVO_NULL_PACKETS_DURING_VSYNC; > + hdmi_val |= SDVO_AUDIO_ENABLE; > + hdmi_val |= SDVO_NULL_PACKETS_DURING_VSYNC; > intel_write_eld(encoder, adjusted_mode); > } > > if (HAS_PCH_CPT(dev)) > - sdvox |= PORT_TRANS_SEL_CPT(intel_crtc->pipe); > + hdmi_val |= PORT_TRANS_SEL_CPT(intel_crtc->pipe); > else if (intel_crtc->pipe == PIPE_B) > - sdvox |= SDVO_PIPE_B_SELECT; > + hdmi_val |= SDVO_PIPE_B_SELECT; > > - I915_WRITE(intel_hdmi->sdvox_reg, sdvox); > - POSTING_READ(intel_hdmi->sdvox_reg); > + I915_WRITE(intel_hdmi->hdmi_reg, hdmi_val); > + POSTING_READ(intel_hdmi->hdmi_reg); > > intel_hdmi->set_infoframes(encoder, adjusted_mode); > } > @@ -643,7 +643,7 @@ static bool intel_hdmi_get_hw_state(struct intel_encoder *encoder, > struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); > u32 tmp; > > - tmp = I915_READ(intel_hdmi->sdvox_reg); > + tmp = I915_READ(intel_hdmi->hdmi_reg); > > if (!(tmp & SDVO_ENABLE)) > return false; > @@ -667,7 +667,7 @@ static void intel_enable_hdmi(struct intel_encoder *encoder) > if (intel_hdmi->has_audio) > enable_bits |= SDVO_AUDIO_ENABLE; > > - temp = I915_READ(intel_hdmi->sdvox_reg); > + temp = I915_READ(intel_hdmi->hdmi_reg); > > /* HW workaround for IBX, we need to move the port to transcoder A > * before disabling it. */ > @@ -684,21 +684,21 @@ static void intel_enable_hdmi(struct intel_encoder *encoder) > * we do this anyway which shows more stable in testing. > */ > if (HAS_PCH_SPLIT(dev)) { > - I915_WRITE(intel_hdmi->sdvox_reg, temp & ~SDVO_ENABLE); > - POSTING_READ(intel_hdmi->sdvox_reg); > + I915_WRITE(intel_hdmi->hdmi_reg, temp & ~SDVO_ENABLE); > + POSTING_READ(intel_hdmi->hdmi_reg); > } > > temp |= enable_bits; > > - I915_WRITE(intel_hdmi->sdvox_reg, temp); > - POSTING_READ(intel_hdmi->sdvox_reg); > + I915_WRITE(intel_hdmi->hdmi_reg, temp); > + POSTING_READ(intel_hdmi->hdmi_reg); > > /* HW workaround, need to write this twice for issue that may result > * in first write getting masked. > */ > if (HAS_PCH_SPLIT(dev)) { > - I915_WRITE(intel_hdmi->sdvox_reg, temp); > - POSTING_READ(intel_hdmi->sdvox_reg); > + I915_WRITE(intel_hdmi->hdmi_reg, temp); > + POSTING_READ(intel_hdmi->hdmi_reg); > } > } > > @@ -710,7 +710,7 @@ static void intel_disable_hdmi(struct intel_encoder *encoder) > u32 temp; > u32 enable_bits = SDVO_ENABLE | SDVO_AUDIO_ENABLE; > > - temp = I915_READ(intel_hdmi->sdvox_reg); > + temp = I915_READ(intel_hdmi->hdmi_reg); > > /* HW workaround for IBX, we need to move the port to transcoder A > * before disabling it. */ > @@ -720,12 +720,12 @@ static void intel_disable_hdmi(struct intel_encoder *encoder) > > if (temp & SDVO_PIPE_B_SELECT) { > temp &= ~SDVO_PIPE_B_SELECT; > - I915_WRITE(intel_hdmi->sdvox_reg, temp); > - POSTING_READ(intel_hdmi->sdvox_reg); > + I915_WRITE(intel_hdmi->hdmi_reg, temp); > + POSTING_READ(intel_hdmi->hdmi_reg); > > /* Again we need to write this twice. */ > - I915_WRITE(intel_hdmi->sdvox_reg, temp); > - POSTING_READ(intel_hdmi->sdvox_reg); > + I915_WRITE(intel_hdmi->hdmi_reg, temp); > + POSTING_READ(intel_hdmi->hdmi_reg); > > /* Transcoder selection bits only update > * effectively on vblank. */ > @@ -740,21 +740,21 @@ static void intel_disable_hdmi(struct intel_encoder *encoder) > * we do this anyway which shows more stable in testing. > */ > if (HAS_PCH_SPLIT(dev)) { > - I915_WRITE(intel_hdmi->sdvox_reg, temp & ~SDVO_ENABLE); > - POSTING_READ(intel_hdmi->sdvox_reg); > + I915_WRITE(intel_hdmi->hdmi_reg, temp & ~SDVO_ENABLE); > + POSTING_READ(intel_hdmi->hdmi_reg); > } > > temp &= ~enable_bits; > > - I915_WRITE(intel_hdmi->sdvox_reg, temp); > - POSTING_READ(intel_hdmi->sdvox_reg); > + I915_WRITE(intel_hdmi->hdmi_reg, temp); > + POSTING_READ(intel_hdmi->hdmi_reg); > > /* HW workaround, need to write this twice for issue that may result > * in first write getting masked. > */ > if (HAS_PCH_SPLIT(dev)) { > - I915_WRITE(intel_hdmi->sdvox_reg, temp); > - POSTING_READ(intel_hdmi->sdvox_reg); > + I915_WRITE(intel_hdmi->hdmi_reg, temp); > + POSTING_READ(intel_hdmi->hdmi_reg); > } > } > > @@ -1075,7 +1075,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, > } > } > > -void intel_hdmi_init(struct drm_device *dev, int sdvox_reg, enum port port) > +void intel_hdmi_init(struct drm_device *dev, int hdmi_reg, enum port port) > { > struct intel_digital_port *intel_dig_port; > struct intel_encoder *intel_encoder; > @@ -1108,7 +1108,7 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg, enum port port) > intel_encoder->cloneable = false; > > intel_dig_port->port = port; > - intel_dig_port->hdmi.sdvox_reg = sdvox_reg; > + intel_dig_port->hdmi.hdmi_reg = hdmi_reg; > intel_dig_port->dp.output_reg = 0; > > intel_hdmi_init_connector(intel_dig_port, intel_connector); > -- > 1.7.10.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch