Merge branch 'bugfix/fix_lcd_ll_macro_safety' into 'master'

fix(hal): Wrap LL macros with atomic env in do-while for control safety

Closes IDF-11981

See merge request espressif/esp-idf!39202
This commit is contained in:
morris
2025-05-26 19:06:11 +08:00
162 changed files with 1741 additions and 499 deletions

View File

@@ -19,11 +19,17 @@ One compromise is to **highlight** the LL function which needs the caller to use
```c
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; timer_ll_reset_register(__VA_ARGS__)
#define timer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
timer_ll_reset_register(__VA_ARGS__); \
} while(0)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define timer_ll_set_clock_source(...) (void)__DECLARE_RCC_ATOMIC_ENV; timer_ll_set_clock_source(__VA_ARGS__)
#define timer_ll_set_clock_source(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
timer_ll_set_clock_source(__VA_ARGS__); \
} while(0)
```
By referencing a variable which is only declared in the critical section, the compiler will report an error if the caller forgets to use the critical section. The following macros are provided by `esp_private/periph_ctrl.h`, which contain the above *magic* variables.

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -43,7 +43,10 @@ static inline void aes_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define aes_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; aes_ll_enable_bus_clock(__VA_ARGS__)
#define aes_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
aes_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the AES peripheral module
@@ -60,7 +63,10 @@ static inline void aes_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define aes_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; aes_ll_reset_register(__VA_ARGS__)
#define aes_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
aes_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Write the encryption/decryption key to hardware

View File

@@ -150,7 +150,10 @@ static inline void emac_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define emac_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; emac_ll_enable_bus_clock(__VA_ARGS__)
#define emac_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
emac_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the EMAC module
@@ -166,7 +169,10 @@ static inline void emac_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define emac_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; emac_ll_reset_register(__VA_ARGS__)
#define emac_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
emac_ll_reset_register(__VA_ARGS__); \
} while(0)
/************** Start of mac regs operation ********************/
/* emacgmiiaddr */

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -109,7 +109,10 @@ static inline void i2s_ll_enable_bus_clock(int i2s_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; i2s_ll_enable_bus_clock(__VA_ARGS__)
#define i2s_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
i2s_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
@@ -130,7 +133,10 @@ static inline void i2s_ll_reset_register(int i2s_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; i2s_ll_reset_register(__VA_ARGS__)
#define i2s_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
i2s_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief I2S module general init, enable I2S clock.
@@ -150,7 +156,10 @@ static inline void i2s_ll_enable_core_clock(i2s_dev_t *hw, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_enable_core_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; i2s_ll_enable_core_clock(__VA_ARGS__)
#define i2s_ll_enable_core_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
i2s_ll_enable_core_clock(__VA_ARGS__); \
} while(0)
/**
* @brief I2S tx msb right enable

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2019-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2019-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -57,7 +57,10 @@ static inline void ledc_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ledc_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; ledc_ll_enable_bus_clock(__VA_ARGS__)
#define ledc_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ledc_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset whole peripheral register to init value defined by HW design
@@ -73,7 +76,10 @@ static inline void ledc_ll_enable_reset_reg(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ledc_ll_enable_reset_reg(...) (void)__DECLARE_RCC_ATOMIC_ENV; ledc_ll_enable_reset_reg(__VA_ARGS__)
#define ledc_ll_enable_reset_reg(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ledc_ll_enable_reset_reg(__VA_ARGS__); \
} while(0)
/**
* @brief Enable the power for LEDC memory block

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -89,7 +89,10 @@ static inline void mcpwm_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mcpwm_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; mcpwm_ll_enable_bus_clock(__VA_ARGS__)
#define mcpwm_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mcpwm_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the MCPWM module
@@ -109,7 +112,10 @@ static inline void mcpwm_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mcpwm_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; mcpwm_ll_reset_register(__VA_ARGS__)
#define mcpwm_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mcpwm_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable MCPWM function clock

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -35,7 +35,10 @@ static inline void mpi_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mpi_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; mpi_ll_enable_bus_clock(__VA_ARGS__)
#define mpi_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mpi_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the MPI peripheral module
@@ -51,7 +54,10 @@ static inline void mpi_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mpi_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; mpi_ll_reset_register(__VA_ARGS__)
#define mpi_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mpi_ll_reset_register(__VA_ARGS__); \
} while(0)
/* Round up number of words to nearest
512 bit (16 word) block count.

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -457,7 +457,10 @@ static inline void pcnt_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define pcnt_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; pcnt_ll_enable_bus_clock(__VA_ARGS__)
#define pcnt_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
pcnt_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the PCNT module
@@ -471,7 +474,10 @@ static inline void pcnt_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define pcnt_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; pcnt_ll_reset_register(__VA_ARGS__)
#define pcnt_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
pcnt_ll_reset_register(__VA_ARGS__); \
} while(0)
#ifdef __cplusplus
}

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2019-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2019-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -58,7 +58,10 @@ static inline void rmt_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define rmt_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; rmt_ll_enable_bus_clock(__VA_ARGS__)
#define rmt_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
rmt_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the RMT module
@@ -74,7 +77,10 @@ static inline void rmt_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define rmt_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; rmt_ll_reset_register(__VA_ARGS__)
#define rmt_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
rmt_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable clock gate for register and memory

View File

@@ -92,7 +92,10 @@ static inline void _sdio_slave_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define sdio_slave_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _sdio_slave_ll_enable_bus_clock(__VA_ARGS__)
#define sdio_slave_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_sdio_slave_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the SDIO slave module
@@ -105,7 +108,10 @@ static inline void _sdio_slave_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define sdio_slave_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; _sdio_slave_ll_reset_register(__VA_ARGS__)
#define sdio_slave_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_sdio_slave_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* Initialize the hardware.

View File

@@ -116,7 +116,10 @@ static inline void sdmmc_ll_enable_bus_clock(int group_id, bool en)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define sdmmc_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; sdmmc_ll_enable_bus_clock(__VA_ARGS__)
#define sdmmc_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
sdmmc_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the SDMMC module
@@ -132,7 +135,10 @@ static inline void sdmmc_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define sdmmc_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; sdmmc_ll_reset_register(__VA_ARGS__)
#define sdmmc_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
sdmmc_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Select SDMMC clock source

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -34,7 +34,10 @@ static inline void sha_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define sha_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; sha_ll_enable_bus_clock(__VA_ARGS__)
#define sha_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
sha_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the SHA peripheral module
@@ -50,7 +53,10 @@ static inline void sha_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define sha_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; sha_ll_reset_register(__VA_ARGS__)
#define sha_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
sha_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Returns the LOAD_REG register address for the given sha type

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -99,7 +99,10 @@ static inline void spi_ll_enable_bus_clock(spi_host_device_t host_id, bool enabl
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define spi_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; spi_ll_enable_bus_clock(__VA_ARGS__)
#define spi_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
spi_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* Reset whole peripheral register to init value defined by HW design
@@ -127,7 +130,10 @@ static inline void spi_ll_reset_register(spi_host_device_t host_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define spi_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; spi_ll_reset_register(__VA_ARGS__)
#define spi_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
spi_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* Enable functional output clock within peripheral
@@ -1098,7 +1104,10 @@ static inline void spi_dma_ll_enable_bus_clock(spi_host_device_t host_id, bool e
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define spi_dma_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; spi_dma_ll_enable_bus_clock(__VA_ARGS__)
#define spi_dma_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
spi_dma_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* Reset whole peripheral register to init value defined by HW design
@@ -1115,7 +1124,10 @@ static inline void spi_dma_ll_reset_register(spi_host_device_t host_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define spi_dma_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; spi_dma_ll_reset_register(__VA_ARGS__)
#define spi_dma_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
spi_dma_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* Reset RX DMA which stores the data received from a peripheral into RAM.

View File

@@ -46,7 +46,10 @@ static inline void _timer_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_enable_bus_clock(__VA_ARGS__)
#define timer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the timer group module
@@ -72,7 +75,10 @@ static inline void _timer_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_reset_register(__VA_ARGS__)
#define timer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Set clock source for timer

View File

@@ -177,7 +177,10 @@ static inline void twai_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define twai_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; twai_ll_enable_bus_clock(__VA_ARGS__)
#define twai_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
twai_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the twai module
@@ -194,7 +197,10 @@ static inline void twai_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define twai_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; twai_ll_reset_register(__VA_ARGS__)
#define twai_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
twai_ll_reset_register(__VA_ARGS__); \
} while(0)
/* ---------------------------- Peripheral Control Register ----------------- */

View File

@@ -107,7 +107,10 @@ static inline void uart_ll_enable_bus_clock(uart_port_t uart_num, bool enable)
}
DPORT_WRITE_PERI_REG(DPORT_PERIP_CLK_EN_REG, reg_val);
}
#define uart_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; uart_ll_enable_bus_clock(__VA_ARGS__)
#define uart_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
uart_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset UART module
@@ -134,7 +137,10 @@ static inline void uart_ll_reset_register(uart_port_t uart_num)
}
}
// SYSTEM.perip_rst_enx are shared registers, so this function must be used in an atomic way
#define uart_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; uart_ll_reset_register(__VA_ARGS__)
#define uart_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
uart_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable the UART clock.
@@ -745,7 +751,10 @@ FORCE_INLINE_ATTR void _uart_ll_enable_pad_sleep_clock(uart_dev_t *hw, bool enab
(void)hw; (void)enable;
}
#define uart_ll_enable_pad_sleep_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _uart_ll_enable_pad_sleep_clock(__VA_ARGS__)
#define uart_ll_enable_pad_sleep_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_uart_ll_enable_pad_sleep_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Configure the UART work in normal mode.

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -38,7 +38,10 @@ static inline void _uhci_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define uhci_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _uhci_ll_enable_bus_clock(__VA_ARGS__)
#define uhci_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_uhci_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the UHCI module
@@ -58,7 +61,10 @@ static inline void _uhci_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define uhci_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; _uhci_ll_reset_register(__VA_ARGS__)
#define uhci_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_uhci_ll_reset_register(__VA_ARGS__); \
} while(0)
#ifdef __cplusplus
}

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -297,7 +297,10 @@ static inline void adc_ll_enable_bus_clock(bool enable)
SYSTEM.perip_clk_en0.apb_saradc_clk_en = enable;
}
// SYSTEM.perip_clk_en0 is a shared register, so this function must be used in an atomic way
#define adc_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; adc_ll_enable_bus_clock(__VA_ARGS__)
#define adc_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
adc_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset ADC module
@@ -308,7 +311,10 @@ static inline void adc_ll_reset_register(void)
SYSTEM.perip_rst_en0.apb_saradc_rst = 0;
}
// SYSTEM.perip_rst_en0 is a shared register, so this function must be used in an atomic way
#define adc_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; adc_ll_reset_register(__VA_ARGS__)
#define adc_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
adc_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* Set ADC module power management.

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -34,7 +34,10 @@ static inline void ecc_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ecc_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; ecc_ll_enable_bus_clock(__VA_ARGS__)
#define ecc_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ecc_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the ECC peripheral module
@@ -47,7 +50,10 @@ static inline void ecc_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ecc_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; ecc_ll_reset_register(__VA_ARGS__)
#define ecc_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ecc_ll_reset_register(__VA_ARGS__); \
} while(0)
static inline void ecc_ll_power_up(void) {}
static inline void ecc_ll_power_down(void) {}

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -63,7 +63,10 @@ static inline void _gdma_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define gdma_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _gdma_ll_enable_bus_clock(__VA_ARGS__)
#define gdma_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_gdma_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the DMA module
@@ -77,7 +80,10 @@ static inline void _gdma_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define gdma_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; _gdma_ll_reset_register(__VA_ARGS__)
#define gdma_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_gdma_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Force enable register clock

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -47,7 +47,10 @@ static inline void ledc_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ledc_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; ledc_ll_enable_bus_clock(__VA_ARGS__)
#define ledc_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ledc_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset whole peripheral register to init value defined by HW design
@@ -59,7 +62,10 @@ static inline void ledc_ll_enable_reset_reg(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ledc_ll_enable_reset_reg(...) (void)__DECLARE_RCC_ATOMIC_ENV; ledc_ll_enable_reset_reg(__VA_ARGS__)
#define ledc_ll_enable_reset_reg(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ledc_ll_enable_reset_reg(__VA_ARGS__); \
} while(0)
/**
* @brief Enable the power for LEDC memory block

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -27,7 +27,10 @@ static inline void sha_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define sha_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; sha_ll_enable_bus_clock(__VA_ARGS__)
#define sha_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
sha_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the SHA peripheral module
@@ -40,7 +43,10 @@ static inline void sha_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define sha_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; sha_ll_reset_register(__VA_ARGS__)
#define sha_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
sha_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Start a new SHA block conversions (no initial hash in HW)

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -112,7 +112,10 @@ static inline void spi_ll_enable_bus_clock(spi_host_device_t host_id, bool enabl
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define spi_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; spi_ll_enable_bus_clock(__VA_ARGS__)
#define spi_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
spi_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* Reset whole peripheral register to init value defined by HW design
@@ -136,7 +139,10 @@ static inline void spi_ll_reset_register(spi_host_device_t host_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define spi_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; spi_ll_reset_register(__VA_ARGS__)
#define spi_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
spi_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* Enable functional output clock within peripheral

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -48,7 +48,10 @@ static inline void systimer_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_enable_bus_clock(__VA_ARGS__)
#define systimer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the systimer module
@@ -63,7 +66,10 @@ static inline void systimer_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_reset_register(__VA_ARGS__)
#define systimer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_reset_register(__VA_ARGS__); \
} while(0)
/******************* Counter *************************/

