提交 7b9d60fc 编写于 作者: S Sean Anderson 提交者: Simon Glass

cmd: Add command to dump drivers and compatible strings

This adds a subcommand to dm to dump out what drivers are installed, and their
compatible strings. I have found this useful in ensuring that I have the correct
drivers compiled, and that I have put in the correct compatible strings.

Signed-off-by Sean Anderson <seanga2@gmail.com>
Reviewed-by: NSimon Glass <sjg@chromium.org>
上级 2f7c53cb
......@@ -40,10 +40,19 @@ static int do_dm_dump_devres(cmd_tbl_t *cmdtp, int flag, int argc,
return 0;
}
static int do_dm_dump_drivers(cmd_tbl_t *cmdtp, int flag, int argc,
char * const argv[])
{
dm_dump_drivers();
return 0;
}
static cmd_tbl_t test_commands[] = {
U_BOOT_CMD_MKENT(tree, 0, 1, do_dm_dump_all, "", ""),
U_BOOT_CMD_MKENT(uclass, 1, 1, do_dm_dump_uclass, "", ""),
U_BOOT_CMD_MKENT(devres, 1, 1, do_dm_dump_devres, "", ""),
U_BOOT_CMD_MKENT(drivers, 1, 1, do_dm_dump_drivers, "", ""),
};
static __maybe_unused void dm_reloc(void)
......@@ -84,5 +93,6 @@ U_BOOT_CMD(
"Driver model low level access",
"tree Dump driver model tree ('*' = activated)\n"
"dm uclass Dump list of instances for each uclass\n"
"dm devres Dump list of device resources for each device"
"dm devres Dump list of device resources for each device\n"
"dm drivers Dump list of drivers and their compatible strings\n"
);
......@@ -96,3 +96,22 @@ void dm_dump_uclass(void)
puts("\n");
}
}
void dm_dump_drivers(void)
{
struct driver *d = ll_entry_start(struct driver, driver);
const int n_ents = ll_entry_count(struct driver, driver);
struct driver *entry;
const struct udevice_id *match;
puts("Driver Compatible\n");
puts("--------------------------------\n");
for (entry = d; entry < d + n_ents; entry++) {
for (match = entry->of_match; match->compatible; match++)
printf("%-20.20s %s\n",
match == entry->of_match ? entry->name : "",
match->compatible);
if (match == entry->of_match)
printf("%-20.20s\n", entry->name);
}
}
......@@ -39,6 +39,9 @@ static inline void dm_dump_devres(void)
}
#endif
/* Dump out a list of drivers */
void dm_dump_drivers(void);
/**
* Check if an of node should be or was bound before relocation.
*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册