aboutsummaryrefslogtreecommitdiffstats
path: root/src/stm32/usbotg.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/stm32/usbotg.c')
-rw-r--r--src/stm32/usbotg.c52
1 files changed, 26 insertions, 26 deletions
diff --git a/src/stm32/usbotg.c b/src/stm32/usbotg.c
index e1c880fb..e4b0dd17 100644
--- a/src/stm32/usbotg.c
+++ b/src/stm32/usbotg.c
@@ -254,6 +254,31 @@ usb_set_address(uint_fast8_t addr)
void
usb_set_configure(void)
{
+ // Configure and enable endpoints
+ USB_OTG_INEndpointTypeDef *epi = EPIN(USB_CDC_EP_ACM);
+ epi->DIEPTSIZ = (USB_CDC_EP_ACM_SIZE
+ | (1 << USB_OTG_DIEPTSIZ_PKTCNT_Pos));
+ epi->DIEPCTL = (
+ USB_OTG_DIEPCTL_SNAK | USB_OTG_DIEPCTL_USBAEP
+ | (0x03 << USB_OTG_DIEPCTL_EPTYP_Pos) | USB_OTG_DIEPCTL_SD0PID_SEVNFRM
+ | (USB_CDC_EP_ACM << USB_OTG_DIEPCTL_TXFNUM_Pos)
+ | (USB_CDC_EP_ACM_SIZE << USB_OTG_DIEPCTL_MPSIZ_Pos));
+
+ USB_OTG_OUTEndpointTypeDef *epo = EPOUT(USB_CDC_EP_BULK_OUT);
+ epo->DOEPTSIZ = 64 | (1 << USB_OTG_DOEPTSIZ_PKTCNT_Pos);
+ epo->DOEPCTL = (
+ USB_OTG_DOEPCTL_CNAK | USB_OTG_DOEPCTL_USBAEP | USB_OTG_DOEPCTL_EPENA
+ | (0x02 << USB_OTG_DOEPCTL_EPTYP_Pos) | USB_OTG_DOEPCTL_SD0PID_SEVNFRM
+ | (USB_CDC_EP_BULK_OUT_SIZE << USB_OTG_DOEPCTL_MPSIZ_Pos));
+
+ epi = EPIN(USB_CDC_EP_BULK_IN);
+ epi->DIEPTSIZ = (USB_CDC_EP_BULK_IN_SIZE
+ | (1 << USB_OTG_DIEPTSIZ_PKTCNT_Pos));
+ epi->DIEPCTL = (
+ USB_OTG_DIEPCTL_SNAK | USB_OTG_DIEPCTL_USBAEP
+ | (0x02 << USB_OTG_DIEPCTL_EPTYP_Pos) | USB_OTG_DIEPCTL_SD0PID_SEVNFRM
+ | (USB_CDC_EP_BULK_IN << USB_OTG_DIEPCTL_TXFNUM_Pos)
+ | (USB_CDC_EP_BULK_IN_SIZE << USB_OTG_DIEPCTL_MPSIZ_Pos));
}
void
@@ -280,7 +305,7 @@ usb_reset(void)
while (OTG->GRSTCTL & USB_OTG_GRSTCTL_TXFFLSH)
;
- // Configure and enable endpoints
+ // Configure and enable ep0
uint32_t mpsize_ep0 = 2;
USB_OTG_INEndpointTypeDef *epi = EPIN(0);
USB_OTG_OUTEndpointTypeDef *epo = EPOUT(0);
@@ -288,31 +313,6 @@ usb_reset(void)
epo->DOEPTSIZ = (64 | (1 << USB_OTG_DOEPTSIZ_STUPCNT_Pos)
| (1 << USB_OTG_DOEPTSIZ_PKTCNT_Pos));
epo->DOEPCTL = mpsize_ep0 | USB_OTG_DOEPCTL_EPENA | USB_OTG_DOEPCTL_CNAK;
-
- epi = EPIN(USB_CDC_EP_ACM);
- epi->DIEPTSIZ = (USB_CDC_EP_ACM_SIZE
- | (1 << USB_OTG_DIEPTSIZ_PKTCNT_Pos));
- epi->DIEPCTL = (
- USB_OTG_DIEPCTL_SNAK | USB_OTG_DIEPCTL_USBAEP
- | (0x03 << USB_OTG_DIEPCTL_EPTYP_Pos) | USB_OTG_DIEPCTL_SD0PID_SEVNFRM
- | (USB_CDC_EP_ACM << USB_OTG_DIEPCTL_TXFNUM_Pos)
- | (USB_CDC_EP_ACM_SIZE << USB_OTG_DIEPCTL_MPSIZ_Pos));
-
- epo = EPOUT(USB_CDC_EP_BULK_OUT);
- epo->DOEPTSIZ = 64 | (1 << USB_OTG_DOEPTSIZ_PKTCNT_Pos);
- epo->DOEPCTL = (
- USB_OTG_DOEPCTL_CNAK | USB_OTG_DOEPCTL_USBAEP | USB_OTG_DOEPCTL_EPENA
- | (0x02 << USB_OTG_DOEPCTL_EPTYP_Pos) | USB_OTG_DOEPCTL_SD0PID_SEVNFRM
- | (USB_CDC_EP_BULK_OUT_SIZE << USB_OTG_DOEPCTL_MPSIZ_Pos));
-
- epi = EPIN(USB_CDC_EP_BULK_IN);
- epi->DIEPTSIZ = (USB_CDC_EP_BULK_IN_SIZE
- | (1 << USB_OTG_DIEPTSIZ_PKTCNT_Pos));
- epi->DIEPCTL = (
- USB_OTG_DIEPCTL_SNAK | USB_OTG_DIEPCTL_USBAEP
- | (0x02 << USB_OTG_DIEPCTL_EPTYP_Pos) | USB_OTG_DIEPCTL_SD0PID_SEVNFRM
- | (USB_CDC_EP_BULK_IN << USB_OTG_DIEPCTL_TXFNUM_Pos)
- | (USB_CDC_EP_BULK_IN_SIZE << USB_OTG_DIEPCTL_MPSIZ_Pos));
}
// Handle a USB disconnect