Commit Graph

244 Commits

Author SHA1 Message Date
Karl Palsson
52702cf886 fix(esp_eth): dp83848: correct link detection to use BMSR
Reading the link state via PHYSTS was incorrect, as it only reflects the
link state bit from BMSR.  BMSR latches link down events, and are not
cleared without being read.  (See 802.3-2008 section 2, section 22.2.4.2.13)
This leads to the original DP828xx code only supporting link up, then a
single link down event.

Switch to reading the link state via BMSR, but continuing to read the
negotiation results via PHYSTS and ANLPAR.  This is inline with
LAN8720x, RTL8201, KSZ80xx phy drivers, and other opensource drivers for
the DP838xx family of devices.

Tested on a private board with a DP83825i PHY.  No publically available
boards using the original DP83848 are known of for testing.

Signed-off-by: Karl Palsson <karl.palsson@marel.com>
2024-04-24 09:48:18 +02:00
Ondrej Kosta
5c53238853 fix(esp_eth): made access to PHY registers for DM9051 more robust 2024-04-16 16:13:17 +02:00
Ondrej Kosta
2ffeffddc6 ci(esp_eth): increased L2 test wait for connection timeout 2024-03-27 12:59:41 +01:00
Jiang Jiang Jian
4024dce2b4 Merge branch 'bugfix/ip101_reset_timing_v5.2' into 'release/v5.2'
fix(esp_eth): ip101-specific reset_hw to match reset timings from datasheet (v5.2)

See merge request espressif/esp-idf!29011
2024-03-11 10:37:03 +08:00
Jiang Jiang Jian
54ca68e79f Merge branch 'feature/mmd_access_v5.2' into 'release/v5.2'
esp_eth: Add functions to access PHY using MDIO (v5.2)

See merge request espressif/esp-idf!28839
2024-03-11 10:36:51 +08:00
Ondrej Kosta
ed304d5173 fix(esp_eth): Fixed Ethernet link reset when Ethernet is stopped 2024-02-28 15:47:56 +01:00
Jiang Jiang Jian
527ce5eb3b Merge branch 'bugfix/spi_eth_recv_alloc_v5.2' into 'release/v5.2'
fix(esp_eth): improved SPI Ethernet _alloc_recv_buf error handling (v5.2)

See merge request espressif/esp-idf!29081
2024-02-22 11:05:26 +08:00
Jiang Jiang Jian
34ec96ef23 Merge branch 'feature/spi_eth_no_int_v5.2' into 'release/v5.2'
feat(esp_eth): added SPI Ethernet module polling mode (v5.2)

See merge request espressif/esp-idf!29044
2024-02-21 20:43:46 +08:00
Ondrej Kosta
4df9fa5b50 fix(esp_eth): improved SPI Ethernet _alloc_recv_buf error handling 2024-02-21 10:07:12 +01:00
Jiang Jiang Jian
6bfe219bb1 Merge branch 'ci/enable_ip101_jobs_v5.2' into 'release/v5.2'
ci(esp_eth): enabled Ethernet ip101 jobs (v5.2)

See merge request espressif/esp-idf!28613
2024-02-19 11:02:42 +08:00
Bogdan Kolendovskyy
0c20e3bda8 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.
2024-02-15 15:38:42 +01:00
Ondrej Kosta
79d34bf5d5 feat(esp_eth): added SPI Ethernet module polling mode
Closes https://github.com/espressif/esp-idf/issues/12682
2024-02-14 10:05:22 +01:00
Bogdan Kolendovskyy
8c9657063a esp_eth: Add functions to access PHY using MDIO
Specifically:
  - Set/get address
  - Read/write data at address with specified MDIO access function
  - Read/write both address and data with a single call
2024-02-13 12:49:08 +01:00
Ondrej Kosta
9048372138 ci(esp_eth): enabled Ethernet ip101 jobs 2024-01-22 13:52:24 +01:00
Ondrej Kosta
b5cfc9400c ci(esp_eth): addressed LAN8720 errata in CI test 2023-11-30 09:29:37 +00:00
Ondrej Kosta
a82879367a feat(esp_eth): added ioctl option to read/write PHY registers
LAN87xx: Added extra delay after setting PHY speed
2023-11-30 09:29:37 +00:00
Ondrej
d554768528 ci(esp_eth): make additional Ethernet chips test as nightly run 2023-11-30 09:29:37 +00:00
Jakob Hasse
548022fbe6 refactor(linux): excluded all non-Linux components from build
* All components which won't build (yet) on Linux are excluded.
  This enables switching to Linux in an application without
  explicitly setting COMPONENTS to main in the main
  CMakeLists.txt.
* ESP Timer provides headers for Linux now
* automatically disabling LWIP in Kconfig if it is not available

