Lines Matching refs:component

49 static int wm8960_set_pll(struct snd_soc_component *component,
168 static int wm8960_set_deemph(struct snd_soc_component *component) in wm8960_set_deemph() argument
170 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_set_deemph()
189 dev_dbg(component->dev, "Set deemphasis %d\n", val); in wm8960_set_deemph()
191 return snd_soc_component_update_bits(component, WM8960_DACCTL1, in wm8960_set_deemph()
198 struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); in wm8960_get_deemph() local
199 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_get_deemph()
208 struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); in wm8960_put_deemph() local
209 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_put_deemph()
217 return wm8960_set_deemph(component); in wm8960_put_deemph()
470 static int wm8960_add_widgets(struct snd_soc_component *component) in wm8960_add_widgets() argument
472 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_add_widgets()
474 struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); in wm8960_add_widgets()
504 list_for_each_entry(w, &component->card->widgets, list) { in wm8960_add_widgets()
521 struct snd_soc_component *component = codec_dai->component; in wm8960_set_dai_fmt() local
573 snd_soc_component_write(component, WM8960_IFACE1, iface); in wm8960_set_dai_fmt()
695 int wm8960_configure_pll(struct snd_soc_component *component, int freq_in, in wm8960_configure_pll() argument
698 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_configure_pll()
741 static int wm8960_configure_clocking(struct snd_soc_component *component) in wm8960_configure_clocking() argument
743 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_configure_clocking()
745 u16 iface1 = snd_soc_component_read32(component, WM8960_IFACE1); in wm8960_configure_clocking()
750 dev_dbg(component->dev, in wm8960_configure_clocking()
756 dev_err(component->dev, "No MCLK configured\n"); in wm8960_configure_clocking()
769 wm8960_set_pll(component, 0, 0); in wm8960_configure_clocking()
774 dev_err(component->dev, "No SYSCLK configured\n"); in wm8960_configure_clocking()
783 dev_err(component->dev, "failed to configure clock\n"); in wm8960_configure_clocking()
788 freq_out = wm8960_configure_pll(component, freq_in, &i, &j, &k); in wm8960_configure_clocking()
790 dev_err(component->dev, "failed to configure clock via PLL\n"); in wm8960_configure_clocking()
793 wm8960_set_pll(component, freq_in, freq_out); in wm8960_configure_clocking()
797 snd_soc_component_update_bits(component, WM8960_CLOCK1, 3 << 1, i << 1); in wm8960_configure_clocking()
800 snd_soc_component_update_bits(component, WM8960_CLOCK1, 0x7 << 3, j << 3); in wm8960_configure_clocking()
801 snd_soc_component_update_bits(component, WM8960_CLOCK1, 0x7 << 6, j << 6); in wm8960_configure_clocking()
804 snd_soc_component_update_bits(component, WM8960_CLOCK2, 0xf, k); in wm8960_configure_clocking()
813 struct snd_soc_component *component = dai->component; in wm8960_hw_params() local
814 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_hw_params()
815 u16 iface = snd_soc_component_read32(component, WM8960_IFACE1) & 0xfff3; in wm8960_hw_params()
841 dev_err(component->dev, "unsupported width %d\n", in wm8960_hw_params()
849 wm8960_set_deemph(component); in wm8960_hw_params()
853 snd_soc_component_update_bits(component, in wm8960_hw_params()
859 snd_soc_component_write(component, WM8960_IFACE1, iface); in wm8960_hw_params()
863 if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_ON && in wm8960_hw_params()
865 return wm8960_configure_clocking(component); in wm8960_hw_params()
873 struct snd_soc_component *component = dai->component; in wm8960_hw_free() local
874 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_hw_free()
884 struct snd_soc_component *component = dai->component; in wm8960_mute() local
887 snd_soc_component_update_bits(component, WM8960_DACCTL1, 0x8, 0x8); in wm8960_mute()
889 snd_soc_component_update_bits(component, WM8960_DACCTL1, 0x8, 0); in wm8960_mute()
893 static int wm8960_set_bias_level_out3(struct snd_soc_component *component, in wm8960_set_bias_level_out3() argument
896 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_set_bias_level_out3()
897 u16 pm2 = snd_soc_component_read32(component, WM8960_POWER2); in wm8960_set_bias_level_out3()
905 switch (snd_soc_component_get_bias_level(component)) { in wm8960_set_bias_level_out3()
910 dev_err(component->dev, in wm8960_set_bias_level_out3()
917 ret = wm8960_configure_clocking(component); in wm8960_set_bias_level_out3()
922 snd_soc_component_update_bits(component, WM8960_POWER1, 0x180, 0x80); in wm8960_set_bias_level_out3()
931 wm8960_set_pll(component, 0, 0); in wm8960_set_bias_level_out3()
944 if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_OFF) { in wm8960_set_bias_level_out3()
948 snd_soc_component_write(component, WM8960_APOP1, in wm8960_set_bias_level_out3()
953 snd_soc_component_update_bits(component, WM8960_POWER1, 0x80, 0x80); in wm8960_set_bias_level_out3()
957 snd_soc_component_update_bits(component, WM8960_POWER1, WM8960_VREF, in wm8960_set_bias_level_out3()
961 snd_soc_component_write(component, WM8960_APOP1, WM8960_BUFIOEN); in wm8960_set_bias_level_out3()
965 snd_soc_component_update_bits(component, WM8960_POWER1, 0x180, 0x100); in wm8960_set_bias_level_out3()
970 snd_soc_component_write(component, WM8960_APOP1, in wm8960_set_bias_level_out3()
975 snd_soc_component_write(component, WM8960_POWER1, 0); in wm8960_set_bias_level_out3()
983 static int wm8960_set_bias_level_capless(struct snd_soc_component *component, in wm8960_set_bias_level_capless() argument
986 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_set_bias_level_capless()
987 u16 pm2 = snd_soc_component_read32(component, WM8960_POWER2); in wm8960_set_bias_level_capless()
995 switch (snd_soc_component_get_bias_level(component)) { in wm8960_set_bias_level_capless()
998 snd_soc_component_update_bits(component, WM8960_APOP1, in wm8960_set_bias_level_capless()
1012 snd_soc_component_update_bits(component, WM8960_POWER2, in wm8960_set_bias_level_capless()
1018 snd_soc_component_update_bits(component, WM8960_POWER1, in wm8960_set_bias_level_capless()
1025 snd_soc_component_update_bits(component, WM8960_POWER1, in wm8960_set_bias_level_capless()
1033 dev_err(component->dev, in wm8960_set_bias_level_capless()
1040 ret = wm8960_configure_clocking(component); in wm8960_set_bias_level_capless()
1052 wm8960_set_pll(component, 0, 0); in wm8960_set_bias_level_capless()
1058 snd_soc_component_update_bits(component, WM8960_APOP1, in wm8960_set_bias_level_capless()
1065 snd_soc_component_update_bits(component, WM8960_POWER1, in wm8960_set_bias_level_capless()
1078 switch (snd_soc_component_get_bias_level(component)) { in wm8960_set_bias_level_capless()
1081 snd_soc_component_update_bits(component, WM8960_APOP2, in wm8960_set_bias_level_capless()
1086 snd_soc_component_update_bits(component, WM8960_APOP1, in wm8960_set_bias_level_capless()
1185 static int wm8960_set_pll(struct snd_soc_component *component, in wm8960_set_pll() argument
1200 snd_soc_component_update_bits(component, WM8960_CLOCK1, 0x1, 0); in wm8960_set_pll()
1201 snd_soc_component_update_bits(component, WM8960_POWER2, 0x1, 0); in wm8960_set_pll()
1206 reg = snd_soc_component_read32(component, WM8960_PLL1) & ~0x3f; in wm8960_set_pll()
1213 snd_soc_component_write(component, WM8960_PLL2, (pll_div.k >> 16) & 0xff); in wm8960_set_pll()
1214 snd_soc_component_write(component, WM8960_PLL3, (pll_div.k >> 8) & 0xff); in wm8960_set_pll()
1215 snd_soc_component_write(component, WM8960_PLL4, pll_div.k & 0xff); in wm8960_set_pll()
1217 snd_soc_component_write(component, WM8960_PLL1, reg); in wm8960_set_pll()
1220 snd_soc_component_update_bits(component, WM8960_POWER2, 0x1, 0x1); in wm8960_set_pll()
1222 snd_soc_component_update_bits(component, WM8960_CLOCK1, 0x1, 0x1); in wm8960_set_pll()
1230 struct snd_soc_component *component = codec_dai->component; in wm8960_set_dai_pll() local
1231 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_set_dai_pll()
1238 return wm8960_set_pll(component, freq_in, freq_out); in wm8960_set_dai_pll()
1244 struct snd_soc_component *component = codec_dai->component; in wm8960_set_dai_clkdiv() local
1249 reg = snd_soc_component_read32(component, WM8960_CLOCK1) & 0x1f9; in wm8960_set_dai_clkdiv()
1250 snd_soc_component_write(component, WM8960_CLOCK1, reg | div); in wm8960_set_dai_clkdiv()
1253 reg = snd_soc_component_read32(component, WM8960_CLOCK1) & 0x1c7; in wm8960_set_dai_clkdiv()
1254 snd_soc_component_write(component, WM8960_CLOCK1, reg | div); in wm8960_set_dai_clkdiv()
1257 reg = snd_soc_component_read32(component, WM8960_PLL1) & 0x03f; in wm8960_set_dai_clkdiv()
1258 snd_soc_component_write(component, WM8960_PLL1, reg | div); in wm8960_set_dai_clkdiv()
1261 reg = snd_soc_component_read32(component, WM8960_CLOCK2) & 0x03f; in wm8960_set_dai_clkdiv()
1262 snd_soc_component_write(component, WM8960_CLOCK2, reg | div); in wm8960_set_dai_clkdiv()
1265 reg = snd_soc_component_read32(component, WM8960_ADDCTL1) & 0x1fd; in wm8960_set_dai_clkdiv()
1266 snd_soc_component_write(component, WM8960_ADDCTL1, reg | div); in wm8960_set_dai_clkdiv()
1275 static int wm8960_set_bias_level(struct snd_soc_component *component, in wm8960_set_bias_level() argument
1278 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_set_bias_level()
1280 return wm8960->set_bias_level(component, level); in wm8960_set_bias_level()
1286 struct snd_soc_component *component = dai->component; in wm8960_set_dai_sysclk() local
1287 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_set_dai_sysclk()
1291 snd_soc_component_update_bits(component, WM8960_CLOCK1, in wm8960_set_dai_sysclk()
1295 snd_soc_component_update_bits(component, WM8960_CLOCK1, in wm8960_set_dai_sysclk()
1344 static int wm8960_probe(struct snd_soc_component *component) in wm8960_probe() argument
1346 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_probe()
1354 snd_soc_add_component_controls(component, wm8960_snd_controls, in wm8960_probe()
1356 wm8960_add_widgets(component); in wm8960_probe()