Fix matter shell with wf200 (#26845)
diff --git a/examples/platform/silabs/efr32/uart.cpp b/examples/platform/silabs/efr32/uart.cpp
index 8fab5f1..650f482 100644
--- a/examples/platform/silabs/efr32/uart.cpp
+++ b/examples/platform/silabs/efr32/uart.cpp
@@ -134,8 +134,6 @@
static Fifo_t sReceiveFifo;
static void UART_rx_callback(UARTDRV_Handle_t handle, Ecode_t transferStatus, uint8_t * data, UARTDRV_Count_t transferCount);
-static void UART_tx_callback(struct UARTDRV_HandleData * handle, Ecode_t transferStatus, uint8_t * data,
- UARTDRV_Count_t transferCount);
static void uartSendBytes(uint8_t * buffer, uint16_t nbOfBytes);
static bool InitFifo(Fifo_t * fifo, uint8_t * pDataBuffer, uint16_t bufferSize)
@@ -474,14 +472,15 @@
#endif
#if (defined(EFR32MG24) && defined(WF200_WIFI))
+ // Blocking transmit for the MG24 + WF200 since UART TX is multiplexed with
+ // WF200 SPI IRQ
pre_uart_transfer();
-#endif /* EFR32MG24 && WF200_WIFI */
-
+ UARTDRV_ForceTransmit(vcom_handle, (uint8_t *) buffer, nbOfBytes);
+ post_uart_transfer();
+#else
+ // Non Blocking Transmit
UARTDRV_Transmit(vcom_handle, (uint8_t *) buffer, nbOfBytes, UART_tx_callback);
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
-
-#if (defined(EFR32MG24) && defined(WF200_WIFI))
- post_uart_transfer();
#endif /* EFR32MG24 && WF200_WIFI */
#if defined(SL_CATALOG_POWER_MANAGER_PRESENT)