diff options
author | Martin Fuzzey <martin.fuzzey@flowbird.group> | 2020-01-14 15:56:18 +0000 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-01-27 19:54:20 -0500 |
commit | b852cca8f0d863bd31ae72c5a5f241da73b8745f (patch) | |
tree | 8714a55ade4b47f4f80c15003cbfb5f5c50ca178 | |
parent | 7ae22d8479c9e832c0a9a18de705553535a1a9f6 (diff) | |
download | u-boot-b852cca8f0d863bd31ae72c5a5f241da73b8745f.zip u-boot-b852cca8f0d863bd31ae72c5a5f241da73b8745f.tar.gz u-boot-b852cca8f0d863bd31ae72c5a5f241da73b8745f.tar.bz2 |
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.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -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"); |