SOC_ENUM_SINGLE(MUX_MM_UL10, 0, 15, route_ul_texts), SOC_ENUM_SINGLE(MUX_MM_UL11, 0, 15, route_ul_texts), SOC_ENUM_SINGLE(MUX_MM_UL12, 0, 15, route_ul_texts), SOC_ENUM_SINGLE(MUX_MM_UL13, 0, 15, route_ul_texts), SOC_ENUM_SINGLE(MUX_MM_UL14, 0, 15, route_ul_texts), SOC_ENUM_SINGLE(MUX_MM_UL15, 0, 15, route_ul_texts), SOC_ENUM_SINGLE(MUX_MM_UL16, 0, 15, route_ul_texts), SOC_ENUM_SINGLE(MUX_MM_UL17, 0, 15, route_ul_texts), SOC_ENUM_SINGLE(MUX_MM_UL20, 0, 15, route_ul_texts), SOC_ENUM_SINGLE(MUX_MM_UL21, 0, 15, route_ul_texts), SOC_ENUM_SINGLE(MUX_VX_UL0, 0, 15, route_ul_texts), SOC_ENUM_SINGLE(MUX_VX_UL1, 0, 15, route_ul_texts), }; static const struct snd_kcontrol_new mm_ul00_control = SOC_DAPM_ENUM_EXT("Route", abe_enum[0], ul_mux_get_route, ul_mux_put_route); static const struct snd_kcontrol_new mm_ul01_control = SOC_DAPM_ENUM_EXT("Route", abe_enum[1], ul_mux_get_route, ul_mux_put_route); static const struct snd_kcontrol_new mm_ul02_control = SOC_DAPM_ENUM_EXT("Route", abe_enum[2], ul_mux_get_route, ul_mux_put_route); static const struct snd_kcontrol_new mm_ul03_control = SOC_DAPM_ENUM_EXT("Route", abe_enum[3], ul_mux_get_route, ul_mux_put_route); static const struct snd_kcontrol_new mm_ul04_control = SOC_DAPM_ENUM_EXT("Route", abe_enum[4],
uV = 2000000; ret = regulator_set_voltage(tse850->ana, uV, uV); if (ret < 0) return ret; return snd_soc_dapm_put_enum_double(kctrl, ucontrol); } static const char * const mux_text[] = { "Mixer", "Loop" }; static const struct soc_enum mux_enum = SOC_ENUM_SINGLE(SND_SOC_NOPM, 0, 2, mux_text); static const struct snd_kcontrol_new mux1 = SOC_DAPM_ENUM_EXT("MUX1", mux_enum, tse850_get_mux1, tse850_put_mux1); static const struct snd_kcontrol_new mux2 = SOC_DAPM_ENUM_EXT("MUX2", mux_enum, tse850_get_mux2, tse850_put_mux2); #define TSE850_DAPM_SINGLE_EXT(xname, reg, shift, max, invert, xget, xput) \ { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ .info = snd_soc_info_volsw, \ .get = xget, \ .put = xput, \ .private_value = SOC_SINGLE_VALUE(reg, shift, max, invert, 0) } static const struct snd_kcontrol_new mix[] = { TSE850_DAPM_SINGLE_EXT("IN Switch", SND_SOC_NOPM, 0, 1, 0, tse850_get_mix, tse850_put_mix), };
struct wm8804_priv *wm8804 = container_of(nb, struct wm8804_priv, \ disable_nb[n]); \ if (event & REGULATOR_EVENT_DISABLE) { \ regcache_mark_dirty(wm8804->regmap); \ } \ return 0; \ } WM8804_REGULATOR_EVENT(0) WM8804_REGULATOR_EVENT(1) static const char *txsrc_text[] = { "S/PDIF RX", "AIF" }; static SOC_ENUM_SINGLE_DECL(txsrc, WM8804_SPDTX4, 6, txsrc_text); static const struct snd_kcontrol_new wm8804_tx_source_mux[] = { SOC_DAPM_ENUM_EXT("Input Source", txsrc, snd_soc_dapm_get_enum_double, txsrc_put), }; static const struct snd_soc_dapm_widget wm8804_dapm_widgets[] = { SND_SOC_DAPM_OUTPUT("SPDIF Out"), SND_SOC_DAPM_INPUT("SPDIF In"), SND_SOC_DAPM_PGA("SPDIFTX", WM8804_PWRDN, 2, 1, NULL, 0), SND_SOC_DAPM_PGA("SPDIFRX", WM8804_PWRDN, 1, 1, NULL, 0), SND_SOC_DAPM_MUX("Tx Source", SND_SOC_NOPM, 6, 0, wm8804_tx_source_mux), SND_SOC_DAPM_AIF_OUT_E("AIFTX", NULL, 0, SND_SOC_NOPM, 0, 0, wm8804_aif_event, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD), SND_SOC_DAPM_AIF_IN_E("AIFRX", NULL, 0, SND_SOC_NOPM, 0, 0, wm8804_aif_event, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),