* [U-Boot] [PATCH v8] fdt: rework fdt_fixup_ethernet() to use env instead of bd_t
@ 2008-08-19 20:41 Kumar Gala
2008-08-21 0:07 ` Wolfgang Denk
0 siblings, 1 reply; 2+ messages in thread
From: Kumar Gala @ 2008-08-19 20:41 UTC (permalink / raw)
To: u-boot
Move to using the environment variables 'ethaddr', 'eth1addr', etc..
instead of bd->bi_enetaddr, bi_enet1addr, etc.
This makes the code a bit more flexible to the number of ethernet
interfaces.
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
---
Bump the array sizes to cover a vast number of ethernet mac addresses
at Wolfgang's request.
- k
common/fdt_support.c | 68 +++++++++++++++++++-----------------------------
cpu/74xx_7xx/cpu.c | 2 +-
cpu/mpc512x/cpu.c | 2 +-
cpu/mpc8260/cpu.c | 2 +-
cpu/mpc83xx/fdt.c | 2 +-
cpu/mpc85xx/fdt.c | 2 +-
cpu/mpc86xx/fdt.c | 2 +-
cpu/mpc8xx/fdt.c | 2 +-
cpu/ppc4xx/fdt.c | 2 +-
include/fdt_support.h | 2 +-
10 files changed, 36 insertions(+), 50 deletions(-)
diff --git a/common/fdt_support.c b/common/fdt_support.c
index 93b144e..e57ac0a 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -368,55 +368,41 @@ int fdt_fixup_memory(void *blob, u64 start, u64 size)
return 0;
}
-#if defined(CONFIG_HAS_ETH0) || defined(CONFIG_HAS_ETH1) ||\
- defined(CONFIG_HAS_ETH2) || defined(CONFIG_HAS_ETH3)
-
-void fdt_fixup_ethernet(void *fdt, bd_t *bd)
+void fdt_fixup_ethernet(void *fdt)
{
- int node;
+ int node, i, j;
+ char enet[16], *tmp, *end;
+ char mac[16] = "ethaddr";
const char *path;
+ unsigned char mac_addr[6];
node = fdt_path_offset(fdt, "/aliases");
- if (node >= 0) {
-#if defined(CONFIG_HAS_ETH0)
- path = fdt_getprop(fdt, node, "ethernet0", NULL);
- if (path) {
- do_fixup_by_path(fdt, path, "mac-address",
- bd->bi_enetaddr, 6, 0);
- do_fixup_by_path(fdt, path, "local-mac-address",
- bd->bi_enetaddr, 6, 1);
- }
-#endif
-#if defined(CONFIG_HAS_ETH1)
- path = fdt_getprop(fdt, node, "ethernet1", NULL);
- if (path) {
- do_fixup_by_path(fdt, path, "mac-address",
- bd->bi_enet1addr, 6, 0);
- do_fixup_by_path(fdt, path, "local-mac-address",
- bd->bi_enet1addr, 6, 1);
- }
-#endif
-#if defined(CONFIG_HAS_ETH2)
- path = fdt_getprop(fdt, node, "ethernet2", NULL);
- if (path) {
- do_fixup_by_path(fdt, path, "mac-address",
- bd->bi_enet2addr, 6, 0);
- do_fixup_by_path(fdt, path, "local-mac-address",
- bd->bi_enet2addr, 6, 1);
+ if (node < 0)
+ return;
+
+ i = 0;
+ while ((tmp = getenv(mac)) != NULL) {
+ sprintf(enet, "ethernet%d", i);
+ path = fdt_getprop(fdt, node, enet, NULL);
+ if (!path) {
+ debug("No alias for %s\n", enet);
+ sprintf(mac, "eth%daddr", ++i);
+ continue;
}
-#endif
-#if defined(CONFIG_HAS_ETH3)
- path = fdt_getprop(fdt, node, "ethernet3", NULL);
- if (path) {
- do_fixup_by_path(fdt, path, "mac-address",
- bd->bi_enet3addr, 6, 0);
- do_fixup_by_path(fdt, path, "local-mac-address",
- bd->bi_enet3addr, 6, 1);
+
+ for (j = 0; j < 6; j++) {
+ mac_addr[j] = tmp ? simple_strtoul(tmp, &end, 16) : 0;
+ if (tmp)
+ tmp = (*end) ? end+1 : end;
}
-#endif
+
+ do_fixup_by_path(fdt, path, "mac-address", &mac_addr, 6, 0);
+ do_fixup_by_path(fdt, path, "local-mac-address",
+ &mac_addr, 6, 1);
+
+ sprintf(mac, "eth%daddr", ++i);
}
}
-#endif
#ifdef CONFIG_HAS_FSL_DR_USB
void fdt_fixup_dr_usb(void *blob, bd_t *bd)
diff --git a/cpu/74xx_7xx/cpu.c b/cpu/74xx_7xx/cpu.c
index ea43c9a..c007abc 100644
--- a/cpu/74xx_7xx/cpu.c
+++ b/cpu/74xx_7xx/cpu.c
@@ -314,7 +314,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)
fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
- fdt_fixup_ethernet(blob, bd);
+ fdt_fixup_ethernet(blob);
}
#endif
/* ------------------------------------------------------------------------- */
diff --git a/cpu/mpc512x/cpu.c b/cpu/mpc512x/cpu.c
index 703e188..1f39ac4 100644
--- a/cpu/mpc512x/cpu.c
+++ b/cpu/mpc512x/cpu.c
@@ -191,7 +191,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)
#endif
ft_clock_setup(blob, bd);
#ifdef CONFIG_HAS_ETH0
- fdt_fixup_ethernet(blob, bd);
+ fdt_fixup_ethernet(blob);
#endif
}
#endif
diff --git a/cpu/mpc8260/cpu.c b/cpu/mpc8260/cpu.c
index 4d5d141..efb8ed6 100644
--- a/cpu/mpc8260/cpu.c
+++ b/cpu/mpc8260/cpu.c
@@ -307,7 +307,7 @@ void ft_cpu_setup (void *blob, bd_t *bd)
#if defined(CONFIG_HAS_ETH0) || defined(CONFIG_HAS_ETH1) ||\
defined(CONFIG_HAS_ETH2) || defined(CONFIG_HAS_ETH3)
- fdt_fixup_ethernet(blob, bd);
+ fdt_fixup_ethernet(blob);
#endif
do_fixup_by_path_u32(blob, cpu_path, "bus-frequency", bd->bi_busfreq, 1);
diff --git a/cpu/mpc83xx/fdt.c b/cpu/mpc83xx/fdt.c
index fda85c1..39bd9dc 100644
--- a/cpu/mpc83xx/fdt.c
+++ b/cpu/mpc83xx/fdt.c
@@ -53,7 +53,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)
#if defined(CONFIG_HAS_ETH0) || defined(CONFIG_HAS_ETH1) ||\
defined(CONFIG_HAS_ETH2) || defined(CONFIG_HAS_ETH3)
- fdt_fixup_ethernet(blob, bd);
+ fdt_fixup_ethernet(blob);
#endif
do_fixup_by_prop_u32(blob, "device_type", "cpu", 4,
diff --git a/cpu/mpc85xx/fdt.c b/cpu/mpc85xx/fdt.c
index c159934..bc1550d 100644
--- a/cpu/mpc85xx/fdt.c
+++ b/cpu/mpc85xx/fdt.c
@@ -212,7 +212,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)
#if defined(CONFIG_HAS_ETH0) || defined(CONFIG_HAS_ETH1) ||\
defined(CONFIG_HAS_ETH2) || defined(CONFIG_HAS_ETH3)
- fdt_fixup_ethernet(blob, bd);
+ fdt_fixup_ethernet(blob);
#endif
do_fixup_by_prop_u32(blob, "device_type", "cpu", 4,
diff --git a/cpu/mpc86xx/fdt.c b/cpu/mpc86xx/fdt.c
index 80a5c78..12d9052 100644
--- a/cpu/mpc86xx/fdt.c
+++ b/cpu/mpc86xx/fdt.c
@@ -25,7 +25,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)
#if defined(CONFIG_HAS_ETH0) || defined(CONFIG_HAS_ETH1) \
|| defined(CONFIG_HAS_ETH2) || defined(CONFIG_HAS_ETH3)
- fdt_fixup_ethernet(blob, bd);
+ fdt_fixup_ethernet(blob);
#endif
#ifdef CFG_NS16550
diff --git a/cpu/mpc8xx/fdt.c b/cpu/mpc8xx/fdt.c
index 567094a..7130983 100644
--- a/cpu/mpc8xx/fdt.c
+++ b/cpu/mpc8xx/fdt.c
@@ -40,7 +40,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)
gd->brg_clk, 1);
/* Fixup ethernet MAC addresses */
- fdt_fixup_ethernet(blob, bd);
+ fdt_fixup_ethernet(blob);
fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
}
diff --git a/cpu/ppc4xx/fdt.c b/cpu/ppc4xx/fdt.c
index 0323dc5..a97484f 100644
--- a/cpu/ppc4xx/fdt.c
+++ b/cpu/ppc4xx/fdt.c
@@ -130,7 +130,7 @@ void ft_cpu_setup(void *blob, bd_t *bd)
* Fixup all ethernet nodes
* Note: aliases in the dts are required for this
*/
- fdt_fixup_ethernet(blob, bd);
+ fdt_fixup_ethernet(blob);
/*
* Fixup all available PCIe nodes by setting the device_type property
diff --git a/include/fdt_support.h b/include/fdt_support.h
index a7c6326..f2f2cd5 100644
--- a/include/fdt_support.h
+++ b/include/fdt_support.h
@@ -45,7 +45,7 @@ void do_fixup_by_compat(void *fdt, const char *compat,
void do_fixup_by_compat_u32(void *fdt, const char *compat,
const char *prop, u32 val, int create);
int fdt_fixup_memory(void *blob, u64 start, u64 size);
-void fdt_fixup_ethernet(void *fdt, bd_t *bd);
+void fdt_fixup_ethernet(void *fdt);
int fdt_find_and_setprop(void *fdt, const char *node, const char *prop,
const void *val, int len, int create);
void fdt_fixup_qe_firmware(void *fdt);
--
1.5.5.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* [U-Boot] [PATCH v8] fdt: rework fdt_fixup_ethernet() to use env instead of bd_t
2008-08-19 20:41 [U-Boot] [PATCH v8] fdt: rework fdt_fixup_ethernet() to use env instead of bd_t Kumar Gala
@ 2008-08-21 0:07 ` Wolfgang Denk
0 siblings, 0 replies; 2+ messages in thread
From: Wolfgang Denk @ 2008-08-21 0:07 UTC (permalink / raw)
To: u-boot
Dear Kumar Gala,
In message <1219178478-15212-1-git-send-email-galak@kernel.crashing.org> you wrote:
> Move to using the environment variables 'ethaddr', 'eth1addr', etc..
> instead of bd->bi_enetaddr, bi_enet1addr, etc.
>
> This makes the code a bit more flexible to the number of ethernet
> interfaces.
>
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
> ---
>
> Bump the array sizes to cover a vast number of ethernet mac addresses
> at Wolfgang's request.
>
> - k
>
> common/fdt_support.c | 68 +++++++++++++++++++-----------------------------
> cpu/74xx_7xx/cpu.c | 2 +-
> cpu/mpc512x/cpu.c | 2 +-
> cpu/mpc8260/cpu.c | 2 +-
> cpu/mpc83xx/fdt.c | 2 +-
> cpu/mpc85xx/fdt.c | 2 +-
> cpu/mpc86xx/fdt.c | 2 +-
> cpu/mpc8xx/fdt.c | 2 +-
> cpu/ppc4xx/fdt.c | 2 +-
> include/fdt_support.h | 2 +-
> 10 files changed, 36 insertions(+), 50 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Murder is contrary to the laws of man and God.
-- M-5 Computer, "The Ultimate Computer", stardate 4731.3
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-08-21 0:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-19 20:41 [U-Boot] [PATCH v8] fdt: rework fdt_fixup_ethernet() to use env instead of bd_t Kumar Gala
2008-08-21 0:07 ` Wolfgang Denk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox