mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 03:00:34 +03:00
refactor(rtcio): align LP GPIO matrix related APIs with GPIO matrix APIs
This commit is contained in:
@@ -755,6 +755,7 @@ static inline void gpio_ll_set_output_enable_ctrl(gpio_dev_t *hw, uint8_t gpio_n
|
||||
* @param signal_idx Peripheral signal index (tagged as output attribute). Particularly, `SIG_GPIO_OUT_IDX` means disconnect GPIO and other peripherals. Only the GPIO driver can control the output level.
|
||||
* @param out_inv True if the signal output needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void gpio_ll_set_output_signal_matrix_source(gpio_dev_t *hw, uint32_t gpio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
hw->func_out_sel_cfg[gpio_num].func_sel = signal_idx;
|
||||
|
||||
@@ -561,6 +561,7 @@ static inline void gpio_ll_set_output_enable_ctrl(gpio_dev_t *hw, uint8_t gpio_n
|
||||
* @param signal_idx Peripheral signal index (tagged as output attribute). Particularly, `SIG_GPIO_OUT_IDX` means disconnect GPIO and other peripherals. Only the GPIO driver can control the output level.
|
||||
* @param out_inv True if the signal output needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void gpio_ll_set_output_signal_matrix_source(gpio_dev_t *hw, uint32_t gpio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
HAL_FORCE_MODIFY_U32_REG_FIELD(hw->func_out_sel_cfg[gpio_num], out_sel, signal_idx);
|
||||
|
||||
@@ -558,6 +558,7 @@ static inline void gpio_ll_set_output_enable_ctrl(gpio_dev_t *hw, uint8_t gpio_n
|
||||
* @param signal_idx Peripheral signal index (tagged as output attribute). Particularly, `SIG_GPIO_OUT_IDX` means disconnect GPIO and other peripherals. Only the GPIO driver can control the output level.
|
||||
* @param out_inv True if the signal output needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void gpio_ll_set_output_signal_matrix_source(gpio_dev_t *hw, uint32_t gpio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
HAL_FORCE_MODIFY_U32_REG_FIELD(hw->func_out_sel_cfg[gpio_num], out_sel, signal_idx);
|
||||
|
||||
@@ -545,6 +545,7 @@ static inline void gpio_ll_set_output_enable_ctrl(gpio_dev_t *hw, uint8_t gpio_n
|
||||
* @param signal_idx Peripheral signal index (tagged as output attribute). Particularly, `SIG_GPIO_OUT_IDX` means disconnect GPIO and other peripherals. Only the GPIO driver can control the output level.
|
||||
* @param out_inv True if the signal output needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void gpio_ll_set_output_signal_matrix_source(gpio_dev_t *hw, uint32_t gpio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
hw->func_out_sel_cfg[gpio_num].out_sel = signal_idx;
|
||||
|
||||
@@ -509,6 +509,7 @@ static inline void gpio_ll_set_output_enable_ctrl(gpio_dev_t *hw, uint8_t gpio_n
|
||||
* @param signal_idx Peripheral signal index (tagged as output attribute). Particularly, `SIG_GPIO_OUT_IDX` means disconnect GPIO and other peripherals. Only the GPIO driver can control the output level.
|
||||
* @param out_inv True if the signal output needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void gpio_ll_set_output_signal_matrix_source(gpio_dev_t *hw, uint32_t gpio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
HAL_FORCE_MODIFY_U32_REG_FIELD(hw->func_out_sel_cfg[gpio_num], out_sel, signal_idx);
|
||||
|
||||
@@ -545,6 +545,7 @@ static inline void gpio_ll_set_output_enable_ctrl(gpio_dev_t *hw, uint8_t gpio_n
|
||||
* @param signal_idx Peripheral signal index (tagged as output attribute). Particularly, `SIG_GPIO_OUT_IDX` means disconnect GPIO and other peripherals. Only the GPIO driver can control the output level.
|
||||
* @param out_inv True if the signal output needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void gpio_ll_set_output_signal_matrix_source(gpio_dev_t *hw, uint32_t gpio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
hw->funcn_out_sel_cfg[gpio_num].funcn_out_sel = signal_idx;
|
||||
|
||||
@@ -555,6 +555,7 @@ static inline void gpio_ll_set_output_enable_ctrl(gpio_dev_t *hw, uint8_t gpio_n
|
||||
* @param signal_idx Peripheral signal index (tagged as output attribute). Particularly, `SIG_GPIO_OUT_IDX` means disconnect GPIO and other peripherals. Only the GPIO driver can control the output level.
|
||||
* @param out_inv True if the signal output needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void gpio_ll_set_output_signal_matrix_source(gpio_dev_t *hw, uint32_t gpio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
HAL_FORCE_MODIFY_U32_REG_FIELD(hw->func_out_sel_cfg[gpio_num], out_sel, signal_idx);
|
||||
|
||||
@@ -536,6 +536,7 @@ static inline void gpio_ll_set_output_enable_ctrl(gpio_dev_t *hw, uint8_t gpio_n
|
||||
* @param signal_idx Peripheral signal index (tagged as output attribute). Particularly, `SIG_GPIO_OUT_IDX` means disconnect GPIO and other peripherals. Only the GPIO driver can control the output level.
|
||||
* @param out_inv True if the signal output needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void gpio_ll_set_output_signal_matrix_source(gpio_dev_t *hw, uint32_t gpio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
hw->funcn_out_sel_cfg[gpio_num].funcn_out_sel = signal_idx;
|
||||
|
||||
@@ -554,6 +554,7 @@ static inline void gpio_ll_set_output_enable_ctrl(gpio_dev_t *hw, uint8_t gpio_n
|
||||
* @param signal_idx Peripheral signal index (tagged as output attribute). Particularly, `SIG_GPIO_OUT_IDX` means disconnect GPIO and other peripherals. Only the GPIO driver can control the output level.
|
||||
* @param out_inv True if the signal output needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void gpio_ll_set_output_signal_matrix_source(gpio_dev_t *hw, uint32_t gpio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
hw->funcn_out_sel_cfg[gpio_num].out_sel = signal_idx;
|
||||
|
||||
@@ -671,6 +671,7 @@ static inline void gpio_ll_set_output_enable_ctrl(gpio_dev_t *hw, uint8_t gpio_n
|
||||
* @param signal_idx Peripheral signal index (tagged as output attribute). Particularly, `SIG_GPIO_OUT_IDX` means disconnect GPIO and other peripherals. Only the GPIO driver can control the output level.
|
||||
* @param out_inv True if the signal output needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void gpio_ll_set_output_signal_matrix_source(gpio_dev_t *hw, uint32_t gpio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
hw->func_out_sel_cfg[gpio_num].out_sel = signal_idx;
|
||||
|
||||
@@ -58,59 +58,39 @@ static inline void _rtcio_ll_enable_io_clock(bool enable)
|
||||
#define rtcio_ll_enable_io_clock(...) _rtcio_ll_enable_io_clock(__VA_ARGS__)
|
||||
|
||||
/**
|
||||
* @brief Select RTC GPIO input to a signal.
|
||||
* @brief Configure peripheral signal input whether to bypass LP_GPIO matrix.
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||
* @param signal_idx LP peripheral signal index.
|
||||
* @param inv True to invert input signal; False then no invert.
|
||||
* @param from_gpio_matrix True if not to bypass LP_GPIO matrix, otherwise False.
|
||||
*/
|
||||
static inline void rtcio_ll_matrix_in(int rtcio_num, uint32_t signal_idx, bool inv)
|
||||
{
|
||||
lp_gpio_func_in_sel_cfg_reg_t reg;
|
||||
reg.func_in_sel = rtcio_num;
|
||||
reg.in_inv_sel = inv;
|
||||
reg.sig_in_sel = 1; // Signal should not bypass LP_GPIO matrix
|
||||
LP_GPIO.func_in_sel_cfg[signal_idx].val = reg.val;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Select signal output to a RTC GPIO.
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||
* @param signal_idx LP peripheral signal index.
|
||||
* @param out_inv True to invert output signal; False then no invert.
|
||||
* @param oen_inv True to invert output enable signal; False then no invert.
|
||||
*/
|
||||
static inline void rtcio_ll_matrix_out(int rtcio_num, uint32_t signal_idx, bool out_inv, bool oen_inv)
|
||||
{
|
||||
lp_gpio_func_out_sel_cfg_reg_t reg;
|
||||
reg.func_out_sel = signal_idx;
|
||||
reg.out_inv_sel = out_inv;
|
||||
reg.oe_inv_sel = oen_inv;
|
||||
reg.oe_sel = 0; // output enable signal controlled by peripheral
|
||||
LP_GPIO.func_out_sel_cfg[rtcio_num].val = reg.val;
|
||||
|
||||
HAL_FORCE_MODIFY_U32_REG_FIELD(LP_GPIO.enable_w1ts, reg_gpio_enable_data_w1ts, BIT(rtcio_num));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Configure peripheral signal input whether to bypass LP_GPIO matrix.
|
||||
*
|
||||
* @param signal_idx LP peripheral signal index.
|
||||
* @param from_gpio_matrix True if not to bypass LP_GPIO matrix, otherwise False.
|
||||
*/
|
||||
static inline void rtcio_ll_set_input_signal_from(uint32_t signal_idx, bool from_gpio_matrix)
|
||||
{
|
||||
LP_GPIO.func_in_sel_cfg[signal_idx].sig_in_sel = from_gpio_matrix;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Configure the source of output enable signal for the pad (only takes effect if func sel is selected to be LP_GPIO).
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||
* @param ctrl_by_periph True if use output enable signal from peripheral, false if force the output enable signal to be sourced from bit n of LP_GPIO_ENABLE_REG
|
||||
* @param oen_inv True if the output enable needs to be inverted, otherwise False.
|
||||
*/
|
||||
* @brief Connect a LP GPIO input with a LP peripheral signal, which tagged as input attribute.
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||
* @param signal_idx LP peripheral signal index.
|
||||
* @param inv True to invert input signal; False then no invert.
|
||||
*/
|
||||
static inline void rtcio_ll_set_input_signal_matrix_source(int rtcio_num, uint32_t signal_idx, bool inv)
|
||||
{
|
||||
lp_gpio_func_in_sel_cfg_reg_t reg;
|
||||
reg.func_in_sel = rtcio_num;
|
||||
reg.in_inv_sel = inv;
|
||||
LP_GPIO.func_in_sel_cfg[signal_idx].val = reg.val;
|
||||
rtcio_ll_set_input_signal_from(signal_idx, true); // Signal should not bypass LP_GPIO matrix
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Configure the source of output enable signal for the pad (only takes effect if func sel is selected to be LP_GPIO).
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||
* @param ctrl_by_periph True if use output enable signal from peripheral, false if force the output enable signal to be sourced from bit n of LP_GPIO_ENABLE_REG
|
||||
* @param oen_inv True if the output enable needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void rtcio_ll_set_output_enable_ctrl(int rtcio_num, bool ctrl_by_periph, bool oen_inv)
|
||||
{
|
||||
@@ -118,6 +98,22 @@ static inline void rtcio_ll_set_output_enable_ctrl(int rtcio_num, bool ctrl_by_p
|
||||
LP_GPIO.func_out_sel_cfg[rtcio_num].oe_sel = !ctrl_by_periph;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Connect a LP peripheral signal which tagged as output attribute with a LP GPIO.
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||
* @param signal_idx LP peripheral signal index.
|
||||
* @param out_inv True to invert output signal; False then no invert.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void rtcio_ll_set_output_signal_matrix_source(int rtcio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
lp_gpio_func_out_sel_cfg_reg_t reg;
|
||||
reg.func_out_sel = signal_idx;
|
||||
reg.out_inv_sel = out_inv;
|
||||
LP_GPIO.func_out_sel_cfg[rtcio_num].val = reg.val;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Select a RTC IOMUX function for the RTC IO
|
||||
*
|
||||
|
||||
@@ -576,6 +576,7 @@ static inline void gpio_ll_set_output_enable_ctrl(gpio_dev_t *hw, uint8_t gpio_n
|
||||
* @param signal_idx Peripheral signal index (tagged as output attribute). Particularly, `SIG_GPIO_OUT_IDX` means disconnect GPIO and other peripherals. Only the GPIO driver can control the output level.
|
||||
* @param out_inv True if the signal output needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void gpio_ll_set_output_signal_matrix_source(gpio_dev_t *hw, uint32_t gpio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
hw->func_out_sel_cfg[gpio_num].func_sel = signal_idx;
|
||||
|
||||
@@ -578,6 +578,7 @@ static inline void gpio_ll_set_output_enable_ctrl(gpio_dev_t *hw, uint8_t gpio_n
|
||||
* @param signal_idx Peripheral signal index (tagged as output attribute). Particularly, `SIG_GPIO_OUT_IDX` means disconnect GPIO and other peripherals. Only the GPIO driver can control the output level.
|
||||
* @param out_inv True if the signal output needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void gpio_ll_set_output_signal_matrix_source(gpio_dev_t *hw, uint32_t gpio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
hw->func_out_sel_cfg[gpio_num].func_sel = signal_idx;
|
||||
|
||||
@@ -94,6 +94,7 @@ static inline void gpio_ll_pullup_en(gpio_dev_t *hw, uint32_t gpio_num)
|
||||
* @param signal_idx Peripheral signal index (tagged as output attribute). Particularly, `SIG_GPIO_OUT_IDX` means disconnect GPIO and other peripherals. Only the GPIO driver can control the output level.
|
||||
* @param out_inv True if the signal output needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void gpio_ll_set_output_signal_matrix_source(gpio_dev_t *hw, uint32_t gpio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
hw->func_out_sel_cfg[gpio_num].out_sel = signal_idx;
|
||||
|
||||
@@ -435,59 +435,39 @@ static inline void rtcio_ll_clear_interrupt_status(void)
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Select RTC GPIO input to a signal.
|
||||
* @brief Configure peripheral signal input whether to bypass LP_GPIO matrix.
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||
* @param signal_idx LP peripheral input signal index (0 .. IN_SIGNAL_MAX - 1).
|
||||
* @param inv True to invert input signal; False then no invert.
|
||||
* @param signal_idx LP peripheral signal index.
|
||||
* @param from_gpio_matrix True if not to bypass LP_GPIO matrix, otherwise False.
|
||||
*/
|
||||
static inline void rtcio_ll_matrix_in(int rtcio_num, uint32_t signal_idx, bool inv)
|
||||
{
|
||||
lp_gpio_funca_in_sel_cfg_reg_t reg;
|
||||
reg.funca_in_sel = rtcio_num;
|
||||
reg.funca_in_inv_sel = inv;
|
||||
reg.siga_in_sel = 1; // Signal should not bypass LP_GPIO matrix
|
||||
LP_GPIO.funca_in_sel_cfg[signal_idx].val = reg.val;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Select signal output to a RTC GPIO
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||
* @param signal_idx Peripheral output signal index (0 .. OUT_SIGNAL_MAX - 1).
|
||||
* @param out_inv True to invert output signal; False then no invert.
|
||||
* @param oen_inv True to invert output enable signal; False then no invert.
|
||||
*/
|
||||
static inline void rtcio_ll_matrix_out(int rtcio_num, uint32_t signal_idx, bool out_inv, bool oen_inv)
|
||||
{
|
||||
lp_gpio_funcn_out_sel_cfg_reg_t reg;
|
||||
reg.funcn_out_sel = signal_idx;
|
||||
reg.funcn_out_inv_sel = out_inv;
|
||||
reg.funcn_oe_inv_sel = oen_inv;
|
||||
reg.funcn_oe_sel = 0; // output enable signal controlled by peripheral
|
||||
LP_GPIO.funcn_out_sel_cfg[rtcio_num].val = reg.val;
|
||||
|
||||
HAL_FORCE_MODIFY_U32_REG_FIELD(LP_GPIO.enable_w1ts, enable_w1ts, BIT(rtcio_num));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Configure peripheral signal input whether to bypass LP_GPIO matrix.
|
||||
*
|
||||
* @param signal_idx LP peripheral signal index.
|
||||
* @param from_gpio_matrix True if not to bypass LP_GPIO matrix, otherwise False.
|
||||
*/
|
||||
static inline void rtcio_ll_set_input_signal_from(uint32_t signal_idx, bool from_gpio_matrix)
|
||||
{
|
||||
LP_GPIO.funca_in_sel_cfg[signal_idx].siga_in_sel = from_gpio_matrix;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Configure the source of output enable signal for the pad (only takes effect if func sel is selected to be LP_GPIO).
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||
* @param ctrl_by_periph True if use output enable signal from peripheral, false if force the output enable signal to be sourced from bit n of LP_GPIO_ENABLE_REG
|
||||
* @param oen_inv True if the output enable needs to be inverted, otherwise False.
|
||||
*/
|
||||
* @brief Connect a LP GPIO input with a LP peripheral signal, which tagged as input attribute.
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||
* @param signal_idx LP peripheral input signal index (0 .. IN_SIGNAL_MAX - 1).
|
||||
* @param inv True to invert input signal; False then no invert.
|
||||
*/
|
||||
static inline void rtcio_ll_set_input_signal_matrix_source(int rtcio_num, uint32_t signal_idx, bool inv)
|
||||
{
|
||||
lp_gpio_funca_in_sel_cfg_reg_t reg;
|
||||
reg.funca_in_sel = rtcio_num;
|
||||
reg.funca_in_inv_sel = inv;
|
||||
LP_GPIO.funca_in_sel_cfg[signal_idx].val = reg.val;
|
||||
rtcio_ll_set_input_signal_from(signal_idx, true); // Signal should not bypass LP_GPIO matrix
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Configure the source of output enable signal for the pad (only takes effect if func sel is selected to be LP_GPIO).
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||
* @param ctrl_by_periph True if use output enable signal from peripheral, false if force the output enable signal to be sourced from bit n of LP_GPIO_ENABLE_REG
|
||||
* @param oen_inv True if the output enable needs to be inverted, otherwise False.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void rtcio_ll_set_output_enable_ctrl(int rtcio_num, bool ctrl_by_periph, bool oen_inv)
|
||||
{
|
||||
@@ -495,6 +475,22 @@ static inline void rtcio_ll_set_output_enable_ctrl(int rtcio_num, bool ctrl_by_p
|
||||
LP_GPIO.funcn_out_sel_cfg[rtcio_num].funcn_oe_sel = !ctrl_by_periph;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Connect a LP peripheral signal which tagged as output attribute with a LP GPIO.
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ MAX(rtcio).
|
||||
* @param signal_idx Peripheral output signal index (0 .. OUT_SIGNAL_MAX - 1).
|
||||
* @param out_inv True to invert output signal; False then no invert.
|
||||
*/
|
||||
__attribute__((always_inline))
|
||||
static inline void rtcio_ll_set_output_signal_matrix_source(int rtcio_num, uint32_t signal_idx, bool out_inv)
|
||||
{
|
||||
lp_gpio_funcn_out_sel_cfg_reg_t reg;
|
||||
reg.funcn_out_sel = signal_idx;
|
||||
reg.funcn_out_inv_sel = out_inv;
|
||||
LP_GPIO.funcn_out_sel_cfg[rtcio_num].val = reg.val;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -203,23 +203,23 @@ void rtcio_hal_iomux_output(int rtcio_num, int func);
|
||||
|
||||
#if SOC_LP_GPIO_MATRIX_SUPPORTED
|
||||
/**
|
||||
* Select RTC GPIO input to a signal
|
||||
* @brief Set pad input to a LP peripheral signal through the LP GPIO matrix
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ SOC_RTCIO_PIN_COUNT.
|
||||
* @param signal_idx LP peripheral signal index.
|
||||
* @param inv True to invert input signal; False then no invert.
|
||||
*/
|
||||
#define rtcio_hal_matrix_in(rtcio_num, signal_idx, inv) rtcio_ll_matrix_in(rtcio_num, signal_idx, inv)
|
||||
void rtcio_hal_matrix_in(int rtcio_num, uint32_t signal_idx, bool inv);
|
||||
|
||||
/**
|
||||
* Select signal output to a RTC GPIO
|
||||
* @brief Set LP peripheral output to an RTC IO pad through the LP GPIO matrix
|
||||
*
|
||||
* @param rtcio_num The index of rtcio. 0 ~ SOC_RTCIO_PIN_COUNT.
|
||||
* @param signal_idx LP peripheral signal index.
|
||||
* @param out_inv True to invert output signal; False then no invert.
|
||||
* @param oen_inv True to invert output enable signal; False then no invert.
|
||||
*/
|
||||
#define rtcio_hal_matrix_out(rtcio_num, signal_idx, out_inv, oen_inv) rtcio_ll_matrix_out(rtcio_num, signal_idx, out_inv, oen_inv)
|
||||
void rtcio_hal_matrix_out(int rtcio_num, uint32_t signal_idx, bool out_inv, bool oen_inv);
|
||||
#endif // SOC_LP_GPIO_MATRIX_SUPPORTED
|
||||
|
||||
#endif // SOC_RTCIO_INPUT_OUTPUT_SUPPORTED
|
||||
|
||||
@@ -100,4 +100,21 @@ void rtcio_hal_iomux_output(int rtcio_num, int func)
|
||||
// as long as the func sel is not RTC IO, the oe can only be controlled by the peripheral
|
||||
}
|
||||
|
||||
#if SOC_LP_GPIO_MATRIX_SUPPORTED
|
||||
void rtcio_hal_matrix_in(int rtcio_num, uint32_t signal_idx, bool inv)
|
||||
{
|
||||
if (rtcio_num < SOC_RTCIO_PIN_COUNT) {
|
||||
rtcio_ll_input_enable(rtcio_num);
|
||||
}
|
||||
rtcio_ll_set_input_signal_matrix_source(rtcio_num, signal_idx, inv);
|
||||
}
|
||||
|
||||
void rtcio_hal_matrix_out(int rtcio_num, uint32_t signal_idx, bool out_inv, bool oen_inv)
|
||||
{
|
||||
rtcio_ll_iomux_func_sel(rtcio_num, RTCIO_LL_PIN_FUNC);
|
||||
rtcio_ll_set_output_signal_matrix_source(rtcio_num, signal_idx, out_inv);
|
||||
rtcio_ll_set_output_enable_ctrl(rtcio_num, true, oen_inv); // output is enabled at the end to avoid undesired level change
|
||||
}
|
||||
#endif // SOC_LP_GPIO_MATRIX_SUPPORTED
|
||||
|
||||
#endif //SOC_RTCIO_INPUT_OUTPUT_SUPPORTED
|
||||
|
||||
Reference in New Issue
Block a user