[U-Boot] [PATCH v2 2/2] ARM:AM33XX:Added cpsw support for AM335x EVM
Chandan Nath
chandan.nath at ti.com
Thu Nov 10 13:40:30 CET 2011
#ifdef CONFIG_ARCH_EBSA110
# ifdef machine_arch_type
@@ -42913,6 +42915,19 @@ extern unsigned int __machine_arch_type;
# define machine_is_goflexhome() (0)
#endif
+#ifdef CONFIG_MACH_TIAM335EVM
+# ifdef machine_arch_type
+# undef machine_arch_type
+# define machine_arch_type __machine_arch_type
+# else
+# define machine_arch_type MACH_TYPE_TIAM335EVM
+# endif
+# define machine_is_tiam335evm() (machine_arch_type == MACH_TYPE_TIAM335EVM)
+#else
+# define machine_is_tiam335evm() (0)
+#endif
+
+
/*
* These have not yet been registered
*/
diff --git a/board/ti/am335x/evm.c b/board/ti/am335x/evm.c
index 4530a76..993d2a1 100644
--- a/board/ti/am335x/evm.c
+++ b/board/ti/am335x/evm.c
@@ -57,6 +57,15 @@ int board_init(void)
}
#ifdef CONFIG_DRIVER_TI_CPSW
+/* Atheros PHY report 1000baseX speed incorrectly and so this function
+ * is define to overcome this issue. The original code is kept as
+ * _miiphy_is_1000base_x as an weak alias to this function.
+ */
+int miiphy_is_1000base_x(const char *devname, unsigned char addr)
+{
+ return 0;
+}
+
/* TODO : Check for the board specific PHY */
static void evm_phy_init(char *name, int addr)
{
@@ -159,7 +168,6 @@ int board_eth_init(bd_t *bis)
{
uint8_t mac_addr[6];
uint32_t mac_hi, mac_lo;
- char mac_buf[32];
if (!eth_getenv_enetaddr("ethaddr", mac_addr)) {
debug("<ethaddr> not set. Reading from E-fuse\n");
@@ -174,18 +182,11 @@ int board_eth_init(bd_t *bis)
mac_addr[5] = (mac_lo & 0xFF00) >> 8;
if (is_valid_ether_addr(mac_addr)) {
- sprintf(mac_buf, "%02x:%02x:%02x:%02x:%02x:%02x",
- mac_addr[0], mac_addr[1], mac_addr[2],
- mac_addr[3], mac_addr[4], mac_addr[5]);
-
- printf("ENET MAC address: %s\n", mac_buf);
- setenv("ethaddr", (char *)mac_buf);
+ eth_setenv_enetaddr("ethaddr", mac_addr);
} else {
printf("Caution: Using hardcoded mac address. "
"Set <ethaddr> variable to overcome this.\n");
}
-
- cpsw_eth_set_mac_addr(mac_addr);
}
/* set mii mode to rgmii in in device configure register */
diff --git a/common/miiphyutil.c b/common/miiphyutil.c
index 4551240..dd56fda 100644
--- a/common/miiphyutil.c
+++ b/common/miiphyutil.c
@@ -548,7 +548,7 @@ miiphy_read_failed:
* Return 1 if PHY supports 1000BASE-X, 0 if PHY supports 10BASE-T/100BASE-TX/
* 1000BASE-T, or on error.
*/
-int miiphy_is_1000base_x(const char *devname, unsigned char addr)
+static int __miiphy_is_1000base_x(const char *devname, unsigned char addr)
{
#if defined(CONFIG_PHY_GIGE)
u16 exsr;
@@ -558,12 +558,15 @@ int miiphy_is_1000base_x(const char *devname, unsigned char addr)
"1000BASE-X\n");
return 0;
}
- return 0;
+ return 0 != (exsr & (ESTATUS_1000XF | ESTATUS_1000XH));
#else
return 0;
#endif
}
+int miiphy_is_1000base_x(const char *devname, unsigned char addr)
+ __attribute__((weak, alias("__miiphy_is_1000base_x")));
+
#ifdef CONFIG_SYS_FAULT_ECHO_LINK_DOWN
/*****************************************************************************
*
diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
index c41eeaf..3167509 100644
--- a/drivers/net/cpsw.c
+++ b/drivers/net/cpsw.c
@@ -512,20 +512,6 @@ static inline void soft_reset(void *reg)
;
}
-static u_int8_t cpsw_eth_mac_addr[] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x66 };
-
-/*
- * This function must be called before cpsw_init() if you want to override
- * the default mac address.
- */
-void cpsw_eth_set_mac_addr(const u_int8_t *addr)
-{
- int i;
-
- for (i = 0; i < sizeof(cpsw_eth_mac_addr); i++)
- cpsw_eth_mac_addr[i] = addr[i];
-}
-
#define mac_hi(mac) (((mac)[0] << 0) | ((mac)[1] << 8) | \
((mac)[2] << 16) | ((mac)[3] << 24))
#define mac_lo(mac) (((mac)[4] << 0) | ((mac)[5] << 8))
@@ -732,7 +718,7 @@ static int cpsw_init(struct eth_device *dev, bd_t *bis)
__raw_writel(BIT(priv->host_port), &priv->regs->stat_port_en);
cpsw_ale_port_state(priv, priv->host_port, ALE_PORT_STATE_FORWARD);
- memcpy(priv->dev->enetaddr, cpsw_eth_mac_addr, 6);
+
cpsw_ale_add_ucast(priv, priv->dev->enetaddr, priv->host_port,
ALE_SECURE);
cpsw_ale_add_mcast(priv, NetBcastAddr, 1 << priv->host_port);
More information about the U-Boot
mailing list