mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
ethernet: support power on timeout
Closes https://github.com/espressif/esp-idf/issues/5425
This commit is contained in:
parent
a3da67a97a
commit
76fe489c58
@ -265,12 +265,22 @@ static esp_err_t dm9051_pwrctl(esp_eth_phy_t *phy, bool enable)
|
||||
}
|
||||
PHY_CHECK(eth->phy_reg_write(eth, dm9051->addr, ETH_PHY_BMCR_REG_ADDR, bmcr.val) == ESP_OK,
|
||||
"write BMCR failed", err);
|
||||
PHY_CHECK(eth->phy_reg_read(eth, dm9051->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
if (!enable) {
|
||||
PHY_CHECK(eth->phy_reg_read(eth, dm9051->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
PHY_CHECK(bmcr.power_down == 1, "power down failed", err);
|
||||
} else {
|
||||
PHY_CHECK(bmcr.power_down == 0, "power up failed", err);
|
||||
/* wait for power up complete */
|
||||
uint32_t to = 0;
|
||||
for (to = 0; to < dm9051->reset_timeout_ms / 10; to++) {
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
PHY_CHECK(eth->phy_reg_read(eth, dm9051->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
if (bmcr.power_down == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
PHY_CHECK(to < dm9051->reset_timeout_ms / 10, "power up timeout", err);
|
||||
}
|
||||
return ESP_OK;
|
||||
err:
|
||||
|
@ -255,12 +255,22 @@ static esp_err_t dp83848_pwrctl(esp_eth_phy_t *phy, bool enable)
|
||||
}
|
||||
PHY_CHECK(eth->phy_reg_write(eth, dp83848->addr, ETH_PHY_BMCR_REG_ADDR, bmcr.val) == ESP_OK,
|
||||
"write BMCR failed", err);
|
||||
PHY_CHECK(eth->phy_reg_read(eth, dp83848->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
if (!enable) {
|
||||
PHY_CHECK(eth->phy_reg_read(eth, dp83848->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
PHY_CHECK(bmcr.power_down == 1, "power down failed", err);
|
||||
} else {
|
||||
PHY_CHECK(bmcr.power_down == 0, "power up failed", err);
|
||||
/* wait for power up complete */
|
||||
uint32_t to = 0;
|
||||
for (to = 0; to < dp83848->reset_timeout_ms / 10; to++) {
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
PHY_CHECK(eth->phy_reg_read(eth, dp83848->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
if (bmcr.power_down == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
PHY_CHECK(to < dp83848->reset_timeout_ms / 10, "power up timeout", err);
|
||||
}
|
||||
return ESP_OK;
|
||||
err:
|
||||
|
@ -292,12 +292,22 @@ static esp_err_t ip101_pwrctl(esp_eth_phy_t *phy, bool enable)
|
||||
}
|
||||
PHY_CHECK(eth->phy_reg_write(eth, ip101->addr, ETH_PHY_BMCR_REG_ADDR, bmcr.val) == ESP_OK,
|
||||
"write BMCR failed", err);
|
||||
PHY_CHECK(eth->phy_reg_read(eth, ip101->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
if (!enable) {
|
||||
PHY_CHECK(eth->phy_reg_read(eth, ip101->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
PHY_CHECK(bmcr.power_down == 1, "power down failed", err);
|
||||
} else {
|
||||
PHY_CHECK(bmcr.power_down == 0, "power up failed", err);
|
||||
/* wait for power up complete */
|
||||
uint32_t to = 0;
|
||||
for (to = 0; to < ip101->reset_timeout_ms / 10; to++) {
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
PHY_CHECK(eth->phy_reg_read(eth, ip101->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
if (bmcr.power_down == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
PHY_CHECK(to < ip101->reset_timeout_ms / 10, "power up timeout", err);
|
||||
}
|
||||
return ESP_OK;
|
||||
err:
|
||||
|
@ -242,12 +242,22 @@ static esp_err_t ksz8041_pwrctl(esp_eth_phy_t *phy, bool enable)
|
||||
}
|
||||
PHY_CHECK(eth->phy_reg_write(eth, ksz8041->addr, ETH_PHY_BMCR_REG_ADDR, bmcr.val) == ESP_OK,
|
||||
"write BMCR failed", err);
|
||||
PHY_CHECK(eth->phy_reg_read(eth, ksz8041->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
if (!enable) {
|
||||
PHY_CHECK(eth->phy_reg_read(eth, ksz8041->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
PHY_CHECK(bmcr.power_down == 1, "power down failed", err);
|
||||
} else {
|
||||
PHY_CHECK(bmcr.power_down == 0, "power up failed", err);
|
||||
/* wait for power up complete */
|
||||
uint32_t to = 0;
|
||||
for (to = 0; to < ksz8041->reset_timeout_ms / 10; to++) {
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
PHY_CHECK(eth->phy_reg_read(eth, ksz8041->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
if (bmcr.power_down == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
PHY_CHECK(to < ksz8041->reset_timeout_ms / 10, "power up timeout", err);
|
||||
}
|
||||
return ESP_OK;
|
||||
err:
|
||||
|
@ -339,12 +339,22 @@ static esp_err_t lan8720_pwrctl(esp_eth_phy_t *phy, bool enable)
|
||||
}
|
||||
PHY_CHECK(eth->phy_reg_write(eth, lan8720->addr, ETH_PHY_BMCR_REG_ADDR, bmcr.val) == ESP_OK,
|
||||
"write BMCR failed", err);
|
||||
PHY_CHECK(eth->phy_reg_read(eth, lan8720->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
if (!enable) {
|
||||
PHY_CHECK(eth->phy_reg_read(eth, lan8720->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
PHY_CHECK(bmcr.power_down == 1, "power down failed", err);
|
||||
} else {
|
||||
PHY_CHECK(bmcr.power_down == 0, "power up failed", err);
|
||||
/* wait for power up complete */
|
||||
uint32_t to = 0;
|
||||
for (to = 0; to < lan8720->reset_timeout_ms / 10; to++) {
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
PHY_CHECK(eth->phy_reg_read(eth, lan8720->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
if (bmcr.power_down == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
PHY_CHECK(to < lan8720->reset_timeout_ms / 10, "power up timeout", err);
|
||||
}
|
||||
return ESP_OK;
|
||||
err:
|
||||
|
@ -246,12 +246,22 @@ static esp_err_t rtl8201_pwrctl(esp_eth_phy_t *phy, bool enable)
|
||||
}
|
||||
PHY_CHECK(eth->phy_reg_write(eth, rtl8201->addr, ETH_PHY_BMCR_REG_ADDR, bmcr.val) == ESP_OK,
|
||||
"write BMCR failed", err);
|
||||
PHY_CHECK(eth->phy_reg_read(eth, rtl8201->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
if (!enable) {
|
||||
PHY_CHECK(eth->phy_reg_read(eth, rtl8201->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
PHY_CHECK(bmcr.power_down == 1, "power down failed", err);
|
||||
} else {
|
||||
PHY_CHECK(bmcr.power_down == 0, "power up failed", err);
|
||||
/* wait for power up complete */
|
||||
uint32_t to = 0;
|
||||
for (to = 0; to < rtl8201->reset_timeout_ms / 10; to++) {
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
PHY_CHECK(eth->phy_reg_read(eth, rtl8201->addr, ETH_PHY_BMCR_REG_ADDR, &(bmcr.val)) == ESP_OK,
|
||||
"read BMCR failed", err);
|
||||
if (bmcr.power_down == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
PHY_CHECK(to < rtl8201->reset_timeout_ms / 10, "power up timeout", err);
|
||||
}
|
||||
return ESP_OK;
|
||||
err:
|
||||
|
Loading…
Reference in New Issue
Block a user