From 4291c86117559436aea9f90c399efa89cd2e60d8 Mon Sep 17 00:00:00 2001 From: Kavin A Date: Tue, 16 Nov 2021 14:46:53 +0530 Subject: [PATCH] ipq9574: USB: Add delay for Get descriptor Change-Id: I1ca6035fb30f692ec57ecb9f9c90393837c69a76 Signed-off-by: Kavin A --- common/usb.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/common/usb.c b/common/usb.c index b3aff89724..993d57b3bc 100644 --- a/common/usb.c +++ b/common/usb.c @@ -46,6 +46,8 @@ #define TRANSCEND_USB_VENDOR_ID 0x8564 #define TRANSCEND_USB_PRODUCT_ID 0x1000 +#define SP_USB_VENDOR_ID 0x058f +#define SP_USB_PRODUCT_ID 0x6387 static int asynch_allowed; char usb_started; /* flag for the started/stopped USB status */ @@ -1091,18 +1093,22 @@ int usb_select_config(struct usb_device *dev) le16_to_cpus(&dev->descriptor.idProduct); le16_to_cpus(&dev->descriptor.bcdDevice); - /*The Transcend device fails for get configuration length. Adding - delay about 10 micro secs to fix this.*/ - if (dev->descriptor.idVendor == TRANSCEND_USB_VENDOR_ID && - dev->descriptor.idProduct == TRANSCEND_USB_PRODUCT_ID) + /*The Transcend and Silicon-power devices fails for get configuration length. + Adding delay about 10 micro secs to fix this.*/ + if ((dev->descriptor.idVendor == TRANSCEND_USB_VENDOR_ID && + dev->descriptor.idProduct == TRANSCEND_USB_PRODUCT_ID) || + (dev->descriptor.idVendor == SP_USB_VENDOR_ID && + dev->descriptor.idProduct == SP_USB_PRODUCT_ID)) udelay(10); /* only support for one config for now */ err = usb_get_configuration_len(dev, 0); - /*The Transcend device fails for get configuration number. Adding - delay about 10 micro secs to fix this.*/ - if (dev->descriptor.idVendor == TRANSCEND_USB_VENDOR_ID && - dev->descriptor.idProduct == TRANSCEND_USB_PRODUCT_ID) + /*The Transcend and Silicon-power devices fails for get configuration number. + Adding delay about 10 micro secs to fix this.*/ + if ((dev->descriptor.idVendor == TRANSCEND_USB_VENDOR_ID && + dev->descriptor.idProduct == TRANSCEND_USB_PRODUCT_ID) || + (dev->descriptor.idVendor == SP_USB_VENDOR_ID && + dev->descriptor.idProduct == SP_USB_PRODUCT_ID)) udelay(10); if (err >= 0) {