|
@@ -779,7 +779,7 @@ static int dapm_is_shared_kcontrol(struct snd_soc_dapm_context *dapm,
|
|
|
* Determine if a kcontrol is shared. If it is, look it up. If it isn't,
|
|
|
* create it. Either way, add the widget into the control's widget list
|
|
|
*/
|
|
|
-static int dapm_create_or_share_mixmux_kcontrol(struct snd_soc_dapm_widget *w,
|
|
|
+static int dapm_create_or_share_kcontrol(struct snd_soc_dapm_widget *w,
|
|
|
int kci)
|
|
|
{
|
|
|
struct snd_soc_dapm_context *dapm = w->dapm;
|
|
@@ -810,6 +810,7 @@ static int dapm_create_or_share_mixmux_kcontrol(struct snd_soc_dapm_widget *w,
|
|
|
switch (w->id) {
|
|
|
case snd_soc_dapm_switch:
|
|
|
case snd_soc_dapm_mixer:
|
|
|
+ case snd_soc_dapm_pga:
|
|
|
wname_in_long_name = true;
|
|
|
kcname_in_long_name = true;
|
|
|
break;
|
|
@@ -899,7 +900,7 @@ static int dapm_new_mixer(struct snd_soc_dapm_widget *w)
|
|
|
continue;
|
|
|
|
|
|
if (!w->kcontrols[i]) {
|
|
|
- ret = dapm_create_or_share_mixmux_kcontrol(w, i);
|
|
|
+ ret = dapm_create_or_share_kcontrol(w, i);
|
|
|
if (ret < 0)
|
|
|
return ret;
|
|
|
}
|
|
@@ -952,7 +953,7 @@ static int dapm_new_mux(struct snd_soc_dapm_widget *w)
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- ret = dapm_create_or_share_mixmux_kcontrol(w, 0);
|
|
|
+ ret = dapm_create_or_share_kcontrol(w, 0);
|
|
|
if (ret < 0)
|
|
|
return ret;
|
|
|
|
|
@@ -967,9 +968,13 @@ static int dapm_new_mux(struct snd_soc_dapm_widget *w)
|
|
|
/* create new dapm volume control */
|
|
|
static int dapm_new_pga(struct snd_soc_dapm_widget *w)
|
|
|
{
|
|
|
- if (w->num_kcontrols)
|
|
|
- dev_err(w->dapm->dev,
|
|
|
- "ASoC: PGA controls not supported: '%s'\n", w->name);
|
|
|
+ int i, ret;
|
|
|
+
|
|
|
+ for (i = 0; i < w->num_kcontrols; i++) {
|
|
|
+ ret = dapm_create_or_share_kcontrol(w, i);
|
|
|
+ if (ret < 0)
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
|
|
|
return 0;
|
|
|
}
|