// SPDX-License-Identifier: GPL-2.0+ /* * (C) Copyright 2020 * Niel Fourie, DENX Software Engineering, lusus@denx.de. */ #include #include #include #include static int do_lsblk(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[]) { struct driver *d = ll_entry_start(struct driver, driver); const int n_ents = ll_entry_count(struct driver, driver); struct driver *entry; struct udevice *udev; struct uclass *uc; struct blk_desc *desc; int ret, i; ret = uclass_get(UCLASS_BLK, &uc); if (ret) { puts("Could not get BLK uclass.\n"); return CMD_RET_FAILURE; } puts("Block Driver Devices\n"); puts("-----------------------------\n"); for (entry = d; entry < d + n_ents; entry++) { if (entry->id != UCLASS_BLK) continue; i = 0; printf("%-20.20s", entry->name); uclass_foreach_dev(udev, uc) { if (udev->driver != entry) continue; desc = dev_get_uclass_plat(udev); printf("%c %s %u", i ? ',' : ':', blk_get_if_type_name(desc->if_type), desc->devnum); i++; } if (!i) puts(": "); puts("\n"); } return CMD_RET_SUCCESS; } U_BOOT_CMD(lsblk, 1, 0, do_lsblk, "list block drivers and devices", "- display list of block device drivers and attached block devices" );