Message ID | 20241213-sparx5-lan969x-switch-driver-4-v4-0-d1a72c9c4714@microchip.com (mailing list archive) |
---|---|
Headers | show |
Series | net: lan969x: add RGMII support | expand |
On Fri, Dec 13, 2024 at 2:41 PM Daniel Machon <daniel.machon@microchip.com> wrote: > > == Description: > > This series is the fourth of a multi-part series, that prepares and adds > support for the new lan969x switch driver. > > The upstreaming efforts is split into multiple series (might change a > bit as we go along): > > 1) Prepare the Sparx5 driver for lan969x (merged) > > 2) Add support for lan969x (same basic features as Sparx5 > provides excl. FDMA and VCAP, merged). > > 3) Add lan969x VCAP functionality (merged). > > --> 4) Add RGMII support. > > 5) Add FDMA support. > > == RGMII support: > > The lan969x switch device includes two RGMII port interfaces (port 28 > and 29) supporting data speeds of 1 Gbps, 100 Mbps and 10 Mbps. > > == Patch breakdown: > > Patch #1 does some preparation work. > > Patch #2 adds new function: is_port_rgmii() to the match data ops. > > Patch #3 uses the is_port_rgmii() in a number of places. > > Patch #4 makes sure that we do not configure an RGMII device as a > low-speed device, when doing a port config. > > Patch #5 makes sure we only return the PCS if the port mode requires > it. > > Patch #6 adds checks for RGMII PHY modes in sparx5_verify_speeds(). > > Patch #7 adds registers required to configure RGMII. > > Patch #8 adds RGMII implementation. > > Patch #9 documents RGMII delays in the dt-bindings. > > Details are in the commit description of the individual patches > > To: UNGLinuxDriver@microchip.com > To: Andrew Lunn <andrew+netdev@lunn.ch> > To: David S. Miller <davem@davemloft.net> > To: Eric Dumazet <edumazet@google.com> > To: Jakub Kicinski <kuba@kernel.org> > To: Paolo Abeni <pabeni@redhat.com> > To: Lars Povlsen <lars.povlsen@microchip.com> > To: Steen Hegelund <Steen.Hegelund@microchip.com> > To: Horatiu Vultur <horatiu.vultur@microchip.com> > To: Russell King <linux@armlinux.org.uk> > To: jacob.e.keller@intel.com > To: robh@kernel.org > To: krzk+dt@kernel.org > To: conor+dt@kernel.org > Cc: devicetree@vger.kernel.org > Cc: netdev@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Cc: linux-arm-kernel@lists.infradead.org > Cc: robert.marko@sartura.hr > > Signed-off-by: Daniel Machon <daniel.machon@microchip.com> Tested-by: Robert Marko <robert.marko@sartura.hr> > --- > Changes in v4: > > - Split patch #4 in v3 into two patches, where the new patch #5 handles > PCS selection, by returning the PCS only for ports that require it. > > - Got rid of the '|' symbol for {rx,tx}-internal-delay-ps property > description in the dt-bindings (patch #9). > > - Link to v3: https://lore.kernel.org/r/20241118-sparx5-lan969x-switch-driver-4-v3-0-3cefee5e7e3a@microchip.com > > Changes in v3: > > v2 was kindly tested by Robert Marko. Not carrying the tag to v3 since > we have changes to the handling of the delays. > > - Modified lan969x_rgmii_delay_config() to not apply any MAC delay when > the {rx,tx}-internal-delay-ps properties are missing or set to 0 > (patch #7). > > - Removed 'required' constraint from {rx-tx}-internal-delay-ps > properties. Also added description and default value (Patch #8). > > - Link to v2: https://lore.kernel.org/r/20241113-sparx5-lan969x-switch-driver-4-v2-0-0db98ac096d1@microchip.com > > Changes in v2: > > Most changes are in patch #7. RGMII implementation has been moved to > it's own file lan969x_rgmii.c. > > Details: > > - Use ETH_P_8021Q and ETH_P_8021AD instead of the Sparx5 provided > equivalents (patch #7). > - Configure MAC delays through "{rx,tx}-internal-delay-ps" > properties (patch #7). > - Add selectors for all the phase shifts that the hardware supports > (instead of only 2.0 ns, patch #7). > - Add selectors for all the port speeds (instead of only 1000 mbps.) > - Document RGMII delays in dt-bindings. > > - Link to v1: https://lore.kernel.org/r/20241106-sparx5-lan969x-switch-driver-4-v1-0-f7f7316436bd@microchip.com > > --- > Daniel Machon (9): > net: sparx5: do some preparation work > net: sparx5: add function for RGMII port check > net: sparx5: use is_port_rgmii() throughout > net: sparx5: skip low-speed configuration when port is RGMII > net: sparx5: only return PCS for modes that require it > net: sparx5: verify RGMII speeds > net: lan969x: add RGMII registers > net: lan969x: add RGMII implementation > dt-bindings: net: sparx5: document RGMII delays > > .../bindings/net/microchip,sparx5-switch.yaml | 18 ++ > drivers/net/ethernet/microchip/sparx5/Makefile | 3 +- > .../ethernet/microchip/sparx5/lan969x/lan969x.c | 5 + > .../ethernet/microchip/sparx5/lan969x/lan969x.h | 10 + > .../microchip/sparx5/lan969x/lan969x_rgmii.c | 224 +++++++++++++++++++++ > .../net/ethernet/microchip/sparx5/sparx5_main.c | 29 ++- > .../net/ethernet/microchip/sparx5/sparx5_main.h | 3 + > .../ethernet/microchip/sparx5/sparx5_main_regs.h | 145 +++++++++++++ > .../net/ethernet/microchip/sparx5/sparx5_phylink.c | 14 +- > .../net/ethernet/microchip/sparx5/sparx5_port.c | 57 ++++-- > .../net/ethernet/microchip/sparx5/sparx5_port.h | 5 + > 11 files changed, 484 insertions(+), 29 deletions(-) > --- > base-commit: 2c27c7663390d28bc71e97500eb68e0ce2a7223f > change-id: 20241104-sparx5-lan969x-switch-driver-4-d59b7820485a > > Best regards, > -- > Daniel Machon <daniel.machon@microchip.com> >
I would like to defer the pontential removal of sparx5_port_verify_speed() function to a separate series (see comments on patch 6/9). Any chance for a maintainer to give the OK for that? I would like to give this series another spin before net-next closes. No changes in next version - except adding TB and RB tags. /Daniel
On Wed, Dec 18, 2024 at 02:33:54PM +0000, Daniel Machon wrote: > I would like to defer the pontential removal of sparx5_port_verify_speed() > function to a separate series (see comments on patch 6/9). Any chance for a > maintainer to give the OK for that? I would like to give this series another > spin before net-next closes. No changes in next version - except adding TB and > RB tags. There's no need to respin just to pick up tags that have been given - patchwork will pick those up automatically. I'd rather not have the current patch 6 merged, because we've had cases in the past where stuff has been merged with "we'll fix it later" but later doesn't seem to happen. We especially take this approach with new kernel internal API functions - we don't merge them without a user, because we've had too many cases where the user never appears. We're currently at -rc5, which means -rc6 this Sunday 5th, -rc7 likely next Sunday 12th, and probably the merge window opening on the 19th. I think there's enough time for sparx5_port_verify_speed() to be dropped during that window.
== Description: This series is the fourth of a multi-part series, that prepares and adds support for the new lan969x switch driver. The upstreaming efforts is split into multiple series (might change a bit as we go along): 1) Prepare the Sparx5 driver for lan969x (merged) 2) Add support for lan969x (same basic features as Sparx5 provides excl. FDMA and VCAP, merged). 3) Add lan969x VCAP functionality (merged). --> 4) Add RGMII support. 5) Add FDMA support. == RGMII support: The lan969x switch device includes two RGMII port interfaces (port 28 and 29) supporting data speeds of 1 Gbps, 100 Mbps and 10 Mbps. == Patch breakdown: Patch #1 does some preparation work. Patch #2 adds new function: is_port_rgmii() to the match data ops. Patch #3 uses the is_port_rgmii() in a number of places. Patch #4 makes sure that we do not configure an RGMII device as a low-speed device, when doing a port config. Patch #5 makes sure we only return the PCS if the port mode requires it. Patch #6 adds checks for RGMII PHY modes in sparx5_verify_speeds(). Patch #7 adds registers required to configure RGMII. Patch #8 adds RGMII implementation. Patch #9 documents RGMII delays in the dt-bindings. Details are in the commit description of the individual patches To: UNGLinuxDriver@microchip.com To: Andrew Lunn <andrew+netdev@lunn.ch> To: David S. Miller <davem@davemloft.net> To: Eric Dumazet <edumazet@google.com> To: Jakub Kicinski <kuba@kernel.org> To: Paolo Abeni <pabeni@redhat.com> To: Lars Povlsen <lars.povlsen@microchip.com> To: Steen Hegelund <Steen.Hegelund@microchip.com> To: Horatiu Vultur <horatiu.vultur@microchip.com> To: Russell King <linux@armlinux.org.uk> To: jacob.e.keller@intel.com To: robh@kernel.org To: krzk+dt@kernel.org To: conor+dt@kernel.org Cc: devicetree@vger.kernel.org Cc: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org Cc: robert.marko@sartura.hr Signed-off-by: Daniel Machon <daniel.machon@microchip.com> --- Changes in v4: - Split patch #4 in v3 into two patches, where the new patch #5 handles PCS selection, by returning the PCS only for ports that require it. - Got rid of the '|' symbol for {rx,tx}-internal-delay-ps property description in the dt-bindings (patch #9). - Link to v3: https://lore.kernel.org/r/20241118-sparx5-lan969x-switch-driver-4-v3-0-3cefee5e7e3a@microchip.com Changes in v3: v2 was kindly tested by Robert Marko. Not carrying the tag to v3 since we have changes to the handling of the delays. - Modified lan969x_rgmii_delay_config() to not apply any MAC delay when the {rx,tx}-internal-delay-ps properties are missing or set to 0 (patch #7). - Removed 'required' constraint from {rx-tx}-internal-delay-ps properties. Also added description and default value (Patch #8). - Link to v2: https://lore.kernel.org/r/20241113-sparx5-lan969x-switch-driver-4-v2-0-0db98ac096d1@microchip.com Changes in v2: Most changes are in patch #7. RGMII implementation has been moved to it's own file lan969x_rgmii.c. Details: - Use ETH_P_8021Q and ETH_P_8021AD instead of the Sparx5 provided equivalents (patch #7). - Configure MAC delays through "{rx,tx}-internal-delay-ps" properties (patch #7). - Add selectors for all the phase shifts that the hardware supports (instead of only 2.0 ns, patch #7). - Add selectors for all the port speeds (instead of only 1000 mbps.) - Document RGMII delays in dt-bindings. - Link to v1: https://lore.kernel.org/r/20241106-sparx5-lan969x-switch-driver-4-v1-0-f7f7316436bd@microchip.com --- Daniel Machon (9): net: sparx5: do some preparation work net: sparx5: add function for RGMII port check net: sparx5: use is_port_rgmii() throughout net: sparx5: skip low-speed configuration when port is RGMII net: sparx5: only return PCS for modes that require it net: sparx5: verify RGMII speeds net: lan969x: add RGMII registers net: lan969x: add RGMII implementation dt-bindings: net: sparx5: document RGMII delays .../bindings/net/microchip,sparx5-switch.yaml | 18 ++ drivers/net/ethernet/microchip/sparx5/Makefile | 3 +- .../ethernet/microchip/sparx5/lan969x/lan969x.c | 5 + .../ethernet/microchip/sparx5/lan969x/lan969x.h | 10 + .../microchip/sparx5/lan969x/lan969x_rgmii.c | 224 +++++++++++++++++++++ .../net/ethernet/microchip/sparx5/sparx5_main.c | 29 ++- .../net/ethernet/microchip/sparx5/sparx5_main.h | 3 + .../ethernet/microchip/sparx5/sparx5_main_regs.h | 145 +++++++++++++ .../net/ethernet/microchip/sparx5/sparx5_phylink.c | 14 +- .../net/ethernet/microchip/sparx5/sparx5_port.c | 57 ++++-- .../net/ethernet/microchip/sparx5/sparx5_port.h | 5 + 11 files changed, 484 insertions(+), 29 deletions(-) --- base-commit: 2c27c7663390d28bc71e97500eb68e0ce2a7223f change-id: 20241104-sparx5-lan969x-switch-driver-4-d59b7820485a Best regards,