mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-31 19:24:33 +02:00
Merge branch 'ci/backport_i2s_ci_fix_to_v5.3' into 'release/v5.3'
ci(i2s&parlio): backport i2s and parlio ci fix (v5.3) See merge request espressif/esp-idf!34587
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||||
*/
|
*/
|
||||||
@@ -279,22 +279,15 @@ static void test_i2s_external_clk_src(bool is_master, bool is_external)
|
|||||||
.slot_cfg = I2S_STD_MSB_SLOT_DEFAULT_CONFIG(16, I2S_SLOT_MODE_STEREO),
|
.slot_cfg = I2S_STD_MSB_SLOT_DEFAULT_CONFIG(16, I2S_SLOT_MODE_STEREO),
|
||||||
.gpio_cfg = TEST_I2S_DEFAULT_GPIO(TEST_I2S_MCK_IO, is_master),
|
.gpio_cfg = TEST_I2S_DEFAULT_GPIO(TEST_I2S_MCK_IO, is_master),
|
||||||
};
|
};
|
||||||
|
std_cfg.clk_cfg.mclk_multiple = I2S_MCLK_MULTIPLE_512;
|
||||||
if (is_external) {
|
if (is_external) {
|
||||||
std_cfg.clk_cfg.clk_src = I2S_CLK_SRC_EXTERNAL;
|
std_cfg.clk_cfg.clk_src = I2S_CLK_SRC_EXTERNAL;
|
||||||
std_cfg.clk_cfg.ext_clk_freq_hz = 11289600;
|
std_cfg.clk_cfg.ext_clk_freq_hz = 22579200;
|
||||||
}
|
}
|
||||||
TEST_ESP_OK(i2s_channel_init_std_mode(tx_handle, &std_cfg));
|
TEST_ESP_OK(i2s_channel_init_std_mode(tx_handle, &std_cfg));
|
||||||
if (is_master && !is_external) {
|
|
||||||
i2s_std_slot_config_t slot_cfg = I2S_STD_PHILIPS_SLOT_DEFAULT_CONFIG(16, I2S_SLOT_MODE_STEREO);
|
|
||||||
memcpy(&std_cfg.slot_cfg, &slot_cfg, sizeof(i2s_std_slot_config_t));
|
|
||||||
}
|
|
||||||
TEST_ESP_OK(i2s_channel_init_std_mode(rx_handle, &std_cfg));
|
TEST_ESP_OK(i2s_channel_init_std_mode(rx_handle, &std_cfg));
|
||||||
|
|
||||||
if (is_master) {
|
if (is_master) {
|
||||||
if (!is_external) {
|
|
||||||
// Delay bclk to get compensate the data delay
|
|
||||||
I2S0.rx_timing.rx_bck_out_dm = 1;
|
|
||||||
}
|
|
||||||
uint8_t mst_tx_data[4] = {0x12, 0x34, 0x56, 0x78};
|
uint8_t mst_tx_data[4] = {0x12, 0x34, 0x56, 0x78};
|
||||||
size_t w_bytes = 4;
|
size_t w_bytes = 4;
|
||||||
while (w_bytes == 4) {
|
while (w_bytes == 4) {
|
||||||
|
@@ -178,6 +178,8 @@ static void pulse_delimiter_sender_task_i2s(void *args)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if CONFIG_IDF_TARGET_ESP32C6 // TODO: IDF-9806 fix the bit shift issue in other target
|
||||||
|
|
||||||
static void cs_high(spi_transaction_t *trans)
|
static void cs_high(spi_transaction_t *trans)
|
||||||
{
|
{
|
||||||
gpio_set_level(TEST_VALID_GPIO, 1);
|
gpio_set_level(TEST_VALID_GPIO, 1);
|
||||||
@@ -274,6 +276,7 @@ static void level_delimiter_sender_task_spi(void *args)
|
|||||||
vTaskDelay(portMAX_DELAY);
|
vTaskDelay(portMAX_DELAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static bool test_delimiter(parlio_rx_delimiter_handle_t deli, bool free_running_clk, void (*sender_task_thread)(void *args))
|
static bool test_delimiter(parlio_rx_delimiter_handle_t deli, bool free_running_clk, void (*sender_task_thread)(void *args))
|
||||||
{
|
{
|
||||||
@@ -339,6 +342,7 @@ static bool test_delimiter(parlio_rx_delimiter_handle_t deli, bool free_running_
|
|||||||
return is_success;
|
return is_success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if CONFIG_IDF_TARGET_ESP32C6 // TODO: IDF-9806 fix the bit shift issue in other target
|
||||||
// This test case uses level delimiter
|
// This test case uses level delimiter
|
||||||
TEST_CASE("parallel_rx_unit_level_delimiter_test_via_spi", "[parlio_rx]")
|
TEST_CASE("parallel_rx_unit_level_delimiter_test_via_spi", "[parlio_rx]")
|
||||||
{
|
{
|
||||||
@@ -358,13 +362,14 @@ TEST_CASE("parallel_rx_unit_level_delimiter_test_via_spi", "[parlio_rx]")
|
|||||||
TEST_ESP_OK(parlio_del_rx_delimiter(deli));
|
TEST_ESP_OK(parlio_del_rx_delimiter(deli));
|
||||||
TEST_ASSERT(is_success);
|
TEST_ASSERT(is_success);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// This test case uses pulse delimiter
|
// This test case uses pulse delimiter
|
||||||
TEST_CASE("parallel_rx_unit_pulse_delimiter_test_via_i2s", "[parlio_rx]")
|
TEST_CASE("parallel_rx_unit_pulse_delimiter_test_via_i2s", "[parlio_rx]")
|
||||||
{
|
{
|
||||||
parlio_rx_pulse_delimiter_config_t pls_deli_cfg = {
|
parlio_rx_pulse_delimiter_config_t pls_deli_cfg = {
|
||||||
.valid_sig_line_id = TEST_VALID_SIG,
|
.valid_sig_line_id = TEST_VALID_SIG,
|
||||||
.sample_edge = PARLIO_SAMPLE_EDGE_POS,
|
.sample_edge = PARLIO_SAMPLE_EDGE_NEG,
|
||||||
.bit_pack_order = PARLIO_BIT_PACK_ORDER_MSB,
|
.bit_pack_order = PARLIO_BIT_PACK_ORDER_MSB,
|
||||||
.eof_data_len = TEST_EOF_DATA_LEN,
|
.eof_data_len = TEST_EOF_DATA_LEN,
|
||||||
.timeout_ticks = 0,
|
.timeout_ticks = 0,
|
||||||
|
@@ -1107,10 +1107,22 @@ config SOC_PARLIO_RX_UNIT_MAX_DATA_WIDTH
|
|||||||
int
|
int
|
||||||
default 16
|
default 16
|
||||||
|
|
||||||
|
config SOC_PARLIO_TX_CLK_SUPPORT_GATING
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_PARLIO_RX_CLK_SUPPORT_GATING
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config SOC_PARLIO_RX_CLK_SUPPORT_OUTPUT
|
config SOC_PARLIO_RX_CLK_SUPPORT_OUTPUT
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
||||||
|
config SOC_PARLIO_TRANS_BIT_ALIGN
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config SOC_PARLIO_TX_SIZE_BY_DMA
|
config SOC_PARLIO_TX_SIZE_BY_DMA
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
@@ -420,7 +420,10 @@
|
|||||||
#define SOC_PARLIO_RX_UNITS_PER_GROUP 1U /*!< number of RX units in each group */
|
#define SOC_PARLIO_RX_UNITS_PER_GROUP 1U /*!< number of RX units in each group */
|
||||||
#define SOC_PARLIO_TX_UNIT_MAX_DATA_WIDTH 16 /*!< Number of data lines of the TX unit */
|
#define SOC_PARLIO_TX_UNIT_MAX_DATA_WIDTH 16 /*!< Number of data lines of the TX unit */
|
||||||
#define SOC_PARLIO_RX_UNIT_MAX_DATA_WIDTH 16 /*!< Number of data lines of the RX unit */
|
#define SOC_PARLIO_RX_UNIT_MAX_DATA_WIDTH 16 /*!< Number of data lines of the RX unit */
|
||||||
|
#define SOC_PARLIO_TX_CLK_SUPPORT_GATING 1 /*!< Support gating TX clock */
|
||||||
|
#define SOC_PARLIO_RX_CLK_SUPPORT_GATING 1 /*!< Support gating RX clock */
|
||||||
#define SOC_PARLIO_RX_CLK_SUPPORT_OUTPUT 1 /*!< Support output RX clock to a GPIO */
|
#define SOC_PARLIO_RX_CLK_SUPPORT_OUTPUT 1 /*!< Support output RX clock to a GPIO */
|
||||||
|
#define SOC_PARLIO_TRANS_BIT_ALIGN 1 /*!< Support bit alignment in transaction */
|
||||||
#define SOC_PARLIO_TX_SIZE_BY_DMA 1 /*!< Transaction length is controlled by DMA instead of indicated by register */
|
#define SOC_PARLIO_TX_SIZE_BY_DMA 1 /*!< Transaction length is controlled by DMA instead of indicated by register */
|
||||||
|
|
||||||
/*--------------------------- MPI CAPS ---------------------------------------*/
|
/*--------------------------- MPI CAPS ---------------------------------------*/
|
||||||
|
@@ -262,20 +262,12 @@ examples/peripherals/mcpwm/mcpwm_sync:
|
|||||||
examples/peripherals/parlio:
|
examples/peripherals/parlio:
|
||||||
disable:
|
disable:
|
||||||
- if: SOC_PARLIO_SUPPORTED != 1
|
- if: SOC_PARLIO_SUPPORTED != 1
|
||||||
disable_test:
|
|
||||||
- if: IDF_TARGET == "esp32p4"
|
|
||||||
temporary: true
|
|
||||||
reason: lack of runner
|
|
||||||
depends_components:
|
depends_components:
|
||||||
- esp_driver_parlio
|
- esp_driver_parlio
|
||||||
|
|
||||||
examples/peripherals/parlio/parlio_rx:
|
examples/peripherals/parlio/parlio_rx:
|
||||||
disable:
|
disable:
|
||||||
- if: SOC_PARLIO_SUPPORTED != 1
|
- if: SOC_PARLIO_SUPPORTED != 1
|
||||||
disable_test:
|
|
||||||
- if: IDF_TARGET == "esp32p4"
|
|
||||||
temporary: true
|
|
||||||
reason: lack of runner
|
|
||||||
depends_components:
|
depends_components:
|
||||||
- esp_driver_parlio
|
- esp_driver_parlio
|
||||||
|
|
||||||
|
@@ -0,0 +1,22 @@
|
|||||||
|
# SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
import pytest
|
||||||
|
from pytest_embedded import Dut
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.esp32c6
|
||||||
|
@pytest.mark.esp32h2
|
||||||
|
@pytest.mark.esp32p4
|
||||||
|
@pytest.mark.generic
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
'config',
|
||||||
|
[
|
||||||
|
'flash_stream',
|
||||||
|
],
|
||||||
|
indirect=True,
|
||||||
|
)
|
||||||
|
def test_logic_analyzer_flash_stream(dut: Dut) -> None:
|
||||||
|
dut.expect(r'flash_fat: Probe data partition base addr: \w+ size: \w+')
|
||||||
|
dut.expect(r'flash_fat: flash FATFS mounted')
|
||||||
|
dut.expect(r'esp_probe: Dump data size reached the max dump size')
|
||||||
|
dut.expect(r'example: Probe finished! [0-9]+ \(\w+\) bytes dumped')
|
@@ -0,0 +1 @@
|
|||||||
|
CONFIG_EXAMPLE_FLASH_STREAM=y
|
Reference in New Issue
Block a user