[alsa-devel] [PATCH v2 2/2] ASoC: wm8985: add support for WM8758
Petr Kulhavy
petr at barix.com
Mon May 23 09:34:26 CEST 2016
On 20 May 2016 at 18:11, Charles Keepax
<ckeepax at opensource.wolfsonmicro.com> wrote:
> On Tue, May 17, 2016 at 02:48:54PM +0200, Petr Kulhavy wrote:
>> The WM8758 chip is almost identical to WM8985 with the difference that it
>> doesn't feature the AUX input. This patch adds the WM8758 support into the
>> WM8985 driver.
>>
>> The chip selection is done by the I2C name. The SPI probe supports only
>> the WM8985.
>>
>> Signed-off-by: Petr Kulhavy <petr at barix.com>
>> ---
>> +
>> +static int wm8985_add_widgets(struct snd_soc_codec *codec)
>> +{
>> + struct wm8985_priv *wm8985 = snd_soc_codec_get_drvdata(codec);
>> + struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
>> +
>> + snd_soc_dapm_new_controls(dapm, wm8985_common_dapm_widgets,
>> + ARRAY_SIZE(wm8985_common_dapm_widgets));
>> + snd_soc_dapm_add_routes(dapm, wm8985_common_dapm_routes,
>> + ARRAY_SIZE(wm8985_common_dapm_routes));
>> +
>> + switch (wm8985->dev_type) {
>> + case WM8758:
>> + snd_soc_add_codec_controls(codec, wm8985_alc_snd_controls,
>> + ARRAY_SIZE(wm8985_alc_snd_controls));
>> + snd_soc_add_codec_controls(codec, wm8985_adc_snd_controls,
>> + ARRAY_SIZE(wm8985_adc_snd_controls));
>> + snd_soc_add_codec_controls(codec, wm8985_dac_snd_controls,
>> + ARRAY_SIZE(wm8985_dac_snd_controls));
>> + snd_soc_add_codec_controls(codec, wm8985_eq_snd_controls,
>> + ARRAY_SIZE(wm8985_eq_snd_controls));
>> + snd_soc_add_codec_controls(codec, wm8985_3d_snd_controls,
>> + ARRAY_SIZE(wm8985_3d_snd_controls));
>
> Why not just put all these in a common controls array? They seem
> to all be used on 8985 as well.
In general I agree with you. But doesn't the order in which
snd_soc_add_codec_controls() is called affect the order in which the
controls appear in the mixer?
I have split the controls in order to preserve the original order of
the controls.
>> err_reg_enable:
>> @@ -1047,13 +1164,6 @@ static struct snd_soc_codec_driver soc_codec_dev_wm8985 = {
>> .probe = wm8985_probe,
>> .set_bias_level = wm8985_set_bias_level,
>> .suspend_bias_off = true,
>> -
>> - .controls = wm8985_snd_controls,
>> - .num_controls = ARRAY_SIZE(wm8985_snd_controls),
>> - .dapm_widgets = wm8985_dapm_widgets,
>> - .num_dapm_widgets = ARRAY_SIZE(wm8985_dapm_widgets),
>> - .dapm_routes = wm8985_dapm_routes,
>> - .num_dapm_routes = ARRAY_SIZE(wm8985_dapm_routes),
>
> I think you should still be able to use these for the common
> functionality.
All these are set by wm8985_add_widgets() now.
Or maybe I didn't quite get what you mean?
Thanks
Petr
More information about the Alsa-devel
mailing list