diff options
| author | Kumar Gala <galak@kernel.crashing.org> | 2008-08-19 15:41:18 -0500 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2008-08-21 02:07:43 +0200 | 
| commit | ba37aa03287c5483c61c0a3e320c8888bee0143a (patch) | |
| tree | 2dfda3297180c8c2d45202ef470cc06105d5d5b7 | |
| parent | 4cacf7c64609839f809e2f9c45873f1d65861703 (diff) | |
| download | olio-uboot-2014.01-ba37aa03287c5483c61c0a3e320c8888bee0143a.tar.xz olio-uboot-2014.01-ba37aa03287c5483c61c0a3e320c8888bee0143a.zip | |
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.
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
| -rw-r--r-- | common/fdt_support.c | 68 | ||||
| -rw-r--r-- | cpu/74xx_7xx/cpu.c | 2 | ||||
| -rw-r--r-- | cpu/mpc512x/cpu.c | 2 | ||||
| -rw-r--r-- | cpu/mpc8260/cpu.c | 2 | ||||
| -rw-r--r-- | cpu/mpc83xx/fdt.c | 2 | ||||
| -rw-r--r-- | cpu/mpc85xx/fdt.c | 2 | ||||
| -rw-r--r-- | cpu/mpc86xx/fdt.c | 2 | ||||
| -rw-r--r-- | cpu/mpc8xx/fdt.c | 2 | ||||
| -rw-r--r-- | cpu/ppc4xx/fdt.c | 2 | ||||
| -rw-r--r-- | 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 93b144e64..e57ac0a54 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 ea43c9a9b..c007abc98 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 703e1889c..1f39ac4c1 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 4d5d141ea..efb8ed6f4 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 fda85c15d..39bd9dc7d 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 c159934c5..bc1550d7c 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 80a5c78a7..12d905203 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 567094a96..7130983ff 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 0323dc52f..a97484fa7 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 a7c6326e1..f2f2cd553 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); |