From 9df731a176aab8e03b984b681b1bea01ccff6644 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 06 Nov 2023 07:23:06 +0000 Subject: [PATCH] rk3568 rt uboot init --- u-boot/cmd/script_update.c | 38 ++++++++++++++++++++++++++++++-------- 1 files changed, 30 insertions(+), 8 deletions(-) diff --git a/u-boot/cmd/script_update.c b/u-boot/cmd/script_update.c index 2d6e423..d4a7da7 100644 --- a/u-boot/cmd/script_update.c +++ b/u-boot/cmd/script_update.c @@ -6,6 +6,7 @@ #include <common.h> #include <malloc.h> +#include <dm/device.h> /* * Script file example: @@ -144,6 +145,8 @@ int argc, char * const argv[]) { struct blk_desc *desc; + struct udevice *dev; + int devnum = -1; int part_type; char cmd[128]; char *buf; @@ -151,9 +154,31 @@ printf("## retrieving usb_update.txt ...\n"); - desc = blk_get_devnum_by_type(IF_TYPE_USB, 0); - if (!desc) + if (run_command("usb reset", 0)) return CMD_RET_FAILURE; + + for (blk_first_device(IF_TYPE_USB, &dev); + dev; + blk_next_device(&dev)) { + desc = dev_get_uclass_platdata(dev); + if (desc->type == DEV_TYPE_UNKNOWN) + continue; + + if (desc->lba > 0L && desc->blksz > 0L) { + devnum = desc->devnum; + break; + } + } + if (devnum < 0) { + printf("No available udisk\n"); + return CMD_RET_FAILURE; + } + + desc = blk_get_devnum_by_type(IF_TYPE_USB, devnum); + if (!desc) { + printf("No usb %d found\n", devnum); + return CMD_RET_FAILURE; + } buf = memalign(ARCH_DMA_MINALIGN, SCRIPT_FILE_MAX_SIZE * 2); if (!buf) @@ -162,18 +187,15 @@ part_type = desc->part_type; desc->part_type = PART_TYPE_DOS; - snprintf(cmd, sizeof(cmd), "usb reset"); + printf("## scanning usb %d\n", devnum); + snprintf(cmd, sizeof(cmd), "fatload usb %d 0x%08lx usb_update.txt", + devnum, (ulong)buf); ret = run_command(cmd, 0); - if (!ret) { - snprintf(cmd, sizeof(cmd), "fatload usb 0 0x%08lx usb_update.txt", (ulong)buf); - ret = run_command(cmd, 0); - } if (!ret) { snprintf(cmd, sizeof(cmd), "script 0x%08lx", (ulong)buf); ret = run_command(cmd, 0); } free(buf); - desc->part_type = part_type; return ret; -- Gitblit v1.6.2