"Das U-Boot" Source Tree
at master 53 lines 1.5 kB view raw
1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * Copyright (C) 2018, Tuomas Tynkkynen <tuomas.tynkkynen@iki.fi> 4 * Copyright (C) 2018, Bin Meng <bmeng.cn@gmail.com> 5 */ 6 7#include <blk.h> 8#include <command.h> 9#include <dm.h> 10#include <virtio_types.h> 11#include <virtio.h> 12 13static int virtio_curr_dev; 14 15static int do_virtio(struct cmd_tbl *cmdtp, int flag, int argc, 16 char *const argv[]) 17{ 18 if (argc == 2 && !strcmp(argv[1], "scan")) { 19 /* 20 * make sure all virtio devices are enumerated. 21 * Do the same as virtio_init(), but also call 22 * device_probe() for children (i.e. virtio devices) 23 */ 24 struct udevice *bus, *child; 25 26 uclass_first_device(UCLASS_VIRTIO, &bus); 27 if (!bus) 28 return CMD_RET_FAILURE; 29 30 while (bus) { 31 device_foreach_child_probe(child, bus) 32 ; 33 uclass_next_device(&bus); 34 } 35 36 return CMD_RET_SUCCESS; 37 } 38 39 return blk_common_cmd(argc, argv, UCLASS_VIRTIO, &virtio_curr_dev); 40} 41 42U_BOOT_CMD( 43 virtio, 8, 1, do_virtio, 44 "virtio block devices sub-system", 45 "scan - initialize virtio bus\n" 46 "virtio info - show all available virtio block devices\n" 47 "virtio device [dev] - show or set current virtio block device\n" 48 "virtio part [dev] - print partition table of one or all virtio block devices\n" 49 "virtio read addr blk# cnt - read `cnt' blocks starting at block\n" 50 " `blk#' to memory address `addr'\n" 51 "virtio write addr blk# cnt - write `cnt' blocks starting at block\n" 52 " `blk#' from memory address `addr'" 53);