mbox series

[resend,v4,0/3] phy: Add driver for lan966x Serdes driver

Message ID 20211116100818.1615762-1-horatiu.vultur@microchip.com
Headers show
Series phy: Add driver for lan966x Serdes driver | expand

Message

Horatiu Vultur Nov. 16, 2021, 10:08 a.m. UTC
This patch serie adds support for Microchip lan966x serdes. The lan966x
device contains 7 interfaces, consisting of 2 copper transceivers,
3 Serdes and 2 RGMII interfaces. Two of the Serdes support QSGMII.
The driver also adds the functionality of "muxing" the interfaces to
different logical ports.

The following table shows which interfaces can be supported by the port.

PortNumber    Max Speed    Ethernet interface options
    0            1Gbps       CuPHY, 1G SGMII or QSGMII
    1            1Gbps       CuPHY, 1G SGMII or QSGMII
    2          2.5Gbps       2.5G SGMII, QSGMII, RGMII
    3          2.5Gbps       2.5G SGMII, QSGMII, RGMII
    4          2.5Gbps       2.5G SGMII, QSGMII
    5            1Gbps       QSGMII, RGMII
    6            1Gbps       QSGMII, RGMII
    7            1Gbps       QSGMII

v3->v4:
- update description of the driver
- removed unused registers
- use bitfield operations in the registers
- add macros for PLL configuration
- move macros and structs at the top of the file

v2->v3:
- remove unused includes
- add missing '...' in microchip,lan966x-serdes.yaml
- rename lan966x-serdes.h to phy-lan966x-serdes.h
- Rename CU->PHY and RG->RGMII
- update commit message for PATCH 2

v1->v2:
- replace the regmap with iomem
- update DT bindings

Horatiu Vultur (3):
  dt-bindings: phy: Add lan966x-serdes binding
  dt-bindings: phy: Add constants for lan966x serdes
  phy: Add lan966x ethernet serdes PHY driver

 .../phy/microchip,lan966x-serdes.yaml         |  59 ++
 drivers/phy/microchip/Kconfig                 |   8 +
 drivers/phy/microchip/Makefile                |   1 +
 drivers/phy/microchip/lan966x_serdes.c        | 548 ++++++++++++++++++
 drivers/phy/microchip/lan966x_serdes_regs.h   | 209 +++++++
 include/dt-bindings/phy/phy-lan966x-serdes.h  |  14 +
 6 files changed, 839 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/phy/microchip,lan966x-serdes.yaml
 create mode 100644 drivers/phy/microchip/lan966x_serdes.c
 create mode 100644 drivers/phy/microchip/lan966x_serdes_regs.h
 create mode 100644 include/dt-bindings/phy/phy-lan966x-serdes.h

Comments

Horatiu Vultur Nov. 16, 2021, 10:21 a.m. UTC | #1
The 11/16/2021 11:08, Horatiu Vultur wrote:

Hi Kison, Vinod,

Can you let me know if you have more comments to this patch series?
Otherwise can you ack on it? Because I would like to have the patches
merged via netdev if that is OK for you.

Thanks


> This patch serie adds support for Microchip lan966x serdes. The lan966x
> device contains 7 interfaces, consisting of 2 copper transceivers,
> 3 Serdes and 2 RGMII interfaces. Two of the Serdes support QSGMII.
> The driver also adds the functionality of "muxing" the interfaces to
> different logical ports.
> 
> The following table shows which interfaces can be supported by the port.
> 
> PortNumber    Max Speed    Ethernet interface options
>     0            1Gbps       CuPHY, 1G SGMII or QSGMII
>     1            1Gbps       CuPHY, 1G SGMII or QSGMII
>     2          2.5Gbps       2.5G SGMII, QSGMII, RGMII
>     3          2.5Gbps       2.5G SGMII, QSGMII, RGMII
>     4          2.5Gbps       2.5G SGMII, QSGMII
>     5            1Gbps       QSGMII, RGMII
>     6            1Gbps       QSGMII, RGMII
>     7            1Gbps       QSGMII
> 
> v3->v4:
> - update description of the driver
> - removed unused registers
> - use bitfield operations in the registers
> - add macros for PLL configuration
> - move macros and structs at the top of the file
> 
> v2->v3:
> - remove unused includes
> - add missing '...' in microchip,lan966x-serdes.yaml
> - rename lan966x-serdes.h to phy-lan966x-serdes.h
> - Rename CU->PHY and RG->RGMII
> - update commit message for PATCH 2
> 
> v1->v2:
> - replace the regmap with iomem
> - update DT bindings
> 
> Horatiu Vultur (3):
>   dt-bindings: phy: Add lan966x-serdes binding
>   dt-bindings: phy: Add constants for lan966x serdes
>   phy: Add lan966x ethernet serdes PHY driver
> 
>  .../phy/microchip,lan966x-serdes.yaml         |  59 ++
>  drivers/phy/microchip/Kconfig                 |   8 +
>  drivers/phy/microchip/Makefile                |   1 +
>  drivers/phy/microchip/lan966x_serdes.c        | 548 ++++++++++++++++++
>  drivers/phy/microchip/lan966x_serdes_regs.h   | 209 +++++++
>  include/dt-bindings/phy/phy-lan966x-serdes.h  |  14 +
>  6 files changed, 839 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/phy/microchip,lan966x-serdes.yaml
>  create mode 100644 drivers/phy/microchip/lan966x_serdes.c
>  create mode 100644 drivers/phy/microchip/lan966x_serdes_regs.h
>  create mode 100644 include/dt-bindings/phy/phy-lan966x-serdes.h
> 
> -- 
> 2.33.0
>
Vinod Koul Nov. 16, 2021, 10:45 a.m. UTC | #2
On 16-11-21, 11:21, Horatiu Vultur wrote:
> The 11/16/2021 11:08, Horatiu Vultur wrote:
> 
> Hi Kison, Vinod,
> 
> Can you let me know if you have more comments to this patch series?
> Otherwise can you ack on it? Because I would like to have the patches
> merged via netdev if that is OK for you.

