From 2e7bd41e4e8ab3d1efdabd9e263a2f7fe79bff8c Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Mon, 20 Nov 2023 10:14:59 +0000
Subject: [PATCH] otg change to host
---
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