All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] net: fec fixes
@ 2010-02-05 18:56 Amit Kucheria
  2010-02-05 18:56 ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Amit Kucheria
  2010-02-10 21:06 ` [PATCH 0/3] net: fec fixes David Miller
  0 siblings, 2 replies; 6+ messages in thread
From: Amit Kucheria @ 2010-02-05 18:56 UTC (permalink / raw)
  To: List Linux Kernel
  Cc: davem, netdev, s.hauer, gerg, u.kleine-koenig, amit.kucheria

Some fixes to the fec driver to get it to work on the Freescale i.MX5 SoC
platform

Amit Kucheria (2):
  fec: Add LAN8700 phy support
  fec: Add ARCH_MX5 as a dependency

Rob Herring (1):
  fec: fix uninitialized rx buffer usage

 drivers/net/Kconfig |    3 +-
 drivers/net/fec.c   |   78 ++++++++++++++++++++++++++++++++------------------
 2 files changed, 52 insertions(+), 29 deletions(-)


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/3] fec: fix uninitialized rx buffer usage
  2010-02-05 18:56 [PATCH 0/3] net: fec fixes Amit Kucheria
@ 2010-02-05 18:56 ` Amit Kucheria
  2010-02-05 18:56   ` [PATCH 2/3] fec: Add LAN8700 phy support Amit Kucheria
  2010-02-08  2:55   ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Greg Ungerer
  2010-02-10 21:06 ` [PATCH 0/3] net: fec fixes David Miller
  1 sibling, 2 replies; 6+ messages in thread
From: Amit Kucheria @ 2010-02-05 18:56 UTC (permalink / raw)
  To: List Linux Kernel
  Cc: Rob Herring, davem, netdev, s.hauer, gerg, u.kleine-koenig,
	amit.kucheria

From: Rob Herring <r.herring@freescale.com>

The fec driver was enabling receive buffer descriptor without allocating
the buffers. Make sure the buffer descriptors are initialized to not
start receiving packets.

Open also calls fec_restart after the rx buffers are allocated. With the code
in fec_restart, it zeroes out the buffer descriptors that have just been
setup.

Signed-off-by: Rob Herring <r.herring@freescale.com>
Signed-off-by: Amit Kucheria <amit.kucheria@canonical.com>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
---
 drivers/net/fec.c |   57 +++++++++++++++++++++++++++--------------------------
 1 files changed, 29 insertions(+), 28 deletions(-)

diff --git a/drivers/net/fec.c b/drivers/net/fec.c
index 16a1d58..9a8743d 100644
--- a/drivers/net/fec.c
+++ b/drivers/net/fec.c
@@ -1658,6 +1658,7 @@ static int fec_enet_init(struct net_device *dev, int index)
 {
 	struct fec_enet_private *fep = netdev_priv(dev);
 	struct bufdesc *cbd_base;
+	struct bufdesc *bdp;
 	int i;
 
 	/* Allocate memory for buffer descriptors. */
@@ -1710,6 +1711,34 @@ static int fec_enet_init(struct net_device *dev, int index)
 	/* Set MII speed to 2.5 MHz */
 	fep->phy_speed = ((((clk_get_rate(fep->clk) / 2 + 4999999)
 					/ 2500000) / 2) & 0x3F) << 1;
+
+	/* Initialize the receive buffer descriptors. */
+	bdp = fep->rx_bd_base;
+	for (i = 0; i < RX_RING_SIZE; i++) {
+
+		/* Initialize the BD for every fragment in the page. */
+		bdp->cbd_sc = 0;
+		bdp++;
+	}
+
+	/* Set the last buffer to wrap */
+	bdp--;
+	bdp->cbd_sc |= BD_SC_WRAP;
+
+	/* ...and the same for transmit */
+	bdp = fep->tx_bd_base;
+	for (i = 0; i < TX_RING_SIZE; i++) {
+
+		/* Initialize the BD for every fragment in the page. */
+		bdp->cbd_sc = 0;
+		bdp->cbd_bufaddr = 0;
+		bdp++;
+	}
+
+	/* Set the last buffer to wrap */
+	bdp--;
+	bdp->cbd_sc |= BD_SC_WRAP;
+
 	fec_restart(dev, 0);
 
 	/* Queue up command to detect the PHY and initialize the
@@ -1730,7 +1759,6 @@ static void
 fec_restart(struct net_device *dev, int duplex)
 {
 	struct fec_enet_private *fep = netdev_priv(dev);
-	struct bufdesc *bdp;
 	int i;
 
 	/* Whack a reset.  We should wait for this. */
@@ -1768,33 +1796,6 @@ fec_restart(struct net_device *dev, int duplex)
 		}
 	}
 
