Lines Matching refs:tas6424

26 #include "tas6424.h"
75 struct tas6424_data *tas6424 = snd_soc_component_get_drvdata(component);
84 tas6424->last_fault1 = 0;
85 tas6424->last_fault2 = 0;
86 tas6424->last_warn = 0;
87 schedule_delayed_work(&tas6424->fault_check_work,
91 cancel_delayed_work_sync(&tas6424->fault_check_work);
257 struct tas6424_data *tas6424 = snd_soc_component_get_drvdata(component);
262 if (tas6424->mute_gpio) {
263 gpiod_set_value_cansleep(tas6424->mute_gpio, mute);
279 struct tas6424_data *tas6424 = snd_soc_component_get_drvdata(component);
284 regcache_cache_only(tas6424->regmap, true);
285 regcache_mark_dirty(tas6424->regmap);
287 ret = regulator_bulk_disable(ARRAY_SIZE(tas6424->supplies),
288 tas6424->supplies);
299 struct tas6424_data *tas6424 = snd_soc_component_get_drvdata(component);
305 if (!regmap_read(tas6424->regmap, TAS6424_DC_DIAG_CTRL1, &reg_val))
308 ret = regulator_bulk_enable(ARRAY_SIZE(tas6424->supplies),
309 tas6424->supplies);
315 regcache_cache_only(tas6424->regmap, false);
317 ret = regcache_sync(tas6424->regmap);
323 if (tas6424->mute_gpio) {
324 gpiod_set_value_cansleep(tas6424->mute_gpio, 0);
389 .name = "tas6424-amplifier",
403 struct tas6424_data *tas6424 = container_of(work, struct tas6424_data,
405 struct device *dev = tas6424->dev;
409 ret = regmap_read(tas6424->regmap, TAS6424_CHANNEL_FAULT, &reg);
416 tas6424->last_cfault = reg;
426 if ((reg & TAS6424_FAULT_OC_CH1) && !(tas6424->last_cfault & TAS6424_FAULT_OC_CH1))
429 if ((reg & TAS6424_FAULT_OC_CH2) && !(tas6424->last_cfault & TAS6424_FAULT_OC_CH2))
432 if ((reg & TAS6424_FAULT_OC_CH3) && !(tas6424->last_cfault & TAS6424_FAULT_OC_CH3))
435 if ((reg & TAS6424_FAULT_OC_CH4) && !(tas6424->last_cfault & TAS6424_FAULT_OC_CH4))
438 if ((reg & TAS6424_FAULT_DC_CH1) && !(tas6424->last_cfault & TAS6424_FAULT_DC_CH1))
441 if ((reg & TAS6424_FAULT_DC_CH2) && !(tas6424->last_cfault & TAS6424_FAULT_DC_CH2))
444 if ((reg & TAS6424_FAULT_DC_CH3) && !(tas6424->last_cfault & TAS6424_FAULT_DC_CH3))
447 if ((reg & TAS6424_FAULT_DC_CH4) && !(tas6424->last_cfault & TAS6424_FAULT_DC_CH4))
451 tas6424->last_cfault = reg;
454 ret = regmap_read(tas6424->regmap, TAS6424_GLOB_FAULT1, &reg);
473 tas6424->last_fault1 = reg;
477 if ((reg & TAS6424_FAULT_PVDD_OV) && !(tas6424->last_fault1 & TAS6424_FAULT_PVDD_OV))
480 if ((reg & TAS6424_FAULT_VBAT_OV) && !(tas6424->last_fault1 & TAS6424_FAULT_VBAT_OV))
483 if ((reg & TAS6424_FAULT_PVDD_UV) && !(tas6424->last_fault1 & TAS6424_FAULT_PVDD_UV))
486 if ((reg & TAS6424_FAULT_VBAT_UV) && !(tas6424->last_fault1 & TAS6424_FAULT_VBAT_UV))
490 tas6424->last_fault1 = reg;
493 ret = regmap_read(tas6424->regmap, TAS6424_GLOB_FAULT2, &reg);
506 tas6424->last_fault2 = reg;
510 if ((reg & TAS6424_FAULT_OTSD) && !(tas6424->last_fault2 & TAS6424_FAULT_OTSD))
513 if ((reg & TAS6424_FAULT_OTSD_CH1) && !(tas6424->last_fault2 & TAS6424_FAULT_OTSD_CH1))
516 if ((reg & TAS6424_FAULT_OTSD_CH2) && !(tas6424->last_fault2 & TAS6424_FAULT_OTSD_CH2))
519 if ((reg & TAS6424_FAULT_OTSD_CH3) && !(tas6424->last_fault2 & TAS6424_FAULT_OTSD_CH3))
522 if ((reg & TAS6424_FAULT_OTSD_CH4) && !(tas6424->last_fault2 & TAS6424_FAULT_OTSD_CH4))
526 tas6424->last_fault2 = reg;
529 ret = regmap_read(tas6424->regmap, TAS6424_WARN, &reg);
544 tas6424->last_warn = reg;
548 if ((reg & TAS6424_WARN_VDD_UV) && !(tas6424->last_warn & TAS6424_WARN_VDD_UV))
551 if ((reg & TAS6424_WARN_VDD_POR) && !(tas6424->last_warn & TAS6424_WARN_VDD_POR))
554 if ((reg & TAS6424_WARN_VDD_OTW) && !(tas6424->last_warn & TAS6424_WARN_VDD_OTW))
557 if ((reg & TAS6424_WARN_VDD_OTW_CH1) && !(tas6424->last_warn & TAS6424_WARN_VDD_OTW_CH1))
560 if ((reg & TAS6424_WARN_VDD_OTW_CH2) && !(tas6424->last_warn & TAS6424_WARN_VDD_OTW_CH2))
563 if ((reg & TAS6424_WARN_VDD_OTW_CH3) && !(tas6424->last_warn & TAS6424_WARN_VDD_OTW_CH3))
566 if ((reg & TAS6424_WARN_VDD_OTW_CH4) && !(tas6424->last_warn & TAS6424_WARN_VDD_OTW_CH4))
570 tas6424->last_warn = reg;
573 ret = regmap_write_bits(tas6424->regmap, TAS6424_MISC_CTRL3,
578 ret = regmap_write_bits(tas6424->regmap, TAS6424_MISC_CTRL3,
585 schedule_delayed_work(&tas6424->fault_check_work,
677 { .compatible = "ti,tas6424", },
686 struct tas6424_data *tas6424;
690 tas6424 = devm_kzalloc(dev, sizeof(*tas6424), GFP_KERNEL);
691 if (!tas6424)
693 dev_set_drvdata(dev, tas6424);
695 tas6424->dev = dev;
697 tas6424->regmap = devm_regmap_init_i2c(client, &tas6424_regmap_config);
698 if (IS_ERR(tas6424->regmap)) {
699 ret = PTR_ERR(tas6424->regmap);
710 tas6424->standby_gpio = devm_gpiod_get_optional(dev, "standby",
712 if (IS_ERR(tas6424->standby_gpio)) {
713 if (PTR_ERR(tas6424->standby_gpio) == -EPROBE_DEFER)
716 PTR_ERR(tas6424->standby_gpio));
717 tas6424->standby_gpio = NULL;
726 tas6424->mute_gpio = devm_gpiod_get_optional(dev, "mute",
728 if (IS_ERR(tas6424->mute_gpio)) {
729 if (PTR_ERR(tas6424->mute_gpio) == -EPROBE_DEFER)
732 PTR_ERR(tas6424->mute_gpio));
733 tas6424->mute_gpio = NULL;
736 for (i = 0; i < ARRAY_SIZE(tas6424->supplies); i++)
737 tas6424->supplies[i].supply = tas6424_supply_names[i];
738 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(tas6424->supplies),
739 tas6424->supplies);
745 ret = regulator_bulk_enable(ARRAY_SIZE(tas6424->supplies),
746 tas6424->supplies);
753 ret = regmap_update_bits(tas6424->regmap, TAS6424_MODE_CTRL,
760 INIT_DELAYED_WORK(&tas6424->fault_check_work, tas6424_fault_check_work);
772 regulator_bulk_disable(ARRAY_SIZE(tas6424->supplies), tas6424->supplies);
779 struct tas6424_data *tas6424 = dev_get_drvdata(dev);
782 cancel_delayed_work_sync(&tas6424->fault_check_work);
785 if (tas6424->standby_gpio)
786 gpiod_set_value_cansleep(tas6424->standby_gpio, 1);
788 ret = regulator_bulk_disable(ARRAY_SIZE(tas6424->supplies),
789 tas6424->supplies);
795 { "tas6424", 0 },
802 .name = "tas6424",