pmc.c 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Intel PMC command
  4. *
  5. * Copyright 2019 Google LLC
  6. */
  7. #include <common.h>
  8. #include <command.h>
  9. #include <dm.h>
  10. #include <power/acpi_pmc.h>
  11. static int get_pmc_dev(struct udevice **devp)
  12. {
  13. struct udevice *dev;
  14. int ret;
  15. ret = uclass_first_device_err(UCLASS_ACPI_PMC, &dev);
  16. if (ret) {
  17. printf("Could not find device (err=%d)\n", ret);
  18. return ret;
  19. }
  20. ret = pmc_init(dev);
  21. if (ret) {
  22. printf("Could not init device (err=%d)\n", ret);
  23. return ret;
  24. }
  25. *devp = dev;
  26. return 0;
  27. }
  28. static int do_pmc_init(struct cmd_tbl *cmdtp, int flag, int argc,
  29. char *const argv[])
  30. {
  31. struct udevice *dev;
  32. int ret;
  33. ret = get_pmc_dev(&dev);
  34. if (ret)
  35. return CMD_RET_FAILURE;
  36. return 0;
  37. }
  38. static int do_pmc_info(struct cmd_tbl *cmdtp, int flag, int argc,
  39. char *const argv[])
  40. {
  41. struct udevice *dev;
  42. int ret;
  43. ret = get_pmc_dev(&dev);
  44. if (ret)
  45. return CMD_RET_FAILURE;
  46. pmc_dump_info(dev);
  47. return 0;
  48. }
  49. static struct cmd_tbl cmd_pmc_sub[] = {
  50. U_BOOT_CMD_MKENT(init, 0, 1, do_pmc_init, "", ""),
  51. U_BOOT_CMD_MKENT(info, 0, 1, do_pmc_info, "", ""),
  52. };
  53. static int do_pmc(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
  54. {
  55. const struct cmd_tbl *cp;
  56. if (argc < 2) /* no subcommand */
  57. return cmd_usage(cmdtp);
  58. cp = find_cmd_tbl(argv[1], &cmd_pmc_sub[0], ARRAY_SIZE(cmd_pmc_sub));
  59. if (!cp)
  60. return CMD_RET_USAGE;
  61. return cp->cmd(cmdtp, flag, argc, argv);
  62. }
  63. U_BOOT_CMD(
  64. pmc, 2, 1, do_pmc, "Power-management controller info",
  65. "info - read state and show info about the PMC\n"
  66. "pmc init - read state from the PMC\n"
  67. );