All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/3] net: macb: add support for gigabit MAC
@ 2013-04-24  7:59 Bo Shen
  2013-04-24  7:59 ` [U-Boot] [PATCH 1/3] net: macb: using AT91FAMILY replace #ifdeferry Bo Shen
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Bo Shen @ 2013-04-24  7:59 UTC (permalink / raw)
  To: u-boot

This patch add macb support for gigabit MAC, will be used by sama5d3.
Tha patch for sama5d3 is in patchwork:
  http://patchwork.ozlabs.org/patch/226795/

After this patch is applied, will add gmac support for sama5d3

Bo Shen (3):
  net: macb: using AT91FAMILY replace #ifdeferry
  net: macb: using phylib to configure phy device
  net: macb: add support for gigabit MAC

 drivers/net/macb.c |  177 +++++++++++++++++++++++++++++++++++++++-------------
 drivers/net/macb.h |   55 ++++++++++++++--
 2 files changed, 184 insertions(+), 48 deletions(-)

-- 
1.7.9.5

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

* [U-Boot] [PATCH 1/3] net: macb: using AT91FAMILY replace #ifdeferry
  2013-04-24  7:59 [U-Boot] [PATCH 0/3] net: macb: add support for gigabit MAC Bo Shen
@ 2013-04-24  7:59 ` Bo Shen
  2013-05-08 11:30   ` Andreas Bießmann
  2013-06-24 14:57   ` Andreas Bießmann
  2013-04-24  7:59 ` [U-Boot] [PATCH 2/3] net: macb: using phylib to configure phy device Bo Shen
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 10+ messages in thread
From: Bo Shen @ 2013-04-24  7:59 UTC (permalink / raw)
  To: u-boot

Using CONFIG_AT91FAMILY replace #ifdeferry for atmel SoC

Signed-off-by: Bo Shen <voice.shen@atmel.com>
---
 drivers/net/macb.c |   10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index 8bacbda..753fb96 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -466,19 +466,13 @@ static int macb_init(struct eth_device *netdev, bd_t *bd)
 
 	/* choose RMII or MII mode. This depends on the board */
 #ifdef CONFIG_RMII
-#if	defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \
-	defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) || \
-	defined(CONFIG_AT91SAM9G45) || defined(CONFIG_AT91SAM9M10G45) || \
-	defined(CONFIG_AT91SAM9XE) || defined(CONFIG_AT91SAM9X5)
+#ifdef CONFIG_AT91FAMILY
 	macb_writel(macb, USRIO, MACB_BIT(RMII) | MACB_BIT(CLKEN));
 #else
 	macb_writel(macb, USRIO, 0);
 #endif
 #else
-#if	defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \
-	defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) || \
-	defined(CONFIG_AT91SAM9G45) || defined(CONFIG_AT91SAM9M10G45) || \
-	defined(CONFIG_AT91SAM9XE) || defined(CONFIG_AT91SAM9X5)
+#ifdef CONFIG_AT91FAMILY
 	macb_writel(macb, USRIO, MACB_BIT(CLKEN));
 #else
 	macb_writel(macb, USRIO, MACB_BIT(MII));
-- 
1.7.9.5

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

* [U-Boot] [PATCH 2/3] net: macb: using phylib to configure phy device
  2013-04-24  7:59 [U-Boot] [PATCH 0/3] net: macb: add support for gigabit MAC Bo Shen
  2013-04-24  7:59 ` [U-Boot] [PATCH 1/3] net: macb: using AT91FAMILY replace #ifdeferry Bo Shen
@ 2013-04-24  7:59 ` Bo Shen
  2013-08-15 14:36   ` Andreas Bießmann
  2013-04-24  7:59 ` [U-Boot] [PATCH 3/3] net: macb: add support for gigabit MAC Bo Shen
  2013-07-08 16:14 ` [U-Boot] [PATCH 0/3] " Joe Hershberger
  3 siblings, 1 reply; 10+ messages in thread
From: Bo Shen @ 2013-04-24  7:59 UTC (permalink / raw)
  To: u-boot

using phylib to configure phy device in macb driver

Signed-off-by: Bo Shen <voice.shen@atmel.com>
---
 drivers/net/macb.c |   16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index 753fb96..b83d65a 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -103,6 +103,7 @@ struct macb_device {
 	const struct device	*dev;
 	struct eth_device	netdev;
 	unsigned short		phy_addr;
+	struct mii_dev		*bus;
 };
 #define to_macb(_nd) container_of(_nd, struct macb_device, netdev)
 
