1 /* 2 * Copyright (C) 2017 NXP Semiconductors 3 * Copyright (C) 2017 Bin Meng <bmeng.cn@gmail.com> 4 * 5 * SPDX-License-Identifier: GPL-2.0+ 6 */ 7 8 #include <common.h> 9 #include <command.h> 10 #include <dm.h> 11 #include <nvme.h> 12 13 static int nvme_curr_dev; 14 15 static int do_nvme(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 16 { 17 int ret; 18 19 if (argc == 2) { 20 if (strncmp(argv[1], "scan", 4) == 0) { 21 ret = nvme_scan_namespace(); 22 if (ret) 23 return CMD_RET_FAILURE; 24 25 return ret; 26 } 27 if (strncmp(argv[1], "deta", 4) == 0) { 28 struct udevice *udev; 29 30 ret = blk_get_device(IF_TYPE_NVME, nvme_curr_dev, 31 &udev); 32 if (ret < 0) 33 return CMD_RET_FAILURE; 34 35 nvme_print_info(udev); 36 37 return ret; 38 } 39 } 40 41 return blk_common_cmd(argc, argv, IF_TYPE_NVME, &nvme_curr_dev); 42 } 43 44 U_BOOT_CMD( 45 nvme, 8, 1, do_nvme, 46 "NVM Express sub-system", 47 "scan - scan NVMe devices\n" 48 "nvme detail - show details of current NVMe device\n" 49 "nvme info - show all available NVMe devices\n" 50 "nvme device [dev] - show or set current NVMe device\n" 51 "nvme part [dev] - print partition table of one or all NVMe devices\n" 52 "nvme read addr blk# cnt - read `cnt' blocks starting at block\n" 53 " `blk#' to memory address `addr'\n" 54 "nvme write addr blk# cnt - write `cnt' blocks starting at block\n" 55 " `blk#' from memory address `addr'" 56 ); 57