All drivers need to be converted to CONFIG_NET_MULTI.
This patch converts the dm9000 driver.

Signed-off-by: Thomas Smits <ts.sm...@gmail.com>
Signed-off-by: Remy Bohmer <li...@bohmer.net>
---
 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 <atmel_lcdc.h>
 #if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_DRIVER_DM9000)
 #include <net.h>
+#include <netdev.h>
 #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 <common.h>
 #include <asm/immap.h>
+#include <netdev.h>
 
 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 <common.h>
+#include <netdev.h>
 
 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 <common.h>
 #include <asm/arch/pxa-regs.h>
+#include <netdev.h>
 
 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 <we
                        - some minor code cleanups
                        These changes are tested with DM9000{A,EP,E} together
                        with a 200MHz Atmel AT91SAM92161 core
+       06/10/2008      Thomas Smits <ts.sm...@gmail.com>
+                       - 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.

-- 

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to