From mboxrd@z Thu Jan 1 00:00:00 1970 From: Patrick Lai Subject: Re: [PATCH] ASoC: msm8x60: enhance mixer interfaces Date: Fri, 18 Feb 2011 18:00:34 -0800 Message-ID: <4D5F2442.5020107@codeaurora.org> References: <1297334949-5168-1-git-send-email-eero.nurkkala@offcode.fi> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from wolverine01.qualcomm.com ([199.106.114.254]:1429 "EHLO wolverine01.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752443Ab1BSCAa (ORCPT ); Fri, 18 Feb 2011 21:00:30 -0500 In-Reply-To: <1297334949-5168-1-git-send-email-eero.nurkkala@offcode.fi> Sender: linux-arm-msm-owner@vger.kernel.org List-Id: linux-arm-msm@vger.kernel.org To: eero.nurkkala@offcode.fi Cc: linux-arm-msm@vger.kernel.org Hi, In your patch, snd_soc_cnew() is invoked. This function sets index of snd_kcontrol_new to 0. You must have realized by now that MSM audio drivers are not truly ALSA compliant. List of sound devices(i.e speaker) is exposed to user-space as mixer controls. Index of control is used to propagate native ID of a particular sound device though you can still derive native ID from value returned from control "Count". It is not as straight forward as reading the index Is it really necessary to call snd_soc_cnew()? On 2/10/2011 2:49 AM, eero.nurkkala@offcode.fi wrote: > From: Eero Nurkkala > > Currenly, a simple access to any of the interfaces fail, > when accessed in the following manner: > "amixer set Volume 100%" -> no success. > > Simplify the initiation and fix the interfaces so that > they may be altered in a more generic ways. > With the patch: > > amixer set Volume 100% > Simple mixer control 'Volume',0 > Capabilities: volume penum > Playback channels: Front Left - Front Right > Capture channels: Front Left - Front Right > Limits: 0 - 16383 > Front Left: 16383 [100%] > Front Right: 16383 [100%] > > Signed-off-by: Eero Nurkkala > --- > sound/soc/msm/msm8x60.c | 31 ++++++++++++------------------- > 1 files changed, 12 insertions(+), 19 deletions(-) > > diff --git a/sound/soc/msm/msm8x60.c b/sound/soc/msm/msm8x60.c > index 38c56de..eb0dab2 100644 > --- a/sound/soc/msm/msm8x60.c > +++ b/sound/soc/msm/msm8x60.c > @@ -850,33 +850,26 @@ static struct snd_kcontrol_new snd_msm_secondary_controls[] = { > pcm_route_info, pcm_route_get_tx, pcm_route_put_tx, 0), > }; > > -static int msm_new_mixer(struct snd_card *card) > +static int msm_new_mixer(struct snd_soc_codec *codec) > { > unsigned int idx; > int err; > int dev_cnt; > > - strcpy(card->mixername, "MSM Mixer"); > - for (idx = 0; idx< ARRAY_SIZE(snd_msm_controls); idx++) { > - err = snd_ctl_add(card, snd_ctl_new1(&snd_msm_controls[idx], > - NULL)); > - if (err< 0) > - pr_err("%s:ERR adding ctl\n", __func__); > - } > - > - for (idx = 0; idx< ARRAY_SIZE(snd_msm_secondary_controls); idx++) { > - err = snd_ctl_add(card, > - snd_ctl_new1(&snd_msm_secondary_controls[idx], > - NULL)); > - if (err< 0) > - pr_err("%s:ERR adding secondary ctl\n", __func__); > - } > + strcpy(codec->card->mixername, "MSM Mixer"); > + if (snd_soc_add_controls(codec, snd_msm_controls, > + ARRAY_SIZE(snd_msm_controls))) > + pr_err("%s:ERR adding ctl\n", __func__); > dev_cnt = msm_snddev_devcount(); > > + if (snd_soc_add_controls(codec, snd_msm_secondary_controls, > + ARRAY_SIZE(snd_msm_secondary_controls))) > + pr_err("%s:ERR adding secondary ctl\n", __func__); > + > for (idx = 0; idx< dev_cnt; idx++) { > if (!snd_dev_ctl_index(idx)) { > - err = snd_ctl_add(card, snd_ctl_new1( > - &snd_dev_controls[idx], NULL)); > + err = snd_ctl_add(codec->card, snd_soc_cnew( > + &snd_dev_controls[idx], codec, NULL)); > if (err< 0) > pr_err("%s:ERR adding ctl\n", __func__); > } else > @@ -892,7 +885,7 @@ static int msm_soc_dai_init(struct snd_soc_codec *codec) > { > > int ret = 0; > - ret = msm_new_mixer(codec->card); > + ret = msm_new_mixer(codec); > if (ret< 0) > pr_err("%s: ALSA MSM Mixer Fail\n", __func__); > -- Sent by an employee of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.