diff options
| -rw-r--r-- | arch/powerpc/cpu/mpc8xxx/fdt.c | 24 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/fsl_enet.h | 2 | ||||
| -rw-r--r-- | board/freescale/mpc8360emds/mpc8360emds.c | 15 | ||||
| -rw-r--r-- | board/freescale/mpc837xemds/mpc837xemds.c | 8 | ||||
| -rw-r--r-- | board/freescale/mpc8569mds/mpc8569mds.c | 4 | 
5 files changed, 38 insertions, 15 deletions
| diff --git a/arch/powerpc/cpu/mpc8xxx/fdt.c b/arch/powerpc/cpu/mpc8xxx/fdt.c index 88c47d1ae..54e60bb1a 100644 --- a/arch/powerpc/cpu/mpc8xxx/fdt.c +++ b/arch/powerpc/cpu/mpc8xxx/fdt.c @@ -27,6 +27,7 @@  #include <libfdt.h>  #include <fdt_support.h>  #include <asm/mp.h> +#include <asm/fsl_enet.h>  #if defined(CONFIG_MP) && (defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx))  static int ft_del_cpuhandle(void *blob, int cpuhandle) @@ -215,3 +216,26 @@ void fdt_fixup_crypto_node(void *blob, int sec_rev)  		fdt_del_node_and_alias(blob, "crypto");  }  #endif + +int fdt_fixup_phy_connection(void *blob, int offset, enum fsl_phy_enet_if phyc) +{ +	static const char *fsl_phy_enet_if_str[] = { +		[MII]		= "mii", +		[RMII]		= "rmii", +		[GMII]		= "gmii", +		[RGMII]		= "rgmii", +		[RGMII_ID]	= "rgmii-id", +		[RGMII_RXID]	= "rgmii-rxid", +		[SGMII]		= "sgmii", +		[TBI]		= "tbi", +		[RTBI]		= "rtbi", +		[XAUI]		= "xgmii", +		[FSL_ETH_IF_NONE] = "", +	}; + +	if (phyc > ARRAY_SIZE(fsl_phy_enet_if_str)) +		return fdt_setprop_string(blob, offset, "phy-connection-type", ""); + +	return fdt_setprop_string(blob, offset, "phy-connection-type", +					 fsl_phy_enet_if_str[phyc]); +} diff --git a/arch/powerpc/include/asm/fsl_enet.h b/arch/powerpc/include/asm/fsl_enet.h index 85961573b..4fb2857f3 100644 --- a/arch/powerpc/include/asm/fsl_enet.h +++ b/arch/powerpc/include/asm/fsl_enet.h @@ -28,4 +28,6 @@ enum fsl_phy_enet_if {  	FSL_ETH_IF_NONE,  }; +int fdt_fixup_phy_connection(void *blob, int offset, enum fsl_phy_enet_if phyc); +  #endif /* __ASM_PPC_FSL_ENET_H */ diff --git a/board/freescale/mpc8360emds/mpc8360emds.c b/board/freescale/mpc8360emds/mpc8360emds.c index 59ada9ca7..0babd2648 100644 --- a/board/freescale/mpc8360emds/mpc8360emds.c +++ b/board/freescale/mpc8360emds/mpc8360emds.c @@ -1,5 +1,5 @@  /* - * Copyright (C) 2006 Freescale Semiconductor, Inc. + * Copyright (C) 2006,2010 Freescale Semiconductor, Inc.   * Dave Liu <daveliu@freescale.com>   *   * See file CREDITS for list of people who contributed to this @@ -22,6 +22,7 @@  #include <spd_sdram.h>  #include <asm/mmu.h>  #include <asm/io.h> +#include <asm/fsl_enet.h>  #if defined(CONFIG_OF_LIBFDT)  #include <libfdt.h>  #endif @@ -396,10 +397,8 @@ void ft_board_setup(void *blob, bd_t *bd)  				prop = fdt_getprop(blob, path,  				                   "phy-connection-type", 0);  				if (prop && (strcmp(prop, "rgmii-id") == 0)) -					fdt_setprop(blob, path, -					            "phy-connection-type", -					            "rgmii-rxid", -					            sizeof("rgmii-rxid")); +					fdt_fixup_phy_connection(blob, path, +								RGMII_RXID);  			}  #endif  #if defined(CONFIG_HAS_ETH1) @@ -410,10 +409,8 @@ void ft_board_setup(void *blob, bd_t *bd)  				prop = fdt_getprop(blob, path,  				                   "phy-connection-type", 0);  				if (prop && (strcmp(prop, "rgmii-id") == 0)) -					fdt_setprop(blob, path, -					            "phy-connection-type", -					            "rgmii-rxid", -					            sizeof("rgmii-rxid")); +					fdt_fixup_phy_connection(blob, path, +								RGMII_RXID);  			}  #endif  		} diff --git a/board/freescale/mpc837xemds/mpc837xemds.c b/board/freescale/mpc837xemds/mpc837xemds.c index 32a87adb9..51dd692c2 100644 --- a/board/freescale/mpc837xemds/mpc837xemds.c +++ b/board/freescale/mpc837xemds/mpc837xemds.c @@ -1,5 +1,5 @@  /* - * Copyright (C) 2007 Freescale Semiconductor, Inc. + * Copyright (C) 2007,2010 Freescale Semiconductor, Inc.   * Dave Liu <daveliu@freescale.com>   *   * CREDITS: Kim Phillips contribute to LIBFDT code @@ -15,6 +15,7 @@  #include <i2c.h>  #include <asm/io.h>  #include <asm/fsl_mpc83xx_serdes.h> +#include <asm/fsl_enet.h>  #include <spd_sdram.h>  #include <tsec.h>  #include <libfdt.h> @@ -136,7 +137,6 @@ int board_eth_init(bd_t *bd)  static void __ft_tsec_fixup(void *blob, bd_t *bd, const char *alias,  			    int phy_addr)  { -	const char *phy_type = "sgmii";  	const u32 *ph;  	int off;  	int err; @@ -148,8 +148,8 @@ static void __ft_tsec_fixup(void *blob, bd_t *bd, const char *alias,  		return;  	} -	err = fdt_setprop(blob, off, "phy-connection-type", phy_type, -			  strlen(phy_type) + 1); +	err = fdt_fixup_phy_connection(blob, off, SGMII); +  	if (err) {  		printf("WARNING: could not set phy-connection-type for %s: "  			"%s.\n", alias, fdt_strerror(err)); diff --git a/board/freescale/mpc8569mds/mpc8569mds.c b/board/freescale/mpc8569mds/mpc8569mds.c index 795e5654e..743e712b8 100644 --- a/board/freescale/mpc8569mds/mpc8569mds.c +++ b/board/freescale/mpc8569mds/mpc8569mds.c @@ -622,8 +622,8 @@ void ft_board_setup(void *blob, bd_t *bd)  			break;  		} -		err = fdt_setprop_string(blob, nodeoff, "phy-connection-type", -					"rmii"); +		err = fdt_fixup_phy_connection(blob, nodeoff, RMII); +  		if (err < 0) {  			printf("WARNING: could not set phy-connection-type "  				"%s.\n", fdt_strerror(err)); |