refactor(gpio): improve gpio_iomux_in/out API
This commit is contained in:
@@ -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
|
||||
*/
|
||||
@@ -88,17 +88,9 @@ static esp_err_t emac_esp_iomux_init(gpio_num_t gpio_num, const emac_iomux_info_
|
||||
TAG, "GPIO %i is already reserved", iomux_info->gpio_num);
|
||||
s_emac_esp_used_gpio_mask |= BIT64(iomux_info->gpio_num);
|
||||
if (is_input) {
|
||||
ESP_RETURN_ON_ERROR(gpio_func_sel(iomux_info->gpio_num, iomux_info->func), TAG, "failed to set GPIO function at GPIO %i", iomux_info->gpio_num);
|
||||
// if the signal can be also connected via IO matrix, disconnect it (SIG_GPIO_OUT_IDX indicates no IO matrix)
|
||||
if (signal_idx != SIG_GPIO_OUT_IDX) {
|
||||
// enable input and disconnect from IO Matrix
|
||||
gpio_iomux_in(iomux_info->gpio_num, signal_idx);
|
||||
} else {
|
||||
// just enable input
|
||||
gpio_input_enable(iomux_info->gpio_num);
|
||||
}
|
||||
ESP_RETURN_ON_ERROR(gpio_iomux_input(iomux_info->gpio_num, iomux_info->func, signal_idx), TAG, "failed to set perip. input via IOMUX");
|
||||
} else {
|
||||
gpio_iomux_out(iomux_info->gpio_num, iomux_info->func, false);
|
||||
ESP_RETURN_ON_ERROR(gpio_iomux_output(iomux_info->gpio_num, iomux_info->func, false), TAG, "failed to set perip. output via IOMUX");
|
||||
}
|
||||
ESP_RETURN_ON_ERROR(gpio_set_pull_mode(iomux_info->gpio_num, GPIO_FLOATING),
|
||||
TAG, "failed to set pull mode at GPIO %i", iomux_info->gpio_num);
|
||||
|
||||
Reference in New Issue
Block a user