@@ -163,7 +164,7 @@ static u16 macb_mdio_read(struct macb_device *macb, u8 reg)
 	return MACB_BFEXT(DATA, frame);
 }
 
-#if defined(CONFIG_CMD_MII)
+#if defined(CONFIG_CMD_MII) || defined(CONFIG_PHYLIB)
 
 int macb_miiphy_read(const char *devname, u8 phy_adr, u8 reg, u16 *value)
 {
@@ -372,6 +373,9 @@ static int macb_phy_find(struct macb_device *macb)
 static int macb_phy_init(struct macb_device *macb)
 {
 	struct eth_device *netdev = &macb->netdev;
+#ifdef CONFIG_PHYLIB
+	struct phy_device *phydev;
+#endif
 	u32 ncfgr;
 	u16 phy_id, status, adv, lpa;
 	int media, speed, duplex;
@@ -391,6 +395,13 @@ static int macb_phy_init(struct macb_device *macb)
 		return 0;
 	}
 
+#ifdef CONFIG_PHYLIB
+	phydev->bus = macb->bus;
+	phydev->dev = netdev;
+	phydev->addr = macb->phy_addr;
+	phy_config(phydev);
+#endif
+
 	status = macb_mdio_read(macb, MII_BMSR);
 	if (!(status & BMSR_LSTATUS)) {
 		/* Try to re-negotiate if we don't have link already. */
@@ -574,8 +585,9 @@ int macb_eth_initialize(int id, void *regs, unsigned int phy_addr)
 
 	eth_register(netdev);
 
-#if defined(CONFIG_CMD_MII)
+#if defined(CONFIG_CMD_MII) || defined(CONFIG_PHYLIB)
 	miiphy_register(netdev->name, macb_miiphy_read, macb_miiphy_write);
+	macb->bus = miiphy_get_dev_by_name(netdev->name);
 #endif
 	return 0;
 }
-- 
1.7.9.5

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

* [U-Boot] [PATCH 3/3] net: macb: add support for gigabit MAC
  2013-04-24  7:59 [U-Boot] [PATCH 0/3] net: macb: add support for gigabit MAC Bo Shen
  2013-04-24  7:59 ` [U-Boot] [PATCH 1/3] net: macb: using AT91FAMILY replace #ifdeferry Bo Shen
  2013-04-24  7:59 ` [U-Boot] [PATCH 2/3] net: macb: using phylib to configure phy device Bo Shen
@ 2013-04-24  7:59 ` Bo Shen
  2013-07-08 16:14 ` [U-Boot] [PATCH 0/3] " Joe Hershberger
  3 siblings, 0 replies; 10+ messages in thread
From: Bo Shen @ 2013-04-24  7:59 UTC (permalink / raw)
  To: u-boot

Add gigabit MAC support in macb driver
  - using IP version to distinguish whether MAC is GMAC

Signed-off-by: Bo Shen <voice.shen@atmel.com>
---
 drivers/net/macb.c |  151 +++++++++++++++++++++++++++++++++++++++++-----------
 drivers/net/macb.h |   55 ++++++++++++++++---
 2 files changed, 168 insertions(+), 38 deletions(-)

diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index b83d65a..e4e2a74 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -107,6 +107,11 @@ struct macb_device {
 };
 #define to_macb(_nd) container_of(_nd, struct macb_device, netdev)
 
+static int macb_is_gem(struct macb_device *macb)
+{
+	return MACB_BFEXT(IDNUM, macb_readl(macb, MID)) == 0x2;
+}
+
 static void macb_mdio_write(struct macb_device *macb, u8 reg, u16 value)
 {
 	unsigned long netctl;
@@ -419,28 +424,64 @@ static int macb_phy_init(struct macb_device *macb)
 		printf("%s: link down (status: 0x%04x)\n",
 		       netdev->name, status);
 		return 0;
-	} else {
-		adv = macb_mdio_read(macb, MII_ADVERTISE);
-		lpa = macb_mdio_read(macb, MII_LPA);
-		media = mii_nway_result(lpa & adv);
-		speed = (media & (ADVERTISE_100FULL | ADVERTISE_100HALF)
-			 ? 1 : 0);
-		duplex = (media & ADVERTISE_FULL) ? 1 : 0;
-		printf("%s: link up, %sMbps %s-duplex (lpa: 0x%04x)\n",
-		       netdev->name,
-		       speed ? "100" : "10",
-		       duplex ? "full" : "half",
-		       lpa);
-
-		ncfgr = macb_readl(macb, NCFGR);
-		ncfgr &= ~(MACB_BIT(SPD) | MACB_BIT(FD));
-		if (speed)
-			ncfgr |= MACB_BIT(SPD);
-		if (duplex)
-			ncfgr |= MACB_BIT(FD);
-		macb_writel(macb, NCFGR, ncfgr);
-		return 1;
 	}
+
+	/* First check for GMAC */
+	if (macb_is_gem(macb)) {
+		lpa = macb_mdio_read(macb, MII_STAT1000);
+		if (lpa & (1 << 11)) {
+			speed = 1000;
+			duplex = 1;
+		} else {
+		       if (lpa & (1 << 10)) {
+				speed = 1000;
+				duplex = 1;
+			} else {
+				speed = 0;
+			}
+		}
+
+		if (speed == 1000) {
+			printf("%s: link up, %dMbps %s-duplex (lpa: 0x%04x)\n",
+			       netdev->name,
+			       speed,
+			       duplex ? "full" : "half",
+			       lpa);
+
+			ncfgr = macb_readl(macb, NCFGR);
+			ncfgr &= ~(GEM_BIT(GBE) | MACB_BIT(SPD) | MACB_BIT(FD));
+			if (speed)
+				ncfgr |= GEM_BIT(GBE);
+			if (duplex)
+				ncfgr |= MACB_BIT(FD);
+			macb_writel(macb, NCFGR, ncfgr);
+
+			return 1;
+		}
+	}
+
+	/* fall back for EMAC checking */
+	adv = macb_mdio_read(macb, MII_ADVERTISE);
+	lpa = macb_mdio_read(macb, MII_LPA);
+	media = mii_nway_result(lpa & adv);
+	speed = (media & (ADVERTISE_100FULL | ADVERTISE_100HALF)
+		 ? 1 : 0);
+	duplex = (media & ADVERTISE_FULL) ? 1 : 0;
+	printf("%s: link up, %sMbps %s-duplex (lpa: 0x%04x)\n",
+	       netdev->name,
+	       speed ? "100" : "10",
+	       duplex ? "full" : "half",
+	       lpa);
+
+	ncfgr = macb_readl(macb, NCFGR);
+	ncfgr &= ~(MACB_BIT(SPD) | MACB_BIT(FD));
+	if (speed)
+		ncfgr |= MACB_BIT(SPD);
+	if (duplex)
+		ncfgr |= MACB_BIT(FD);
+	macb_writel(macb, NCFGR, ncfgr);
+
+	return 1;
 }
 
 static int macb_init(struct eth_device *netdev, bd_t *bd)
