Browse Source

usbpd_stm32g4: Configure UCPD before disabling the dead battery mode (#21430)

Sergey Vlasov 3 years ago
parent
commit
b708658e2e
1 changed files with 5 additions and 2 deletions
  1. 5 2
      platforms/chibios/drivers/usbpd_stm32g4.c

+ 5 - 2
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