Lines Matching refs:sta350

39 #include <sound/sta350.h>
40 #include "sta350.h"
309 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
315 mutex_lock(&sta350->coeff_lock);
318 regmap_read(sta350->regmap, STA350_CFUD, &cfud);
324 regmap_write(sta350->regmap, STA350_CFUD, cfud);
326 regmap_write(sta350->regmap, STA350_CFADDR2, index);
328 regmap_write(sta350->regmap, STA350_CFUD, cfud | 0x04);
330 regmap_write(sta350->regmap, STA350_CFUD, cfud | 0x08);
337 regmap_read(sta350->regmap, STA350_B1CF1 + i, &val);
342 mutex_unlock(&sta350->coeff_lock);
351 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
358 regmap_read(sta350->regmap, STA350_CFUD, &cfud);
364 regmap_write(sta350->regmap, STA350_CFUD, cfud);
366 regmap_write(sta350->regmap, STA350_CFADDR2, index);
368 sta350->coef_shadow[index + i] =
373 regmap_write(sta350->regmap, STA350_B1CF1 + i,
376 regmap_write(sta350->regmap, STA350_CFUD, cfud | 0x01);
378 regmap_write(sta350->regmap, STA350_CFUD, cfud | 0x02);
387 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
392 regmap_read(sta350->regmap, STA350_CFUD, &cfud);
396 regmap_write(sta350->regmap, STA350_CFADDR2, i);
397 regmap_write(sta350->regmap, STA350_B1CF1,
398 (sta350->coef_shadow[i] >> 16) & 0xff);
399 regmap_write(sta350->regmap, STA350_B1CF2,
400 (sta350->coef_shadow[i] >> 8) & 0xff);
401 regmap_write(sta350->regmap, STA350_B1CF3,
402 (sta350->coef_shadow[i]) & 0xff);
407 regmap_write(sta350->regmap, STA350_CFUD, cfud);
408 regmap_write(sta350->regmap, STA350_CFUD, cfud | 0x01);
415 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
420 regmap_read(sta350->regmap, STA350_CFUD, &mute);
421 regmap_write(sta350->regmap, STA350_MMUTE, mute | STA350_MMUTE_MMUTE);
423 rc = regcache_sync(sta350->regmap);
424 regmap_write(sta350->regmap, STA350_MMUTE, mute);
613 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
616 sta350->mclk = freq;
633 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
647 sta350->format = fmt & SND_SOC_DAIFMT_FORMAT_MASK;
664 return regmap_update_bits(sta350->regmap, STA350_CONFB,
682 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
688 if (!sta350->mclk) {
690 "sta350->mclk is unset. Unable to determine ratio\n");
695 ratio = sta350->mclk / rate;
732 switch (sta350->format) {
747 switch (sta350->format) {
762 switch (sta350->format) {
777 switch (sta350->format) {
794 ret = regmap_update_bits(sta350->regmap, STA350_CONFA,
800 ret = regmap_update_bits(sta350->regmap, STA350_CONFB,
809 static int sta350_startup_sequence(struct sta350_priv *sta350)
811 if (sta350->gpiod_power_down)
812 gpiod_set_value(sta350->gpiod_power_down, 1);
814 if (sta350->gpiod_nreset) {
815 gpiod_set_value(sta350->gpiod_nreset, 0);
817 gpiod_set_value(sta350->gpiod_nreset, 1);
836 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
846 regmap_update_bits(sta350->regmap, STA350_CONFF,
854 ARRAY_SIZE(sta350->supplies),
855 sta350->supplies);
862 sta350_startup_sequence(sta350);
867 regmap_update_bits(sta350->regmap, STA350_CONFF,
875 regmap_update_bits(sta350->regmap, STA350_CONFF,
879 if (sta350->gpiod_power_down)
880 gpiod_set_value(sta350->gpiod_power_down, 0);
882 if (sta350->gpiod_nreset)
883 gpiod_set_value(sta350->gpiod_nreset, 0);
885 regulator_bulk_disable(ARRAY_SIZE(sta350->supplies),
886 sta350->supplies);
899 .name = "sta350-hifi",
912 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
913 struct sta350_platform_data *pdata = sta350->pdata;
916 ret = regulator_bulk_enable(ARRAY_SIZE(sta350->supplies),
917 sta350->supplies);
923 ret = sta350_startup_sequence(sta350);
936 regmap_update_bits(sta350->regmap, STA350_CONFA,
942 regmap_update_bits(sta350->regmap, STA350_CONFC,
946 regmap_update_bits(sta350->regmap, STA350_CONFC,
950 regmap_update_bits(sta350->regmap,
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,
973 regmap_update_bits(sta350->regmap, STA350_CONFE,
978 regmap_update_bits(sta350->regmap, STA350_CONFF,
982 regmap_update_bits(sta350->regmap, STA350_CONFF,
988 regmap_update_bits(sta350->regmap, STA350_C1CFG,
992 regmap_update_bits(sta350->regmap, STA350_C2CFG,
996 regmap_update_bits(sta350->regmap, STA350_C3CFG,
1002 regmap_update_bits(sta350->regmap, STA350_MISC1,
1006 regmap_update_bits(sta350->regmap, STA350_MISC1,
1010 regmap_update_bits(sta350->regmap, STA350_MISC1,
1014 regmap_update_bits(sta350->regmap, STA350_MISC1,
1019 regmap_update_bits(sta350->regmap, STA350_MISC2,
1026 sta350->coef_shadow[i] = 0x400000;
1028 sta350->coef_shadow[i] = 0x7fffff;
1029 sta350->coef_shadow[55] = 0x5a9df7;
1030 sta350->coef_shadow[56] = 0x7fffff;
1031 sta350->coef_shadow[59] = 0x7fffff;
1032 sta350->coef_shadow[60] = 0x400000;
1033 sta350->coef_shadow[61] = 0x400000;
1037 regulator_bulk_disable(ARRAY_SIZE(sta350->supplies), sta350->supplies);
1044 struct sta350_priv *sta350 = snd_soc_component_get_drvdata(component);
1046 regulator_bulk_disable(ARRAY_SIZE(sta350->supplies), sta350->supplies);
1080 { .compatible = "st,sta350", },
1092 static int sta350_probe_dt(struct device *dev, struct sta350_priv *sta350)
1184 sta350->pdata = pdata;
1194 struct sta350_priv *sta350;
1197 sta350 = devm_kzalloc(dev, sizeof(struct sta350_priv), GFP_KERNEL);
1198 if (!sta350)
1201 mutex_init(&sta350->coeff_lock);
1202 sta350->pdata = dev_get_platdata(dev);
1206 ret = sta350_probe_dt(dev, sta350);
1213 sta350->gpiod_nreset = devm_gpiod_get_optional(dev, "reset",
1215 if (IS_ERR(sta350->gpiod_nreset))
1216 return PTR_ERR(sta350->gpiod_nreset);
1218 sta350->gpiod_power_down = devm_gpiod_get_optional(dev, "power-down",
1220 if (IS_ERR(sta350->gpiod_power_down))
1221 return PTR_ERR(sta350->gpiod_power_down);
1224 for (i = 0; i < ARRAY_SIZE(sta350->supplies); i++)
1225 sta350->supplies[i].supply = sta350_supply_names[i];
1227 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(sta350->supplies),
1228 sta350->supplies);
1234 sta350->regmap = devm_regmap_init_i2c(i2c, &sta350_regmap);
1235 if (IS_ERR(sta350->regmap)) {
1236 ret = PTR_ERR(sta350->regmap);
1241 i2c_set_clientdata(i2c, sta350);
1256 { "sta350", 0 },
1263 .name = "sta350",