ASoC: wm5102: Add controls to allow shaping of ultrasonic response
Subsystems (4)
PATCH v2 1/1 ASoC: wm5102: Add controls to allow shaping of ultrasonic response
Add controls to allow custom shaping of the ultrasonic response. This custom shaping can be turned on/off at runtime, although, it should be noted that settings will not affect a currently open audio stream, they will be applied when the next audio stream is started.
---
Changes since v1:
- Now uses the existing BYTES_EXT control
- Delayed other patch in the series, this patch should still work fine, just some pointless caching of the DAC_COMP registers will happen
include/linux/mfd/arizona/core.h | 3 ++ sound/soc/codecs/arizona.c | 34 +++++++++++++++++++++ sound/soc/codecs/wm5102.c | 62 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 0 deletions(-)
include/linux/mfd/arizona/core.h +3 -0
@@ -113,6 +113,9 @@ struct arizona {int tdm_width[ARIZONA_MAX_AIF ];int tdm_slots[ARIZONA_MAX_AIF ]; + +uint16_t dac_comp_coeff; +uint8_t dac_comp_enabled; };int arizona_clk32k_enable (struct arizona *arizona);
sound/soc/codecs/arizona.c +34 -0
@@ -1127,6 +1127,31 @@ static int arizona_startup(struct snd_pcm_substream *substream, constraint); } +static void arizona_wm5102_set_dac_comp (struct snd_soc_codec *codec, +unsigned int rate) +{ +struct arizona_priv *priv =snd_soc_codec_get_drvdata (codec); +struct arizona *arizona = priv->arizona; +struct reg_default dac_comp[] = { + {0x80 ,0x3 }, + {ARIZONA_DAC_COMP_1 ,0 }, + {ARIZONA_DAC_COMP_2 ,0 }, + {0x80 ,0x0 }, + }; + +mutex_lock (&codec->mutex); + + dac_comp[1 ].def = arizona->dac_comp_coeff; +if (rate >=176400 ) + dac_comp[2 ].def = arizona->dac_comp_enabled; + +mutex_unlock (&codec->mutex); + +regmap_multi_reg_write (arizona->regmap, + dac_comp, +ARRAY_SIZE (dac_comp)); +} +static int arizona_hw_params_rate (struct snd_pcm_substream *substream,struct snd_pcm_hw_params *params,struct snd_soc_dai *dai)
@@ -1153,6 +1178,15 @@ static int arizona_hw_params_rate(struct snd_pcm_substream *substream,switch (dai_priv->clk) {case ARIZONA_CLK_SYSCLK : +switch (priv->arizona->type) { +case WM5102 : +arizona_wm5102_set_dac_comp (codec, +params_rate (params)); +break ; +default : +break ; + } +snd_soc_update_bits (codec,ARIZONA_SAMPLE_RATE_1 ,ARIZONA_SAMPLE_RATE_1_MASK , sr_val);if (base)
sound/soc/codecs/wm5102.c +62 -0
74 lines not on this page · raw message
Signature · 1 line
1.7.2.5
Quoted 4 lines · Charles Keepax
Add controls to allow custom shaping of the ultrasonic response. This custom shaping can be turned on/off at runtime, although, it should be noted that settings will not affect a currently open audio stream, they will be applied when the next audio stream is started.
Applied, thanks.