On Fri, 2010-06-25 at 16:57 +0900, Kuninori Morimoto wrote: > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> > --- > This patch works for me. > But I'm not sure it is correct settings. > Please check it carefully > > sound/soc/codecs/ak4642.c | 28 +++++++++++++++++++++++++--- > 1 files changed, 25 insertions(+), 3 deletions(-) > > diff --git a/sound/soc/codecs/ak4642.c b/sound/soc/codecs/ak4642.c > index 9a6157f..ce4e6ec 100644 > --- a/sound/soc/codecs/ak4642.c > +++ b/sound/soc/codecs/ak4642.c > @@ -28,6 +28,7 @@ > #include <linux/slab.h> > #include <sound/soc-dapm.h> > #include <sound/initval.h> > +#include <sound/tlv.h> > > #include "ak4642.h" > > @@ -103,6 +104,23 @@ > > struct snd_soc_codec_device soc_codec_dev_ak4642; > > +/* > + * Playback Volume (table 39) > + * > + * max : 0x00 : +12.0 dB > + * ( 0.5 dB step ) > + * min : 0xFE : -115.0 dB > + * mute: 0xFF > + */ > +static const DECLARE_TLV_DB_SCALE(out_tlv, -11500, 50, 1); > + > +static const struct snd_kcontrol_new ak4642_snd_controls[] = { > + > + SOC_DOUBLE_R_TLV("Playback Volume", L_DVC, R_DVC, > + 0, 0xFF, 1, out_tlv), Is this for the "Master Playback Volume" ? If so, It should be "Master Playback Volume" > +}; > + > + > /* codec private data */ > struct ak4642_priv { > struct snd_soc_codec codec; > @@ -190,7 +208,6 @@ static int ak4642_dai_startup(struct snd_pcm_substream *substream, > * > * PLL, Master Mode > * Audio I/F Format :MSB justified (ADC & DAC) > - * Digital Volume: -8dB Any reason for this ? > * Bass Boost Level : Middle > * > * This operation came from example code of > @@ -200,8 +217,6 @@ static int ak4642_dai_startup(struct snd_pcm_substream *substream, > ak4642_write(codec, 0x0e, 0x19); > ak4642_write(codec, 0x09, 0x91); > ak4642_write(codec, 0x0c, 0x91); > - ak4642_write(codec, 0x0a, 0x28); > - ak4642_write(codec, 0x0d, 0x28); and this. Both are not mentioned in the commit message. > ak4642_write(codec, 0x00, 0x64); > snd_soc_update_bits(codec, PW_MGMT2, PMHP_MASK, PMHP); > snd_soc_update_bits(codec, PW_MGMT2, HPMTN, HPMTN); > @@ -446,6 +461,10 @@ static int ak4642_init(struct ak4642_priv *ak4642) > return ret; > } > > + /* default volume */ > + ak4642_write(codec, L_DVC, 0x28); > + ak4642_write(codec, R_DVC, 0x28); > + > return ret; > } > > @@ -524,6 +543,9 @@ static int ak4642_probe(struct platform_device *pdev) > goto pcm_err; > } > > + snd_soc_add_controls(ak4642_codec, ak4642_snd_controls, > + ARRAY_SIZE(ak4642_snd_controls)); > + > dev_info(&pdev->dev, "AK4642 Audio Codec %s", AK4642_VERSION); > return ret; > Thanks Liam -- Freelance Developer, SlimLogic Ltd ASoC and Voltage Regulator Maintainer. http://www.slimlogic.co.uk _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel