From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Schocher Date: Fri, 05 Sep 2014 06:28:51 +0200 Subject: [U-Boot] [PATCH] dfu, usb: set usb descriptor to values defined in dfu spec 1.1 In-Reply-To: <201409050042.24680.marex@denx.de> References: <1409826100-24834-1-git-send-email-hs@denx.de> <201409050042.24680.marex@denx.de> Message-ID: <54093C03.3080707@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello Marek, Am 05.09.2014 00:42, schrieb Marek Vasut: > On Thursday, September 04, 2014 at 12:21:40 PM, Heiko Schocher wrote: > > Hi Heiko, > > I'll just rant a bit, but please wait until Lukasz does a proper runthrough. > >> set bDeviceClass, bDeviceSubClass and bcdUSB to the values >> defined in dfu spec 1.1 chapter 4.2.1 found here: >> >> http://www.usb.org/developers/devclass_docs/DFU_1.1.pdf > > This URL gives me a website with: > " > Resource not found. > Please check the URL and try again. > " :-( Maybe it is deleted currently there? Hmm.. there is a search field if you open the above URL ... and if you type DFU and press search, you get: DFU File Format: PDF/Adobe Acrobat Aug 5, 2004 ... USB Device Firmware Upgrade Specification, Revision 1.1. 2. Intellectual Property Disclaimer. THIS SPECIFICATION IS PROVIDED ?AS IS? ... www.usb.org/developers/devclass_docs/DFU_1.1.pdf This is exactly the above link ... This link is also referenced from openmoko: http://wiki.openmoko.org/wiki/USB_DFU_-_The_USB_Device_Firmware_Upgrade_standard >> Signed-off-by: Heiko Schocher >> Cc: Lukasz Majewski >> Cc: Marek Vasut >> Cc: Roger Meier >> >> --- >> >> before this patch, "dfu-util -l" showed: >> >> Bus 002 Device 114: ID 0908:02c5 Siemens AG >> Device Descriptor: >> bLength 18 >> bDescriptorType 1 >> bcdUSB 2.00 >> bDeviceClass 2 Communications >> bDeviceSubClass 2 Abstract (modem) >> bDeviceProtocol 0 None >> bMaxPacketSize0 64 >> idVendor 0x0908 Siemens AG >> idProduct 0x02c5 >> bcdDevice 0.00 >> iManufacturer 1 Siemens AG >> >> with this patch: >> >> Bus 002 Device 089: ID 0908:02c5 Siemens AG >> Device Descriptor: >> bLength 18 >> bDescriptorType 1 >> bcdUSB 1.10 >> bDeviceClass 0 (Defined at Interface level) >> bDeviceSubClass 0 >> bDeviceProtocol 0 >> bMaxPacketSize0 64 >> idVendor 0x0908 Siemens AG >> idProduct 0x02c5 >> bcdDevice 0.00 >> iManufacturer 1 Siemens AG >> iProduct 2 USB download gadget >> >> which fits for "bcdUSB", "bDeviceClass" and "bDeviceSubClass" with >> the DFU spezifikation. > > This patch doesn't seem fully right, let me explain below please. > >> --- >> drivers/usb/gadget/f_dfu.c | 5 +++-- >> drivers/usb/gadget/g_dnl.c | 6 +++--- >> 2 files changed, 6 insertions(+), 5 deletions(-) >> >> diff --git a/drivers/usb/gadget/f_dfu.c b/drivers/usb/gadget/f_dfu.c >> index 9128add..9429e50 100644 >> --- a/drivers/usb/gadget/f_dfu.c >> +++ b/drivers/usb/gadget/f_dfu.c >> @@ -83,8 +83,9 @@ static struct usb_descriptor_header *dfu_runtime_descs[] >> = { static const struct usb_qualifier_descriptor dev_qualifier = { >> .bLength = sizeof dev_qualifier, >> .bDescriptorType = USB_DT_DEVICE_QUALIFIER, >> - .bcdUSB = __constant_cpu_to_le16(0x0200), >> - .bDeviceClass = USB_CLASS_VENDOR_SPEC, >> + .bcdUSB = __constant_cpu_to_le16(0x0110), > > See [1] and look for first and second instance of 'bcdUsb' there please. Quote > of the second one: > > ' > The bcdUSB field reports the highest version of USB the device supports. The > value is in binary coded decimal with a format of 0xJJMN where JJ is the major > version number, M is the minor version number and N is the sub minor version > number. e.g. USB 2.0 is reported as 0x0200, USB 1.1 as 0x0110 and USB 1.0 as > 0x0100. > ' > > So this should be configured dynamically based on what the highest mode the > controller supports is, no? Good question ... the DFU 1.1 spezification says in chapter 4.2.1 DFU Mode Device Descriptor: bcdUSB = 0100 USB specification release number in binary coded decimal. (which seems wrong, as the spez is version 1.1, see [2]) bDeviceClass = 0 bDeviceSubClass = 0 ... ? I discussed this change with Lukasz, see: [2] http://lists.denx.de/pipermail/u-boot/2014-August/186918.html > >> + .bDeviceClass = USB_CLASS_PER_INTERFACE, > > This might be OK. > >> + .bDeviceSubClass = 0x00, > > But this is not, the device definitelly isn't CDC-serial. > > [...] > > [1] http://www.beyondlogic.org/usbnutshell/usb5.shtml bye, Heiko -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany