summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Fuzzey <martin.fuzzey@flowbird.group>2020-01-14 15:56:18 +0000
committerTom Rini <trini@konsulko.com>2020-01-27 19:54:20 -0500
commitb852cca8f0d863bd31ae72c5a5f241da73b8745f (patch)
tree8714a55ade4b47f4f80c15003cbfb5f5c50ca178
parent7ae22d8479c9e832c0a9a18de705553535a1a9f6 (diff)
downloadu-boot-b852cca8f0d863bd31ae72c5a5f241da73b8745f.tar.gz
u-boot-b852cca8f0d863bd31ae72c5a5f241da73b8745f.tar.xz
u-boot-b852cca8f0d863bd31ae72c5a5f241da73b8745f.zip
pmic: allow dump command for non contiguous register maps
Some PMICs (such as the DA9063) have non-contiguous register maps. Attempting to read the non implemented registers returns an error rather than a dummy value which causes 'pmic dump' to terminate prematurely. Fix this by allowing the PMIC driver to return -ENODATA for such registers, which will then be displayed as '--' by pmic dump. Use a single error code rather than any error code so that we can distinguish between a hardware failure reading the PMIC and a non implemented register known to the driver. Signed-off-by: Martin Fuzzey <martin.fuzzey@flowbird.group>
-rw-r--r--cmd/pmic.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/cmd/pmic.c b/cmd/pmic.c
index e46d813a70..2400bfb601 100644
--- a/cmd/pmic.c
+++ b/cmd/pmic.c
@@ -95,7 +95,7 @@ static int do_dump(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
for (reg = 0; reg < pmic_reg_count(dev); reg++) {
ret = pmic_reg_read(dev, reg);
- if (ret < 0) {
+ if (ret < 0 && ret != -ENODATA) {
printf("Can't read register: %d\n", reg);
return failure(ret);
}
@@ -103,7 +103,15 @@ static int do_dump(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
if (!(reg % 16))
printf("\n0x%02x: ", reg);
- printf(fmt, ret);
+ if (ret == -ENODATA) {
+ int i;
+
+ for (i = 0; i < priv->trans_len; i++)
+ puts("--");
+ puts(" ");
+ } else {
+ printf(fmt, ret);
+ }
}
printf("\n");