diff --git a/source/Core/BSP/Miniware/fusb302b.cpp b/source/Core/BSP/Miniware/fusb302b.cpp index dbb218b9..99cdf495 100644 --- a/source/Core/BSP/Miniware/fusb302b.cpp +++ b/source/Core/BSP/Miniware/fusb302b.cpp @@ -132,10 +132,15 @@ bool fusb_setup() { return false; } /* Fully reset the FUSB302B */ - // fusb_write_byte( FUSB_RESET, FUSB_RESET_SW_RES); - // osDelay(2); - if (!fusb_read_id()) { - return false; + fusb_write_byte(FUSB_RESET, FUSB_RESET_SW_RES); + vTaskDelay(TICKS_10MS); + uint8_t tries = 0; + while (!fusb_read_id()) { + vTaskDelay(TICKS_10MS); + tries++; + if (tries > 5) { + return false; // Welp :( + } } /* Turn on all power */ @@ -157,12 +162,12 @@ bool fusb_setup() { /* Measure CC1 */ fusb_write_byte(FUSB_SWITCHES0, 0x07); - osDelay(10); + vTaskDelay(TICKS_10MS); uint8_t cc1 = fusb_read_byte(FUSB_STATUS0) & FUSB_STATUS0_BC_LVL; /* Measure CC2 */ fusb_write_byte(FUSB_SWITCHES0, 0x0B); - osDelay(10); + vTaskDelay(TICKS_10MS); uint8_t cc2 = fusb_read_byte(FUSB_STATUS0) & FUSB_STATUS0_BC_LVL; /* Select the correct CC line for BMC signaling; also enable AUTO_CRC */ diff --git a/source/Core/BSP/Pine64/fusb302b.cpp b/source/Core/BSP/Pine64/fusb302b.cpp index ee2f5e9e..08a399f9 100644 --- a/source/Core/BSP/Pine64/fusb302b.cpp +++ b/source/Core/BSP/Pine64/fusb302b.cpp @@ -127,10 +127,10 @@ bool fusb_setup() { } /* Fully reset the FUSB302B */ fusb_write_byte(FUSB_RESET, FUSB_RESET_SW_RES); - osDelay(2); + vTaskDelay(TICKS_10MS); uint8_t tries = 0; while (!fusb_read_id()) { - osDelay(10); + vTaskDelay(TICKS_10MS); tries++; if (tries > 5) { return false; // Welp :( @@ -156,12 +156,12 @@ bool fusb_setup() { /* Measure CC1 */ fusb_write_byte(FUSB_SWITCHES0, 0x07); - osDelay(10); + vTaskDelay(TICKS_10MS); uint8_t cc1 = fusb_read_byte(FUSB_STATUS0) & FUSB_STATUS0_BC_LVL; /* Measure CC2 */ fusb_write_byte(FUSB_SWITCHES0, 0x0B); - osDelay(10); + vTaskDelay(TICKS_10MS); uint8_t cc2 = fusb_read_byte(FUSB_STATUS0) & FUSB_STATUS0_BC_LVL; /* Select the correct CC line for BMC signaling; also enable AUTO_CRC */ diff --git a/source/Core/Drivers/FUSB302/int_n.cpp b/source/Core/Drivers/FUSB302/int_n.cpp index 4ba4aa57..1ca67894 100644 --- a/source/Core/Drivers/FUSB302/int_n.cpp +++ b/source/Core/Drivers/FUSB302/int_n.cpp @@ -63,7 +63,7 @@ void InterruptHandler::Thread(const void *arg) { for (;;) { // If the irq is low continue, otherwise wait for irq or timeout if (!getFUS302IRQLow()) { - xTaskNotifyWait(0x00, 0x0F, NULL, PolicyEngine::setupCompleteOrTimedOut() ? 100 : 10); + xTaskNotifyWait(0x00, 0x0F, NULL, TICKS_SECOND * 30); } /* Read the FUSB302B status and interrupt registers */ fusb_get_status(&status); diff --git a/source/Core/Drivers/FUSB302/protocol_tx.cpp b/source/Core/Drivers/FUSB302/protocol_tx.cpp index d08d4304..ca9410b5 100644 --- a/source/Core/Drivers/FUSB302/protocol_tx.cpp +++ b/source/Core/Drivers/FUSB302/protocol_tx.cpp @@ -16,10 +16,10 @@ */ #include "protocol_tx.h" +#include "Defines.h" #include "fusb302b.h" #include "fusbpd.h" #include "policy_engine.h" - #include osThreadId ProtocolTransmit::TaskHandle = NULL; @@ -103,7 +103,7 @@ ProtocolTransmit::protocol_tx_state ProtocolTransmit::protocol_tx_construct_mess if (PolicyEngine::isPD3_0()) { /* If we're starting an AMS, wait for permission to transmit */ while (fusb_get_typec_current() != fusb_sink_tx_ok) { - osDelay(1); + vTaskDelay(TICKS_10MS); } } messageSending = true; diff --git a/source/Core/Threads/POWThread.cpp b/source/Core/Threads/POWThread.cpp index a508b6b9..edb5d3c7 100644 --- a/source/Core/Threads/POWThread.cpp +++ b/source/Core/Threads/POWThread.cpp @@ -26,6 +26,7 @@ void startPOWTask(void const *argument __unused) { fusb302_start_processing(); } #endif + vTaskDelay(TICKS_100MS); // Init any other misc sensors postRToSInit();