doc(linux): brought section
  "Component Linux/Mock Support Overview" up to date
2023-10-16 17:06:54 +08:00
Ondrej
3a3656ba38 ci(esp_eth): added tests of all supported Etherent chips 2023-10-12 07:23:51 +00:00
Ondrej Kosta
a93d53aadb fix(esp_eth): various Ethernet driver fixes
ksz8851snl: enabled reception of multicast frames

Internal EMAC: fixed APLL CLK deinitialization

DM9051 and KSZ80xx: fixed speed configuration when not in loopback mode

phy_802_3: added multiple attempts when autodetecting PHY address
2023-10-12 07:23:51 +00:00
Bogdan Kolendovskyy
fac7cb4b78 Merge branch 'bugfix/rtl8201_reset_timing' into 'master'
esp_eth: rtl8201 timing fix

Closes IDFGH-10170

See merge request espressif/esp-idf!25814
2023-10-04 03:00:23 +08:00
Bogdan Kolendovskyy
c75fab3fa4 esp_eth: change rtl8201 reset timing to match datasheet
In esp_eth_phy_rtl8201.c:
Add 150ms delay after hardware reset, chage reset assertion time to 10ms

In esp_eth_phy_802_3.c:
Change reset function to use vTaskDelay for long (>=10ms) reset assertion time
Change esp_eth_phy_802_3_detect_phy_addr to check range 0-31 instead of 0-15.
2023-10-02 10:10:25 +02:00
Ondrej Kosta
e0c225b4f7 Merge branch 'feature/eth_spi_abstraction' into 'master'
Abstraction of SPI driver for SPI Ethernet modules

Closes IDF-7645

See merge request espressif/esp-idf!24429
2023-09-27 18:36:25 +08:00
Ondrej Kosta
ecd1759a0b feat(esp_eth): abstraction of SPI driver for SPI Ethernet modules 2023-09-26 07:58:05 +00:00
Bogdan Kolendovskyy
303d2c2dc6 fix(esp_eth): Add model number 0x13 to list of suported models
Add model number 0x13 to KSZ80xx driver's list of supported models
corresonding to KSZ8041RLNI.
2023-09-25 11:24:52 +02:00
Chen Yudong
2e11919f70 fix(ci): change build-test-rules files folder 2023-09-20 19:17:06 +08:00
Ondrej Kosta
380b83d7a1 Merge branch 'feature/eth_iram_optimization' into 'master'
feat(esp_eth): added IRAM optimization option for internal EMAC

Closes WIFI-6226

See merge request espressif/esp-idf!25704
2023-09-07 00:35:56 +08:00
Ondrej Kosta
0ff10c3e06 feat(esp_eth): added IRAM optimization option for internal EMAC 2023-09-05 07:42:30 +02:00
morris
0b970a8dfe refactor(emac): add LL functions for bus clock control 2023-09-04 10:52:03 +08:00
Omar Chebib
3e9d2155eb feat(esp_eth): add opencores ethernet support for ESP32-C3 (QEMU) target 2023-08-24 10:32:46 +08:00
Bogdan Kolendovskyy
224ba396f1 esp_eth: add loopback test, change chip drivers to reflect chip specific behaviour
In esp_eth_test_apps.c:
Add test of loopback functionality. Change speed/duplex/autonegotiation test - remove need to enable loopback (required
for it to work on some phys supported by ESP-IDF)

In Kconfig.projbuild:
Add parameters to select which configuration is used - standard or custom.
Add for custom configuration parameters to select MDC and MDIO pins (required to work with WESP-32 and other boards that
use non-standard pin assignments).

In esp_eth_test_common.c:
Add code to support changes made in Kconfig

In sdkconfig.ci.default_rtl8201:
Change config which is used. Now custom is used and MDC is gpio 16, MDIO is gpio 17. Reuqired to work with WESP-32

In esp_eth_phy_802_3.h:
Make 802.3 API public.

In esp_eth_phy_802_3.c:
Add loopback check in eth_phy_802_3_set_duplex(). Now ESP_ERR_INVALID_STATE is invoked on attempt to set duplex to half
when loopback is enabled.
Remove static property from esp_eth_phy_802_3_autonego_ctrl and esp_eth_phy_802_3_loopback.

In esp_eth_phy_dm9051.c:
Add dm9051_loopback() because DM9051 requires setting additional bit to enable auto-negotiation loopback for data to be
received. Add dm9051_set_speed() which invokes ESP_ERR_INVALID_STATE on attempt to set speed to 10 Mbps when loopback is
enabled because such speed configuration is unsupported.

