1*d5f538dcSDingqiang Lin /* 2*d5f538dcSDingqiang Lin * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd 3*d5f538dcSDingqiang Lin * 4*d5f538dcSDingqiang Lin * SPDX-License-Identifier: (GPL-2.0+ OR MIT) 5*d5f538dcSDingqiang Lin */ 6*d5f538dcSDingqiang Lin 7*d5f538dcSDingqiang Lin #include <common.h> 8*d5f538dcSDingqiang Lin #include <command.h> 9*d5f538dcSDingqiang Lin #include <dm.h> 10*d5f538dcSDingqiang Lin #include <rksfc.h> 11*d5f538dcSDingqiang Lin 12*d5f538dcSDingqiang Lin static int rksfc_curr_dev; 13*d5f538dcSDingqiang Lin static int do_rksfc(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 14*d5f538dcSDingqiang Lin { 15*d5f538dcSDingqiang Lin int ret; 16*d5f538dcSDingqiang Lin 17*d5f538dcSDingqiang Lin if (argc == 2) { 18*d5f538dcSDingqiang Lin if (strncmp(argv[1], "scan", 4) == 0) { 19*d5f538dcSDingqiang Lin ret = rksfc_scan_namespace(); 20*d5f538dcSDingqiang Lin if (ret) 21*d5f538dcSDingqiang Lin return CMD_RET_FAILURE; 22*d5f538dcSDingqiang Lin 23*d5f538dcSDingqiang Lin return ret; 24*d5f538dcSDingqiang Lin } 25*d5f538dcSDingqiang Lin } 26*d5f538dcSDingqiang Lin 27*d5f538dcSDingqiang Lin return blk_common_cmd(argc, argv, IF_TYPE_RKSFC, &rksfc_curr_dev); 28*d5f538dcSDingqiang Lin } 29*d5f538dcSDingqiang Lin 30*d5f538dcSDingqiang Lin U_BOOT_CMD( 31*d5f538dcSDingqiang Lin rksfc, 8, 1, do_rksfc, 32*d5f538dcSDingqiang Lin "rockchip sfc sub-system", 33*d5f538dcSDingqiang Lin "scan - scan Sfc devices\n" 34*d5f538dcSDingqiang Lin "rksfc info - show all available Sfc devices\n" 35*d5f538dcSDingqiang Lin "rksfc device [dev] - show or set current Sfc device\n" 36*d5f538dcSDingqiang Lin "rksfc part [dev] - print partition table of one or all Sfc devices\n" 37*d5f538dcSDingqiang Lin "rksfc read addr blk# cnt - read `cnt' blocks starting at block\n" 38*d5f538dcSDingqiang Lin " `blk#' to memory address `addr'\n" 39*d5f538dcSDingqiang Lin "rksfc write addr blk# cnt - write `cnt' blocks starting at block\n" 40*d5f538dcSDingqiang Lin " `blk#' from memory address `addr'" 41*d5f538dcSDingqiang Lin ); 42