Commit Graph

63 Commits

Author SHA1 Message Date
Ondrej Kosta
8f1f424390 esp_eth: EMAC start/stop optimization 2022-03-07 14:54:55 +01:00
Ondrej Kosta
3c8bab0285 Fixed ESP32 EMAC driver insufficient TX buffer size which could followed esp_eth_stop and esp_eth_start sequence 2022-03-07 14:54:33 +01:00
David Čermák
f8d60e2008 Merge branch 'bugfix/dm9051_tx_throughput_rate_optimization_v4.3' into 'release/v4.3'
esp_eth: optimize dm9051 Tx throughput(v4.3)

See merge request espressif/esp-idf!15886
2022-01-03 12:42:54 +00:00
Tian Sen Wen
8999626545 esp_eth: optimize dm9051 Tx throughput 2021-11-11 14:41:58 +08:00
Frank Sautter
08aacb02f7 Increased LAN8720 ETH-PHY reset assertion time (IDFGH-6018)
Increase reset assertion time from 100µs (as specified minimum in the datasheet) to 150µs.
Some specimen of the LAN8720 need the reset signal asserted longer than 100µs to initialise properly. Otherwise they are in a zombie state where they are establishing and loosing an Ethernet link once in a seconds interval.
2021-11-05 11:46:58 +01:00
David Cermak
609f5ef9a0 esp_eth: Fix dm9051 Rx interrupt processing
* Disable Tx interrupts to fix race condition of missing Rx interrupt
* Check if GPIO interrupt is asserted periodically if the ISR event missed

Closes https://github.com/espressif/esp-idf/issues/6414
2021-09-21 11:10:19 +02:00
Christian Fischerauer
3bd69d296d esp_eth: adapt ksz8041.c to changes from commit 03a6c49
Closes https://github.com/espressif/esp-idf/issues/7570
Merges https://github.com/espressif/esp-idf/pull/7573
2021-09-16 21:39:23 +08:00
morris
b76369ddb6 eth: dont warn nego timeout if link is down 2021-09-08 20:52:26 +08:00
morris
b829fcff3e emac: configure data interface early 2021-09-08 20:52:26 +08:00
David Cermak
d09f6cac24 esp_eth: Improve GPIO interrupt processing in w5500 driver
Increase the interrupt reassert level timing so the chances of missing
two consecutive events are minimal.
Enable only SIR_RECV interrupt event, so the SEND events are not used
for GPIO signal.
2021-06-23 12:41:45 +08:00
David Cermak
1f2af24118 esp_eth: Recover the w5500 driver from missed io interrupt
If the GPIO interrupt is re-asserted too quickly it could be missed. If this happens the driver goes silent and never receives any data. Recover by periodic checks of the IO signal level
2021-06-23 12:41:45 +08:00
David Cermak
2fb93e6a54 esp_eth: Fix w5500 to break from potentially infinite tx loop
The issue typically happens for link-down during Tx. Added two retry levels, one before checking the sanity of the w5500 phy register and another for the Tx done itself (if the device is in the sane state)

Closes https://github.com/espressif/esp-idf/issues/6233
2021-06-22 17:23:07 +08:00
David Cermak
8534799d66 esp_eth: Fix w5500 to correctly read registers on -Os
Reading SPI data may come in 4-byte units and thus result in unwanted
overwrites if smaller size registers read, especially if multiple placed
one after another. Fixed by using direct reads to `trans` structure for
sizes smaller or equal to 4.

Closes https://github.com/espressif/esp-idf/issues/6579
2021-06-22 17:23:07 +08:00
morris
03a6c4975c esp_eth: restart negotiation in esp_eth_start 2021-05-28 08:22:56 +00:00
Omar Chebib
84dc42c4b0 gpio: Disable USB JTAG when setting pins 18 and 19 as GPIOs on ESP32C3
When `DIS_USB_JTAG` eFuse is NOT burned (`False`), it is not possible
to set pins 18 and 19 as GPIOs. This commit solves this by manually
disabling USB JTAG when using pins 18 or 19.
The functions shall use `gpio_hal_iomux_func_sel` instead of
`PIN_FUNC_SELELECT`.
2021-04-12 17:45:06 +08:00
morris
c75a8b11bb eth_phy: fix wrong register bit order in ksz8041 2021-03-15 13:12:17 +08:00
morris
006a87557b esp_eth: added option to disable soft flow control when rx buffer is few 2021-02-01 14:14:54 +08:00
suda-morris
0208810eca esp_eth: fix typo in lan8720 driver
Closes https://github.com/espressif/esp-idf/issues/6469
2021-01-27 23:48:10 +08:00
Axel Lin
2049aa9f68 esp_eth: Add ioctl command for getting duplex mode
Similar to ETH_CMD_G_SPEED, add ETH_CMD_G_DUPLEX_MODE for getting duplex mode.

