[U-Boot] [PATCH v2 2/2] ARM:AM33XX:Added cpsw support for AM335x EVM

Kumar Nath, Chandan chandan.nath at ti.com
Thu Nov 10 14:03:32 CET 2011


Please ignore this patch which went by mistake.


> -----Original Message-----
> From: Kumar Nath, Chandan
> Sent: Thursday, November 10, 2011 6:11 PM
> To: u-boot at lists.denx.de
> Cc: Kumar Nath, Chandan
> Subject: [PATCH v2 2/2] ARM:AM33XX:Added cpsw support for AM335x EVM
> 
>  #ifdef CONFIG_ARCH_EBSA110
>  # ifdef machine_arch_type
> @@ -42913,6 +42915,19 @@ extern unsigned int __machine_arch_type;
>  # define machine_is_goflexhome()	(0)
>  #endif
> 
> +#ifdef CONFIG_MACH_TIAM335EVM
> +# ifdef machine_arch_type
> +#  undef machine_arch_type
> +#  define machine_arch_type     __machine_arch_type
> +# else
> +#  define machine_arch_type     MACH_TYPE_TIAM335EVM
> +# endif
> +# define machine_is_tiam335evm() (machine_arch_type ==
> MACH_TYPE_TIAM335EVM)
> +#else
> +# define machine_is_tiam335evm() (0)
> +#endif
> +
> +
>  /*
>   * These have not yet been registered
>   */
> diff --git a/board/ti/am335x/evm.c b/board/ti/am335x/evm.c
> index 4530a76..993d2a1 100644
> --- a/board/ti/am335x/evm.c
> +++ b/board/ti/am335x/evm.c
> @@ -57,6 +57,15 @@ int board_init(void)
>  }
> 
>  #ifdef CONFIG_DRIVER_TI_CPSW
> +/* Atheros PHY report 1000baseX speed incorrectly and so this function
> + * is define to overcome this issue. The original code is kept as
> + * _miiphy_is_1000base_x as an weak alias to this function.
> + */
> +int miiphy_is_1000base_x(const char *devname, unsigned char addr)
> +{
> +	return 0;
> +}
> +
>  /* TODO : Check for the board specific PHY */
>  static void evm_phy_init(char *name, int addr)
>  {
> @@ -159,7 +168,6 @@ int board_eth_init(bd_t *bis)
>  {
>  	uint8_t mac_addr[6];
>  	uint32_t mac_hi, mac_lo;
> -	char mac_buf[32];
> 
>  	if (!eth_getenv_enetaddr("ethaddr", mac_addr)) {
>  		debug("<ethaddr> not set. Reading from E-fuse\n");
> @@ -174,18 +182,11 @@ int board_eth_init(bd_t *bis)
>  		mac_addr[5] = (mac_lo & 0xFF00) >> 8;
> 
>  		if (is_valid_ether_addr(mac_addr)) {
> -			sprintf(mac_buf, "%02x:%02x:%02x:%02x:%02x:%02x",
> -				mac_addr[0], mac_addr[1], mac_addr[2],
> -				mac_addr[3], mac_addr[4], mac_addr[5]);
> -
> -			printf("ENET MAC address: %s\n", mac_buf);
> -			setenv("ethaddr", (char *)mac_buf);
> +			eth_setenv_enetaddr("ethaddr", mac_addr);
>  		} else {
>  			printf("Caution: Using hardcoded mac address. "
>  				"Set <ethaddr> variable to overcome this.\n");
>  		}
> -
> -		cpsw_eth_set_mac_addr(mac_addr);
>  	}
> 
>  	/* set mii mode to rgmii in in device configure register */
> diff --git a/common/miiphyutil.c b/common/miiphyutil.c
> index 4551240..dd56fda 100644
> --- a/common/miiphyutil.c
> +++ b/common/miiphyutil.c
> @@ -548,7 +548,7 @@ miiphy_read_failed:
>   * Return 1 if PHY supports 1000BASE-X, 0 if PHY supports 10BASE-
> T/100BASE-TX/
>   * 1000BASE-T, or on error.
>   */
> -int miiphy_is_1000base_x(const char *devname, unsigned char addr)
> +static int __miiphy_is_1000base_x(const char *devname, unsigned char
> addr)
>  {
>  #if defined(CONFIG_PHY_GIGE)
>  	u16 exsr;
> @@ -558,12 +558,15 @@ int miiphy_is_1000base_x(const char *devname,
> unsigned char addr)
>  			"1000BASE-X\n");
>  		return 0;
>  	}
> -	return 0;
> +	return 0 != (exsr & (ESTATUS_1000XF | ESTATUS_1000XH));
>  #else
>  	return 0;
>  #endif
>  }
> 
> +int miiphy_is_1000base_x(const char *devname, unsigned char addr)
> +	__attribute__((weak, alias("__miiphy_is_1000base_x")));
> +
>  #ifdef CONFIG_SYS_FAULT_ECHO_LINK_DOWN
> 
> /**********************************************************************
> *******
>   *
> diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
> index c41eeaf..3167509 100644
> --- a/drivers/net/cpsw.c
> +++ b/drivers/net/cpsw.c
> @@ -512,20 +512,6 @@ static inline void soft_reset(void *reg)
>  		;
>  }
> 
> -static u_int8_t cpsw_eth_mac_addr[] = { 0x00, 0x11, 0x22, 0x33, 0x44,
> 0x66 };
> -
> -/*
> - * This function must be called before cpsw_init() if you want to
> override
> - * the default mac address.
> - */
> -void cpsw_eth_set_mac_addr(const u_int8_t *addr)
> -{
> -	int i;
> -
> -	for (i = 0; i < sizeof(cpsw_eth_mac_addr); i++)
> -		cpsw_eth_mac_addr[i] = addr[i];
> -}
> -
>  #define mac_hi(mac)	(((mac)[0] << 0) | ((mac)[1] << 8) |	\
>  			 ((mac)[2] << 16) | ((mac)[3] << 24))
>  #define mac_lo(mac)	(((mac)[4] << 0) | ((mac)[5] << 8))
> @@ -732,7 +718,7 @@ static int cpsw_init(struct eth_device *dev, bd_t
> *bis)
>  	__raw_writel(BIT(priv->host_port), &priv->regs->stat_port_en);
> 
>  	cpsw_ale_port_state(priv, priv->host_port,
> ALE_PORT_STATE_FORWARD);
> -	memcpy(priv->dev->enetaddr, cpsw_eth_mac_addr, 6);
> +
>  	cpsw_ale_add_ucast(priv, priv->dev->enetaddr, priv->host_port,
>  			   ALE_SECURE);
>  	cpsw_ale_add_mcast(priv, NetBcastAddr, 1 << priv->host_port);


More information about the U-Boot mailing list