
This uses casts all over the place. Use the correct type so that these can be avoided, as is done with other commands. Also simplify a few conditionals.
Signed-off-by: Simon Glass sjg@chromium.org ---
cmd/qfw.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/cmd/qfw.c b/cmd/qfw.c index 0c49c6074e1..8837911d99f 100644 --- a/cmd/qfw.c +++ b/cmd/qfw.c @@ -7,6 +7,7 @@ #include <command.h> #include <env.h> #include <errno.h> +#include <mapmem.h> #include <qfw.h> #include <dm.h>
@@ -17,7 +18,7 @@ static struct udevice *qfw_dev; * to 'load_addr', initrd to 'initrd_addr' and kernel command * line using qemu fw_cfg interface. */ -static int qemu_fwcfg_cmd_setup_kernel(void *load_addr, void *initrd_addr) +int qemu_fwcfg_cmd_setup_kernel(ulong load_addr, ulong initrd_addr) { char *data_addr; uint32_t setup_size, kernel_size, cmdline_size, initrd_size; @@ -25,13 +26,13 @@ static int qemu_fwcfg_cmd_setup_kernel(void *load_addr, void *initrd_addr) qfw_read_entry(qfw_dev, FW_CFG_SETUP_SIZE, 4, &setup_size); qfw_read_entry(qfw_dev, FW_CFG_KERNEL_SIZE, 4, &kernel_size);
- if (kernel_size == 0) { + if (!kernel_size) { printf("fatal: no kernel available\n"); - return CMD_RET_FAILURE; + return -ENOENT; }
- data_addr = load_addr; - if (setup_size != 0) { + data_addr = map_sysmem(load_addr, 0); + if (setup_size) { qfw_read_entry(qfw_dev, FW_CFG_SETUP_DATA, le32_to_cpu(setup_size), data_addr); data_addr += le32_to_cpu(setup_size); @@ -42,9 +43,9 @@ static int qemu_fwcfg_cmd_setup_kernel(void *load_addr, void *initrd_addr) data_addr += le32_to_cpu(kernel_size); env_set_hex("filesize", le32_to_cpu(kernel_size));
- data_addr = initrd_addr; + data_addr = map_sysmem(initrd_addr, 0); qfw_read_entry(qfw_dev, FW_CFG_INITRD_SIZE, 4, &initrd_size); - if (initrd_size == 0) { + if (!initrd_size) { printf("warning: no initrd available\n"); } else { qfw_read_entry(qfw_dev, FW_CFG_INITRD_DATA, @@ -61,17 +62,16 @@ static int qemu_fwcfg_cmd_setup_kernel(void *load_addr, void *initrd_addr) * if kernel cmdline only contains '\0', (e.g. no -append * when invoking qemu), do not update bootargs */ - if (*data_addr != '\0') { + if (*data_addr) { if (env_set("bootargs", data_addr) < 0) printf("warning: unable to change bootargs\n"); } }
- printf("loading kernel to address %p size %x", load_addr, + printf("loading kernel to address %lx size %x", load_addr, le32_to_cpu(kernel_size)); if (initrd_size) - printf(" initrd %p size %x\n", - initrd_addr, + printf(" initrd %lx size %x\n", initrd_addr, le32_to_cpu(initrd_size)); else printf("\n"); @@ -119,28 +119,28 @@ static int qemu_fwcfg_do_load(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { char *env; - void *load_addr; - void *initrd_addr; + ulong load_addr; + ulong initrd_addr;
env = env_get("loadaddr"); load_addr = env ? - (void *)hextoul(env, NULL) : - (void *)CONFIG_SYS_LOAD_ADDR; + hextoul(env, NULL) : + CONFIG_SYS_LOAD_ADDR;
env = env_get("ramdiskaddr"); initrd_addr = env ? - (void *)hextoul(env, NULL) : + hextoul(env, NULL) : #ifdef CFG_RAMDISK_ADDR - (void *)CFG_RAMDISK_ADDR; + CFG_RAMDISK_ADDR; #else - NULL; + 0; #endif
if (argc == 2) { - load_addr = (void *)hextoul(argv[0], NULL); - initrd_addr = (void *)hextoul(argv[1], NULL); + load_addr = hextoul(argv[0], NULL); + initrd_addr = hextoul(argv[1], NULL); } else if (argc == 1) { - load_addr = (void *)hextoul(argv[0], NULL); + load_addr = hextoul(argv[0], NULL); }
if (!load_addr || !initrd_addr) {