summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Hu <andy.hu@starfivetech.com>2023-10-18 15:15:18 +0300
committerAndy Hu <andy.hu@starfivetech.com>2023-10-18 15:15:18 +0300
commit84c81d3d0254adb8ae88d5e0633bf01c12436898 (patch)
tree2e861b9a57eafc11e30af5a9dd3456b44fe7c3ed
parent17e00aaa325480c71765822555779bbad40aa5a2 (diff)
parentb9ea242a49cd2e7d84ca0ea9086e8a76cd92e485 (diff)
downloadu-boot-JH7110_VisionFive2_devel-v3.9.3.tar.xz
-rw-r--r--common/usb.c24
-rw-r--r--drivers/usb/host/xhci-ring.c2
2 files changed, 20 insertions, 6 deletions
diff --git a/common/usb.c b/common/usb.c
index aad13fd9c5..68885d6ee4 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -1144,20 +1144,32 @@ int usb_select_config(struct usb_device *dev)
memset(dev->mf, 0, sizeof(dev->mf));
memset(dev->prod, 0, sizeof(dev->prod));
memset(dev->serial, 0, sizeof(dev->serial));
- if (dev->descriptor.iManufacturer)
- usb_string(dev, dev->descriptor.iManufacturer,
+ if (dev->descriptor.iManufacturer) {
+ err = usb_string(dev, dev->descriptor.iManufacturer,
dev->mf, sizeof(dev->mf));
- if (dev->descriptor.iProduct)
- usb_string(dev, dev->descriptor.iProduct,
+ if (err < 0)
+ goto decriptor_err;
+ } if (dev->descriptor.iProduct) {
+ err = usb_string(dev, dev->descriptor.iProduct,
dev->prod, sizeof(dev->prod));
- if (dev->descriptor.iSerialNumber)
- usb_string(dev, dev->descriptor.iSerialNumber,
+ if (err < 0)
+ goto decriptor_err;
+ }
+ if (dev->descriptor.iSerialNumber) {
+ err = usb_string(dev, dev->descriptor.iSerialNumber,
dev->serial, sizeof(dev->serial));
+ if (err < 0)
+ goto decriptor_err;
+ }
debug("Manufacturer %s\n", dev->mf);
debug("Product %s\n", dev->prod);
debug("SerialNumber %s\n", dev->serial);
return 0;
+
+decriptor_err:
+ printf("failed to get usb device info %d\n", err);
+ return err;
}
int usb_setup_device(struct usb_device *dev, bool do_read,
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 35bd5cd29e..0bc44752be 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -499,6 +499,8 @@ static void abort_td(struct usb_device *udev, int ep_index)
xhci_queue_command(ctrl, NULL, udev->slot_id, ep_index, TRB_STOP_RING);
event = xhci_wait_for_event(ctrl, TRB_TRANSFER);
+ if (!event)
+ return;
field = le32_to_cpu(event->trans_event.flags);
BUG_ON(TRB_TO_SLOT_ID(field) != udev->slot_id);
BUG_ON(TRB_TO_EP_INDEX(field) != ep_index);