[U-Boot] [PATCH v1 0/2] usb: dfu: am335x: allow dfu in fullspeed mode only

This patchserie adds the new config option CONFIG_DFU_FULLSPEED. If this is enabled DFU uses fullspeed only. This is used on the siemens boards.
Cc: Tom Rini trini@ti.com Cc: Lukasz Majewski l.majewski@samsung.com Cc: Marek Vasut marex@denx.de Cc: Liu Bin b-liu@ti.com Cc: Lukas Stockmann lukas.stockmann@siemens.com
Heiko Schocher (2): usb: dfu: add config option to use in dfu mode fullspeed only arm: am335x: siemens board use in DFU mode fullspeed only
README | 3 +++ drivers/usb/gadget/f_dfu.c | 3 +++ drivers/usb/gadget/g_dnl.c | 3 +++ include/configs/siemens-am33x-common.h | 3 ++- 4 files changed, 11 insertions(+), 1 deletion(-)

add the new config option CONFIG_DFU_FULLSPEED. With this option enabled, DFU uses fullspeed only.
Signed-off-by: Heiko Schocher hs@denx.de Cc: Tom Rini trini@ti.com Cc: Lukasz Majewski l.majewski@samsung.com Cc: Marek Vasut marex@denx.de Cc: Liu Bin b-liu@ti.com Cc: Lukas Stockmann lukas.stockmann@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); }

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 hs@denx.de Cc: Tom Rini trini@ti.com Cc: Lukasz Majewski l.majewski@samsung.com Cc: Marek Vasut marex@denx.de Cc: Liu Bin b-liu@ti.com Cc: Lukas Stockmann lukas.stockmann@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); }

Hi Bin,
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.
+1
Regards, -Bin.
Signed-off-by: Heiko Schocher hs@denx.de Cc: Tom Rini trini@ti.com Cc: Lukasz Majewski l.majewski@samsung.com Cc: Marek Vasut marex@denx.de Cc: Liu Bin b-liu@ti.com Cc: Lukas Stockmann lukas.stockmann@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); }

Hello Bin Liu,
Am 09.09.2014 16:09, schrieb Bin Liu:
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.
Hmm.. I am not sure, if I understand you correct. I could use CONFIG_USB_GADGET_DUALSPEED instead the new config option for setting "config->fullspeed = 1;" in g_dnl_config_register()
If you mean this, yes, thats would be a good change...
bye, Heiko
Regards, -Bin.
Signed-off-by: Heiko Schocher hs@denx.de Cc: Tom Rini trini@ti.com Cc: Lukasz Majewski l.majewski@samsung.com Cc: Marek Vasut marex@denx.de Cc: Liu Bin b-liu@ti.com Cc: Lukas Stockmann lukas.stockmann@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); }

Heiko,
On 09/09/2014 09:37 AM, Heiko Schocher wrote:
Hello Bin Liu,
Am 09.09.2014 16:09, schrieb Bin Liu:
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.
Hmm.. I am not sure, if I understand you correct. I could use CONFIG_USB_GADGET_DUALSPEED instead the new config option for setting "config->fullspeed = 1;" in g_dnl_config_register()
If you mean this, yes, thats would be a good change...
No, I did not mean this build time macro, but was thinking you can check g->speed at the same place in runtime.
I think you can refer to ether.c, which supports full-speed but does not use any macro.
Regards, -Bin.
bye, Heiko
Regards, -Bin.
Signed-off-by: Heiko Schocher hs@denx.de Cc: Tom Rini trini@ti.com Cc: Lukasz Majewski l.majewski@samsung.com Cc: Marek Vasut marex@denx.de Cc: Liu Bin b-liu@ti.com Cc: Lukas Stockmann lukas.stockmann@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); }

Hello Bin Liu,
Am 09.09.2014 16:42, schrieb Bin Liu:
Heiko,
On 09/09/2014 09:37 AM, Heiko Schocher wrote:
Hello Bin Liu,
Am 09.09.2014 16:09, schrieb Bin Liu:
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.
Hmm.. I am not sure, if I understand you correct. I could use CONFIG_USB_GADGET_DUALSPEED instead the new config option for setting "config->fullspeed = 1;" in g_dnl_config_register()
If you mean this, yes, thats would be a good change...
No, I did not mean this build time macro, but was thinking you can check g->speed at the same place in runtime.
I think you can refer to ether.c, which supports full-speed but does not use any macro.
Yep, you are right, I can get rid completely of this new define! The speed selection is done in drivers/usb/gadget/composite.c
I removed it, do some tests, and send a v2. Thanks!
bye, Heiko

