ASoC: Intel: sof_sdw: use .controls/.widgets to add controls/widgets
[sfrench/cifs-2.6.git] / sound / soc / intel / boards / sof_sdw.c
index 3acc2db61b35862212a92b5462fc2feec7de80ac..8c1497bab2efda19639549f063d6fabcc98ed56d 100644 (file)
@@ -515,6 +515,50 @@ static struct snd_soc_dai_link_component platform_component[] = {
        }
 };
 
+static const struct snd_soc_dapm_widget generic_dmic_widgets[] = {
+       SND_SOC_DAPM_MIC("DMIC", NULL),
+};
+
+static const struct snd_soc_dapm_widget generic_jack_widgets[] = {
+       SND_SOC_DAPM_HP("Headphone", NULL),
+       SND_SOC_DAPM_MIC("Headset Mic", NULL),
+};
+
+static const struct snd_kcontrol_new generic_jack_controls[] = {
+       SOC_DAPM_PIN_SWITCH("Headphone"),
+       SOC_DAPM_PIN_SWITCH("Headset Mic"),
+};
+
+static const struct snd_soc_dapm_widget generic_spk_widgets[] = {
+       SND_SOC_DAPM_SPK("Speaker", NULL),
+};
+
+static const struct snd_kcontrol_new generic_spk_controls[] = {
+       SOC_DAPM_PIN_SWITCH("Speaker"),
+};
+
+static const struct snd_soc_dapm_widget maxim_widgets[] = {
+       SND_SOC_DAPM_SPK("Left Spk", NULL),
+       SND_SOC_DAPM_SPK("Right Spk", NULL),
+};
+
+static const struct snd_kcontrol_new maxim_controls[] = {
+       SOC_DAPM_PIN_SWITCH("Left Spk"),
+       SOC_DAPM_PIN_SWITCH("Right Spk"),
+};
+
+static const struct snd_soc_dapm_widget rt700_widgets[] = {
+       SND_SOC_DAPM_HP("Headphones", NULL),
+       SND_SOC_DAPM_MIC("AMIC", NULL),
+       SND_SOC_DAPM_SPK("Speaker", NULL),
+};
+
+static const struct snd_kcontrol_new rt700_controls[] = {
+       SOC_DAPM_PIN_SWITCH("Headphones"),
+       SOC_DAPM_PIN_SWITCH("AMIC"),
+       SOC_DAPM_PIN_SWITCH("Speaker"),
+};
+
 struct snd_soc_dai *get_codec_dai_by_name(struct snd_soc_pcm_runtime *rtd,
                                          const char * const dai_name[],
                                          int num_dais)
@@ -681,6 +725,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_JACK,
                                .dailink = {SDW_JACK_OUT_DAI_ID, SDW_JACK_IN_DAI_ID},
                                .rtd_init = rt700_rtd_init,
+                               .controls = rt700_controls,
+                               .num_controls = ARRAY_SIZE(rt700_controls),
+                               .widgets = rt700_widgets,
+                               .num_widgets = ARRAY_SIZE(rt700_widgets),
                        },
                },
                .dai_num = 1,
@@ -697,6 +745,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .init = sof_sdw_rt_sdca_jack_init,
                                .exit = sof_sdw_rt_sdca_jack_exit,
                                .rtd_init = rt_sdca_jack_rtd_init,
+                               .controls = generic_jack_controls,
+                               .num_controls = ARRAY_SIZE(generic_jack_controls),
+                               .widgets = generic_jack_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_jack_widgets),
                        },
                },
                .dai_num = 1,
@@ -713,6 +765,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .init = sof_sdw_rt711_init,
                                .exit = sof_sdw_rt711_exit,
                                .rtd_init = rt711_rtd_init,
+                               .controls = generic_jack_controls,
+                               .num_controls = ARRAY_SIZE(generic_jack_controls),
+                               .widgets = generic_jack_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_jack_widgets),
                        },
                },
                .dai_num = 1,
@@ -729,6 +785,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .init = sof_sdw_rt_sdca_jack_init,
                                .exit = sof_sdw_rt_sdca_jack_exit,
                                .rtd_init = rt_sdca_jack_rtd_init,
+                               .controls = generic_jack_controls,
+                               .num_controls = ARRAY_SIZE(generic_jack_controls),
+                               .widgets = generic_jack_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_jack_widgets),
                        },
                        {
                                .direction = {true, false},
@@ -738,6 +798,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .init = sof_sdw_rt_amp_init,
                                .exit = sof_sdw_rt_amp_exit,
                                .rtd_init = rt712_spk_rtd_init,
+                               .controls = generic_spk_controls,
+                               .num_controls = ARRAY_SIZE(generic_spk_controls),
+                               .widgets = generic_spk_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_spk_widgets),
                        },
                },
                .dai_num = 2,
@@ -768,6 +832,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .init = sof_sdw_rt_sdca_jack_init,
                                .exit = sof_sdw_rt_sdca_jack_exit,
                                .rtd_init = rt_sdca_jack_rtd_init,
+                               .controls = generic_jack_controls,
+                               .num_controls = ARRAY_SIZE(generic_jack_controls),
+                               .widgets = generic_jack_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_jack_widgets),
                        },
                },
                .dai_num = 1,
@@ -798,6 +866,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .init = sof_sdw_rt_amp_init,
                                .exit = sof_sdw_rt_amp_exit,
                                .rtd_init = rt_amp_spk_rtd_init,
