mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-31 11:17:20 +02:00
fix(driver_spi): fixed p4 no dma polling trans cache sync fail
This commit is contained in:
@@ -1403,7 +1403,7 @@ esp_err_t SPI_MASTER_ISR_ATTR spi_device_polling_end(spi_device_handle_t handle,
|
|||||||
|
|
||||||
#if SOC_CACHE_INTERNAL_MEM_VIA_L1CACHE //invalidate here to let user access rx data in post_cb if possible
|
#if SOC_CACHE_INTERNAL_MEM_VIA_L1CACHE //invalidate here to let user access rx data in post_cb if possible
|
||||||
const spi_bus_attr_t *bus_attr = host->bus_attr;
|
const spi_bus_attr_t *bus_attr = host->bus_attr;
|
||||||
if (host->cur_trans_buf.buffer_to_rcv) {
|
if (bus_attr->dma_enabled && host->cur_trans_buf.buffer_to_rcv) {
|
||||||
uint16_t alignment = bus_attr->internal_mem_align_size;
|
uint16_t alignment = bus_attr->internal_mem_align_size;
|
||||||
uint32_t buffer_byte_len = (host->cur_trans_buf.trans->rxlength + 7) / 8;
|
uint32_t buffer_byte_len = (host->cur_trans_buf.trans->rxlength + 7) / 8;
|
||||||
buffer_byte_len = (buffer_byte_len + alignment - 1) & (~(alignment - 1));
|
buffer_byte_len = (buffer_byte_len + alignment - 1) & (~(alignment - 1));
|
||||||
|
@@ -1439,7 +1439,7 @@ static void test_master_fd_no_dma(void)
|
|||||||
.length = test_trans_len * 8,
|
.length = test_trans_len * 8,
|
||||||
};
|
};
|
||||||
unity_wait_for_signal("Slave ready");
|
unity_wait_for_signal("Slave ready");
|
||||||
TEST_ESP_OK(spi_device_transmit(dev0, &trans_cfg));
|
TEST_ESP_OK(spi_device_polling_transmit(dev0, &trans_cfg));
|
||||||
|
|
||||||
ESP_LOG_BUFFER_HEX("master tx", master_send, test_trans_len);
|
ESP_LOG_BUFFER_HEX("master tx", master_send, test_trans_len);
|
||||||
ESP_LOG_BUFFER_HEX_LEVEL("master rx", master_receive, test_trans_len, ESP_LOG_DEBUG);
|
ESP_LOG_BUFFER_HEX_LEVEL("master rx", master_receive, test_trans_len, ESP_LOG_DEBUG);
|
||||||
|
@@ -162,7 +162,7 @@ TEST_CASE("Test slave rx no_dma overwrite when length below/over config", "[spi]
|
|||||||
.length = 8 * 7,
|
.length = 8 * 7,
|
||||||
.tx_buffer = master_tx,
|
.tx_buffer = master_tx,
|
||||||
};
|
};
|
||||||
spi_device_transmit(spidev0, &master_tans);
|
spi_device_polling_transmit(spidev0, &master_tans);
|
||||||
|
|
||||||
TEST_ESP_OK(spi_slave_get_trans_result(TEST_SLAVE_HOST, &slave_out, portMAX_DELAY));
|
TEST_ESP_OK(spi_slave_get_trans_result(TEST_SLAVE_HOST, &slave_out, portMAX_DELAY));
|
||||||
|
|
||||||
@@ -181,7 +181,7 @@ TEST_CASE("Test slave rx no_dma overwrite when length below/over config", "[spi]
|
|||||||
TEST_ESP_OK(spi_slave_queue_trans(TEST_SLAVE_HOST, &slave_tans, portMAX_DELAY));
|
TEST_ESP_OK(spi_slave_queue_trans(TEST_SLAVE_HOST, &slave_tans, portMAX_DELAY));
|
||||||
|
|
||||||
master_tans.length = 8 * 11,
|
master_tans.length = 8 * 11,
|
||||||
spi_device_transmit(spidev0, &master_tans);
|
spi_device_polling_transmit(spidev0, &master_tans);
|
||||||
|
|
||||||
TEST_ESP_OK(spi_slave_get_trans_result(TEST_SLAVE_HOST, &slave_out, portMAX_DELAY));
|
TEST_ESP_OK(spi_slave_get_trans_result(TEST_SLAVE_HOST, &slave_out, portMAX_DELAY));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user