* [PATCH] ASoC: msm8x60: enhance mixer interfaces
@ 2011-02-10 10:49 eero.nurkkala
2011-02-10 17:33 ` David Brown
2011-02-19 2:00 ` Patrick Lai
0 siblings, 2 replies; 6+ messages in thread
From: eero.nurkkala @ 2011-02-10 10:49 UTC (permalink / raw)
To: linux-arm-msm; +Cc: Eero Nurkkala
From: Eero Nurkkala <eero.nurkkala@offcode.fi>
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@offcode.fi>
---
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__);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] ASoC: msm8x60: enhance mixer interfaces
2011-02-10 10:49 [PATCH] ASoC: msm8x60: enhance mixer interfaces eero.nurkkala
@ 2011-02-10 17:33 ` David Brown
2011-02-10 18:11 ` eero.nurkkala
2011-02-19 2:00 ` Patrick Lai
1 sibling, 1 reply; 6+ messages in thread
From: David Brown @ 2011-02-10 17:33 UTC (permalink / raw)
To: eero.nurkkala; +Cc: linux-arm-msm
On Thu, Feb 10 2011, eero.nurkkala@offcode.fi wrote:
> From: Eero Nurkkala <eero.nurkkala@offcode.fi>
>
> 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:
Which kernel is this patch against? I can forward the change
internally, but this code isn't yet in the main Linux kernel.
Thanks,
David
--
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ASoC: msm8x60: enhance mixer interfaces
2011-02-10 18:11 ` eero.nurkkala
@ 2011-02-10 18:11 ` David Brown
0 siblings, 0 replies; 6+ messages in thread
From: David Brown @ 2011-02-10 18:11 UTC (permalink / raw)
To: eero.nurkkala; +Cc: linux-arm-msm
On Thu, Feb 10 2011, eero.nurkkala@offcode.fi wrote:
> Quoting David Brown <davidb@codeaurora.org>:
>> On Thu, Feb 10 2011, eero.nurkkala@offcode.fi wrote:
>>
>>> From: Eero Nurkkala <eero.nurkkala@offcode.fi>
>>>
>>> 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:
>>
>> Which kernel is this patch against? I can forward the change
>> internally, but this code isn't yet in the main Linux kernel.
>
> It's the:
> android-msm-2.6.35 branch @ git://codeaurora.org/projects/kernel/msm.git
> (URL: https://www.codeaurora.org/gitweb/quic/le/?p=kernel/msm.git)
>
> Is there a more relevant mailing list available for sending patches on
> that particular git tree? (eg. if I send patches in the future)
No, this would be the place. It's more just that I've never gotten a
patch against that branch before.
David
--
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ASoC: msm8x60: enhance mixer interfaces
2011-02-10 17:33 ` David Brown
@ 2011-02-10 18:11 ` eero.nurkkala
2011-02-10 18:11 ` David Brown
0 siblings, 1 reply; 6+ messages in thread
From: eero.nurkkala @ 2011-02-10 18:11 UTC (permalink / raw)
To: David Brown; +Cc: linux-arm-msm
Quoting David Brown <davidb@codeaurora.org>:
> On Thu, Feb 10 2011, eero.nurkkala@offcode.fi wrote:
>
>> From: Eero Nurkkala <eero.nurkkala@offcode.fi>
>>
>> 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:
>
> Which kernel is this patch against? I can forward the change
> internally, but this code isn't yet in the main Linux kernel.
It's the:
android-msm-2.6.35 branch @ git://codeaurora.org/projects/kernel/msm.git
(URL: https://www.codeaurora.org/gitweb/quic/le/?p=kernel/msm.git)
Is there a more relevant mailing list available for sending patches on
that particular git tree? (eg. if I send patches in the future)
BR,
Eero
>
> Thanks,
> David
>
> --
> Sent by an employee of the Qualcomm Innovation Center, Inc.
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ASoC: msm8x60: enhance mixer interfaces
2011-02-10 10:49 [PATCH] ASoC: msm8x60: enhance mixer interfaces eero.nurkkala
2011-02-10 17:33 ` David Brown
@ 2011-02-19 2:00 ` Patrick Lai
2011-02-21 6:58 ` eero.nurkkala
1 sibling, 1 reply; 6+ messages in thread
From: Patrick Lai @ 2011-02-19 2:00 UTC (permalink / raw)
To: eero.nurkkala; +Cc: linux-arm-msm
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<eero.nurkkala@offcode.fi>
>
> 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@offcode.fi>
> ---
> 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.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] ASoC: msm8x60: enhance mixer interfaces
2011-02-19 2:00 ` Patrick Lai
@ 2011-02-21 6:58 ` eero.nurkkala
0 siblings, 0 replies; 6+ messages in thread
From: eero.nurkkala @ 2011-02-21 6:58 UTC (permalink / raw)
To: Patrick Lai; +Cc: linux-arm-msm
Quoting Patrick Lai <plai@codeaurora.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()?
>
Right, this is the diff of 'amixer contents' without and with the patch:
< numid=19,iface=MIXER,name='anc_headset_stereo_rx',index=5
---
> numid=19,iface=MIXER,name='anc_headset_stereo_rx'
43c43
< numid=20,iface=MIXER,name='bt_sco_rx',index=6
---
> numid=20,iface=MIXER,name='bt_sco_rx'
46c46
< numid=21,iface=MIXER,name='bt_sco_tx',index=7
---
> numid=21,iface=MIXER,name='bt_sco_tx'
49c49
< numid=23,iface=MIXER,name='fmradio_stereo_rx',index=9
---
> numid=23,iface=MIXER,name='fmradio_stereo_rx'
52c52
< numid=22,iface=MIXER,name='fmradio_stereo_tx',index=8
---
> numid=22,iface=MIXER,name='fmradio_stereo_tx'
58c58
< numid=15,iface=MIXER,name='handset_tx',index=1
---
> numid=15,iface=MIXER,name='handset_tx'
61c61
< numid=24,iface=MIXER,name='hdmi_stereo_rx',index=10
---
> numid=24,iface=MIXER,name='hdmi_stereo_rx'
64c64
< numid=18,iface=MIXER,name='headset_mono_tx',index=4
---
> numid=18,iface=MIXER,name='headset_mono_tx'
67c67
< numid=17,iface=MIXER,name='headset_stereo_rx',index=3
---
> numid=17,iface=MIXER,name='headset_stereo_rx'
70c70
< numid=16,iface=MIXER,name='speaker_stereo_rx',index=2
---
> numid=16,iface=MIXER,name='speaker_stereo_rx'
-> so agreed it can cause headache.
- Eero
> On 2/10/2011 2:49 AM, eero.nurkkala@offcode.fi wrote:
>> From: Eero Nurkkala<eero.nurkkala@offcode.fi>
>>
>> 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@offcode.fi>
>> ---
>> 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.
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-02-21 6:38 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-10 10:49 [PATCH] ASoC: msm8x60: enhance mixer interfaces eero.nurkkala
2011-02-10 17:33 ` David Brown
2011-02-10 18:11 ` eero.nurkkala
2011-02-10 18:11 ` David Brown
2011-02-19 2:00 ` Patrick Lai
2011-02-21 6:58 ` eero.nurkkala
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).