Any reason for merge thru netdev, there is no dependency and now with
merge window closed, I can pick this up..
Horatiu Vultur Nov. 16, 2021, 10:56 a.m. UTC | #3
The 11/16/2021 16:15, Vinod Koul wrote:
> 
> On 16-11-21, 11:21, Horatiu Vultur wrote:
> > The 11/16/2021 11:08, Horatiu Vultur wrote:
> >
> > Hi Kison, Vinod,
> >
> > Can you let me know if you have more comments to this patch series?
> > Otherwise can you ack on it? Because I would like to have the patches
> > merged via netdev if that is OK for you.
> 
> Any reason for merge thru netdev, there is no dependency and now with
> merge window closed, I can pick this up..

Because I would like to send some patches for the lan966x network driver.
And these network patches depend on the serdes driver.

> 
> --
> ~Vinod
Vinod Koul Nov. 16, 2021, 11:43 a.m. UTC | #4
On 16-11-21, 11:56, Horatiu Vultur wrote:
> The 11/16/2021 16:15, Vinod Koul wrote:
> > 
> > On 16-11-21, 11:21, Horatiu Vultur wrote:
> > > The 11/16/2021 11:08, Horatiu Vultur wrote:
> > >
> > > Hi Kison, Vinod,
> > >
> > > Can you let me know if you have more comments to this patch series?
> > > Otherwise can you ack on it? Because I would like to have the patches
> > > merged via netdev if that is OK for you.
> > 
> > Any reason for merge thru netdev, there is no dependency and now with
> > merge window closed, I can pick this up..
> 
> Because I would like to send some patches for the lan966x network driver.
> And these network patches depend on the serdes driver.

There cant be a compile time dependency... the network driver can use
the phy apis.. I dont think it is required here... Did I miss something
obvious?
Horatiu Vultur Nov. 16, 2021, 11:52 a.m. UTC | #5
The 11/16/2021 17:13, Vinod Koul wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> On 16-11-21, 11:56, Horatiu Vultur wrote:
> > The 11/16/2021 16:15, Vinod Koul wrote:
> > >
> > > On 16-11-21, 11:21, Horatiu Vultur wrote:
> > > > The 11/16/2021 11:08, Horatiu Vultur wrote:
> > > >
> > > > Hi Kison, Vinod,
> > > >
> > > > Can you let me know if you have more comments to this patch series?
> > > > Otherwise can you ack on it? Because I would like to have the patches
> > > > merged via netdev if that is OK for you.
> > >
> > > Any reason for merge thru netdev, there is no dependency and now with
> > > merge window closed, I can pick this up..
> >
> > Because I would like to send some patches for the lan966x network driver.
> > And these network patches depend on the serdes driver.
> 
> There cant be a compile time dependency... the network driver can use
> the phy apis.. I dont think it is required here... Did I miss something
> obvious?

You are right, there is no compile time dependency and the network
driver can use the PHY APIs.

But at runtime the network driver will need to configure the serdes
using the PHY API to be able to work properly.

> 
> --
> ~Vinod
Alexandre Belloni Nov. 16, 2021, 6:12 p.m. UTC | #6
Hello,

