ASoC: Fix wrong data type access in a few codec drivers
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>
Acked-by: Liam Girdwood <lrg@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
fa63e477dd
commit
9d03545d88
5 changed files with 12 additions and 7 deletions
|
@ -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,
|
static int snd_soc_dapm_put_volsw_aic3x(struct snd_kcontrol *kcontrol,
|
||||||
struct snd_ctl_elem_value *ucontrol)
|
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 *mc =
|
||||||
(struct soc_mixer_control *)kcontrol->private_value;
|
(struct soc_mixer_control *)kcontrol->private_value;
|
||||||
unsigned int reg = mc->reg;
|
unsigned int reg = mc->reg;
|
||||||
|
|
|
@ -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,
|
static int wm8903_class_w_put(struct snd_kcontrol *kcontrol,
|
||||||
struct snd_ctl_elem_value *ucontrol)
|
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 snd_soc_codec *codec = widget->codec;
|
||||||
struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
|
struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
|
||||||
u16 reg;
|
u16 reg;
|
||||||
|
|
|
@ -718,7 +718,8 @@ static int clk_sys_event(struct snd_soc_dapm_widget *w,
|
||||||
static int class_w_put(struct snd_kcontrol *kcontrol,
|
static int class_w_put(struct snd_kcontrol *kcontrol,
|
||||||
struct snd_ctl_elem_value *ucontrol)
|
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 snd_soc_codec *codec = widget->codec;
|
||||||
struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
|
struct wm8993_priv *wm8993 = snd_soc_codec_get_drvdata(codec);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
|
@ -877,7 +877,8 @@ static const char *hp_mux_text[] = {
|
||||||
static int wm8994_put_hp_enum(struct snd_kcontrol *kcontrol,
|
static int wm8994_put_hp_enum(struct snd_kcontrol *kcontrol,
|
||||||
struct snd_ctl_elem_value *ucontrol)
|
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;
|
struct snd_soc_codec *codec = w->codec;
|
||||||
int ret;
|
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,
|
static int wm8994_put_class_w(struct snd_kcontrol *kcontrol,
|
||||||
struct snd_ctl_elem_value *ucontrol)
|
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;
|
struct snd_soc_codec *codec = w->codec;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
|
|
@ -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,
|
static int wm8995_put_class_w(struct snd_kcontrol *kcontrol,
|
||||||
struct snd_ctl_elem_value *ucontrol)
|
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;
|
struct snd_soc_codec *codec;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
w = snd_kcontrol_chip(kcontrol);
|
|
||||||
codec = w->codec;
|
codec = w->codec;
|
||||||
ret = snd_soc_dapm_put_volsw(kcontrol, ucontrol);
|
ret = snd_soc_dapm_put_volsw(kcontrol, ucontrol);
|
||||||
wm8995_update_class_w(codec);
|
wm8995_update_class_w(codec);
|
||||||
|
|
Loading…
Add table
Reference in a new issue