aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os/hal/ports/STM32/LLD/USBv1/stm32_usb.h16
-rw-r--r--os/hal/ports/STM32/LLD/USBv1/usb_lld.h20
-rw-r--r--os/hal/ports/STM32/STM32F0xx/stm32_registry.h1
-rw-r--r--os/hal/ports/STM32/STM32F1xx/stm32_registry.h3
-rw-r--r--os/hal/ports/STM32/STM32F37x/stm32_registry.h1
-rw-r--r--os/hal/ports/STM32/STM32F3xx/stm32_registry.h5
-rw-r--r--os/hal/ports/STM32/STM32L1xx/stm32_registry.h2
-rw-r--r--testhal/STM32/STM32F0xx/USB_CDC/main.c7
8 files changed, 40 insertions, 15 deletions
diff --git a/os/hal/ports/STM32/LLD/USBv1/stm32_usb.h b/os/hal/ports/STM32/LLD/USBv1/stm32_usb.h
index 69f7beb62..7b74bf7d9 100644
--- a/os/hal/ports/STM32/LLD/USBv1/stm32_usb.h
+++ b/os/hal/ports/STM32/LLD/USBv1/stm32_usb.h
@@ -65,6 +65,14 @@ typedef struct {
* @brief Buffer Table Address.
*/
volatile uint32_t BTABLE;
+ /*
+ * @brief LPM Control and Status Register.
+ */
+ volatile uint32_t LPMCSR;
+ /*
+ * @brief Battery Charging Detector
+ */
+ volatile uint32_t BCDR;
} stm32_usb_t;
/**
@@ -95,14 +103,6 @@ typedef struct {
* @brief RX counter register 1.
*/
volatile uint16_t RXCOUNT1;
- /*
- * @brief LPM Control and Status Register.
- */
- volatile uint32_t LPMCSR;
- /*
- * @brief Battery Charging Detector
- */
- volatile uint32_t BCDR;
} stm32_usb_descriptor_t;
/**
diff --git a/os/hal/ports/STM32/LLD/USBv1/usb_lld.h b/os/hal/ports/STM32/LLD/USBv1/usb_lld.h
index 090200641..b32597921 100644
--- a/os/hal/ports/STM32/LLD/USBv1/usb_lld.h
+++ b/os/hal/ports/STM32/LLD/USBv1/usb_lld.h
@@ -404,6 +404,26 @@ struct USBDriver {
#define usb_lld_get_transaction_size(usbp, ep) \
((usbp)->epc[ep]->out_state->rxcnt)
+#if STM32_USB_HAS_BCDR || defined(__DOXYGEN__)
+/**
+ * @brief Connects the USB device.
+ *
+ * @api
+ */
+#if !defined(usb_lld_connect_bus)
+#define usb_lld_connect_bus(usbp) (STM32_USB->BCDR |= USB_BCDR_DPPU)
+#endif
+
+/**
+ * @brief Disconnect the USB device.
+ *
+ * @api
+ */
+#if !defined(usb_lld_disconnect_bus)
+#define usb_lld_disconnect_bus(usbp) (STM32_USB->BCDR &= ~USB_BCDR_DPPU)
+#endif
+#endif /* STM32_USB_HAS_BCDR */
+
/*===========================================================================*/
/* External declarations. */
/*===========================================================================*/
diff --git a/os/hal/ports/STM32/STM32F0xx/stm32_registry.h b/os/hal/ports/STM32/STM32F0xx/stm32_registry.h
index 19607550c..0745791ba 100644
--- a/os/hal/ports/STM32/STM32F0xx/stm32_registry.h
+++ b/os/hal/ports/STM32/STM32F0xx/stm32_registry.h
@@ -195,6 +195,7 @@
#if defined(STM32F042x6) || defined(STM32F048xx) || defined(STM32F072xB) || \
defined(STM32F078xx)
#define STM32_HAS_USB TRUE
+#define STM32_USB_HAS_BCDR TRUE
#else
#define STM32_HAS_USB FALSE
#endif
diff --git a/os/hal/ports/STM32/STM32F1xx/stm32_registry.h b/os/hal/ports/STM32/STM32F1xx/stm32_registry.h
index bc09c7d59..474bf1332 100644
--- a/os/hal/ports/STM32/STM32F1xx/stm32_registry.h
+++ b/os/hal/ports/STM32/STM32F1xx/stm32_registry.h
@@ -582,6 +582,7 @@
/* USB attributes.*/
#define STM32_HAS_USB TRUE
+#define STM32_USB_HAS_BCDR FALSE
#define STM32_HAS_OTG1 FALSE
#define STM32_HAS_OTG2 FALSE
/** @} */
@@ -756,6 +757,7 @@
/* USB attributes.*/
#define STM32_HAS_USB TRUE
+#define STM32_USB_HAS_BCDR FALSE
#define STM32_HAS_OTG1 FALSE
#define STM32_HAS_OTG2 FALSE
/** @} */
@@ -930,6 +932,7 @@
/* USB attributes.*/
#define STM32_HAS_USB TRUE
+#define STM32_USB_HAS_BCDR FALSE
#define STM32_HAS_OTG1 FALSE
#define STM32_HAS_OTG2 FALSE
/** @} */
diff --git a/os/hal/ports/STM32/STM32F37x/stm32_registry.h b/os/hal/ports/STM32/STM32F37x/stm32_registry.h
index 08c940a39..e0a38489a 100644
--- a/os/hal/ports/STM32/STM32F37x/stm32_registry.h
+++ b/os/hal/ports/STM32/STM32F37x/stm32_registry.h
@@ -206,6 +206,7 @@
/* USB attributes.*/
#define STM32_HAS_USB TRUE
+#define STM32_USB_HAS_BCDR FALSE
#define STM32_HAS_OTG1 FALSE
#define STM32_HAS_OTG2 FALSE
#endif /* defined(STM32F373xC) */
diff --git a/os/hal/ports/STM32/STM32F3xx/stm32_registry.h b/os/hal/ports/STM32/STM32F3xx/stm32_registry.h
index 1336a6ed8..b60a40dc6 100644
--- a/os/hal/ports/STM32/STM32F3xx/stm32_registry.h
+++ b/os/hal/ports/STM32/STM32F3xx/stm32_registry.h
@@ -204,6 +204,7 @@
/* USB attributes.*/
#define STM32_HAS_USB TRUE
+#define STM32_USB_HAS_BCDR FALSE
#define STM32_HAS_OTG1 FALSE
#define STM32_HAS_OTG2 FALSE
#endif /* defined(STM32F303xC) */
@@ -658,6 +659,7 @@
/* USB attributes.*/
#define STM32_HAS_USB TRUE
+#define STM32_USB_HAS_BCDR FALSE
#define STM32_HAS_OTG1 FALSE
#define STM32_HAS_OTG2 FALSE
#endif /* defined(STM32F302x8) */
@@ -821,6 +823,7 @@
/* USB attributes.*/
#define STM32_HAS_USB TRUE
+#define STM32_USB_HAS_BCDR FALSE
#define STM32_HAS_OTG1 FALSE
#define STM32_HAS_OTG2 FALSE
#endif /* defined(STM32F302xC) */
@@ -971,6 +974,7 @@
/* USB attributes.*/
#define STM32_HAS_USB TRUE
+#define STM32_USB_HAS_BCDR FALSE
#define STM32_HAS_OTG1 FALSE
#define STM32_HAS_OTG2 FALSE
#endif /* defined(STM32F318x8) */
@@ -1283,6 +1287,7 @@
/* USB attributes.*/
#define STM32_HAS_USB TRUE
+#define STM32_USB_HAS_BCDR FALSE
#define STM32_HAS_OTG1 FALSE
#define STM32_HAS_OTG2 FALSE
#endif /* defined(STM32F358xC) */
diff --git a/os/hal/ports/STM32/STM32L1xx/stm32_registry.h b/os/hal/ports/STM32/STM32L1xx/stm32_registry.h
index 08e5cc012..b9e811dd8 100644
--- a/os/hal/ports/STM32/STM32L1xx/stm32_registry.h
+++ b/os/hal/ports/STM32/STM32L1xx/stm32_registry.h
@@ -178,6 +178,7 @@
/* USB attributes.*/
#define STM32_HAS_USB TRUE
+#define STM32_USB_HAS_BCDR FALSE
#define STM32_HAS_OTG1 FALSE
#define STM32_HAS_OTG2 FALSE
@@ -333,6 +334,7 @@
/* USB attributes.*/
#define STM32_HAS_USB TRUE
+#define STM32_USB_HAS_BCDR FALSE
#define STM32_HAS_OTG1 FALSE
#define STM32_HAS_OTG2 FALSE
diff --git a/testhal/STM32/STM32F0xx/USB_CDC/main.c b/testhal/STM32/STM32F0xx/USB_CDC/main.c
index f6f304cdc..24ee2c278 100644
--- a/testhal/STM32/STM32F0xx/USB_CDC/main.c
+++ b/testhal/STM32/STM32F0xx/USB_CDC/main.c
@@ -36,13 +36,6 @@
#define USBD1_INTERRUPT_REQUEST_EP 2
/*
- * DP resistor control is not possible on the STM32F3-Discovery, using stubs
- * for the connection macros.
- */
-#define usb_lld_connect_bus(usbp)
-#define usb_lld_disconnect_bus(usbp)
-
-/*
* Serial over USB Driver structure.
*/
static SerialUSBDriver SDU1;