summaryrefslogtreecommitdiff
path: root/drivers/base
diff options
context:
space:
mode:
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>2021-05-20 15:05:18 +0300
committerMark Brown <broonie@kernel.org>2021-05-20 17:57:32 +0100
commite56360d6a119f531506658ea87238e48ad4c95c2 (patch)
treefa3662a6b8408a710b8e9cb6af95bbd96a8ad784 /drivers/base
parent9dee1f9fc504c48b6b02d8726cc9c868cf41f7be (diff)
regmap: mdio: Don't modify output if error happened
regmap_mdio_read() breaks the principle of "no touch output till it's known that the operation succeeds". Refactor it accordingly. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20210520120518.30490-1-andriy.shevchenko@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/regmap/regmap-mdio.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/base/regmap/regmap-mdio.c b/drivers/base/regmap/regmap-mdio.c
index 5f18fe409f56..5ec208279913 100644
--- a/drivers/base/regmap/regmap-mdio.c
+++ b/drivers/base/regmap/regmap-mdio.c
@@ -11,9 +11,11 @@ static int regmap_mdio_read(void *context, unsigned int reg, unsigned int *val)
int ret;
ret = mdiobus_read(mdio_dev->bus, mdio_dev->addr, reg);
- *val = ret & 0xffff;
+ if (ret < 0)
+ return ret;
- return ret < 0 ? ret : 0;
+ *val = ret & 0xffff;
+ return 0;
}
static int regmap_mdio_write(void *context, unsigned int reg, unsigned int val)