Siemens boards are now using DFU in fullspeed only.
Signed-off-by: Heiko Schocher hs@denx.de Cc: Tom Rini trini@ti.com Cc: Lukasz Majewski l.majewski@samsung.com Cc: Marek Vasut marex@denx.de Cc: Liu Bin b-liu@ti.com Cc: Lukas Stockmann lukas.stockmann@siemens.com --- include/configs/siemens-am33x-common.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/include/configs/siemens-am33x-common.h b/include/configs/siemens-am33x-common.h index b8fb77e..6fa5ddf 100644 --- a/include/configs/siemens-am33x-common.h +++ b/include/configs/siemens-am33x-common.h @@ -233,7 +233,7 @@ #define CONFIG_MUSB_GADGET #define CONFIG_MUSB_PIO_ONLY #define CONFIG_MUSB_DISABLE_BULK_COMBINE_SPLIT -#define CONFIG_USB_GADGET_DUALSPEED +#undef CONFIG_USB_GADGET_DUALSPEED #define CONFIG_USB_GADGET_VBUS_DRAW 2 #define CONFIG_MUSB_HOST
@@ -267,6 +267,7 @@ #define CONFIG_CMD_DFU #define CONFIG_SYS_DFU_DATA_BUF_SIZE (1 << 20) #define DFU_MANIFEST_POLL_TIMEOUT 25000 +#define CONFIG_DFU_FULLSPEED
#endif /* CONFIG_SPL_BUILD */

Hi Heiko,
This patchserie adds the new config option CONFIG_DFU_FULLSPEED.
Is there any special reason to support Full Speed (12 Mbit/sec - USB 1.1) and not rely solely on the High Speed (USB 2.0) as we do now?
If this is enabled DFU uses fullspeed only. This is used on the siemens boards.
Is there any DFU problem with the mentioned Siemens board, that we must use USB 1.1?
I'd also appreciate more verbose rationale for this patch series - why this change is needed? What is the expected improvement?
Thanks in advance.
Cc: Tom Rini trini@ti.com Cc: Lukasz Majewski l.majewski@samsung.com Cc: Marek Vasut marex@denx.de Cc: Liu Bin b-liu@ti.com Cc: Lukas Stockmann lukas.stockmann@siemens.com
Heiko Schocher (2): usb: dfu: add config option to use in dfu mode fullspeed only arm: am335x: siemens board use in DFU mode fullspeed only
README | 3 +++ drivers/usb/gadget/f_dfu.c | 3 +++ drivers/usb/gadget/g_dnl.c | 3 +++ include/configs/siemens-am33x-common.h | 3 ++- 4 files changed, 11 insertions(+), 1 deletion(-)

Lukasz,
On 09/09/2014 08:43 AM, Lukasz Majewski wrote:
Hi Heiko,
This patchserie adds the new config option CONFIG_DFU_FULLSPEED.
Is there any special reason to support Full Speed (12 Mbit/sec - USB 1.1) and not rely solely on the High Speed (USB 2.0) as we do now?
The drivers must support full-speed anyway based on the USB2.0 Specs.
I have seen many cases in which only full-speed is suitable due to either board design or specific USB use case.
One example is that to better fit to the production firmware flashing automation, a board does not use standard USB receptacle or plug, but a four touch pads on the PCB, so that the robot can grab the board and touch the pads to download the firmware. In this case signal integrity is a concern, but not download speed.
Regards, -Bin.
If this is enabled DFU uses fullspeed only. This is used on the siemens boards.
Is there any DFU problem with the mentioned Siemens board, that we must use USB 1.1?
I'd also appreciate more verbose rationale for this patch series - why this change is needed? What is the expected improvement?
Thanks in advance.
Cc: Tom Rini trini@ti.com Cc: Lukasz Majewski l.majewski@samsung.com Cc: Marek Vasut marex@denx.de Cc: Liu Bin b-liu@ti.com Cc: Lukas Stockmann lukas.stockmann@siemens.com
Heiko Schocher (2): usb: dfu: add config option to use in dfu mode fullspeed only arm: am335x: siemens board use in DFU mode fullspeed only
README | 3 +++ drivers/usb/gadget/f_dfu.c | 3 +++ drivers/usb/gadget/g_dnl.c | 3 +++ include/configs/siemens-am33x-common.h | 3 ++- 4 files changed, 11 insertions(+), 1 deletion(-)

