All drivers need to be converted to CONFIG_NET_MULTI. This patch converts the dm9000 driver. Signed-off-by: Thomas Smits Signed-off-by: Remy Bohmer --- board/atmel/at91sam9261ek/at91sam9261ek.c | 7 ++++ board/freescale/m5253demo/m5253demo.c | 9 +++++ board/scb9328/scb9328.c | 8 +++++ board/trizepsiv/conxs.c | 8 +++++ drivers/net/dm9000x.c | 47 +++++++++++++++++++----------- include/configs/M5253DEMO.h | 1 include/configs/at91sam9261ek.h | 1 include/configs/scb9328.h | 1 include/configs/trizepsiv.h | 1 include/netdev.h | 1 10 files changed, 67 insertions(+), 17 deletions(-) Index: u-boot-usb.tmp/board/atmel/at91sam9261ek/at91sam9261ek.c =================================================================== --- u-boot-usb.tmp.orig/board/atmel/at91sam9261ek/at91sam9261ek.c 2009-05-02 21:43:42.000000000 +0200 +++ u-boot-usb.tmp/board/atmel/at91sam9261ek/at91sam9261ek.c 2009-05-02 21:46:50.000000000 +0200 @@ -36,6 +36,7 @@ #include #if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_DRIVER_DM9000) #include +#include #endif DECLARE_GLOBAL_DATA_PTR; @@ -227,6 +228,12 @@ int board_init(void) return 0; } +#ifdef CONFIG_DRIVER_DM9000 + int board_eth_init(bd_t *bis) + { + return dm9000_initialize(bis); + } + #endif int dram_init(void) { gd->bd->bi_dram[0].start = PHYS_SDRAM; Index: u-boot-usb.tmp/board/freescale/m5253demo/m5253demo.c =================================================================== --- u-boot-usb.tmp.orig/board/freescale/m5253demo/m5253demo.c 2009-05-02 21:43:42.000000000 +0200 +++ u-boot-usb.tmp/board/freescale/m5253demo/m5253demo.c 2009-05-02 21:46:50.000000000 +0200 @@ -26,6 +26,7 @@ #include #include +#include int checkboard(void) { @@ -138,3 +139,11 @@ void ide_set_reset(int idereset) } } #endif /* CONFIG_CMD_IDE */ + + +#ifdef CONFIG_DRIVER_DM9000 +int board_eth_init(bd_t *bis) +{ + return dm9000_initialize(bis); +} +#endif Index: u-boot-usb.tmp/board/scb9328/scb9328.c =================================================================== --- u-boot-usb.tmp.orig/board/scb9328/scb9328.c 2009-05-02 21:43:42.000000000 +0200 +++ u-boot-usb.tmp/board/scb9328/scb9328.c 2009-05-02 21:46:50.000000000 +0200 @@ -19,6 +19,7 @@ */ #include +#include DECLARE_GLOBAL_DATA_PTR; @@ -70,3 +71,10 @@ void show_boot_progress (int status) { return; } + +#ifdef CONFIG_DRIVER_DM9000 +int board_eth_init(bd_t *bis) +{ + return dm9000_initialize(bis); +} +#endif Index: u-boot-usb.tmp/board/trizepsiv/conxs.c =================================================================== --- u-boot-usb.tmp.orig/board/trizepsiv/conxs.c 2009-05-02 21:43:42.000000000 +0200 +++ u-boot-usb.tmp/board/trizepsiv/conxs.c 2009-05-02 21:46:50.000000000 +0200 @@ -33,6 +33,7 @@ #include #include +#include DECLARE_GLOBAL_DATA_PTR; @@ -144,3 +145,10 @@ int dram_init (void) return 0; } + +#ifdef CONFIG_DRIVER_DM9000 +int board_eth_init(bd_t *bis) +{ + return dm9000_initialize(bis); +} +#endif Index: u-boot-usb.tmp/drivers/net/dm9000x.c =================================================================== --- u-boot-usb.tmp.orig/drivers/net/dm9000x.c 2009-05-02 21:43:41.000000000 +0200 +++ u-boot-usb.tmp/drivers/net/dm9000x.c 2009-05-02 21:46:50.000000000 +0200 @@ -54,6 +54,9 @@ v1.2 03/18/2003 Weilun Huang + - moved to funtion ptr based API + TODO: external MII is not functional, only internal at the moment. */ @@ -102,14 +105,12 @@ typedef struct board_info { void (*outblk)(volatile void *data_ptr, int count); void (*inblk)(void *data_ptr, int count); void (*rx_status)(u16 *RxStatus, u16 *RxLen); + struct eth_device netdev; } board_info_t; static board_info_t dm9000_info; + /* function declaration ------------------------------------- */ -int eth_init(bd_t * bd); -int eth_send(volatile void *, int); -int eth_rx(void); -void eth_halt(void); static int dm9000_probe(void); static u16 phy_read(int); static void phy_write(int, u16); @@ -279,17 +280,16 @@ dm9000_reset(void) printf("ERROR: resetting DM9000 -> not responding\n"); } -/* Initilize dm9000 board +/* Initialize dm9000 board */ -int -eth_init(bd_t * bd) +static int dm9000_init(struct eth_device *dev, bd_t *bd) { int i, oft, lnk; u8 io_mode; struct board_info *db = &dm9000_info; uchar enetaddr[6]; - DM9000_DBG("eth_init()\n"); + DM9000_DBG("%s\n", __func__); /* RESET device */ dm9000_reset(); @@ -411,13 +411,13 @@ eth_init(bd_t * bd) Hardware start transmission. Send a packet to media from the upper layer. */ -int -eth_send(volatile void *packet, int length) +static int dm9000_send(struct eth_device *netdev, volatile void *packet, + int length) { int tmo; struct board_info *db = &dm9000_info; - DM9000_DMP_PACKET("eth_send", packet, length); + DM9000_DMP_PACKET(__func__ , packet, length); DM9000_iow(DM9000_ISR, IMR_PTM); /* Clear Tx bit in ISR */ @@ -453,10 +453,9 @@ eth_send(volatile void *packet, int leng Stop the interface. The interface is stopped when it is brought. */ -void -eth_halt(void) +static void dm9000_halt(struct eth_device *netdev) { - DM9000_DBG("eth_halt\n"); + DM9000_DBG("%s\n", __func__); /* RESET devie */ phy_write(0, 0x8000); /* PHY RESET */ @@ -468,8 +467,7 @@ eth_halt(void) /* Received a packet and pass to upper layer */ -int -eth_rx(void) +static int dm9000_rx(struct eth_device *netdev) { u8 rxbyte, *rdptr = (u8 *) NetRxPackets[0]; u16 RxStatus, RxLen = 0; @@ -529,7 +527,7 @@ eth_rx(void) dm9000_reset(); } } else { - DM9000_DMP_PACKET("eth_rx", rdptr, RxLen); + DM9000_DMP_PACKET(__func__ , rdptr, RxLen); DM9000_DBG("passing packet to upper layer\n"); NetReceive(NetRxPackets[0], RxLen); @@ -621,3 +619,18 @@ phy_write(int reg, u16 value) DM9000_iow(DM9000_EPCR, 0x0); /* Clear phyxcer write command */ DM9000_DBG("phy_write(reg:0x%x, value:0x%x)\n", reg, value); } + +int dm9000_initialize(bd_t *bis) +{ + struct eth_device *dev = &(dm9000_info.netdev); + + dev->init = dm9000_init; + dev->halt = dm9000_halt; + dev->send = dm9000_send; + dev->recv = dm9000_rx; + sprintf(dev->name, "dm9000"); + + eth_register(dev); + + return 0; +} Index: u-boot-usb.tmp/include/configs/M5253DEMO.h =================================================================== --- u-boot-usb.tmp.orig/include/configs/M5253DEMO.h 2009-05-02 21:43:41.000000000 +0200 +++ u-boot-usb.tmp/include/configs/M5253DEMO.h 2009-05-02 21:46:50.000000000 +0200 @@ -88,6 +88,7 @@ # define _IO_BASE 0 #endif +#define CONFIG_NET_MULTI 1 #define CONFIG_DRIVER_DM9000 #ifdef CONFIG_DRIVER_DM9000 # define CONFIG_DM9000_BASE (CONFIG_SYS_CS1_BASE | 0x300) Index: u-boot-usb.tmp/include/configs/at91sam9261ek.h =================================================================== --- u-boot-usb.tmp.orig/include/configs/at91sam9261ek.h 2009-05-02 21:43:41.000000000 +0200 +++ u-boot-usb.tmp/include/configs/at91sam9261ek.h 2009-05-02 21:46:50.000000000 +0200 @@ -132,6 +132,7 @@ #define CONFIG_SYS_NO_FLASH 1 /* Ethernet */ +#define CONFIG_NET_MULTI 1 #define CONFIG_DRIVER_DM9000 1 #define CONFIG_DM9000_BASE 0x30000000 #define DM9000_IO CONFIG_DM9000_BASE Index: u-boot-usb.tmp/include/configs/scb9328.h =================================================================== --- u-boot-usb.tmp.orig/include/configs/scb9328.h 2009-05-02 21:43:41.000000000 +0200 +++ u-boot-usb.tmp/include/configs/scb9328.h 2009-05-02 21:46:50.000000000 +0200 @@ -255,6 +255,7 @@ #define CONFIG_SYS_CS5U_VAL 0x00008400 #define CONFIG_SYS_CS5L_VAL 0x00000D03 +#define CONFIG_NET_MULTI 1 #define CONFIG_DRIVER_DM9000 1 #define CONFIG_DM9000_BASE 0x16000000 #define DM9000_IO CONFIG_DM9000_BASE Index: u-boot-usb.tmp/include/configs/trizepsiv.h =================================================================== --- u-boot-usb.tmp.orig/include/configs/trizepsiv.h 2009-05-02 21:43:41.000000000 +0200 +++ u-boot-usb.tmp/include/configs/trizepsiv.h 2009-05-02 21:46:50.000000000 +0200 @@ -277,6 +277,7 @@ #define CONFIG_SYS_MCIO0_VAL 0x00008407 #define CONFIG_SYS_MCIO1_VAL 0x0000c108 +#define CONFIG_NET_MULTI 1 #define CONFIG_DRIVER_DM9000 1 #define CONFIG_DM9000_BASE 0x08000000 #define DM9000_IO CONFIG_DM9000_BASE Index: u-boot-usb.tmp/include/netdev.h =================================================================== --- u-boot-usb.tmp.orig/include/netdev.h 2009-05-02 21:43:42.000000000 +0200 +++ u-boot-usb.tmp/include/netdev.h 2009-05-02 21:46:50.000000000 +0200 @@ -73,6 +73,7 @@ int tsi108_eth_initialize(bd_t *bis); int uec_initialize(int index); int uli526x_initialize(bd_t *bis); int sh_eth_initialize(bd_t *bis); +int dm9000_initialize(bd_t *bis); /* Boards with PCI network controllers can call this from their board_eth_init() * function to initialize whatever's on board. --