View File

@@ -38,7 +38,10 @@ static inline void _timer_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_enable_bus_clock(__VA_ARGS__)
#define timer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the timer group module
@@ -59,7 +62,10 @@ static inline void _timer_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_reset_register(__VA_ARGS__)
#define timer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Set clock source for timer

View File

@@ -100,7 +100,10 @@ static inline void uart_ll_enable_bus_clock(uart_port_t uart_num, bool enable)
}
}
// SYSTEM.perip_clk_en0 is a shared register, so this function must be used in an atomic way
#define uart_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; uart_ll_enable_bus_clock(__VA_ARGS__)
#define uart_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
uart_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset UART module
@@ -123,7 +126,10 @@ static inline void uart_ll_reset_register(uart_port_t uart_num)
}
}
// SYSTEM.perip_rst_en0 is a shared register, so this function must be used in an atomic way
#define uart_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; uart_ll_reset_register(__VA_ARGS__)
#define uart_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
uart_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable the UART clock.
@@ -705,7 +711,10 @@ FORCE_INLINE_ATTR void _uart_ll_enable_pad_sleep_clock(uart_dev_t *hw, bool enab
(void)hw; (void)enable;
}
#define uart_ll_enable_pad_sleep_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _uart_ll_enable_pad_sleep_clock(__VA_ARGS__)
#define uart_ll_enable_pad_sleep_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_uart_ll_enable_pad_sleep_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Configure the UART work in normal mode.

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -571,7 +571,10 @@ static inline void adc_ll_enable_bus_clock(bool enable)
SYSTEM.perip_clk_en0.reg_apb_saradc_clk_en = enable;
}
// SYSTEM.perip_clk_en0 is a shared register, so this function must be used in an atomic way
#define adc_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; adc_ll_enable_bus_clock(__VA_ARGS__)
#define adc_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
adc_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset ADC module
@@ -582,7 +585,10 @@ static inline void adc_ll_reset_register(void)
SYSTEM.perip_rst_en0.reg_apb_saradc_rst = 0;
}
// SYSTEM.perip_rst_en0 is a shared register, so this function must be used in an atomic way
#define adc_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; adc_ll_reset_register(__VA_ARGS__)
#define adc_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
adc_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* Set ADC module power management.

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -38,7 +38,10 @@ static inline void aes_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define aes_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; aes_ll_enable_bus_clock(__VA_ARGS__)
#define aes_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
aes_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the AES peripheral module
@@ -54,7 +57,10 @@ static inline void aes_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define aes_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; aes_ll_reset_register(__VA_ARGS__)
#define aes_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
aes_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Write the encryption/decryption key to hardware

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -36,7 +36,10 @@ static inline void ds_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ds_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; ds_ll_enable_bus_clock(__VA_ARGS__)
#define ds_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ds_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the Digital Signature peripheral module
@@ -49,7 +52,10 @@ static inline void ds_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ds_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; ds_ll_reset_register(__VA_ARGS__)
#define ds_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ds_ll_reset_register(__VA_ARGS__); \
} while(0)
static inline void ds_ll_start(void)
{

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -63,7 +63,10 @@ static inline void _gdma_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define gdma_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _gdma_ll_enable_bus_clock(__VA_ARGS__)
#define gdma_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_gdma_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the DMA module
@@ -77,7 +80,10 @@ static inline void _gdma_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define gdma_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; _gdma_ll_reset_register(__VA_ARGS__)
#define gdma_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_gdma_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Force enable register clock

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -44,7 +44,10 @@ static inline void hmac_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define hmac_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; hmac_ll_enable_bus_clock(__VA_ARGS__)
#define hmac_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
hmac_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the HMAC peripheral module
@@ -57,7 +60,10 @@ static inline void hmac_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define hmac_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; hmac_ll_reset_register(__VA_ARGS__)
#define hmac_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
hmac_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* Makes the peripheral ready for use, after enabling it.

View File

@@ -53,7 +53,10 @@ static inline void i2s_ll_enable_bus_clock(int i2s_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; i2s_ll_enable_bus_clock(__VA_ARGS__)
#define i2s_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
i2s_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
@@ -70,7 +73,10 @@ static inline void i2s_ll_reset_register(int i2s_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; i2s_ll_reset_register(__VA_ARGS__)
#define i2s_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
i2s_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief I2S module general init, enable I2S clock.
@@ -85,7 +91,10 @@ static inline void i2s_ll_enable_core_clock(i2s_dev_t *hw, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_enable_core_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; i2s_ll_enable_core_clock(__VA_ARGS__)
#define i2s_ll_enable_core_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
i2s_ll_enable_core_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Enable I2S tx module clock

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -48,7 +48,10 @@ static inline void ledc_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ledc_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; ledc_ll_enable_bus_clock(__VA_ARGS__)
#define ledc_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ledc_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset whole peripheral register to init value defined by HW design
@@ -60,7 +63,10 @@ static inline void ledc_ll_enable_reset_reg(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ledc_ll_enable_reset_reg(...) (void)__DECLARE_RCC_ATOMIC_ENV; ledc_ll_enable_reset_reg(__VA_ARGS__)
#define ledc_ll_enable_reset_reg(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ledc_ll_enable_reset_reg(__VA_ARGS__); \
} while(0)
/**
* @brief Enable the power for LEDC memory block

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -32,7 +32,10 @@ static inline void mpi_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mpi_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; mpi_ll_enable_bus_clock(__VA_ARGS__)
#define mpi_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mpi_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the MPI peripheral module
@@ -48,7 +51,10 @@ static inline void mpi_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mpi_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; mpi_ll_reset_register(__VA_ARGS__)
#define mpi_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mpi_ll_reset_register(__VA_ARGS__); \
} while(0)
static inline size_t mpi_ll_calculate_hardware_words(size_t words)
{

View File

@@ -61,7 +61,10 @@ static inline void rmt_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define rmt_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; rmt_ll_enable_bus_clock(__VA_ARGS__)
#define rmt_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
rmt_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the RMT module
@@ -77,7 +80,10 @@ static inline void rmt_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define rmt_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; rmt_ll_reset_register(__VA_ARGS__)
#define rmt_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
rmt_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable clock gate for register and memory

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -26,7 +26,10 @@ static inline void sha_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define sha_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; sha_ll_enable_bus_clock(__VA_ARGS__)
#define sha_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
sha_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the SHA peripheral module
@@ -43,7 +46,10 @@ static inline void sha_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define sha_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; sha_ll_reset_register(__VA_ARGS__)
#define sha_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
sha_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Start a new SHA block conversions (no initial hash in HW)

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -114,7 +114,10 @@ static inline void spi_ll_enable_bus_clock(spi_host_device_t host_id, bool enabl
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define spi_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; spi_ll_enable_bus_clock(__VA_ARGS__)
#define spi_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
spi_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* Reset whole peripheral register to init value defined by HW design
@@ -138,7 +141,10 @@ static inline void spi_ll_reset_register(spi_host_device_t host_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define spi_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; spi_ll_reset_register(__VA_ARGS__)
#define spi_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
spi_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* Enable functional output clock within peripheral

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2020-2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2020-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -48,7 +48,10 @@ static inline void systimer_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_enable_bus_clock(__VA_ARGS__)
#define systimer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the systimer module
@@ -63,7 +66,10 @@ static inline void systimer_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_reset_register(__VA_ARGS__)
#define systimer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_reset_register(__VA_ARGS__); \
} while(0)
/******************* Counter *************************/

View File

@@ -41,7 +41,10 @@ static inline void _timer_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_enable_bus_clock(__VA_ARGS__)
#define timer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the timer group module
@@ -67,7 +70,10 @@ static inline void _timer_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_reset_register(__VA_ARGS__)
#define timer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Set clock source for timer

View File

@@ -153,7 +153,10 @@ static inline void twai_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define twai_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; twai_ll_enable_bus_clock(__VA_ARGS__)
#define twai_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
twai_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the twai module
@@ -169,7 +172,10 @@ static inline void twai_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define twai_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; twai_ll_reset_register(__VA_ARGS__)
#define twai_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
twai_ll_reset_register(__VA_ARGS__); \
} while(0)
/* ---------------------------- Peripheral Control Register ----------------- */

View File

@@ -100,7 +100,10 @@ static inline void uart_ll_enable_bus_clock(uart_port_t uart_num, bool enable)
}
}
// SYSTEM.perip_clk_enx are shared registers, so this function must be used in an atomic way
#define uart_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; uart_ll_enable_bus_clock(__VA_ARGS__)
#define uart_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
uart_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset UART module
@@ -130,7 +133,10 @@ static inline void uart_ll_reset_register(uart_port_t uart_num)
}
}
// SYSTEM.perip_rst_enx are shared registers, so this function must be used in an atomic way
#define uart_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; uart_ll_reset_register(__VA_ARGS__)
#define uart_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
uart_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable the UART clock.
@@ -710,7 +716,10 @@ FORCE_INLINE_ATTR void _uart_ll_enable_pad_sleep_clock(uart_dev_t *hw, bool enab
(void)hw; (void)enable;
}
#define uart_ll_enable_pad_sleep_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _uart_ll_enable_pad_sleep_clock(__VA_ARGS__)
#define uart_ll_enable_pad_sleep_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_uart_ll_enable_pad_sleep_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Configure the UART work in normal mode.

View File

@@ -42,7 +42,10 @@ static inline void _uhci_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define uhci_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _uhci_ll_enable_bus_clock(__VA_ARGS__)
#define uhci_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_uhci_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the UHCI module
@@ -58,7 +61,10 @@ static inline void _uhci_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define uhci_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; _uhci_ll_reset_register(__VA_ARGS__)
#define uhci_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_uhci_ll_reset_register(__VA_ARGS__); \
} while(0)
static inline void uhci_ll_init(uhci_dev_t *hw)
{

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2021-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2021-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -299,7 +299,10 @@ FORCE_INLINE_ATTR void usb_serial_jtag_ll_enable_bus_clock(bool clk_en)
}
// SYSTEM.perip_clk_enx are shared registers, so this function must be used in an atomic way
#define usb_serial_jtag_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; usb_serial_jtag_ll_enable_bus_clock(__VA_ARGS__)
#define usb_serial_jtag_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
usb_serial_jtag_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the USJ module
@@ -311,7 +314,10 @@ FORCE_INLINE_ATTR void usb_serial_jtag_ll_reset_register(void)
}
// SYSTEM.perip_clk_enx are shared registers, so this function must be used in an atomic way
#define usb_serial_jtag_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; usb_serial_jtag_ll_reset_register(__VA_ARGS__)
#define usb_serial_jtag_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
usb_serial_jtag_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* Get the enable status of the USJ module

View File

@@ -850,7 +850,10 @@ static inline void lp_i2c_ll_set_source_clk(i2c_dev_t *hw, soc_periph_lp_i2c_clk
}
/// LP_CLKRST.lpperi is a shared register, so this function must be used in an atomic way
#define lp_i2c_ll_set_source_clk(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_i2c_ll_set_source_clk(__VA_ARGS__)
#define lp_i2c_ll_set_source_clk(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_i2c_ll_set_source_clk(__VA_ARGS__); \
} while(0)
/**
* @brief Enable bus clock for the LP I2C module
@@ -865,7 +868,10 @@ static inline void _lp_i2c_ll_enable_bus_clock(int hw_id, bool enable)
}
/// LPPERI.clk_en is a shared register, so this function must be used in an atomic way
#define lp_i2c_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _lp_i2c_ll_enable_bus_clock(__VA_ARGS__)
#define lp_i2c_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_lp_i2c_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset LP I2C module
@@ -880,7 +886,10 @@ static inline void lp_i2c_ll_reset_register(int hw_id)
}
/// LPPERI.reset_en is a shared register, so this function must be used in an atomic way
#define lp_i2c_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_i2c_ll_reset_register(__VA_ARGS__)
#define lp_i2c_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_i2c_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable I2C peripheral controller clock

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -50,7 +50,10 @@ static inline void _key_mgr_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define key_mgr_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _key_mgr_ll_enable_bus_clock(__VA_ARGS__)
#define key_mgr_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_key_mgr_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Enable the peripheral clock for Key Manager
@@ -64,7 +67,10 @@ static inline void _key_mgr_ll_enable_peripheral_clock(bool enable)
; /* Nothing to do here, Kept for compatibility with other SoC */
}
#define key_mgr_ll_enable_peripheral_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _key_mgr_ll_enable_peripheral_clock(__VA_ARGS__)
#define key_mgr_ll_enable_peripheral_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_key_mgr_ll_enable_peripheral_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the Key Manager peripheral
@@ -86,7 +92,10 @@ static inline void _key_mgr_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define key_mgr_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; _key_mgr_ll_reset_register(__VA_ARGS__)
#define key_mgr_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_key_mgr_ll_reset_register(__VA_ARGS__); \
} while(0)
/* @brief Start the key manager at IDLE state */
static inline void key_mgr_ll_start(void)

View File

@@ -39,7 +39,10 @@ static inline void lp_core_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define lp_core_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_core_ll_enable_bus_clock(__VA_ARGS__)
#define lp_core_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_core_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the lp_core module
@@ -53,7 +56,10 @@ static inline void lp_core_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define lp_core_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_core_ll_reset_register(__VA_ARGS__)
#define lp_core_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_core_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable fast access of LP memory

View File

@@ -30,7 +30,10 @@ static inline __attribute__((always_inline)) void _regi2c_ctrl_ll_master_enable_
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define regi2c_ctrl_ll_master_enable_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _regi2c_ctrl_ll_master_enable_clock(__VA_ARGS__)
#define regi2c_ctrl_ll_master_enable_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_regi2c_ctrl_ll_master_enable_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Check whether analog I2C master clock is enabled
@@ -51,7 +54,10 @@ static inline __attribute__((always_inline)) void _regi2c_ctrl_ll_master_reset(v
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define regi2c_ctrl_ll_master_reset(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _regi2c_ctrl_ll_master_reset(__VA_ARGS__)
#define regi2c_ctrl_ll_master_reset(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_regi2c_ctrl_ll_master_reset(__VA_ARGS__); \
} while(0)
/**
* @brief Force enable analog I2C master clock

View File

@@ -65,7 +65,10 @@ static inline void _rtcio_ll_enable_io_clock(bool enable)
}
}
#define rtcio_ll_enable_io_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _rtcio_ll_enable_io_clock(__VA_ARGS__)
#define rtcio_ll_enable_io_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_rtcio_ll_enable_io_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Select the rtcio function.

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -51,7 +51,10 @@ static inline void systimer_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_enable_bus_clock(__VA_ARGS__)
#define systimer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the systimer module
@@ -66,7 +69,10 @@ static inline void systimer_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_reset_register(__VA_ARGS__)
#define systimer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_reset_register(__VA_ARGS__); \
} while(0)
/********************** ETM *****************************/

View File

@@ -68,7 +68,10 @@ static inline void _timer_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_enable_bus_clock(__VA_ARGS__)
#define timer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the timer group module
@@ -94,7 +97,10 @@ static inline void _timer_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_reset_register(__VA_ARGS__)
#define timer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Set clock source for timer

View File

@@ -149,7 +149,10 @@ static inline void lp_uart_ll_set_source_clk(uart_dev_t *hw, soc_periph_lp_uart_
}
/// LP_CLKRST.lpperi is a shared register, so this function must be used in an atomic way
#define lp_uart_ll_set_source_clk(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_uart_ll_set_source_clk(__VA_ARGS__)
#define lp_uart_ll_set_source_clk(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_uart_ll_set_source_clk(__VA_ARGS__); \
} while(0)
/**
* @brief Configure the lp uart baud-rate.
@@ -192,7 +195,10 @@ static inline void lp_uart_ll_enable_bus_clock(int hw_id, bool enable)
}
/// LPPERI.clk_en is a shared register, so this function must be used in an atomic way
#define lp_uart_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_uart_ll_enable_bus_clock(__VA_ARGS__)
#define lp_uart_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_uart_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Enable the UART clock.
@@ -231,7 +237,10 @@ static inline void lp_uart_ll_reset_register(int hw_id)
}
/// LPPERI.reset_en is a shared register, so this function must be used in an atomic way
#define lp_uart_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_uart_ll_reset_register(__VA_ARGS__)
#define lp_uart_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_uart_ll_reset_register(__VA_ARGS__); \
} while(0)
/*************************************** General LL functions ******************************************/

View File

