diff options
| author | Ben Warren <biggerbadderben@gmail.com> | 2009-04-27 23:19:10 -0700 | 
|---|---|---|
| committer | Ben Warren <biggerbadderben@gmail.com> | 2009-06-15 00:13:54 -0700 | 
| commit | 8cc13c13f1d154c8fa8fff56cea357ed38af76bf (patch) | |
| tree | ede1e44b6116b9136a0ecd60a936466b656e63d2 | |
| parent | 09cdd1b9b01450e91786d26ff3c866dc9c8d8d6b (diff) | |
| download | olio-uboot-2014.01-8cc13c13f1d154c8fa8fff56cea357ed38af76bf.tar.xz olio-uboot-2014.01-8cc13c13f1d154c8fa8fff56cea357ed38af76bf.zip | |
Initial cleanup of Davinci Ethernet driver
 Removed pointless #ifdefs
 Moved functions around in file in preparation for switch to newer API
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
| -rw-r--r-- | drivers/net/davinci_emac.c | 146 | 
1 files changed, 69 insertions, 77 deletions
| diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c index f6f81df6c..f5cec0547 100644 --- a/drivers/net/davinci_emac.c +++ b/drivers/net/davinci_emac.c @@ -42,10 +42,6 @@  #include <miiphy.h>  #include <asm/arch/emac_defs.h> -#ifdef CONFIG_DRIVER_TI_EMAC - -#ifdef CONFIG_CMD_NET -  unsigned int	emac_dbg = 0;  #define debug_emac(fmt,args...)	if (emac_dbg) printf(fmt,##args) @@ -291,77 +287,6 @@ int davinci_eth_miiphy_initialize(bd_t *bis)  }  #endif -/* - * This function initializes the emac hardware. It does NOT initialize - * EMAC modules power or pin multiplexors, that is done by board_init() - * much earlier in bootup process. Returns 1 on success, 0 otherwise. - */ -static int davinci_eth_hw_init(void) -{ -	u_int32_t	phy_id; -	u_int16_t	tmp; -	int		i; - -	davinci_eth_mdio_enable(); - -	for (i = 0; i < 256; i++) { -		if (adap_mdio->ALIVE) -			break; -		udelay(10); -	} - -	if (i >= 256) { -		printf("No ETH PHY detected!!!\n"); -		return(0); -	} - -	/* Find if a PHY is connected and get it's address */ -	if (!davinci_eth_phy_detect()) -		return(0); - -	/* Get PHY ID and initialize phy_ops for a detected PHY */ -	if (!davinci_eth_phy_read(active_phy_addr, PHY_PHYIDR1, &tmp)) { -		active_phy_addr = 0xff; -		return(0); -	} - -	phy_id = (tmp << 16) & 0xffff0000; - -	if (!davinci_eth_phy_read(active_phy_addr, PHY_PHYIDR2, &tmp)) { -		active_phy_addr = 0xff; -		return(0); -	} - -	phy_id |= tmp & 0x0000ffff; - -	switch (phy_id) { -		case PHY_LXT972: -			sprintf(phy.name, "LXT972 @ 0x%02x", active_phy_addr); -			phy.init = lxt972_init_phy; -			phy.is_phy_connected = lxt972_is_phy_connected; -			phy.get_link_speed = lxt972_get_link_speed; -			phy.auto_negotiate = lxt972_auto_negotiate; -			break; -		case PHY_DP83848: -			sprintf(phy.name, "DP83848 @ 0x%02x", active_phy_addr); -			phy.init = dp83848_init_phy; -			phy.is_phy_connected = dp83848_is_phy_connected; -			phy.get_link_speed = dp83848_get_link_speed; -			phy.auto_negotiate = dp83848_auto_negotiate; -			break; -		default: -			sprintf(phy.name, "GENERIC @ 0x%02x", active_phy_addr); -			phy.init = gen_init_phy; -			phy.is_phy_connected = gen_is_phy_connected; -			phy.get_link_speed = gen_get_link_speed; -			phy.auto_negotiate = gen_auto_negotiate; -	} - -	printf("Ethernet PHY: %s\n", phy.name); - -	return(1); -} -  /* Eth device open */  static int davinci_eth_open(void) @@ -650,6 +575,73 @@ static int davinci_eth_rcv_packet (void)  	return (0);  } -#endif /* CONFIG_CMD_NET */ +/* + * This function initializes the emac hardware. It does NOT initialize + * EMAC modules power or pin multiplexors, that is done by board_init() + * much earlier in bootup process. Returns 1 on success, 0 otherwise. + */ +static int davinci_eth_hw_init(void) +{ +	u_int32_t	phy_id; +	u_int16_t	tmp; +	int		i; + +	davinci_eth_mdio_enable(); + +	for (i = 0; i < 256; i++) { +		if (adap_mdio->ALIVE) +			break; +		udelay(10); +	} + +	if (i >= 256) { +		printf("No ETH PHY detected!!!\n"); +		return(0); +	} + +	/* Find if a PHY is connected and get it's address */ +	if (!davinci_eth_phy_detect()) +		return(0); + +	/* Get PHY ID and initialize phy_ops for a detected PHY */ +	if (!davinci_eth_phy_read(active_phy_addr, PHY_PHYIDR1, &tmp)) { +		active_phy_addr = 0xff; +		return(0); +	} -#endif /* CONFIG_DRIVER_TI_EMAC */ +	phy_id = (tmp << 16) & 0xffff0000; + +	if (!davinci_eth_phy_read(active_phy_addr, PHY_PHYIDR2, &tmp)) { +		active_phy_addr = 0xff; +		return(0); +	} + +	phy_id |= tmp & 0x0000ffff; + +	switch (phy_id) { +		case PHY_LXT972: +			sprintf(phy.name, "LXT972 @ 0x%02x", active_phy_addr); +			phy.init = lxt972_init_phy; +			phy.is_phy_connected = lxt972_is_phy_connected; +			phy.get_link_speed = lxt972_get_link_speed; +			phy.auto_negotiate = lxt972_auto_negotiate; +			break; +		case PHY_DP83848: +			sprintf(phy.name, "DP83848 @ 0x%02x", active_phy_addr); +			phy.init = dp83848_init_phy; +			phy.is_phy_connected = dp83848_is_phy_connected; +			phy.get_link_speed = dp83848_get_link_speed; +			phy.auto_negotiate = dp83848_auto_negotiate; +			break; +		default: +			sprintf(phy.name, "GENERIC @ 0x%02x", active_phy_addr); +			phy.init = gen_init_phy; +			phy.is_phy_connected = gen_is_phy_connected; +			phy.get_link_speed = gen_get_link_speed; +			phy.auto_negotiate = gen_auto_negotiate; +	} + +	printf("Ethernet PHY: %s\n", phy.name); + +	return(1); +} |