mfd: atmel-hlcdc: Return in case of error
authorClaudiu Beznea <claudiu.beznea@microchip.com>
Wed, 18 Dec 2019 12:28:27 +0000 (14:28 +0200)
committerLee Jones <lee.jones@linaro.org>
Tue, 7 Jan 2020 10:08:58 +0000 (10:08 +0000)
For HLCDC timing engine configurations bit ATMEL_HLCDC_SIP of
ATMEL_HLCDC_SR needs to be polled before applying new config. In case of
timeout there is no indicator about this, so, return in case of timeout
and also print a message about this.

Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/atmel-hlcdc.c

index 92bfcaa..3c2414b 100644 (file)
@@ -40,10 +40,17 @@ static int regmap_atmel_hlcdc_reg_write(void *context, unsigned int reg,
 
        if (reg <= ATMEL_HLCDC_DIS) {
                u32 status;
-
-               readl_poll_timeout_atomic(hregmap->regs + ATMEL_HLCDC_SR,
-                                         status, !(status & ATMEL_HLCDC_SIP),
-                                         1, 100);
+               int ret;
+
+               ret = readl_poll_timeout_atomic(hregmap->regs + ATMEL_HLCDC_SR,
+                                               status,
+                                               !(status & ATMEL_HLCDC_SIP),
+                                               1, 100);
+               if (ret) {
+                       dev_err(hregmap->dev,
+                               "Timeout! Clock domain synchronization is in progress!\n");
+                       return ret;
+               }
        }
 
        writel(val, hregmap->regs + reg);