[PATCH v2 0/7] net: phy: adin1100: Add initial support for ADIN1100 industrial PHY

From: alexandru.tachici
Date: Mon Jul 12 2021 - 08:58:36 EST


From: Alexandru Tachici <alexandru.tachici@xxxxxxxxxx>

The ADIN1100 is a low power single port 10BASE-T1L transceiver designed for
industrial Ethernet applications and is compliant with the IEEE 802.3cg
Ethernet standard for long reach 10 Mb/s Single Pair Ethernet.

Ethtool output:
Settings for eth1:
Supported ports: [ TP MII ]
Supported link modes: 10baseT1L/Full
2400mv
1000mv
Supported pause frame use: Transmit-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT1L/Full
2400mv
1000mv
Advertised pause frame use: Transmit-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT1L/Full
2400mv
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 10Mb/s
Duplex: Full
Auto-negotiation: on
master-slave cfg: preferred master
master-slave status: master
Port: MII
PHYAD: 0
Transceiver: external
Link detected: yes
SQI: 7/7

1. Add basic support for ADIN1100.

Alexandru Ardelean (1):
net: phy: adin1100: Add initial support for ADIN1100 industrial PHY

1. Added 10baset-T1L link modes.

2. Added 10base-T1L voltage levels link modes. 1v is the default TX level.
2.4 V support depends on pin configuration and power supply.

3. Allow user to access error and frame counters through ethtool.

4. Allow user to set the master-slave configuration of ADIN1100.

5. Convert MSE to SQI using a predefined table and allow user access
through ethtool.

6. DT bindings for ADIN1100.

Alexandru Tachici (6):
ethtool: Add 10base-T1L link mode entries
ethtool: Add 10base-T1L voltage levels link mode entries
net: phy: adin1100: Add ethtool get_stats support
net: phy: adin1100: Add ethtool master-slave support
net: phy: adin1100: Add SQI support
dt-bindings: adin1100: Add binding for ADIN1100 Ethernet PHY

Changelog v1 -> v2:
- Added ETHTOOL_LINK_MODE_10baseT1L_Full_BIT and ETHTOOL_LINK_MODE_10baseT1L_Half_BIT.
Using only full duplex here as chip supports full duplex only
- removed .match_phy_device
- removed link partner advertising of modes not present in the kernel
- enable/disable only the PCS loopback
- replaced custom timeout implementations with phy_read_mmd_poll_timeout
- added link modes for 1.0 V and 2.4 V TX levels
- removed link change notify
- check if 2.4v TX level is supported in adin_get_features call and set
corresponding link mode

.../devicetree/bindings/net/adi,adin1100.yaml | 45 ++
drivers/net/phy/Kconfig | 7 +
drivers/net/phy/Makefile | 1 +
drivers/net/phy/adin1100.c | 533 ++++++++++++++++++
drivers/net/phy/phy-core.c | 4 +-
include/uapi/linux/ethtool.h | 4 +
net/ethtool/common.c | 6 +
7 files changed, 599 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/net/adi,adin1100.yaml
create mode 100644 drivers/net/phy/adin1100.c

--
2.25.1