diff options
| author | Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> | 2011-11-14 16:56:59 +0900 | 
|---|---|---|
| committer | Nobuhiro Iwamatsu <iwamatsu@nigauri.org> | 2012-03-08 10:25:49 +0900 | 
| commit | 3bb4cc312d8e634e9d283ffcb380248a9bbd5a79 (patch) | |
| tree | 640b5ef4dcbb0fb19310675d5e2c03f9357f3166 /drivers/net/sh_eth.c | |
| parent | e37ae40e9dec9af417c19de72f76becebf160730 (diff) | |
| download | olio-uboot-2014.01-3bb4cc312d8e634e9d283ffcb380248a9bbd5a79.tar.xz olio-uboot-2014.01-3bb4cc312d8e634e9d283ffcb380248a9bbd5a79.zip | |
sh: sh_eth: Add support SH7724
Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com>
Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Diffstat (limited to 'drivers/net/sh_eth.c')
| -rw-r--r-- | drivers/net/sh_eth.c | 42 | 
1 files changed, 23 insertions, 19 deletions
| diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c index 27d040125..995e249ae 100644 --- a/drivers/net/sh_eth.c +++ b/drivers/net/sh_eth.c @@ -1,8 +1,8 @@  /*   * sh_eth.c - Driver for Renesas SH7763's ethernet controler.   * - * Copyright (C) 2008 Renesas Solutions Corp. - * Copyright (c) 2008 Nobuhiro Iwamatsu + * Copyright (C) 2008, 2011 Renesas Solutions Corp. + * Copyright (c) 2008, 2011 Nobuhiro Iwamatsu   * Copyright (c) 2007 Carlos Munoz <carlos@kenati.com>   *   * This program is free software; you can redistribute it and/or modify @@ -371,7 +371,7 @@ static int sh_eth_config(struct sh_eth_dev *eth, bd_t *bd)  	outl(0, TFTR(port));  	outl((FIFO_SIZE_T | FIFO_SIZE_R), FDR(port));  	outl(RMCR_RST, RMCR(port)); -#ifndef CONFIG_CPU_SH7757 +#if !defined(CONFIG_CPU_SH7757) && !defined(CONFIG_CPU_SH7724)  	outl(0, RPADIR(port));  #endif  	outl((FIFO_F_D_RFF | FIFO_F_D_RFD), FCFTR(port)); @@ -393,16 +393,19 @@ static int sh_eth_config(struct sh_eth_dev *eth, bd_t *bd)  	outl(val, MALR(port));  	outl(RFLR_RFL_MIN, RFLR(port)); -#ifndef CONFIG_CPU_SH7757 +#if !defined(CONFIG_CPU_SH7757) && !defined(CONFIG_CPU_SH7724)  	outl(0, PIPR(port));  #endif +#if !defined(CONFIG_CPU_SH7724)  	outl(APR_AP, APR(port));  	outl(MPR_MP, MPR(port)); -#ifdef CONFIG_CPU_SH7757 -	outl(TPAUSER_UNLIMITED, TPAUSER(port)); -#else +#endif +#if defined(CONFIG_CPU_SH7763)  	outl(TPAUSER_TPAUSE, TPAUSER(port)); +#elif defined(CONFIG_CPU_SH7757) +	outl(TPAUSER_UNLIMITED, TPAUSER(port));  #endif +  	/* Configure phy */  	ret = sh_eth_phy_config(eth);  	if (ret) { @@ -412,33 +415,34 @@ static int sh_eth_config(struct sh_eth_dev *eth, bd_t *bd)  	phy = port_info->phydev;  	phy_startup(phy); +	val = 0; +  	/* Set the transfer speed */ -#ifdef CONFIG_CPU_SH7763  	if (phy->speed == 100) {  		printf(SHETHER_NAME ": 100Base/"); +#ifdef CONFIG_CPU_SH7763  		outl(GECMR_100B, GECMR(port)); +#elif defined(CONFIG_CPU_SH7757) +		outl(1, RTRATE(port)); +#elif defined(CONFIG_CPU_SH7724) +		val = ECMR_RTM; +#endif  	} else if (phy->speed == 10) {  		printf(SHETHER_NAME ": 10Base/"); +#ifdef CONFIG_CPU_SH7763  		outl(GECMR_10B, GECMR(port)); -	} -#endif -#if defined(CONFIG_CPU_SH7757) -	if (phy->speed == 100) { -		printf("100Base/"); -		outl(1, RTRATE(port)); -	} else if (phy->speed == 10) { -		printf("10Base/"); +#elif defined(CONFIG_CPU_SH7757)  		outl(0, RTRATE(port)); -	}  #endif +	}  	/* Check if full duplex mode is supported by the phy */  	if (phy->duplex) {  		printf("Full\n"); -		outl((ECMR_CHG_DM|ECMR_RE|ECMR_TE|ECMR_DM), ECMR(port)); +		outl(val | (ECMR_CHG_DM|ECMR_RE|ECMR_TE|ECMR_DM), ECMR(port));  	} else {  		printf("Half\n"); -		outl((ECMR_CHG_DM|ECMR_RE|ECMR_TE),  ECMR(port)); +		outl(val | (ECMR_CHG_DM|ECMR_RE|ECMR_TE),  ECMR(port));  	}  	return ret; |