diff mbox

[RFC,v3,12/12] fsl/fman: Add FMan MAC driver

Message ID 1437394575.10831.18.camel@transmode.se (mailing list archive)
State RFC
Delegated to: Scott Wood
Headers show

Commit Message

Joakim Tjernlund July 20, 2015, 12:16 p.m. UTC
On Wed, 2015-04-29 at 12:29 +0300, Igal.Liberman wrote:
> From: Igal Liberman <Igal.Liberman@freescale.com>
> 
> This patch adds the Ethernet MAC driver support.
> 
> Signed-off-by: Igal Liberman <Igal.Liberman@freescale.com>
> ---
>  drivers/net/ethernet/freescale/fman/inc/mac.h     |  125 +++++
>  drivers/net/ethernet/freescale/fman/mac/Makefile  |    3 +-
>  drivers/net/ethernet/freescale/fman/mac/mac-api.c |  605 +++++++++++++++++++++
>  drivers/net/ethernet/freescale/fman/mac/mac.c     |  527 ++++++++++++++++++
>  4 files changed, 1259 insertions(+), 1 deletion(-)
>  create mode 100644 drivers/net/ethernet/freescale/fman/inc/mac.h
>  create mode 100644 drivers/net/ethernet/freescale/fman/mac/mac-api.c
>  create mode 100644 drivers/net/ethernet/freescale/fman/mac/mac.c
> 
> diff --git a/drivers/net/ethernet/freescale/fman/inc/mac.h b/drivers/net/ethernet/freescale/fman/inc/mac.h
> new file mode 100644
> index 0000000..2d27331
> --- /dev/null
> +++ b/drivers/net/ethernet/freescale/fman/inc/mac.h
.....
> +	/* Get the rest of the PHY information */
> +	mac_dev->phy_node = of_parse_phandle(mac_node, "phy-handle", 0);
> +	if (!mac_dev->phy_node) {
> +		int sz;
> +		const u32 *phy_id = of_get_property(mac_node, "fixed-link",
> +							&sz);
> +		if (!phy_id || sz < sizeof(*phy_id)) {
> +			dev_err(dev, "No PHY (or fixed link) found\n");
> +			_errno = -EINVAL;
> +			goto _return_dev_set_drvdata;
> +		}
> +
> +		sprintf(mac_dev->fixed_bus_id, PHY_ID_FMT, "fixed-0",
> +			phy_id[0]);
> +	}

The above for fixed PHY does not work for me, changing it to does:

https://lists.ozlabs.org/listinfo/linuxppc-dev

Comments

Madalin Bucur July 20, 2015, 12:28 p.m. UTC | #1
Hi Joakim,

It seems we just need to align to the API introduced by Thomas Petazzoni
in 3be2a49e.

Madalin

