Merge branch 'feature/lp_i2s' into 'master'

lp_i2s: support lp_i2s driver

Closes IDF-10355

See merge request espressif/esp-idf!31494
This commit is contained in:
Armando (Dou Yiwen)
2024-08-05 17:55:35 +08:00
39 changed files with 1885 additions and 61 deletions

View File

@@ -1,11 +1,12 @@
/*
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "soc/i2s_periph.h"
#include "soc/gpio_sig_map.h"
#include "soc/lp_gpio_sig_map.h"
/*
Bunch of constants for every I2S peripheral: GPIO signals, irqs, hw addr of registers etc
@@ -84,3 +85,29 @@ const i2s_signal_conn_t i2s_periph_signal[SOC_I2S_NUM] = {
.module = PERIPH_I2S2_MODULE,
},
};
const i2s_signal_conn_t lp_i2s_periph_signal[SOC_LP_I2S_NUM] = {
[0] = {
.mck_out_sig = -1,
.mck_in_sig = -1,
.m_tx_bck_sig = LP_I2S_O_BCK_PAD_OUT_IDX,
.m_rx_bck_sig = LP_I2S_I_BCK_PAD_OUT_IDX,
.m_tx_ws_sig = LP_I2S_O_WS_PAD_OUT_IDX,
.m_rx_ws_sig = LP_I2S_I_WS_PAD_OUT_IDX,
.s_tx_bck_sig = LP_I2S_O_BCK_PAD_IN_IDX,
.s_rx_bck_sig = LP_I2S_I_BCK_PAD_IN_IDX,
.s_tx_ws_sig = LP_I2S_O_WS_PAD_IN_IDX,
.s_rx_ws_sig = LP_I2S_I_WS_PAD_IN_IDX,
.data_out_sigs[0] = LP_I2S_O_SD_PAD_OUT_IDX,
.data_out_sigs[1] = -1,
.data_in_sigs[0] = LP_I2S_I_SD_PAD_IN_IDX,
.data_in_sigs[1] = -1,
.data_in_sigs[2] = -1,
.data_in_sigs[3] = -1,
.irq = ETS_LP_I2S_INTR_SOURCE,
},
};

View File

@@ -243,6 +243,10 @@ config SOC_LP_I2C_SUPPORTED
bool
default y
config SOC_LP_I2S_SUPPORTED
bool
default y
config SOC_LP_SPI_SUPPORTED
bool
default y
@@ -815,6 +819,10 @@ config SOC_I2S_TDM_FULL_DATA_WIDTH
bool
default y
config SOC_LP_I2S_NUM
int
default 1
config SOC_ISP_BF_SUPPORTED
bool
default y

View File

@@ -889,7 +889,7 @@ typedef union {
} lp_i2s_date_reg_t;
typedef struct {
typedef struct lp_i2s_dev_t {
volatile lp_i2s_vad_conf_reg_t vad_conf;
volatile lp_i2s_vad_result_reg_t vad_result;
volatile lp_i2s_rx_mem_conf_reg_t rx_mem_conf;

View File

@@ -163,9 +163,11 @@
/**
* @brief: Special memory address
*/
#define LP_I2S_RAM_BASE 0x50125c00
#define MIPI_CSI_BRG_MEM_BASE 0x50104000
#define MIPI_DSI_BRG_MEM_BASE 0x50105000
/**
* This are module helper MACROs for quick module reference
* including some module(renamed) address

View File

@@ -78,6 +78,7 @@
#define SOC_LP_GPIO_MATRIX_SUPPORTED 1
#define SOC_LP_PERIPHERALS_SUPPORTED 1
#define SOC_LP_I2C_SUPPORTED 1
#define SOC_LP_I2S_SUPPORTED 1
#define SOC_LP_SPI_SUPPORTED 1
#define SOC_SPIRAM_SUPPORTED 1
#define SOC_PSRAM_DMA_CAPABLE 1
@@ -325,6 +326,9 @@
#define SOC_I2S_PDM_MAX_RX_LINES (4) // On I2S0
#define SOC_I2S_TDM_FULL_DATA_WIDTH (1) /*!< No limitation to data bit width when using multiple slots */
/*-------------------------- LP_I2S CAPS -------------------------------------*/
#define SOC_LP_I2S_NUM (1U)
/*-------------------------- ISP CAPS ----------------------------------------*/
#define SOC_ISP_BF_SUPPORTED 1
#define SOC_ISP_CCM_SUPPORTED 1