[RFC PATCH v4 net-next 00/23] add support for VSC75XX control over SPI

Colin Foster colin.foster at in-advantage.com
Tue Nov 16 15:44:13 PST 2021


On Tue, Nov 16, 2021 at 10:56:54PM +0000, Vladimir Oltean wrote:
> On Mon, Nov 15, 2021 at 10:23:05PM -0800, Colin Foster wrote:
> > My apologies for this next RFC taking so long. Life got in the way.
> > 
> > 
> > The patch set in general is to add support for the VSC7511, VSC7512,
> > VSC7513 and VSC7514 devices controlled over SPI. The driver is
> > relatively functional for the internal phy ports (0-3) on the VSC7512.
> > As I'll discuss, it is not yet functional for other ports yet.
> > 
> > 
> > I still think there are enough updates to bounce by the community
> > in case I'm terribly off base or doomed to chase my tail.
> 
> I wanted to do some regression-testing with this patch set on the
> Seville switch, but up until now I've been trying to actually make it
> compile. See the changes required for that. Note that "can compile"
> doesn't mean "can compile without warnings". Please check the build
> reports on each individual patch on Patchwork and make sure the next
> submission is warning-free. Note that there's a considerable amount of
> drivers to build-test in both on and off configurations.
> https://patchwork.kernel.org/project/netdevbpf/patch/20211116062328.1949151-21-colin.foster@in-advantage.com/

I'm very embarrassed. I scrambled at the end to try to clean things up
and didn't run enough tests. Sorry about that!

> 
> -- >8 -------------------------------------------------------------------------
> diff --git a/drivers/net/dsa/ocelot/felix_vsc9959.c b/drivers/net/dsa/ocelot/felix_vsc9959.c
> index b1032b7abaea..fbe78357ca94 100644
> --- a/drivers/net/dsa/ocelot/felix_vsc9959.c
> +++ b/drivers/net/dsa/ocelot/felix_vsc9959.c
> @@ -1127,11 +1127,13 @@ static void vsc9959_mdio_bus_free(struct ocelot *ocelot)
>  
>  	for (port = 0; port < ocelot->num_phys_ports; port++) {
>  		struct phylink_pcs *phylink_pcs = felix->pcs[port];
> +		struct mdio_device *mdio_device;
>  
>  		if (!phylink_pcs)
>  			continue;
>  
> -		mdio_device_free(phylink_pcs->mdio);
> +		mdio_device = lynx_get_mdio_device(phylink_pcs);
> +		mdio_device_free(mdio_device);
>  		lynx_pcs_destroy(phylink_pcs);
>  	}
>  	mdiobus_unregister(felix->imdio);
> diff --git a/drivers/net/dsa/ocelot/seville_vsc9953.c b/drivers/net/dsa/ocelot/seville_vsc9953.c
> index 268c09042824..12a87d8f977d 100644
> --- a/drivers/net/dsa/ocelot/seville_vsc9953.c
> +++ b/drivers/net/dsa/ocelot/seville_vsc9953.c
> @@ -1037,7 +1037,7 @@ static int vsc9953_mdio_bus_alloc(struct ocelot *ocelot)
>  			continue;
>  
>  		mdio_device = mdio_device_create(felix->imdio, addr);
> -		if (IS_ERR(pcs))
> +		if (IS_ERR(mdio_device))
>  			continue;
>  
>  		phylink_pcs = lynx_pcs_create(mdio_device);
> @@ -1066,7 +1066,7 @@ static void vsc9953_mdio_bus_free(struct ocelot *ocelot)
>  		if (!phylink_pcs)
>  			continue;
>  
> -		mdio_device = lynx_pcs_get_mdio(phylink_pcs);
> +		mdio_device = lynx_get_mdio_device(phylink_pcs);
>  		mdio_device_free(mdio_device);
>  		lynx_pcs_destroy(phylink_pcs);
>  	}
> diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/ethernet/freescale/enetc/enetc_pf.c
> index 3d93ac1376c6..3ab581b777eb 100644
> --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c
> +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c
> @@ -8,6 +8,7 @@
>  #include <linux/of_platform.h>
>  #include <linux/of_mdio.h>
>  #include <linux/of_net.h>
> +#include <linux/pcs-lynx.h>
>  #include "enetc_ierb.h"
>  #include "enetc_pf.h"
>  
> @@ -983,7 +984,7 @@ static void enetc_pl_mac_config(struct phylink_config *config,
>  
>  	priv = netdev_priv(pf->si->ndev);
>  	if (pf->pcs)
> -		phylink_set_pcs(priv->phylink, &pf->pcs);
> +		phylink_set_pcs(priv->phylink, pf->pcs);
>  }
>  
>  static void enetc_force_rgmii_mac(struct enetc_hw *hw, int speed, int duplex)
> diff --git a/drivers/pinctrl/pinctrl-ocelot.c b/drivers/pinctrl/pinctrl-ocelot.c
> index f8d2494b335c..5f9fc9252c79 100644
> --- a/drivers/pinctrl/pinctrl-ocelot.c
> +++ b/drivers/pinctrl/pinctrl-ocelot.c
> @@ -20,6 +20,7 @@
>  #include <linux/platform_device.h>
>  #include <linux/regmap.h>
>  #include <linux/slab.h>
> +#include <soc/mscc/ocelot.h>
>  
>  #include "core.h"
>  #include "pinconf.h"
> diff --git a/include/soc/mscc/ocelot.h b/include/soc/mscc/ocelot.h
> index 6aeb7eac73f5..7571becba545 100644
> --- a/include/soc/mscc/ocelot.h
> +++ b/include/soc/mscc/ocelot.h
> @@ -946,11 +946,12 @@ int ocelot_pinctrl_core_probe(struct device *dev,
>  			      struct regmap *pincfg_base, u32 pincfg_offset,
>  			      struct device_node *device_node);
>  #else
> -int ocelot_pinctrl_core_probe(struct device *dev,
> -			      struct pinctrl_desc *pinctrl_desc,
> -			      struct regmap *regmap_base, u32 regmap_offset,
> -			      struct regmap *pincfg_base, u32 pincfg_offset,
> -			      struct device_node *device_node)
> +static inline int
> +ocelot_pinctrl_core_probe(struct device *dev,
> +			  struct pinctrl_desc *pinctrl_desc,
> +			  struct regmap *regmap_base, u32 regmap_offset,
> +			  struct regmap *pincfg_base, u32 pincfg_offset,
> +			  struct device_node *device_node)
>  {
>  	return -EOPNOTSUPP;
>  }
> @@ -960,8 +961,9 @@ int ocelot_pinctrl_core_probe(struct device *dev,
>  int microchip_sgpio_core_probe(struct device *dev, struct device_node *node,
>  			       struct regmap *regmap, u32 offset);
>  #else
> -int microchip_sgpio_core_probe(struct device *dev, struct device_node *node,
> -			       struct regmap *regmap, u32 offset)
> +static inline int
> +microchip_sgpio_core_probe(struct device *dev, struct device_node *node,
> +			   struct regmap *regmap, u32 offset)
>  {
>  	return -EOPNOTSUPP;
>  }
> -- >8 -------------------------------------------------------------------------



More information about the linux-arm-kernel mailing list