|
@@ -180,18 +180,13 @@ static int do_info(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
|
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, ret;
|
|
|
- const char *mode_name = NULL;
|
|
|
- struct udevice *dev;
|
|
|
+ int current, value, mode;
|
|
|
+ const char *mode_name;
|
|
|
bool enabled;
|
|
|
|
|
|
- ret = curr_dev_and_platdata(&dev, &uc_pdata, true);
|
|
|
- if (ret)
|
|
|
- return ret;
|
|
|
-
|
|
|
printf("Regulator %s status:\n", uc_pdata->name);
|
|
|
|
|
|
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_name = get_mode_name(uc_pdata->mode, uc_pdata->mode_count, mode);
|
|
|
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;
|
|
|
}
|
|
@@ -400,7 +446,7 @@ U_BOOT_CMD(regulator, CONFIG_SYS_MAXARGS, 1, do_regulator,
|
|
|
"list - list UCLASS regulator devices\n"
|
|
|
"regulator dev [regulator-name] - show/[set] operating regulator device\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 current [val] - print/[set] current value [uA]\n"
|
|
|
"regulator mode [id] - print/[set] operating mode id\n"
|