Sun8i emac

From linux-sunxi.org
Jump to navigation Jump to search

This page is about the sun8i_emac/dwmac-sun8i driver which handles the integrated Ethernet MAC of A83T/H3/A64.

Specifications

The EMAC main features are

  • 10/100/1000 Mbit/s speed
  • RX/TX CSO (CheckSum Offload)

Status

Linux driver is dwmac-sun8i, a glue to the stmmac driver. You can find the latest version at https://github.com/montjoie/linux/tree/dwmac-sun8i-current

Another legacy driver, sun8i-emac, exist as well. You can find the latest sun8i-emac driver version on https://github.com/montjoie/linux/tree/sun8i-emac-wip This driver will never reach mainline and development is discontinued.

H3

The H3 SoC is well supported, and no tweaks are necessary for all MII types (Internal MII, RGMII).

A83T

A64

The stock boot0 or the BSP U-Boot do not program the PMIC to power the PHY. The latest "upstream" firmware enables the PHY in the ARM Trusted Firmware (ATF) code, so the EMAC driver works there.

Pine64+ (Gigabit PHY)

Section C5 on page 19 in the schematics shows the power requirements:

  • DC1-SW needs to be enabled (bit 7 in register 0x12 of the AXP803 PMIC).
  • The schematics hints that the GPIO1 output on the PMIC needs to be configured as an LDO output at 2.5 volts (0x12 (=2.5V) into PMIC register 0x93, 0x3 (=enable LDO) to PMIC register 0x92). But the BSP kernel leaves this register disabled (0x92: 0x7), so apparently no driving is needed here. That means that the Pine64+ runs RGMII at 3.3 volts.
  • The PHYRSTB pin on the PHY is connected to the SoC's PD14 pin (confusingly labeled MAC-RST), but also pulled up. PD14 is part of the EMAC block (RGMII-NULL), but needs to be configured differently (not function 4): either as disabled (7) or as a high output pin.

Tips, troubleshoot

  • EMAC reset timeout

This error is generally related to not having PHY powered.

  • Link but no transfer with Gigabit EMAC

You perhaps need to tweak RX/TX delay. You could find the correct value in FEX files.

For the moment the only way is to write the value via /dev/mem.

You could use either busybox's devmem applet or compile the free-electrons.com/pub/mirror/devmem2.c utility for this.

Example: for BPIM3

devmem 0x1c00030 w 0x1806

  • MAC address with 3 leading zeros

Try a more recent uboot

  • No link when booting with cable attached

Try a more recent uboot

Performance

Performance is calculated with iperf. Thoses numbers are not definitive.

Transmission Reception Notes
OrangePiPC (100Mbit FullDuplex) 94Mb/s 94Mb/s
Bananapi M3 (Gigabit FD) 373Mb/s 387Mb/s no PSCI
Pine64 511Mb/s 428Mb/s