Skip to content

Commit e770db4

Browse files
fixup! Refactor USB pullup handling
1 parent 0f8b172 commit e770db4

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

cores/arduino/stm32/usb/usbd_if.c

+10-10
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
#if defined(USB_DISC_PIN)
1414
// Compatibility with the old way to specify this
15-
#define USBD_ATTACH_PIN digitalPinToPinName(USB_DISC_PIN)
15+
#define USBD_ATTACH_PINNAME digitalPinToPinName(USB_DISC_PIN)
1616
#define USBD_ATTACH_LEVEL LOW
1717
#warning "USB_DISC_PIN is deprecated, use USBD_ATTACH_PINNAME instead"
1818
#endif /* USB_DISC_PIN */
@@ -23,7 +23,7 @@
2323
// bit of a hack by using the DP pin as a DETACH pin, so it will be
2424
// driven low very briefly, which looks like a missing pullup to the
2525
// host. Probably violates USB specs, but works properly in practice.
26-
#if !defined(USBD_ATTACH_PINNAME) && !defined(USBD_DETACH_PIN) && !defined(USB_OTG_DCTL_SDIS)
26+
#if !defined(USBD_ATTACH_PINNAME) && !defined(USBD_DETACH_PINNAME) && !defined(USB_OTG_DCTL_SDIS)
2727
#if defined(USE_USB_HS_IN_FS)
2828
#define USBD_DETACH_PINNAME USB_OTG_HS_DP
2929
#elif defined(USB_OTG_FS)
@@ -35,19 +35,19 @@
3535
// Make sure to revert to INPUT (instead of OUTPUT HIGH) after the
3636
// detach "pulse" to restore normal operation.
3737
#define USBD_ATTACH_MODE INPUT
38-
#endif /* !defined(USBD_ATTACH_PINNAME) && !defined(USBD_DETACH_PIN) && !defined(USB_OTG_DCTL_SDIS) */
38+
#endif /* !defined(USBD_ATTACH_PINNAME) && !defined(USBD_DETACH_PINNAME) && !defined(USB_OTG_DCTL_SDIS) */
3939

40-
#if defined(USBD_ATTACH_PINNAME) && !defined(USBD_ATTACH_MODE)
40+
#if defined(USBD_DETACH_PINNAME) && !defined(USBD_ATTACH_MODE)
4141
// Normally (e.g. when controlling a transistor), keep the pin in
4242
// OUTPUT mode after the detach "pulse" to actively drive the
4343
// transistor.
4444
#define USBD_ATTACH_MODE OUTPUT
4545
#endif /* defined(USBD_ATTACH_PINNAME) && !defined(USBD_ATTACH_MODE) */
4646

4747
// Some sanity checks
48-
#if defined(USBD_ATTACH_PINNAME) && defined(USBD_DETACH_PIN)
49-
#error "Cannot define both USBD_ATTACH_PINNAME and USBD_DETACH_PIN"
50-
#endif /* defined(USBD_ATTACH_PINNAME) && defined(USBD_DETACH_PIN) */
48+
#if defined(USBD_ATTACH_PINNAME) && defined(USBD_DETACH_PINNAME)
49+
#error "Cannot define both USBD_ATTACH_PINNAME and USBD_DETACH_PINNAME"
50+
#endif /* defined(USBD_ATTACH_PINNAME) && defined(USBD_DETACH_PINNAME) */
5151
#if defined(USBD_ATTACH_PINNAME) && !defined(USBD_ATTACH_LEVEL)
5252
#error "USBD_ATTACH_PINNAME also needs USBD_ATTACH_LEVEL defined"
5353
#endif /* defined(USBD_ATTACH_PINNAME) && !defined(USBD_ATTACH_LEVEL) */
@@ -64,17 +64,17 @@ WEAK void USBD_reenumerate(void)
6464
{
6565
#ifndef USBD_REENUM_DISABLED
6666
/* Re-enumerate the USB */
67-
#ifdef USBD_DETACH_PINNAME
67+
#if defined(USBD_DETACH_PINNAME)
6868
// Default is attached, so detach, wait, and reattach.
6969
pin_function(USBD_DETACH_PINNAME, STM_PIN_DATA(STM_MODE_OUTPUT_PP, GPIO_NOPULL, 0));
7070
digitalWriteFast(USBD_DETACH_PINNAME, USBD_DETACH_LEVEL);
7171
delay(USBD_ENUM_DELAY);
72-
if (USBD_ATTACH_MODE_INPUT == OUTPUT) {
72+
if (USBD_ATTACH_MODE == OUTPUT) {
7373
digitalWriteFast(USBD_DETACH_PINNAME, !USBD_DETACH_LEVEL);
7474
} else {
7575
pin_function(USBD_DETACH_PINNAME, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, 0));
7676
}
77-
#elif USBD_ATTACH_PINNAME
77+
#elif defined(USBD_ATTACH_PINNAME)
7878
// Default is detached, so just attach
7979
pin_function(USBD_ATTACH_PINNAME, STM_PIN_DATA(STM_MODE_OUTPUT_PP, GPIO_NOPULL, 0));
8080
digitalWriteFast(USBD_ATTACH_PINNAME, USBD_ATTACH_LEVEL);

0 commit comments

Comments
 (0)