diff mbox

[U-Boot,2/2] usb: Add quirk "USB_QUIRK_STRING_FETCH_255"

Message ID 1330007126-16481-2-git-send-email-puneets@nvidia.com
State Changes Requested
Headers show

Commit Message

Puneet Saxena Feb. 23, 2012, 2:25 p.m. UTC
Add a quirk "USB_QUIRK_STRING_FETCH_255", borrowed from Linux
kernel to fetch string using descriptor length then fetch actual bytes
returned in descriptor buffer.

Signed-off-by: Puneet Saxena <puneets@nvidia.com>
---
Changes for v2:
   - Add quirk for fetching actual bytes

 common/usb.c                    |    4 ++++
 include/configs/tegra2-common.h |    7 +++++++
 2 files changed, 11 insertions(+), 0 deletions(-)

Comments

Tom Rini Feb. 23, 2012, 3:20 p.m. UTC | #1
On Thu, Feb 23, 2012 at 07:55:26PM +0530, Puneet Saxena wrote:

> Add a quirk "USB_QUIRK_STRING_FETCH_255", borrowed from Linux
> kernel to fetch string using descriptor length then fetch actual bytes
> returned in descriptor buffer.
> 
> Signed-off-by: Puneet Saxena <puneets@nvidia.com>

I think this is too literal a borrowing.  In the kernel we don't use
CONFIG_... since we have dev->quirks and check that for this flag.  But
here IMHO we should just do CONFIG_USB_QURIK_...
Puneet Saxena Feb. 24, 2012, 7:52 a.m. UTC | #2
On Thursday 23 February 2012 09:34 PM, Tom Warren wrote:
> Puneet,
>
>> -----Original Message-----
>> From: Puneet Saxena
>> Sent: Thursday, February 23, 2012 7:25 AM
>> To: u-boot@lists.denx.de; sjg@chromium.org
>> Cc: vapier@gentoo.org; Tom Warren; Puneet Saxena
>> Subject: [PATCH 2/2] usb: Add quirk "USB_QUIRK_STRING_FETCH_255"
>>
>> Add a quirk "USB_QUIRK_STRING_FETCH_255", borrowed from Linux kernel to
>> fetch string using descriptor length then fetch actual bytes returned in
>> descriptor buffer.
>>
>> Signed-off-by: Puneet Saxena<puneets@nvidia.com>
>> ---
>> Changes for v2:
>>     - Add quirk for fetching actual bytes
>>
>>   common/usb.c                    |    4 ++++
>>   include/configs/tegra2-common.h |    7 +++++++
>>   2 files changed, 11 insertions(+), 0 deletions(-)
>>
>> diff --git a/common/usb.c b/common/usb.c index 75926aa..cd85c18 100644
>> --- a/common/usb.c
>> +++ b/common/usb.c
>> @@ -660,7 +660,11 @@ static int usb_string_sub(struct usb_device *dev,
>> unsigned int langid,
>>
>>   	/* Try to read the string descriptor by asking for the maximum
>>   	 * possible number of bytes */
>> +#ifdef USB_QUIRK_STRING_FETCH_255
>> +	rc = -4;
>> +#else
>>   	rc = usb_get_string(dev, langid, index, buf, 255);
>> +#endif
>>
>>   	/* If that failed try to read the descriptor length, then
>>   	 * ask for just that many bytes */
>> diff --git a/include/configs/tegra2-common.h b/include/configs/tegra2-
>> common.h index 266d0e5..51cc200 100644
>> --- a/include/configs/tegra2-common.h
>> +++ b/include/configs/tegra2-common.h
>> @@ -172,4 +172,11 @@
>>
>>   #define CONFIG_TEGRA2_GPIO
>>   #define CONFIG_CMD_GPIO
>> +
>> +/*
>> + * Imported the quirk from Linux kernel  */
>> +/* string descriptors must not be fetched using a 255-byte read */
>> +#define USB_QUIRK_STRING_FETCH_255	0x00000001
>> +
>>   #endif /* __TEGRA2_COMMON_H */
>> --
>> 1.7.1
> Make sure you include the USB custodian/expert when submitting USB patches (Remy Bohmer, linux@bohmer.net). Also, as TomR says, this should be a CONFIG_USB_QUIRK_xxx string. Note that it doesn't need a 0x00000001 - #define'ing a switch means it's explicitly enabled - no need for 1 or 0 (see all the other CONFIG_ defines in the config headers).
>
> Tom
>
My thought of adding "#define USB_QUIRK_STRING_FETCH_255 0x00000001" 
instead "#define USB_QUIRK_STRING_FETCH_255" is, some time in future we 
might have to implement kernel quirk kind of functionality to make generic
implementation. Its not needed as of now. Will incorporate in next patch.

Thanks,
Puneet

-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information.  Any unauthorized review, use, disclosure or distribution
is prohibited.  If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
diff mbox

Patch

diff --git a/common/usb.c b/common/usb.c
index 75926aa..cd85c18 100644
--- a/common/usb.c
+++ b/common/usb.c
@@ -660,7 +660,11 @@  static int usb_string_sub(struct usb_device *dev, unsigned int langid,
 
 	/* Try to read the string descriptor by asking for the maximum
 	 * possible number of bytes */
+#ifdef USB_QUIRK_STRING_FETCH_255
+	rc = -4;
+#else
 	rc = usb_get_string(dev, langid, index, buf, 255);
+#endif
 
 	/* If that failed try to read the descriptor length, then
 	 * ask for just that many bytes */
diff --git a/include/configs/tegra2-common.h b/include/configs/tegra2-common.h
index 266d0e5..51cc200 100644
--- a/include/configs/tegra2-common.h
+++ b/include/configs/tegra2-common.h
@@ -172,4 +172,11 @@ 
 
 #define CONFIG_TEGRA2_GPIO
 #define CONFIG_CMD_GPIO
+
+/*
+ * Imported the quirk from Linux kernel
+ */
+/* string descriptors must not be fetched using a 255-byte read */
+#define USB_QUIRK_STRING_FETCH_255	0x00000001
+
 #endif /* __TEGRA2_COMMON_H */