> -----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