mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-25 20:43:32 +00:00
83d290c56f
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
151 lines
3.7 KiB
C
151 lines
3.7 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* (C) Copyright 2002
|
|
* Richard Jones, rjones@nexus-tech.net
|
|
*/
|
|
|
|
/*
|
|
* Boot support
|
|
*/
|
|
#include <common.h>
|
|
#include <command.h>
|
|
#include <s_record.h>
|
|
#include <net.h>
|
|
#include <ata.h>
|
|
#include <asm/io.h>
|
|
#include <mapmem.h>
|
|
#include <part.h>
|
|
#include <fat.h>
|
|
#include <fs.h>
|
|
|
|
int do_fat_size(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
{
|
|
return do_size(cmdtp, flag, argc, argv, FS_TYPE_FAT);
|
|
}
|
|
|
|
U_BOOT_CMD(
|
|
fatsize, 4, 0, do_fat_size,
|
|
"determine a file's size",
|
|
"<interface> <dev[:part]> <filename>\n"
|
|
" - Find file 'filename' from 'dev' on 'interface'\n"
|
|
" and determine its size."
|
|
);
|
|
|
|
int do_fat_fsload (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
{
|
|
return do_load(cmdtp, flag, argc, argv, FS_TYPE_FAT);
|
|
}
|
|
|
|
|
|
U_BOOT_CMD(
|
|
fatload, 7, 0, do_fat_fsload,
|
|
"load binary file from a dos filesystem",
|
|
"<interface> [<dev[:part]> [<addr> [<filename> [bytes [pos]]]]]\n"
|
|
" - Load binary file 'filename' from 'dev' on 'interface'\n"
|
|
" to address 'addr' from dos filesystem.\n"
|
|
" '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.\n"
|
|
" If either 'pos' or 'bytes' are not aligned to\n"
|
|
" ARCH_DMA_MINALIGN then a misaligned buffer warning will\n"
|
|
" be printed and performance will suffer for the load."
|
|
);
|
|
|
|
static int do_fat_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
{
|
|
return do_ls(cmdtp, flag, argc, argv, FS_TYPE_FAT);
|
|
}
|
|
|
|
U_BOOT_CMD(
|
|
fatls, 4, 1, do_fat_ls,
|
|
"list files in a directory (default /)",
|
|
"<interface> [<dev[:part]>] [directory]\n"
|
|
" - list files from 'dev' on 'interface' in a 'directory'"
|
|
);
|
|
|
|
static int do_fat_fsinfo(cmd_tbl_t *cmdtp, int flag, int argc,
|
|
char * const argv[])
|
|
{
|
|
int dev, part;
|
|
struct blk_desc *dev_desc;
|
|
disk_partition_t info;
|
|
|
|
if (argc < 2) {
|
|
printf("usage: fatinfo <interface> [<dev[:part]>]\n");
|
|
return 0;
|
|
}
|
|
|
|
part = blk_get_device_part_str(argv[1], argv[2], &dev_desc, &info, 1);
|
|
if (part < 0)
|
|
return 1;
|
|
|
|
dev = dev_desc->devnum;
|
|
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;
|
|
}
|
|
return file_fat_detectfs();
|
|
}
|
|
|
|
U_BOOT_CMD(
|
|
fatinfo, 3, 1, do_fat_fsinfo,
|
|
"print information about filesystem",
|
|
"<interface> [<dev[:part]>]\n"
|
|
" - print information about filesystem from 'dev' on 'interface'"
|
|
);
|
|
|
|
#ifdef CONFIG_FAT_WRITE
|
|
static int do_fat_fswrite(cmd_tbl_t *cmdtp, int flag,
|
|
int argc, char * const argv[])
|
|
{
|
|
loff_t size;
|
|
int ret;
|
|
unsigned long addr;
|
|
unsigned long count;
|
|
struct blk_desc *dev_desc = NULL;
|
|
disk_partition_t info;
|
|
int dev = 0;
|
|
int part = 1;
|
|
void *buf;
|
|
|
|
if (argc < 5)
|
|
return cmd_usage(cmdtp);
|
|
|
|
part = blk_get_device_part_str(argv[1], argv[2], &dev_desc, &info, 1);
|
|
if (part < 0)
|
|
return 1;
|
|
|
|
dev = dev_desc->devnum;
|
|
|
|
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;
|
|
}
|
|
addr = simple_strtoul(argv[3], NULL, 16);
|
|
count = (argc <= 5) ? 0 : simple_strtoul(argv[5], NULL, 16);
|
|
|
|
buf = map_sysmem(addr, count);
|
|
ret = file_fat_write(argv[4], buf, 0, count, &size);
|
|
unmap_sysmem(buf);
|
|
if (ret < 0) {
|
|
printf("\n** Unable to write \"%s\" from %s %d:%d **\n",
|
|
argv[4], argv[1], dev, part);
|
|
return 1;
|
|
}
|
|
|
|
printf("%llu bytes written\n", size);
|
|
|
|
return 0;
|
|
}
|
|
|
|
U_BOOT_CMD(
|
|
fatwrite, 6, 0, do_fat_fswrite,
|
|
"write file into a dos filesystem",
|
|
"<interface> <dev[:part]> <addr> <filename> [<bytes>]\n"
|
|
" - write file 'filename' from the address 'addr' in RAM\n"
|
|
" to 'dev' on 'interface'"
|
|
);
|
|
#endif
|