linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/7] net: phy: adin1100: Add initial support for ADIN1100 industrial PHY
@ 2021-12-10 11:05 alexandru.tachici
  2021-12-10 11:05 ` [PATCH v4 1/7] ethtool: Add 10base-T1L link mode entry alexandru.tachici
                   ` (6 more replies)
  0 siblings, 7 replies; 16+ messages in thread
From: alexandru.tachici @ 2021-12-10 11:05 UTC (permalink / raw)
  To: andrew
  Cc: o.rempel, alexandru.tachici, davem, devicetree, hkallweit1, kuba,
	linux-kernel, linux, netdev, robh+dt

From: Alexandru Tachici <alexandru.tachici@analog.com>

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.

The ADIN1100 uses Auto-Negotiation capability in accordance
with IEEE 802.3 Clause 98, providing a mechanism for
exchanging information between PHYs to allow link partners to
agree to a common mode of operation.

The concluded operating mode is the transmit amplitude mode and
master/slave preference common across the two devices.

Both device and LP advertise their ability and request for
increased transmit at:
- BASE-T1 autonegotiation advertisement register [47:32]\
Clause 45.2.7.21 of Standard 802.3
- BIT(13) - 10BASE-T1L High Level Transmit Operating Mode Ability
- BIT(12) - 10BASE-T1L High Level Transmit Operating Mode Request

For 2.4 Vpp (high level transmit) operation, both devices need
to have the High Level Transmit Operating Mode Ability bit set,
and only one of them needs to have the High Level Transmit
Operating Mode Request bit set. Otherwise 1.0 Vpp transmit level
will be used.

Settings for eth1:
	Supported ports: [ TP	 MII ]
	Supported link modes:   10baseT1L/Full
	Supported pause frame use: Symmetric Receive-only
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT1L/Full
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Link partner advertised link modes:  10baseT1L/Full
	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 slave
	master-slave status: slave
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: external
	MDI-X: Unknown
	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 10-BasetT1L registers.

3. Added Base-T1 auto-negotiation registers. For Base-T1 these
registers decide master/slave status and TX voltage of the
device and link partner.

4. Added 10BASE-T1L support in phy-c45.c. Now genphy functions will call
Base-T1 functions where registers don't match, like the auto-negotiation ones.

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

6. DT bindings for the 2.4 Vpp transmit mode.

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

Alexandru Tachici (6):
  ethtool: Add 10base-T1L link mode entry
  net: phy: Add 10-BaseT1L registers
  net: phy: Add BaseT1 auto-negotiation registers
  net: phy: Add 10BASE-T1L support in phy-c45
  net: phy: adin1100: Add SQI support
  dt-bindings: net: phy: Add 10-baseT1L 2.4 Vpp

Changelog: V3 -> V4:
	- fixed kernel-doc errors
	- ETHTOOL_LINK_MODE_10baseT1L_Full_BIT of phydev->supported is now set inside
	in genphy_c45_pma_read_abilities() call if device supports 10BASE-T1L
	- fix 802.3 reg defines comments (kept documentation wording instead)
	- fix 0x0010 advertise master preference (T4) (instead of 0x0080)
	- added genphy_c45_baset1_read_lpa to phy-c45.c, will get called from genphy_c45_read_lpa,
	if the phy supports BASE-T1 advertisement register
	- added genphy_c45_baset1_read_link to phy-c45.c, will get called from genphy_c45_read_link,
	if the phy supports BASE-T1 registers
	- replaced adin_read_lpa from adin1100.c with genphy_c45_read_lpa
	- added support for BASE-T1 master/slave status and advertising in phy-c45.c
	- dropped yaml file (no need for it) no vendor specific properties to be added in the DT
	- moved most of the BASE-T1 specific code from adin1100.c to gen-phy-c45
	- changed an-10base-t1l-2.4vpp property name to phy-10base-t1l-2.4vpp
	- in adin1100.c, when auto-negotiation is disabled, if increased transmit property is set
	in DT (phy-10base-t1l-2.4vpp = <1>) force Tx PHY level to 2.4 vpp otherwise force
	to 1.0 vpp.
	- added 10BASE-T1L PMA control mdio.h

 .../devicetree/bindings/net/ethernet-phy.yaml |   9 +
 drivers/net/phy/Kconfig                       |   7 +
 drivers/net/phy/Makefile                      |   1 +
 drivers/net/phy/adin1100.c                    | 299 ++++++++++++++++++
 drivers/net/phy/phy-c45.c                     | 283 ++++++++++++++++-
 drivers/net/phy/phy-core.c                    |   3 +-
 include/linux/mdio.h                          |  70 ++++
 include/uapi/linux/ethtool.h                  |   1 +
 include/uapi/linux/mdio.h                     |  75 +++++
 net/ethtool/common.c                          |   3 +
 10 files changed, 744 insertions(+), 7 deletions(-)
 create mode 100644 drivers/net/phy/adin1100.c

--
2.25.1

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2022-02-18  7:29 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-10 11:05 [PATCH v4 0/7] net: phy: adin1100: Add initial support for ADIN1100 industrial PHY alexandru.tachici
2021-12-10 11:05 ` [PATCH v4 1/7] ethtool: Add 10base-T1L link mode entry alexandru.tachici
2021-12-11 20:46   ` Andrew Lunn
2021-12-10 11:05 ` [PATCH v4 2/7] net: phy: Add 10-BaseT1L registers alexandru.tachici
2021-12-11 20:48   ` Andrew Lunn
2021-12-10 11:05 ` [PATCH v4 3/7] net: phy: Add BaseT1 auto-negotiation registers alexandru.tachici
2021-12-11 21:00   ` Andrew Lunn
2021-12-10 11:05 ` [PATCH v4 4/7] net: phy: Add 10BASE-T1L support in phy-c45 alexandru.tachici
2021-12-11 21:07   ` Andrew Lunn
2022-02-07  9:27     ` Oleksij Rempel
2022-02-09 15:12       ` alexandru.tachici
2022-02-18  7:28         ` Oleksij Rempel
2021-12-10 11:05 ` [PATCH v4 5/7] net: phy: adin1100: Add initial support for ADIN1100 industrial PHY alexandru.tachici
2021-12-10 11:05 ` [PATCH v4 6/7] net: phy: adin1100: Add SQI support alexandru.tachici
2021-12-10 11:05 ` [PATCH v4 7/7] dt-bindings: net: phy: Add 10-baseT1L 2.4 Vpp alexandru.tachici
2021-12-10 22:09   ` Rob Herring

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).