mirror of
https://github.com/espressif/esp-idf.git
synced 2026-04-27 19:13:21 +00:00
refactor(hal_dma): move bitscrambler from hal component
because bitscrambler can't live without DMA, it's highly binded with the GDMA peripheral.
This commit is contained in:
@@ -10,6 +10,7 @@ if(CONFIG_SOC_BITSCRAMBLER_SUPPORTED)
|
||||
endif()
|
||||
|
||||
idf_component_register(SRCS ${srcs}
|
||||
REQUIRES "esp_hal_dma"
|
||||
PRIV_REQUIRES "esp_mm"
|
||||
INCLUDE_DIRS "include"
|
||||
LDFRAGMENTS "linker.lf")
|
||||
|
||||
@@ -9,9 +9,6 @@
|
||||
#include "esp_err.h"
|
||||
#include "soc/soc_caps.h"
|
||||
#include "hal/bitscrambler_types.h"
|
||||
#if SOC_BITSCRAMBLER_SUPPORTED
|
||||
#include "soc/bitscrambler_peri_select.h"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#include "soc/gdma_channel.h"
|
||||
#include "hal/gdma_channel.h"
|
||||
#include "bitscrambler_soc_specific.h"
|
||||
|
||||
// Note: these are indexed by the values of the SOC_BITSCRAMBLER_ATTACH_ defines
|
||||
// in soc/bitscrambler_peri_select.h
|
||||
// Note: these are indexed by the values of the SOC_BITSCRAMBLER_ATTACH_ defines in bitscrambler_peri_select.h
|
||||
// This map is used by the bitscrambler loopback driver only.
|
||||
|
||||
const bitscrambler_periph_desc_t g_bitscrambler_periph_desc[] = {
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#include "soc/gdma_channel.h"
|
||||
#include "hal/gdma_channel.h"
|
||||
#include "bitscrambler_soc_specific.h"
|
||||
|
||||
// Note: these are indexed by the values of the SOC_BITSCRAMBLER_ATTACH_ defines
|
||||
// in soc/bitscrambler_peri_select.h
|
||||
// Note: these are indexed by the values of the SOC_BITSCRAMBLER_ATTACH_ defines in bitscrambler_peri_select.h
|
||||
// This map is used by the bitscrambler loopback driver only.
|
||||
|
||||
const bitscrambler_periph_desc_t g_bitscrambler_periph_desc[] = {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "esp_private/gdma.h"
|
||||
#include "soc/bitscrambler_peri_select.h"
|
||||
#include "hal/bitscrambler_peri_select.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
@@ -3,3 +3,4 @@ components/esp_driver_bitscrambler/test_apps/bitscrambler:
|
||||
- if: SOC_BITSCRAMBLER_SUPPORTED != 1
|
||||
depends_components:
|
||||
- esp_driver_bitscrambler
|
||||
- esp_hal_dma
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
#include "freertos/queue.h"
|
||||
#include "freertos/idf_additions.h"
|
||||
#include "soc/soc_caps.h"
|
||||
#include "soc/gdma_channel.h"
|
||||
#include "hal/parlio_periph.h"
|
||||
#include "hal/parlio_types.h"
|
||||
#include "hal/parlio_hal.h"
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
#include "esp_check.h"
|
||||
#include "esp_err.h"
|
||||
#include "soc/soc_caps.h"
|
||||
#include "soc/gdma_channel.h"
|
||||
#include "soc/rmt_periph.h"
|
||||
#include "hal/rmt_types.h"
|
||||
#include "hal/rmt_hal.h"
|
||||
|
||||
+1
-3
@@ -4,7 +4,6 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <limits.h>
|
||||
@@ -29,7 +28,7 @@ extern "C" {
|
||||
*
|
||||
* @param hw BitScrambler hardware instance address.
|
||||
* @param dir Direction, BITSCRAMBLER_DIR_TX or BITSCRAMBLER_DIR_RX
|
||||
* @param peri Peripheral to select, should pick the value from soc/bitscrambler_peri_select.h
|
||||
* @param peri Peripheral to select, should pick the value from bitscrambler_peri_select.h
|
||||
*/
|
||||
static inline void bitscrambler_ll_select_peripheral(bitscrambler_dev_t *hw, bitscrambler_direction_t dir, int peri)
|
||||
{
|
||||
@@ -62,7 +61,6 @@ static inline void bitscrambler_ll_disable(bitscrambler_dev_t *hw, bitscrambler_
|
||||
hw->ctrl[dir].ena = 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Write a word to the instruction memory
|
||||
*
|
||||
+1
-3
@@ -4,7 +4,6 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <limits.h>
|
||||
@@ -29,7 +28,7 @@ extern "C" {
|
||||
*
|
||||
* @param hw BitScrambler hardware instance address.
|
||||
* @param dir Direction, BITSCRAMBLER_DIR_TX or BITSCRAMBLER_DIR_RX
|
||||
* @param peri Peripheral to select, should pick the value from soc/bitscrambler_peri_select.h
|
||||
* @param peri Peripheral to select, should pick the value from bitscrambler_peri_select.h
|
||||
*/
|
||||
static inline void bitscrambler_ll_select_peripheral(bitscrambler_dev_t *hw, bitscrambler_direction_t dir, int peri)
|
||||
{
|
||||
@@ -62,7 +61,6 @@ static inline void bitscrambler_ll_disable(bitscrambler_dev_t *hw, bitscrambler_
|
||||
hw->ctrl[dir].ena = 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Write a word to the instruction memory
|
||||
*
|
||||
+4
-1
@@ -6,6 +6,10 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#if __has_include("hal/bitscrambler_peri_select.h")
|
||||
#include "hal/bitscrambler_peri_select.h"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -27,7 +31,6 @@ typedef enum {
|
||||
BITSCRAMBLER_LUT_WIDTH_32BIT = 2, /*!< 32-bit LUT */
|
||||
} bitscrambler_lut_width_t;
|
||||
|
||||
|
||||
/**
|
||||
* @brief EOF signal generating mode of bitscrambler
|
||||
*/
|
||||
@@ -8,7 +8,6 @@
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "esp_etm.h"
|
||||
#include "soc/gdma_channel.h"
|
||||
#include "hal/gdma_types.h"
|
||||
#include "esp_err.h"
|
||||
|
||||
@@ -87,7 +86,7 @@ typedef struct {
|
||||
*/
|
||||
typedef struct {
|
||||
gdma_trigger_peripheral_t periph; /*!< Target peripheral which will trigger DMA operations */
|
||||
int instance_id; /*!< Peripheral instance ID. Supported IDs are listed in `soc/gdma_channel.h`, e.g. SOC_GDMA_TRIG_PERIPH_UHCI0 */
|
||||
int instance_id; /*!< Peripheral instance ID. Supported IDs are listed in `hal/gdma_channel.h`, e.g. SOC_GDMA_TRIG_PERIPH_UHCI0 */
|
||||
int bus_id; /*!< Which system bus should the DMA attached to */
|
||||
} gdma_trigger_t;
|
||||
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
+5
-1
@@ -1,11 +1,15 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#if __has_include("hal/gdma_channel.h")
|
||||
#include "hal/gdma_channel.h"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -28,10 +28,6 @@
|
||||
#include "esp_err.h"
|
||||
#include "soc/soc_caps.h"
|
||||
#include "hal/spi_types.h"
|
||||
#include "hal/dma_types.h"
|
||||
#if SOC_GDMA_SUPPORTED
|
||||
#include "soc/gdma_channel.h"
|
||||
#endif
|
||||
#if SOC_GPSPI_SUPPORTED
|
||||
#include "hal/spi_ll.h"
|
||||
#endif
|
||||
@@ -42,12 +38,6 @@ extern "C" {
|
||||
|
||||
#if SOC_GPSPI_SUPPORTED
|
||||
|
||||
#if SOC_GDMA_TRIG_PERIPH_SPI2_BUS == SOC_GDMA_BUS_AHB
|
||||
typedef dma_descriptor_align4_t spi_dma_desc_t;
|
||||
#else
|
||||
typedef dma_descriptor_align8_t spi_dma_desc_t;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Input parameters to the ``spi_hal_cal_clock_conf`` to calculate the timing configuration
|
||||
*/
|
||||
|
||||
@@ -27,9 +27,7 @@
|
||||
#include "esp_types.h"
|
||||
#include "soc/soc_caps.h"
|
||||
#include "hal/dma_types.h"
|
||||
#if SOC_GDMA_SUPPORTED
|
||||
#include "soc/gdma_channel.h"
|
||||
#endif
|
||||
#include "hal/gdma_types.h"
|
||||
#if SOC_GPSPI_SUPPORTED
|
||||
#include "hal/spi_ll.h"
|
||||
#endif
|
||||
|
||||
@@ -46,11 +46,9 @@
|
||||
#include "esp_types.h"
|
||||
#include "esp_err.h"
|
||||
#include "soc/soc_caps.h"
|
||||
#if SOC_GDMA_SUPPORTED
|
||||
#include "soc/gdma_channel.h"
|
||||
#endif
|
||||
#include "hal/spi_types.h"
|
||||
#include "hal/dma_types.h"
|
||||
#include "hal/gdma_types.h"
|
||||
#if SOC_GPSPI_SUPPORTED
|
||||
#include "hal/spi_ll.h"
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
#include "soc/soc_caps.h"
|
||||
|
||||
#include "hal/gdma_ll.h"
|
||||
#include "soc/gdma_channel.h"
|
||||
#include "hal/gdma_types.h"
|
||||
#if SOC_AHB_GDMA_VERSION == 2
|
||||
#include "soc/ahb_dma_struct.h"
|
||||
#elif SOC_AHB_GDMA_VERSION == 1
|
||||
|
||||
@@ -10,8 +10,6 @@
|
||||
#include "mbedtls/aes.h"
|
||||
#include "esp_crypto_dma.h"
|
||||
|
||||
#include "hal/gdma_types.h"
|
||||
#include "soc/gdma_channel.h"
|
||||
#include "soc/soc_caps.h"
|
||||
|
||||
#include "esp_tee_crypto_shared_gdma.h"
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "hal/dma_types.h"
|
||||
#include "soc/soc_caps.h"
|
||||
#include "hal/dma_types.h"
|
||||
#include "hal/gdma_types.h"
|
||||
|
||||
#if SOC_GDMA_SUPPORTED
|
||||
#include "soc/gdma_channel.h"
|
||||
#include "hal/gdma_ll.h"
|
||||
#endif /* SOC_GDMA_SUPPORTED */
|
||||
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
// ESP32 doesn't feature General DMA peripheral.
|
||||
// We keep this file here only for consistency's sake.
|
||||
@@ -1,7 +0,0 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
// ESP32-S2 doesn't feature General DMA peripheral.
|
||||
// We keep this file here only for consistency's sake.
|
||||
@@ -1,7 +1,7 @@
|
||||
INPUT += \
|
||||
$(PROJECT_PATH)/components/esp_driver_bitscrambler/include/driver/bitscrambler.h \
|
||||
$(PROJECT_PATH)/components/esp_driver_bitscrambler/include/driver/bitscrambler_loopback.h \
|
||||
$(PROJECT_PATH)/components/soc/$(IDF_TARGET)/include/soc/bitscrambler_peri_select.h \
|
||||
$(PROJECT_PATH)/components/esp_hal_dma/esp32c5/include/hal/bitscrambler_peri_select.h \
|
||||
$(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_i2c.h \
|
||||
$(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_uart.h \
|
||||
$(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_etm.h \
|
||||
|
||||
@@ -39,7 +39,7 @@ INPUT += \
|
||||
$(PROJECT_PATH)/components/hal/include/hal/ppa_types.h \
|
||||
$(PROJECT_PATH)/components/sdmmc/include/sd_pwr_ctrl.h \
|
||||
$(PROJECT_PATH)/components/sdmmc/include/sd_pwr_ctrl_by_on_chip_ldo.h \
|
||||
$(PROJECT_PATH)/components/soc/$(IDF_TARGET)/include/soc/bitscrambler_peri_select.h \
|
||||
$(PROJECT_PATH)/components/esp_hal_dma/esp32p4/include/hal/bitscrambler_peri_select.h \
|
||||
$(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_etm.h \
|
||||
$(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_i2c.h \
|
||||
$(PROJECT_PATH)/components/ulp/lp_core/include/lp_core_spi.h \
|
||||
|
||||
@@ -19,7 +19,6 @@ allowed_soc_headers = (
|
||||
'soc/reg_base.h',
|
||||
'soc/clk_tree_defs.h',
|
||||
'soc/uart_channel.h',
|
||||
'soc/bitscrambler_peri_select.h',
|
||||
)
|
||||
|
||||
include_header_pattern = re.compile(r'[\s]*#[\s]*include ["<](.*)[">].*')
|
||||
@@ -33,7 +32,7 @@ class PublicAPIVisits:
|
||||
self._idf_path = idf_path
|
||||
|
||||
def __iter__(self) -> typing.Generator:
|
||||
with open(self.doxyfile_path, 'r', encoding='utf8') as f:
|
||||
with open(self.doxyfile_path, encoding='utf8') as f:
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
if line.startswith('$(PROJECT_PATH)'):
|
||||
@@ -48,10 +47,10 @@ def check_soc_not_in(
|
||||
idf_path: str,
|
||||
target: str,
|
||||
doxyfile_path: str,
|
||||
violation_dict: typing.Dict[str, set],
|
||||
violation_dict: dict[str, set],
|
||||
) -> None:
|
||||
for file_path in PublicAPIVisits(os.path.join(idf_path, doxyfile_path), idf_path, target):
|
||||
with open(file_path, 'r', encoding='utf8') as f:
|
||||
with open(file_path, encoding='utf8') as f:
|
||||
for line in f:
|
||||
match_data = re.match(include_header_pattern, line)
|
||||
if match_data:
|
||||
@@ -82,7 +81,7 @@ def main() -> None:
|
||||
print('No targets found', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
soc_violation_dict: typing.Dict[str, set] = {}
|
||||
soc_violation_dict: dict[str, set] = {}
|
||||
for target in targets:
|
||||
check_soc_not_in(
|
||||
idf_path,
|
||||
|
||||
Reference in New Issue
Block a user