mbox series

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

Message ID 20210712130631.38153-1-alexandru.tachici@analog.com (mailing list archive)
Headers show
Series net: phy: adin1100: Add initial support for ADIN1100 industrial PHY | expand

Message

Alexandru Tachici July 12, 2021, 1:06 p.m. UTC
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.

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

Comments

Russell King (Oracle) July 12, 2021, 1:33 p.m. UTC | #1
On Mon, Jul 12, 2021 at 04:06:24PM +0300, alexandru.tachici@analog.com wrote:
> 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.
> 
> Ethtool output:
>         Settings for eth1:
>         Supported ports: [ TP	 MII ]
>         Supported link modes:   10baseT1L/Full
>                                 2400mv
>                                 1000mv

The SI unit of voltage is V not v, so milli-volts is mV not mv. Surely,
at the very least, we should be using the SI designation in user
visible strings?

It may also be worth providing a brief description of 10BASE-T1L in the
cover letter so (e.g.) one doesn't have to look up the fact that the
voltage level is negotiated via bit 13 of the base page. I've found
that by searching google and finding dp83td510e.pdf

Thanks.
Oleksij Rempel July 23, 2021, 5:32 p.m. UTC | #2
On Mon, Jul 12, 2021 at 02:33:58PM +0100, Russell King (Oracle) wrote:
> On Mon, Jul 12, 2021 at 04:06:24PM +0300, alexandru.tachici@analog.com wrote:
> > 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.
> > 
> > Ethtool output:
> >         Settings for eth1:
> >         Supported ports: [ TP	 MII ]
> >         Supported link modes:   10baseT1L/Full
> >                                 2400mv
> >                                 1000mv
> 
> The SI unit of voltage is V not v, so milli-volts is mV not mv. Surely,
> at the very least, we should be using the SI designation in user
> visible strings?
> 
> It may also be worth providing a brief description of 10BASE-T1L in the
> cover letter so (e.g.) one doesn't have to look up the fact that the
> voltage level is negotiated via bit 13 of the base page. I've found
> that by searching google and finding dp83td510e.pdf

I'm curios how the voltage should be actually chosen?

In the adin1100 datasheet i read:
"The 1.0 V pk-pk operating mode, external termination resistors and independent
Rx/Tx pins make the ADIN1100 suited to intrinsic safety applications"

"For long reach/trunk applications the higher transmit amplitude of 2.4 V pk-pk"

So, it seems to depends on:
- do we have safety requirements?
- how long is the cable?

Can we use 2.4V any time if it is available or it is bad idea for short
cables?

Regards,
Oleksij
Alexandru Tachici Aug. 3, 2021, 9:47 a.m. UTC | #3
Managed to get some answears form the HW team.

From a safety perspective: in Explosive environments
only 1.0 V is allowed.

Tests showed that 1.0 V shows spurs around 200m and
2.4V works for up to 1.3 Km.
Oleksij Rempel Aug. 3, 2021, 11:59 a.m. UTC | #4
On Tue, Aug 03, 2021 at 12:47:15PM +0300, alexandru.tachici@analog.com wrote:
> Managed to get some answears form the HW team.
> 
> From a safety perspective: in Explosive environments
> only 1.0 V is allowed.
> 
> Tests showed that 1.0 V shows spurs around 200m and
> 2.4V works for up to 1.3 Km.

It will be probably better to drop this functionality for now and
provide it as separate patch set. This will probably need new UAPI and
some discussions.

Can you please add me to CC by the next patch rounds for this PHY.

Regards,
Oleksij