> -----Original Message-----
> From: Joakim Tjernlund [mailto:joakim.tjernlund@transmode.se]
> Sent: Monday, July 20, 2015 3:16 PM
> To: netdev@vger.kernel.org; Liberman Igal-B31950
> Cc: linuxppc-dev@lists.ozlabs.org; linux-kernel@vger.kernel.org; Bucur
> Madalin-Cristian-B32716
> Subject: Re: [RFC,v3,12/12] fsl/fman: Add FMan MAC driver
> 
> On Wed, 2015-04-29 at 12:29 +0300, Igal.Liberman wrote:
> > From: Igal Liberman <Igal.Liberman@freescale.com>
> >
> > This patch adds the Ethernet MAC driver support.
> >
> > Signed-off-by: Igal Liberman <Igal.Liberman@freescale.com>
> > ---
> >  drivers/net/ethernet/freescale/fman/inc/mac.h     |  125 +++++
> >  drivers/net/ethernet/freescale/fman/mac/Makefile  |    3 +-
> >  drivers/net/ethernet/freescale/fman/mac/mac-api.c |  605
> +++++++++++++++++++++
> >  drivers/net/ethernet/freescale/fman/mac/mac.c     |  527
> ++++++++++++++++++
> >  4 files changed, 1259 insertions(+), 1 deletion(-)
> >  create mode 100644 drivers/net/ethernet/freescale/fman/inc/mac.h
> >  create mode 100644 drivers/net/ethernet/freescale/fman/mac/mac-api.c
> >  create mode 100644 drivers/net/ethernet/freescale/fman/mac/mac.c
> >
> > diff --git a/drivers/net/ethernet/freescale/fman/inc/mac.h
> b/drivers/net/ethernet/freescale/fman/inc/mac.h
> > new file mode 100644
> > index 0000000..2d27331
> > --- /dev/null
> > +++ b/drivers/net/ethernet/freescale/fman/inc/mac.h
> .....
> > +	/* Get the rest of the PHY information */
> > +	mac_dev->phy_node = of_parse_phandle(mac_node, "phy-handle",
> 0);
> > +	if (!mac_dev->phy_node) {
> > +		int sz;
> > +		const u32 *phy_id = of_get_property(mac_node, "fixed-
> link",
> > +							&sz);
> > +		if (!phy_id || sz < sizeof(*phy_id)) {
> > +			dev_err(dev, "No PHY (or fixed link) found\n");
> > +			_errno = -EINVAL;
> > +			goto _return_dev_set_drvdata;
> > +		}
> > +
> > +		sprintf(mac_dev->fixed_bus_id, PHY_ID_FMT, "fixed-0",
> > +			phy_id[0]);
> > +	}
> 
> The above for fixed PHY does not work for me, changing it to does:
> 
> diff --git a/drivers/net/ethernet/freescale/fman/mac/mac.c
> b/drivers/net/ethernet/freescale/fman/mac/mac.c
> index 4eb8f7c..a8be96a 100644
> --- a/drivers/net/ethernet/freescale/fman/mac/mac.c
> +++ b/drivers/net/ethernet/freescale/fman/mac/mac.c
> @@ -42,6 +42,7 @@
>  #include <linux/module.h>
>  #include <linux/of_address.h>
>  #include <linux/of_platform.h>
> +#include <linux/of_mdio.h>
>  #include <linux/of_net.h>
>  #include <linux/device.h>
>  #include <linux/phy.h>
> @@ -399,7 +400,7 @@ static int __cold mac_probe(struct platform_device
> *_of_dev)
> 
>         /* Get the rest of the PHY information */
>         mac_dev->phy_node = of_parse_phandle(mac_node, "phy-handle", 0);
> -       if (!mac_dev->phy_node) {
> +       if (0 && !mac_dev->phy_node) {
>                 int sz;
>                 const u32 *phy_id = of_get_property(mac_node, "fixed-link",
>                                                         &sz);
> @@ -412,6 +413,16 @@ static int __cold mac_probe(struct platform_device
> *_of_dev)
>                 sprintf(mac_dev->fixed_bus_id, PHY_ID_FMT, "fixed-0",
>                         phy_id[0]);
>         }
> +       if (!mac_dev->phy_node && of_phy_is_fixed_link(mac_node)) {
> +               /*
> +                * In the case of a fixed PHY, the DT node associated
> +                * to the PHY is the Ethernet MAC DT node.
> +                */
> +               _errno = of_phy_register_fixed_link(mac_node);
> +               if (_errno)
> +                       return _errno;
> +               mac_dev->phy_node = of_node_get(mac_node);
> +       }
Joakim Tjernlund July 20, 2015, 12:57 p.m. UTC | #2
On Mon, 2015-07-20 at 12:28 +0000, Madalin-Cristian Bucur wrote:
> Hi Joakim,
> 
> It seems we just need to align to the API introduced by Thomas Petazzoni
> in 3be2a49e.
> 
> Madalin

So it seems, any idea when the next spin will be ready?
Could you also push it onto 
  http://git.freescale.com/git/cgit.cgi/ppc/upstream/linux.git/
?

 Jocke
Madalin Bucur July 20, 2015, 1:33 p.m. UTC | #3
> -----Original Message-----
> From: Joakim Tjernlund [mailto:joakim.tjernlund@transmode.se]
> Sent: Monday, July 20, 2015 3:57 PM
> To: netdev@vger.kernel.org; Liberman Igal-B31950; Bucur Madalin-Cristian-
> B32716
> Cc: linuxppc-dev@lists.ozlabs.org; linux-kernel@vger.kernel.org
> Subject: Re: [RFC,v3,12/12] fsl/fman: Add FMan MAC driver
> 
> On Mon, 2015-07-20 at 12:28 +0000, Madalin-Cristian Bucur wrote:
> > Hi Joakim,
> >
> > It seems we just need to align to the API introduced by Thomas Petazzoni
> > in 3be2a49e.
> >
> > Madalin
> 
> So it seems, any idea when the next spin will be ready?
> Could you also push it onto
>   http://git.freescale.com/git/cgit.cgi/ppc/upstream/linux.git/
> ?
> 
>  Jocke

We're working on addressing all the feedback received to date (you've just added
a bit more) then we'll re-submit the FMan driver together with the DPAA Ethernet
driver. A push in the public git is also going to take place after the patches are sent
for review.

Madalin
diff mbox

Patch

diff --git a/drivers/net/ethernet/freescale/fman/mac/mac.c b/drivers/net/ethernet/freescale/fman/mac/mac.c
index 4eb8f7c..a8be96a 100644
--- a/drivers/net/ethernet/freescale/fman/mac/mac.c
+++ b/drivers/net/ethernet/freescale/fman/mac/mac.c
@@ -42,6 +42,7 @@ 
 #include <linux/module.h>
 #include <linux/of_address.h>
 #include <linux/of_platform.h>
+#include <linux/of_mdio.h>
 #include <linux/of_net.h>
 #include <linux/device.h>
 #include <linux/phy.h>
@@ -399,7 +400,7 @@  static int __cold mac_probe(struct platform_device *_of_dev)
 
        /* Get the rest of the PHY information */
        mac_dev->phy_node = of_parse_phandle(mac_node, "phy-handle", 0);
-       if (!mac_dev->phy_node) {
+       if (0 && !mac_dev->phy_node) {
                int sz;
                const u32 *phy_id = of_get_property(mac_node, "fixed-link",
                                                        &sz);
@@ -412,6 +413,16 @@  static int __cold mac_probe(struct platform_device *_of_dev)
                sprintf(mac_dev->fixed_bus_id, PHY_ID_FMT, "fixed-0",
                        phy_id[0]);
        }
+       if (!mac_dev->phy_node && of_phy_is_fixed_link(mac_node)) {
+               /*
+                * In the case of a fixed PHY, the DT node associated
+                * to the PHY is the Ethernet MAC DT node.
+                */
+               _errno = of_phy_register_fixed_link(mac_node);
+               if (_errno)
+                       return _errno;
+               mac_dev->phy_node = of_node_get(mac_node);
+       }
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org