This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Kévin Redon gerrit-no-reply at lists.osmocom.orgKévin Redon has uploaded this change for review. ( https://gerrit.osmocom.org/10360 Change subject: USB: increase USB reset time ...................................................................... USB: increase USB reset time USB reset can be signaled by pulling low USB D+ for at least 10 ms, according to the USB specification. This force a re-enumeration. This time is increased to 20 ms to work with more USB HUBs. Some SAM3S based board have external D+ pull-up mechanism (such as SIMtrace) which needs to be used to pull D+ low. This is a legacy mechanism from SAM7S history. This mechanism is not required anymore on the SAM3S, and the qmod does not use it. In this case D+ can be pulled low using PIO. This board difference is not defined on the board header. Change-Id: I9b58d8101c2fcf5595026b675728826af26127a3 --- M firmware/apps/dfu/main.c M firmware/libboard/common/include/board_common.h M firmware/libboard/simtrace/include/board.h M firmware/libcommon/source/usb.c 4 files changed, 26 insertions(+), 9 deletions(-) git pull ssh://gerrit.osmocom.org:29418/simtrace2 refs/changes/60/10360/1 diff --git a/firmware/apps/dfu/main.c b/firmware/apps/dfu/main.c index 74268ad..9dd06ec 100644 --- a/firmware/apps/dfu/main.c +++ b/firmware/apps/dfu/main.c @@ -294,11 +294,21 @@ TRACE_INFO("USB init...\n\r"); /* Signal USB reset by disabling the pull-up on USB D+ for at least 10 ms */ +#ifdef PIN_USB_PULLUP const Pin usb_dp_pullup = PIN_USB_PULLUP; PIO_Configure(&usb_dp_pullup, 1); PIO_Set(&usb_dp_pullup); - mdelay(15); +#endif + + const Pin usb_dp = {PIO_PB11, PIOB, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT}; + PIO_Configure(&usb_dp, 1); + PIO_Clear(&usb_dp); + mdelay(20); + +#ifdef PIN_USB_PULLUP PIO_Clear(&usb_dp_pullup); +#endif + USBDFU_Initialize(&dfu_descriptors); while (USBD_GetState() < USBD_STATE_CONFIGURED) { diff --git a/firmware/libboard/common/include/board_common.h b/firmware/libboard/common/include/board_common.h index 06d3d6a..1b29680 100644 --- a/firmware/libboard/common/include/board_common.h +++ b/firmware/libboard/common/include/board_common.h @@ -114,15 +114,8 @@ #define SIM_PWEN PIO_PA5 #define VCC_FWD PIO_PA26 -/** Pin configuration to control USB pull-up on D+ - * @details the USB pull-up on D+ is enable by default on the board but can be disabled by setting PA16 high - */ -#define PIN_USB_PULLUP {PIO_PA16, PIOA, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT} - // Board has UDP controller #define BOARD_USB_UDP -// D+ has external pull-up -#define BOARD_USB_PULLUP_EXTERNAL #define BOARD_USB_DFU #define BOARD_DFU_BOOT_SIZE (16 * 1024) diff --git a/firmware/libboard/simtrace/include/board.h b/firmware/libboard/simtrace/include/board.h index db3a925..6751863 100644 --- a/firmware/libboard/simtrace/include/board.h +++ b/firmware/libboard/simtrace/include/board.h @@ -117,6 +117,11 @@ /* SPI flash write protect pin (active low, pulled low) */ #define PIN_SPI_WP {PA15, PIOA, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT} +/** Pin configuration to control USB pull-up on D+ + * @details the USB pull-up on D+ is enable by default on the board but can be disabled by setting PA16 high + */ +#define PIN_USB_PULLUP {PIO_PA16, PIOA, ID_PIOA, PIO_OUTPUT_0, PIO_DEFAULT} + /** USB definitions */ /* OpenMoko SIMtrace 2 USB vendor ID */ #define BOARD_USB_VENDOR_ID USB_VENDOR_OPENMOKO diff --git a/firmware/libcommon/source/usb.c b/firmware/libcommon/source/usb.c index e929a05..2864860 100644 --- a/firmware/libcommon/source/usb.c +++ b/firmware/libcommon/source/usb.c @@ -576,11 +576,20 @@ { /* Signal USB reset by disabling the pull-up on USB D+ for at least 10 ms */ +#ifdef PIN_USB_PULLUP const Pin usb_dp_pullup = PIN_USB_PULLUP; PIO_Configure(&usb_dp_pullup, 1); PIO_Set(&usb_dp_pullup); - mdelay(15); +#endif + + const Pin usb_dp = {PIO_PB11, PIOB, ID_PIOB, PIO_OUTPUT_0, PIO_DEFAULT}; + PIO_Configure(&usb_dp, 1); + PIO_Clear(&usb_dp); + mdelay(20); + +#ifdef PIN_USB_PULLUP PIO_Clear(&usb_dp_pullup); +#endif // Get std USB driver USBDDriver *pUsbd = USBD_GetDriver(); -- To view, visit https://gerrit.osmocom.org/10360 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: simtrace2 Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: I9b58d8101c2fcf5595026b675728826af26127a3 Gerrit-Change-Number: 10360 Gerrit-PatchSet: 1 Gerrit-Owner: Kévin Redon <kredon at sysmocom.de> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180806/744b01a1/attachment.htm>