arm: smh: Remove smhload command

This command's functionality is now completely implemented by the
standard fs load command. Convert the vexpress64 boot command (which is
the only user) and remove the implementation.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
This commit is contained in:
Sean Anderson 2022-03-22 16:59:22 -04:00 committed by Tom Rini
parent dbf6f7c952
commit dcc4f9623e
2 changed files with 5 additions and 81 deletions

View file

@ -10,8 +10,6 @@
* available in silicon now, fastmodel usage makes less sense for them.
*/
#include <common.h>
#include <command.h>
#include <env.h>
#include <log.h>
#include <semihosting.h>
@ -169,77 +167,3 @@ long smh_seek(long fd, long pos)
return smh_errno();
return 0;
}
static int smh_load_file(const char * const name, ulong load_addr,
ulong *size)
{
long fd;
long len;
long ret;
fd = smh_open(name, MODE_READ | MODE_BINARY);
if (fd < 0)
return fd;
len = smh_flen(fd);
if (len < 0) {
smh_close(fd);
return len;
}
ret = smh_read(fd, (void *)load_addr, len);
smh_close(fd);
if (ret == len) {
*size = len;
printf("loaded file %s from %08lX to %08lX, %08lX bytes\n",
name,
load_addr,
load_addr + len - 1,
len);
} else if (ret >= 0) {
ret = -EAGAIN;
}
if (ret < 0) {
printf("read failed: %ld\n", ret);
return ret;
}
return 0;
}
static int do_smhload(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[])
{
if (argc == 3 || argc == 4) {
ulong load_addr;
ulong size = 0;
int ret;
char size_str[64];
load_addr = hextoul(argv[2], NULL);
if (!load_addr)
return -1;
ret = smh_load_file(argv[1], load_addr, &size);
if (ret < 0)
return CMD_RET_FAILURE;
/* Optionally save returned end to the environment */
if (argc == 4) {
sprintf(size_str, "0x%08lx", size);
env_set(argv[3], size_str);
}
} else {
return CMD_RET_USAGE;
}
return 0;
}
U_BOOT_CMD(smhload, 4, 0, do_smhload, "load a file using semihosting",
"<file> 0x<address> [end var]\n"
" - load a semihosted file to the address specified\n"
" if the optional [end var] is specified, the end\n"
" address of the file will be stored in this environment\n"
" variable.\n");

View file

@ -167,20 +167,20 @@
*/
#define BOOTENV_DEV_SMH(devtypeu, devtypel, instance) \
"bootcmd_smh= " \
"if smhload ${boot_name} ${boot_addr_r}; then" \
"if load hostfs - ${boot_addr_r} ${boot_name}; then" \
" setenv bootargs;" \
" abootimg addr ${boot_addr_r};" \
" abootimg get dtb --index=0 fdt_addr_r;" \
" bootm ${boot_addr_r} ${boot_addr_r} ${fdt_addr_r};" \
"else" \
" if smhload ${kernel_name} ${kernel_addr_r}; then" \
" if load hostfs - ${kernel_addr_r} ${kernel_name}; then" \
" setenv fdt_high 0xffffffffffffffff;" \
" setenv initrd_high 0xffffffffffffffff;" \
" smhload ${fdtfile} ${fdt_addr_r};" \
" smhload ${ramdisk_name} ${ramdisk_addr_r} ramdisk_end;" \
" load hostfs - ${fdt_addr_r} ${fdtfile};" \
" load hostfs - ${ramdisk_addr_r} ${ramdisk_name};" \
" fdt addr ${fdt_addr_r};" \
" fdt resize;" \
" fdt chosen ${ramdisk_addr_r} ${ramdisk_end};" \
" fdt chosen ${ramdisk_addr_r} ${filesize};" \
" booti $kernel_addr_r - $fdt_addr_r;" \
" fi;" \
"fi\0"