On 16/11/2021 12:52:28+0100, Horatiu Vultur wrote:
> The 11/16/2021 17:13, Vinod Koul wrote:
> > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> > 
> > On 16-11-21, 11:56, Horatiu Vultur wrote:
> > > The 11/16/2021 16:15, Vinod Koul wrote:
> > > >
> > > > On 16-11-21, 11:21, Horatiu Vultur wrote:
> > > > > The 11/16/2021 11:08, Horatiu Vultur wrote:
> > > > >
> > > > > Hi Kison, Vinod,
> > > > >
> > > > > Can you let me know if you have more comments to this patch series?
> > > > > Otherwise can you ack on it? Because I would like to have the patches
> > > > > merged via netdev if that is OK for you.
> > > >
> > > > Any reason for merge thru netdev, there is no dependency and now with
> > > > merge window closed, I can pick this up..
> > >
> > > Because I would like to send some patches for the lan966x network driver.
> > > And these network patches depend on the serdes driver.
> > 
> > There cant be a compile time dependency... the network driver can use
> > the phy apis.. I dont think it is required here... Did I miss something
> > obvious?
> 
> You are right, there is no compile time dependency and the network
> driver can use the PHY APIs.
> 
> But at runtime the network driver will need to configure the serdes
> using the PHY API to be able to work properly.
> 

It is fine if it doesn't work at runtime with only one branch, both will
get merged in linux-next and you can test with that if necessary. I'll
let both series go through separate trees.
Horatiu Vultur Nov. 16, 2021, 10:05 p.m. UTC | #7
The 11/16/2021 19:12, Alexandre Belloni wrote:
> 
> Hello,
> 
> On 16/11/2021 12:52:28+0100, Horatiu Vultur wrote:
> > The 11/16/2021 17:13, Vinod Koul wrote:
> > >
> > > On 16-11-21, 11:56, Horatiu Vultur wrote:
> > > > The 11/16/2021 16:15, Vinod Koul wrote:
> > > > >
> > > > > On 16-11-21, 11:21, Horatiu Vultur wrote:
> > > > > > The 11/16/2021 11:08, Horatiu Vultur wrote:
> > > > > >
> > > > > > Hi Kison, Vinod,
> > > > > >
> > > > > > Can you let me know if you have more comments to this patch series?
> > > > > > Otherwise can you ack on it? Because I would like to have the patches
> > > > > > merged via netdev if that is OK for you.
> > > > >
> > > > > Any reason for merge thru netdev, there is no dependency and now with
> > > > > merge window closed, I can pick this up..
> > > >
> > > > Because I would like to send some patches for the lan966x network driver.
> > > > And these network patches depend on the serdes driver.
> > >
> > > There cant be a compile time dependency... the network driver can use
> > > the phy apis.. I dont think it is required here... Did I miss something
> > > obvious?
> >
> > You are right, there is no compile time dependency and the network
> > driver can use the PHY APIs.
> >
> > But at runtime the network driver will need to configure the serdes
> > using the PHY API to be able to work properly.
> >
> 
> It is fine if it doesn't work at runtime with only one branch, both will
> get merged in linux-next and you can test with that if necessary. I'll
> let both series go through separate trees.

Ah.. sorry for all the confusion. I though they need to go through the
same tree.

So Vinod, if you think that the patch series is OK please take it in
your tree, otherwise let me know what comments you have.

> 
> 
> --
> Alexandre Belloni, co-owner and COO, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com
Vinod Koul Nov. 23, 2021, 7:39 a.m. UTC | #8
On 16-11-21, 11:08, Horatiu Vultur wrote:
> This patch serie adds support for Microchip lan966x serdes. The lan966x
> device contains 7 interfaces, consisting of 2 copper transceivers,
> 3 Serdes and 2 RGMII interfaces. Two of the Serdes support QSGMII.
> The driver also adds the functionality of "muxing" the interfaces to
> different logical ports.
> 
> The following table shows which interfaces can be supported by the port.
> 
> PortNumber    Max Speed    Ethernet interface options
>     0            1Gbps       CuPHY, 1G SGMII or QSGMII
>     1            1Gbps       CuPHY, 1G SGMII or QSGMII
>     2          2.5Gbps       2.5G SGMII, QSGMII, RGMII
>     3          2.5Gbps       2.5G SGMII, QSGMII, RGMII
>     4          2.5Gbps       2.5G SGMII, QSGMII
>     5            1Gbps       QSGMII, RGMII
>     6            1Gbps       QSGMII, RGMII
>     7            1Gbps       QSGMII

Applied, thanks