xilinx: cmd: Add support for FRU commands
[platform/kernel/u-boot.git] / board / xilinx / common / fru.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * (C) Copyright 2019 - 2020 Xilinx, Inc.
4  */
5
6 #include <common.h>
7 #include <command.h>
8 #include <fdtdec.h>
9 #include <malloc.h>
10
11 #include "fru.h"
12
13 static int do_fru_capture(struct cmd_tbl *cmdtp, int flag, int argc,
14                           char *const argv[])
15 {
16         unsigned long addr;
17         char *endp;
18
19         if (argc < cmdtp->maxargs)
20                 return CMD_RET_USAGE;
21
22         addr = simple_strtoul(argv[2], &endp, 16);
23         if (*argv[1] == 0 || *endp != 0)
24                 return -1;
25
26         return fru_capture(addr);
27 }
28
29 static int do_fru_display(struct cmd_tbl *cmdtp, int flag, int argc,
30                           char *const argv[])
31 {
32         fru_display(1);
33         return CMD_RET_SUCCESS;
34 }
35
36 static struct cmd_tbl cmd_fru_sub[] = {
37         U_BOOT_CMD_MKENT(capture, 3, 0, do_fru_capture, "", ""),
38         U_BOOT_CMD_MKENT(display, 2, 0, do_fru_display, "", ""),
39 };
40
41 static int do_fru(struct cmd_tbl *cmdtp, int flag, int argc,
42                   char *const argv[])
43 {
44         struct cmd_tbl *c;
45         int ret;
46
47         if (argc < 2)
48                 return CMD_RET_USAGE;
49
50         c = find_cmd_tbl(argv[1], &cmd_fru_sub[0],
51                          ARRAY_SIZE(cmd_fru_sub));
52         if (!c)
53                 return CMD_RET_USAGE;
54
55         ret = c->cmd(c, flag, argc, argv);
56
57         return cmd_process_error(c, ret);
58 }
59
60 /***************************************************/
61 #ifdef CONFIG_SYS_LONGHELP
62 static char fru_help_text[] =
63         "capture <addr> - Parse and capture FRU table present at address.\n"
64         "fru display - Displays content of FRU table that was captured using\n"
65         "              fru capture command\n"
66         ;
67 #endif
68
69 U_BOOT_CMD(
70         fru, 3, 1, do_fru,
71         "FRU table info",
72         fru_help_text
73 )