mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'contrib/github_pr_11337' into 'master'
w5500: mac: poll VERSIONR to ensure the chip is initialised (GitHub PR) Closes IDFGH-10061 See merge request espressif/esp-idf!23792
This commit is contained in:
commit
5da56ea361
@ -229,10 +229,22 @@ static esp_err_t w5500_verify_id(emac_w5500_t *emac)
|
|||||||
{
|
{
|
||||||
esp_err_t ret = ESP_OK;
|
esp_err_t ret = ESP_OK;
|
||||||
uint8_t version = 0;
|
uint8_t version = 0;
|
||||||
ESP_GOTO_ON_ERROR(w5500_read(emac, W5500_REG_VERSIONR, &version, sizeof(version)), err, TAG, "read VERSIONR failed");
|
|
||||||
// W5500 doesn't have chip ID, we check the version number instead
|
|
||||||
ESP_GOTO_ON_FALSE(version == W5500_CHIP_VERSION, ESP_ERR_INVALID_VERSION, err, TAG, "invalid chip version, expected 0x%x, actual 0x%x", W5500_CHIP_VERSION, version);
|
|
||||||
|
|
||||||
|
// W5500 doesn't have chip ID, we check the version number instead
|
||||||
|
// The version number may be polled multiple times since it was observed that
|
||||||
|
// some W5500 units may return version 0 when it is read right after the reset
|
||||||
|
ESP_LOGD(TAG, "Waiting W5500 to start & verify version...");
|
||||||
|
uint32_t to = 0;
|
||||||
|
for (to = 0; to < emac->sw_reset_timeout_ms / 10; to++) {
|
||||||
|
ESP_GOTO_ON_ERROR(w5500_read(emac, W5500_REG_VERSIONR, &version, sizeof(version)), err, TAG, "read VERSIONR failed");
|
||||||
|
if (version == W5500_CHIP_VERSION) {
|
||||||
|
return ESP_OK;
|
||||||
|
}
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(10));
|
||||||
|
}
|
||||||
|
|
||||||
|
ESP_LOGE(TAG, "W5500 version mismatched, expected 0x%02x, got 0x%02x", W5500_CHIP_VERSION, version);
|
||||||
|
return ESP_ERR_INVALID_VERSION;
|
||||||
err:
|
err:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user