|
@@ -424,8 +424,10 @@ static void tas6424_fault_check_work(struct work_struct *work)
|
|
|
TAS6424_FAULT_PVDD_UV |
|
|
|
TAS6424_FAULT_VBAT_UV;
|
|
|
|
|
|
- if (reg)
|
|
|
+ if (!reg) {
|
|
|
+ tas6424->last_fault1 = reg;
|
|
|
goto check_global_fault2_reg;
|
|
|
+ }
|
|
|
|
|
|
/*
|
|
|
* Only flag errors once for a given occurrence. This is needed as
|
|
@@ -461,8 +463,10 @@ check_global_fault2_reg:
|
|
|
TAS6424_FAULT_OTSD_CH3 |
|
|
|
TAS6424_FAULT_OTSD_CH4;
|
|
|
|
|
|
- if (!reg)
|
|
|
+ if (!reg) {
|
|
|
+ tas6424->last_fault2 = reg;
|
|
|
goto check_warn_reg;
|
|
|
+ }
|
|
|
|
|
|
if ((reg & TAS6424_FAULT_OTSD) && !(tas6424->last_fault2 & TAS6424_FAULT_OTSD))
|
|
|
dev_crit(dev, "experienced a global overtemp shutdown\n");
|
|
@@ -497,8 +501,10 @@ check_warn_reg:
|
|
|
TAS6424_WARN_VDD_OTW_CH3 |
|
|
|
TAS6424_WARN_VDD_OTW_CH4;
|
|
|
|
|
|
- if (!reg)
|
|
|
+ if (!reg) {
|
|
|
+ tas6424->last_warn = reg;
|
|
|
goto out;
|
|
|
+ }
|
|
|
|
|
|
if ((reg & TAS6424_WARN_VDD_UV) && !(tas6424->last_warn & TAS6424_WARN_VDD_UV))
|
|
|
dev_warn(dev, "experienced a VDD under voltage condition\n");
|