[Intel-gfx] [PATCH v2 17/18] drm/i915: make pipe/port based audio valid accessors easier to use

Rodrigo Vivi rodrigo.vivi at gmail.com
Mon Oct 27 19:39:29 CET 2014


Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

On Mon, Oct 27, 2014 at 7:26 AM, Jani Nikula <jani.nikula at intel.com> wrote:
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
> ---
>  drivers/gpu/drm/i915/i915_reg.h    | 20 ++++++--------------
>  drivers/gpu/drm/i915/intel_audio.c | 22 ++++++++++------------
>  drivers/gpu/drm/i915/intel_ddi.c   |  2 +-
>  3 files changed, 17 insertions(+), 27 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 6880f8ac452c..b761ae1a8e1e 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -5982,8 +5982,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
> @@ -6086,18 +6086,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 */
> diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
> index 6d0013cd3ed4..7c975cfe9cb5 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -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);
>
>         intel_wait_for_vblank(dev_priv->dev, pipe);
> @@ -210,7 +210,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 */
> @@ -262,11 +262,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 */
> @@ -317,11 +316,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 */
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index b182b9b80461..6d4fe0e4253e 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -1504,7 +1504,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;
>         }
>
> --
> 2.1.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Rodrigo Vivi
Blog: http://blog.vivi.eng.br



More information about the Intel-gfx mailing list