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:
morris
2025-11-18 18:56:46 +08:00
parent e48d37f307
commit bc064a353a
37 changed files with 30 additions and 79 deletions
@@ -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"
@@ -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,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
*
@@ -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
@@ -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
-10
View File
@@ -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
*/
+1 -3
View File
@@ -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
@@ -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 -1
View File
@@ -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 \
+1 -1
View File
@@ -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 \
+4 -5
View File
@@ -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,