summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhathach <[email protected]>2021-08-14 01:51:13 +0700
committerhathach <[email protected]>2021-08-14 01:51:13 +0700
commit6af1950c8d90c41664b079ad78a0918b4821ea92 (patch)
tree95d660604628c297b11c3a26d97288e3e2f2aa29 /src
parent0ec794376bdc28aea3def01cc9fcbb7bcc6d5201 (diff)
synopsys clear DAD on bus_reset
Diffstat (limited to 'src')
-rw-r--r--src/portable/st/synopsys/dcd_synopsys.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/portable/st/synopsys/dcd_synopsys.c b/src/portable/st/synopsys/dcd_synopsys.c
index e36c2ba26..5a5645dd4 100644
--- a/src/portable/st/synopsys/dcd_synopsys.c
+++ b/src/portable/st/synopsys/dcd_synopsys.c
@@ -192,6 +192,10 @@ static void bus_reset(uint8_t rhport)
out_ep[n].DOEPCTL |= USB_OTG_DOEPCTL_SNAK;
}
+ // clear device address
+ dev->DCFG &= ~USB_OTG_DCFG_DAD_Msk;
+
+ // TODO should probably assign value when reset rather than OR
dev->DAINTMSK |= (1 << USB_OTG_DAINTMSK_OEPM_Pos) | (1 << USB_OTG_DAINTMSK_IEPM_Pos);
dev->DOEPMSK |= USB_OTG_DOEPMSK_STUPM | USB_OTG_DOEPMSK_XFRCM;
dev->DIEPMSK |= USB_OTG_DIEPMSK_TOM | USB_OTG_DIEPMSK_XFRCM;