@@ -852,7 +852,10 @@ static inline void lp_i2c_ll_set_source_clk(i2c_dev_t *hw, soc_periph_lp_i2c_clk
}
/// LP_CLKRST.lpperi is a shared register, so this function must be used in an atomic way
#define lp_i2c_ll_set_source_clk(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_i2c_ll_set_source_clk(__VA_ARGS__)
#define lp_i2c_ll_set_source_clk(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_i2c_ll_set_source_clk(__VA_ARGS__); \
} while(0)
/**
* @brief Enable bus clock for the LP I2C module
@@ -867,7 +870,10 @@ static inline void _lp_i2c_ll_enable_bus_clock(int hw_id, bool enable)
}
/// LPPERI.clk_en is a shared register, so this function must be used in an atomic way
#define lp_i2c_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _lp_i2c_ll_enable_bus_clock(__VA_ARGS__)
#define lp_i2c_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_lp_i2c_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset LP I2C module
@@ -882,7 +888,10 @@ static inline void lp_i2c_ll_reset_register(int hw_id)
}
/// LPPERI.reset_en is a shared register, so this function must be used in an atomic way
#define lp_i2c_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_i2c_ll_reset_register(__VA_ARGS__)
#define lp_i2c_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_i2c_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable I2C peripheral controller clock

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -25,7 +25,10 @@ static inline void _lp_clkrst_ll_enable_rng_clock(bool en)
}
/// LPPERI.clk_en is a shared register, so this function must be used in an atomic way
#define lp_clkrst_ll_enable_rng_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _lp_clkrst_ll_enable_rng_clock(__VA_ARGS__)
#define lp_clkrst_ll_enable_rng_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_lp_clkrst_ll_enable_rng_clock(__VA_ARGS__); \
} while(0)
#ifdef __cplusplus
}

View File

@@ -29,7 +29,10 @@ static inline __attribute__((always_inline)) void _regi2c_ctrl_ll_master_enable_
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define regi2c_ctrl_ll_master_enable_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _regi2c_ctrl_ll_master_enable_clock(__VA_ARGS__)
#define regi2c_ctrl_ll_master_enable_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_regi2c_ctrl_ll_master_enable_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Check whether analog I2C master clock is enabled
@@ -50,7 +53,10 @@ static inline __attribute__((always_inline)) void _regi2c_ctrl_ll_master_reset(v
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define regi2c_ctrl_ll_master_reset(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _regi2c_ctrl_ll_master_reset(__VA_ARGS__)
#define regi2c_ctrl_ll_master_reset(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_regi2c_ctrl_ll_master_reset(__VA_ARGS__); \
} while(0)
/**
* @brief Force enable analog I2C master clock

View File

@@ -64,7 +64,10 @@ static inline void _rtcio_ll_enable_io_clock(bool enable)
}
}
#define rtcio_ll_enable_io_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _rtcio_ll_enable_io_clock(__VA_ARGS__)
#define rtcio_ll_enable_io_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_rtcio_ll_enable_io_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Select the rtcio function.

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -49,7 +49,10 @@ static inline void systimer_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_enable_bus_clock(__VA_ARGS__)
#define systimer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the systimer module
@@ -64,7 +67,10 @@ static inline void systimer_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_reset_register(__VA_ARGS__)
#define systimer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_reset_register(__VA_ARGS__); \
} while(0)
/********************** ETM *****************************/

View File

@@ -68,7 +68,10 @@ static inline void _timer_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_enable_bus_clock(__VA_ARGS__)
#define timer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the timer group module
@@ -94,7 +97,10 @@ static inline void _timer_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_reset_register(__VA_ARGS__)
#define timer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Set clock source for timer

View File

@@ -149,7 +149,10 @@ static inline void lp_uart_ll_set_source_clk(uart_dev_t *hw, soc_periph_lp_uart_
}
/// LP_CLKRST.lpperi is a shared register, so this function must be used in an atomic way
#define lp_uart_ll_set_source_clk(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_uart_ll_set_source_clk(__VA_ARGS__)
#define lp_uart_ll_set_source_clk(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_uart_ll_set_source_clk(__VA_ARGS__); \
} while(0)
/**
* @brief Configure the lp uart baud-rate.
@@ -192,7 +195,10 @@ static inline void _lp_uart_ll_enable_bus_clock(int hw_id, bool enable)
}
/// LPPERI.clk_en is a shared register, so this function must be used in an atomic way
#define lp_uart_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _lp_uart_ll_enable_bus_clock(__VA_ARGS__)
#define lp_uart_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_lp_uart_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Enable the UART clock.
@@ -231,7 +237,10 @@ static inline void lp_uart_ll_reset_register(int hw_id)
}
/// LPPERI.reset_en is a shared register, so this function must be used in an atomic way
#define lp_uart_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_uart_ll_reset_register(__VA_ARGS__)
#define lp_uart_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_uart_ll_reset_register(__VA_ARGS__); \
} while(0)
/*************************************** General LL functions ******************************************/

View File

@@ -30,7 +30,10 @@ static inline __attribute__((always_inline)) void _regi2c_ctrl_ll_master_enable_
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define regi2c_ctrl_ll_master_enable_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _regi2c_ctrl_ll_master_enable_clock(__VA_ARGS__)
#define regi2c_ctrl_ll_master_enable_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_regi2c_ctrl_ll_master_enable_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Check whether analog I2C master clock is enabled
@@ -51,7 +54,10 @@ static inline __attribute__((always_inline)) void _regi2c_ctrl_ll_master_reset(v
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define regi2c_ctrl_ll_master_reset(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _regi2c_ctrl_ll_master_reset(__VA_ARGS__)
#define regi2c_ctrl_ll_master_reset(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_regi2c_ctrl_ll_master_reset(__VA_ARGS__); \
} while(0)
/**
* @brief Force enable analog I2C master clock

View File

@@ -65,7 +65,10 @@ static inline void _rtcio_ll_enable_io_clock(bool enable)
}
}
#define rtcio_ll_enable_io_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _rtcio_ll_enable_io_clock(__VA_ARGS__)
#define rtcio_ll_enable_io_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_rtcio_ll_enable_io_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Select the rtcio function.

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -49,7 +49,10 @@ static inline void systimer_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_enable_bus_clock(__VA_ARGS__)
#define systimer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the systimer module
@@ -64,7 +67,10 @@ static inline void systimer_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_reset_register(__VA_ARGS__)
#define systimer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_reset_register(__VA_ARGS__); \
} while(0)
/********************** ETM *****************************/

View File

@@ -68,7 +68,10 @@ static inline void _timer_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_enable_bus_clock(__VA_ARGS__)
#define timer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the timer group module
@@ -94,7 +97,10 @@ static inline void _timer_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_reset_register(__VA_ARGS__)
#define timer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Set clock source for timer

View File

@@ -67,7 +67,10 @@ static inline void _lp_clkrst_ll_enable_rng_clock(bool en)
}
/// LPPERI.clk_en is a shared register, so this function must be used in an atomic way
#define lp_clkrst_ll_enable_rng_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _lp_clkrst_ll_enable_rng_clock(__VA_ARGS__)
#define lp_clkrst_ll_enable_rng_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_lp_clkrst_ll_enable_rng_clock(__VA_ARGS__); \
} while(0)
#ifdef __cplusplus
}

View File

@@ -36,7 +36,10 @@ static inline __attribute__((always_inline)) void _regi2c_ctrl_ll_master_enable_
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define regi2c_ctrl_ll_master_enable_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _regi2c_ctrl_ll_master_enable_clock(__VA_ARGS__)
#define regi2c_ctrl_ll_master_enable_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_regi2c_ctrl_ll_master_enable_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Check whether analog I2C master clock is enabled
@@ -57,7 +60,10 @@ static inline __attribute__((always_inline)) void _regi2c_ctrl_ll_master_reset(v
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define regi2c_ctrl_ll_master_reset(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _regi2c_ctrl_ll_master_reset(__VA_ARGS__)
#define regi2c_ctrl_ll_master_reset(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_regi2c_ctrl_ll_master_reset(__VA_ARGS__); \
} while(0)
/**
* @brief Force enable analog I2C master clock

View File

@@ -44,7 +44,10 @@ static inline void _rtcio_ll_enable_io_clock(bool enable)
}
}
#define rtcio_ll_enable_io_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _rtcio_ll_enable_io_clock(__VA_ARGS__)
#define rtcio_ll_enable_io_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_rtcio_ll_enable_io_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Select the rtcio function.

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -49,7 +49,10 @@ static inline void systimer_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_enable_bus_clock(__VA_ARGS__)
#define systimer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the systimer module
@@ -64,7 +67,10 @@ static inline void systimer_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_reset_register(__VA_ARGS__)
#define systimer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_reset_register(__VA_ARGS__); \
} while(0)
/********************** ETM *****************************/

View File

@@ -68,7 +68,10 @@ static inline void _timer_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_enable_bus_clock(__VA_ARGS__)
#define timer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the timer group module
@@ -94,7 +97,10 @@ static inline void _timer_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_reset_register(__VA_ARGS__)
#define timer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Set clock source for timer

View File

@@ -67,7 +67,10 @@ static inline void _lp_clkrst_ll_enable_rng_clock(bool en)
}
/// LPPERI.clk_en is a shared register, so this function must be used in an atomic way
#define lp_clkrst_ll_enable_rng_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _lp_clkrst_ll_enable_rng_clock(__VA_ARGS__)
#define lp_clkrst_ll_enable_rng_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_lp_clkrst_ll_enable_rng_clock(__VA_ARGS__); \
} while(0)
#ifdef __cplusplus
}

View File

@@ -44,7 +44,10 @@ static inline void _rtcio_ll_enable_io_clock(bool enable)
}
}
#define rtcio_ll_enable_io_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _rtcio_ll_enable_io_clock(__VA_ARGS__)
#define rtcio_ll_enable_io_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_rtcio_ll_enable_io_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Select the rtcio function.

View File

@@ -50,7 +50,10 @@ static inline void systimer_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_enable_bus_clock(__VA_ARGS__)
#define systimer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the systimer module
@@ -65,7 +68,10 @@ static inline void systimer_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_reset_register(__VA_ARGS__)
#define systimer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_reset_register(__VA_ARGS__); \
} while(0)
/********************** ETM *****************************/

View File

@@ -65,7 +65,10 @@ static inline void _timer_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_enable_bus_clock(__VA_ARGS__)
#define timer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the timer group module
@@ -87,7 +90,10 @@ static inline void _timer_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_reset_register(__VA_ARGS__)
#define timer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Set clock source for timer

View File

@@ -51,7 +51,10 @@ static inline void systimer_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_enable_bus_clock(__VA_ARGS__)
#define systimer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the systimer module
@@ -66,7 +69,10 @@ static inline void systimer_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define systimer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; systimer_ll_reset_register(__VA_ARGS__)
#define systimer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
systimer_ll_reset_register(__VA_ARGS__); \
} while(0)
/********************** ETM *****************************/

