Re: [PATCH] ASoC: msm8x60: enhance mixer interfaces

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx wrote:
From: Eero Nurkkala<eero.nurkkala@xxxxxxxxxx>

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<eero.nurkkala@xxxxxxxxxx>
---
  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.
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux