Some PHY like Intel LXT971A need extra delay after
command issued before MII status register can be read
-- Ethernet address:
- CONFIG_ETHADDR
- CONFIG_ETH1ADDR
- CONFIG_ETH2ADDR
- CONFIG_ETH3ADDR
- CONFIG_ETH4ADDR
- CONFIG_ETH5ADDR
-
- Define a default value for Ethernet address to use
- for the respective Ethernet interface, in case this
- is not determined automatically.
-
- IP address:
CONFIG_IPADDR
completely disabled. Anybody can change or delete
these parameters.
- Alternatively, if you #define _both_ CONFIG_ETHADDR
- _and_ CONFIG_OVERWRITE_ETHADDR_ONCE, a default
+ Alternatively, if you define _both_ an ethaddr in the
+ default env _and_ CONFIG_OVERWRITE_ETHADDR_ONCE, a default
Ethernet address is installed in the environment,
which can be changed exactly ONCE by the user. [The
serial# is unaffected by this, i. e. it remains
warning is printed.
o If neither SROM nor the environment contain a MAC address, an error
- is raised.
+ is raised. If CONFIG_NET_RANDOM_ETHADDR is defined, then in this case
+ a random, locally-assigned MAC is used.
If Ethernet drivers implement the 'write_hwaddr' function, valid MAC addresses
will be programmed into hardware as part of the initialization process. This
}
#ifdef CONFIG_BFIN_MAC
-static void board_init_enetaddr(uchar *mac_addr)
-{
- puts("Warning: Generating 'random' MAC address\n");
- net_random_ethaddr(mac_addr);
- eth_setenv_enetaddr("ethaddr", mac_addr);
-}
-
int board_eth_init(bd_t *bis)
{
int retry = 3;
/* miscellaneous platform dependent initialisations */
int misc_init_r(void)
{
-#ifdef CONFIG_BFIN_MAC
- uchar enetaddr[6];
- if (!eth_getenv_enetaddr("ethaddr", enetaddr))
- board_init_enetaddr(enetaddr);
-#endif
-
gpio_cfi_flash_init();
init_tlv320aic31();
init_mute_pin();
#if defined(CONFIG_BFIN_MAC)
static void board_init_enetaddr(uchar *mac_addr)
{
-#ifdef CONFIG_SYS_NO_FLASH
-# define USE_MAC_IN_FLASH 0
-#else
-# define USE_MAC_IN_FLASH 1
-#endif
- bool valid_mac = false;
-
- if (USE_MAC_IN_FLASH) {
- /* we cram the MAC in the last flash sector */
- uchar *board_mac_addr = (uchar *)0x203F0096;
- if (is_valid_ethaddr(board_mac_addr)) {
- memcpy(mac_addr, board_mac_addr, 6);
- valid_mac = true;
- }
- }
-
- if (!valid_mac) {
- puts("Warning: Generating 'random' MAC address\n");
- net_random_ethaddr(mac_addr);
+#ifndef CONFIG_SYS_NO_FLASH
+ /* we cram the MAC in the last flash sector */
+ uchar *board_mac_addr = (uchar *)0x203F0096;
+ if (is_valid_ethaddr(board_mac_addr)) {
+ memcpy(mac_addr, board_mac_addr, 6);
+ eth_setenv_enetaddr("ethaddr", mac_addr);
}
-
- eth_setenv_enetaddr("ethaddr", mac_addr);
+#endif
}
/* Only the first run of boards had a KSZ switch */
#ifdef CONFIG_BFIN_MAC
static void board_init_enetaddr(uchar *mac_addr)
{
-#ifdef CONFIG_SYS_NO_FLASH
-# define USE_MAC_IN_FLASH 0
-#else
-# define USE_MAC_IN_FLASH 1
-#endif
- bool valid_mac = false;
-
- if (USE_MAC_IN_FLASH) {
- /* we cram the MAC in the last flash sector */
- uchar *board_mac_addr = (uchar *)0x203F0096;
- if (is_valid_ethaddr(board_mac_addr)) {
- memcpy(mac_addr, board_mac_addr, 6);
- valid_mac = true;
- }
- }
-
- if (!valid_mac) {
- puts("Warning: Generating 'random' MAC address\n");
- net_random_ethaddr(mac_addr);
+#ifndef CONFIG_SYS_NO_FLASH
+ /* we cram the MAC in the last flash sector */
+ uchar *board_mac_addr = (uchar *)0x203F0096;
+ if (is_valid_ethaddr(board_mac_addr)) {
+ memcpy(mac_addr, board_mac_addr, 6);
+ eth_setenv_enetaddr("ethaddr", mac_addr);
}
-
- eth_setenv_enetaddr("ethaddr", mac_addr);
+#endif
}
int board_eth_init(bd_t *bis)
#ifdef CONFIG_BFIN_MAC
static void board_init_enetaddr(uchar *mac_addr)
{
- bool valid_mac = false;
-
/* the MAC is stored in OTP memory page 0xDF */
uint32_t ret;
uint64_t otp_mac;
mac_addr[ret] = otp_mac_p[5 - ret];
if (is_valid_ethaddr(mac_addr))
- valid_mac = true;
- }
-
- if (!valid_mac) {
- puts("Warning: Generating 'random' MAC address\n");
- net_random_ethaddr(mac_addr);
+ eth_setenv_enetaddr("ethaddr", mac_addr);
}
-
- eth_setenv_enetaddr("ethaddr", mac_addr);
}
int board_eth_init(bd_t *bis)
}
#ifdef CONFIG_BFIN_MAC
-static void board_init_enetaddr(uchar *mac_addr)
-{
- puts("Warning: Generating 'random' MAC address\n");
- net_random_ethaddr(mac_addr);
- eth_setenv_enetaddr("ethaddr", mac_addr);
-}
-
int board_eth_init(bd_t *bis)
{
return bfin_EMAC_initialize(bis);
}
#endif
-
-int misc_init_r(void)
-{
-#ifdef CONFIG_BFIN_MAC
- uchar enetaddr[6];
- if (!eth_getenv_enetaddr("ethaddr", enetaddr))
- board_init_enetaddr(enetaddr);
-#endif
-
- return 0;
-}
}
#ifdef CONFIG_BFIN_MAC
-static void board_init_enetaddr(uchar *mac_addr)
-{
- puts("Warning: Generating 'random' MAC address\n");
- net_random_ethaddr(mac_addr);
- eth_setenv_enetaddr("ethaddr", mac_addr);
-}
-
int board_eth_init(bd_t *bis)
{
return bfin_EMAC_initialize(bis);
}
#endif
-
-int misc_init_r(void)
-{
-#ifdef CONFIG_BFIN_MAC
- uchar enetaddr[6];
- if (!eth_getenv_enetaddr("ethaddr", enetaddr))
- board_init_enetaddr(enetaddr);
-#endif
-
- return 0;
-}
}
#ifdef CONFIG_BFIN_MAC
-static void board_init_enetaddr(uchar *mac_addr)
-{
- puts("Warning: Generating 'random' MAC address\n");
- net_random_ethaddr(mac_addr);
- eth_setenv_enetaddr("ethaddr", mac_addr);
-}
-
int board_eth_init(bd_t *bis)
{
return bfin_EMAC_initialize(bis);
}
#endif
-
-int misc_init_r(void)
-{
-#ifdef CONFIG_BFIN_MAC
- uchar enetaddr[6];
- if (!eth_getenv_enetaddr("ethaddr", enetaddr))
- board_init_enetaddr(enetaddr);
-#endif
-
- return 0;
-}
#ifdef CONFIG_BFIN_MAC
static void board_init_enetaddr(uchar *mac_addr)
{
-#ifdef CONFIG_SYS_NO_FLASH
-# define USE_MAC_IN_FLASH 0
-#else
-# define USE_MAC_IN_FLASH 1
-#endif
- bool valid_mac = false;
-
- if (USE_MAC_IN_FLASH) {
- /* we cram the MAC in the last flash sector */
- uchar *board_mac_addr = (uchar *)0x203F0000;
- if (is_valid_ethaddr(board_mac_addr)) {
- memcpy(mac_addr, board_mac_addr, 6);
- valid_mac = true;
- }
- }
-
- if (!valid_mac) {
- puts("Warning: Generating 'random' MAC address\n");
- net_random_ethaddr(mac_addr);
+#ifndef CONFIG_SYS_NO_FLASH
+ /* we cram the MAC in the last flash sector */
+ uchar *board_mac_addr = (uchar *)0x203F0000;
+ if (is_valid_ethaddr(board_mac_addr)) {
+ memcpy(mac_addr, board_mac_addr, 6);
+ eth_setenv_enetaddr("ethaddr", mac_addr);
}
-
- eth_setenv_enetaddr("ethaddr", mac_addr);
+#endif
}
int board_eth_init(bd_t *bis)
uchar enetaddr[6];
printf("Entering rescue mode..\n");
-#ifdef CONFIG_RANDOM_MACADDR
- if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {
- net_random_ethaddr(enetaddr);
- if (eth_setenv_enetaddr("ethaddr", enetaddr)) {
- printf("Failed to set ethernet address\n");
- set_led(LED_ALARM_BLINKING);
- return;
- }
- }
-#endif
setenv("bootsource", "rescue");
}
#ifdef CONFIG_BFIN_MAC
static void board_init_enetaddr(uchar *mac_addr)
{
- bool valid_mac = false;
-
/* the MAC is stored in OTP memory page 0xDF */
uint32_t ret;
uint64_t otp_mac;
mac_addr[ret] = otp_mac_p[5 - ret];
if (is_valid_ethaddr(mac_addr))
- valid_mac = true;
- }
-
- if (!valid_mac) {
- puts("Warning: Generating 'random' MAC address\n");
- net_random_ethaddr(mac_addr);
+ eth_setenv_enetaddr("ethaddr", mac_addr);
}
-
- eth_setenv_enetaddr("ethaddr", mac_addr);
}
int board_eth_init(bd_t *bis)
return 0;
}
-static void board_init_enetaddr(char *var)
-{
- uchar enetaddr[6];
-
- if (eth_getenv_enetaddr(var, enetaddr))
- return;
-
- printf("Warning: %s: generating 'random' MAC address\n", var);
- net_random_ethaddr(enetaddr);
- eth_setenv_enetaddr(var, enetaddr);
-}
-
#ifndef CONFIG_BFIN_MAC
# define bfin_EMAC_initialize(x) 1
#endif
int misc_init_r(void)
{
- board_init_enetaddr("ethaddr");
- board_init_enetaddr("eth1addr");
-
gpio_cfi_flash_init();
return 0;
return 0;
}
-static void board_init_enetaddr(char *var)
-{
- uchar enetaddr[6];
-
- if (eth_getenv_enetaddr(var, enetaddr))
- return;
-
- printf("Warning: %s: generating 'random' MAC address\n", var);
- net_random_ethaddr(enetaddr);
- eth_setenv_enetaddr(var, enetaddr);
-}
-
#ifndef CONFIG_BFIN_MAC
# define bfin_EMAC_initialize(x) 1
#endif
int misc_init_r(void)
{
- board_init_enetaddr("ethaddr");
- board_init_enetaddr("eth1addr");
-
gpio_cfi_flash_init();
return 0;
#ifdef CONFIG_BFIN_MAC
static void board_init_enetaddr(uchar *mac_addr)
{
-#ifdef CONFIG_SYS_NO_FLASH
-# define USE_MAC_IN_FLASH 0
-#else
-# define USE_MAC_IN_FLASH 1
-#endif
- bool valid_mac = false;
-
- if (USE_MAC_IN_FLASH) {
- /* we cram the MAC in the last flash sector */
- uchar *board_mac_addr = (uchar *)0x202F0000;
- if (is_valid_ethaddr(board_mac_addr)) {
- memcpy(mac_addr, board_mac_addr, 6);
- valid_mac = true;
- }
- }
-
- if (!valid_mac) {
- puts("Warning: Generating 'random' MAC address\n");
- net_random_ethaddr(mac_addr);
+#ifndef CONFIG_SYS_NO_FLASH
+ /* we cram the MAC in the last flash sector */
+ uchar *board_mac_addr = (uchar *)0x202F0000;
+ if (is_valid_ethaddr(board_mac_addr)) {
+ memcpy(mac_addr, board_mac_addr, 6);
+ eth_setenv_enetaddr("ethaddr", mac_addr);
}
-
- eth_setenv_enetaddr("ethaddr", mac_addr);
+#endif
}
int board_eth_init(bd_t *bis)
{
return dm9000_initialize(bis);
}
-
-int misc_init_r(void)
-{
- uchar enetaddr[6];
- if (!eth_getenv_enetaddr("ethaddr", enetaddr)) {
- puts("Warning: Generating 'random' MAC address\n");
- net_random_ethaddr(enetaddr);
- eth_setenv_enetaddr("ethaddr", enetaddr);
- }
-
- return 0;
-}
#endif
}
#if defined(CONFIG_BFIN_MAC)
-static void board_init_enetaddr(uchar *mac_addr)
-{
- bool valid_mac = false;
-
-#if 0
- /* the MAC is stored in OTP memory page 0xDF */
- uint32_t ret;
- uint64_t otp_mac;
-
- ret = bfrom_OtpRead(0xDF, OTP_LOWER_HALF, &otp_mac);
- if (!(ret & OTP_MASTER_ERROR)) {
- uchar *otp_mac_p = (uchar *)&otp_mac;
-
- for (ret = 0; ret < 6; ++ret)
- mac_addr[ret] = otp_mac_p[5 - ret];
-
- if (is_valid_ethaddr(mac_addr))
- valid_mac = true;
- }
-#endif
-
- if (!valid_mac) {
- puts("Warning: Generating 'random' MAC address\n");
- net_random_ethaddr(mac_addr);
- }
-
- eth_setenv_enetaddr("ethaddr", mac_addr);
-}
-
int board_eth_init(bd_t *bis)
{
return bfin_EMAC_initialize(bis);
}
#endif
-int misc_init_r(void)
-{
-#ifdef CONFIG_BFIN_MAC
- uchar enetaddr[6];
- if (!eth_getenv_enetaddr("ethaddr", enetaddr))
- board_init_enetaddr(enetaddr);
-#endif
-
- return 0;
-}
-
#ifdef CONFIG_BFIN_SDH
int board_mmc_init(bd_t *bis)
{
return 0;
}
-static void board_init_enetaddr(char *var)
-{
- uchar enetaddr[6];
-
- if (eth_getenv_enetaddr(var, enetaddr))
- return;
-
- printf("Warning: %s: generating 'random' MAC address\n", var);
- net_random_ethaddr(enetaddr);
- eth_setenv_enetaddr(var, enetaddr);
-}
-
#ifndef CONFIG_BFIN_MAC
# define bfin_EMAC_initialize(x) 1
#endif
int misc_init_r(void)
{
- board_init_enetaddr("ethaddr");
- board_init_enetaddr("eth1addr");
-
gpio_cfi_flash_init();
return 0;
CONFIG_BLACKFIN=y
-CONFIG_TARGET_BCT_BRETTL2=y
+CONFIG_NET=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_BF518F_EZBRD=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_BF526_EZBRD=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_BF527_EZKIT=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_BF537_MINOTAUR=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_BF537_PNAV=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_BF537_SRV1=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_BF537_STAMP=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_CM_BF527=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_CM_BF537E=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_CM_BF537U=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_DNP5370=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_IP04=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
CONFIG_ARM=y
CONFIG_KIRKWOOD=y
CONFIG_TARGET_LSXL=y
+CONFIG_NET=y
CONFIG_SYS_EXTRA_OPTIONS="LSCHLV2"
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_ARM=y
CONFIG_KIRKWOOD=y
CONFIG_TARGET_LSXL=y
+CONFIG_NET=y
CONFIG_SYS_EXTRA_OPTIONS="LSXHL"
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_TCM_BF518=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
CONFIG_BLACKFIN=y
+CONFIG_NET=y
CONFIG_TARGET_TCM_BF537=y
+CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_CC_OPTIMIZE_LIBS_FOR_SPEED=y
- board-specific location (eeprom, dedicated flash, ...)
Note: only used when mandatory due to hardware design etc...
- - environment ("ethaddr", "eth1addr", ...) (see CONFIG_ETHADDR)
+ - environment ("ethaddr", "eth1addr", ...)
Note: this is the preferred way to permanently store MAC addresses
- ethernet data (struct eth_device -> enetaddr)
environment variable will be used unchanged.
If the environment variable is not set, it will be initialized from
eth_device->enetaddr, and a warning will be printed.
+ If both are invalid and CONFIG_NET_RANDOM_ETHADDR is defined, a random,
+ locally-assigned MAC is written to eth_device->enetaddr.
4. Program the address into hardware if the following conditions are met:
a) The relevant driver has a 'write_addr' function
b) The user hasn't set an 'ethmacskip' environment variable
debug("Enabling BCM SF2 Ethernet.\n");
- /* Set MAC address from env */
- if (bcm_sf2_eth_write_hwaddr(dev) != 0) {
- error("%s: MAC set error when opening !\n", __func__);
- return -1;
- }
-
eth->enable_mac();
/* enable tx and rx DMA */
mdelay(100);
};
- /* Soft reset above clears HW address registers.
- * So we have to set it here once again */
- _dw_write_hwaddr(priv, enetaddr);
-
rx_descs_init(priv);
tx_descs_init(priv);
printf("MAC: %pM\n", dev->enetaddr);
if (!is_valid_ethaddr(dev->enetaddr)) {
-#ifdef CONFIG_RANDOM_MACADDR
- printf("Bad MAC address (uninitialized EEPROM?), randomizing\n");
- net_random_ethaddr(dev->enetaddr);
- printf("MAC: %pM\n", dev->enetaddr);
-#else
printf("WARNING: Bad MAC address (uninitialized EEPROM?)\n");
-#endif
}
/* fill device MAC address registers */
dev->send = ftmac110_send;
dev->recv = ftmac110_recv;
- if (!eth_getenv_enetaddr_by_index("eth", card_nr, dev->enetaddr))
- net_random_ethaddr(dev->enetaddr);
-
/* allocate tx descriptors (it must be 16 bytes aligned) */
chip->txd = dma_alloc_coherent(
sizeof(struct ftmac110_desc) * CFG_TXDES_NUM, &chip->txd_dma);
#include <common.h>
#include <command.h>
+#include <errno.h>
#include <net.h>
#include <netdev.h>
#include <malloc.h>
}
}
} else {
- /* HW Address not found in environment, Set default HW address */
- addr[0] = GRETH_HWADDR_0; /* MSB */
- addr[1] = GRETH_HWADDR_1;
- addr[2] = GRETH_HWADDR_2;
- addr[3] = GRETH_HWADDR_3;
- addr[4] = GRETH_HWADDR_4;
- addr[5] = GRETH_HWADDR_5; /* LSB */
+ /* No ethaddr set */
+ return -EINVAL;
}
/* set and remember MAC address */
static int get_rom_mac(struct eth_device *dev, unsigned char *v_rom_mac)
{
-#ifdef HARDCODE_MAC /* used for testing or to supress run time warnings */
- char hw_mac_addr[] = { 0x02, 0x80, 0xad, 0x20, 0x31, 0xb8 };
-
- memcpy (v_rom_mac, hw_mac_addr, 6);
- return (1);
-#else
int i;
SMC_SELECT_BANK(dev, 1);
for (i=0; i<6; i++)
v_rom_mac[i] = SMC_inb(dev, LAN91C96_IA0 + i);
}
return (1);
-#endif
}
/* Structure to detect the device IDs */
return 1;
}
-static int macb_write_hwaddr(struct eth_device *dev);
static int macb_init(struct eth_device *netdev, bd_t *bd)
{
struct macb_device *macb = to_macb(netdev);
#endif /* CONFIG_RMII */
}
- /* update the ethaddr */
- if (is_valid_ethaddr(netdev->enetaddr)) {
- macb_write_hwaddr(netdev);
- } else {
- printf("%s: mac address is not valid\n", netdev->name);
- return -1;
- }
-
if (!macb_phy_init(macb))
return -1;
#include <linux/err.h>
#include <linux/compiler.h>
+DECLARE_GLOBAL_DATA_PTR;
+
/* Generic PHY support and helper functions */
/**
INIT_LIST_HEAD(&drv->list);
list_add_tail(&drv->list, &phy_drivers);
+#ifdef CONFIG_NEEDS_MANUAL_RELOC
+ if (drv->probe)
+ drv->probe += gd->reloc_off;
+ if (drv->config)
+ drv->config += gd->reloc_off;
+ if (drv->startup)
+ drv->startup += gd->reloc_off;
+ if (drv->shutdown)
+ drv->shutdown += gd->reloc_off;
+ if (drv->readext)
+ drv->readext += gd->reloc_off;
+ if (drv->writeext)
+ drv->writeext += gd->reloc_off;
+#endif
return 0;
}
/* RTL8211x PHY Interrupt Status Register */
#define MIIM_RTL8211x_PHY_INSR 0x13
+/* RTL8211F PHY Status Register */
+#define MIIM_RTL8211F_PHY_STATUS 0x1a
+#define MIIM_RTL8211F_AUTONEG_ENABLE 0x1000
+#define MIIM_RTL8211F_PHYSTAT_SPEED 0x0030
+#define MIIM_RTL8211F_PHYSTAT_GBIT 0x0020
+#define MIIM_RTL8211F_PHYSTAT_100 0x0010
+#define MIIM_RTL8211F_PHYSTAT_DUPLEX 0x0008
+#define MIIM_RTL8211F_PHYSTAT_SPDDONE 0x0800
+#define MIIM_RTL8211F_PHYSTAT_LINK 0x0004
+
+#define MIIM_RTL8211F_PAGE_SELECT 0x1f
+#define MIIM_RTL8211F_TX_DELAY 0x100
+
/* RealTek RTL8211x */
static int rtl8211x_config(struct phy_device *phydev)
{
return 0;
}
+static int rtl8211f_config(struct phy_device *phydev)
+{
+ u16 reg;
+
+ phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET);
+
+ if (phydev->interface == PHY_INTERFACE_MODE_RGMII) {
+ /* enable TXDLY */
+ phy_write(phydev, MDIO_DEVAD_NONE,
+ MIIM_RTL8211F_PAGE_SELECT, 0xd08);
+ reg = phy_read(phydev, MDIO_DEVAD_NONE, 0x11);
+ reg |= MIIM_RTL8211F_TX_DELAY;
+ phy_write(phydev, MDIO_DEVAD_NONE, 0x11, reg);
+ /* restore to default page 0 */
+ phy_write(phydev, MDIO_DEVAD_NONE,
+ MIIM_RTL8211F_PAGE_SELECT, 0x0);
+ }
+
+ genphy_config_aneg(phydev);
+
+ return 0;
+}
+
static int rtl8211x_parse_status(struct phy_device *phydev)
{
unsigned int speed;
return 0;
}
+static int rtl8211f_parse_status(struct phy_device *phydev)
+{
+ unsigned int speed;
+ unsigned int mii_reg;
+ int i = 0;
+
+ phy_write(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PAGE_SELECT, 0xa43);
+ mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, MIIM_RTL8211F_PHY_STATUS);
+
+ phydev->link = 1;
+ while (!(mii_reg & MIIM_RTL8211F_PHYSTAT_LINK)) {
+ if (i > PHY_AUTONEGOTIATE_TIMEOUT) {
+ puts(" TIMEOUT !\n");
+ phydev->link = 0;
+ break;
+ }
+
+ if ((i++ % 1000) == 0)
+ putc('.');
+ udelay(1000);
+ mii_reg = phy_read(phydev, MDIO_DEVAD_NONE,
+ MIIM_RTL8211F_PHY_STATUS);
+ }
+
+ if (mii_reg & MIIM_RTL8211F_PHYSTAT_DUPLEX)
+ phydev->duplex = DUPLEX_FULL;
+ else
+ phydev->duplex = DUPLEX_HALF;
+
+ speed = (mii_reg & MIIM_RTL8211F_PHYSTAT_SPEED);
+
+ switch (speed) {
+ case MIIM_RTL8211F_PHYSTAT_GBIT:
+ phydev->speed = SPEED_1000;
+ break;
+ case MIIM_RTL8211F_PHYSTAT_100:
+ phydev->speed = SPEED_100;
+ break;
+ default:
+ phydev->speed = SPEED_10;
+ }
+
+ return 0;
+}
+
static int rtl8211x_startup(struct phy_device *phydev)
{
/* Read the Status (2x to make sure link is right) */
return 0;
}
+static int rtl8211f_startup(struct phy_device *phydev)
+{
+ /* Read the Status (2x to make sure link is right) */
+ genphy_update_link(phydev);
+ rtl8211f_parse_status(phydev);
+
+ return 0;
+}
+
/* Support for RTL8211B PHY */
static struct phy_driver RTL8211B_driver = {
.name = "RealTek RTL8211B",
.shutdown = &genphy_shutdown,
};
+/* Support for RTL8211F PHY */
+static struct phy_driver RTL8211F_driver = {
+ .name = "RealTek RTL8211F",
+ .uid = 0x1cc916,
+ .mask = 0xffffff,
+ .features = PHY_GBIT_FEATURES,
+ .config = &rtl8211f_config,
+ .startup = &rtl8211f_startup,
+ .shutdown = &genphy_shutdown,
+};
+
int phy_realtek_init(void)
{
phy_register(&RTL8211B_driver);
phy_register(&RTL8211E_driver);
+ phy_register(&RTL8211F_driver);
phy_register(&RTL8211DN_driver);
return 0;
the IEEE, at:
http://standards.ieee.org/regauth/oui/index.shtml
-To change your MAC address, there can not be a MAC address predefined in
-U-Boot. To ensure that this does not occur, check your
-include/configs/<board_name>.h file, and check to see that the following
-settings are _not_ or commented out there.
-
-#define HARDCODE_MAC 1
-#define CONFIG_ETHADDR 02:80:ad:20:31:b8
-
-The purpose of HARDCODE_MAC is to hardcode the MAC address in software,
-(not what we want), or to preset it to 02:80:ad:20:31:b8 (not what we
-want either).
-
-You can check this in a running U-Boot, by doing a power cycle, then
-before U-Boot tries to do any networking, running the 'printenv' command
-
- BOOT> printenv
-
- ethaddr=02:80:ad:20:31:b8
-
-If you see the 'ethaddr' variable show up, like the above, you need to
-recompile U-Boot, with the above settings commented out of the
-include/configs/<board_name>.h file.
-
2. Running the smc91111_eeprom program
---------------------------------------------------------------------
#define CONFIG_UDP_CHECKSUM
#ifdef CONFIG_MCFFEC
-# define CONFIG_ETHADDR 00:e0:0c:bc:e5:60
# define CONFIG_IPADDR 192.162.1.2
# define CONFIG_NETMASK 255.255.255.0
# define CONFIG_SERVERIP 192.162.1.1
# define CONFIG_GATEWAYIP 192.162.1.1
-# define CONFIG_OVERWRITE_ETHADDR_ONCE
#endif /* CONFIG_MCFFEC */
#define CONFIG_HOSTNAME M5208EVBe
#define CONFIG_BOOTDELAY 1 /* autoboot after 5 seconds */
#define CONFIG_BOOTFILE "u-boot.bin"
#ifdef CONFIG_MCFFEC
-# define CONFIG_ETHADDR 00:e0:0c:bc:e5:60
# define CONFIG_IPADDR 192.162.1.2
# define CONFIG_NETMASK 255.255.255.0
# define CONFIG_SERVERIP 192.162.1.1
# define CONFIG_GATEWAYIP 192.162.1.1
-# define CONFIG_OVERWRITE_ETHADDR_ONCE
#endif /* FEC_ENET */
#define CONFIG_HOSTNAME M5235EVB
#endif
#ifdef CONFIG_MCFFEC
-# define CONFIG_ETHADDR 00:e0:0c:bc:e5:60
# define CONFIG_IPADDR 192.162.1.2
# define CONFIG_NETMASK 255.255.255.0
# define CONFIG_SERVERIP 192.162.1.1
# define CONFIG_GATEWAYIP 192.162.1.1
-# define CONFIG_OVERWRITE_ETHADDR_ONCE
#endif /* CONFIG_MCFFEC */
#define CONFIG_HOSTNAME M5272C3
#define CONFIG_BOOTDELAY 5
#ifdef CONFIG_MCFFEC
-# define CONFIG_ETHADDR 00:e0:0c:bc:e5:60
# define CONFIG_IPADDR 192.162.1.2
# define CONFIG_NETMASK 255.255.255.0
# define CONFIG_SERVERIP 192.162.1.1
# define CONFIG_GATEWAYIP 192.162.1.1
-# define CONFIG_OVERWRITE_ETHADDR_ONCE
#endif /* CONFIG_MCFFEC */
#define CONFIG_HOSTNAME M5282EVB
#define CONFIG_UDP_CHECKSUM
#ifdef CONFIG_MCFFEC
-# define CONFIG_ETHADDR 00:e0:0c:bc:e5:60
-# define CONFIG_ETH1ADDR 00:e0:0c:bc:e5:61
# define CONFIG_IPADDR 192.162.1.2
# define CONFIG_NETMASK 255.255.255.0
# define CONFIG_SERVERIP 192.162.1.1
# define CONFIG_GATEWAYIP 192.162.1.1
-# define CONFIG_OVERWRITE_ETHADDR_ONCE
#endif /* FEC_ENET */
#define CONFIG_HOSTNAME M53017
#define CONFIG_UDP_CHECKSUM
#ifdef CONFIG_MCFFEC
-# define CONFIG_ETHADDR 00:e0:0c:bc:e5:60
# define CONFIG_IPADDR 192.162.1.2
# define CONFIG_NETMASK 255.255.255.0
# define CONFIG_SERVERIP 192.162.1.1
# define CONFIG_GATEWAYIP 192.162.1.1
-# define CONFIG_OVERWRITE_ETHADDR_ONCE
#endif /* FEC_ENET */
#define CONFIG_HOSTNAME M5329EVB
#define CONFIG_UDP_CHECKSUM
#ifdef CONFIG_MCFFEC
-# define CONFIG_ETHADDR 00:e0:0c:bc:e5:60
# define CONFIG_IPADDR 192.162.1.2
# define CONFIG_NETMASK 255.255.255.0
# define CONFIG_SERVERIP 192.162.1.1
# define CONFIG_GATEWAYIP 192.162.1.1
-# define CONFIG_OVERWRITE_ETHADDR_ONCE
#endif /* FEC_ENET */
#define CONFIG_HOSTNAME M5373EVB
"::eth0:off:rw console=ttyS0,115200"
#endif
-#define CONFIG_ETHADDR 00:e0:0c:bc:e5:60
-#define CONFIG_ETH1ADDR 00:e0:0c:bc:e5:61
#define CONFIG_ETHPRIME "FEC0"
#define CONFIG_IPADDR 192.168.1.2
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_SERVERIP 192.168.1.1
#define CONFIG_GATEWAYIP 192.168.1.1
-#define CONFIG_OVERWRITE_ETHADDR_ONCE
#define CONFIG_SYS_FEC_BUF_USE_SRAM
/* If CONFIG_SYS_DISCOVER_PHY is not defined - hardcoded */
#ifndef CONFIG_SYS_DISCOVER_PHY
# define CONFIG_BOOTDELAY 1 /* autoboot after 5 seconds */
# define CONFIG_BOOTARGS "root=/dev/mtdblock1 rw rootfstype=jffs2 ip=none mtdparts=physmap-flash.0:2M(kernel)ro,-(jffs2)"
-# define CONFIG_ETHADDR 00:e0:0c:bc:e5:60
# define CONFIG_ETHPRIME "FEC0"
# define CONFIG_IPADDR 192.162.1.2
# define CONFIG_NETMASK 255.255.255.0
# define CONFIG_SERVERIP 192.162.1.1
# define CONFIG_GATEWAYIP 192.162.1.1
-# define CONFIG_OVERWRITE_ETHADDR_ONCE
/* If CONFIG_SYS_DISCOVER_PHY is not defined - hardcoded */
# ifndef CONFIG_SYS_DISCOVER_PHY
# define CONFIG_BOOTDELAY 1 /* autoboot after 5 seconds */
# define CONFIG_BOOTARGS "root=/dev/mtdblock1 rw rootfstype=jffs2 ip=none mtdparts=physmap-flash.0:5M(kernel)ro,-(jffs2)"
-# define CONFIG_ETHADDR 00:e0:0c:bc:e5:60
-# define CONFIG_ETH1ADDR 00:e0:0c:bc:e5:61
# define CONFIG_ETHPRIME "FEC0"
# define CONFIG_IPADDR 192.162.1.2
# define CONFIG_NETMASK 255.255.255.0
# define CONFIG_SERVERIP 192.162.1.1
# define CONFIG_GATEWAYIP 192.162.1.1
-# define CONFIG_OVERWRITE_ETHADDR_ONCE
/* If CONFIG_SYS_DISCOVER_PHY is not defined - hardcoded */
# ifndef CONFIG_SYS_DISCOVER_PHY
# endif
# endif /* CONFIG_SYS_DISCOVER_PHY */
-# define CONFIG_ETHADDR 00:e0:0c:bc:e5:60
-# define CONFIG_ETH1ADDR 00:e0:0c:bc:e5:61
# define CONFIG_IPADDR 192.162.1.2
# define CONFIG_NETMASK 255.255.255.0
# define CONFIG_SERVERIP 192.162.1.1
# define CONFIG_GATEWAYIP 192.162.1.1
-# define CONFIG_OVERWRITE_ETHADDR_ONCE
#endif
#define CONFIG_UDP_CHECKSUM
#ifdef CONFIG_MCFFEC
-# define CONFIG_ETHADDR 00:e0:0c:bc:e5:60
# define CONFIG_IPADDR 192.162.1.2
# define CONFIG_NETMASK 255.255.255.0
# define CONFIG_SERVERIP 192.162.1.1
# define CONFIG_GATEWAYIP 192.162.1.1
-# define CONFIG_OVERWRITE_ETHADDR_ONCE
#endif /* FEC_ENET */
#define CONFIG_HOSTNAME M547xEVB
# endif
# endif /* CONFIG_SYS_DISCOVER_PHY */
-# define CONFIG_ETHADDR 00:e0:0c:bc:e5:60
-# define CONFIG_ETH1ADDR 00:e0:0c:bc:e5:61
# define CONFIG_IPADDR 192.162.1.2
# define CONFIG_NETMASK 255.255.255.0
# define CONFIG_SERVERIP 192.162.1.1
# define CONFIG_GATEWAYIP 192.162.1.1
-# define CONFIG_OVERWRITE_ETHADDR_ONCE
#endif
/* The mac addresses for all ethernet interface */
#if defined(CONFIG_TSEC_ENET)
#define CONFIG_HAS_ETH0
-#define CONFIG_ETHADDR 00:E0:0C:02:00:FD
#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 00:E0:0C:02:01:FD
#define CONFIG_HAS_ETH2
-#define CONFIG_ETH2ADDR 00:E0:0C:02:02:FD
#define CONFIG_HAS_ETH3
-#define CONFIG_ETH3ADDR 00:E0:0C:02:03:FD
#endif
#define CONFIG_IPADDR 192.168.1.254
* Please refer to doc/README.mpc85xx for more info.
*
* Make sure you change the MAC address and other network params first,
- * search for CONFIG_ETHADDR, CONFIG_SERVERIP, etc in this file.
+ * search for CONFIG_SERVERIP, etc in this file.
*/
#ifndef __CONFIG_H
/* The mac addresses for all ethernet interface */
#if defined(CONFIG_TSEC_ENET)
#define CONFIG_HAS_ETH0
-#define CONFIG_ETHADDR 00:E0:0C:00:00:FD
#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 00:E0:0C:00:01:FD
#define CONFIG_HAS_ETH2
-#define CONFIG_ETH2ADDR 00:E0:0C:00:02:FD
#endif
#define CONFIG_IPADDR 192.168.1.253
/* The mac addresses for all ethernet interface */
#if defined(CONFIG_TSEC_ENET)
#define CONFIG_HAS_ETH0
-#define CONFIG_ETHADDR 00:E0:0C:00:00:FD
#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 00:E0:0C:00:01:FD
#define CONFIG_HAS_ETH2
-#define CONFIG_ETH2ADDR 00:E0:0C:00:02:FD
#endif
#define CONFIG_IPADDR 192.168.1.253
/* The mac addresses for all ethernet interface */
#if defined(CONFIG_TSEC_ENET)
#define CONFIG_HAS_ETH0
-#define CONFIG_ETHADDR 00:E0:0C:02:00:FD
#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 00:E0:0C:02:01:FD
#endif
#define CONFIG_IPADDR 192.168.1.251
/*
* Environment Configuration
*/
-
-/* The mac addresses for all ethernet interface */
#if defined(CONFIG_TSEC_ENET)
#define CONFIG_HAS_ETH0
-#define CONFIG_ETHADDR 00:E0:0C:00:00:FD
#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 00:E0:0C:00:01:FD
#define CONFIG_HAS_ETH2
-#define CONFIG_ETH2ADDR 00:E0:0C:00:02:FD
#define CONFIG_HAS_ETH3
-#define CONFIG_ETH3ADDR 00:E0:0C:00:03:FD
#endif
#define CONFIG_IPADDR 192.168.1.253
/*
* Environment Configuration
*/
-
-/* The mac addresses for all ethernet interface */
#if defined(CONFIG_TSEC_ENET)
#define CONFIG_HAS_ETH0
-#define CONFIG_ETHADDR 00:E0:0C:00:00:FD
#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 00:E0:0C:00:01:FD
#define CONFIG_HAS_ETH2
-#define CONFIG_ETH2ADDR 00:E0:0C:00:02:FD
#endif
#define CONFIG_IPADDR 192.168.1.253
* Please refer to doc/README.mpc85xx for more info.
*
* Make sure you change the MAC address and other network params first,
- * search for CONFIG_ETHADDR, CONFIG_SERVERIP, etc in this file.
+ * search for CONFIG_SERVERIP, etc. in this file.
*/
#ifndef __CONFIG_H
/*
* Environment Configuration
*/
-
-/* The mac addresses for all ethernet interface */
#if defined(CONFIG_TSEC_ENET) || defined(CONFIG_ETHER_ON_FCC)
#define CONFIG_HAS_ETH0
-#define CONFIG_ETHADDR 00:E0:0C:00:00:FD
#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 00:E0:0C:00:01:FD
#define CONFIG_HAS_ETH2
-#define CONFIG_ETH2ADDR 00:E0:0C:00:02:FD
#define CONFIG_HAS_ETH3
-#define CONFIG_ETH3ADDR 00:E0:0C:00:03:FD
#endif
#define CONFIG_IPADDR 192.168.1.253
/* The mac addresses for all ethernet interface */
#if defined(CONFIG_TSEC_ENET) || defined(CONFIG_UEC_ETH)
#define CONFIG_HAS_ETH0
-#define CONFIG_ETHADDR 00:E0:0C:00:00:FD
#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 00:E0:0C:00:01:FD
#define CONFIG_HAS_ETH2
-#define CONFIG_ETH2ADDR 00:E0:0C:00:02:FD
#define CONFIG_HAS_ETH3
-#define CONFIG_ETH3ADDR 00:E0:0C:00:03:FD
#endif
#define CONFIG_IPADDR 192.168.1.253
/*
* Environment Configuration
*/
-
-/* The mac addresses for all ethernet interface */
#if defined(CONFIG_TSEC_ENET)
#define CONFIG_HAS_ETH0
-#define CONFIG_ETHADDR 00:E0:0C:02:00:FD
#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 00:E0:0C:02:01:FD
#define CONFIG_HAS_ETH2
-#define CONFIG_ETH2ADDR 00:E0:0C:02:02:FD
#define CONFIG_HAS_ETH3
-#define CONFIG_ETH3ADDR 00:E0:0C:02:03:FD
#endif
#define CONFIG_IPADDR 192.168.1.254
#define CONFIG_ULI526X
#ifdef CONFIG_ULI526X
-#define CONFIG_ETHADDR 00:E0:0C:00:00:01
#endif
/************************************************************
* MPC8641HPCN board configuration file
*
* Make sure you change the MAC address and other network params first,
- * search for CONFIG_ETHADDR, CONFIG_SERVERIP, etc in this file.
+ * search for CONFIG_SERVERIP, etc. in this file.
*/
#ifndef __CONFIG_H
* Environment Configuration
*/
-/* The mac addresses for all ethernet interface */
-#if defined(CONFIG_TSEC_ENET)
-#define CONFIG_ETHADDR 00:E0:0C:00:00:01
-#define CONFIG_ETH1ADDR 00:E0:0C:00:01:FD
-#define CONFIG_ETH2ADDR 00:E0:0C:00:02:FD
-#define CONFIG_ETH3ADDR 00:E0:0C:00:03:FD
-#endif
-
#define CONFIG_HAS_ETH0 1
#define CONFIG_HAS_ETH1 1
#define CONFIG_HAS_ETH2 1
"setenv bootargs ${bootargs} no_ethaddr;" \
"fi\0" \
"hostname=CPUP0\0" \
- "ethaddr=00:00:00:00:00:00\0" \
"netdev=eth0\0" \
"bootcmd=run bootcmd_nor\0" \
""
#define CONFIG_GATEWAYIP 192.168.233.1
#define CONFIG_SERVERIP 192.168.233.53
#define CONFIG_ROOTPATH "/romfs/brettl2"
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
#define CONFIG_LIB_RAND
#endif
#endif
#define CONFIG_HOSTNAME bf518f-ezbrd
#define CONFIG_PHY_ADDR 3
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
#define CONFIG_LIB_RAND
/*
#define CONFIG_NETCONSOLE 1
#endif
#define CONFIG_HOSTNAME bf526-ezbrd
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
#define CONFIG_LIB_RAND
/*
#define CONFIG_NETCONSOLE 1
#endif
#define CONFIG_HOSTNAME bf527-ezkit
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
#define CONFIG_LIB_RAND
/*
SSYNC(); \
} while (0)
#define CONFIG_HOSTNAME bf533-ezkit
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
/*
SSYNC(); \
} while (0)
#define CONFIG_HOSTNAME bf533-stamp
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:b8 */
/* I2C */
#define CONFIG_SYS_AUTOLOAD "no"
#define CONFIG_ROOTPATH "/romfs"
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:42 */
#define CONFIG_LIB_RAND
#define CONFIG_SYS_LONGHELP 1
#define CONFIG_CMDLINE_EDITING 1
#define CONFIG_ENV_OVERWRITE 1
-#define CONFIG_MISC_INIT_R
#define CONFIG_BAUDRATE 57600
#define CONFIG_UART_CONSOLE 0
#define CONFIG_RMII
#endif
#define CONFIG_HOSTNAME bf537-pnav
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:24:21:18 */
#define CONFIG_LIB_RAND
/*
* Misc Settings
*/
#define CONFIG_BAUDRATE 115200
-#define CONFIG_MISC_INIT_R
#define CONFIG_RTC_BFIN
#define CONFIG_UART_CONSOLE 0
#define CONFIG_SYS_AUTOLOAD "no"
#define CONFIG_ROOTPATH "/romfs"
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:42 */
#define CONFIG_LIB_RAND
/*
#define CONFIG_SYS_LONGHELP 1
#define CONFIG_CMDLINE_EDITING 1
#define CONFIG_ENV_OVERWRITE 1
-#define CONFIG_MISC_INIT_R
#define CONFIG_BAUDRATE 115200
#define CONFIG_UART_CONSOLE 0
#define CONFIG_NETCONSOLE 1
#endif
#define CONFIG_HOSTNAME bf537-stamp
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
#define CONFIG_LIB_RAND
/*
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x20310300
#define CONFIG_HOSTNAME bf538f-ezkit
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
/*
#define CONFIG_SMC911X_BASE 0x24000000
#define CONFIG_SMC911X_16_BIT
#define CONFIG_HOSTNAME bf548-ezkit
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
/*
#define CONFIG_HOSTNAME bf561-acvilon
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
-
/*
* Flash Settings
#define CONFIG_SMC91111_BASE 0x2C010300
#define CONFIG_SMC_USE_32_BIT 1
#define CONFIG_HOSTNAME bf561-ezkit
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
/*
#define CONFIG_HOSTNAME blackstamp
#define CONFIG_ROOTPATH "/checkout/uClinux-dist/romfs"
#define CONFIG_SYS_AUTOLOAD "no"
-
-/* To remove hardcoding and enable MAC storage in EEPROM */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:b8 */
#endif
#define CONFIG_ENV_IS_IN_SPI_FLASH
#define CFG_AUTOLOAD "no"
#define CONFIG_CMD_DHCP
#define CONFIG_CMD_PING
-#define CONFIG_ENV_OVERWRITE 1 /* enable changing MAC at runtime */
-/* Comment out hardcoded MAC to enable MAC storage in EEPROM */
-/* # define CONFIG_ETHADDR ff:ee:dd:cc:bb:aa */
/*
* SDRAM settings & memory map
#endif
#define CONFIG_HOSTNAME br4
#define CONFIG_TFTP_BLOCKSIZE 4404
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 5c:38:1a:80:a7:00 */
-
/*
* Flash Settings
#define CONFIG_NETCONSOLE 1
#endif
#define CONFIG_HOSTNAME cm-bf527
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
#define CONFIG_LIB_RAND
/*
#define CONFIG_SMC91111 1
#define CONFIG_SMC91111_BASE 0x20200300
#define CONFIG_HOSTNAME cm-bf533
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
/*
#define CONFIG_NETCONSOLE 1
#endif
#define CONFIG_HOSTNAME cm-bf537e
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
#define CONFIG_LIB_RAND
/*
#define CONFIG_NETCONSOLE 1
#endif
#define CONFIG_HOSTNAME cm-bf537u
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
#define CONFIG_LIB_RAND
/*
#define CONFIG_SMC911X_BASE 0x24000000
#define CONFIG_SMC911X_16_BIT
#define CONFIG_HOSTNAME cm-bf548
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:24:31:91 */
/*
#define CONFIG_SMC911X_BASE 0x24008000 /* AMS1 */
#define CONFIG_SMC911X_16_BIT
#define CONFIG_HOSTNAME cm-bf561
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:cf */
/*
/* User network settings */
-#define CONFIG_ETHADDR 00:00:00:00:00:09 /* default ethernet MAC addr. */
#define CONFIG_IPADDR 192.168.100.2 /* default board IP address */
#define CONFIG_SERVERIP 192.168.100.1 /* default tftp server IP address */
#endif
#endif
-#define CONFIG_ETHADDR DE:AD:BE:EF:01:01 /* Ethernet address */
-
#define CONFIG_BOOTDELAY 2 /* autoboot after 2 seconds */
#define CONFIG_BAUDRATE 115200
"rootpath=/opt/eldk/arm\0" \
"splashpos=230,180\0" \
"testrfspath=/opt/eldk/test_arm\0" \
- "tempmac=setenv ethaddr 02:ea:20:ff:ff:ff\0" \
"nandargs=setenv bootargs rootfstype=ubifs ro chk_data_crc " \
"ubi.mtd=${as} root=ubi0:rootfs\0" \
"nandrwargs=setenv bootargs rootfstype=ubifs rw chk_data_crc " \
"fi;" \
"else echo U-Boot not downloaded..exiting;fi\0" \
"ubootupd_nand=echo run load_magic,run load_nand,run upd;\0" \
- "bootcmd=run tempmac;run net_testrfs\0"
+ "bootcmd=run net_testrfs\0"
#endif /* __CONFIG_H */
/*#define CONFIG_SHOW_ACTIVITY*/
#define CONFIG_NET_RETRY_COUNT 10 /* # of retries */
-#define CONFIG_ETHADDR 00:00:7a:cc:00:13
#define CONFIG_PHY_ADDR 0x00
/*
/* USE GRETH Ethernet Driver */
#define CONFIG_GRETH 1
-/* Default GRETH Ethernet HARDWARE address */
-#define GRETH_HWADDR_0 0x00
-#define GRETH_HWADDR_1 0x00
-#define GRETH_HWADDR_2 0x7a
-#define GRETH_HWADDR_3 0xcc
-#define GRETH_HWADDR_4 0x00
-#define GRETH_HWADDR_5 0x13
-#endif
-
-#define CONFIG_ETHADDR 00:00:7a:cc:00:13
#define CONFIG_PHY_ADDR 0x00
/*
*/
#define CONFIG_GRETH 1
-/* Default GRETH Ethernet HARDWARE address */
-#define GRETH_HWADDR_0 0x00
-#define GRETH_HWADDR_1 0x00
-#define GRETH_HWADDR_2 0x7a
-#define GRETH_HWADDR_3 0xcc
-#define GRETH_HWADDR_4 0x00
-#define GRETH_HWADDR_5 0x12
-
-#define CONFIG_ETHADDR 00:00:7a:cc:00:12
#define CONFIG_PHY_ADDR 0x00
/*
"rootpath=/export/roofs\0" \
"scratch=40000000\0" \
"getkernel=tftpboot $(scratch) $(bootfile)\0" \
- "ethaddr=00:00:7A:CC:00:12\0" \
"bootargs=console=ttyS0,38400" \
""
#define CONFIG_NETMASK 255.255.255.0
*/
#define CONFIG_GRETH 1
-/* Default HARDWARE address */
-#define GRETH_HWADDR_0 0x00
-#define GRETH_HWADDR_1 0x00
-#define GRETH_HWADDR_2 0x7A
-#define GRETH_HWADDR_3 0xcc
-#define GRETH_HWADDR_4 0x00
-#define GRETH_HWADDR_5 0x12
-
-#define CONFIG_ETHADDR 00:00:7a:cc:00:12
-
/*
* Define CONFIG_GRETH_10MBIT to force GRETH at 10Mb/s
*/
"rootpath=/export/roofs\0" \
"scratch=40000000\0" \
"getkernel=tftpboot $(scratch) $(bootfile)\0" \
- "ethaddr=00:00:7A:CC:00:12\0" \
"bootargs=console=ttyS0,38400" \
""
#define CONFIG_NETMASK 255.255.255.0
*/
/*#define CONFIG_GRETH 1*/
-/* Default HARDWARE address */
-#define GRETH_HWADDR_0 0x00
-#define GRETH_HWADDR_1 0x00
-#define GRETH_HWADDR_2 0x7A
-#define GRETH_HWADDR_3 0xcc
-#define GRETH_HWADDR_4 0x00
-#define GRETH_HWADDR_5 0x12
-
-#define CONFIG_ETHADDR 00:00:7a:cc:00:12
-
/*
* Define CONFIG_GRETH_10MBIT to force GRETH at 10Mb/s
*/
#define CONFIG_DRIVER_AX88180 1
#define AX88180_BASE 0x2c000000
#define CONFIG_HOSTNAME ibf-dsp561
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
/*
#undef CONFIG_BOOTARGS
-#define CONFIG_ETHADDR 00:a0:a4:03:00:00
-#define CONFIG_OVERWRITE_ETHADDR_ONCE
-
#define CONFIG_IPADDR 192.168.100.2
#define CONFIG_SERVERIP 192.168.100.1
#define CONFIG_NETMASK 255.255.255.0
* Misc Settings
*/
#define CONFIG_BAUDRATE 115200
-#define CONFIG_MISC_INIT_R /* needed for MAC address */
#define CONFIG_UART_CONSOLE 0
#undef CONFIG_SHOW_BOOT_PROGRESS
#define CONFIG_MISC_INIT_R
#define CONFIG_SHOW_BOOT_PROGRESS
-#define CONFIG_RANDOM_MACADDR
#define CONFIG_LIB_RAND
#define CONFIG_KIRKWOOD_GPIO
#define CONFIG_OF_LIBFDT
#define CONFIG_IPADDR 192.168.0.3
#define CONFIG_SERVERIP 192.168.0.5
#define CONFIG_GATEWAYIP 192.168.0.1
-#define CONFIG_ETHADDR 00:E0:0C:00:00:FD
/* architecture dependent code */
#define CONFIG_SYS_USR_EXCEP /* user exception */
#define CONFIG_SYS_HUSH_PARSER 1 /* use "hush" command parser */
#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
-#define CONFIG_ETHADDR 00:50:C2:40:10:00
-#define CONFIG_OVERWRITE_ETHADDR_ONCE 1
#define CONFIG_VERSION_VARIABLE 1 /* include version env variable */
/*
"machid=ffffffff\0" \
"fdt_high=0x87000000\0" \
"baudrate=115200\0" \
- "ethaddr=00:50:C2:7E:90:F0\0" \
"fec_addr=00:50:C2:7E:90:F0\0" \
"netmask=255.255.255.0\0" \
"ipaddr=192.168.2.9\0" \
#endif
#endif
-#define CONFIG_ETHADDR DE:AD:BE:EF:01:01 /* Ethernet address */
-
#define CONFIG_BOOTDELAY 2 /* autoboot after 2 seconds */
#define CONFIG_BAUDRATE 115200
#endif
#define CONFIG_HOSTNAME pr1
#define CONFIG_TFTP_BLOCKSIZE 4404
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
/*
#define CONFIG_SDRAM_BANK0 1 /* init onboard SDRAM bank 0 */
-#define CONFIG_ETHADDR DE:AD:BE:EF:01:01 /* Ethernet address */
#define CONFIG_IPADDR 192.168.193.102
#define CONFIG_NETMASK 255.255.255.224
#define CONFIG_SERVERIP 192.168.193.119
/*
* Environment Configuration
*/
-
-/* The mac addresses for all ethernet interface */
#if defined(CONFIG_TSEC_ENET)
#define CONFIG_HAS_ETH0
-#define CONFIG_ETHADDR 02:E0:0C:00:00:FD
#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 02:E0:0C:00:01:FD
#endif
#define CONFIG_IPADDR 192.168.0.55
* SBC8641D board configuration file
*
* Make sure you change the MAC address and other network params first,
- * search for CONFIG_ETHADDR, CONFIG_SERVERIP, etc in this file.
+ * search for CONFIG_SERVERIP, etc in this file.
*/
#ifndef __CONFIG_H
* Environment Configuration
*/
-/* The mac addresses for all ethernet interface */
-#if defined(CONFIG_TSEC_ENET)
-#define CONFIG_ETHADDR 02:E0:0C:00:00:01
-#define CONFIG_ETH1ADDR 02:E0:0C:00:01:FD
-#define CONFIG_ETH2ADDR 02:E0:0C:00:02:FD
-#define CONFIG_ETH3ADDR 02:E0:0C:00:03:FD
-#endif
-
#define CONFIG_HAS_ETH0 1
#define CONFIG_HAS_ETH1 1
#define CONFIG_HAS_ETH2 1
#define CONFIG_BOOTARGS "console=ttySMX0,115200n8 root=/dev/mtdblock3 rootfstype=jffs2 mtdparts=scb9328_flash:128k(U-boot)ro,128k(U-boot_env),1m(kernel),4m(root),4m(fs) eval_board=evk9328"
#define CONFIG_BOOTCOMMAND "bootm 10040000"
#define CONFIG_SHOW_BOOT_PROGRESS
-#define CONFIG_ETHADDR 80:81:82:83:84:85
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 10.10.10.9
#define CONFIG_SERVERIP 10.10.10.10
#if defined(CONFIG_SYS_RAMBOOT)
#define CONFIG_ENV_IS_NOWHERE /* Store env in memory only */
#define CONFIG_ENV_SIZE (8 << 10)
-/*
- * In RAM-booting version, we have no environment storage. So we need to
- * provide at least preliminary MAC addresses for the 4xx EMAC driver to
- * register the interfaces. Those two addresses are generated via the
- * tools/gen_eth_addr tool and should only be used in a closed laboratory
- * environment.
- */
-#define CONFIG_ETHADDR 4a:56:49:22:3e:43
-#define CONFIG_ETH1ADDR 02:93:53:d5:06:98
#else
#define CONFIG_ENV_IS_IN_FLASH /* use FLASH for environ vars */
#endif
/* mpc8560ads board configuration file */
/* please refer to doc/README.mpc85xx for more info */
/* make sure you change the MAC address and other network params first,
- * search for CONFIG_ETHADDR,CONFIG_SERVERIP,etc in this file
+ * search for CONFIG_SERVERIP, etc. in this file
*/
#ifndef __CONFIG_H
#define CONFIG_KGDB_BAUDRATE 230400 /* speed to run kgdb serial port */
#endif
-/*Note: change below for your network setting!!! */
#if defined(CONFIG_TSEC_ENET) || defined(CONFIG_ETHER_ON_FCC)
#define CONFIG_HAS_ETH0
-#define CONFIG_ETHADDR 00:e0:0c:07:9b:8a
#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 00:e0:0c:07:9b:8b
#define CONFIG_HAS_ETH2
-#define CONFIG_ETH2ADDR 00:e0:0c:07:9b:8c
#endif
#define CONFIG_SERVERIP 192.168.85.1
/* mpc8560ads board configuration file */
/* please refer to doc/README.mpc85xx for more info */
/* make sure you change the MAC address and other network params first,
- * search for CONFIG_ETHADDR,CONFIG_SERVERIP,etc in this file
+ * search for CONFIG_SERVERIP, etc. in this file
*/
#ifndef __CONFIG_H
#define CONFIG_KGDB_BAUDRATE 230400 /* speed to run kgdb serial port */
#endif
-/*Note: change below for your network setting!!! */
#if defined(CONFIG_TSEC_ENET) || defined(CONFIG_ETHER_ON_FCC)
#define CONFIG_HAS_ETH0
-#define CONFIG_ETHADDR 00:e0:0c:07:9b:8a
#define CONFIG_HAS_ETH1
-#define CONFIG_ETH1ADDR 00:e0:0c:07:9b:8b
#define CONFIG_HAS_ETH2
-#define CONFIG_ETH2ADDR 00:e0:0c:07:9b:8c
#endif
/*
#define CONFIG_NETCONSOLE 1
#endif
#define CONFIG_HOSTNAME tcm-bf518
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
#define CONFIG_LIB_RAND
/*
* Misc Settings
*/
#define CONFIG_BAUDRATE 115200
-#define CONFIG_MISC_INIT_R
#define CONFIG_RTC_BFIN
#define CONFIG_UART_CONSOLE 0
#define CONFIG_BOOTCOMMAND "run flashboot"
#define CONFIG_NETCONSOLE 1
#endif
#define CONFIG_HOSTNAME tcm-bf537
-/* Uncomment next line to use fixed MAC address */
-/* #define CONFIG_ETHADDR 02:80:ad:20:31:e8 */
#define CONFIG_LIB_RAND
/*
/*
* Network Configuration
*/
-#define CONFIG_ETHADDR 00:21:83:24:00:00
#define CONFIG_SERVERIP 192.168.11.1
#define CONFIG_IPADDR 192.168.11.10
#define CONFIG_GATEWAYIP 192.168.11.1
"netmask=255.255.0.0\0" \
"ipaddr=192.168.160.18\0" \
"serverip=192.168.1.1\0" \
- "ethaddr=00:e0:ee:00:05:2e\0" \
"bootfile=/tftpboot/v38b/uImage\0" \
"u-boot=/tftpboot/v38b/u-boot.bin\0" \
""
#define CONFIG_ENV_OFFSET_REDUND 0x00120000
#define CONFIG_ENV_ADDR 0x80000100
-/*
- * Provide default ethernet address
- *
- * THIS IS NORMALLY NOT DONE. HERE WE KEEP WHAT WAS IN THE PORTED
- * BOARD CONFIG IN CASE SOME PROVISIONING PROCESS OUT THERE EXPECTS
- * THIS MAC ADDRESS WHEN THE DEVICE HAS STILL ITS DEFAULT CONFIG.
- */
-
-#define CONFIG_ETHADDR 00:12:B4:00:AF:FE
-#define CONFIG_OVERWRITE_ETHADDR_ONCE
-
/*
* U-Boot Commands
*/
#undef CONFIG_CMD_DTT
-#define CONFIG_ETHADDR 08:00:3e:26:0a:5b
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 192.168.68.201
#define CONFIG_SERVERIP 192.168.68.62
#define CONFIG_IPADDR 192.168.1.10
#define CONFIG_SERVERIP 192.168.1.100
#define CONFIG_GATEWAYIP 192.168.1.100
-#define CONFIG_ETHADDR 50:00:00:00:06:00
-#define CONFIG_ETH1ADDR 50:00:00:00:06:01
#if 0
#define CONFIG_BOOTDELAY -1 /* autoboot disabled */
#else
#ifdef CONFIG_LOADS_ECHO
"loads_echo=" __stringify(CONFIG_LOADS_ECHO) "\0"
#endif
-#ifdef CONFIG_ETHADDR
- "ethaddr=" __stringify(CONFIG_ETHADDR) "\0"
-#endif
-#ifdef CONFIG_ETH1ADDR
- "eth1addr=" __stringify(CONFIG_ETH1ADDR) "\0"
-#endif
-#ifdef CONFIG_ETH2ADDR
- "eth2addr=" __stringify(CONFIG_ETH2ADDR) "\0"
-#endif
-#ifdef CONFIG_ETH3ADDR
- "eth3addr=" __stringify(CONFIG_ETH3ADDR) "\0"
-#endif
-#ifdef CONFIG_ETH4ADDR
- "eth4addr=" __stringify(CONFIG_ETH4ADDR) "\0"
-#endif
-#ifdef CONFIG_ETH5ADDR
- "eth5addr=" __stringify(CONFIG_ETH5ADDR) "\0"
-#endif
#ifdef CONFIG_ETHPRIME
"ethprime=" CONFIG_ETHPRIME "\0"
#endif
if NET
+config NET_RANDOM_ETHADDR
+ bool "Random ethaddr if unset"
+ help
+ Selecting this will allow the Ethernet interface to function
+ even when the ethaddr variable for that interface is unset.
+ A new MAC address will be generated on every boot and it will
+ not be added to the environment.
+
endif # if NET
return -1;
}
+static int eth_write_hwaddr(struct udevice *dev)
+{
+ struct eth_pdata *pdata = dev->platdata;
+ int ret = 0;
+
+ if (!dev || !device_active(dev))
+ return -EINVAL;
+
+ /* seq is valid since the device is active */
+ if (eth_get_ops(dev)->write_hwaddr && !eth_mac_skip(dev->seq)) {
+ if (!is_valid_ethaddr(pdata->enetaddr)) {
+ printf("\nError: %s address %pM illegal value\n",
+ dev->name, pdata->enetaddr);
+ return -EINVAL;
+ }
+
+ ret = eth_get_ops(dev)->write_hwaddr(dev);
+ if (ret)
+ printf("\nWarning: %s failed to set MAC address\n",
+ dev->name);
+ }
+
+ return ret;
+}
+
int eth_init(void)
{
struct udevice *current;
if (device_active(current)) {
uchar env_enetaddr[6];
struct eth_pdata *pdata = current->platdata;
+ int enetaddr_changed = 0;
/* Sync environment with network device */
if (eth_getenv_enetaddr_by_index("eth", current->seq,
- env_enetaddr))
+ env_enetaddr)) {
+ enetaddr_changed = memcmp(pdata->enetaddr,
+ env_enetaddr, 6);
memcpy(pdata->enetaddr, env_enetaddr, 6);
- else
+ } else {
+ memset(env_enetaddr, 0, 6);
+ enetaddr_changed = memcmp(pdata->enetaddr,
+ env_enetaddr, 6);
memset(pdata->enetaddr, 0, 6);
+ }
+ if (enetaddr_changed)
+ eth_write_hwaddr(current);
ret = eth_get_ops(current)->start(current);
if (ret >= 0) {
return ret;
}
-static int eth_write_hwaddr(struct udevice *dev)
-{
- struct eth_pdata *pdata = dev->platdata;
- int ret = 0;
-
- if (!dev || !device_active(dev))
- return -EINVAL;
-
- /* seq is valid since the device is active */
- if (eth_get_ops(dev)->write_hwaddr && !eth_mac_skip(dev->seq)) {
- if (!is_valid_ethaddr(pdata->enetaddr)) {
- printf("\nError: %s address %pM illegal value\n",
- dev->name, pdata->enetaddr);
- return -EINVAL;
- }
-
- ret = eth_get_ops(dev)->write_hwaddr(dev);
- if (ret)
- printf("\nWarning: %s failed to set MAC address\n",
- dev->name);
- }
-
- return ret;
-}
-
int eth_initialize(void)
{
int num_devices = 0;
printf("\nWarning: %s using MAC address from ROM\n",
dev->name);
} else if (is_zero_ethaddr(pdata->enetaddr)) {
+#ifdef CONFIG_NET_RANDOM_ETHADDR
+ net_random_ethaddr(pdata->enetaddr);
+ printf("\nWarning: %s (eth%d) using random MAC address - %pM\n",
+ dev->name, dev->seq, pdata->enetaddr);
+#else
printf("\nError: %s address not set.\n",
dev->name);
return -EINVAL;
+#endif
}
return 0;
printf("\nWarning: %s using MAC address from net device\n",
dev->name);
} else if (is_zero_ethaddr(dev->enetaddr)) {
+#ifdef CONFIG_NET_RANDOM_ETHADDR
+ net_random_ethaddr(dev->enetaddr);
+ printf("\nWarning: %s (eth%d) using random MAC address - %pM\n",
+ dev->name, eth_number, dev->enetaddr);
+#else
printf("\nError: %s address not set.\n",
dev->name);
return -EINVAL;
+#endif
}
if (dev->write_hwaddr && !eth_mac_skip(eth_number)) {
dev = eth_devices;
do {
uchar env_enetaddr[6];
+ int enetaddr_changed = 0;
if (eth_getenv_enetaddr_by_index("eth", dev->index,
- env_enetaddr))
+ env_enetaddr)) {
+ enetaddr_changed = memcmp(dev->enetaddr,
+ env_enetaddr, 6);
memcpy(dev->enetaddr, env_enetaddr, 6);
+ } else {
+ memset(env_enetaddr, 0, 6);
+ enetaddr_changed = memcmp(dev->enetaddr,
+ env_enetaddr, 6);
+ memset(dev->enetaddr, 0, 6);
+ }
+ if (enetaddr_changed)
+ eth_write_hwaddr(dev, "eth", dev->index);
dev = dev->next;
} while (dev != eth_devices);