> -----Original Message-----
> From: Charles Keepax [mailto:ckee...@opensource.wolfsonmicro.com]
> Sent: Monday, March 20, 2017 7:14 AM
> To: Ryans Lee <ryans....@maximintegrated.com>
> Cc: lgirdw...@gmail.com; broo...@kernel.org; robh...@kernel.org; 
> mark.rutl...@arm.com; pe...@perex.cz; ti...@suse.com; 
> kuninori.morimoto...@renesas.com; a...@arndb.de; l...@metafoo.de; 
> bardl...@realtek.com; n...@nh6z.net; kch...@nuvoton.com; 
> axel....@ingics.com; romain.per...@collabora.com; p...@barix.com; 
> srinivas.kandaga...@linaro.org; oder_ch...@realtek.com; 
> paul.handri...@cirrus.com; alsa-de...@alsa-project.org; 
> devicet...@vger.kernel.org; linux-kernel@vger.kernel.org; 
> dgr...@google.com
> Subject: Re: [alsa-devel] [PATCH] ASoC: Add support for Maxim 
> Integrated MAX98927 Amplifier
>
> EXTERNAL EMAIL
>
>
>
> On Mon, Mar 20, 2017 at 09:40:23AM +0900, Ryan Lee wrote:
>> Signed-off-by: Ryan Lee <ryans....@maximintegrated.com>
>> ---
>> Resubmit the intial version of MAX98927 driver. Added all fixes into the 
>> initial patch.
> <snip>
>> +static int max98927_reg_get(struct snd_kcontrol *kcontrol,
>> +     struct snd_ctl_elem_value *ucontrol, unsigned int reg,
>> +     unsigned int mask, unsigned int shift) {
>> +     struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
>> +     struct max98927_priv *max98927 = snd_soc_codec_get_drvdata(codec);
>> +     int data;
>> +
>> +     regmap_read(max98927->regmap, reg, &data);
>> +     ucontrol->value.integer.value[0] = (data & mask) >> shift;
>> +     return 0;
>> +}
>> +
>> +static int max98927_reg_put(struct snd_kcontrol *kcontrol,
>> +     struct snd_ctl_elem_value *ucontrol, unsigned int reg,
>> +     unsigned int mask, unsigned int shift) {
>> +     struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
>> +     struct max98927_priv *max98927 = snd_soc_codec_get_drvdata(codec);
>> +     unsigned int sel = ucontrol->value.integer.value[0];
>> +
>> +     regmap_update_bits(max98927->regmap, reg, mask, sel << shift);
>> +     dev_dbg(codec->dev, "%s: register 0x%02X, value 0x%02X\n",
>> +             __func__, reg, sel);
>> +     return 0;
>> +}
>
> These functions look a lot like they duplicate things the ASoC core does?

You're right. I removed 'max98927_reg_get' and 'max98927_reg_put' function to 
avoid duplication.

>
> <snip>
>> +static int max98927_boost_voltage_get(struct snd_kcontrol *kcontrol,
>> +     struct snd_ctl_elem_value *ucontrol) {
>> +     return max98927_reg_get(kcontrol, ucontrol,
>> +             MAX98927_R0040_BOOST_CTRL0,
>> +             MAX98927_BOOST_CTRL0_VOUT_MASK, 0); }
>> +
>
> And can't these just be specified in the normal way with the register 
> information attached to the control? There doesn't seem to be any special 
> behaviour being added here. Apologies if I am missing something here.

Thank you for your feedback. Now SOC_ENUM_EXT was replaced by SOC_ENUM. 
SOC_SINGLE_EXT was also replaced by SOC_SINGLE. Above function is no longer 
being used.

>
> Thanks,
> Charles

Reply via email to