summaryrefslogtreecommitdiff
path: root/cpu
diff options
context:
space:
mode:
Diffstat (limited to 'cpu')
-rw-r--r--cpu/arm920t/at91rm9200/ether.c8
-rw-r--r--cpu/mpc512x/cpu.c6
-rw-r--r--cpu/mpc5xxx/cpu.c6
-rw-r--r--cpu/mpc8260/ether_fcc.c4
-rw-r--r--cpu/mpc8260/ether_scc.c4
-rw-r--r--cpu/ppc4xx/cpu_init.c14
6 files changed, 25 insertions, 17 deletions
diff --git a/cpu/arm920t/at91rm9200/ether.c b/cpu/arm920t/at91rm9200/ether.c
index f20e070..b00b948 100644
--- a/cpu/arm920t/at91rm9200/ether.c
+++ b/cpu/arm920t/at91rm9200/ether.c
@@ -155,6 +155,7 @@ int eth_init (bd_t * bd)
{
int ret;
int i;
+ uchar enetaddr[6];
p_mac = AT91C_BASE_EMAC;
@@ -190,9 +191,10 @@ int eth_init (bd_t * bd)
rbfdt[RBF_FRAMEMAX - 1].addr |= RBF_WRAP;
rbfp = &rbfdt[0];
- p_mac->EMAC_SA2L = (bd->bi_enetaddr[3] << 24) | (bd->bi_enetaddr[2] << 16)
- | (bd->bi_enetaddr[1] << 8) | (bd->bi_enetaddr[0]);
- p_mac->EMAC_SA2H = (bd->bi_enetaddr[5] << 8) | (bd->bi_enetaddr[4]);
+ eth_getenv_enetaddr("ethaddr", enetaddr);
+ p_mac->EMAC_SA2L = (enetaddr[3] << 24) | (enetaddr[2] << 16)
+ | (enetaddr[1] << 8) | (enetaddr[0]);
+ p_mac->EMAC_SA2H = (enetaddr[5] << 8) | (enetaddr[4]);
p_mac->EMAC_RBQP = (long) (&rbfdt[0]);
p_mac->EMAC_RSR &= ~(AT91C_EMAC_RSR_OVR | AT91C_EMAC_REC | AT91C_EMAC_BNA);
diff --git a/cpu/mpc512x/cpu.c b/cpu/mpc512x/cpu.c
index b9069b0..be532af 100644
--- a/cpu/mpc512x/cpu.c
+++ b/cpu/mpc512x/cpu.c
@@ -148,15 +148,17 @@ static void old_ft_cpu_setup(void *blob, bd_t *bd)
* avoid fixing up by path because that
* produces scary error messages
*/
+ uchar enetaddr[6];
/*
* old device trees have ethernet nodes with
* device_type = "network"
*/
+ eth_getenv_enetaddr("ethaddr", enetaddr);
do_fixup_by_prop(blob, "device_type", "network", 8,
- "local-mac-address", bd->bi_enetaddr, 6, 0);
+ "local-mac-address", enetaddr, 6, 0);
do_fixup_by_prop(blob, "device_type", "network", 8,
- "address", bd->bi_enetaddr, 6, 0);
+ "address", enetaddr, 6, 0);
/*
* old device trees have soc nodes with
* device_type = "soc"
diff --git a/cpu/mpc5xxx/cpu.c b/cpu/mpc5xxx/cpu.c
index 9c6ab76..ad5ef8e 100644
--- a/cpu/mpc5xxx/cpu.c
+++ b/cpu/mpc5xxx/cpu.c
@@ -121,6 +121,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)
int div = in_8((void*)CONFIG_SYS_MBAR + 0x204) & 0x0020 ? 8 : 4;
char * cpu_path = "/cpus/" OF_CPU;
#ifdef CONFIG_MPC5xxx_FEC
+ uchar *enetaddr[6];
char * eth_path = "/" OF_SOC "/ethernet@3000";
#endif
@@ -131,8 +132,9 @@ void ft_cpu_setup(void *blob, bd_t *bd)
do_fixup_by_path_u32(blob, "/" OF_SOC, "system-frequency",
bd->bi_busfreq*div, 1);
#ifdef CONFIG_MPC5xxx_FEC
- do_fixup_by_path(blob, eth_path, "mac-address", bd->bi_enetaddr, 6, 0);
- do_fixup_by_path(blob, eth_path, "local-mac-address", bd->bi_enetaddr, 6, 0);
+ eth_getenv_enetaddr("ethaddr", enetaddr);
+ do_fixup_by_path(blob, eth_path, "mac-address", enetaddr, 6, 0);
+ do_fixup_by_path(blob, eth_path, "local-mac-address", enetaddr, 6, 0);
#endif
}
#endif
diff --git a/cpu/mpc8260/ether_fcc.c b/cpu/mpc8260/ether_fcc.c
index 3ab57eb..5ac02a0 100644
--- a/cpu/mpc8260/ether_fcc.c
+++ b/cpu/mpc8260/ether_fcc.c
@@ -654,7 +654,7 @@ eth_loopback_test (void)
puts ("FCC Ethernet External loopback test\n");
- memcpy (NetOurEther, gd->bd->bi_enetaddr, 6);
+ eth_getenv_enetaddr("ethaddr", NetOurEther);
/*
* global initialisations for all FCC channels
@@ -841,7 +841,7 @@ eth_loopback_test (void)
* So, far we have only been given one Ethernet address. We use
* the same address for all channels
*/
-#define ea gd->bd->bi_enetaddr
+#define ea NetOurEther
fpp->fen_paddrh = (ea[5] << 8) + ea[4];
fpp->fen_paddrm = (ea[3] << 8) + ea[2];
fpp->fen_paddrl = (ea[1] << 8) + ea[0];
diff --git a/cpu/mpc8260/ether_scc.c b/cpu/mpc8260/ether_scc.c
index 3671ef1..432111d 100644
--- a/cpu/mpc8260/ether_scc.c
+++ b/cpu/mpc8260/ether_scc.c
@@ -199,6 +199,7 @@ static int sec_init(struct eth_device *dev, bd_t *bis)
volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
scc_enet_t *pram_ptr;
uint dpaddr;
+ uchar ea[6];
rxIdx = 0;
txIdx = 0;
@@ -261,11 +262,10 @@ static int sec_init(struct eth_device *dev, bd_t *bis)
pram_ptr->sen_gaddr3 = 0x0; /* Group Address Filter 3 (unused) */
pram_ptr->sen_gaddr4 = 0x0; /* Group Address Filter 4 (unused) */
-# define ea bis->bi_enetaddr
+ eth_getenv_enetaddr("ethaddr", ea);
pram_ptr->sen_paddrh = (ea[5] << 8) + ea[4];
pram_ptr->sen_paddrm = (ea[3] << 8) + ea[2];
pram_ptr->sen_paddrl = (ea[1] << 8) + ea[0];
-# undef ea
pram_ptr->sen_pper = 0x0; /* Persistence (unused) */
diff --git a/cpu/ppc4xx/cpu_init.c b/cpu/ppc4xx/cpu_init.c
index b5d81f2..a8f589a 100644
--- a/cpu/ppc4xx/cpu_init.c
+++ b/cpu/ppc4xx/cpu_init.c
@@ -324,6 +324,7 @@ int cpu_init_r (void)
#if defined(CONFIG_405GP) || defined(CONFIG_405EP)
bd_t *bd = gd->bd;
unsigned long reg;
+ uchar enetaddr[6];
#if defined(CONFIG_405GP)
uint pvr = get_pvr();
#endif
@@ -332,19 +333,20 @@ int cpu_init_r (void)
* Write Ethernetaddress into on-chip register
*/
reg = 0x00000000;
- reg |= bd->bi_enetaddr[0]; /* set high address */
+ eth_getenv_enetaddr("ethaddr", enetaddr);
+ reg |= enetaddr[0]; /* set high address */
reg = reg << 8;
- reg |= bd->bi_enetaddr[1];
+ reg |= enetaddr[1];
out32 (EMAC_IAH, reg);
reg = 0x00000000;
- reg |= bd->bi_enetaddr[2]; /* set low address */
+ reg |= enetaddr[2]; /* set low address */
reg = reg << 8;
- reg |= bd->bi_enetaddr[3];
+ reg |= enetaddr[3];
reg = reg << 8;
- reg |= bd->bi_enetaddr[4];
+ reg |= enetaddr[4];
reg = reg << 8;
- reg |= bd->bi_enetaddr[5];
+ reg |= enetaddr[5];
out32 (EMAC_IAL, reg);
#if defined(CONFIG_405GP)