* [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.