fdt: rework fdt_fixup_ethernet() to use env instead of bd_t
PATCH v8 1/1 fdt: rework fdt_fixup_ethernet() to use env instead of bd_t
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.
---
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(-)
common/fdt_support.c +27 -41
@@ -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)
cpu/74xx_7xx/cpu.c +1 -1
@@ -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 /* ------------------------------------------------------------------------- */
cpu/mpc512x/cpu.c +1 -1
@@ -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
cpu/mpc8260/cpu.c +1 -1
@@ -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 );
cpu/mpc83xx/fdt.c +1 -1
@@ -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,
cpu/mpc85xx/fdt.c +1 -1
@@ -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,
cpu/mpc86xx/fdt.c +1 -1
@@ -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
cpu/mpc8xx/fdt.c +1 -1
@@ -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); }
cpu/ppc4xx/fdt.c +1 -1
@@ -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
include/fdt_support.h +1 -1
@@ -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);
Signature · 1 line
1.5.5.1
Wolfgang Denk
AppliedPATCH v8 1/1 fdt: rework fdt_fixup_ethernet() to use env instead of bd_t
Dear Kumar Gala,
Quoted 14 lines · In message <[email protected]> you…
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 <[email protected]>---
Bump the array sizes to cover a vast number of ethernet mac addresses at Wolfgang's request.
- k
Quoted 11 lines
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
Signature · 5 lines
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