View File

@@ -68,7 +68,10 @@ static inline void _timer_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_enable_bus_clock(__VA_ARGS__)
#define timer_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the timer group module
@@ -94,7 +97,10 @@ static inline void _timer_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define timer_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _timer_ll_reset_register(__VA_ARGS__)
#define timer_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_timer_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Set clock source for timer

View File

@@ -520,7 +520,10 @@ static inline void _adc_ll_sar1_clock_force_en(bool enable)
}
// HP_SYS_CLKRST.clk_force_on_ctrl0 are shared registers, so this function must be used in an atomic way
#define adc_ll_sar1_clock_force_en(...) (void)__DECLARE_RCC_ATOMIC_ENV; _adc_ll_sar1_clock_force_en(__VA_ARGS__)
#define adc_ll_sar1_clock_force_en(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_adc_ll_sar1_clock_force_en(__VA_ARGS__); \
} while(0)
static inline void _adc_ll_sar2_clock_force_en(bool enable)
{
@@ -528,7 +531,10 @@ static inline void _adc_ll_sar2_clock_force_en(bool enable)
}
// HP_SYS_CLKRST.clk_force_on_ctrl0 are shared registers, so this function must be used in an atomic way
#define adc_ll_sar2_clock_force_en(...) (void)__DECLARE_RCC_ATOMIC_ENV; _adc_ll_sar2_clock_force_en(__VA_ARGS__)
#define adc_ll_sar2_clock_force_en(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_adc_ll_sar2_clock_force_en(__VA_ARGS__); \
} while(0)
/**
* @brief Enable the ADC clock
@@ -541,7 +547,10 @@ static inline void _adc_ll_enable_bus_clock(bool enable)
HP_SYS_CLKRST.peri_clk_ctrl23.reg_adc_clk_en = enable;
}
// HP_SYS_CLKRST.soc_clk_ctrl2 are shared registers, so this function must be used in an atomic way
#define adc_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _adc_ll_enable_bus_clock(__VA_ARGS__)
#define adc_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_adc_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset ADC module
@@ -553,7 +562,10 @@ static inline void _adc_ll_reset_register(void)
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_adc = 0;
}
// HP_SYS_CLKRST.hp_rst_en2 is a shared register, so this function must be used in an atomic way
#define adc_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; _adc_ll_reset_register(__VA_ARGS__)
#define adc_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_adc_ll_reset_register(__VA_ARGS__); \
} while(0)

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -38,7 +38,10 @@ static inline void _aes_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define aes_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _aes_ll_enable_bus_clock(__VA_ARGS__)
#define aes_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_aes_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the AES peripheral module
@@ -55,7 +58,10 @@ static inline void aes_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define aes_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; aes_ll_reset_register(__VA_ARGS__)
#define aes_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
aes_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Write the encryption/decryption key to hardware

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -35,7 +35,10 @@ static inline void cam_ll_enable_bus_clock(int group_id, bool en)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define cam_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; cam_ll_enable_bus_clock(__VA_ARGS__)
#define cam_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
cam_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the CAM module
@@ -51,7 +54,10 @@ static inline void cam_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define cam_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; cam_ll_reset_register(__VA_ARGS__)
#define cam_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
cam_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable clock gating
@@ -66,7 +72,10 @@ static inline void cam_ll_enable_clk(int group_id, bool en)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define cam_ll_enable_clk(...) (void)__DECLARE_RCC_ATOMIC_ENV; cam_ll_enable_clk(__VA_ARGS__)
#define cam_ll_enable_clk(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
cam_ll_enable_clk(__VA_ARGS__); \
} while(0)
/**
* @brief Get the clock status for the CAM module
@@ -81,7 +90,10 @@ static inline bool cam_ll_get_clk_status(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define cam_ll_get_clk_status(...) (void)__DECLARE_RCC_ATOMIC_ENV; cam_ll_get_clk_status(__VA_ARGS__)
#define cam_ll_get_clk_status(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
cam_ll_get_clk_status(__VA_ARGS__); \
} while(0)
/**
* @brief Select clock source for CAM peripheral
@@ -109,7 +121,10 @@ static inline void cam_ll_select_clk_src(int group_id, cam_clock_source_t src)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define cam_ll_select_clk_src(...) (void)__DECLARE_RCC_ATOMIC_ENV; cam_ll_select_clk_src(__VA_ARGS__)
#define cam_ll_select_clk_src(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
cam_ll_select_clk_src(__VA_ARGS__); \
} while(0)
/**
* @brief Get the CAM source clock type
@@ -156,7 +171,10 @@ static inline void cam_ll_set_group_clock_coeff(int group_id, int div_num, int d
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define cam_ll_set_group_clock_coeff(...) (void)__DECLARE_RCC_ATOMIC_ENV; cam_ll_set_group_clock_coeff(__VA_ARGS__)
#define cam_ll_set_group_clock_coeff(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
cam_ll_set_group_clock_coeff(__VA_ARGS__); \
} while(0)
/**
* @brief Enable stop signal for CAM peripheral

View File

@@ -26,7 +26,10 @@ FORCE_INLINE_ATTR void _clk_gate_ll_ref_20m_clk_en(bool enable)
}
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define clk_gate_ll_ref_20m_clk_en(...) (void)__DECLARE_RCC_ATOMIC_ENV; _clk_gate_ll_ref_20m_clk_en(__VA_ARGS__)
#define clk_gate_ll_ref_20m_clk_en(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_clk_gate_ll_ref_20m_clk_en(__VA_ARGS__); \
} while(0)
/**
* Enable or disable the clock gate for ref_20m.
@@ -38,7 +41,10 @@ FORCE_INLINE_ATTR void _clk_gate_ll_ref_25m_clk_en(bool enable)
}
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define clk_gate_ll_ref_25m_clk_en(...) (void)__DECLARE_RCC_ATOMIC_ENV; _clk_gate_ll_ref_25m_clk_en(__VA_ARGS__)
#define clk_gate_ll_ref_25m_clk_en(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_clk_gate_ll_ref_25m_clk_en(__VA_ARGS__); \
} while(0)
/**
* Enable or disable the clock gate for ref_20m.
@@ -50,7 +56,10 @@ FORCE_INLINE_ATTR void _clk_gate_ll_ref_80m_clk_en(bool enable)
}
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define clk_gate_ll_ref_80m_clk_en(...) (void)__DECLARE_RCC_ATOMIC_ENV; _clk_gate_ll_ref_80m_clk_en(__VA_ARGS__)
#define clk_gate_ll_ref_80m_clk_en(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_clk_gate_ll_ref_80m_clk_en(__VA_ARGS__); \
} while(0)
/**
* Enable or disable the clock gate for ref_20m.
@@ -62,7 +71,10 @@ FORCE_INLINE_ATTR void _clk_gate_ll_ref_160m_clk_en(bool enable)
}
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define clk_gate_ll_ref_160m_clk_en(...) (void)__DECLARE_RCC_ATOMIC_ENV; _clk_gate_ll_ref_160m_clk_en(__VA_ARGS__)
#define clk_gate_ll_ref_160m_clk_en(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_clk_gate_ll_ref_160m_clk_en(__VA_ARGS__); \
} while(0)
/**
* Enable or disable the clock gate for ref_20m.
@@ -74,7 +86,10 @@ FORCE_INLINE_ATTR void _clk_gate_ll_ref_240m_clk_en(bool enable)
}
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define clk_gate_ll_ref_240m_clk_en(...) (void)__DECLARE_RCC_ATOMIC_ENV; _clk_gate_ll_ref_240m_clk_en(__VA_ARGS__)
#define clk_gate_ll_ref_240m_clk_en(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_clk_gate_ll_ref_240m_clk_en(__VA_ARGS__); \
} while(0)
/**
* Enable or disable the clock gate for xtal to lp periph
@@ -86,7 +101,10 @@ FORCE_INLINE_ATTR void _clk_gate_ll_xtal_to_lp_periph_en(bool enable)
}
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define clk_gate_ll_xtal_to_lp_periph_en(...) (void)__DECLARE_RCC_ATOMIC_ENV; _clk_gate_ll_xtal_to_lp_periph_en(__VA_ARGS__)
#define clk_gate_ll_xtal_to_lp_periph_en(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_clk_gate_ll_xtal_to_lp_periph_en(__VA_ARGS__); \
} while(0)
/**
* Enable or disable the clock gate for ref_50m.
@@ -98,7 +116,10 @@ FORCE_INLINE_ATTR void _clk_gate_ll_ref_50m_clk_en(bool enable)
}
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define clk_gate_ll_ref_50m_clk_en(...) (void)__DECLARE_RCC_ATOMIC_ENV; _clk_gate_ll_ref_50m_clk_en(__VA_ARGS__)
#define clk_gate_ll_ref_50m_clk_en(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_clk_gate_ll_ref_50m_clk_en(__VA_ARGS__); \
} while(0)
#ifdef __cplusplus

View File

@@ -87,7 +87,10 @@ static inline void dma2d_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define dma2d_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; dma2d_ll_enable_bus_clock(__VA_ARGS__)
#define dma2d_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
dma2d_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the 2D-DMA module
@@ -103,7 +106,10 @@ static inline void dma2d_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define dma2d_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; dma2d_ll_reset_register(__VA_ARGS__)
#define dma2d_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
dma2d_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Check if the bus clock is enabled for the DMA module

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -37,7 +37,10 @@ static inline void _ds_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ds_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _ds_ll_enable_bus_clock(__VA_ARGS__)
#define ds_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_ds_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the DS peripheral module
@@ -53,7 +56,10 @@ static inline void ds_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ds_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; ds_ll_reset_register(__VA_ARGS__)
#define ds_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ds_ll_reset_register(__VA_ARGS__); \
} while(0)
static inline void ds_ll_start(void)
{

View File

@@ -96,7 +96,10 @@ static inline void dw_gdma_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define dw_gdma_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; dw_gdma_ll_enable_bus_clock(__VA_ARGS__)
#define dw_gdma_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
dw_gdma_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the DMA module
@@ -110,7 +113,10 @@ static inline void _dw_gdma_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define dw_gdma_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; _dw_gdma_ll_reset_register(__VA_ARGS__)
#define dw_gdma_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_dw_gdma_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Check if the bus clock is enabled for the DMA module

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -37,7 +37,10 @@ static inline void _ecc_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ecc_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _ecc_ll_enable_bus_clock(__VA_ARGS__)
#define ecc_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_ecc_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the ECC peripheral module
@@ -54,7 +57,10 @@ static inline void ecc_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ecc_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; ecc_ll_reset_register(__VA_ARGS__)
#define ecc_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ecc_ll_reset_register(__VA_ARGS__); \
} while(0)
static inline void ecc_ll_power_up(void) {}
static inline void ecc_ll_power_down(void) {}

View File

@@ -93,7 +93,10 @@ static inline void ecdsa_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ecdsa_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; ecdsa_ll_enable_bus_clock(__VA_ARGS__)
#define ecdsa_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ecdsa_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the ECDSA peripheral module

View File

@@ -830,7 +830,10 @@ static inline void emac_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define emac_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; emac_ll_enable_bus_clock(__VA_ARGS__)
#define emac_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
emac_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
static inline void _emac_ll_clock_force_en(bool enable)
{
@@ -839,7 +842,10 @@ static inline void _emac_ll_clock_force_en(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define emac_ll_clock_force_en(...) (void)__DECLARE_RCC_ATOMIC_ENV; _emac_ll_clock_force_en(__VA_ARGS__)
#define emac_ll_clock_force_en(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_emac_ll_clock_force_en(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the EMAC module
@@ -855,7 +861,10 @@ static inline void emac_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define emac_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; emac_ll_reset_register(__VA_ARGS__)
#define emac_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
emac_ll_reset_register(__VA_ARGS__); \
} while(0)
static inline eth_data_interface_t emac_ll_get_phy_intf(void *ext_regs)
{
@@ -887,7 +896,10 @@ static inline void emac_ll_clock_enable_mii(void *ext_regs)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define emac_ll_clock_enable_mii(...) (void)__DECLARE_RCC_ATOMIC_ENV; emac_ll_clock_enable_mii(__VA_ARGS__)
#define emac_ll_clock_enable_mii(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
emac_ll_clock_enable_mii(__VA_ARGS__); \
} while(0)
static inline void emac_ll_clock_enable_rmii_input(void *ext_regs)
{
@@ -913,7 +925,10 @@ static inline void emac_ll_clock_enable_rmii_input(void *ext_regs)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define emac_ll_clock_enable_rmii_input(...) (void)__DECLARE_RCC_ATOMIC_ENV; emac_ll_clock_enable_rmii_input(__VA_ARGS__)
#define emac_ll_clock_enable_rmii_input(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
emac_ll_clock_enable_rmii_input(__VA_ARGS__); \
} while(0)
static inline void emac_ll_clock_rmii_rx_tx_div(void *ext_regs, int div)
{
@@ -923,7 +938,10 @@ static inline void emac_ll_clock_rmii_rx_tx_div(void *ext_regs, int div)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define emac_ll_clock_rmii_rx_tx_div(...) (void)__DECLARE_RCC_ATOMIC_ENV; emac_ll_clock_rmii_rx_tx_div(__VA_ARGS__)
#define emac_ll_clock_rmii_rx_tx_div(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
emac_ll_clock_rmii_rx_tx_div(__VA_ARGS__); \
} while(0)
static inline void emac_ll_clock_enable_rmii_output(void *ext_regs)
{
@@ -934,7 +952,10 @@ static inline void emac_ll_clock_enable_rmii_output(void *ext_regs)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define emac_ll_clock_enable_rmii_output(...) (void)__DECLARE_RCC_ATOMIC_ENV; emac_ll_clock_enable_rmii_output(__VA_ARGS__)
#define emac_ll_clock_enable_rmii_output(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
emac_ll_clock_enable_rmii_output(__VA_ARGS__); \
} while(0)
static inline void emac_ll_clock_enable_ptp(void *ext_regs, soc_periph_emac_ptp_clk_src_t clk_src, bool enable)
{
@@ -958,7 +979,10 @@ static inline void emac_ll_clock_enable_ptp(void *ext_regs, soc_periph_emac_ptp_
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define emac_ll_clock_enable_ptp(...) (void)__DECLARE_RCC_ATOMIC_ENV; emac_ll_clock_enable_ptp(__VA_ARGS__)
#define emac_ll_clock_enable_ptp(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
emac_ll_clock_enable_ptp(__VA_ARGS__); \
} while(0)
static inline void emac_ll_pause_frame_enable(void *ext_regs, bool enable)
{

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -35,7 +35,10 @@ static inline void _etm_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define etm_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _etm_ll_enable_bus_clock(__VA_ARGS__)
#define etm_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_etm_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the ETM module
@@ -51,7 +54,10 @@ static inline void etm_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define etm_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; etm_ll_reset_register(__VA_ARGS__)
#define etm_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
etm_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable ETM channel

View File

@@ -106,7 +106,10 @@ static inline void _gdma_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define gdma_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _gdma_ll_enable_bus_clock(__VA_ARGS__)
#define gdma_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_gdma_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Check if the bus clock is enabled for the DMA module
@@ -137,7 +140,10 @@ static inline void _gdma_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define gdma_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; _gdma_ll_reset_register(__VA_ARGS__)
#define gdma_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_gdma_ll_reset_register(__VA_ARGS__); \
} while(0)
#ifdef __cplusplus
}

View File

@@ -637,7 +637,10 @@ static inline void gpio_ll_iomux_set_clk_src(soc_module_clk_t src)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define gpio_ll_iomux_set_clk_src(...) (void)__DECLARE_RCC_ATOMIC_ENV; gpio_ll_iomux_set_clk_src(__VA_ARGS__)
#define gpio_ll_iomux_set_clk_src(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
gpio_ll_iomux_set_clk_src(__VA_ARGS__); \
} while(0)
/**
* @brief Get the GPIO number that is routed to the input peripheral signal through GPIO matrix.

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -44,7 +44,10 @@ static inline void _hmac_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define hmac_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _hmac_ll_enable_bus_clock(__VA_ARGS__)
#define hmac_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_hmac_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the HMAC peripheral module
@@ -60,7 +63,10 @@ static inline void hmac_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define hmac_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; hmac_ll_reset_register(__VA_ARGS__)
#define hmac_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
hmac_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* Makes the peripheral ready for use, after enabling it.

View File

@@ -879,7 +879,10 @@ static inline void lp_i2c_ll_set_source_clk(i2c_dev_t *hw, soc_periph_lp_i2c_clk
}
/// LP_AON_CLKRST.lpperi is a shared register, so this function must be used in an atomic way
#define lp_i2c_ll_set_source_clk(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_i2c_ll_set_source_clk(__VA_ARGS__)
#define lp_i2c_ll_set_source_clk(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_i2c_ll_set_source_clk(__VA_ARGS__); \
} while(0)
/**
* @brief Enable bus clock for the LP I2C module
@@ -894,7 +897,10 @@ static inline void _lp_i2c_ll_enable_bus_clock(int hw_id, bool enable)
}
/// LPPERI.clk_en is a shared register, so this function must be used in an atomic way
#define lp_i2c_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _lp_i2c_ll_enable_bus_clock(__VA_ARGS__)
#define lp_i2c_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_lp_i2c_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset LP I2C module
@@ -909,7 +915,10 @@ static inline void lp_i2c_ll_reset_register(int hw_id)
}
/// LPPERI.reset_en is a shared register, so this function must be used in an atomic way
#define lp_i2c_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_i2c_ll_reset_register(__VA_ARGS__)
#define lp_i2c_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_i2c_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable I2C peripheral controller clock

View File

@@ -140,7 +140,10 @@ static inline void i2s_ll_enable_bus_clock(int i2s_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; i2s_ll_enable_bus_clock(__VA_ARGS__)
#define i2s_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
i2s_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the I2S module
@@ -167,7 +170,10 @@ static inline void i2s_ll_reset_register(int i2s_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; i2s_ll_reset_register(__VA_ARGS__)
#define i2s_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
i2s_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief I2S module general init, enable I2S clock.
@@ -184,7 +190,10 @@ static inline void i2s_ll_enable_core_clock(i2s_dev_t *hw, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_enable_core_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; i2s_ll_enable_core_clock(__VA_ARGS__)
#define i2s_ll_enable_core_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
i2s_ll_enable_core_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Enable I2S tx module clock
@@ -209,7 +218,10 @@ static inline void _i2s_ll_tx_enable_clock(i2s_dev_t *hw)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_tx_enable_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _i2s_ll_tx_enable_clock(__VA_ARGS__)
#define i2s_ll_tx_enable_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_i2s_ll_tx_enable_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Enable I2S rx module clock
@@ -234,7 +246,10 @@ static inline void _i2s_ll_rx_enable_clock(i2s_dev_t *hw)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_rx_enable_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _i2s_ll_rx_enable_clock(__VA_ARGS__)
#define i2s_ll_rx_enable_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_i2s_ll_rx_enable_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Disable I2S tx module clock
@@ -259,7 +274,10 @@ static inline void i2s_ll_tx_disable_clock(i2s_dev_t *hw)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_tx_disable_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; i2s_ll_tx_disable_clock(__VA_ARGS__)
#define i2s_ll_tx_disable_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
i2s_ll_tx_disable_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Disable I2S rx module clock
@@ -284,7 +302,10 @@ static inline void i2s_ll_rx_disable_clock(i2s_dev_t *hw)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_rx_disable_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; i2s_ll_rx_disable_clock(__VA_ARGS__)
#define i2s_ll_rx_disable_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
i2s_ll_rx_disable_clock(__VA_ARGS__); \
} while(0)
/**
* @brief I2S mclk use tx module clock
@@ -310,7 +331,10 @@ static inline void _i2s_ll_mclk_bind_to_tx_clk(i2s_dev_t *hw)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_mclk_bind_to_tx_clk(...) (void)__DECLARE_RCC_ATOMIC_ENV; _i2s_ll_mclk_bind_to_tx_clk(__VA_ARGS__)
#define i2s_ll_mclk_bind_to_tx_clk(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_i2s_ll_mclk_bind_to_tx_clk(__VA_ARGS__); \
} while(0)
/**
* @brief I2S mclk use rx module clock
@@ -336,7 +360,10 @@ static inline void _i2s_ll_mclk_bind_to_rx_clk(i2s_dev_t *hw)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_mclk_bind_to_rx_clk(...) (void)__DECLARE_RCC_ATOMIC_ENV; _i2s_ll_mclk_bind_to_rx_clk(__VA_ARGS__)
#define i2s_ll_mclk_bind_to_rx_clk(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_i2s_ll_mclk_bind_to_rx_clk(__VA_ARGS__); \
} while(0)
/**
* @brief Enable I2S TX slave mode
@@ -445,7 +472,10 @@ static inline void _i2s_ll_tx_clk_set_src(i2s_dev_t *hw, i2s_clock_src_t src)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_tx_clk_set_src(...) (void)__DECLARE_RCC_ATOMIC_ENV; _i2s_ll_tx_clk_set_src(__VA_ARGS__)
#define i2s_ll_tx_clk_set_src(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_i2s_ll_tx_clk_set_src(__VA_ARGS__); \
} while(0)
/**
* @brief Set RX source clock
@@ -472,7 +502,10 @@ static inline void _i2s_ll_rx_clk_set_src(i2s_dev_t *hw, i2s_clock_src_t src)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_rx_clk_set_src(...) (void)__DECLARE_RCC_ATOMIC_ENV; _i2s_ll_rx_clk_set_src(__VA_ARGS__)
#define i2s_ll_rx_clk_set_src(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_i2s_ll_rx_clk_set_src(__VA_ARGS__); \
} while(0)
/**
* @brief Set I2S tx bck div num
@@ -639,7 +672,10 @@ static inline void _i2s_ll_tx_set_mclk(i2s_dev_t *hw, const hal_utils_clk_div_t
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_tx_set_mclk(...) (void)__DECLARE_RCC_ATOMIC_ENV; _i2s_ll_tx_set_mclk(__VA_ARGS__)
#define i2s_ll_tx_set_mclk(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_i2s_ll_tx_set_mclk(__VA_ARGS__); \
} while(0)
/**
* @brief Set I2S rx bck div num
@@ -677,7 +713,10 @@ static inline void _i2s_ll_rx_set_mclk(i2s_dev_t *hw, const hal_utils_clk_div_t
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define i2s_ll_rx_set_mclk(...) (void)__DECLARE_RCC_ATOMIC_ENV; _i2s_ll_rx_set_mclk(__VA_ARGS__)
#define i2s_ll_rx_set_mclk(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_i2s_ll_rx_set_mclk(__VA_ARGS__); \
} while(0)
/**
* @brief Update the TX configuration

View File

@@ -192,7 +192,10 @@ static inline void isp_ll_enable_module_clock(isp_dev_t *hw, bool en)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define isp_ll_enable_module_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; isp_ll_enable_module_clock(__VA_ARGS__)
#define isp_ll_enable_module_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
isp_ll_enable_module_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the ISP module
@@ -207,7 +210,10 @@ static inline void isp_ll_reset_module_clock(isp_dev_t *hw)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define isp_ll_reset_module_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; isp_ll_reset_module_clock(__VA_ARGS__)
#define isp_ll_reset_module_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
isp_ll_reset_module_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Select ISP clock source
@@ -238,7 +244,10 @@ static inline void isp_ll_select_clk_source(isp_dev_t *hw, soc_periph_isp_clk_sr
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define isp_ll_select_clk_source(...) (void)__DECLARE_RCC_ATOMIC_ENV; isp_ll_select_clk_source(__VA_ARGS__)
#define isp_ll_select_clk_source(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
isp_ll_select_clk_source(__VA_ARGS__); \
} while(0)
/**
* @brief Set ISP clock div
@@ -254,7 +263,10 @@ static inline void isp_ll_set_clock_div(isp_dev_t *hw, const hal_utils_clk_div_t
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define isp_ll_set_clock_div(...) (void)__DECLARE_RCC_ATOMIC_ENV; isp_ll_set_clock_div(__VA_ARGS__)
#define isp_ll_set_clock_div(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
isp_ll_set_clock_div(__VA_ARGS__); \
} while(0)
/*---------------------------------------------------------------
Misc

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -89,7 +89,10 @@ static inline void jpeg_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define jpeg_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; jpeg_ll_enable_bus_clock(__VA_ARGS__)
#define jpeg_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
jpeg_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the JPEG module
@@ -102,7 +105,10 @@ static inline void jpeg_ll_reset_module_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define jpeg_ll_reset_module_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; jpeg_ll_reset_module_register(__VA_ARGS__)
#define jpeg_ll_reset_module_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
jpeg_ll_reset_module_register(__VA_ARGS__); \
} while(0)
/**
* @brief Write the numbers of 1~n codewords length sum of ac0 table and write the minimum codeword of code length

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -37,7 +37,10 @@ static inline void _key_mgr_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define key_mgr_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _key_mgr_ll_enable_bus_clock(__VA_ARGS__)
#define key_mgr_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_key_mgr_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Enable the peripheral clock for Key Manager
@@ -51,7 +54,10 @@ static inline void _key_mgr_ll_enable_peripheral_clock(bool enable)
HP_SYS_CLKRST.peri_clk_ctrl25.reg_crypto_km_clk_en = enable;
}
#define key_mgr_ll_enable_peripheral_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _key_mgr_ll_enable_peripheral_clock(__VA_ARGS__)
#define key_mgr_ll_enable_peripheral_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_key_mgr_ll_enable_peripheral_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Read state of Key Manager
@@ -82,7 +88,10 @@ static inline void _key_mgr_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define key_mgr_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; _key_mgr_ll_reset_register(__VA_ARGS__)
#define key_mgr_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_key_mgr_ll_reset_register(__VA_ARGS__); \
} while(0)
/* @brief Start the key manager at IDLE state */
static inline void key_mgr_ll_start(void)

View File

@@ -37,7 +37,10 @@ static inline void _l2mem_ll_clock_force_en(bool enable)
}
// HP_SYS_CLKRST.soc_clk_ctrl2 are shared registers, so this function must be used in an atomic way
#define l2mem_ll_clock_force_en(...) (void)__DECLARE_RCC_ATOMIC_ENV; _l2mem_ll_clock_force_en(__VA_ARGS__)
#define l2mem_ll_clock_force_en(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_l2mem_ll_clock_force_en(__VA_ARGS__); \
} while(0)
#ifdef __cplusplus
}

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -56,7 +56,10 @@ static inline void lcd_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define lcd_ll_enable_bus_clock(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; lcd_ll_enable_bus_clock(__VA_ARGS__)
#define lcd_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
lcd_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the LCD module
@@ -72,7 +75,10 @@ static inline void _lcd_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_RC_ATOMIC_ENV variable in advance
#define lcd_ll_reset_register(...) (void)__DECLARE_RCC_RC_ATOMIC_ENV; _lcd_ll_reset_register(__VA_ARGS__)
#define lcd_ll_reset_register(...) do { \
(void)__DECLARE_RCC_RC_ATOMIC_ENV; \
_lcd_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable clock gating
@@ -87,7 +93,10 @@ static inline void lcd_ll_enable_clock(lcd_cam_dev_t *dev, bool en)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define lcd_ll_enable_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; lcd_ll_enable_clock(__VA_ARGS__)
#define lcd_ll_enable_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lcd_ll_enable_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Select clock source for LCD peripheral
@@ -116,7 +125,10 @@ static inline void lcd_ll_select_clk_src(lcd_cam_dev_t *dev, lcd_clock_source_t
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define lcd_ll_select_clk_src(...) (void)__DECLARE_RCC_ATOMIC_ENV; lcd_ll_select_clk_src(__VA_ARGS__)
#define lcd_ll_select_clk_src(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lcd_ll_select_clk_src(__VA_ARGS__); \
} while(0)
/**
* @brief Set clock coefficient of LCD peripheral
@@ -138,7 +150,10 @@ static inline void lcd_ll_set_group_clock_coeff(lcd_cam_dev_t *dev, int div_num,
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define lcd_ll_set_group_clock_coeff(...) (void)__DECLARE_RCC_ATOMIC_ENV; lcd_ll_set_group_clock_coeff(__VA_ARGS__)
#define lcd_ll_set_group_clock_coeff(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lcd_ll_set_group_clock_coeff(__VA_ARGS__); \
} while(0)
/**
* @brief Set the PCLK clock level state when there's no transaction undergoing

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -43,7 +43,10 @@ static inline void ledc_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ledc_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; ledc_ll_enable_bus_clock(__VA_ARGS__)
#define ledc_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ledc_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset whole peripheral register to init value defined by HW design
@@ -55,7 +58,10 @@ static inline void ledc_ll_enable_reset_reg(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ledc_ll_enable_reset_reg(...) (void)__DECLARE_RCC_ATOMIC_ENV; ledc_ll_enable_reset_reg(__VA_ARGS__)
#define ledc_ll_enable_reset_reg(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ledc_ll_enable_reset_reg(__VA_ARGS__); \
} while(0)
/**
* @brief Enable the power for LEDC memory block
@@ -81,7 +87,10 @@ static inline void ledc_ll_enable_clock(ledc_dev_t *hw, bool en)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ledc_ll_enable_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; ledc_ll_enable_clock(__VA_ARGS__)
#define ledc_ll_enable_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ledc_ll_enable_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Set LEDC low speed timer clock
@@ -115,7 +124,10 @@ static inline void ledc_ll_set_slow_clk_sel(ledc_dev_t *hw, ledc_slow_clk_sel_t
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define ledc_ll_set_slow_clk_sel(...) (void)__DECLARE_RCC_ATOMIC_ENV; ledc_ll_set_slow_clk_sel(__VA_ARGS__)
#define ledc_ll_set_slow_clk_sel(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
ledc_ll_set_slow_clk_sel(__VA_ARGS__); \
} while(0)
/**
* @brief Get LEDC low speed timer clock

View File

@@ -46,7 +46,10 @@ static inline void lp_core_ll_enable_bus_clock(bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define lp_core_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_core_ll_enable_bus_clock(__VA_ARGS__)
#define lp_core_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_core_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the lp_core module
@@ -60,7 +63,10 @@ static inline void lp_core_ll_reset_register(void)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define lp_core_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_core_ll_reset_register(__VA_ARGS__)
#define lp_core_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_core_ll_reset_register(__VA_ARGS__); \
} while(0)
/**

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -133,7 +133,10 @@ static inline void lp_i2s_ll_enable_module_clock(int id, bool en)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define lp_i2s_ll_enable_module_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_i2s_ll_enable_module_clock(__VA_ARGS__)
#define lp_i2s_ll_enable_module_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_i2s_ll_enable_module_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the LP I2S module
@@ -148,7 +151,10 @@ static inline void lp_i2s_ll_reset_module_clock(int id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define lp_i2s_ll_reset_module_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_i2s_ll_reset_module_clock(__VA_ARGS__)
#define lp_i2s_ll_reset_module_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_i2s_ll_reset_module_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Enable the bus clock for LP I2S RX module
@@ -163,7 +169,10 @@ static inline void lp_i2s_ll_enable_rx_module_clock(int id, bool en)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define lp_i2s_ll_enable_rx_module_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_i2s_ll_enable_rx_module_clock(__VA_ARGS__)
#define lp_i2s_ll_enable_rx_module_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_i2s_ll_enable_rx_module_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Select ISP clock source
@@ -190,7 +199,10 @@ static inline void lp_i2s_ll_select_rx_clk_source(int id, soc_periph_lp_i2s_clk_
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define lp_i2s_ll_select_rx_clk_source(...) (void)__DECLARE_RCC_ATOMIC_ENV; lp_i2s_ll_select_rx_clk_source(__VA_ARGS__)
#define lp_i2s_ll_select_rx_clk_source(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
lp_i2s_ll_select_rx_clk_source(__VA_ARGS__); \
} while(0)
/**
* @brief Set LP I2S clock source div num

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -110,7 +110,10 @@ static inline void mcpwm_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mcpwm_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; mcpwm_ll_enable_bus_clock(__VA_ARGS__)
#define mcpwm_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mcpwm_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the MCPWM module
@@ -130,7 +133,10 @@ static inline void mcpwm_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mcpwm_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; mcpwm_ll_reset_register(__VA_ARGS__)
#define mcpwm_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mcpwm_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable MCPWM function clock
@@ -149,7 +155,10 @@ static inline void mcpwm_ll_group_enable_clock(int group_id, bool en)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mcpwm_ll_group_enable_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; mcpwm_ll_group_enable_clock(__VA_ARGS__)
#define mcpwm_ll_group_enable_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mcpwm_ll_group_enable_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Set the clock source for MCPWM
@@ -183,7 +192,10 @@ static inline void mcpwm_ll_group_set_clock_source(int group_id, soc_module_clk_
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mcpwm_ll_group_set_clock_source(...) (void)__DECLARE_RCC_ATOMIC_ENV; mcpwm_ll_group_set_clock_source(__VA_ARGS__)
#define mcpwm_ll_group_set_clock_source(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mcpwm_ll_group_set_clock_source(__VA_ARGS__); \
} while(0)
/**
* @brief Set the MCPWM group clock prescale
@@ -204,7 +216,10 @@ static inline void mcpwm_ll_group_set_clock_prescale(int group_id, int prescale)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mcpwm_ll_group_set_clock_prescale(...) (void)__DECLARE_RCC_ATOMIC_ENV; mcpwm_ll_group_set_clock_prescale(__VA_ARGS__)
#define mcpwm_ll_group_set_clock_prescale(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mcpwm_ll_group_set_clock_prescale(__VA_ARGS__); \
} while(0)
/**
* @brief Enable update MCPWM active registers from shadow registers

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2024-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -38,7 +38,10 @@ static inline void mipi_csi_ll_enable_brg_module_clock(int csi_bridge_id, bool e
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_csi_ll_enable_brg_module_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; mipi_csi_ll_enable_brg_module_clock(__VA_ARGS__)
#define mipi_csi_ll_enable_brg_module_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mipi_csi_ll_enable_brg_module_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the CSI Bridge module
@@ -53,7 +56,10 @@ static inline void mipi_csi_ll_reset_brg_module_clock(int csi_bridge_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_csi_ll_reset_brg_module_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; mipi_csi_ll_reset_brg_module_clock(__VA_ARGS__)
#define mipi_csi_ll_reset_brg_module_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mipi_csi_ll_reset_brg_module_clock(__VA_ARGS__); \
} while(0)
/*---------------------------------------------------------------
CSI PHY
@@ -84,7 +90,10 @@ static inline void mipi_csi_ll_set_phy_clock_source(int group_id, mipi_csi_phy_c
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_csi_ll_set_phy_clock_source(...) (void)__DECLARE_RCC_ATOMIC_ENV; mipi_csi_ll_set_phy_clock_source(__VA_ARGS__)
#define mipi_csi_ll_set_phy_clock_source(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mipi_csi_ll_set_phy_clock_source(__VA_ARGS__); \
} while(0)
/**
* @brief Enable MIPI CSI PHY configuration clock
@@ -100,7 +109,10 @@ static inline void mipi_csi_ll_enable_phy_config_clock(int group_id, bool en)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_csi_ll_enable_phy_config_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; mipi_csi_ll_enable_phy_config_clock(__VA_ARGS__)
#define mipi_csi_ll_enable_phy_config_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mipi_csi_ll_enable_phy_config_clock(__VA_ARGS__); \
} while(0)
/*---------------------------------------------------------------
CSI Host
@@ -119,7 +131,10 @@ static inline void _mipi_csi_ll_enable_host_bus_clock(int group_id, bool en)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_csi_ll_enable_host_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _mipi_csi_ll_enable_host_bus_clock(__VA_ARGS__)
#define mipi_csi_ll_enable_host_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_mipi_csi_ll_enable_host_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the MIPI CSI host CLK
@@ -135,7 +150,10 @@ static inline void mipi_csi_ll_reset_host_clock(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_csi_ll_reset_host_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; mipi_csi_ll_reset_host_clock(__VA_ARGS__)
#define mipi_csi_ll_reset_host_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mipi_csi_ll_reset_host_clock(__VA_ARGS__); \
} while(0)
#ifdef __cplusplus
}

View File

@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -35,7 +35,10 @@ static inline void _mipi_dsi_ll_enable_bus_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_dsi_ll_enable_bus_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; _mipi_dsi_ll_enable_bus_clock(__VA_ARGS__)
#define mipi_dsi_ll_enable_bus_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
_mipi_dsi_ll_enable_bus_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Reset the MIPI DSI module
@@ -51,7 +54,10 @@ static inline void mipi_dsi_ll_reset_register(int group_id)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_dsi_ll_reset_register(...) (void)__DECLARE_RCC_ATOMIC_ENV; mipi_dsi_ll_reset_register(__VA_ARGS__)
#define mipi_dsi_ll_reset_register(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mipi_dsi_ll_reset_register(__VA_ARGS__); \
} while(0)
/**
* @brief Enable MIPI DSI DPI clock
@@ -67,7 +73,10 @@ static inline void mipi_dsi_ll_enable_dpi_clock(int group_id, bool enable)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_dsi_ll_enable_dpi_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; mipi_dsi_ll_enable_dpi_clock(__VA_ARGS__)
#define mipi_dsi_ll_enable_dpi_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mipi_dsi_ll_enable_dpi_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Set the clock source for the DSI DPI interface
@@ -95,7 +104,10 @@ static inline void mipi_dsi_ll_set_dpi_clock_source(int group_id, mipi_dsi_dpi_c
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_dsi_ll_set_dpi_clock_source(...) (void)__DECLARE_RCC_ATOMIC_ENV; mipi_dsi_ll_set_dpi_clock_source(__VA_ARGS__)
#define mipi_dsi_ll_set_dpi_clock_source(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mipi_dsi_ll_set_dpi_clock_source(__VA_ARGS__); \
} while(0)
/**
* @brief Set the clock division factor for the DPI clock source
@@ -111,7 +123,10 @@ static inline void mipi_dsi_ll_set_dpi_clock_div(int group_id, uint32_t div)
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_dsi_ll_set_dpi_clock_div(...) (void)__DECLARE_RCC_ATOMIC_ENV; mipi_dsi_ll_set_dpi_clock_div(__VA_ARGS__)
#define mipi_dsi_ll_set_dpi_clock_div(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mipi_dsi_ll_set_dpi_clock_div(__VA_ARGS__); \
} while(0)
/**
* @brief Enable MIPI DSI PHY configuration clock
@@ -127,7 +142,10 @@ static inline void mipi_dsi_ll_enable_phy_config_clock(int group_id, bool enable
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_dsi_ll_enable_phy_config_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; mipi_dsi_ll_enable_phy_config_clock(__VA_ARGS__)
#define mipi_dsi_ll_enable_phy_config_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mipi_dsi_ll_enable_phy_config_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Enable MIPI DSI PHY PLL reference clock
@@ -143,7 +161,10 @@ static inline void mipi_dsi_ll_enable_phy_reference_clock(int group_id, bool ena
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_dsi_ll_enable_phy_reference_clock(...) (void)__DECLARE_RCC_ATOMIC_ENV; mipi_dsi_ll_enable_phy_reference_clock(__VA_ARGS__)
#define mipi_dsi_ll_enable_phy_reference_clock(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mipi_dsi_ll_enable_phy_reference_clock(__VA_ARGS__); \
} while(0)
/**
* @brief Set the clock source for the DSI PHY interface
@@ -171,7 +192,10 @@ static inline void mipi_dsi_ll_set_phy_clock_source(int group_id, mipi_dsi_phy_c
/// use a macro to wrap the function, force the caller to use it in a critical section
/// the critical section needs to declare the __DECLARE_RCC_ATOMIC_ENV variable in advance
#define mipi_dsi_ll_set_phy_clock_source(...) (void)__DECLARE_RCC_ATOMIC_ENV; mipi_dsi_ll_set_phy_clock_source(__VA_ARGS__)
#define mipi_dsi_ll_set_phy_clock_source(...) do { \
(void)__DECLARE_RCC_ATOMIC_ENV; \
mipi_dsi_ll_set_phy_clock_source(__VA_ARGS__); \
} while(0)
#ifdef __cplusplus
}

Some files were not shown because too many files have changed in this diff Show More