From: Ben Warren <biggerbadderben@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 3/3][Net][ARM] Switched dm644x_emac Ethernet driver to use newer API
Date: Tue, 28 Apr 2009 10:12:13 -0700 [thread overview]
Message-ID: <1240938733-3121-4-git-send-email-biggerbadderben@gmail.com> (raw)
In-Reply-To: <1240938733-3121-3-git-send-email-biggerbadderben@gmail.com>
Added CONFIG_NET_MULTI to all Davinci boards
Removed all calls to Davinci network driver from board code
Added cpu_eth_init() to cpu/arm926ejs/cpu.c
Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
---
board/davinci/common/misc.h | 1 -
board/davinci/dvevm/dvevm.c | 3 -
board/davinci/schmoogie/schmoogie.c | 3 -
board/davinci/sffsdr/sffsdr.c | 3 -
board/davinci/sonata/sonata.c | 3 -
cpu/arm926ejs/cpu.c | 13 ++++++
drivers/net/dm644x_emac.c | 70 ++++++++++++-----------------------
include/configs/davinci_dvevm.h | 1 +
include/configs/davinci_schmoogie.h | 1 +
include/configs/davinci_sffsdr.h | 1 +
include/configs/davinci_sonata.h | 1 +
include/netdev.h | 1 +
net/eth.c | 4 --
13 files changed, 42 insertions(+), 63 deletions(-)
diff --git a/board/davinci/common/misc.h b/board/davinci/common/misc.h
index 4a57dbb..25b19b8 100644
--- a/board/davinci/common/misc.h
+++ b/board/davinci/common/misc.h
@@ -23,7 +23,6 @@
#define __MISC_H
extern void timer_init(void);
-extern int eth_hw_init(void);
void dv_display_clk_infos(void);
int dvevm_read_mac_address(uint8_t *buf);
diff --git a/board/davinci/dvevm/dvevm.c b/board/davinci/dvevm/dvevm.c
index 22308de..9fdfa58 100644
--- a/board/davinci/dvevm/dvevm.c
+++ b/board/davinci/dvevm/dvevm.c
@@ -76,9 +76,6 @@ int misc_init_r(void)
if (dvevm_read_mac_address(eeprom_enetaddr))
dv_configure_mac_address(eeprom_enetaddr);
- if (!eth_hw_init())
- printf("ethernet init failed!\n");
-
i2c_read(0x39, 0x00, 1, &video_mode, 1);
setenv("videostd", ((video_mode & 0x80) ? "pal" : "ntsc"));
diff --git a/board/davinci/schmoogie/schmoogie.c b/board/davinci/schmoogie/schmoogie.c
index 433769a..738e9dd 100644
--- a/board/davinci/schmoogie/schmoogie.c
+++ b/board/davinci/schmoogie/schmoogie.c
@@ -133,8 +133,5 @@ int misc_init_r(void)
forceenv("serial#", (char *)&tmp[0]);
}
- if (!eth_hw_init())
- printf("ethernet init failed!\n");
-
return(0);
}
diff --git a/board/davinci/sffsdr/sffsdr.c b/board/davinci/sffsdr/sffsdr.c
index e76f86d..45d0456 100644
--- a/board/davinci/sffsdr/sffsdr.c
+++ b/board/davinci/sffsdr/sffsdr.c
@@ -146,8 +146,5 @@ int misc_init_r(void)
if (sffsdr_read_mac_address(eeprom_enetaddr))
dv_configure_mac_address(eeprom_enetaddr);
- if (!eth_hw_init())
- printf("Ethernet init failed\n");
-
return(0);
}
diff --git a/board/davinci/sonata/sonata.c b/board/davinci/sonata/sonata.c
index d56b443..73bd25f 100644
--- a/board/davinci/sonata/sonata.c
+++ b/board/davinci/sonata/sonata.c
@@ -73,8 +73,5 @@ int misc_init_r(void)
if (dvevm_read_mac_address(eeprom_enetaddr))
dv_configure_mac_address(eeprom_enetaddr);
- if (!eth_hw_init())
- printf("ethernet init failed!\n");
-
return(0);
}
diff --git a/cpu/arm926ejs/cpu.c b/cpu/arm926ejs/cpu.c
index 6307e33..d711b24 100644
--- a/cpu/arm926ejs/cpu.c
+++ b/cpu/arm926ejs/cpu.c
@@ -31,6 +31,7 @@
#include <common.h>
#include <command.h>
+#include <netdev.h>
#include <arm926ejs.h>
#include <asm/system.h>
@@ -80,3 +81,15 @@ static void cache_flush (void)
asm ("mcr p15, 0, %0, c7, c7, 0": :"r" (i));
}
+
+/*
+ * * Initializes on-chip ethernet controllers.
+ * * to override, implement board_eth_init()
+ * */
+int cpu_eth_init(bd_t *bis)
+{
+#if defined(CONFIG_DRIVER_TI_EMAC)
+ dm644x_emac_initialize();
+#endif
+ return 0;
+}
diff --git a/drivers/net/dm644x_emac.c b/drivers/net/dm644x_emac.c
index f5cec05..7c5dace 100644
--- a/drivers/net/dm644x_emac.c
+++ b/drivers/net/dm644x_emac.c
@@ -40,17 +40,12 @@
#include <command.h>
#include <net.h>
#include <miiphy.h>
+#include <malloc.h>
#include <asm/arch/emac_defs.h>
unsigned int emac_dbg = 0;
#define debug_emac(fmt,args...) if (emac_dbg) printf(fmt,##args)
-/* Internal static functions */
-static int davinci_eth_hw_init (void);
-static int davinci_eth_open (void);
-static int davinci_eth_close (void);
-static int davinci_eth_send_packet (volatile void *packet, int length);
-static int davinci_eth_rcv_packet (void);
static void davinci_eth_mdio_enable(void);
static int gen_init_phy(int phy_addr);
@@ -58,38 +53,10 @@ static int gen_is_phy_connected(int phy_addr);
static int gen_get_link_speed(int phy_addr);
static int gen_auto_negotiate(int phy_addr);
-/* Wrappers exported to the U-Boot proper */
-int eth_hw_init(void)
-{
- return(davinci_eth_hw_init());
-}
-
-int eth_init(bd_t * bd)
-{
- return(davinci_eth_open());
-}
-
-void eth_halt(void)
-{
- davinci_eth_close();
-}
-
-int eth_send(volatile void *packet, int length)
-{
- return(davinci_eth_send_packet(packet, length));
-}
-
-int eth_rx(void)
-{
- return(davinci_eth_rcv_packet());
-}
-
void eth_mdio_enable(void)
{
davinci_eth_mdio_enable();
}
-/* End of wrappers */
-
static u_int8_t davinci_eth_mac_addr[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
@@ -279,17 +246,11 @@ static int davinci_mii_phy_write(char *devname, unsigned char addr, unsigned cha
return(davinci_eth_phy_write(addr, reg, value) ? 0 : 1);
}
-int davinci_eth_miiphy_initialize(bd_t *bis)
-{
- miiphy_register(phy.name, davinci_mii_phy_read, davinci_mii_phy_write);
-
- return(1);
-}
#endif
/* Eth device open */
-static int davinci_eth_open(void)
+static int davinci_eth_open(struct eth_device *dev, bd_t *bis)
{
dv_reg_p addr;
u_int32_t clkdiv, cnt;
@@ -441,7 +402,7 @@ static void davinci_eth_ch_teardown(int ch)
}
/* Eth device close */
-static int davinci_eth_close(void)
+static void davinci_eth_close(struct eth_device *dev)
{
debug_emac("+ emac_close\n");
@@ -453,7 +414,6 @@ static int davinci_eth_close(void)
adap_ewrap->EWCTL = 0;
debug_emac("- emac_close\n");
- return(1);
}
static int tx_send_loop = 0;
@@ -462,7 +422,8 @@ static int tx_send_loop = 0;
* This function sends a single packet on the network and returns
* positive number (number of bytes transmitted) or negative for error
*/
-static int davinci_eth_send_packet (volatile void *packet, int length)
+static int davinci_eth_send_packet (struct eth_device *dev,
+ volatile void *packet, int length)
{
int ret_status = -1;
@@ -509,7 +470,7 @@ static int davinci_eth_send_packet (volatile void *packet, int length)
/*
* This function handles receipt of a packet from the network
*/
-static int davinci_eth_rcv_packet (void)
+static int davinci_eth_rcv_packet (struct eth_device *dev)
{
volatile emac_desc *rx_curr_desc;
volatile emac_desc *curr_desc;
@@ -580,11 +541,27 @@ static int davinci_eth_rcv_packet (void)
* 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)
+int dm644x_emac_initialize(void)
{
u_int32_t phy_id;
u_int16_t tmp;
int i;
+ struct eth_device *dev;
+
+ dev = malloc(sizeof *dev);
+
+ if (dev == NULL)
+ return -1;
+
+ memset(dev, 0, sizeof *dev);
+
+ dev->iobase = 0;
+ dev->init = davinci_eth_open;
+ dev->halt = davinci_eth_close;
+ dev->send = davinci_eth_send_packet;
+ dev->recv = davinci_eth_rcv_packet;
+
+ eth_register(dev);
davinci_eth_mdio_enable();
@@ -643,5 +620,6 @@ static int davinci_eth_hw_init(void)
printf("Ethernet PHY: %s\n", phy.name);
+ miiphy_register(phy.name, davinci_mii_phy_read, davinci_mii_phy_write);
return(1);
}
diff --git a/include/configs/davinci_dvevm.h b/include/configs/davinci_dvevm.h
index fae430b..bc5ed5b 100644
--- a/include/configs/davinci_dvevm.h
+++ b/include/configs/davinci_dvevm.h
@@ -108,6 +108,7 @@
#define CONFIG_BOOTP_DNS2
#define CONFIG_BOOTP_SEND_HOSTNAME
#define CONFIG_NET_RETRY_COUNT 10
+#define CONFIG_NET_MULTI
/*=====================*/
/* Flash & Environment */
/*=====================*/
diff --git a/include/configs/davinci_schmoogie.h b/include/configs/davinci_schmoogie.h
index 923e477..97e3701 100644
--- a/include/configs/davinci_schmoogie.h
+++ b/include/configs/davinci_schmoogie.h
@@ -76,6 +76,7 @@
#define CONFIG_BOOTP_SEND_HOSTNAME
#define CONFIG_NET_RETRY_COUNT 10
#define CONFIG_OVERWRITE_ETHADDR_ONCE
+#define CONFIG_NET_MULTI
/*=====================*/
/* Flash & Environment */
/*=====================*/
diff --git a/include/configs/davinci_sffsdr.h b/include/configs/davinci_sffsdr.h
index 73a59db..160a0d6 100644
--- a/include/configs/davinci_sffsdr.h
+++ b/include/configs/davinci_sffsdr.h
@@ -74,6 +74,7 @@
#define CONFIG_BOOTP_SEND_HOSTNAME
#define CONFIG_NET_RETRY_COUNT 10
#define CONFIG_OVERWRITE_ETHADDR_ONCE
+#define CONFIG_NET_MULTI
/* Flash & Environment */
#undef CONFIG_ENV_IS_IN_FLASH
#define CONFIG_SYS_NO_FLASH
diff --git a/include/configs/davinci_sonata.h b/include/configs/davinci_sonata.h
index 70d2c7d..95c5eba 100644
--- a/include/configs/davinci_sonata.h
+++ b/include/configs/davinci_sonata.h
@@ -108,6 +108,7 @@
#define CONFIG_BOOTP_DNS2
#define CONFIG_BOOTP_SEND_HOSTNAME
#define CONFIG_NET_RETRY_COUNT 10
+#define CONFIG_NET_MULTI
/*=====================*/
/* Flash & Environment */
/*=====================*/
diff --git a/include/netdev.h b/include/netdev.h
index 63cf730..17b9679 100644
--- a/include/netdev.h
+++ b/include/netdev.h
@@ -44,6 +44,7 @@ int cpu_eth_init(bd_t *bis);
int au1x00_enet_initialize(bd_t*);
int bfin_EMAC_initialize(bd_t *bis);
int dc21x4x_initialize(bd_t *bis);
+int dm644x_emac_initialize(void);
int dnet_eth_initialize(int id, void *regs, unsigned int phy_addr);
int e1000_initialize(bd_t *bis);
int eepro100_initialize(bd_t *bis);
diff --git a/net/eth.c b/net/eth.c
index 4bbf84b..caba80b 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -505,7 +505,6 @@ extern int at91rm9200_miiphy_initialize(bd_t *bis);
extern int emac4xx_miiphy_initialize(bd_t *bis);
extern int mcf52x2_miiphy_initialize(bd_t *bis);
extern int ns7520_miiphy_initialize(bd_t *bis);
-extern int davinci_eth_miiphy_initialize(bd_t *bis);
int eth_initialize(bd_t *bis)
@@ -526,9 +525,6 @@ int eth_initialize(bd_t *bis)
#if defined(CONFIG_DRIVER_NS7520_ETHERNET)
ns7520_miiphy_initialize(bis);
#endif
-#if defined(CONFIG_DRIVER_TI_EMAC)
- davinci_eth_miiphy_initialize(bis);
-#endif
return 0;
}
#endif
--
1.5.6.3
next prev parent reply other threads:[~2009-04-28 17:12 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-28 17:12 [U-Boot] [PATCH 0/3][Net][ARM] Davinci Ethernet driver cleanup Ben Warren
2009-04-28 17:12 ` [U-Boot] [PATCH 1/3][Net][ARM] Moved Davinci Ethernet driver to drivers/net Ben Warren
2009-04-28 17:12 ` [U-Boot] [PATCH 2/3][Net][ARM] Initial cleanup of Davinci Ethernet driver Ben Warren
2009-04-28 17:12 ` Ben Warren [this message]
2009-04-29 20:13 ` [U-Boot] [PATCH 3/3][Net][ARM] Switched dm644x_emac Ethernet driver to use newer API Jean-Christophe PLAGNIOL-VILLARD
2009-04-29 20:29 ` Ben Warren
2009-04-29 20:49 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-29 22:11 ` Ben Warren
2009-04-29 23:19 ` Jean-Christophe PLAGNIOL-VILLARD
2009-04-30 4:28 ` David Brownell
2009-04-28 19:54 ` [U-Boot] [PATCH 1/3][Net][ARM] Moved Davinci Ethernet driver to drivers/net David Brownell
2009-04-28 20:04 ` Ben Warren
2009-04-29 23:32 ` [U-Boot] [PATCH 0/3][Net][ARM] Davinci Ethernet driver cleanup David Brownell
2009-04-29 23:38 ` Ben Warren
2009-04-30 5:59 ` Jean-Christophe PLAGNIOL-VILLARD
[not found] ` <C9D59C82B94F474B872F2092A87F26148147B6A3@dlee07.ent.ti.com>
2009-05-12 17:43 ` Ben Warren
2009-05-12 18:28 ` Jean-Christophe PLAGNIOL-VILLARD
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1240938733-3121-4-git-send-email-biggerbadderben@gmail.com \
--to=biggerbadderben@gmail.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox