drm/i915: make pipe/port based audio valid accessors easier to use
authorJani Nikula <jani.nikula@intel.com>
Mon, 27 Oct 2014 14:26:59 +0000 (16:26 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 7 Nov 2014 17:42:18 +0000 (18:42 +0100)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_audio.c
drivers/gpu/drm/i915/intel_ddi.c

index 77461cec70fa89cbd711b5ca4125174d84e76cf6..b250d96ab7a15101a587197972920c69d7ba4574 100644 (file)
@@ -6102,8 +6102,8 @@ enum punit_power_well {
 #define   IBX_ELD_ADDRESS_MASK         (0x1f << 5)
 #define   IBX_ELD_ACK                  (1 << 4)
 #define IBX_AUD_CNTL_ST2               0xE20C0
-#define   IBX_ELD_VALIDB               (1 << 0)
-#define   IBX_CP_READYB                        (1 << 1)
+#define   IBX_CP_READY(port)           ((1 << 1) << (((port) - 1) * 4))
+#define   IBX_ELD_VALID(port)          ((1 << 0) << (((port) - 1) * 4))
 
 #define _CPT_HDMIW_HDMIEDID_A          0xE5050
 #define _CPT_HDMIW_HDMIEDID_B          0xE5150
@@ -6206,18 +6206,10 @@ enum punit_power_well {
 
 #define HSW_AUD_PIPE_CONV_CFG          0x6507c
 #define HSW_AUD_PIN_ELD_CP_VLD         0x650c0
-#define   AUDIO_INACTIVE_C             (1<<11)
-#define   AUDIO_INACTIVE_B             (1<<7)
-#define   AUDIO_INACTIVE_A             (1<<3)
-#define   AUDIO_OUTPUT_ENABLE_A                (1<<2)
-#define   AUDIO_OUTPUT_ENABLE_B                (1<<6)
-#define   AUDIO_OUTPUT_ENABLE_C                (1<<10)
-#define   AUDIO_ELD_VALID_A            (1<<0)
-#define   AUDIO_ELD_VALID_B            (1<<4)
-#define   AUDIO_ELD_VALID_C            (1<<8)
-#define   AUDIO_CP_READY_A             (1<<1)
-#define   AUDIO_CP_READY_B             (1<<5)
-#define   AUDIO_CP_READY_C             (1<<9)
+#define   AUDIO_INACTIVE(trans)                ((1 << 3) << ((trans) * 4))
+#define   AUDIO_OUTPUT_ENABLE(trans)   ((1 << 2) << ((trans) * 4))
+#define   AUDIO_CP_READY(trans)                ((1 << 1) << ((trans) * 4))
+#define   AUDIO_ELD_VALID(trans)       ((1 << 0) << ((trans) * 4))
 
 /* HSW Power Wells */
 #define HSW_PWR_WELL_BIOS                      0x45400 /* CTL1 */
index c4c036a86d75b28bf77e7197e3a7bf87c1b9d7ae..9181b85d86c44ffcf3e3db01a91b223c4689c188 100644 (file)
@@ -172,7 +172,7 @@ static void hsw_audio_codec_disable(struct intel_encoder *encoder)
 
        /* Invalidate ELD */
        tmp = I915_READ(HSW_AUD_PIN_ELD_CP_VLD);
-       tmp &= ~(AUDIO_ELD_VALID_A << (pipe * 4));
+       tmp &= ~AUDIO_ELD_VALID(pipe);
        I915_WRITE(HSW_AUD_PIN_ELD_CP_VLD, tmp);
 }
 
@@ -192,8 +192,8 @@ static void hsw_audio_codec_enable(struct drm_connector *connector,
 
        /* Enable audio presence detect, invalidate ELD */
        tmp = I915_READ(HSW_AUD_PIN_ELD_CP_VLD);
-       tmp |= AUDIO_OUTPUT_ENABLE_A << (pipe * 4);
-       tmp &= ~(AUDIO_ELD_VALID_A << (pipe * 4));
+       tmp |= AUDIO_OUTPUT_ENABLE(pipe);
+       tmp &= ~AUDIO_ELD_VALID(pipe);
        I915_WRITE(HSW_AUD_PIN_ELD_CP_VLD, tmp);
 
        /*
@@ -215,7 +215,7 @@ static void hsw_audio_codec_enable(struct drm_connector *connector,
 
        /* ELD valid */
        tmp = I915_READ(HSW_AUD_PIN_ELD_CP_VLD);
-       tmp |= AUDIO_ELD_VALID_A << (pipe * 4);
+       tmp |= AUDIO_ELD_VALID(pipe);
        I915_WRITE(HSW_AUD_PIN_ELD_CP_VLD, tmp);
 
        /* Enable timestamps */
@@ -267,11 +267,10 @@ static void ilk_audio_codec_disable(struct intel_encoder *encoder)
        I915_WRITE(aud_config, tmp);
 
        if (WARN_ON(!port)) {
-               eldv = IBX_ELD_VALIDB;
-               eldv |= IBX_ELD_VALIDB << 4;
-               eldv |= IBX_ELD_VALIDB << 8;
+               eldv = IBX_ELD_VALID(PORT_B) | IBX_ELD_VALID(PORT_C) |
+                       IBX_ELD_VALID(PORT_D);
        } else {
-               eldv = IBX_ELD_VALIDB << ((port - 1) * 4);
+               eldv = IBX_ELD_VALID(port);
        }
 
        /* Invalidate ELD */
@@ -327,11 +326,10 @@ static void ilk_audio_codec_enable(struct drm_connector *connector,
        }
 
        if (WARN_ON(!port)) {
-               eldv = IBX_ELD_VALIDB;
-               eldv |= IBX_ELD_VALIDB << 4;
-               eldv |= IBX_ELD_VALIDB << 8;
+               eldv = IBX_ELD_VALID(PORT_B) | IBX_ELD_VALID(PORT_C) |
+                       IBX_ELD_VALID(PORT_D);
        } else {
-               eldv = IBX_ELD_VALIDB << ((port - 1) * 4);
+               eldv = IBX_ELD_VALID(port);
        }
 
        /* Invalidate ELD */
index a50df351d5583e5739d4dbef4a9a4c9e8eed670b..68703cecdefcadeb0f30c67b057ddbfc560ce29c 100644 (file)
@@ -1523,7 +1523,7 @@ void intel_ddi_get_config(struct intel_encoder *encoder,
 
        if (intel_display_power_is_enabled(dev_priv, POWER_DOMAIN_AUDIO)) {
                temp = I915_READ(HSW_AUD_PIN_ELD_CP_VLD);
-               if (temp & (AUDIO_OUTPUT_ENABLE_A << (intel_crtc->pipe * 4)))
+               if (temp & AUDIO_OUTPUT_ENABLE(intel_crtc->pipe))
                        pipe_config->has_audio = true;
        }