From 4c74140b316d46cc62cd3d7031994c4f091e80e6 Mon Sep 17 00:00:00 2001 From: hathach Date: Thu, 16 Apr 2020 20:20:20 +0700 Subject: [PATCH 1/4] stm32 sysnopsys disconnect/connect --- src/portable/sony/cxd56/dcd_cxd56.c | 12 ++++++++++++ src/portable/st/synopsys/dcd_synopsys.c | 21 +++++++++++++++++---- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/portable/sony/cxd56/dcd_cxd56.c b/src/portable/sony/cxd56/dcd_cxd56.c index 320b7237e..57158838f 100644 --- a/src/portable/sony/cxd56/dcd_cxd56.c +++ b/src/portable/sony/cxd56/dcd_cxd56.c @@ -201,6 +201,18 @@ void dcd_remote_wakeup(uint8_t rhport) DEV_WAKEUP(usbdev); } +#if 0 // TODO implement for Spresense +void dcd_connect(uint8_t rhport) +{ + (void) rhport; +} + +void dcd_disconnect(uint8_t rhport) +{ + (void) rhport; +} +#endif + //--------------------------------------------------------------------+ // Endpoint API //--------------------------------------------------------------------+ diff --git a/src/portable/st/synopsys/dcd_synopsys.c b/src/portable/st/synopsys/dcd_synopsys.c index dc752b37a..38c284c5a 100644 --- a/src/portable/st/synopsys/dcd_synopsys.c +++ b/src/portable/st/synopsys/dcd_synopsys.c @@ -209,10 +209,6 @@ void dcd_init (uint8_t rhport) // Enable USB transceiver. USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_PWRDWN; - - // Soft Connect -> Enable pullup on D+/D-. - // This step does not appear to be specified in the programmer's model. - dev->DCTL &= ~USB_OTG_DCTL_SDIS; } void dcd_int_enable (uint8_t rhport) @@ -250,6 +246,23 @@ void dcd_remote_wakeup(uint8_t rhport) (void) rhport; } +void dcd_connect(uint8_t rhport) +{ + (void) rhport; + USB_OTG_DeviceTypeDef * dev = DEVICE_BASE; + + dev->DCTL &= ~USB_OTG_DCTL_SDIS; +} + +void dcd_disconnect(uint8_t rhport) +{ + (void) rhport; + USB_OTG_DeviceTypeDef * dev = DEVICE_BASE; + + dev->DCTL |= USB_OTG_DCTL_SDIS; +} + + /*------------------------------------------------------------------*/ /* DCD Endpoint port *------------------------------------------------------------------*/ From 63655ac9d790d55d7a002248dafe9df888606b18 Mon Sep 17 00:00:00 2001 From: hathach Date: Thu, 16 Apr 2020 20:43:26 +0700 Subject: [PATCH 2/4] cleanup for esp32 --- src/portable/espressif/esp32s2/dcd_esp32s2.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/portable/espressif/esp32s2/dcd_esp32s2.c b/src/portable/espressif/esp32s2/dcd_esp32s2.c index 126f3ea20..47c90fd13 100644 --- a/src/portable/espressif/esp32s2/dcd_esp32s2.c +++ b/src/portable/espressif/esp32s2/dcd_esp32s2.c @@ -190,9 +190,6 @@ void dcd_init(uint8_t rhport) USB_ENUMDONEMSK_M | USB_RESETDETMSK_M | USB_DISCONNINTMSK_M; - - ESP_LOGV(TAG, "DCD init - Soft CONNECT"); - USB0.dctl &= ~USB_SFTDISCON_M; // Connect } void dcd_set_address(uint8_t rhport, uint8_t dev_addr) @@ -216,18 +213,20 @@ void dcd_remote_wakeup(uint8_t rhport) (void)rhport; } -// disconnect by disabling internal pull-up resistor on D+/D- -void dcd_disconnect(uint8_t rhport) -{ - USB0.dctl |= USB_SFTDISCON_M; -} - // connect by enabling internal pull-up resistor on D+/D- void dcd_connect(uint8_t rhport) { + (void) rhport; USB0.dctl &= ~USB_SFTDISCON_M; } +// disconnect by disabling internal pull-up resistor on D+/D- +void dcd_disconnect(uint8_t rhport) +{ + (void) rhport; + USB0.dctl |= USB_SFTDISCON_M; +} + /*------------------------------------------------------------------*/ /* DCD Endpoint port *------------------------------------------------------------------*/ From 18d936b414bd91a6337bbbddef54c09adcf6e49a Mon Sep 17 00:00:00 2001 From: hathach Date: Thu, 16 Apr 2020 21:04:28 +0700 Subject: [PATCH 3/4] msp430 disconnect/connect --- src/portable/ti/msp430x5xx/dcd_msp430x5xx.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/portable/ti/msp430x5xx/dcd_msp430x5xx.c b/src/portable/ti/msp430x5xx/dcd_msp430x5xx.c index edccec33f..680d63588 100644 --- a/src/portable/ti/msp430x5xx/dcd_msp430x5xx.c +++ b/src/portable/ti/msp430x5xx/dcd_msp430x5xx.c @@ -134,9 +134,6 @@ void dcd_init (uint8_t rhport) // Enable reset and wait for it before continuing. USBIE |= RSTRIE; - // Enable pullup. - USBCNF |= PUR_EN; - USBKEYPID = 0; } @@ -207,6 +204,24 @@ void dcd_remote_wakeup(uint8_t rhport) (void) rhport; } +void dcd_connect(uint8_t rhport) +{ + (void) rhport; + + USBKEYPID = USBKEY; + USBCNF |= PUR_EN; // Enable pullup. + USBKEYPID = 0; +} + +void dcd_disconnect(uint8_t rhport) +{ + (void) rhport; + + USBKEYPID = USBKEY; + USBCNF &= ~PUR_EN; // Disable pullup. + USBKEYPID = 0; +} + /*------------------------------------------------------------------*/ /* DCD Endpoint port *------------------------------------------------------------------*/ From 3aaad8cd730d01a65065d9eb8b694221724151c3 Mon Sep 17 00:00:00 2001 From: hathach Date: Thu, 16 Apr 2020 21:30:12 +0700 Subject: [PATCH 4/4] add int enable/disable for pullup --- src/portable/ti/msp430x5xx/dcd_msp430x5xx.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/portable/ti/msp430x5xx/dcd_msp430x5xx.c b/src/portable/ti/msp430x5xx/dcd_msp430x5xx.c index 680d63588..1512f0de4 100644 --- a/src/portable/ti/msp430x5xx/dcd_msp430x5xx.c +++ b/src/portable/ti/msp430x5xx/dcd_msp430x5xx.c @@ -206,20 +206,24 @@ void dcd_remote_wakeup(uint8_t rhport) void dcd_connect(uint8_t rhport) { - (void) rhport; + dcd_int_disable(rhport); USBKEYPID = USBKEY; USBCNF |= PUR_EN; // Enable pullup. USBKEYPID = 0; + + dcd_int_enable(rhport); } void dcd_disconnect(uint8_t rhport) { - (void) rhport; + dcd_int_disable(rhport); USBKEYPID = USBKEY; USBCNF &= ~PUR_EN; // Disable pullup. USBKEYPID = 0; + + dcd_int_enable(rhport); } /*------------------------------------------------------------------*/