X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=cmd%2Fpmic.c;h=3bda0534a36c05baedd38f5647e796c84d4e6649;hb=HEAD;hp=7bf23fb2a9f85e67837407871ede5e148d7f89cf;hpb=ab21ecef7a38dd211fe6db35c6e60800445eb6a2;p=oweals%2Fu-boot.git diff --git a/cmd/pmic.c b/cmd/pmic.c index 7bf23fb2a9..3bda0534a3 100644 --- a/cmd/pmic.c +++ b/cmd/pmic.c @@ -1,10 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * Copyright (C) 2014-2015 Samsung Electronics * Przemyslaw Marczak - * - * SPDX-License-Identifier: GPL-2.0+ */ #include +#include #include #include #include @@ -22,7 +22,7 @@ static int failure(int ret) return CMD_RET_FAILURE; } -static int do_dev(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +static int do_dev(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { char *name; int ret = -ENODEV; @@ -47,7 +47,8 @@ static int do_dev(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return CMD_RET_SUCCESS; } -static int do_list(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +static int do_list(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) { struct udevice *dev; int ret; @@ -74,10 +75,12 @@ static int do_list(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return CMD_RET_SUCCESS; } -static int do_dump(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +static int do_dump(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) { + struct uc_pmic_priv *priv; struct udevice *dev; - uint8_t value; + char fmt[16]; uint reg; int ret; @@ -87,12 +90,15 @@ static int do_dump(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) } dev = currdev; - + priv = dev_get_uclass_priv(dev); printf("Dump pmic: %s registers\n", dev->name); + sprintf(fmt, "%%%d.%dx ", priv->trans_len * 2, + priv->trans_len * 2); + for (reg = 0; reg < pmic_reg_count(dev); reg++) { - ret = pmic_read(dev, reg, &value, 1); - if (ret) { + ret = pmic_reg_read(dev, reg); + if (ret < 0 && ret != -ENODATA) { printf("Can't read register: %d\n", reg); return failure(ret); } @@ -100,18 +106,28 @@ static int do_dump(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (!(reg % 16)) printf("\n0x%02x: ", reg); - printf("%2.2x ", value); + if (ret == -ENODATA) { + int i; + + for (i = 0; i < priv->trans_len; i++) + puts("--"); + puts(" "); + } else { + printf(fmt, ret); + } } printf("\n"); return CMD_RET_SUCCESS; } -static int do_read(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +static int do_read(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) { + struct uc_pmic_priv *priv; struct udevice *dev; int regs, ret; - uint8_t value; + char fmt[24]; uint reg; if (!currdev) { @@ -120,6 +136,7 @@ static int do_read(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) } dev = currdev; + priv = dev_get_uclass_priv(dev); if (argc != 2) return CMD_RET_USAGE; @@ -131,23 +148,25 @@ static int do_read(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return failure(-EFAULT); } - ret = pmic_read(dev, reg, &value, 1); - if (ret) { + ret = pmic_reg_read(dev, reg); + if (ret < 0) { printf("Can't read PMIC register: %d!\n", reg); return failure(ret); } - printf("0x%02x: 0x%2.2x\n", reg, value); + sprintf(fmt, "0x%%02x: 0x%%%d.%dx\n", priv->trans_len * 2, + priv->trans_len * 2); + printf(fmt, reg, ret); return CMD_RET_SUCCESS; } -static int do_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +static int do_write(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) { struct udevice *dev; + uint reg, value; int regs, ret; - uint8_t value; - uint reg; if (!currdev) { printf("First, set the PMIC device!\n"); @@ -168,7 +187,7 @@ static int do_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) value = simple_strtoul(argv[2], NULL, 0); - ret = pmic_write(dev, reg, &value, 1); + ret = pmic_reg_write(dev, reg, value); if (ret) { printf("Can't write PMIC register: %d!\n", reg); return failure(ret); @@ -177,7 +196,7 @@ static int do_write(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return CMD_RET_SUCCESS; } -static cmd_tbl_t subcmd[] = { +static struct cmd_tbl subcmd[] = { U_BOOT_CMD_MKENT(dev, 2, 1, do_dev, "", ""), U_BOOT_CMD_MKENT(list, 1, 1, do_list, "", ""), U_BOOT_CMD_MKENT(dump, 1, 1, do_dump, "", ""), @@ -185,10 +204,10 @@ static cmd_tbl_t subcmd[] = { U_BOOT_CMD_MKENT(write, 3, 1, do_write, "", ""), }; -static int do_pmic(cmd_tbl_t *cmdtp, int flag, int argc, - char * const argv[]) +static int do_pmic(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) { - cmd_tbl_t *cmd; + struct cmd_tbl *cmd; argc--; argv++;