dm: pmic: Add 'reg status' to show all regulators
It is convenient to be able to see the status of all regulators in a list. Add this feature to the 'reg status' command. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
52db39a22b
commit
931b24c5a0
|
@ -180,18 +180,13 @@ static int do_info(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
return CMD_RET_SUCCESS;
|
return CMD_RET_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int do_status(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
static void do_status_detail(struct udevice *dev,
|
||||||
|
struct dm_regulator_uclass_platdata *uc_pdata)
|
||||||
{
|
{
|
||||||
struct dm_regulator_uclass_platdata *uc_pdata;
|
int current, value, mode;
|
||||||
int current, value, mode, ret;
|
const char *mode_name;
|
||||||
const char *mode_name = NULL;
|
|
||||||
struct udevice *dev;
|
|
||||||
bool enabled;
|
bool enabled;
|
||||||
|
|
||||||
ret = curr_dev_and_platdata(&dev, &uc_pdata, true);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
printf("Regulator %s status:\n", uc_pdata->name);
|
printf("Regulator %s status:\n", uc_pdata->name);
|
||||||
|
|
||||||
enabled = regulator_get_enable(dev);
|
enabled = regulator_get_enable(dev);
|
||||||
|
@ -206,6 +201,57 @@ static int do_status(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
mode = regulator_get_mode(dev);
|
mode = regulator_get_mode(dev);
|
||||||
mode_name = get_mode_name(uc_pdata->mode, uc_pdata->mode_count, mode);
|
mode_name = get_mode_name(uc_pdata->mode, uc_pdata->mode_count, mode);
|
||||||
constraint(" * mode id:", mode, mode_name);
|
constraint(" * mode id:", mode, mode_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void do_status_line(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct dm_regulator_uclass_platdata *pdata;
|
||||||
|
int current, value, mode;
|
||||||
|
const char *mode_name;
|
||||||
|
bool enabled;
|
||||||
|
|
||||||
|
pdata = dev_get_uclass_platdata(dev);
|
||||||
|
enabled = regulator_get_enable(dev);
|
||||||
|
value = regulator_get_value(dev);
|
||||||
|
current = regulator_get_current(dev);
|
||||||
|
mode = regulator_get_mode(dev);
|
||||||
|
mode_name = get_mode_name(pdata->mode, pdata->mode_count, mode);
|
||||||
|
printf("%-20s %-10s ", pdata->name, enabled ? "enabled" : "disabled");
|
||||||
|
if (value >= 0)
|
||||||
|
printf("%10d ", value);
|
||||||
|
else
|
||||||
|
printf("%10s ", "-");
|
||||||
|
if (current >= 0)
|
||||||
|
printf("%10d ", current);
|
||||||
|
else
|
||||||
|
printf("%10s ", "-");
|
||||||
|
if (mode >= 0)
|
||||||
|
printf("%-10s", mode_name);
|
||||||
|
else
|
||||||
|
printf("%-10s", "-");
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
static int do_status(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
|
{
|
||||||
|
struct dm_regulator_uclass_platdata *uc_pdata;
|
||||||
|
struct udevice *dev;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (currdev && (argc < 2 || strcmp(argv[1], "-a"))) {
|
||||||
|
ret = curr_dev_and_platdata(&dev, &uc_pdata, true);
|
||||||
|
if (ret)
|
||||||
|
return CMD_RET_FAILURE;
|
||||||
|
do_status_detail(dev, uc_pdata);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Show all of them in a list, probing them as needed */
|
||||||
|
printf("%-20s %-10s %10s %10s %-10s\n", "Name", "Enabled", "uV", "mA",
|
||||||
|
"Mode");
|
||||||
|
for (ret = uclass_first_device(UCLASS_REGULATOR, &dev); dev;
|
||||||
|
ret = uclass_next_device(&dev))
|
||||||
|
do_status_line(dev);
|
||||||
|
|
||||||
return CMD_RET_SUCCESS;
|
return CMD_RET_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -400,7 +446,7 @@ U_BOOT_CMD(regulator, CONFIG_SYS_MAXARGS, 1, do_regulator,
|
||||||
"list - list UCLASS regulator devices\n"
|
"list - list UCLASS regulator devices\n"
|
||||||
"regulator dev [regulator-name] - show/[set] operating regulator device\n"
|
"regulator dev [regulator-name] - show/[set] operating regulator device\n"
|
||||||
"regulator info - print constraints info\n"
|
"regulator info - print constraints info\n"
|
||||||
"regulator status - print operating status\n"
|
"regulator status [-a] - print operating status [for all]\n"
|
||||||
"regulator value [val] [-f] - print/[set] voltage value [uV] (force)\n"
|
"regulator value [val] [-f] - print/[set] voltage value [uV] (force)\n"
|
||||||
"regulator current [val] - print/[set] current value [uA]\n"
|
"regulator current [val] - print/[set] current value [uA]\n"
|
||||||
"regulator mode [id] - print/[set] operating mode id\n"
|
"regulator mode [id] - print/[set] operating mode id\n"
|
||||||
|
|
Loading…
Reference in New Issue