-	/* Initialize the receive buffer descriptors. */
-	bdp = fep->rx_bd_base;
-	for (i = 0; i < RX_RING_SIZE; i++) {
-
-		/* Initialize the BD for every fragment in the page. */
-		bdp->cbd_sc = BD_ENET_RX_EMPTY;
-		bdp++;
-	}
-
-	/* Set the last buffer to wrap */
-	bdp--;
-	bdp->cbd_sc |= BD_SC_WRAP;
-
-	/* ...and the same for transmit */
-	bdp = fep->tx_bd_base;
-	for (i = 0; i < TX_RING_SIZE; i++) {
-
-		/* Initialize the BD for every fragment in the page. */
-		bdp->cbd_sc = 0;
-		bdp->cbd_bufaddr = 0;
-		bdp++;
-	}
-
-	/* Set the last buffer to wrap */
-	bdp--;
-	bdp->cbd_sc |= BD_SC_WRAP;
-
 	/* Enable MII mode */
 	if (duplex) {
 		/* MII enable / FD enable */
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/3] fec: Add LAN8700 phy support
  2010-02-05 18:56 ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Amit Kucheria
@ 2010-02-05 18:56   ` Amit Kucheria
  2010-02-05 18:56     ` [PATCH 3/3] fec: Add ARCH_MX5 as a dependency Amit Kucheria
  2010-02-08  2:55   ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Greg Ungerer
  1 sibling, 1 reply; 6+ messages in thread
From: Amit Kucheria @ 2010-02-05 18:56 UTC (permalink / raw)
  To: List Linux Kernel
  Cc: davem, netdev, s.hauer, gerg, u.kleine-koenig, amit.kucheria

The i.MX51 babbage board has a FEC ethernet controller with this phy.

In the long term we should resurrect the phylib patches for fec.

Signed-off-by: Amit Kucheria <amit.kucheria@canonical.com>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
---
 drivers/net/fec.c |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/drivers/net/fec.c b/drivers/net/fec.c
index 9a8743d..5d0d332 100644
--- a/drivers/net/fec.c
+++ b/drivers/net/fec.c
@@ -1128,6 +1128,26 @@ static phy_info_t phy_info_dp83848= {
 	},
 };
 
+static phy_info_t phy_info_lan8700 = {
+	0x0007C0C,
+	"LAN8700",
+	(const phy_cmd_t []) { /* config */
+		{ mk_mii_read(MII_REG_CR), mii_parse_cr },
+		{ mk_mii_read(MII_REG_ANAR), mii_parse_anar },
+		{ mk_mii_end, }
+	},
+	(const phy_cmd_t []) { /* startup */
+		{ mk_mii_write(MII_REG_CR, 0x1200), NULL }, /* autonegotiate */
+		{ mk_mii_read(MII_REG_SR), mii_parse_sr },
+		{ mk_mii_end, }
+	},
+	(const phy_cmd_t []) { /* act_int */
+		{ mk_mii_end, }
+	},
+	(const phy_cmd_t []) { /* shutdown */
+		{ mk_mii_end, }
+	},
+};
 /* ------------------------------------------------------------------------- */
 
 static phy_info_t const * const phy_info[] = {
@@ -1137,6 +1157,7 @@ static phy_info_t const * const phy_info[] = {
 	&phy_info_am79c874,
 	&phy_info_ks8721bl,
 	&phy_info_dp83848,
+	&phy_info_lan8700,
 	NULL
 };
 
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/3] fec: Add ARCH_MX5 as a dependency
  2010-02-05 18:56   ` [PATCH 2/3] fec: Add LAN8700 phy support Amit Kucheria
@ 2010-02-05 18:56     ` Amit Kucheria
  0 siblings, 0 replies; 6+ messages in thread
