From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bin Liu Date: Tue, 9 Sep 2014 09:09:34 -0500 Subject: [U-Boot] [PATCH v1 1/2] usb: dfu: add config option to use in dfu mode fullspeed only In-Reply-To: <1410266224-4051-2-git-send-email-hs@denx.de> References: <1410266224-4051-1-git-send-email-hs@denx.de> <1410266224-4051-2-git-send-email-hs@denx.de> Message-ID: <540F0A1E.7060109@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Heiko, On 09/09/2014 07:37 AM, Heiko Schocher wrote: > add the new config option CONFIG_DFU_FULLSPEED. With this > option enabled, DFU uses fullspeed only. Can we not introduce the new config option but check the gadget driver speed in runtime as what the ether gadget driver does? I don't want two config options (CONFIG_USB_GADGET_DUALSPEED and CONFIG_DFU_FULLSPEED) to control one feature, as in your patch 2/2. Regards, -Bin. > > Signed-off-by: Heiko Schocher > Cc: Tom Rini > Cc: Lukasz Majewski > Cc: Marek Vasut > Cc: Liu Bin > Cc: Lukas Stockmann > --- > README | 3 +++ > drivers/usb/gadget/f_dfu.c | 3 +++ > drivers/usb/gadget/g_dnl.c | 3 +++ > 3 files changed, 9 insertions(+) > > diff --git a/README b/README > index 0a0f528..1413392 100644 > --- a/README > +++ b/README > @@ -1607,6 +1607,9 @@ The following options need to be configured: > entering dfuMANIFEST state. Host waits this timeout, before > sending again an USB request to the device. > > + CONFIG_DFU_FULLSPEED > + use for the dfu functionality fullspeed only. > + > - USB Device Android Fastboot support: > CONFIG_CMD_FASTBOOT > This enables the command "fastboot" which enables the Android > diff --git a/drivers/usb/gadget/f_dfu.c b/drivers/usb/gadget/f_dfu.c > index 1145aab..dfa9f3b 100644 > --- a/drivers/usb/gadget/f_dfu.c > +++ b/drivers/usb/gadget/f_dfu.c > @@ -238,6 +238,7 @@ static inline void to_dfu_mode(struct f_dfu *f_dfu) > { > f_dfu->usb_function.strings = dfu_strings; > f_dfu->usb_function.hs_descriptors = f_dfu->function; > + f_dfu->usb_function.descriptors = f_dfu->function; > f_dfu->dfu_state = DFU_STATE_dfuIDLE; > } > > @@ -245,6 +246,7 @@ static inline void to_runtime_mode(struct f_dfu *f_dfu) > { > f_dfu->usb_function.strings = NULL; > f_dfu->usb_function.hs_descriptors = dfu_runtime_descs; > + f_dfu->usb_function.descriptors = dfu_runtime_descs; > } > > static int handle_upload(struct usb_request *req, u16 len) > @@ -809,6 +811,7 @@ static int dfu_bind_config(struct usb_configuration *c) > return -ENOMEM; > f_dfu->usb_function.name = "dfu"; > f_dfu->usb_function.hs_descriptors = dfu_runtime_descs; > + f_dfu->usb_function.descriptors = dfu_runtime_descs; > f_dfu->usb_function.bind = dfu_bind; > f_dfu->usb_function.unbind = dfu_unbind; > f_dfu->usb_function.set_alt = dfu_set_alt; > diff --git a/drivers/usb/gadget/g_dnl.c b/drivers/usb/gadget/g_dnl.c > index 58cad11..79e0c9c 100644 > --- a/drivers/usb/gadget/g_dnl.c > +++ b/drivers/usb/gadget/g_dnl.c > @@ -143,6 +143,9 @@ static int g_dnl_config_register(struct usb_composite_dev *cdev) > config->bConfigurationValue = CONFIGURATION_NUMBER; > config->iConfiguration = STRING_USBDOWN; > config->bind = g_dnl_do_config; > +#if defined(CONFIG_DFU_FULLSPEED) > + config->fullspeed = 1; > +#endif > > return usb_add_config(cdev, config); > } >