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: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
2f7c53cbd3
commit
7b9d60fc1f
12
cmd/dm.c
12
cmd/dm.c
@ -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.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user