Lines Matching refs:component
52 static int wm8960_set_pll(struct snd_soc_component *component,
171 static int wm8960_set_deemph(struct snd_soc_component *component) in wm8960_set_deemph() argument
173 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_set_deemph()
192 dev_dbg(component->dev, "Set deemphasis %d\n", val); in wm8960_set_deemph()
194 return snd_soc_component_update_bits(component, WM8960_DACCTL1, in wm8960_set_deemph()
201 struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); in wm8960_get_deemph() local
202 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_get_deemph()
211 struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); in wm8960_put_deemph() local
212 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_put_deemph()
220 return wm8960_set_deemph(component); in wm8960_put_deemph()
473 static int wm8960_add_widgets(struct snd_soc_component *component) in wm8960_add_widgets() argument
475 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_add_widgets()
477 struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); in wm8960_add_widgets()
507 list_for_each_entry(w, &component->card->widgets, list) { in wm8960_add_widgets()
524 struct snd_soc_component *component = codec_dai->component; in wm8960_set_dai_fmt() local
576 snd_soc_component_write(component, WM8960_IFACE1, iface); in wm8960_set_dai_fmt()
698 int wm8960_configure_pll(struct snd_soc_component *component, int freq_in, in wm8960_configure_pll() argument
701 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_configure_pll()
744 static int wm8960_configure_clocking(struct snd_soc_component *component) in wm8960_configure_clocking() argument
746 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_configure_clocking()
748 u16 iface1 = snd_soc_component_read32(component, WM8960_IFACE1); in wm8960_configure_clocking()
753 dev_dbg(component->dev, in wm8960_configure_clocking()
759 dev_err(component->dev, "No MCLK configured\n"); in wm8960_configure_clocking()
772 wm8960_set_pll(component, 0, 0); in wm8960_configure_clocking()
777 dev_err(component->dev, "No SYSCLK configured\n"); in wm8960_configure_clocking()
786 dev_err(component->dev, "failed to configure clock\n"); in wm8960_configure_clocking()
791 freq_out = wm8960_configure_pll(component, freq_in, &i, &j, &k); in wm8960_configure_clocking()
793 dev_err(component->dev, "failed to configure clock via PLL\n"); in wm8960_configure_clocking()
796 wm8960_set_pll(component, freq_in, freq_out); in wm8960_configure_clocking()
800 snd_soc_component_update_bits(component, WM8960_CLOCK1, 3 << 1, i << 1); in wm8960_configure_clocking()
803 snd_soc_component_update_bits(component, WM8960_CLOCK1, 0x7 << 3, j << 3); in wm8960_configure_clocking()
804 snd_soc_component_update_bits(component, WM8960_CLOCK1, 0x7 << 6, j << 6); in wm8960_configure_clocking()
807 snd_soc_component_update_bits(component, WM8960_CLOCK2, 0xf, k); in wm8960_configure_clocking()
816 struct snd_soc_component *component = dai->component; in wm8960_hw_params() local
817 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_hw_params()
818 u16 iface = snd_soc_component_read32(component, WM8960_IFACE1) & 0xfff3; in wm8960_hw_params()
844 dev_err(component->dev, "unsupported width %d\n", in wm8960_hw_params()
852 wm8960_set_deemph(component); in wm8960_hw_params()
856 snd_soc_component_update_bits(component, in wm8960_hw_params()
862 snd_soc_component_write(component, WM8960_IFACE1, iface); in wm8960_hw_params()
866 if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_ON && in wm8960_hw_params()
868 return wm8960_configure_clocking(component); in wm8960_hw_params()
876 struct snd_soc_component *component = dai->component; in wm8960_hw_free() local
877 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_hw_free()
887 struct snd_soc_component *component = dai->component; in wm8960_mute() local
890 snd_soc_component_update_bits(component, WM8960_DACCTL1, 0x8, 0x8); in wm8960_mute()
892 snd_soc_component_update_bits(component, WM8960_DACCTL1, 0x8, 0); in wm8960_mute()
896 static int wm8960_set_bias_level_out3(struct snd_soc_component *component, in wm8960_set_bias_level_out3() argument
899 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_set_bias_level_out3()
900 u16 pm2 = snd_soc_component_read32(component, WM8960_POWER2); in wm8960_set_bias_level_out3()
908 switch (snd_soc_component_get_bias_level(component)) { in wm8960_set_bias_level_out3()
913 dev_err(component->dev, in wm8960_set_bias_level_out3()
920 ret = wm8960_configure_clocking(component); in wm8960_set_bias_level_out3()
925 snd_soc_component_update_bits(component, WM8960_POWER1, 0x180, 0x80); in wm8960_set_bias_level_out3()
934 wm8960_set_pll(component, 0, 0); in wm8960_set_bias_level_out3()
947 if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_OFF) { in wm8960_set_bias_level_out3()
951 snd_soc_component_write(component, WM8960_APOP1, in wm8960_set_bias_level_out3()
956 snd_soc_component_update_bits(component, WM8960_POWER1, 0x80, 0x80); in wm8960_set_bias_level_out3()
960 snd_soc_component_update_bits(component, WM8960_POWER1, WM8960_VREF, in wm8960_set_bias_level_out3()
964 snd_soc_component_write(component, WM8960_APOP1, WM8960_BUFIOEN); in wm8960_set_bias_level_out3()
968 snd_soc_component_update_bits(component, WM8960_POWER1, 0x180, 0x100); in wm8960_set_bias_level_out3()
973 snd_soc_component_write(component, WM8960_APOP1, in wm8960_set_bias_level_out3()
978 snd_soc_component_write(component, WM8960_POWER1, 0); in wm8960_set_bias_level_out3()
986 static int wm8960_set_bias_level_capless(struct snd_soc_component *component, in wm8960_set_bias_level_capless() argument
989 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_set_bias_level_capless()
990 u16 pm2 = snd_soc_component_read32(component, WM8960_POWER2); in wm8960_set_bias_level_capless()
998 switch (snd_soc_component_get_bias_level(component)) { in wm8960_set_bias_level_capless()
1001 snd_soc_component_update_bits(component, WM8960_APOP1, in wm8960_set_bias_level_capless()
1015 snd_soc_component_update_bits(component, WM8960_POWER2, in wm8960_set_bias_level_capless()
1021 snd_soc_component_update_bits(component, WM8960_POWER1, in wm8960_set_bias_level_capless()
1028 snd_soc_component_update_bits(component, WM8960_POWER1, in wm8960_set_bias_level_capless()
1036 dev_err(component->dev, in wm8960_set_bias_level_capless()
1043 ret = wm8960_configure_clocking(component); in wm8960_set_bias_level_capless()
1055 wm8960_set_pll(component, 0, 0); in wm8960_set_bias_level_capless()
1061 snd_soc_component_update_bits(component, WM8960_APOP1, in wm8960_set_bias_level_capless()
1068 snd_soc_component_update_bits(component, WM8960_POWER1, in wm8960_set_bias_level_capless()
1081 switch (snd_soc_component_get_bias_level(component)) { in wm8960_set_bias_level_capless()
1084 snd_soc_component_update_bits(component, WM8960_APOP2, in wm8960_set_bias_level_capless()
1089 snd_soc_component_update_bits(component, WM8960_APOP1, in wm8960_set_bias_level_capless()
1188 static int wm8960_set_pll(struct snd_soc_component *component, in wm8960_set_pll() argument
1203 snd_soc_component_update_bits(component, WM8960_CLOCK1, 0x1, 0); in wm8960_set_pll()
1204 snd_soc_component_update_bits(component, WM8960_POWER2, 0x1, 0); in wm8960_set_pll()
1209 reg = snd_soc_component_read32(component, WM8960_PLL1) & ~0x3f; in wm8960_set_pll()
1216 snd_soc_component_write(component, WM8960_PLL2, (pll_div.k >> 16) & 0xff); in wm8960_set_pll()
1217 snd_soc_component_write(component, WM8960_PLL3, (pll_div.k >> 8) & 0xff); in wm8960_set_pll()
1218 snd_soc_component_write(component, WM8960_PLL4, pll_div.k & 0xff); in wm8960_set_pll()
1220 snd_soc_component_write(component, WM8960_PLL1, reg); in wm8960_set_pll()
1223 snd_soc_component_update_bits(component, WM8960_POWER2, 0x1, 0x1); in wm8960_set_pll()
1225 snd_soc_component_update_bits(component, WM8960_CLOCK1, 0x1, 0x1); in wm8960_set_pll()
1233 struct snd_soc_component *component = codec_dai->component; in wm8960_set_dai_pll() local
1234 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_set_dai_pll()
1241 return wm8960_set_pll(component, freq_in, freq_out); in wm8960_set_dai_pll()
1247 struct snd_soc_component *component = codec_dai->component; in wm8960_set_dai_clkdiv() local
1252 reg = snd_soc_component_read32(component, WM8960_CLOCK1) & 0x1f9; in wm8960_set_dai_clkdiv()
1253 snd_soc_component_write(component, WM8960_CLOCK1, reg | div); in wm8960_set_dai_clkdiv()
1256 reg = snd_soc_component_read32(component, WM8960_CLOCK1) & 0x1c7; in wm8960_set_dai_clkdiv()
1257 snd_soc_component_write(component, WM8960_CLOCK1, reg | div); in wm8960_set_dai_clkdiv()
1260 reg = snd_soc_component_read32(component, WM8960_PLL1) & 0x03f; in wm8960_set_dai_clkdiv()
1261 snd_soc_component_write(component, WM8960_PLL1, reg | div); in wm8960_set_dai_clkdiv()
1264 reg = snd_soc_component_read32(component, WM8960_CLOCK2) & 0x03f; in wm8960_set_dai_clkdiv()
1265 snd_soc_component_write(component, WM8960_CLOCK2, reg | div); in wm8960_set_dai_clkdiv()
1268 reg = snd_soc_component_read32(component, WM8960_ADDCTL1) & 0x1fd; in wm8960_set_dai_clkdiv()
1269 snd_soc_component_write(component, WM8960_ADDCTL1, reg | div); in wm8960_set_dai_clkdiv()
1278 static int wm8960_set_bias_level(struct snd_soc_component *component, in wm8960_set_bias_level() argument
1281 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_set_bias_level()
1283 return wm8960->set_bias_level(component, level); in wm8960_set_bias_level()
1289 struct snd_soc_component *component = dai->component; in wm8960_set_dai_sysclk() local
1290 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_set_dai_sysclk()
1294 snd_soc_component_update_bits(component, WM8960_CLOCK1, in wm8960_set_dai_sysclk()
1298 snd_soc_component_update_bits(component, WM8960_CLOCK1, in wm8960_set_dai_sysclk()
1347 static int wm8960_probe(struct snd_soc_component *component) in wm8960_probe() argument
1349 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component); in wm8960_probe()
1357 snd_soc_add_component_controls(component, wm8960_snd_controls, in wm8960_probe()
1359 wm8960_add_widgets(component); in wm8960_probe()