aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_audio.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2016-07-14 23:50:58 -0400
committerDave Airlie <airlied@redhat.com>2016-07-14 23:50:58 -0400
commitff37c05a996bb96eccc21f4fb1b32ba0e24f3443 (patch)
treec09b09b37521f2f8f3f7a9bb3b0a33a2b3bde1a1 /drivers/gpu/drm/i915/intel_audio.c
parent6c181c82106e12dced317e93a7a396cbb8c64f75 (diff)
parent0b2c0582f1570bfc95aa9ac1cd340a215d8e8335 (diff)
Merge tag 'drm-intel-next-2016-07-11' of git://anongit.freedesktop.org/drm-intel into drm-next
- select igt testing depencies for CONFIG_DRM_I915_DEBUG (Chris) - track outputs in crtc state and clean up all our ad-hoc connector/encoder walking in modest code (Ville) - demidlayer drm_device/drm_i915_private (Chris Wilson) - thundering herd fix from Chris Wilson, with lots of help from Tvrtko Ursulin - piles of assorted clean and fallout from the thundering herd fix - documentation and more tuning for waitboosting (Chris) - pooled EU support on bxt (Arun Siluvery) - bxt support is no longer considered prelimary! - ring/engine vfunc cleanup from Tvrtko - introduce intel_wait_for_register helper (Chris) - opregion updates (Jani Nukla) - tuning and fixes for wait_for macros (Tvrkto&Imre) - more kabylake pci ids (Rodrigo) - pps cleanup and fixes for bxt (Imre) - move sink crc support over to atomic state (Maarten) - fix up async fbdev init ordering (Chris) - fbc fixes from Paulo and Chris * tag 'drm-intel-next-2016-07-11' of git://anongit.freedesktop.org/drm-intel: (223 commits) drm/i915: Update DRIVER_DATE to 20160711 drm/i915: Select DRM_VGEM for igt drm/i915: Select X86_MSR for igt drm/i915: Fill unused GGTT with scratch pages for VT-d drm/i915: Introduce Kabypoint PCH for Kabylake H/DT. drm/i915:gen9: implement WaMediaPoolStateCmdInWABB drm/i915: Check for invalid cloning earlier during modeset drm/i915: Simplify hdmi_12bpc_possible() drm/i915: Kill has_dsi_encoder drm/i915: s/INTEL_OUTPUT_DISPLAYPORT/INTEL_OUTPUT_DP/ drm/i915: Replace some open coded intel_crtc_has_dp_encoder()s drm/i915: Kill has_dp_encoder from pipe_config drm/i915: Replace manual lvds and sdvo/hdmi counting with intel_crtc_has_type() drm/i915: Unify intel_pipe_has_type() and intel_pipe_will_have_type() drm/i915: Add output_types bitmask into the crtc state drm/i915: Remove encoder type checks from MST suspend/resume drm/i915: Don't mark eDP encoders as MST capable drm/i915: avoid wait_for_atomic() in non-atomic host2guc_action() drm/i915: Group the irq breadcrumb variables into the same cacheline drm/i915: Wake up the bottom-half if we steal their interrupt ...
Diffstat (limited to 'drivers/gpu/drm/i915/intel_audio.c')
-rw-r--r--drivers/gpu/drm/i915/intel_audio.c42
1 files changed, 21 insertions, 21 deletions
diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index b9329c2a670a..6700a7be7f78 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -154,7 +154,7 @@ static bool audio_rate_need_prog(struct intel_crtc *crtc,
154{ 154{
155 if (((mode->clock == TMDS_297M) || 155 if (((mode->clock == TMDS_297M) ||
156 (mode->clock == TMDS_296M)) && 156 (mode->clock == TMDS_296M)) &&
157 intel_pipe_has_type(crtc, INTEL_OUTPUT_HDMI)) 157 intel_crtc_has_type(crtc->config, INTEL_OUTPUT_HDMI))
158 return true; 158 return true;
159 else 159 else
160 return false; 160 return false;
@@ -165,7 +165,7 @@ static bool intel_eld_uptodate(struct drm_connector *connector,
165 i915_reg_t reg_elda, uint32_t bits_elda, 165 i915_reg_t reg_elda, uint32_t bits_elda,
166 i915_reg_t reg_edid) 166 i915_reg_t reg_edid)
167{ 167{
168 struct drm_i915_private *dev_priv = connector->dev->dev_private; 168 struct drm_i915_private *dev_priv = to_i915(connector->dev);
169 uint8_t *eld = connector->eld; 169 uint8_t *eld = connector->eld;
170 uint32_t tmp; 170 uint32_t tmp;
171 int i; 171 int i;
@@ -189,7 +189,7 @@ static bool intel_eld_uptodate(struct drm_connector *connector,
189 189
190static void g4x_audio_codec_disable(struct intel_encoder *encoder) 190static void g4x_audio_codec_disable(struct intel_encoder *encoder)
191{ 191{
192 struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; 192 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
193 uint32_t eldv, tmp; 193 uint32_t eldv, tmp;
194 194
195 DRM_DEBUG_KMS("Disable audio codec\n"); 195 DRM_DEBUG_KMS("Disable audio codec\n");
@@ -210,7 +210,7 @@ static void g4x_audio_codec_enable(struct drm_connector *connector,
210 struct intel_encoder *encoder, 210 struct intel_encoder *encoder,
211 const struct drm_display_mode *adjusted_mode) 211 const struct drm_display_mode *adjusted_mode)
212{ 212{
213 struct drm_i915_private *dev_priv = connector->dev->dev_private; 213 struct drm_i915_private *dev_priv = to_i915(connector->dev);
214 uint8_t *eld = connector->eld; 214 uint8_t *eld = connector->eld;
215 uint32_t eldv; 215 uint32_t eldv;
216 uint32_t tmp; 216 uint32_t tmp;
@@ -247,7 +247,7 @@ static void g4x_audio_codec_enable(struct drm_connector *connector,
247 247
248static void hsw_audio_codec_disable(struct intel_encoder *encoder) 248static void hsw_audio_codec_disable(struct intel_encoder *encoder)
249{ 249{
250 struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; 250 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
251 struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); 251 struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
252 enum pipe pipe = intel_crtc->pipe; 252 enum pipe pipe = intel_crtc->pipe;
253 uint32_t tmp; 253 uint32_t tmp;
@@ -262,7 +262,7 @@ static void hsw_audio_codec_disable(struct intel_encoder *encoder)
262 tmp |= AUD_CONFIG_N_PROG_ENABLE; 262 tmp |= AUD_CONFIG_N_PROG_ENABLE;
263 tmp &= ~AUD_CONFIG_UPPER_N_MASK; 263 tmp &= ~AUD_CONFIG_UPPER_N_MASK;
264 tmp &= ~AUD_CONFIG_LOWER_N_MASK; 264 tmp &= ~AUD_CONFIG_LOWER_N_MASK;
265 if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT)) 265 if (intel_crtc_has_dp_encoder(intel_crtc->config))
266 tmp |= AUD_CONFIG_N_VALUE_INDEX; 266 tmp |= AUD_CONFIG_N_VALUE_INDEX;
267 I915_WRITE(HSW_AUD_CFG(pipe), tmp); 267 I915_WRITE(HSW_AUD_CFG(pipe), tmp);
268 268
@@ -279,7 +279,7 @@ static void hsw_audio_codec_enable(struct drm_connector *connector,
279 struct intel_encoder *encoder, 279 struct intel_encoder *encoder,
280 const struct drm_display_mode *adjusted_mode) 280 const struct drm_display_mode *adjusted_mode)
281{ 281{
282 struct drm_i915_private *dev_priv = connector->dev->dev_private; 282 struct drm_i915_private *dev_priv = to_i915(connector->dev);
283 struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); 283 struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
284 enum pipe pipe = intel_crtc->pipe; 284 enum pipe pipe = intel_crtc->pipe;
285 struct i915_audio_component *acomp = dev_priv->audio_component; 285 struct i915_audio_component *acomp = dev_priv->audio_component;
@@ -328,7 +328,7 @@ static void hsw_audio_codec_enable(struct drm_connector *connector,
328 tmp = I915_READ(HSW_AUD_CFG(pipe)); 328 tmp = I915_READ(HSW_AUD_CFG(pipe));
329 tmp &= ~AUD_CONFIG_N_VALUE_INDEX; 329 tmp &= ~AUD_CONFIG_N_VALUE_INDEX;
330 tmp &= ~AUD_CONFIG_PIXEL_CLOCK_HDMI_MASK; 330 tmp &= ~AUD_CONFIG_PIXEL_CLOCK_HDMI_MASK;
331 if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT)) 331 if (intel_crtc_has_dp_encoder(intel_crtc->config))
332 tmp |= AUD_CONFIG_N_VALUE_INDEX; 332 tmp |= AUD_CONFIG_N_VALUE_INDEX;
333 else 333 else
334 tmp |= audio_config_hdmi_pixel_clock(adjusted_mode); 334 tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
@@ -357,7 +357,7 @@ static void hsw_audio_codec_enable(struct drm_connector *connector,
357 357
358static void ilk_audio_codec_disable(struct intel_encoder *encoder) 358static void ilk_audio_codec_disable(struct intel_encoder *encoder)
359{ 359{
360 struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; 360 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
361 struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); 361 struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
362 struct intel_digital_port *intel_dig_port = 362 struct intel_digital_port *intel_dig_port =
363 enc_to_dig_port(&encoder->base); 363 enc_to_dig_port(&encoder->base);
@@ -389,7 +389,7 @@ static void ilk_audio_codec_disable(struct intel_encoder *encoder)
389 tmp |= AUD_CONFIG_N_PROG_ENABLE; 389 tmp |= AUD_CONFIG_N_PROG_ENABLE;
390 tmp &= ~AUD_CONFIG_UPPER_N_MASK; 390 tmp &= ~AUD_CONFIG_UPPER_N_MASK;
391 tmp &= ~AUD_CONFIG_LOWER_N_MASK; 391 tmp &= ~AUD_CONFIG_LOWER_N_MASK;
392 if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT)) 392 if (intel_crtc_has_dp_encoder(intel_crtc->config))
393 tmp |= AUD_CONFIG_N_VALUE_INDEX; 393 tmp |= AUD_CONFIG_N_VALUE_INDEX;
394 I915_WRITE(aud_config, tmp); 394 I915_WRITE(aud_config, tmp);
395 395
@@ -405,7 +405,7 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
405 struct intel_encoder *encoder, 405 struct intel_encoder *encoder,
406 const struct drm_display_mode *adjusted_mode) 406 const struct drm_display_mode *adjusted_mode)
407{ 407{
408 struct drm_i915_private *dev_priv = connector->dev->dev_private; 408 struct drm_i915_private *dev_priv = to_i915(connector->dev);
409 struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); 409 struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
410 struct intel_digital_port *intel_dig_port = 410 struct intel_digital_port *intel_dig_port =
411 enc_to_dig_port(&encoder->base); 411 enc_to_dig_port(&encoder->base);
@@ -475,7 +475,7 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
475 tmp &= ~AUD_CONFIG_N_VALUE_INDEX; 475 tmp &= ~AUD_CONFIG_N_VALUE_INDEX;
476 tmp &= ~AUD_CONFIG_N_PROG_ENABLE; 476 tmp &= ~AUD_CONFIG_N_PROG_ENABLE;
477 tmp &= ~AUD_CONFIG_PIXEL_CLOCK_HDMI_MASK; 477 tmp &= ~AUD_CONFIG_PIXEL_CLOCK_HDMI_MASK;
478 if (intel_pipe_has_type(intel_crtc, INTEL_OUTPUT_DISPLAYPORT)) 478 if (intel_crtc_has_dp_encoder(intel_crtc->config))
479 tmp |= AUD_CONFIG_N_VALUE_INDEX; 479 tmp |= AUD_CONFIG_N_VALUE_INDEX;
480 else 480 else
481 tmp |= audio_config_hdmi_pixel_clock(adjusted_mode); 481 tmp |= audio_config_hdmi_pixel_clock(adjusted_mode);
@@ -496,7 +496,7 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder)
496 const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode; 496 const struct drm_display_mode *adjusted_mode = &crtc->config->base.adjusted_mode;
497 struct drm_connector *connector; 497 struct drm_connector *connector;
498 struct drm_device *dev = encoder->dev; 498 struct drm_device *dev = encoder->dev;
499 struct drm_i915_private *dev_priv = dev->dev_private; 499 struct drm_i915_private *dev_priv = to_i915(dev);
500 struct i915_audio_component *acomp = dev_priv->audio_component; 500 struct i915_audio_component *acomp = dev_priv->audio_component;
501 struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder); 501 struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
502 enum port port = intel_dig_port->port; 502 enum port port = intel_dig_port->port;
@@ -513,7 +513,7 @@ void intel_audio_codec_enable(struct intel_encoder *intel_encoder)
513 513
514 /* ELD Conn_Type */ 514 /* ELD Conn_Type */
515 connector->eld[5] &= ~(3 << 2); 515 connector->eld[5] &= ~(3 << 2);
516 if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) 516 if (intel_crtc_has_dp_encoder(crtc->config))
517 connector->eld[5] |= (1 << 2); 517 connector->eld[5] |= (1 << 2);
518 518
519 connector->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2; 519 connector->eld[6] = drm_av_sync_delay(connector, adjusted_mode) / 2;
@@ -543,7 +543,7 @@ void intel_audio_codec_disable(struct intel_encoder *intel_encoder)
543{ 543{
544 struct drm_encoder *encoder = &intel_encoder->base; 544 struct drm_encoder *encoder = &intel_encoder->base;
545 struct drm_device *dev = encoder->dev; 545 struct drm_device *dev = encoder->dev;
546 struct drm_i915_private *dev_priv = dev->dev_private; 546 struct drm_i915_private *dev_priv = to_i915(dev);
547 struct i915_audio_component *acomp = dev_priv->audio_component; 547 struct i915_audio_component *acomp = dev_priv->audio_component;
548 struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder); 548 struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
549 enum port port = intel_dig_port->port; 549 enum port port = intel_dig_port->port;
@@ -749,14 +749,14 @@ static int i915_audio_component_bind(struct device *i915_dev,
749 if (WARN_ON(acomp->ops || acomp->dev)) 749 if (WARN_ON(acomp->ops || acomp->dev))
750 return -EEXIST; 750 return -EEXIST;
751 751
752 drm_modeset_lock_all(dev_priv->dev); 752 drm_modeset_lock_all(&dev_priv->drm);
753 acomp->ops = &i915_audio_component_ops; 753 acomp->ops = &i915_audio_component_ops;
754 acomp->dev = i915_dev; 754 acomp->dev = i915_dev;
755 BUILD_BUG_ON(MAX_PORTS != I915_MAX_PORTS); 755 BUILD_BUG_ON(MAX_PORTS != I915_MAX_PORTS);
756 for (i = 0; i < ARRAY_SIZE(acomp->aud_sample_rate); i++) 756 for (i = 0; i < ARRAY_SIZE(acomp->aud_sample_rate); i++)
757 acomp->aud_sample_rate[i] = 0; 757 acomp->aud_sample_rate[i] = 0;
758 dev_priv->audio_component = acomp; 758 dev_priv->audio_component = acomp;
759 drm_modeset_unlock_all(dev_priv->dev); 759 drm_modeset_unlock_all(&dev_priv->drm);
760 760
761 return 0; 761 return 0;
762} 762}
@@ -767,11 +767,11 @@ static void i915_audio_component_unbind(struct device *i915_dev,
767 struct i915_audio_component *acomp = data; 767 struct i915_audio_component *acomp = data;
768 struct drm_i915_private *dev_priv = dev_to_i915(i915_dev); 768 struct drm_i915_private *dev_priv = dev_to_i915(i915_dev);
769 769
770 drm_modeset_lock_all(dev_priv->dev); 770 drm_modeset_lock_all(&dev_priv->drm);
771 acomp->ops = NULL; 771 acomp->ops = NULL;
772 acomp->dev = NULL; 772 acomp->dev = NULL;
773 dev_priv->audio_component = NULL; 773 dev_priv->audio_component = NULL;
774 drm_modeset_unlock_all(dev_priv->dev); 774 drm_modeset_unlock_all(&dev_priv->drm);
775} 775}
776 776
777static const struct component_ops i915_audio_component_bind_ops = { 777static const struct component_ops i915_audio_component_bind_ops = {
@@ -799,7 +799,7 @@ void i915_audio_component_init(struct drm_i915_private *dev_priv)
799{ 799{
800 int ret; 800 int ret;
801 801
802 ret = component_add(dev_priv->dev->dev, &i915_audio_component_bind_ops); 802 ret = component_add(dev_priv->drm.dev, &i915_audio_component_bind_ops);
803 if (ret < 0) { 803 if (ret < 0) {
804 DRM_ERROR("failed to add audio component (%d)\n", ret); 804 DRM_ERROR("failed to add audio component (%d)\n", ret);
805 /* continue with reduced functionality */ 805 /* continue with reduced functionality */
@@ -821,6 +821,6 @@ void i915_audio_component_cleanup(struct drm_i915_private *dev_priv)
821 if (!dev_priv->audio_component_registered) 821 if (!dev_priv->audio_component_registered)
822 return; 822 return;
823 823
824 component_del(dev_priv->dev->dev, &i915_audio_component_bind_ops); 824 component_del(dev_priv->drm.dev, &i915_audio_component_bind_ops);
825 dev_priv->audio_component_registered = false; 825 dev_priv->audio_component_registered = false;
826} 826}