@@ -475,6 +516,13 @@ static int macb_init(struct eth_device *netdev, bd_t *bd)
 	macb_writel(macb, RBQP, macb->rx_ring_dma);
 	macb_writel(macb, TBQP, macb->tx_ring_dma);
 
+	if (macb_is_gem(macb)) {
+#ifdef CONFIG_RGMII
+		gem_writel(macb, UR, GEM_BIT(RGMII));
+#else
+		gem_writel(macb, UR, 0);
+#endif
+	} else {
 	/* choose RMII or MII mode. This depends on the board */
 #ifdef CONFIG_RMII
 #ifdef CONFIG_AT91FAMILY
@@ -489,6 +537,7 @@ static int macb_init(struct eth_device *netdev, bd_t *bd)
 	macb_writel(macb, USRIO, MACB_BIT(MII));
 #endif
 #endif /* CONFIG_RMII */
+	}
 
 	if (!macb_phy_init(macb))
 		return -1;
@@ -532,11 +581,48 @@ static int macb_write_hwaddr(struct eth_device *dev)
 	return 0;
 }
 
+static u32 macb_mdc_clk_div(int id, struct macb_device *macb)
+{
+	u32 config;
+	unsigned long macb_hz = get_macb_pclk_rate(id);
+
+	if (macb_hz < 20000000)
+		config = MACB_BF(CLK, MACB_CLK_DIV8);
+	else if (macb_hz < 40000000)
+		config = MACB_BF(CLK, MACB_CLK_DIV16);
+	else if (macb_hz < 80000000)
+		config = MACB_BF(CLK, MACB_CLK_DIV32);
+	else
+		config = MACB_BF(CLK, MACB_CLK_DIV64);
+
+	return config;
+}
+
+static u32 gem_mdc_clk_div(int id, struct macb_device *macb)
+{
+	u32 config;
+	unsigned long macb_hz = get_macb_pclk_rate(id);
+
+	if (macb_hz < 20000000)
+		config = GEM_BF(CLK, GEM_CLK_DIV8);
+	else if (macb_hz < 40000000)
+		config = GEM_BF(CLK, GEM_CLK_DIV16);
+	else if (macb_hz < 80000000)
+		config = GEM_BF(CLK, GEM_CLK_DIV32);
+	else if (macb_hz < 120000000)
+		config = GEM_BF(CLK, GEM_CLK_DIV48);
+	else if (macb_hz < 160000000)
+		config = GEM_BF(CLK, GEM_CLK_DIV64);
+	else
+		config = GEM_BF(CLK, GEM_CLK_DIV96);
+
+	return config;
+}
+
 int macb_eth_initialize(int id, void *regs, unsigned int phy_addr)
 {
 	struct macb_device *macb;
 	struct eth_device *netdev;
-	unsigned long macb_hz;
 	u32 ncfgr;
 
 	macb = malloc(sizeof(struct macb_device));
@@ -560,7 +646,11 @@ int macb_eth_initialize(int id, void *regs, unsigned int phy_addr)
 	macb->regs = regs;
 	macb->phy_addr = phy_addr;
 
-	sprintf(netdev->name, "macb%d", id);
+	if (macb_is_gem(macb))
+		sprintf(netdev->name, "gmac%d", id);
+	else
+		sprintf(netdev->name, "macb%d", id);
+
 	netdev->init = macb_init;
 	netdev->halt = macb_halt;
 	netdev->send = macb_send;
@@ -571,15 +661,12 @@ int macb_eth_initialize(int id, void *regs, unsigned int phy_addr)
 	 * Do some basic initialization so that we at least can talk
 	 * to the PHY
 	 */
-	macb_hz = get_macb_pclk_rate(id);
-	if (macb_hz < 20000000)
-		ncfgr = MACB_BF(CLK, MACB_CLK_DIV8);
-	else if (macb_hz < 40000000)
-		ncfgr = MACB_BF(CLK, MACB_CLK_DIV16);
-	else if (macb_hz < 80000000)
-		ncfgr = MACB_BF(CLK, MACB_CLK_DIV32);
-	else
-		ncfgr = MACB_BF(CLK, MACB_CLK_DIV64);
+	if (macb_is_gem(macb)) {
+		ncfgr = gem_mdc_clk_div(id, macb);
+		ncfgr |= GEM_BF(DBW, 1);
+	} else {
+		ncfgr = macb_mdc_clk_div(id, macb);
+	}
 
 	macb_writel(macb, NCFGR, ncfgr);
 
diff --git a/drivers/net/macb.h b/drivers/net/macb.h
index f92a20c..68eef00 100644
--- a/drivers/net/macb.h
+++ b/drivers/net/macb.h
@@ -26,6 +26,7 @@
 #define MACB_NCR				0x0000
 #define MACB_NCFGR				0x0004
 #define MACB_NSR				0x0008
+#define GEM_UR					0x000c
 #define MACB_TSR				0x0014
 #define MACB_RBQP				0x0018
 #define MACB_TBQP				0x001c
@@ -71,6 +72,7 @@
 #define MACB_TPQ				0x00bc
 #define MACB_USRIO				0x00c0
 #define MACB_WOL				0x00c4
+#define MACB_MID				0x00fc
 
 /* Bitfields in NCR */
 #define MACB_LB_OFFSET				0
@@ -138,6 +140,13 @@
 #define MACB_IRXFCS_OFFSET			19
 #define MACB_IRXFCS_SIZE			1
 
+#define GEM_GBE_OFFSET				10
+#define GEM_GBE_SIZE				1
+#define GEM_CLK_OFFSET				18
+#define GEM_CLK_SIZE				3
+#define GEM_DBW_OFFSET				21
+#define GEM_DBW_SIZE				2
+
 /* Bitfields in NSR */
 #define MACB_NSR_LINK_OFFSET			0
 #define MACB_NSR_LINK_SIZE			1
@@ -146,6 +155,10 @@
 #define MACB_IDLE_OFFSET			2
 #define MACB_IDLE_SIZE				1
 
+/* Bitfields in UR */
+#define GEM_RGMII_OFFSET			0
+#define GEM_RGMII_SIZE				1
+
 /* Bitfields in TSR */
 #define MACB_UBR_OFFSET				0
 #define MACB_UBR_SIZE				1
@@ -240,12 +253,25 @@
 #define MACB_WOL_MTI_OFFSET			19
 #define MACB_WOL_MTI_SIZE			1
 
+/* Bitfields in MID */
+#define MACB_IDNUM_OFFSET			16
+#define MACB_IDNUM_SIZE				16
+
+/* Bitfields in DCFG1 */
 /* Constants for CLK */
 #define MACB_CLK_DIV8				0
 #define MACB_CLK_DIV16				1
 #define MACB_CLK_DIV32				2
 #define MACB_CLK_DIV64				3
 
+/* GEM specific constants for CLK */
+#define GEM_CLK_DIV8				0
+#define GEM_CLK_DIV16				1
+#define GEM_CLK_DIV32				2
+#define GEM_CLK_DIV48				3
+#define GEM_CLK_DIV64				4
+#define GEM_CLK_DIV96				5
+
 /* Constants for MAN register */
 #define MACB_MAN_SOF				1
 #define MACB_MAN_WRITE				1
@@ -255,21 +281,38 @@
 /* Bit manipulation macros */
 #define MACB_BIT(name)					\
 	(1 << MACB_##name##_OFFSET)
-#define MACB_BF(name,value)				\
+#define MACB_BF(name, value)				\
 	(((value) & ((1 << MACB_##name##_SIZE) - 1))	\
 	 << MACB_##name##_OFFSET)
-#define MACB_BFEXT(name,value)\
+#define MACB_BFEXT(name, value)\
 	(((value) >> MACB_##name##_OFFSET)		\
 	 & ((1 << MACB_##name##_SIZE) - 1))
-#define MACB_BFINS(name,value,old)			\
+#define MACB_BFINS(name, value, old)			\
 	(((old) & ~(((1 << MACB_##name##_SIZE) - 1)	\
 		    << MACB_##name##_OFFSET))		\
-	 | MACB_BF(name,value))
+	 | MACB_BF(name, value))
+
+#define GEM_BIT(name)					\
+	(1 << GEM_##name##_OFFSET)
+#define GEM_BF(name, value)				\
+	(((value) & ((1 << GEM_##name##_SIZE) - 1))	\
+	 << GEM_##name##_OFFSET)
+#define GEM_BFEXT(name, value)\
+	(((value) >> GEM_##name##_OFFSET)		\
+	 & ((1 << GEM_##name##_SIZE) - 1))
+#define GEM_BFINS(name, value, old)			\
+	(((old) & ~(((1 << GEM_##name##_SIZE) - 1)	\
+		    << GEM_##name##_OFFSET))		\
+	 | GEM_BF(name, value))
 
 /* Register access macros */
-#define macb_readl(port,reg)				\
+#define macb_readl(port, reg)				\
 	readl((port)->regs + MACB_##reg)
-#define macb_writel(port,reg,value)			\
+#define macb_writel(port, reg, value)			\
 	writel((value), (port)->regs + MACB_##reg)
+#define gem_readl(port, reg)				\
+	readl((port)->regs + GEM_##reg)
+#define gem_writel(port, reg, value)			\
+	writel((value), (port)->regs + GEM_##reg)
 
 #endif /* __DRIVERS_MACB_H__ */
-- 
1.7.9.5

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

* [U-Boot] [PATCH 1/3] net: macb: using AT91FAMILY replace #ifdeferry
  2013-04-24  7:59 ` [U-Boot] [PATCH 1/3] net: macb: using AT91FAMILY replace #ifdeferry Bo Shen
@ 2013-05-08 11:30   ` Andreas Bießmann
  2013-06-24 14:57   ` Andreas Bießmann
  1 sibling, 0 replies; 10+ messages in thread
From: Andreas Bießmann @ 2013-05-08 11:30 UTC (permalink / raw)
  To: u-boot

On 04/24/2013 09:59 AM, Bo Shen wrote:
> Using CONFIG_AT91FAMILY replace #ifdeferry for atmel SoC
> 
> Signed-off-by: Bo Shen <voice.shen@atmel.com>

Acked-by: Andreas Bie?mann <andreas.devel@googlemail.com>

> ---
>  drivers/net/macb.c |   10 ++--------
>  1 file changed, 2 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/net/macb.c b/drivers/net/macb.c
> index 8bacbda..753fb96 100644
> --- a/drivers/net/macb.c
> +++ b/drivers/net/macb.c
> @@ -466,19 +466,13 @@ static int macb_init(struct eth_device *netdev, bd_t *bd)
>  
>  	/* choose RMII or MII mode. This depends on the board */
>  #ifdef CONFIG_RMII
> -#if	defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \
> -	defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) || \
> -	defined(CONFIG_AT91SAM9G45) || defined(CONFIG_AT91SAM9M10G45) || \
> -	defined(CONFIG_AT91SAM9XE) || defined(CONFIG_AT91SAM9X5)
> +#ifdef CONFIG_AT91FAMILY
>  	macb_writel(macb, USRIO, MACB_BIT(RMII) | MACB_BIT(CLKEN));
>  #else
>  	macb_writel(macb, USRIO, 0);
>  #endif
>  #else
> -#if	defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \
> -	defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) || \
> -	defined(CONFIG_AT91SAM9G45) || defined(CONFIG_AT91SAM9M10G45) || \
> -	defined(CONFIG_AT91SAM9XE) || defined(CONFIG_AT91SAM9X5)
> +#ifdef CONFIG_AT91FAMILY
>  	macb_writel(macb, USRIO, MACB_BIT(CLKEN));
>  #else
>  	macb_writel(macb, USRIO, MACB_BIT(MII));
> 

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

* [U-Boot] [PATCH 1/3] net: macb: using AT91FAMILY replace #ifdeferry
  2013-04-24  7:59 ` [U-Boot] [PATCH 1/3] net: macb: using AT91FAMILY replace #ifdeferry Bo Shen
  2013-05-08 11:30   ` Andreas Bießmann
@ 2013-06-24 14:57   ` Andreas Bießmann
  2013-06-25  0:13     ` Joe Hershberger
  1 sibling, 1 reply; 10+ messages in thread
From: Andreas Bießmann @ 2013-06-24 14:57 UTC (permalink / raw)
  To: u-boot

Hi Joe,

On 04/24/2013 09:59 AM, Bo Shen wrote:
> Using CONFIG_AT91FAMILY replace #ifdeferry for atmel SoC
> 
> Signed-off-by: Bo Shen <voice.shen@atmel.com>
> ---
>  drivers/net/macb.c |   10 ++--------
>  1 file changed, 2 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/net/macb.c b/drivers/net/macb.c
> index 8bacbda..753fb96 100644
> --- a/drivers/net/macb.c
> +++ b/drivers/net/macb.c
> @@ -466,19 +466,13 @@ static int macb_init(struct eth_device *netdev, bd_t *bd)
>  
>  	/* choose RMII or MII mode. This depends on the board */
>  #ifdef CONFIG_RMII
> -#if	defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \
> -	defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) || \
> -	defined(CONFIG_AT91SAM9G45) || defined(CONFIG_AT91SAM9M10G45) || \
> -	defined(CONFIG_AT91SAM9XE) || defined(CONFIG_AT91SAM9X5)
> +#ifdef CONFIG_AT91FAMILY
>  	macb_writel(macb, USRIO, MACB_BIT(RMII) | MACB_BIT(CLKEN));
>  #else
>  	macb_writel(macb, USRIO, 0);
>  #endif
>  #else
> -#if	defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \
> -	defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) || \
> -	defined(CONFIG_AT91SAM9G45) || defined(CONFIG_AT91SAM9M10G45) || \
> -	defined(CONFIG_AT91SAM9XE) || defined(CONFIG_AT91SAM9X5)
> +#ifdef CONFIG_AT91FAMILY
>  	macb_writel(macb, USRIO, MACB_BIT(CLKEN));
>  #else
>  	macb_writel(macb, USRIO, MACB_BIT(MII));
> 

just realized that this patch is still not in u-boot/master. Will you
apply it (and the rest of the series) for this release?

Best regards

Andreas Bie?mann

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

* [U-Boot] [PATCH 1/3] net: macb: using AT91FAMILY replace #ifdeferry
  2013-06-24 14:57   ` Andreas Bießmann
@ 2013-06-25  0:13     ` Joe Hershberger
  0 siblings, 0 replies; 10+ messages in thread
From: Joe Hershberger @ 2013-06-25  0:13 UTC (permalink / raw)
  To: u-boot

On Mon, Jun 24, 2013 at 9:57 AM, Andreas Bie?mann
<andreas.devel@googlemail.com> wrote:
> Hi Joe,
>
> On 04/24/2013 09:59 AM, Bo Shen wrote:
>> Using CONFIG_AT91FAMILY replace #ifdeferry for atmel SoC
>>
>> Signed-off-by: Bo Shen <voice.shen@atmel.com>
>> ---
>>  drivers/net/macb.c |   10 ++--------
>>  1 file changed, 2 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/net/macb.c b/drivers/net/macb.c
>> index 8bacbda..753fb96 100644
>> --- a/drivers/net/macb.c
>> +++ b/drivers/net/macb.c
>> @@ -466,19 +466,13 @@ static int macb_init(struct eth_device *netdev, bd_t *bd)
>>
>>       /* choose RMII or MII mode. This depends on the board */
>>  #ifdef CONFIG_RMII
>> -#if  defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \
>> -     defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) || \
>> -     defined(CONFIG_AT91SAM9G45) || defined(CONFIG_AT91SAM9M10G45) || \
>> -     defined(CONFIG_AT91SAM9XE) || defined(CONFIG_AT91SAM9X5)
>> +#ifdef CONFIG_AT91FAMILY
>>       macb_writel(macb, USRIO, MACB_BIT(RMII) | MACB_BIT(CLKEN));
>>  #else
>>       macb_writel(macb, USRIO, 0);
>>  #endif
>>  #else
>> -#if  defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \
>> -     defined(CONFIG_AT91SAM9263) || defined(CONFIG_AT91SAM9G20) || \
>> -     defined(CONFIG_AT91SAM9G45) || defined(CONFIG_AT91SAM9M10G45) || \
>> -     defined(CONFIG_AT91SAM9XE) || defined(CONFIG_AT91SAM9X5)
>> +#ifdef CONFIG_AT91FAMILY
>>       macb_writel(macb, USRIO, MACB_BIT(CLKEN));
>>  #else
>>       macb_writel(macb, USRIO, MACB_BIT(MII));
>>
>
> just realized that this patch is still not in u-boot/master. Will you
> apply it (and the rest of the series) for this release?

Yes.  I have a PR ready now.

-Joe

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

* [U-Boot] [PATCH 0/3] net: macb: add support for gigabit MAC
  2013-04-24  7:59 [U-Boot] [PATCH 0/3] net: macb: add support for gigabit MAC Bo Shen
                   ` (2 preceding siblings ...)
  2013-04-24  7:59 ` [U-Boot] [PATCH 3/3] net: macb: add support for gigabit MAC Bo Shen
@ 2013-07-08 16:14 ` Joe Hershberger
  3 siblings, 0 replies; 10+ messages in thread
From: Joe Hershberger @ 2013-07-08 16:14 UTC (permalink / raw)
  To: u-boot

On Wed, Apr 24, 2013 at 2:59 AM, Bo Shen <voice.shen@atmel.com> wrote:
> This patch add macb support for gigabit MAC, will be used by sama5d3.
> Tha patch for sama5d3 is in patchwork:
>   http://patchwork.ozlabs.org/patch/226795/
>
> After this patch is applied, will add gmac support for sama5d3
>
> Bo Shen (3):
>   net: macb: using AT91FAMILY replace #ifdeferry
>   net: macb: using phylib to configure phy device
>   net: macb: add support for gigabit MAC

Applied series, Thanks.
-Joe

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

* [U-Boot] [PATCH 2/3] net: macb: using phylib to configure phy device
  2013-04-24  7:59 ` [U-Boot] [PATCH 2/3] net: macb: using phylib to configure phy device Bo Shen
@ 2013-08-15 14:36   ` Andreas Bießmann
  2013-08-16  1:53     ` Bo Shen
  0 siblings, 1 reply; 10+ messages in thread
From: Andreas Bießmann @ 2013-08-15 14:36 UTC (permalink / raw)
  To: u-boot

Hi Bo,

I'm currently applying your patches. Patch 'arm: atmel: add gmac support
for sama5d3xek board' shows that this particular patch is defective ...
please send a fix or I will not apply the gmac for sama5.

On 04/24/2013 09:59 AM, Bo Shen wrote:
> using phylib to configure phy device in macb driver
> 
> Signed-off-by: Bo Shen <voice.shen@atmel.com>
> ---
>  drivers/net/macb.c |   16 ++++++++++++++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/macb.c b/drivers/net/macb.c
> index 753fb96..b83d65a 100644
> --- a/drivers/net/macb.c
> +++ b/drivers/net/macb.c
> @@ -103,6 +103,7 @@ struct macb_device {
>  	const struct device	*dev;
>  	struct eth_device	netdev;
>  	unsigned short		phy_addr;
> +	struct mii_dev		*bus;
>  };
>  #define to_macb(_nd) container_of(_nd, struct macb_device, netdev)
>  
> @@ -163,7 +164,7 @@ static u16 macb_mdio_read(struct macb_device *macb, u8 reg)
>  	return MACB_BFEXT(DATA, frame);
>  }
>  
> -#if defined(CONFIG_CMD_MII)
> +#if defined(CONFIG_CMD_MII) || defined(CONFIG_PHYLIB)
>  
>  int macb_miiphy_read(const char *devname, u8 phy_adr, u8 reg, u16 *value)
>  {
> @@ -372,6 +373,9 @@ static int macb_phy_find(struct macb_device *macb)
>  static int macb_phy_init(struct macb_device *macb)
>  {
>  	struct eth_device *netdev = &macb->netdev;
> +#ifdef CONFIG_PHYLIB
> +	struct phy_device *phydev;
> +#endif
>  	u32 ncfgr;
>  	u16 phy_id, status, adv, lpa;
>  	int media, speed, duplex;
> @@ -391,6 +395,13 @@ static int macb_phy_init(struct macb_device *macb)
>  		return 0;
>  	}
>  
> +#ifdef CONFIG_PHYLIB
> +	phydev->bus = macb->bus;

phydev is uninitialized here ...

> +	phydev->dev = netdev;
> +	phydev->addr = macb->phy_addr;
> +	phy_config(phydev);
> +#endif
> +
>  	status = macb_mdio_read(macb, MII_BMSR);
>  	if (!(status & BMSR_LSTATUS)) {
>  		/* Try to re-negotiate if we don't have link already. */
> @@ -574,8 +585,9 @@ int macb_eth_initialize(int id, void *regs, unsigned int phy_addr)
>  
>  	eth_register(netdev);
>  
> -#if defined(CONFIG_CMD_MII)
> +#if defined(CONFIG_CMD_MII) || defined(CONFIG_PHYLIB)
>  	miiphy_register(netdev->name, macb_miiphy_read, macb_miiphy_write);
> +	macb->bus = miiphy_get_dev_by_name(netdev->name);
>  #endif
>  	return 0;
>  }
> 

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

* [U-Boot] [PATCH 2/3] net: macb: using phylib to configure phy device
  2013-08-15 14:36   ` Andreas Bießmann
@ 2013-08-16  1:53     ` Bo Shen
  0 siblings, 0 replies; 10+ messages in thread
From: Bo Shen @ 2013-08-16  1:53 UTC (permalink / raw)
  To: u-boot

Hi Andreas,

On 8/15/2013 22:36, Andreas Bie?mann wrote:
> Hi Bo,
>
> I'm currently applying your patches. Patch 'arm: atmel: add gmac support
> for sama5d3xek board' shows that this particular patch is defective ...
> please send a fix or I will not apply the gmac for sama5.

Thanks for point out this.
The fix patch has been sent out.
More information at: http://patchwork.ozlabs.org/patch/267530/ (net: 
macb: fix the building warning)

Best Regards,
Bo Shen

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

end of thread, other threads:[~2013-08-16  1:53 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-04-24  7:59 [U-Boot] [PATCH 0/3] net: macb: add support for gigabit MAC Bo Shen
2013-04-24  7:59 ` [U-Boot] [PATCH 1/3] net: macb: using AT91FAMILY replace #ifdeferry Bo Shen
2013-05-08 11:30   ` Andreas Bießmann
2013-06-24 14:57   ` Andreas Bießmann
2013-06-25  0:13     ` Joe Hershberger
2013-04-24  7:59 ` [U-Boot] [PATCH 2/3] net: macb: using phylib to configure phy device Bo Shen
2013-08-15 14:36   ` Andreas Bießmann
2013-08-16  1:53     ` Bo Shen
2013-04-24  7:59 ` [U-Boot] [PATCH 3/3] net: macb: add support for gigabit MAC Bo Shen
2013-07-08 16:14 ` [U-Boot] [PATCH 0/3] " Joe Hershberger

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.