Lines Matching defs:tas2770

31 #include "tas2770.h"
35 static void tas2770_reset(struct tas2770_priv *tas2770)
37 if (tas2770->reset_gpio) {
38 gpiod_set_value_cansleep(tas2770->reset_gpio, 0);
40 gpiod_set_value_cansleep(tas2770->reset_gpio, 1);
44 snd_soc_component_write(tas2770->component, TAS2770_SW_RST,
49 static int tas2770_update_pwr_ctrl(struct tas2770_priv *tas2770)
51 struct snd_soc_component *component = tas2770->component;
55 if (tas2770->dac_powered)
56 val = tas2770->unmuted ?
72 struct tas2770_priv *tas2770 = snd_soc_component_get_drvdata(component);
75 regcache_cache_only(tas2770->regmap, true);
76 regcache_mark_dirty(tas2770->regmap);
78 if (tas2770->sdz_gpio) {
79 gpiod_set_value_cansleep(tas2770->sdz_gpio, 0);
85 regcache_cache_only(tas2770->regmap, false);
86 regcache_sync(tas2770->regmap);
98 struct tas2770_priv *tas2770 = snd_soc_component_get_drvdata(component);
101 if (tas2770->sdz_gpio) {
102 gpiod_set_value_cansleep(tas2770->sdz_gpio, 1);
105 ret = tas2770_update_pwr_ctrl(tas2770);
110 regcache_cache_only(tas2770->regmap, false);
112 return regcache_sync(tas2770->regmap);
135 struct tas2770_priv *tas2770 =
141 tas2770->dac_powered = 1;
142 ret = tas2770_update_pwr_ctrl(tas2770);
145 tas2770->dac_powered = 0;
146 ret = tas2770_update_pwr_ctrl(tas2770);
149 dev_err(tas2770->dev, "Not supported evevt\n");
187 struct tas2770_priv *tas2770 =
190 tas2770->unmuted = !mute;
191 return tas2770_update_pwr_ctrl(tas2770);
194 static int tas2770_set_bitwidth(struct tas2770_priv *tas2770, int bitwidth)
197 struct snd_soc_component *component = tas2770->component;
204 tas2770->v_sense_slot = tas2770->i_sense_slot + 2;
210 tas2770->v_sense_slot = tas2770->i_sense_slot + 4;
216 tas2770->v_sense_slot = tas2770->i_sense_slot + 4;
230 tas2770->v_sense_slot);
238 tas2770->i_sense_slot);
245 static int tas2770_set_samplerate(struct tas2770_priv *tas2770, int samplerate)
247 struct snd_soc_component *component = tas2770->component;
295 struct tas2770_priv *tas2770 =
299 ret = tas2770_set_bitwidth(tas2770, params_format(params));
303 return tas2770_set_samplerate(tas2770, params_rate(params));
309 struct tas2770_priv *tas2770 =
318 dev_err(tas2770->dev, "ASI format master is not found\n");
336 dev_err(tas2770->dev, "ASI format Inverse is not found\n");
364 dev_err(tas2770->dev,
469 .name = "tas2770 ASI1",
494 struct tas2770_priv *tas2770 =
497 tas2770->component = component;
499 if (tas2770->sdz_gpio) {
500 gpiod_set_value_cansleep(tas2770->sdz_gpio, 1);
504 tas2770_reset(tas2770);
505 regmap_reinit_cache(tas2770->regmap, &tas2770_i2c_regmap);
535 static int tas2770_register_codec(struct tas2770_priv *tas2770)
537 return devm_snd_soc_register_component(tas2770->dev,
625 static int tas2770_parse_dt(struct device *dev, struct tas2770_priv *tas2770)
630 &tas2770->i_sense_slot);
632 dev_info(tas2770->dev, "Property %s is missing setting default slot\n",
635 tas2770->i_sense_slot = 0;
639 &tas2770->v_sense_slot);
641 dev_info(tas2770->dev, "Property %s is missing setting default slot\n",
644 tas2770->v_sense_slot = 2;
647 tas2770->sdz_gpio = devm_gpiod_get_optional(dev, "shutdown", GPIOD_OUT_HIGH);
648 if (IS_ERR(tas2770->sdz_gpio)) {
649 if (PTR_ERR(tas2770->sdz_gpio) == -EPROBE_DEFER)
652 tas2770->sdz_gpio = NULL;
661 struct tas2770_priv *tas2770;
664 tas2770 = devm_kzalloc(&client->dev, sizeof(struct tas2770_priv),
666 if (!tas2770)
669 tas2770->dev = &client->dev;
670 i2c_set_clientdata(client, tas2770);
671 dev_set_drvdata(&client->dev, tas2770);
673 tas2770->regmap = devm_regmap_init_i2c(client, &tas2770_i2c_regmap);
674 if (IS_ERR(tas2770->regmap)) {
675 result = PTR_ERR(tas2770->regmap);
682 result = tas2770_parse_dt(&client->dev, tas2770);
684 dev_err(tas2770->dev, "%s: Failed to parse devicetree\n",
690 tas2770->reset_gpio = devm_gpiod_get_optional(tas2770->dev, "reset",
692 if (IS_ERR(tas2770->reset_gpio)) {
693 if (PTR_ERR(tas2770->reset_gpio) == -EPROBE_DEFER) {
694 tas2770->reset_gpio = NULL;
699 result = tas2770_register_codec(tas2770);
701 dev_err(tas2770->dev, "Register codec failed.\n");
707 { "tas2770", 0},
714 { .compatible = "ti,tas2770" },
722 .name = "tas2770",