diff --git a/source/Core/BSP/Miniware/Power.cpp b/source/Core/BSP/Miniware/Power.cpp index 10494ea9..27384a2c 100644 --- a/source/Core/BSP/Miniware/Power.cpp +++ b/source/Core/BSP/Miniware/Power.cpp @@ -8,6 +8,7 @@ #include "int_n.h" #include "policy_engine.h" bool FUSB302_present = false; +bool FUSB302_probed = false; void power_check() { #ifdef POW_PD @@ -28,7 +29,12 @@ void power_check() { } uint8_t usb_pd_detect() { #ifdef POW_PD - FUSB302_present = fusb302_detect(); + if (FUSB302_probed) { + return FUSB302_present; + } else { + FUSB302_present = fusb302_detect(); + FUSB302_probed = true; + } return FUSB302_present; #endif return false; diff --git a/source/Core/BSP/Pine64/Power.cpp b/source/Core/BSP/Pine64/Power.cpp index 6de2fe82..540d757e 100644 --- a/source/Core/BSP/Pine64/Power.cpp +++ b/source/Core/BSP/Pine64/Power.cpp @@ -8,6 +8,7 @@ #include "int_n.h" #include "policy_engine.h" bool FUSB302_present = false; +bool FUSB302_probed = false; void power_check() { #ifdef POW_PD @@ -28,8 +29,12 @@ void power_check() { } uint8_t usb_pd_detect() { #ifdef POW_PD - FUSB302_present = fusb302_detect(); - + if (FUSB302_probed) { + return FUSB302_present; + } else { + FUSB302_present = fusb302_detect(); + FUSB302_probed = true; + } return FUSB302_present; #endif return false;