From: Amit Kucheria @ 2010-02-05 18:56 UTC (permalink / raw)
  To: List Linux Kernel
  Cc: davem, netdev, s.hauer, gerg, u.kleine-koenig, amit.kucheria

i.MX51 babbage board has a FEC ethernet controller

Signed-off-by: Amit Kucheria <amit.kucheria@canonical.com>
---
 drivers/net/Kconfig |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index dd9a09c..515658e 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -1883,7 +1883,8 @@ config 68360_ENET
 
 config FEC
 	bool "FEC ethernet controller (of ColdFire and some i.MX CPUs)"
-	depends on M523x || M527x || M5272 || M528x || M520x || M532x || MACH_MX27 || ARCH_MX35 || ARCH_MX25
+	depends on M523x || M527x || M5272 || M528x || M520x || M532x || \
+		MACH_MX27 || ARCH_MX35 || ARCH_MX25 || ARCH_MX5
 	help
 	  Say Y here if you want to use the built-in 10/100 Fast ethernet
 	  controller on some Motorola ColdFire and Freescale i.MX processors.
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/3] fec: fix uninitialized rx buffer usage
  2010-02-05 18:56 ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Amit Kucheria
  2010-02-05 18:56   ` [PATCH 2/3] fec: Add LAN8700 phy support Amit Kucheria
@ 2010-02-08  2:55   ` Greg Ungerer
  1 sibling, 0 replies; 6+ messages in thread
From: Greg Ungerer @ 2010-02-08  2:55 UTC (permalink / raw)
  To: Amit Kucheria
  Cc: List Linux Kernel, Rob Herring, davem, netdev, s.hauer, gerg,
	u.kleine-koenig, amit.kucheria

Amit Kucheria wrote:
> From: Rob Herring <r.herring@freescale.com>
> 
> The fec driver was enabling receive buffer descriptor without allocating
> the buffers. Make sure the buffer descriptors are initialized to not
> start receiving packets.
> 
> Open also calls fec_restart after the rx buffers are allocated. With the code
> in fec_restart, it zeroes out the buffer descriptors that have just been
> setup.
> 
> Signed-off-by: Rob Herring <r.herring@freescale.com>
> Signed-off-by: Amit Kucheria <amit.kucheria@canonical.com>
> Acked-by: Grant Likely <grant.likely@secretlab.ca>

Acked-by: Greg Ungerer <gerg@uclinux.org>


