Message ID | 20180323201117.8416-2-alexandre.belloni@bootlin.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
Series | Microsemi Ocelot switch support | expand |
On Fri, Mar 23, 2018 at 09:11:10PM +0100, Alexandre Belloni wrote: > Add Microsemi Ocelot internal PHY ids. For now, simply use the genphy > functions but more features are available. > > Cc: Raju Lakkaraju <Raju.Lakkaraju@microsemi.com> > Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> > --- > drivers/net/phy/mscc.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/drivers/net/phy/mscc.c b/drivers/net/phy/mscc.c > index 650c2667d523..e1ab3acd1cdb 100644 > --- a/drivers/net/phy/mscc.c > +++ b/drivers/net/phy/mscc.c > @@ -91,6 +91,7 @@ enum rgmii_rx_clock_delay { > #define SECURE_ON_PASSWD_LEN_4 0x4000 > > /* Microsemi PHY ID's */ > +#define PHY_ID_OCELOT 0x00070540 > #define PHY_ID_VSC8530 0x00070560 > #define PHY_ID_VSC8531 0x00070570 > #define PHY_ID_VSC8540 0x00070760 > @@ -658,6 +659,19 @@ static int vsc85xx_probe(struct phy_device *phydev) > > /* Microsemi VSC85xx PHYs */ > static struct phy_driver vsc85xx_driver[] = { > +{ > + .phy_id = PHY_ID_OCELOT, > + .name = "Microsemi OCELOT", > + .phy_id_mask = 0xfffffff0, > + .features = PHY_GBIT_FEATURES, No interrupt support? In fact, the only advantage i see this brings over the generic driver is that the name Microsemi OCELOT is printed. Andrew > + .soft_reset = &genphy_soft_reset, > + .config_init = &genphy_config_init, > + .config_aneg = &genphy_config_aneg, > + .aneg_done = &genphy_aneg_done, > + .read_status = &genphy_read_status, > + .suspend = &genphy_suspend, > + .resume = &genphy_resume, > +},
On 03/23/2018 01:11 PM, Alexandre Belloni wrote: > Add Microsemi Ocelot internal PHY ids. For now, simply use the genphy > functions but more features are available. > > Cc: Raju Lakkaraju <Raju.Lakkaraju@microsemi.com> > Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> > --- > drivers/net/phy/mscc.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/drivers/net/phy/mscc.c b/drivers/net/phy/mscc.c > index 650c2667d523..e1ab3acd1cdb 100644 > --- a/drivers/net/phy/mscc.c > +++ b/drivers/net/phy/mscc.c > @@ -91,6 +91,7 @@ enum rgmii_rx_clock_delay { > #define SECURE_ON_PASSWD_LEN_4 0x4000 > > /* Microsemi PHY ID's */ > +#define PHY_ID_OCELOT 0x00070540 > #define PHY_ID_VSC8530 0x00070560 > #define PHY_ID_VSC8531 0x00070570 > #define PHY_ID_VSC8540 0x00070760 > @@ -658,6 +659,19 @@ static int vsc85xx_probe(struct phy_device *phydev) > > /* Microsemi VSC85xx PHYs */ > static struct phy_driver vsc85xx_driver[] = { > +{ > + .phy_id = PHY_ID_OCELOT, > + .name = "Microsemi OCELOT", > + .phy_id_mask = 0xfffffff0, > + .features = PHY_GBIT_FEATURES, > + .soft_reset = &genphy_soft_reset, > + .config_init = &genphy_config_init, > + .config_aneg = &genphy_config_aneg, > + .aneg_done = &genphy_aneg_done, > + .read_status = &genphy_read_status, > + .suspend = &genphy_suspend, > + .resume = &genphy_resume, With the exception of config_init(), suspend and resume, everything else is already the default when you don't provide a callback. To echo to what Andrew wrote already, if the purpose is just to show a nice name, and do nothing else, consider using the Generic PHY driver (default).
On 23/03/2018 at 14:08:10 -0700, Florian Fainelli wrote: > On 03/23/2018 01:11 PM, Alexandre Belloni wrote: > > Add Microsemi Ocelot internal PHY ids. For now, simply use the genphy > > functions but more features are available. > > > > Cc: Raju Lakkaraju <Raju.Lakkaraju@microsemi.com> > > Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> > > --- > > drivers/net/phy/mscc.c | 15 +++++++++++++++ > > 1 file changed, 15 insertions(+) > > > > diff --git a/drivers/net/phy/mscc.c b/drivers/net/phy/mscc.c > > index 650c2667d523..e1ab3acd1cdb 100644 > > --- a/drivers/net/phy/mscc.c > > +++ b/drivers/net/phy/mscc.c > > @@ -91,6 +91,7 @@ enum rgmii_rx_clock_delay { > > #define SECURE_ON_PASSWD_LEN_4 0x4000 > > > > /* Microsemi PHY ID's */ > > +#define PHY_ID_OCELOT 0x00070540 > > #define PHY_ID_VSC8530 0x00070560 > > #define PHY_ID_VSC8531 0x00070570 > > #define PHY_ID_VSC8540 0x00070760 > > @@ -658,6 +659,19 @@ static int vsc85xx_probe(struct phy_device *phydev) > > > > /* Microsemi VSC85xx PHYs */ > > static struct phy_driver vsc85xx_driver[] = { > > +{ > > + .phy_id = PHY_ID_OCELOT, > > + .name = "Microsemi OCELOT", > > + .phy_id_mask = 0xfffffff0, > > + .features = PHY_GBIT_FEATURES, > > + .soft_reset = &genphy_soft_reset, > > + .config_init = &genphy_config_init, > > + .config_aneg = &genphy_config_aneg, > > + .aneg_done = &genphy_aneg_done, > > + .read_status = &genphy_read_status, > > + .suspend = &genphy_suspend, > > + .resume = &genphy_resume, > > With the exception of config_init(), suspend and resume, everything else > is already the default when you don't provide a callback. To echo to > what Andrew wrote already, if the purpose is just to show a nice name, > and do nothing else, consider using the Generic PHY driver (default). Ok, I'll drop this patch for now, until we handle more features for that PHY.
diff --git a/drivers/net/phy/mscc.c b/drivers/net/phy/mscc.c index 650c2667d523..e1ab3acd1cdb 100644 --- a/drivers/net/phy/mscc.c +++ b/drivers/net/phy/mscc.c @@ -91,6 +91,7 @@ enum rgmii_rx_clock_delay { #define SECURE_ON_PASSWD_LEN_4 0x4000 /* Microsemi PHY ID's */ +#define PHY_ID_OCELOT 0x00070540 #define PHY_ID_VSC8530 0x00070560 #define PHY_ID_VSC8531 0x00070570 #define PHY_ID_VSC8540 0x00070760 @@ -658,6 +659,19 @@ static int vsc85xx_probe(struct phy_device *phydev) /* Microsemi VSC85xx PHYs */ static struct phy_driver vsc85xx_driver[] = { +{ + .phy_id = PHY_ID_OCELOT, + .name = "Microsemi OCELOT", + .phy_id_mask = 0xfffffff0, + .features = PHY_GBIT_FEATURES, + .soft_reset = &genphy_soft_reset, + .config_init = &genphy_config_init, + .config_aneg = &genphy_config_aneg, + .aneg_done = &genphy_aneg_done, + .read_status = &genphy_read_status, + .suspend = &genphy_suspend, + .resume = &genphy_resume, +}, { .phy_id = PHY_ID_VSC8530, .name = "Microsemi FE VSC8530", @@ -748,6 +762,7 @@ static struct phy_driver vsc85xx_driver[] = { module_phy_driver(vsc85xx_driver); static struct mdio_device_id __maybe_unused vsc85xx_tbl[] = { + { PHY_ID_OCELOT, 0xfffffff0, }, { PHY_ID_VSC8530, 0xfffffff0, }, { PHY_ID_VSC8531, 0xfffffff0, }, { PHY_ID_VSC8540, 0xfffffff0, },
Add Microsemi Ocelot internal PHY ids. For now, simply use the genphy functions but more features are available. Cc: Raju Lakkaraju <Raju.Lakkaraju@microsemi.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> --- drivers/net/phy/mscc.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)