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

2015-07-21 Thread Joakim Tjernlund
On Mon, 2015-07-20 at 13:33 +, Madalin-Cristian Bucur wrote:
> > -Original Message-
> > From: Joakim Tjernlund [mailto:joakim.tjernl...@transmode.se]
> > Sent: Monday, July 20, 2015 3:57 PM
> > To: netdev@vger.kernel.org; Liberman Igal-B31950; Bucur Madalin-Cristian-
> > B32716
> > Cc: linuxppc-...@lists.ozlabs.org; linux-ker...@vger.kernel.org
> > Subject: Re: [RFC,v3,12/12] fsl/fman: Add FMan MAC driver
> > 
> > On Mon, 2015-07-20 at 12:28 +, 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.

Hi again

Now I got to actually use PHY less(aka. Fixed PHY) too. I had to hack AN off 
for all such links
to get a 1000 SGMII link working:
--- a/drivers/net/ethernet/freescale/fman/mac/memac.c
+++ b/drivers/net/ethernet/freescale/fman/mac/memac.c
@@ -80,7 +80,10 @@ static void setup_sgmii_internal_phy(struct memac_t 
*p_memac, uint8_t phy_addr)
   ENET_SPEED_1000);
 
/* SGMII mode + AN enable */
-   tmp_reg16 = PHY_SGMII_IF_MODE_AN | PHY_SGMII_IF_MODE_SGMII;
+   //tmp_reg16 = PHY_SGMII_IF_MODE_AN | PHY_SGMII_IF_MODE_SGMII;
+   tmp_reg16 = PHY_SGMII_IF_MODE_AN | PHY_SGMII_IF_MODE_SGMII | 0x8;
+   if (p_memac->mac_id != 0)
+   tmp_reg16 &= ~PHY_SGMII_IF_MODE_AN;
memac_mii_write_phy_reg(p_memac, phy_addr, 0x14, tmp_reg16);
 
/* Device ability according to SGMII specification */
@@ -104,6 +107,8 @@ static void setup_sgmii_internal_phy(struct memac_t 
*p_memac, uint8_t phy_addr)
 
/* Restart AN */
tmp_reg16 = PHY_SGMII_CR_DEF_VAL | PHY_SGMII_CR_RESET_AN;
+   if (p_memac->mac_id != 0)
+   tmp_reg16 &= ~0x1000;
memac_mii_write_phy_reg(p_memac, phy_addr, 0x0, tmp_reg16);
 
/* Restore original enet mode */


Could you please fix this too?

 Jocke--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

2015-07-20 Thread Madalin-Cristian Bucur
> -Original Message-
> From: Joakim Tjernlund [mailto:joakim.tjernl...@transmode.se]
> Sent: Monday, July 20, 2015 3:57 PM
> To: netdev@vger.kernel.org; Liberman Igal-B31950; Bucur Madalin-Cristian-
> B32716
> Cc: linuxppc-...@lists.ozlabs.org; linux-ker...@vger.kernel.org
> Subject: Re: [RFC,v3,12/12] fsl/fman: Add FMan MAC driver
> 
> On Mon, 2015-07-20 at 12:28 +, 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
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

2015-07-20 Thread Joakim Tjernlund
On Mon, 2015-07-20 at 12:28 +, 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--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

2015-07-20 Thread Madalin-Cristian Bucur
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.tjernl...@transmode.se]
> Sent: Monday, July 20, 2015 3:16 PM
> To: netdev@vger.kernel.org; Liberman Igal-B31950
> Cc: linuxppc-...@lists.ozlabs.org; linux-ker...@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 
> >
> > This patch adds the Ethernet MAC driver support.
> >
> > Signed-off-by: Igal Liberman 
> > ---
> >  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 000..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 
>  #include 
>  #include 
> +#include 
>  #include 
>  #include 
>  #include 
> @@ -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);
> +   }
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


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

2015-07-20 Thread Joakim Tjernlund
On Wed, 2015-04-29 at 12:29 +0300, Igal.Liberman wrote:
> From: Igal Liberman 
> 
> This patch adds the Ethernet MAC driver support.
> 
> Signed-off-by: Igal Liberman 
> ---
>  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 000..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 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -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);
+   }--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html