power: supply: smb347-charger: Add delay before getting IRQSTAT
authorDavid Heidelberg <david@ixit.cz>
Sun, 29 Mar 2020 16:15:45 +0000 (18:15 +0200)
committerSebastian Reichel <sebastian.reichel@collabora.com>
Sun, 10 May 2020 16:23:50 +0000 (18:23 +0200)
This delay-fix is picked up from downstream driver,
we measured that 25 - 35 ms delay ensure that we get required data.

Tested on SMB347 on Nexus 7 2012. Otherwise IRQSTAT_E fails to provide
correct information.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: David Heidelberg <david@ixit.cz>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
drivers/power/supply/smb347-charger.c

index d102921..f99026d 100644 (file)
@@ -8,6 +8,7 @@
  *          Mika Westerberg <mika.westerberg@linux.intel.com>
  */
 
+#include <linux/delay.h>
 #include <linux/err.h>
 #include <linux/gpio.h>
 #include <linux/kernel.h>
@@ -708,6 +709,9 @@ static irqreturn_t smb347_interrupt(int irq, void *data)
        bool handled = false;
        int ret;
 
+       /* SMB347 it needs at least 20ms for setting IRQSTAT_E_*IN_UV_IRQ */
+       usleep_range(25000, 35000);
+
        ret = regmap_read(smb->regmap, STAT_C, &stat_c);
        if (ret < 0) {
                dev_warn(smb->dev, "reading STAT_C failed\n");