mirror of
https://github.com/espressif/esp-idf
synced 2025-03-09 17:19:09 -04:00
fix(spi_master): fix spi halt when remove device who using rc_fast
This commit is contained in:
parent
e40304b2ec
commit
b43104538b
@ -572,6 +572,15 @@ esp_err_t spi_bus_remove_device(spi_device_handle_t handle)
|
||||
|
||||
#if SOC_SPI_SUPPORT_CLK_RC_FAST
|
||||
if (handle->cfg.clock_source == SPI_CLK_SRC_RC_FAST) {
|
||||
// If no transactions from other device, acquire the bus to switch module clock to `SPI_CLK_SRC_DEFAULT`
|
||||
// because `SPI_CLK_SRC_RC_FAST` will be disabled then, which block following transactions
|
||||
if (handle->host->cur_cs == DEV_NUM_MAX) {
|
||||
spi_device_acquire_bus(handle, portMAX_DELAY);
|
||||
SPI_MASTER_PERI_CLOCK_ATOMIC() {
|
||||
spi_ll_set_clk_source(handle->host->hal.hw, SPI_CLK_SRC_DEFAULT);
|
||||
}
|
||||
spi_device_release_bus(handle);
|
||||
}
|
||||
periph_rtc_dig_clk8m_disable();
|
||||
}
|
||||
#endif
|
||||
|
@ -359,7 +359,7 @@ typedef enum { // TODO: [ESP32C5] IDF-8695 (inherit from C6)
|
||||
/**
|
||||
* @brief Array initializer for all supported clock sources of SPI
|
||||
*/
|
||||
#define SOC_SPI_CLKS {SOC_MOD_CLK_PLL_F160M, SOC_MOD_CLK_XTAL, SOC_MOD_CLK_RC_FAST}
|
||||
#define SOC_SPI_CLKS {SOC_MOD_CLK_PLL_F160M, SOC_MOD_CLK_RC_FAST, SOC_MOD_CLK_XTAL}
|
||||
|
||||
/**
|
||||
* @brief Type of SPI clock source.
|
||||
|
@ -354,7 +354,7 @@ typedef enum {
|
||||
/**
|
||||
* @brief Array initializer for all supported clock sources of SPI
|
||||
*/
|
||||
#define SOC_SPI_CLKS {SOC_MOD_CLK_PLL_F80M, SOC_MOD_CLK_XTAL, SOC_MOD_CLK_RC_FAST}
|
||||
#define SOC_SPI_CLKS {SOC_MOD_CLK_PLL_F80M, SOC_MOD_CLK_RC_FAST, SOC_MOD_CLK_XTAL}
|
||||
|
||||
/**
|
||||
* @brief Type of SPI clock source.
|
||||
|
@ -332,7 +332,7 @@ typedef enum {
|
||||
/**
|
||||
* @brief Array initializer for all supported clock sources of SPI
|
||||
*/
|
||||
#define SOC_SPI_CLKS {SOC_MOD_CLK_XTAL, SOC_MOD_CLK_PLL_F48M, SOC_MOD_CLK_RC_FAST}
|
||||
#define SOC_SPI_CLKS {SOC_MOD_CLK_XTAL, SOC_MOD_CLK_RC_FAST, SOC_MOD_CLK_PLL_F48M}
|
||||
|
||||
/**
|
||||
* @brief Type of SPI clock source.
|
||||
|
Loading…
x
Reference in New Issue
Block a user