* [PATCHv2] ASoC: Fix wrong data type access in a few codec drivers
@ 2011-05-13 16:16 Jarkko Nikula
2011-05-13 16:40 ` Stephen Warren
2011-05-16 16:07 ` Mark Brown
0 siblings, 2 replies; 4+ messages in thread
From: Jarkko Nikula @ 2011-05-13 16:16 UTC (permalink / raw)
To: alsa-devel; +Cc: Mark Brown, Stephen Warren, Liam Girdwood
Commit fafd217 ("ASoC: Store a list of widgets in a DAPM mux/mixer kcontrol")
changed the control private data type that is passed to snd_soc_cnew when
creating dapm mixer and mux controls. Commit did not update a few codec
drivers that are using their own put callbacks and thus are accessing a
wrong data type.
Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
---
v2:
- wm8994 and wm8995 needs to be changed too. Thanks to
Stephen Warren <swarren@nvidia.com> for noticing.
- "Otherwise, on Tegra+WM8903, I repro'd the bug, and tested the fix, so:
Tested-by: Stephen Warren <swarren@nvidia.com>"
---
sound/soc/codecs/tlv320aic3x.c | 3 ++-
sound/soc/codecs/wm8903.c | 3 ++-
sound/soc/codecs/wm8993.c | 3 ++-
sound/soc/codecs/wm8994.c | 6 ++++--
sound/soc/codecs/wm8995.c | 4 ++--
5 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
index 6c43c13..c3d96fc 100644
--- a/sound/soc/codecs/tlv320aic3x.c
+++ b/sound/soc/codecs/tlv320aic3x.c
@@ -157,7 +157,8 @@ static int aic3x_read(struct snd_soc_codec *codec, unsigned int reg,
static int snd_soc_dapm_put_volsw_aic3x(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
- struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
+ struct snd_soc_dapm_widget_list *wlist = snd_kcontrol_chip(kcontrol);
+ struct snd_soc_dapm_widget *widget = wlist->widgets[0];
struct soc_mixer_control *mc =
(struct soc_mixer_control *)kcontrol->private_value;
unsigned int reg = mc->reg;
diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c
index 957cd66..43e3d76 100644
--- a/sound/soc/codecs/wm8903.c
+++ b/sound/soc/codecs/wm8903.c
@@ -382,7 +382,8 @@ static void wm8903_seq_notifier(struct snd_soc_dapm_context *dapm,
static int wm8903_class_w_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
- struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
+ struct snd_soc_dapm_widget_list *wlist = snd_kcontrol_chip(kcontrol);
+ struct snd_soc_dapm_widget *widget = wlist->widgets[0];
struct snd_soc_codec *codec = widget->codec;
struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
u16 reg;
diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c
index 056aef9..9e5ff78 100644
--- a/sound/soc/codecs/wm8993.c
+++ b/sound/soc/codecs/wm8993.c
@@ -718,7 +718,8 @@ static int clk_sys_event(struct snd_soc_dapm_widget *w,
static int class_w_put(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
- struct snd_soc_dapm_widget *widget = snd_kcontrol_chip(kcontrol);
+ struct snd_soc_dapm_widget_list *wlist = snd_kcontrol_chip(kcontrol);
+ struct snd_soc_dapm_widget *widget = wlist->widgets[0];
struct snd_soc_codec *codec = widget->codec;
struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
int ret;
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c
index e6dfa10..970a95c 100644
--- a/sound/soc/codecs/wm8994.c
+++ b/sound/soc/codecs/wm8994.c
@@ -877,7 +877,8 @@ static const char *hp_mux_text[] = {
static int wm8994_put_hp_enum(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
- struct snd_soc_dapm_widget *w = snd_kcontrol_chip(kcontrol);
+ struct snd_soc_dapm_widget_list *wlist = snd_kcontrol_chip(kcontrol);
+ struct snd_soc_dapm_widget *w = wlist->widgets[0];
struct snd_soc_codec *codec = w->codec;
int ret;
@@ -1004,7 +1005,8 @@ SOC_DAPM_SINGLE("AIF1.1 Switch", WM8994_DAC2_RIGHT_MIXER_ROUTING,
static int wm8994_put_class_w(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
- struct snd_soc_dapm_widget *w = snd_kcontrol_chip(kcontrol);
+ struct snd_soc_dapm_widget_list *wlist = snd_kcontrol_chip(kcontrol);
+ struct snd_soc_dapm_widget *w = wlist->widgets[0];
struct snd_soc_codec *codec = w->codec;
int ret;
diff --git a/sound/soc/codecs/wm8995.c b/sound/soc/codecs/wm8995.c
index 67eaaec..5ad873f 100644
--- a/sound/soc/codecs/wm8995.c
+++ b/sound/soc/codecs/wm8995.c
@@ -305,11 +305,11 @@ static int check_clk_sys(struct snd_soc_dapm_widget *source,
static int wm8995_put_class_w(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_value *ucontrol)
{
- struct snd_soc_dapm_widget *w;
+ struct snd_soc_dapm_widget_list *wlist = snd_kcontrol_chip(kcontrol);
+ struct snd_soc_dapm_widget *w = wlist->widgets[0];
struct snd_soc_codec *codec;
int ret;
- w = snd_kcontrol_chip(kcontrol);
codec = w->codec;
ret = snd_soc_dapm_put_volsw(kcontrol, ucontrol);
wm8995_update_class_w(codec);
--
1.7.0.4
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCHv2] ASoC: Fix wrong data type access in a few codec drivers
2011-05-13 16:16 [PATCHv2] ASoC: Fix wrong data type access in a few codec drivers Jarkko Nikula
@ 2011-05-13 16:40 ` Stephen Warren
2011-05-16 13:43 ` Liam Girdwood
2011-05-16 16:07 ` Mark Brown
1 sibling, 1 reply; 4+ messages in thread
From: Stephen Warren @ 2011-05-13 16:40 UTC (permalink / raw)
To: Jarkko Nikula, alsa-devel@alsa-project.org; +Cc: Mark Brown, Liam Girdwood
Jarkko Nikula wrote at Friday, May 13, 2011 10:17 AM:
> Commit fafd217 ("ASoC: Store a list of widgets in a DAPM mux/mixer
> kcontrol")
> changed the control private data type that is passed to snd_soc_cnew when
> creating dapm mixer and mux controls. Commit did not update a few codec
> drivers that are using their own put callbacks and thus are accessing a
> wrong data type.
>
> Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
> Tested-by: Stephen Warren <swarren@nvidia.com>
> ---
> v2:
> - wm8994 and wm8995 needs to be changed too. Thanks to
> Stephen Warren <swarren@nvidia.com> for noticing.
> - "Otherwise, on Tegra+WM8903, I repro'd the bug, and tested the fix, so:
> Tested-by: Stephen Warren <swarren@nvidia.com>"
This version looks good to me. I guess that means:
Acked-by: Stephen Warren <swarren@nvidia.com>
... although I figure my Tested-by is probably enough.
Thanks for fixing my bugs!
--
nvpublic
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCHv2] ASoC: Fix wrong data type access in a few codec drivers
2011-05-13 16:40 ` Stephen Warren
@ 2011-05-16 13:43 ` Liam Girdwood
0 siblings, 0 replies; 4+ messages in thread
From: Liam Girdwood @ 2011-05-16 13:43 UTC (permalink / raw)
To: Stephen Warren; +Cc: alsa-devel@alsa-project.org, Mark Brown
On 13/05/11 17:40, Stephen Warren wrote:
> Jarkko Nikula wrote at Friday, May 13, 2011 10:17 AM:
>> Commit fafd217 ("ASoC: Store a list of widgets in a DAPM mux/mixer
>> kcontrol")
>> changed the control private data type that is passed to snd_soc_cnew when
>> creating dapm mixer and mux controls. Commit did not update a few codec
>> drivers that are using their own put callbacks and thus are accessing a
>> wrong data type.
>>
>> Signed-off-by: Jarkko Nikula <jhnikula@gmail.com>
>> Tested-by: Stephen Warren <swarren@nvidia.com>
>> ---
>> v2:
>> - wm8994 and wm8995 needs to be changed too. Thanks to
>> Stephen Warren <swarren@nvidia.com> for noticing.
>> - "Otherwise, on Tegra+WM8903, I repro'd the bug, and tested the fix, so:
>> Tested-by: Stephen Warren <swarren@nvidia.com>"
>
> This version looks good to me. I guess that means:
>
> Acked-by: Stephen Warren <swarren@nvidia.com>
>
> ... although I figure my Tested-by is probably enough.
>
> Thanks for fixing my bugs!
>
Acked-by: Liam Girdwood <lrg@ti.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCHv2] ASoC: Fix wrong data type access in a few codec drivers
2011-05-13 16:16 [PATCHv2] ASoC: Fix wrong data type access in a few codec drivers Jarkko Nikula
2011-05-13 16:40 ` Stephen Warren
@ 2011-05-16 16:07 ` Mark Brown
1 sibling, 0 replies; 4+ messages in thread
From: Mark Brown @ 2011-05-16 16:07 UTC (permalink / raw)
To: Jarkko Nikula; +Cc: alsa-devel, Stephen Warren, Liam Girdwood
On Fri, May 13, 2011 at 07:16:52PM +0300, Jarkko Nikula wrote:
> Commit fafd217 ("ASoC: Store a list of widgets in a DAPM mux/mixer kcontrol")
> changed the control private data type that is passed to snd_soc_cnew when
> creating dapm mixer and mux controls. Commit did not update a few codec
> drivers that are using their own put callbacks and thus are accessing a
> wrong data type.
Applied, thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-05-16 16:07 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-13 16:16 [PATCHv2] ASoC: Fix wrong data type access in a few codec drivers Jarkko Nikula
2011-05-13 16:40 ` Stephen Warren
2011-05-16 13:43 ` Liam Girdwood
2011-05-16 16:07 ` Mark Brown
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).