Skip to content

Commit

Permalink
Merge branch 'bugfix/ip101_reset_timing' into 'master'
Browse files Browse the repository at this point in the history
fix(esp_eth): ip101-specific reset_hw to match reset timings from datasheet

Closes IDF-9160

See merge request espressif/esp-idf!28906
  • Loading branch information
bogdankolendovskyy committed Feb 9, 2024
2 parents b8abf75 + 222f67f commit 91630fa
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion components/esp_eth/src/esp_eth_phy_ip101.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2019-2024 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
Expand All @@ -12,6 +12,9 @@

static const char *TAG = "ip101";

#define IP101_PHY_RESET_ASSERTION_TIME_US 10000
#define IP101_PHY_POST_RESET_INIT_TIME_MS 10

/***************Vendor Specific Register***************/

/**
Expand Down Expand Up @@ -166,6 +169,14 @@ static esp_err_t ip101_get_link(esp_eth_phy_t *phy)
return ret;
}

static esp_err_t ip101_reset_hw(esp_eth_phy_t *phy)
{
phy_802_3_t *phy_802_3 = esp_eth_phy_into_phy_802_3(phy);
esp_err_t ret = esp_eth_phy_802_3_reset_hw(phy_802_3, IP101_PHY_RESET_ASSERTION_TIME_US);
vTaskDelay(pdMS_TO_TICKS(IP101_PHY_POST_RESET_INIT_TIME_MS));
return ret;
}

static esp_err_t ip101_init(esp_eth_phy_t *phy)
{
esp_err_t ret = ESP_OK;
Expand Down Expand Up @@ -197,6 +208,7 @@ esp_eth_phy_t *esp_eth_phy_new_ip101(const eth_phy_config_t *config)
// redefine functions which need to be customized for sake of IP101
ip101->phy_802_3.parent.init = ip101_init;
ip101->phy_802_3.parent.get_link = ip101_get_link;
ip101->phy_802_3.parent.reset_hw = ip101_reset_hw;

return &ip101->phy_802_3.parent;
err:
Expand Down

0 comments on commit 91630fa

Please sign in to comment.