[Feature]add MT2731_MP2_MR2_SVN388 baseline version

Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/src/bsp/lk/lib/ffs/cmd.c b/src/bsp/lk/lib/ffs/cmd.c
new file mode 100644
index 0000000..be73a34
--- /dev/null
+++ b/src/bsp/lk/lib/ffs/cmd.c
@@ -0,0 +1,114 @@
+#include <stdio.h>
+#include <string.h>
+
+#include "ff.h"
+#include <ffs.h>
+
+#if defined(WITH_LIB_CONSOLE)
+#include <lib/console.h>
+
+static int ffs_cmd(int argc, const cmd_args *argv)
+{
+	FRESULT res;
+
+	if (argc < 2) {
+		printf("ffs commands:\n");
+usage:
+	//	printf("%s mount <volume>\n", argv[0].str);
+		printf("%s mkfs <volume>\n", argv[0].str);
+		printf("%s mkdir <path>\n", argv[0].str);
+		printf("%s touch <path>\n", argv[0].str);
+
+		goto out;
+	}
+
+#if 0
+	if (!strcmp(argv[1].str, "mount")) {
+		if (argc < 3)
+			goto usage;
+
+		if (argv[2].u >= countof(ffs_work)) {
+			printf("Error: unsupported volume %u\n", argv[2].u);
+			goto out;
+		}
+
+		res = f_mount(argv[2].u, &ffs_work[argv[2].u]);
+		if (res != FR_OK)
+			printf("Error: %d\n", res);
+	} else
+#endif
+	if (!strcmp(argv[1].str, "mkfs")) {
+		if (argc < 3)
+			goto usage;
+
+		res = f_mkfs(argv[2].u, 1, 0);
+		if (res != FR_OK)
+			printf("Error: %d\n", res);
+	} else if (!strcmp(argv[1].str, "mkdir")) {
+		if (argc < 3)
+			goto usage;
+
+		res = f_mkdir(argv[2].str);
+		if (res != FR_OK)
+			printf("Error: %d\n", res);
+	} else if (!strcmp(argv[1].str, "touch")) {
+		FIL fil;
+
+		if (argc < 3)
+			goto usage;
+
+		res = f_open(&fil, argv[2].str, FA_OPEN_ALWAYS);
+		if (res != FR_OK)
+			printf("Error: %d\n", res);
+		else
+			f_close(&fil);
+	} else if (!strcmp(argv[1].str, "ls")) {
+		FILINFO fno;
+		DIR dir;
+		char lfn[_MAX_LFN + 1];
+		fno.lfname = lfn;
+		fno.lfsize = sizeof(lfn);
+		const char *path;
+		char *fn;
+		char wattr;
+
+		if (argc < 3)
+			path = "/";
+		else
+			path = argv[2].str;
+
+		res = f_opendir(&dir, path);
+		if (res != FR_OK) {
+			printf("Error: %d\n", res);
+			goto out;
+		}
+
+		while (1) {
+			res = f_readdir(&dir, &fno);
+			if (res != FR_OK || fno.fname[0] == 0)
+				break;
+
+			fn = *fno.lfname ? fno.lfname : fno.fname;
+			wattr = fno.fattrib & AM_RDO ? '-' : 'w';
+
+			if (fno.fattrib & AM_DIR)
+				printf("dr%cxr%cxr%cx %10lu %s\n", wattr, wattr, wattr, fno.fsize, fn);
+			else
+				printf(" r%c-r%c-r%c- %10lu %s\n", wattr, wattr, wattr, fno.fsize, fn);
+		}
+
+		if (res != FR_OK)
+			printf("Error: %d\n", res);
+	}
+
+out:
+	return 0;
+}
+
+STATIC_COMMAND_START
+STATIC_COMMAND("ffs", "ffs toolbox", &ffs_cmd)
+STATIC_COMMAND_END(ffscommands);
+
+
+#endif
+