+                               .controls = generic_spk_controls,
+                               .num_controls = ARRAY_SIZE(generic_spk_controls),
+                               .widgets = generic_spk_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_spk_widgets),
                        },
                },
                .dai_num = 1,
@@ -814,6 +886,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .init = sof_sdw_rt_amp_init,
                                .exit = sof_sdw_rt_amp_exit,
                                .rtd_init = rt_amp_spk_rtd_init,
+                               .controls = generic_spk_controls,
+                               .num_controls = ARRAY_SIZE(generic_spk_controls),
+                               .widgets = generic_spk_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_spk_widgets),
                        },
                },
                .dai_num = 1,
@@ -829,6 +905,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .init = sof_sdw_rt_amp_init,
                                .exit = sof_sdw_rt_amp_exit,
                                .rtd_init = rt_amp_spk_rtd_init,
+                               .controls = generic_spk_controls,
+                               .num_controls = ARRAY_SIZE(generic_spk_controls),
+                               .widgets = generic_spk_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_spk_widgets),
                        },
                },
                .dai_num = 1,
@@ -905,6 +985,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .init = sof_sdw_rt_sdca_jack_init,
                                .exit = sof_sdw_rt_sdca_jack_exit,
                                .rtd_init = rt_sdca_jack_rtd_init,
+                               .controls = generic_jack_controls,
+                               .num_controls = ARRAY_SIZE(generic_jack_controls),
+                               .widgets = generic_jack_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_jack_widgets),
                        },
                        {
                                .direction = {true, false},
@@ -915,6 +999,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .init = sof_sdw_rt_amp_init,
                                .exit = sof_sdw_rt_amp_exit,
                                .rtd_init = rt722_spk_rtd_init,
+                               .controls = generic_spk_controls,
+                               .num_controls = ARRAY_SIZE(generic_spk_controls),
+                               .widgets = generic_spk_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_spk_widgets),
                        },
                        {
                                .direction = {false, true},
@@ -936,6 +1024,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dailink = {SDW_AMP_OUT_DAI_ID, SDW_AMP_IN_DAI_ID},
                                .init = sof_sdw_maxim_init,
                                .rtd_init = maxim_spk_rtd_init,
+                               .controls = maxim_controls,
+                               .num_controls = ARRAY_SIZE(maxim_controls),
+                               .widgets = maxim_widgets,
+                               .num_widgets = ARRAY_SIZE(maxim_widgets),
                        },
                },
                .dai_num = 1,
@@ -950,6 +1042,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dailink = {SDW_AMP_OUT_DAI_ID, SDW_UNUSED_DAI_ID},
                                .init = sof_sdw_maxim_init,
                                .rtd_init = maxim_spk_rtd_init,
+                               .controls = maxim_controls,
+                               .num_controls = ARRAY_SIZE(maxim_controls),
+                               .widgets = maxim_widgets,
+                               .num_widgets = ARRAY_SIZE(maxim_widgets),
                        },
                },
                .dai_num = 1,
@@ -963,6 +1059,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_JACK,
                                .dailink = {SDW_JACK_OUT_DAI_ID, SDW_JACK_IN_DAI_ID},
                                .rtd_init = rt5682_rtd_init,
+                               .controls = generic_jack_controls,
+                               .num_controls = ARRAY_SIZE(generic_jack_controls),
+                               .widgets = generic_jack_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_jack_widgets),
                        },
                },
                .dai_num = 1,
@@ -977,6 +1077,8 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dailink = {SDW_AMP_OUT_DAI_ID, SDW_AMP_IN_DAI_ID},
                                .init = sof_sdw_cs_amp_init,
                                .rtd_init = cs_spk_rtd_init,
+                               .widgets = generic_spk_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_spk_widgets),
                        },
                },
                .dai_num = 1,
@@ -990,6 +1092,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_JACK,
                                .dailink = {SDW_JACK_OUT_DAI_ID, SDW_JACK_IN_DAI_ID},
                                .rtd_init = cs42l42_rtd_init,
+                               .controls = generic_jack_controls,
+                               .num_controls = ARRAY_SIZE(generic_jack_controls),
+                               .widgets = generic_jack_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_jack_widgets),
                        },
                },
                .dai_num = 1,
@@ -1006,6 +1112,8 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_JACK,
                                .dailink = {SDW_JACK_OUT_DAI_ID, SDW_UNUSED_DAI_ID},
                                .rtd_init = cs42l43_hs_rtd_init,
+                               .widgets = generic_jack_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_jack_widgets),
                        },
                        {
                                .direction = {false, true},
@@ -1013,6 +1121,8 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dai_type = SOF_SDW_DAI_TYPE_MIC,
                                .dailink = {SDW_UNUSED_DAI_ID, SDW_DMIC_DAI_ID},
                                .rtd_init = cs42l43_dmic_rtd_init,
+                               .widgets = generic_dmic_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_dmic_widgets),
                        },
                        {
                                .direction = {false, true},
@@ -1027,6 +1137,8 @@ static struct sof_sdw_codec_info codec_info_list[] = {
                                .dailink = {SDW_AMP_OUT_DAI_ID, SDW_UNUSED_DAI_ID},
                                .init = sof_sdw_cs42l43_spk_init,
                                .rtd_init = cs42l43_spk_rtd_init,
+                               .widgets = generic_spk_widgets,
+                               .num_widgets = ARRAY_SIZE(generic_spk_widgets),
                                .quirk = SOF_CODEC_SPKR | SOF_SIDECAR_AMPS,
                        },
                },