From bf73313e42fdc3c890597fd697d95b834459848f Mon Sep 17 00:00:00 2001 From: Bogdan Kolendovskyy Date: Wed, 7 Feb 2024 11:24:17 +0100 Subject: [PATCH] fix(esp_eth): ip101-specific reset_hw to match reset timings from datasheet IP101 requires 10ms reset assertion time and 10ms post-reset delay to properly initialize. --- components/esp_eth/src/esp_eth_phy_ip101.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/components/esp_eth/src/esp_eth_phy_ip101.c b/components/esp_eth/src/esp_eth_phy_ip101.c index ac72e3eec3..ee6e9a720e 100644 --- a/components/esp_eth/src/esp_eth_phy_ip101.c +++ b/components/esp_eth/src/esp_eth_phy_ip101.c @@ -26,6 +26,9 @@ static const char *TAG = "ip101"; +#define IP101_PHY_RESET_ASSERTION_TIME_MS 10 +#define IP101_PHY_POST_RESET_INIT_TIME_MS 10 + /***************Vendor Specific Register***************/ /** @@ -224,8 +227,9 @@ static esp_err_t ip101_reset_hw(esp_eth_phy_t *phy) esp_rom_gpio_pad_select_gpio(ip101->reset_gpio_num); gpio_set_direction(ip101->reset_gpio_num, GPIO_MODE_OUTPUT); gpio_set_level(ip101->reset_gpio_num, 0); - esp_rom_delay_us(100); // insert min input assert time + vTaskDelay(pdMS_TO_TICKS(IP101_PHY_RESET_ASSERTION_TIME_MS)); gpio_set_level(ip101->reset_gpio_num, 1); + vTaskDelay(pdMS_TO_TICKS(IP101_PHY_POST_RESET_INIT_TIME_MS)); } return ESP_OK; }