Hi Bin,
Lukasz,
On 09/09/2014 08:43 AM, Lukasz Majewski wrote:
Hi Heiko,
This patchserie adds the new config option CONFIG_DFU_FULLSPEED.
Is there any special reason to support Full Speed (12 Mbit/sec - USB 1.1) and not rely solely on the High Speed (USB 2.0) as we do now?
The drivers must support full-speed anyway based on the USB2.0 Specs.
I have seen many cases in which only full-speed is suitable due to either board design or specific USB use case.
One example is that to better fit to the production firmware flashing automation, a board does not use standard USB receptacle or plug, but a four touch pads on the PCB, so that the robot can grab the board and touch the pads to download the firmware. In this case signal integrity is a concern, but not download speed.
Thanks for example.
Best regards, Lukasz
Regards, -Bin.
If this is enabled DFU uses fullspeed only. This is used on the siemens boards.
Is there any DFU problem with the mentioned Siemens board, that we must use USB 1.1?
I'd also appreciate more verbose rationale for this patch series - why this change is needed? What is the expected improvement?
Thanks in advance.
Cc: Tom Rini trini@ti.com Cc: Lukasz Majewski l.majewski@samsung.com Cc: Marek Vasut marex@denx.de Cc: Liu Bin b-liu@ti.com Cc: Lukas Stockmann lukas.stockmann@siemens.com
Heiko Schocher (2): usb: dfu: add config option to use in dfu mode fullspeed only arm: am335x: siemens board use in DFU mode fullspeed only
README | 3 +++ drivers/usb/gadget/f_dfu.c | 3 +++ drivers/usb/gadget/g_dnl.c | 3 +++ include/configs/siemens-am33x-common.h | 3 ++- 4 files changed, 11 insertions(+), 1 deletion(-)

Hello Lukasz,
Am 09.09.2014 15:43, schrieb Lukasz Majewski:
Hi Heiko,
This patchserie adds the new config option CONFIG_DFU_FULLSPEED.
Is there any special reason to support Full Speed (12 Mbit/sec - USB 1.1) and not rely solely on the High Speed (USB 2.0) as we do now?
If this is enabled DFU uses fullspeed only. This is used on the siemens boards.
Is there any DFU problem with the mentioned Siemens board, that we must use USB 1.1?
I'd also appreciate more verbose rationale for this patch series - why this change is needed? What is the expected improvement?
They have a "USB HW protection circuit" and therefore they only allowed to use fullspeed ...
@Lukas Stockman: Maybe you could answer this better than me?
bye, Heiko

Hi all
-----Ursprüngliche Nachricht----- Von: Heiko Schocher [mailto:hs@denx.de] Gesendet: Dienstag, 9. September 2014 16:22 An: Lukasz Majewski Cc: u-boot@lists.denx.de; Tom Rini; Marek Vasut; Liu Bin; Stockmann, Lukas Betreff: Re: [PATCH v1 0/2] usb: dfu: am335x: allow dfu in fullspeed mode only
Hello Lukasz,
Am 09.09.2014 15:43, schrieb Lukasz Majewski:
Hi Heiko,
This patchserie adds the new config option CONFIG_DFU_FULLSPEED.
Is there any special reason to support Full Speed (12 Mbit/sec - USB 1.1) and not rely solely on the High Speed (USB 2.0) as we do now?
If this is enabled DFU uses fullspeed only. This is used on the siemens boards.
Is there any DFU problem with the mentioned Siemens board, that we must use USB 1.1?
I'd also appreciate more verbose rationale for this patch series - why this change is needed? What is the expected improvement?
They have a "USB HW protection circuit" and therefore they only allowed to use fullspeed ...
@Lukas Stockman: Maybe you could answer this better than me?
Yes, it's because of a protection circuit. Our device is 24V AC powered, if someone uses a non galvanically isolated transformer and misswires it, it could burn down the USB host. That's why we have a protection on the USB side which limits the speed to 12Mbit/sec.
Regards, Lukas
participants (4)
-
Bin Liu
-
Heiko Schocher
-
Lukasz Majewski
-
Stockmann, Lukas