Merges https://github.com/espressif/esp-idf/pull/6436
2021-01-25 08:40:47 +00:00
morris
753a929525 global: fix sign-compare warnings 2021-01-12 14:05:08 +08:00
morris
1e905acacf eth: support W5500 MAC RAW mode
W5500 features an Ethernet MAC+PHY, plus a HW SOCKET implementation.
But in IDF, we only use software TCP/IP stack, which means we have
to bypass the HW TCP/IP stack in W5500.
So we enables the MAC RAW mode in W5500.
2020-11-16 13:30:49 +08:00
Angus Gratton
420aef1ffe Updates for riscv support
* Target components pull in xtensa component directly
* Use CPU HAL where applicable
* Remove unnecessary xtensa headers
* Compilation changes necessary to support non-xtensa gcc types (ie int32_t/uint32_t is no
  longer signed/unsigned int).

Changes come from internal branch commit a6723fc
2020-11-13 07:49:11 +11:00
Yorick van Pelt
65707cfb41 esp_eth_mac_esp32: optionally setup SMI GPIO's
This enables passing smi_mdio_gpio_num = -1 to disable that signal

Merges https://github.com/espressif/esp-idf/pull/5903
2020-09-25 19:59:41 +08:00
morris
76fe489c58 ethernet: support power on timeout
Closes https://github.com/espressif/esp-idf/issues/5425
2020-08-10 18:54:25 +08:00
morris
f4131b9b42 ethernet: handle early rx interrupt 2020-08-10 18:54:25 +08:00
morris
4e38aab1b0 ethernet: support flow control for esp32 emac 2020-08-10 18:54:25 +08:00
morris
2917651478 esp_rom: extract common ets apis into esp_rom_sys.h 2020-07-27 15:27:01 +08:00
morris
abcea51976 ethernet: insert min assert time for PHY HW reset
Closes https://github.com/espressif/esp-idf/issues/5528
2020-07-09 22:03:17 +08:00
morris
648bcc7a87 ethernet: add ksz8041 in basic ethernet example 2020-07-09 21:49:07 +08:00
Meowthink
62237cf28c Add Microchip KSZ8041 PHY support.
Merges https://github.com/espressif/esp-idf/pull/5452
2020-07-09 21:00:42 +08:00
morris
a4d0033c03 esp_rom: extract common GPIO apis into esp_rom_gpio.h 2020-07-07 11:40:19 +08:00
morris
1184366387 ethernet: support pin emac task to core 2020-05-29 17:51:37 +08:00
morris
d8a9ce14d7 ethernet: fix potential task watch dog timeout 2020-05-13 16:03:00 +08:00
morris
4454b198bb ethernet: better control start/stop/uninstall/install 2020-05-13 15:58:42 +08:00
morris
6020d6a5d4 ethernet: esp_eth_stop API should stop emac hardware 2020-05-13 15:58:42 +08:00
morris
0a7ccb8095 ethernet: fix potential null pointer dereference
Closes https://github.com/espressif/esp-idf/issues/4890
2020-03-07 12:12:29 +08:00
morris
9e59be1aab ethernet: add enc28j60 example 2020-02-10 12:56:14 +08:00
Henry Gilbert
eda07acc81 Add ENC28J60 Ethernet Driver
Merges https://github.com/espressif/esp-idf/pull/4435
2020-02-10 12:56:14 +08:00
morris
cc0459eea2 ethernet: always put eth_driver handle in SRAM
Closes https://github.com/espressif/esp-idf/issues/4635
2020-01-19 16:25:44 +08:00
morris
5ad0bdd8db ethernet: work with cache disabled
add ETH_MAC_FLAG_WORK_WITH_CACHE_DISABLE flag, make ethenret driver
possible to work when cache disabled

Closes https://github.com/espressif/esp-idf/issues/4406
2020-01-19 16:25:24 +08:00
morris
7baf7ce273 ethernet: optimise tx and rx 2019-12-24 11:18:31 +08:00
morris
197d5d7378 ethernet: support phy addr auto detect 2019-12-24 11:18:30 +08:00
morris
ac11545e0a ethernet: warning when double start/stop 2019-12-03 16:10:20 +08:00
morris
57ef88a91f ethernet: add pm lock 2019-12-03 16:10:20 +08:00
morris
c3ee156df0 ethernet: move netif glue && add ref counter
1. move netif glue into single file
2. add reference counter for Ethernet driver
2019-11-27 10:36:32 +08:00
suda-morris
05d71319de ethernet: add gpio number into config structure 2019-11-20 10:36:45 +08:00
suda-morris
f3d0429a9e ethernet: add reference counter for mac and phy 2019-11-20 10:36:45 +08:00
David Cermak
d0afdaaf24 esp_eth: moved starting link timer to eth driver start 2019-11-13 12:36:26 +01:00
David Cermak
7f5cda1b82 tcpip_adapter: updated tcpip_adapter compatablity layer to include all
public API and keep 100% backward compatibility
update build of tcpip adapter when ethernet disabled
2019-11-13 12:36:25 +01:00
David Cermak
3f60837de2 esp_eth: make esp_eth_driver_start public API so application could start ethernet when used without esp-netif 2019-11-13 12:36:25 +01:00