]>
Commit | Line | Data |
---|---|---|
83d290c5 | 1 | // SPDX-License-Identifier: GPL-2.0+ |
06811959 SG |
2 | /* |
3 | * Copyright (c) 2013 Google, Inc | |
4 | * | |
5 | * (C) Copyright 2012 | |
6 | * Marek Vasut <[email protected]> | |
06811959 SG |
7 | */ |
8 | ||
cbb2df20 | 9 | #include <command.h> |
2cb4ddb9 | 10 | #include <dm/root.h> |
304fbef1 | 11 | #include <dm/util.h> |
a56642c7 | 12 | |
dee2f5ae SG |
13 | static int do_dm_dump_driver_compat(struct cmd_tbl *cmdtp, int flag, int argc, |
14 | char * const argv[]) | |
06811959 | 15 | { |
dee2f5ae | 16 | dm_dump_driver_compat(); |
06811959 SG |
17 | |
18 | return 0; | |
19 | } | |
20 | ||
09140113 SG |
21 | static int do_dm_dump_devres(struct cmd_tbl *cmdtp, int flag, int argc, |
22 | char *const argv[]) | |
40b6f2d0 MY |
23 | { |
24 | dm_dump_devres(); | |
25 | ||
26 | return 0; | |
27 | } | |
28 | ||
09140113 SG |
29 | static int do_dm_dump_drivers(struct cmd_tbl *cmdtp, int flag, int argc, |
30 | char *const argv[]) | |
7b9d60fc SA |
31 | { |
32 | dm_dump_drivers(); | |
33 | ||
34 | return 0; | |
35 | } | |
36 | ||
2cb4ddb9 SG |
37 | #if CONFIG_IS_ENABLED(DM_STATS) |
38 | static int do_dm_dump_mem(struct cmd_tbl *cmdtp, int flag, int argc, | |
39 | char *const argv[]) | |
40 | { | |
41 | struct dm_stats mem; | |
42 | ||
43 | dm_get_mem(&mem); | |
44 | dm_dump_mem(&mem); | |
45 | ||
46 | return 0; | |
47 | } | |
48 | #endif /* DM_STATS */ | |
49 | ||
dee2f5ae SG |
50 | static int do_dm_dump_static_driver_info(struct cmd_tbl *cmdtp, int flag, |
51 | int argc, char * const argv[]) | |
2e488368 | 52 | { |
dee2f5ae | 53 | dm_dump_static_driver_info(); |
2e488368 NF |
54 | |
55 | return 0; | |
56 | } | |
57 | ||
dee2f5ae SG |
58 | static int do_dm_dump_tree(struct cmd_tbl *cmdtp, int flag, int argc, |
59 | char *const argv[]) | |
2e488368 | 60 | { |
36e45f69 AT |
61 | bool extended = false, sort = false; |
62 | char *device = NULL; | |
63 | ||
64 | for (; argc > 1; argc--, argv++) { | |
65 | if (argv[1][0] != '-') | |
66 | break; | |
67 | ||
68 | if (!strcmp(argv[1], "-e")) { | |
69 | extended = true; | |
70 | } else if (!strcmp(argv[1], "-s")) { | |
71 | sort = true; | |
72 | } else { | |
73 | printf("Unknown parameter: %s\n", argv[1]); | |
74 | return 0; | |
75 | } | |
76 | } | |
77 | if (argc > 1) | |
78 | device = argv[1]; | |
79 | ||
80 | dm_dump_tree(device, extended, sort); | |
dee2f5ae SG |
81 | |
82 | return 0; | |
83 | } | |
84 | ||
85 | static int do_dm_dump_uclass(struct cmd_tbl *cmdtp, int flag, int argc, | |
86 | char *const argv[]) | |
87 | { | |
36e45f69 AT |
88 | bool extended = false; |
89 | char *uclass = NULL; | |
90 | ||
91 | if (argc > 1) { | |
92 | if (!strcmp(argv[1], "-e")) { | |
93 | extended = true; | |
94 | argc--; | |
95 | argv++; | |
96 | } | |
97 | if (argc > 1) | |
98 | uclass = argv[1]; | |
99 | } | |
100 | ||
101 | dm_dump_uclass(uclass, extended); | |
2e488368 NF |
102 | |
103 | return 0; | |
104 | } | |
105 | ||
2cb4ddb9 SG |
106 | #if CONFIG_IS_ENABLED(DM_STATS) |
107 | #define DM_MEM_HELP "dm mem Provide a summary of memory usage\n" | |
108 | #define DM_MEM U_BOOT_SUBCMD_MKENT(mem, 1, 1, do_dm_dump_mem), | |
109 | #else | |
110 | #define DM_MEM_HELP | |
111 | #define DM_MEM | |
112 | #endif | |
113 | ||
3616218b | 114 | U_BOOT_LONGHELP(dm, |
dee2f5ae | 115 | "compat Dump list of drivers with compatibility strings\n" |
7b9d60fc | 116 | "dm devres Dump list of device resources for each device\n" |
2e488368 | 117 | "dm drivers Dump list of drivers with uclass and instances\n" |
2cb4ddb9 | 118 | DM_MEM_HELP |
dee2f5ae | 119 | "dm static Dump list of drivers with static platform data\n" |
36e45f69 | 120 | "dm tree [-s][-e][name] Dump tree of driver model devices (-s=sort)\n" |
3616218b | 121 | "dm uclass [-e][name] Dump list of instances for each uclass"); |
7f0836a1 OP |
122 | |
123 | U_BOOT_CMD_WITH_SUBCMDS(dm, "Driver model low level access", dm_help_text, | |
dee2f5ae | 124 | U_BOOT_SUBCMD_MKENT(compat, 1, 1, do_dm_dump_driver_compat), |
7f0836a1 OP |
125 | U_BOOT_SUBCMD_MKENT(devres, 1, 1, do_dm_dump_devres), |
126 | U_BOOT_SUBCMD_MKENT(drivers, 1, 1, do_dm_dump_drivers), | |
2cb4ddb9 | 127 | DM_MEM |
dee2f5ae | 128 | U_BOOT_SUBCMD_MKENT(static, 1, 1, do_dm_dump_static_driver_info), |
36e45f69 AT |
129 | U_BOOT_SUBCMD_MKENT(tree, 4, 1, do_dm_dump_tree), |
130 | U_BOOT_SUBCMD_MKENT(uclass, 3, 1, do_dm_dump_uclass)); |