In esp_eth_phy_ksz80xx.c:
Add ksz80xx_set_speed() which invokes ESP_ERR_INVALID_STATE on attempt to set speed to 10 Mbps when loopback is enabled
because such speed configuration is unsupported.

In esp_eth_phy_ksz8851snl.c:
Change phy_ksz8851_set_duplex() to invoke ESP_ERR_INVALID_STATE on attempt to set duplex to half when loopback is enabled.

In  esp_eth_phy_dp83848.c, esp_eth_phy_rtl8201.c:
Add autonego_ctrl implementation which prevents enabling autonegotiation when loopback is enabled.
Add loopback implementation which disables autonegotiation prior to enabling loopback.

In esp_eth_phy_lan87xx.c:
Add autonego_ctrl implementation which prevents enabling autonegotiation when loopback is enabled.
Add loopback implementation which disables autonegotiation prior to enabling loopback.
Fix link indicating being down when loopback is enabled by force setting link up.
2023-08-03 13:18:44 +02:00
Bogdan Kolendovskyy
a28d87e72a fix(eth_netif_glue): Move reporting speed to action connected
esp_eth_netif_glue.c:
Moved reporting link speed to action connected, removed speed reportg code from action start.
2023-07-27 13:15:42 +02:00
Ondrej Kosta
5ebe6b51d8 esp_eth: fixed esp_eth_transmit_vargs to transmit only when link is up
esp_eth test: clear unicast Rx event before wait
2023-05-23 08:23:34 +02:00
Ondrej Kosta
5da56ea361 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
2023-05-23 13:23:51 +08:00
Jackson Ming Hu
896a07e5d6 w5500: rework version check to avoid a false alarm on fault detection
See: https://github.com/espressif/esp-idf/issues/11331
2023-05-19 15:33:22 +02:00
Mahavir Jain
2688dfe982
tests: update Root certificate for the test endpoints
Use Root certificate (`DigiCert Global Root G2`) for the
`dl.espressif.com` and `espressif.com` test endpoints.

This fixes the test failure introduced due to renewal of
the intermediate certificate.
2023-05-16 15:56:29 +05:30
Marius Vikhammer
bca026455c ci: remove redundent ci configs for chip support and network components
CI would build psram config test apps even for target with no psram.
2023-04-26 09:54:29 +08:00
Ondrej Kosta
c231c79fc8 HAL: wrapped emac_ll functions to emac_hal
Closes #9934
2023-04-19 12:46:45 +00:00
Ondrej Kosta
34850de22b Merge branch 'bugfix/eth_l2_test_switch' into 'master'
LAN8720 & IP101 L2 Test Fix

Closes IDFCI-1624 and IDFCI-1567

See merge request espressif/esp-idf!22907
2023-04-14 20:53:08 +08:00
Ondrej Kosta
f6715c9c29 esp_eth pytest: increased robustness of the L2 test
Added filtering frames based on MAC address
2023-04-13 08:26:45 +02:00
Ondrej Kosta
3d66a10114 Ethernet driver and documentation clean-up 2023-04-04 11:33:08 +00:00
Ondrej
2ec7fc8f10 esp_eth: allowed DM9051 to receive multicast packets
Removed extra PHY status link checks from DM9051 MAC layer
2023-03-14 13:59:27 +00:00
Omar Chebib
5e5343d429 TWDT: Use the new TWDT Kconfig options in the examples and tests 2023-02-17 11:22:25 +08:00
Ondrej Kosta
05510e67d1 Merge branch 'bugfix/eth_lan8720_ci' into 'master'
esp_eth: start/stop and L2 test stability improvements

See merge request espressif/esp-idf!21898
2023-02-09 15:36:12 +08:00
Ondrej Kosta
51ea57f5b8 esp_eth: improved L2 test stability 2023-02-03 10:48:39 +01:00
Ondrej Kosta
256d457969 esp_eth: possible start/stop issue fixed
ESP32 EMAC could hang when stopped/started multiple times at 10Mbps speed mode
2023-02-03 10:48:39 +01:00
Ondrej
5fdb49698a esp_eth: fixed copyright for W5500 2023-01-19 07:56:22 +00:00
Reinis Muiznieks
bb2f346e55 Verify w5500 chip properly 2023-01-17 11:52:51 +02:00
Ondrej Kosta
84ab32b4ef Merge branch 'bugfix/emac_memory_leak' into 'master'
Fixed false positive emac rx memory leak reported by Coverity

Closes IDF-6363

See merge request espressif/esp-idf!21341
2022-12-05 20:04:15 +08:00
Ondrej Kosta
600788da6a Merge branch 'contrib/github_pr_10292' into 'master'
fix small bug when logging eth error (GitHub PR)

Closes IDFGH-8869

See merge request espressif/esp-idf!21407
2022-12-05 17:58:37 +08:00