summaryrefslogtreecommitdiff
path: root/platforms
diff options
context:
space:
mode:
authorSergey Vlasov <sigprof@gmail.com>2023-07-03 01:53:54 +0300
committerGitHub <noreply@github.com>2023-07-03 08:53:54 +1000
commitb708658e2ea184402f6fad152c7596cbb40df508 (patch)
tree38260721e5360dcb9cbbd80c4e9273f4b86ac5fa /platforms
parent000ee31e2c64ad374b93be5a98f5529c48446188 (diff)
usbpd_stm32g4: Configure UCPD before disabling the dead battery mode (#21430)
Diffstat (limited to 'platforms')
-rw-r--r--platforms/chibios/drivers/usbpd_stm32g4.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/platforms/chibios/drivers/usbpd_stm32g4.c b/platforms/chibios/drivers/usbpd_stm32g4.c
index 0096f22f07..21b8f6db95 100644
--- a/platforms/chibios/drivers/usbpd_stm32g4.c
+++ b/platforms/chibios/drivers/usbpd_stm32g4.c
@@ -22,8 +22,6 @@
// Initialises the USBPD subsystem
__attribute__((weak)) void usbpd_init(void) {
- // Disable dead-battery signals
- PWR->CR3 |= PWR_CR3_UCPD_DBDIS;
// Enable the clock for the UCPD1 peripheral
RCC->APB1ENR2 |= RCC_APB1ENR2_UCPD1EN;
@@ -46,6 +44,11 @@ __attribute__((weak)) void usbpd_init(void) {
CR |= UCPD_CR_ANAMODE | UCPD_CR_CCENABLE_Msk;
// Apply the changes
UCPD1->CR = CR;
+
+ // Disable dead-battery signals only after UCPD1 is configured to ensure
+ // that the transition does not go through any intermediate state without
+ // any pull-down resistance.
+ PWR->CR3 |= PWR_CR3_UCPD_DBDIS;
}
// Gets the current state of the USBPD allowance