Lines Matching refs:tas6424
27 #include "tas6424.h"
76 struct tas6424_data *tas6424 = snd_soc_component_get_drvdata(component);
85 tas6424->last_fault1 = 0;
86 tas6424->last_fault2 = 0;
87 tas6424->last_warn = 0;
88 schedule_delayed_work(&tas6424->fault_check_work,
92 cancel_delayed_work_sync(&tas6424->fault_check_work);
258 struct tas6424_data *tas6424 = snd_soc_component_get_drvdata(component);
263 if (tas6424->mute_gpio) {
264 gpiod_set_value_cansleep(tas6424->mute_gpio, mute);
280 struct tas6424_data *tas6424 = snd_soc_component_get_drvdata(component);
285 regcache_cache_only(tas6424->regmap, true);
286 regcache_mark_dirty(tas6424->regmap);
288 ret = regulator_bulk_disable(ARRAY_SIZE(tas6424->supplies),
289 tas6424->supplies);
300 struct tas6424_data *tas6424 = snd_soc_component_get_drvdata(component);
306 if (!regmap_read(tas6424->regmap, TAS6424_DC_DIAG_CTRL1, ®_val))
309 ret = regulator_bulk_enable(ARRAY_SIZE(tas6424->supplies),
310 tas6424->supplies);
316 regcache_cache_only(tas6424->regmap, false);
318 ret = regcache_sync(tas6424->regmap);
324 if (tas6424->mute_gpio) {
325 gpiod_set_value_cansleep(tas6424->mute_gpio, 0);
391 .name = "tas6424-amplifier",
405 struct tas6424_data *tas6424 = container_of(work, struct tas6424_data,
407 struct device *dev = tas6424->dev;
411 ret = regmap_read(tas6424->regmap, TAS6424_CHANNEL_FAULT, ®);
418 tas6424->last_cfault = reg;
428 if ((reg & TAS6424_FAULT_OC_CH1) && !(tas6424->last_cfault & TAS6424_FAULT_OC_CH1))
431 if ((reg & TAS6424_FAULT_OC_CH2) && !(tas6424->last_cfault & TAS6424_FAULT_OC_CH2))
434 if ((reg & TAS6424_FAULT_OC_CH3) && !(tas6424->last_cfault & TAS6424_FAULT_OC_CH3))
437 if ((reg & TAS6424_FAULT_OC_CH4) && !(tas6424->last_cfault & TAS6424_FAULT_OC_CH4))
440 if ((reg & TAS6424_FAULT_DC_CH1) && !(tas6424->last_cfault & TAS6424_FAULT_DC_CH1))
443 if ((reg & TAS6424_FAULT_DC_CH2) && !(tas6424->last_cfault & TAS6424_FAULT_DC_CH2))
446 if ((reg & TAS6424_FAULT_DC_CH3) && !(tas6424->last_cfault & TAS6424_FAULT_DC_CH3))
449 if ((reg & TAS6424_FAULT_DC_CH4) && !(tas6424->last_cfault & TAS6424_FAULT_DC_CH4))
453 tas6424->last_cfault = reg;
456 ret = regmap_read(tas6424->regmap, TAS6424_GLOB_FAULT1, ®);
475 tas6424->last_fault1 = reg;
479 if ((reg & TAS6424_FAULT_PVDD_OV) && !(tas6424->last_fault1 & TAS6424_FAULT_PVDD_OV))
482 if ((reg & TAS6424_FAULT_VBAT_OV) && !(tas6424->last_fault1 & TAS6424_FAULT_VBAT_OV))
485 if ((reg & TAS6424_FAULT_PVDD_UV) && !(tas6424->last_fault1 & TAS6424_FAULT_PVDD_UV))
488 if ((reg & TAS6424_FAULT_VBAT_UV) && !(tas6424->last_fault1 & TAS6424_FAULT_VBAT_UV))
492 tas6424->last_fault1 = reg;
495 ret = regmap_read(tas6424->regmap, TAS6424_GLOB_FAULT2, ®);
508 tas6424->last_fault2 = reg;
512 if ((reg & TAS6424_FAULT_OTSD) && !(tas6424->last_fault2 & TAS6424_FAULT_OTSD))
515 if ((reg & TAS6424_FAULT_OTSD_CH1) && !(tas6424->last_fault2 & TAS6424_FAULT_OTSD_CH1))
518 if ((reg & TAS6424_FAULT_OTSD_CH2) && !(tas6424->last_fault2 & TAS6424_FAULT_OTSD_CH2))
521 if ((reg & TAS6424_FAULT_OTSD_CH3) && !(tas6424->last_fault2 & TAS6424_FAULT_OTSD_CH3))
524 if ((reg & TAS6424_FAULT_OTSD_CH4) && !(tas6424->last_fault2 & TAS6424_FAULT_OTSD_CH4))
528 tas6424->last_fault2 = reg;
531 ret = regmap_read(tas6424->regmap, TAS6424_WARN, ®);
546 tas6424->last_warn = reg;
550 if ((reg & TAS6424_WARN_VDD_UV) && !(tas6424->last_warn & TAS6424_WARN_VDD_UV))
553 if ((reg & TAS6424_WARN_VDD_POR) && !(tas6424->last_warn & TAS6424_WARN_VDD_POR))
556 if ((reg & TAS6424_WARN_VDD_OTW) && !(tas6424->last_warn & TAS6424_WARN_VDD_OTW))
559 if ((reg & TAS6424_WARN_VDD_OTW_CH1) && !(tas6424->last_warn & TAS6424_WARN_VDD_OTW_CH1))
562 if ((reg & TAS6424_WARN_VDD_OTW_CH2) && !(tas6424->last_warn & TAS6424_WARN_VDD_OTW_CH2))
565 if ((reg & TAS6424_WARN_VDD_OTW_CH3) && !(tas6424->last_warn & TAS6424_WARN_VDD_OTW_CH3))
568 if ((reg & TAS6424_WARN_VDD_OTW_CH4) && !(tas6424->last_warn & TAS6424_WARN_VDD_OTW_CH4))
572 tas6424->last_warn = reg;
575 ret = regmap_write_bits(tas6424->regmap, TAS6424_MISC_CTRL3,
580 ret = regmap_write_bits(tas6424->regmap, TAS6424_MISC_CTRL3,
587 schedule_delayed_work(&tas6424->fault_check_work,
679 { .compatible = "ti,tas6424", },
689 struct tas6424_data *tas6424;
693 tas6424 = devm_kzalloc(dev, sizeof(*tas6424), GFP_KERNEL);
694 if (!tas6424)
696 dev_set_drvdata(dev, tas6424);
698 tas6424->dev = dev;
700 tas6424->regmap = devm_regmap_init_i2c(client, &tas6424_regmap_config);
701 if (IS_ERR(tas6424->regmap)) {
702 ret = PTR_ERR(tas6424->regmap);
713 tas6424->standby_gpio = devm_gpiod_get_optional(dev, "standby",
715 if (IS_ERR(tas6424->standby_gpio)) {
716 if (PTR_ERR(tas6424->standby_gpio) == -EPROBE_DEFER)
719 PTR_ERR(tas6424->standby_gpio));
720 tas6424->standby_gpio = NULL;
729 tas6424->mute_gpio = devm_gpiod_get_optional(dev, "mute",
731 if (IS_ERR(tas6424->mute_gpio)) {
732 if (PTR_ERR(tas6424->mute_gpio) == -EPROBE_DEFER)
735 PTR_ERR(tas6424->mute_gpio));
736 tas6424->mute_gpio = NULL;
739 for (i = 0; i < ARRAY_SIZE(tas6424->supplies); i++)
740 tas6424->supplies[i].supply = tas6424_supply_names[i];
741 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(tas6424->supplies),
742 tas6424->supplies);
748 ret = regulator_bulk_enable(ARRAY_SIZE(tas6424->supplies),
749 tas6424->supplies);
756 ret = regmap_update_bits(tas6424->regmap, TAS6424_MODE_CTRL,
763 INIT_DELAYED_WORK(&tas6424->fault_check_work, tas6424_fault_check_work);
778 struct tas6424_data *tas6424 = dev_get_drvdata(dev);
781 cancel_delayed_work_sync(&tas6424->fault_check_work);
784 if (tas6424->standby_gpio)
785 gpiod_set_value_cansleep(tas6424->standby_gpio, 1);
787 ret = regulator_bulk_disable(ARRAY_SIZE(tas6424->supplies),
788 tas6424->supplies);
798 { "tas6424", 0 },
805 .name = "tas6424",