xref: /rk3399_rockchip-uboot/cmd/rksfc.c (revision d5f538dc02e53c7267fcd4a914104071fca889b5)
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