mirror of
https://github.com/espressif/esp-idf.git
synced 2025-09-18 07:47:18 +00:00
fix(gpio): fix pu, pd, drv value incorrect from gpio_dump_io_configuration on esp32
Closes https://github.com/espressif/esp-idf/issues/14931
This commit is contained in:
@@ -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
|
||||
*/
|
||||
@@ -76,7 +76,7 @@ static gpio_context_t gpio_context = {
|
||||
|
||||
esp_err_t gpio_pullup_en(gpio_num_t gpio_num)
|
||||
{
|
||||
GPIO_CHECK(GPIO_IS_VALID_GPIO(gpio_num), "GPIO number error", ESP_ERR_INVALID_ARG);
|
||||
GPIO_CHECK(GPIO_IS_VALID_OUTPUT_GPIO(gpio_num), "GPIO number error", ESP_ERR_INVALID_ARG);
|
||||
|
||||
if (!rtc_gpio_is_valid_gpio(gpio_num) || SOC_GPIO_SUPPORT_RTC_INDEPENDENT) {
|
||||
portENTER_CRITICAL(&gpio_context.gpio_spinlock);
|
||||
@@ -114,7 +114,7 @@ esp_err_t gpio_pullup_dis(gpio_num_t gpio_num)
|
||||
|
||||
esp_err_t gpio_pulldown_en(gpio_num_t gpio_num)
|
||||
{
|
||||
GPIO_CHECK(GPIO_IS_VALID_GPIO(gpio_num), "GPIO number error", ESP_ERR_INVALID_ARG);
|
||||
GPIO_CHECK(GPIO_IS_VALID_OUTPUT_GPIO(gpio_num), "GPIO number error", ESP_ERR_INVALID_ARG);
|
||||
|
||||
if (!rtc_gpio_is_valid_gpio(gpio_num) || SOC_GPIO_SUPPORT_RTC_INDEPENDENT) {
|
||||
portENTER_CRITICAL(&gpio_context.gpio_spinlock);
|
||||
@@ -1027,9 +1027,24 @@ esp_err_t gpio_dump_io_configuration(FILE *out_stream, uint64_t io_bit_mask)
|
||||
uint32_t gpio_num = __builtin_ffsll(io_bit_mask) - 1;
|
||||
io_bit_mask &= ~(1ULL << gpio_num);
|
||||
|
||||
bool pu, pd, ie, oe, od, slp_sel;
|
||||
uint32_t drv, fun_sel, sig_out;
|
||||
bool pu = 0;
|
||||
bool pd = 0;
|
||||
bool ie = 0;
|
||||
bool oe = 0;
|
||||
bool od = 0;
|
||||
bool slp_sel = 0;
|
||||
uint32_t drv = 0;
|
||||
uint32_t fun_sel = 0;
|
||||
uint32_t sig_out = 0;
|
||||
gpio_hal_get_io_config(gpio_context.gpio_hal, gpio_num, &pu, &pd, &ie, &oe, &od, &drv, &fun_sel, &sig_out, &slp_sel);
|
||||
#if !SOC_GPIO_SUPPORT_RTC_INDEPENDENT && SOC_RTCIO_PIN_COUNT > 0
|
||||
if (rtc_gpio_is_valid_gpio(gpio_num)) {
|
||||
int rtcio_num = rtc_io_number_get(gpio_num);
|
||||
pu = rtcio_hal_is_pullup_enabled(rtcio_num);
|
||||
pd = rtcio_hal_is_pulldown_enabled(rtcio_num);
|
||||
drv = rtcio_hal_get_drive_capability(rtcio_num);
|
||||
}
|
||||
#endif
|
||||
|
||||
fprintf(out_stream, "IO[%"PRIu32"]%s -\n", gpio_num, esp_gpio_is_reserved(BIT64(gpio_num)) ? " **RESERVED**" : "");
|
||||
fprintf(out_stream, " Pullup: %d, Pulldown: %d, DriveCap: %"PRIu32"\n", pu, pd, drv);
|
||||
@@ -1055,7 +1070,7 @@ esp_err_t gpio_dump_io_configuration(FILE *out_stream, uint64_t io_bit_mask)
|
||||
fprintf(out_stream, " SleepSelEn: %d\n", slp_sel);
|
||||
fprintf(out_stream, "\n");
|
||||
}
|
||||
fprintf(out_stream, "=================IO DUMP End==================\n");
|
||||
fprintf(out_stream, "=================IO DUMP End=================\n");
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user