diff options
Diffstat (limited to 'common/cmd_fat.c')
| -rw-r--r-- | common/cmd_fat.c | 88 | 
1 files changed, 10 insertions, 78 deletions
| diff --git a/common/cmd_fat.c b/common/cmd_fat.c index 5a5698b05..86be04472 100644 --- a/common/cmd_fat.c +++ b/common/cmd_fat.c @@ -31,54 +31,11 @@  #include <ata.h>  #include <part.h>  #include <fat.h> - +#include <fs.h>  int do_fat_fsload (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  { -	long size; -	unsigned long offset; -	unsigned long count = 0; -	unsigned long pos = 0; -	char buf [12]; -	block_dev_desc_t *dev_desc=NULL; -	disk_partition_t info; -	int part, dev; - -	if (argc < 5) { -		printf("usage: fatload <interface> [<dev[:part]>] " -			"<addr> <filename> [bytes [pos]]\n"); -		return 1; -	} - -	part = get_device_and_partition(argv[1], argv[2], &dev_desc, &info, 1); -	if (part < 0) -		return 1; - -	dev = dev_desc->dev; -	if (fat_register_device(dev_desc,part)!=0) { -		printf("\n** Unable to use %s %d:%d for fatload **\n", -			argv[1], dev, part); -		return 1; -	} -	offset = simple_strtoul(argv[3], NULL, 16); -	if (argc >= 6) -		count = simple_strtoul(argv[5], NULL, 16); -	if (argc >= 7) -		pos = simple_strtoul(argv[6], NULL, 16); -	size = file_fat_read_at(argv[4], pos, (unsigned char *)offset, count); - -	if(size==-1) { -		printf("\n** Unable to read \"%s\" from %s %d:%d **\n", -			argv[4], argv[1], dev, part); -		return 1; -	} - -	printf("\n%ld bytes read\n", size); - -	sprintf(buf, "%lX", size); -	setenv("filesize", buf); - -	return 0; +	return do_load(cmdtp, flag, argc, argv, FS_TYPE_FAT, 16);  } @@ -91,39 +48,13 @@ U_BOOT_CMD(  	"      'pos' gives the file position to start loading from.\n"  	"      If 'pos' is omitted, 0 is used. 'pos' requires 'bytes'.\n"  	"      'bytes' gives the size to load. If 'bytes' is 0 or omitted,\n" -	"      the load stops on end of file." +	"      the load stops on end of file.\n" +	"      All numeric parameters are assumed to be hex."  ); -int do_fat_ls (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +static int do_fat_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  { -	char *filename = "/"; -	int ret, dev, part; -	block_dev_desc_t *dev_desc=NULL; -	disk_partition_t info; - -	if (argc < 2) { -		printf("usage: fatls <interface> [<dev[:part]>] [directory]\n"); -		return 0; -	} - -	part = get_device_and_partition(argv[1], argv[2], &dev_desc, &info, 1); -	if (part < 0) -		return 1; - -	dev = dev_desc->dev; -	if (fat_register_device(dev_desc,part)!=0) { -		printf("\n** Unable to use %s %d:%d for fatls **\n", -			argv[1], dev, part); -		return 1; -	} -	if (argc == 4) -		ret = file_fat_ls(argv[3]); -	else -		ret = file_fat_ls(filename); - -	if(ret!=0) -		printf("No Fat FS detected\n"); -	return ret; +	return do_ls(cmdtp, flag, argc, argv, FS_TYPE_FAT);  }  U_BOOT_CMD( @@ -133,7 +64,8 @@ U_BOOT_CMD(  	"    - list files from 'dev' on 'interface' in a 'directory'"  ); -int do_fat_fsinfo (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +static int do_fat_fsinfo(cmd_tbl_t *cmdtp, int flag, int argc, +			 char * const argv[])  {  	int dev, part;  	block_dev_desc_t *dev_desc; @@ -149,7 +81,7 @@ int do_fat_fsinfo (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  		return 1;  	dev = dev_desc->dev; -	if (fat_register_device(dev_desc,part)!=0) { +	if (fat_set_blk_dev(dev_desc, &info) != 0) {  		printf("\n** Unable to use %s %d:%d for fatinfo **\n",  			argv[1], dev, part);  		return 1; @@ -185,7 +117,7 @@ static int do_fat_fswrite(cmd_tbl_t *cmdtp, int flag,  	dev = dev_desc->dev; -	if (fat_register_device(dev_desc, part) != 0) { +	if (fat_set_blk_dev(dev_desc, &info) != 0) {  		printf("\n** Unable to use %s %d:%d for fatwrite **\n",  			argv[1], dev, part);  		return 1; |