Lines Matching defs:component
49 static int wm8960_set_pll(struct snd_soc_component *component,
168 static int wm8960_set_deemph(struct snd_soc_component *component)
170 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
189 dev_dbg(component->dev, "Set deemphasis %d\n", val);
191 return snd_soc_component_update_bits(component, WM8960_DACCTL1,
198 struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
199 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
208 struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
209 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
217 return wm8960_set_deemph(component);
470 static int wm8960_add_widgets(struct snd_soc_component *component)
472 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
474 struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
504 list_for_each_entry(w, &component->card->widgets, list) {
521 struct snd_soc_component *component = codec_dai->component;
573 snd_soc_component_write(component, WM8960_IFACE1, iface);
673 * @component: component structure
685 int wm8960_configure_pll(struct snd_soc_component *component, int freq_in,
688 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
737 static int wm8960_configure_clocking(struct snd_soc_component *component)
739 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
741 u16 iface1 = snd_soc_component_read(component, WM8960_IFACE1);
753 dev_warn(component->dev,
759 dev_err(component->dev, "No MCLK configured\n");
772 wm8960_set_pll(component, 0, 0);
777 dev_err(component->dev, "No SYSCLK configured\n");
786 dev_err(component->dev, "failed to configure clock\n");
791 freq_out = wm8960_configure_pll(component, freq_in, &i, &j, &k);
793 dev_err(component->dev, "failed to configure clock via PLL\n");
796 wm8960_set_pll(component, freq_in, freq_out);
800 snd_soc_component_update_bits(component, WM8960_CLOCK1, 3 << 1, i << 1);
803 snd_soc_component_update_bits(component, WM8960_CLOCK1, 0x7 << 3, j << 3);
804 snd_soc_component_update_bits(component, WM8960_CLOCK1, 0x7 << 6, j << 6);
807 snd_soc_component_update_bits(component, WM8960_CLOCK2, 0xf, k);
816 struct snd_soc_component *component = dai->component;
817 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
818 u16 iface = snd_soc_component_read(component, WM8960_IFACE1) & 0xfff3;
844 dev_err(component->dev, "unsupported width %d\n",
852 wm8960_set_deemph(component);
856 snd_soc_component_update_bits(component,
862 snd_soc_component_write(component, WM8960_IFACE1, iface);
867 return wm8960_configure_clocking(component);
875 struct snd_soc_component *component = dai->component;
876 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
886 struct snd_soc_component *component = dai->component;
889 snd_soc_component_update_bits(component, WM8960_DACCTL1, 0x8, 0x8);
891 snd_soc_component_update_bits(component, WM8960_DACCTL1, 0x8, 0);
895 static int wm8960_set_bias_level_out3(struct snd_soc_component *component,
898 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
899 u16 pm2 = snd_soc_component_read(component, WM8960_POWER2);
907 switch (snd_soc_component_get_bias_level(component)) {
912 dev_err(component->dev,
919 ret = wm8960_configure_clocking(component);
924 snd_soc_component_update_bits(component, WM8960_POWER1, 0x180, 0x80);
933 wm8960_set_pll(component, 0, 0);
946 if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_OFF) {
950 snd_soc_component_write(component, WM8960_APOP1,
955 snd_soc_component_update_bits(component, WM8960_POWER1, 0x80, 0x80);
959 snd_soc_component_update_bits(component, WM8960_POWER1, WM8960_VREF,
963 snd_soc_component_write(component, WM8960_APOP1, WM8960_BUFIOEN);
967 snd_soc_component_update_bits(component, WM8960_POWER1, 0x180, 0x100);
972 snd_soc_component_write(component, WM8960_APOP1,
977 snd_soc_component_write(component, WM8960_POWER1, 0);
985 static int wm8960_set_bias_level_capless(struct snd_soc_component *component,
988 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
989 u16 pm2 = snd_soc_component_read(component, WM8960_POWER2);
997 switch (snd_soc_component_get_bias_level(component)) {
1000 snd_soc_component_update_bits(component, WM8960_APOP1,
1014 snd_soc_component_update_bits(component, WM8960_POWER2,
1020 snd_soc_component_update_bits(component, WM8960_POWER1,
1027 snd_soc_component_update_bits(component, WM8960_POWER1,
1035 dev_err(component->dev,
1042 ret = wm8960_configure_clocking(component);
1054 wm8960_set_pll(component, 0, 0);
1060 snd_soc_component_update_bits(component, WM8960_APOP1,
1067 snd_soc_component_update_bits(component, WM8960_POWER1,
1080 switch (snd_soc_component_get_bias_level(component)) {
1083 snd_soc_component_update_bits(component, WM8960_APOP2,
1088 snd_soc_component_update_bits(component, WM8960_APOP1,
1187 static int wm8960_set_pll(struct snd_soc_component *component,
1202 snd_soc_component_update_bits(component, WM8960_CLOCK1, 0x1, 0);
1203 snd_soc_component_update_bits(component, WM8960_POWER2, 0x1, 0);
1208 reg = snd_soc_component_read(component, WM8960_PLL1) & ~0x3f;
1215 snd_soc_component_write(component, WM8960_PLL2, (pll_div.k >> 16) & 0xff);
1216 snd_soc_component_write(component, WM8960_PLL3, (pll_div.k >> 8) & 0xff);
1217 snd_soc_component_write(component, WM8960_PLL4, pll_div.k & 0xff);
1219 snd_soc_component_write(component, WM8960_PLL1, reg);
1222 snd_soc_component_update_bits(component, WM8960_POWER2, 0x1, 0x1);
1224 snd_soc_component_update_bits(component, WM8960_CLOCK1, 0x1, 0x1);
1232 struct snd_soc_component *component = codec_dai->component;
1233 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
1240 return wm8960_set_pll(component, freq_in, freq_out);
1246 struct snd_soc_component *component = codec_dai->component;
1251 reg = snd_soc_component_read(component, WM8960_CLOCK1) & 0x1f9;
1252 snd_soc_component_write(component, WM8960_CLOCK1, reg | div);
1255 reg = snd_soc_component_read(component, WM8960_CLOCK1) & 0x1c7;
1256 snd_soc_component_write(component, WM8960_CLOCK1, reg | div);
1259 reg = snd_soc_component_read(component, WM8960_PLL1) & 0x03f;
1260 snd_soc_component_write(component, WM8960_PLL1, reg | div);
1263 reg = snd_soc_component_read(component, WM8960_CLOCK2) & 0x03f;
1264 snd_soc_component_write(component, WM8960_CLOCK2, reg | div);
1267 reg = snd_soc_component_read(component, WM8960_ADDCTL1) & 0x1fd;
1268 snd_soc_component_write(component, WM8960_ADDCTL1, reg | div);
1277 static int wm8960_set_bias_level(struct snd_soc_component *component,
1280 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
1282 return wm8960->set_bias_level(component, level);
1288 struct snd_soc_component *component = dai->component;
1289 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
1293 snd_soc_component_update_bits(component, WM8960_CLOCK1,
1297 snd_soc_component_update_bits(component, WM8960_CLOCK1,
1347 static int wm8960_probe(struct snd_soc_component *component)
1349 struct wm8960_priv *wm8960 = snd_soc_component_get_drvdata(component);
1357 snd_soc_add_component_controls(component, wm8960_snd_controls,
1359 wm8960_add_widgets(component);