]> git.sur5r.net Git - u-boot/commitdiff
cpu/: get mac address from environment
authorMike Frysinger <vapier@gentoo.org>
Thu, 12 Feb 2009 00:18:41 +0000 (19:18 -0500)
committerWolfgang Denk <wd@denx.de>
Fri, 20 Mar 2009 21:39:11 +0000 (22:39 +0100)
The environment is the canonical storage location of the mac address, so
we're killing off the global data location and moving everything to
querying the env directly.

The cpus that get converted here:
at91rm9200
mpc512x
mpc5xxx
mpc8260
mpc8xx
ppc4xx

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
CC: Ben Warren <biggerbadderben@gmail.com>
CC: John Rigby <jrigby@freescale.com>
CC: Stefan Roese <sr@denx.de>
cpu/arm920t/at91rm9200/ether.c
cpu/mpc512x/cpu.c
cpu/mpc5xxx/cpu.c
cpu/mpc8260/ether_fcc.c
cpu/mpc8260/ether_scc.c
cpu/ppc4xx/cpu_init.c
post/cpu/mpc8xx/ether.c

index f20e0703432c1e82a7b4545513128b863f46bcbd..b00b948ee86111adf35648ead0b4aaaa34af95f2 100644 (file)
@@ -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);
index b9069b065e7ec6222f6f279d56252b8567a6e6a0..be532afdc3e73a142fbb152dece43429d1f9acc2 100644 (file)
@@ -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"
index 9c6ab76a6ffe9085fb59fa0972115a01eb16a24f..ad5ef8e37120226eb5869a5a815001f2f98f3a8e 100644 (file)
@@ -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
index 3ab57eb5b4eb7ba3f88950d935ddc64bf599b772..5ac02a09c025b5132bd44dd4ea7c180e0371abea 100644 (file)
@@ -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];
index 3671ef1dfba4a971f6741f9f26f9c94f9d68ad1d..432111df4cd6ef152b22b0ab80974ae4551e4af0 100644 (file)
@@ -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) */
 
index b5d81f2e6dd984c25f7c472bb69de1f6668c6a2b..a8f589a9f1bb70676890c61e09590a1a6904266d 100644 (file)
@@ -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)
index 5622cb7d2a6679ab4bdc5241ce504bf2f39b85e7..fe6c39eb3c335ef36fe0fbd12b8ea850a628c159 100644 (file)
@@ -110,6 +110,7 @@ static RTXBD *rtx;
 static void scc_init (int scc_index)
 {
        bd_t *bd = gd->bd;
+       uchar ea[6];
 
        static int proff[] =
                        { PROFF_SCC1, PROFF_SCC2, PROFF_SCC3, PROFF_SCC4 };
@@ -296,11 +297,10 @@ CPM_CR_CH_SCC4 };
        pram_ptr->sen_gaddr3 = 0x0;     /* Group Address Filter 3 (unused) */
        pram_ptr->sen_gaddr4 = 0x0;     /* Group Address Filter 4 (unused) */
 
-#define ea bd->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) */
        pram_ptr->sen_iaddr1 = 0x0;     /* Individual Address Filter 1 (unused) */