> ---
>  drivers/net/fec.c |   57 +++++++++++++++++++++++++++--------------------------
>  1 files changed, 29 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/net/fec.c b/drivers/net/fec.c
> index 16a1d58..9a8743d 100644
> --- a/drivers/net/fec.c
> +++ b/drivers/net/fec.c
> @@ -1658,6 +1658,7 @@ static int fec_enet_init(struct net_device *dev, int index)
>  {
>  	struct fec_enet_private *fep = netdev_priv(dev);
>  	struct bufdesc *cbd_base;
> +	struct bufdesc *bdp;
>  	int i;
>  
>  	/* Allocate memory for buffer descriptors. */
> @@ -1710,6 +1711,34 @@ static int fec_enet_init(struct net_device *dev, int index)
>  	/* Set MII speed to 2.5 MHz */
>  	fep->phy_speed = ((((clk_get_rate(fep->clk) / 2 + 4999999)
>  					/ 2500000) / 2) & 0x3F) << 1;
> +
> +	/* Initialize the receive buffer descriptors. */
> +	bdp = fep->rx_bd_base;
> +	for (i = 0; i < RX_RING_SIZE; i++) {
> +
> +		/* Initialize the BD for every fragment in the page. */
> +		bdp->cbd_sc = 0;
> +		bdp++;
> +	}
> +
> +	/* Set the last buffer to wrap */
> +	bdp--;
> +	bdp->cbd_sc |= BD_SC_WRAP;
> +
> +	/* ...and the same for transmit */
> +	bdp = fep->tx_bd_base;
> +	for (i = 0; i < TX_RING_SIZE; i++) {
> +
> +		/* Initialize the BD for every fragment in the page. */
> +		bdp->cbd_sc = 0;
> +		bdp->cbd_bufaddr = 0;
> +		bdp++;
> +	}
> +
> +	/* Set the last buffer to wrap */
> +	bdp--;
> +	bdp->cbd_sc |= BD_SC_WRAP;
> +
>  	fec_restart(dev, 0);
>  
>  	/* Queue up command to detect the PHY and initialize the
> @@ -1730,7 +1759,6 @@ static void
>  fec_restart(struct net_device *dev, int duplex)
>  {
>  	struct fec_enet_private *fep = netdev_priv(dev);
> -	struct bufdesc *bdp;
>  	int i;
>  
>  	/* Whack a reset.  We should wait for this. */
> @@ -1768,33 +1796,6 @@ fec_restart(struct net_device *dev, int duplex)
>  		}
>  	}
>  
> -	/* Initialize the receive buffer descriptors. */
> -	bdp = fep->rx_bd_base;
> -	for (i = 0; i < RX_RING_SIZE; i++) {
> -
> -		/* Initialize the BD for every fragment in the page. */
> -		bdp->cbd_sc = BD_ENET_RX_EMPTY;
> -		bdp++;
> -	}
> -
> -	/* Set the last buffer to wrap */
> -	bdp--;
> -	bdp->cbd_sc |= BD_SC_WRAP;
> -
> -	/* ...and the same for transmit */
> -	bdp = fep->tx_bd_base;
> -	for (i = 0; i < TX_RING_SIZE; i++) {
> -
> -		/* Initialize the BD for every fragment in the page. */
> -		bdp->cbd_sc = 0;
> -		bdp->cbd_bufaddr = 0;
> -		bdp++;
> -	}
> -
> -	/* Set the last buffer to wrap */
> -	bdp--;
> -	bdp->cbd_sc |= BD_SC_WRAP;
> -
>  	/* Enable MII mode */
>  	if (duplex) {
>  		/* MII enable / FD enable */


-- 
------------------------------------------------------------------------
Greg Ungerer  --  Principal Engineer        EMAIL:     gerg@snapgear.com
SnapGear Group, McAfee                      PHONE:       +61 7 3435 2888
8 Gardner Close                             FAX:         +61 7 3217 5323
Milton, QLD, 4064, Australia                WEB: http://www.SnapGear.com

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/3] net: fec fixes
  2010-02-05 18:56 [PATCH 0/3] net: fec fixes Amit Kucheria
  2010-02-05 18:56 ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Amit Kucheria
@ 2010-02-10 21:06 ` David Miller
  1 sibling, 0 replies; 6+ messages in thread
From: David Miller @ 2010-02-10 21:06 UTC (permalink / raw)
  To: amit.kucheria
  Cc: linux-kernel, netdev, s.hauer, gerg, u.kleine-koenig, amit.kucheria

From: Amit Kucheria <amit.kucheria@canonical.com>
Date: Fri,  5 Feb 2010 10:56:19 -0800

> Some fixes to the fec driver to get it to work on the Freescale i.MX5 SoC
> platform
> 
> Amit Kucheria (2):
>   fec: Add LAN8700 phy support
>   fec: Add ARCH_MX5 as a dependency
> 
> Rob Herring (1):
>   fec: fix uninitialized rx buffer usage

All applied to net-next-2.6, thanks.


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2010-02-10 21:05 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-05 18:56 [PATCH 0/3] net: fec fixes Amit Kucheria
2010-02-05 18:56 ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Amit Kucheria
2010-02-05 18:56   ` [PATCH 2/3] fec: Add LAN8700 phy support Amit Kucheria
2010-02-05 18:56     ` [PATCH 3/3] fec: Add ARCH_MX5 as a dependency Amit Kucheria
2010-02-08  2:55   ` [PATCH 1/3] fec: fix uninitialized rx buffer usage Greg Ungerer
2010-02-10 21:06 ` [PATCH 0/3] net: fec fixes David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.