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 <h...@denx.de> Cc: Tom Rini <tr...@ti.com> Cc: Lukasz Majewski <l.majew...@samsung.com> Cc: Marek Vasut <ma...@denx.de> Cc: Liu Bin <b-...@ti.com> Cc: Lukas Stockmann <lukas.stockm...@siemens.com> --- 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); }
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot