pinctrl: baytrail: add warning for BYT_VAL_REG retrieval failure
authorRaag Jadav <raag.jadav@intel.com>
Fri, 16 Jun 2023 20:33:55 +0000 (02:03 +0530)
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 19 Jun 2023 10:53:26 +0000 (13:53 +0300)
Add warning for BYT_VAL_REG retrieval failure and continue such case
to avoid unintended reads/writes in pm_ops.

Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Link: https://lore.kernel.org/r/20230616203356.27343-3-raag.jadav@intel.com
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
drivers/pinctrl/intel/pinctrl-baytrail.c

index 54d3c5c26944cd47214ebf6218aa9725e879b451..97ead2c58b66592a889eb4f766862fe3f72a6f85 100644 (file)
@@ -1758,6 +1758,10 @@ static int byt_gpio_suspend(struct device *dev)
                vg->context.pads[i].conf0 = value;
 
                reg = byt_gpio_reg(vg, pin, BYT_VAL_REG);
+               if (!reg) {
+                       dev_warn(vg->dev, "Pin %i: can't retrieve VAL\n", i);
+                       continue;
+               }
                value = readl(reg) & BYT_VAL_RESTORE_MASK;
                vg->context.pads[i].val = value;
        }
@@ -1794,6 +1798,10 @@ static int byt_gpio_resume(struct device *dev)
                }
 
                reg = byt_gpio_reg(vg, pin, BYT_VAL_REG);
+               if (!reg) {
+                       dev_warn(vg->dev, "Pin %i: can't retrieve VAL\n", i);
+                       continue;
+               }
                value = readl(reg);
                if ((value & BYT_VAL_RESTORE_MASK) !=
                     vg->context.pads[i].val) {