Lines Matching defs:sta350

38 #include <sound/sta350.h>
39 #include "sta350.h"
305 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
311 mutex_lock(&sta350->coeff_lock);
314 regmap_read(sta350->regmap, STA350_CFUD, &cfud);
320 regmap_write(sta350->regmap, STA350_CFUD, cfud);
322 regmap_write(sta350->regmap, STA350_CFADDR2, index);
324 regmap_write(sta350->regmap, STA350_CFUD, cfud | 0x04);
326 regmap_write(sta350->regmap, STA350_CFUD, cfud | 0x08);
333 regmap_read(sta350->regmap, STA350_B1CF1 + i, &val);
338 mutex_unlock(&sta350->coeff_lock);
347 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
354 regmap_read(sta350->regmap, STA350_CFUD, &cfud);
360 regmap_write(sta350->regmap, STA350_CFUD, cfud);
362 regmap_write(sta350->regmap, STA350_CFADDR2, index);
364 sta350->coef_shadow[index + i] =
369 regmap_write(sta350->regmap, STA350_B1CF1 + i,
372 regmap_write(sta350->regmap, STA350_CFUD, cfud | 0x01);
374 regmap_write(sta350->regmap, STA350_CFUD, cfud | 0x02);
383 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
388 regmap_read(sta350->regmap, STA350_CFUD, &cfud);
392 regmap_write(sta350->regmap, STA350_CFADDR2, i);
393 regmap_write(sta350->regmap, STA350_B1CF1,
394 (sta350->coef_shadow[i] >> 16) & 0xff);
395 regmap_write(sta350->regmap, STA350_B1CF2,
396 (sta350->coef_shadow[i] >> 8) & 0xff);
397 regmap_write(sta350->regmap, STA350_B1CF3,
398 (sta350->coef_shadow[i]) & 0xff);
403 regmap_write(sta350->regmap, STA350_CFUD, cfud);
404 regmap_write(sta350->regmap, STA350_CFUD, cfud | 0x01);
411 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
416 regmap_read(sta350->regmap, STA350_CFUD, &mute);
417 regmap_write(sta350->regmap, STA350_MMUTE, mute | STA350_MMUTE_MMUTE);
419 rc = regcache_sync(sta350->regmap);
420 regmap_write(sta350->regmap, STA350_MMUTE, mute);
609 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
612 sta350->mclk = freq;
629 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
643 sta350->format = fmt & SND_SOC_DAIFMT_FORMAT_MASK;
660 return regmap_update_bits(sta350->regmap, STA350_CONFB,
678 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
684 if (!sta350->mclk) {
686 "sta350->mclk is unset. Unable to determine ratio\n");
691 ratio = sta350->mclk / rate;
728 switch (sta350->format) {
743 switch (sta350->format) {
758 switch (sta350->format) {
773 switch (sta350->format) {
790 ret = regmap_update_bits(sta350->regmap, STA350_CONFA,
796 ret = regmap_update_bits(sta350->regmap, STA350_CONFB,
805 static int sta350_startup_sequence(struct sta350_priv *sta350)
807 if (sta350->gpiod_power_down)
808 gpiod_set_value(sta350->gpiod_power_down, 1);
810 if (sta350->gpiod_nreset) {
811 gpiod_set_value(sta350->gpiod_nreset, 0);
813 gpiod_set_value(sta350->gpiod_nreset, 1);
832 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
842 regmap_update_bits(sta350->regmap, STA350_CONFF,
850 ARRAY_SIZE(sta350->supplies),
851 sta350->supplies);
858 sta350_startup_sequence(sta350);
863 regmap_update_bits(sta350->regmap, STA350_CONFF,
871 regmap_update_bits(sta350->regmap, STA350_CONFF,
875 if (sta350->gpiod_power_down)
876 gpiod_set_value(sta350->gpiod_power_down, 0);
878 if (sta350->gpiod_nreset)
879 gpiod_set_value(sta350->gpiod_nreset, 0);
881 regulator_bulk_disable(ARRAY_SIZE(sta350->supplies),
882 sta350->supplies);
895 .name = "sta350-hifi",
908 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
909 struct sta350_platform_data *pdata = sta350->pdata;
912 ret = regulator_bulk_enable(ARRAY_SIZE(sta350->supplies),
913 sta350->supplies);
919 ret = sta350_startup_sequence(sta350);
932 regmap_update_bits(sta350->regmap, STA350_CONFA,
938 regmap_update_bits(sta350->regmap, STA350_CONFC,
942 regmap_update_bits(sta350->regmap, STA350_CONFC,
946 regmap_update_bits(sta350->regmap,
953 regmap_update_bits(sta350->regmap, STA350_CONFE,
957 regmap_update_bits(sta350->regmap, STA350_CONFE,
961 regmap_update_bits(sta350->regmap, STA350_CONFE,
965 regmap_update_bits(sta350->regmap, STA350_CONFE,
969 regmap_update_bits(sta350->regmap, STA350_CONFE,
974 regmap_update_bits(sta350->regmap, STA350_CONFF,
978 regmap_update_bits(sta350->regmap, STA350_CONFF,
984 regmap_update_bits(sta350->regmap, STA350_C1CFG,
988 regmap_update_bits(sta350->regmap, STA350_C2CFG,
992 regmap_update_bits(sta350->regmap, STA350_C3CFG,
998 regmap_update_bits(sta350->regmap, STA350_MISC1,
1002 regmap_update_bits(sta350->regmap, STA350_MISC1,
1006 regmap_update_bits(sta350->regmap, STA350_MISC1,
1010 regmap_update_bits(sta350->regmap, STA350_MISC1,
1015 regmap_update_bits(sta350->regmap, STA350_MISC2,
1022 sta350->coef_shadow[i] = 0x400000;
1024 sta350->coef_shadow[i] = 0x7fffff;
1025 sta350->coef_shadow[55] = 0x5a9df7;
1026 sta350->coef_shadow[56] = 0x7fffff;
1027 sta350->coef_shadow[59] = 0x7fffff;
1028 sta350->coef_shadow[60] = 0x400000;
1029 sta350->coef_shadow[61] = 0x400000;
1033 regulator_bulk_disable(ARRAY_SIZE(sta350->supplies), sta350->supplies);
1040 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
1042 regulator_bulk_disable(ARRAY_SIZE(sta350->supplies), sta350->supplies);
1075 { .compatible = "st,sta350", },
1087 static int sta350_probe_dt(struct device *dev, struct sta350_priv *sta350)
1172 sta350->pdata = pdata;
1181 struct sta350_priv *sta350;
1184 sta350 = devm_kzalloc(dev, sizeof(struct sta350_priv), GFP_KERNEL);
1185 if (!sta350)
1188 mutex_init(&sta350->coeff_lock);
1189 sta350->pdata = dev_get_platdata(dev);
1193 ret = sta350_probe_dt(dev, sta350);
1200 sta350->gpiod_nreset = devm_gpiod_get_optional(dev, "reset",
1202 if (IS_ERR(sta350->gpiod_nreset))
1203 return PTR_ERR(sta350->gpiod_nreset);
1205 sta350->gpiod_power_down = devm_gpiod_get_optional(dev, "power-down",
1207 if (IS_ERR(sta350->gpiod_power_down))
1208 return PTR_ERR(sta350->gpiod_power_down);
1211 for (i = 0; i < ARRAY_SIZE(sta350->supplies); i++)
1212 sta350->supplies[i].supply = sta350_supply_names[i];
1214 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(sta350->supplies),
1215 sta350->supplies);
1221 sta350->regmap = devm_regmap_init_i2c(i2c, &sta350_regmap);
1222 if (IS_ERR(sta350->regmap)) {
1223 ret = PTR_ERR(sta350->regmap);
1228 i2c_set_clientdata(i2c, sta350);
1241 { "sta350" },
1248 .name = "sta350",