Add struct eth_ops into include/net.h. Pull out ops (function pointers to functions init, send recv, halt etc.) from struct eth_device to the new struct eth_ops. Fix ops usage in all affected drivers.
This is the first preparation step for DM in the net subsystem. Idea is to have pointers to the ops functions stored in a separate static structure. The structure then will be passed to the DM driver instance on driver init. Signed-off-by: Tomas Hlavacek <tmshl...@gmail.com> --- arch/mips/cpu/mips32/au1x00/au1x00_eth.c | 10 +++++----- arch/powerpc/cpu/mpc8220/fec.c | 8 ++++---- arch/powerpc/cpu/mpc8260/ether_fcc.c | 10 +++++----- arch/powerpc/cpu/mpc8260/ether_scc.c | 8 ++++---- arch/powerpc/cpu/mpc85xx/ether_fcc.c | 10 +++++----- arch/powerpc/cpu/mpc8xx/fec.c | 8 ++++---- arch/powerpc/cpu/mpc8xx/scc.c | 8 ++++---- board/Marvell/db64360/mv_eth.c | 8 ++++---- board/Marvell/db64460/mv_eth.c | 8 ++++---- board/davinci/da8xxevm/da830evm.c | 2 +- board/esd/cpci750/mv_eth.c | 8 ++++---- board/evb64260/eth.c | 8 ++++---- board/prodrive/p3mx/mv_eth.c | 8 ++++---- drivers/net/4xx_enet.c | 8 ++++---- drivers/net/altera_tse.c | 10 +++++----- drivers/net/armada100_fec.c | 8 ++++---- drivers/net/at91_emac.c | 10 +++++----- drivers/net/ax88180.c | 8 ++++---- drivers/net/bfin_mac.c | 10 +++++----- drivers/net/calxedaxgmac.c | 8 ++++---- drivers/net/cpsw.c | 8 ++++---- drivers/net/cs8900.c | 8 ++++---- drivers/net/davinci_emac.c | 10 +++++----- drivers/net/dc2114x.c | 8 ++++---- drivers/net/designware.c | 10 +++++----- drivers/net/dm9000x.c | 8 ++++---- drivers/net/dnet.c | 10 +++++----- drivers/net/e1000.c | 8 ++++---- drivers/net/eepro100.c | 8 ++++---- drivers/net/enc28j60.c | 10 +++++----- drivers/net/ep93xx_eth.c | 8 ++++---- drivers/net/ethoc.c | 10 +++++----- drivers/net/fec_mxc.c | 10 +++++----- drivers/net/fm/eth.c | 8 ++++---- drivers/net/fsl_mcdmafec.c | 8 ++++---- drivers/net/ftgmac100.c | 8 ++++---- drivers/net/ftmac100.c | 8 ++++---- drivers/net/greth.c | 8 ++++---- drivers/net/inca-ip_sw.c | 8 ++++---- drivers/net/ks8695eth.c | 8 ++++---- drivers/net/lan91c96.c | 8 ++++---- drivers/net/macb.c | 10 +++++----- drivers/net/mcffec.c | 8 ++++---- drivers/net/mpc512x_fec.c | 8 ++++---- drivers/net/mpc5xxx_fec.c | 8 ++++---- drivers/net/mvgbe.c | 10 +++++----- drivers/net/natsemi.c | 8 ++++---- drivers/net/ne2000_base.c | 8 ++++---- drivers/net/npe/npe.c | 8 ++++---- drivers/net/ns8382x.c | 8 ++++---- drivers/net/pcnet.c | 8 ++++---- drivers/net/plb2800_eth.c | 8 ++++---- drivers/net/rtl8139.c | 10 +++++----- drivers/net/rtl8169.c | 8 ++++---- drivers/net/sh_eth.c | 8 ++++---- drivers/net/smc91111.c | 10 +++++----- drivers/net/smc911x.c | 8 ++++---- drivers/net/tsec.c | 10 +++++----- drivers/net/tsi108_eth.c | 8 ++++---- drivers/net/uli526x.c | 8 ++++---- drivers/net/xilinx_axi_emac.c | 10 +++++----- drivers/net/xilinx_emaclite.c | 8 ++++---- drivers/net/xilinx_ll_temac.c | 14 +++++++------- drivers/net/zynq_gem.c | 10 +++++----- drivers/qe/uec.c | 8 ++++---- drivers/usb/eth/asix.c | 10 +++++----- drivers/usb/eth/smsc95xx.c | 10 +++++----- include/net.h | 17 +++++++++++------ net/eth.c | 16 ++++++++-------- 69 files changed, 308 insertions(+), 303 deletions(-) diff --git a/arch/mips/cpu/mips32/au1x00/au1x00_eth.c b/arch/mips/cpu/mips32/au1x00/au1x00_eth.c index ac03a45..2909fb3 100644 --- a/arch/mips/cpu/mips32/au1x00/au1x00_eth.c +++ b/arch/mips/cpu/mips32/au1x00/au1x00_eth.c @@ -295,11 +295,11 @@ int au1x00_enet_initialize(bd_t *bis){ sprintf(dev->name, "Au1X00 ethernet"); dev->iobase = 0; - dev->priv = 0; - dev->init = au1x00_init; - dev->halt = au1x00_halt; - dev->send = au1x00_send; - dev->recv = au1x00_recv; + dev->priv = 0; + dev->eo->init = au1x00_init; + dev->eo->halt = au1x00_halt; + dev->eo->send = au1x00_send; + dev->eo->recv = au1x00_recv; eth_register(dev); diff --git a/arch/powerpc/cpu/mpc8220/fec.c b/arch/powerpc/cpu/mpc8220/fec.c index aaf9be1..9d6fcc1 100644 --- a/arch/powerpc/cpu/mpc8220/fec.c +++ b/arch/powerpc/cpu/mpc8220/fec.c @@ -833,10 +833,10 @@ int mpc8220_fec_initialize (bd_t * bis) dev->priv = (void *) fec; dev->iobase = MMAP_FEC1; - dev->init = mpc8220_fec_init; - dev->halt = mpc8220_fec_halt; - dev->send = mpc8220_fec_send; - dev->recv = mpc8220_fec_recv; + dev->eo->init = mpc8220_fec_init; + dev->eo->halt = mpc8220_fec_halt; + dev->eo->send = mpc8220_fec_send; + dev->eo->recv = mpc8220_fec_recv; sprintf (dev->name, "FEC"); eth_register (dev); diff --git a/arch/powerpc/cpu/mpc8260/ether_fcc.c b/arch/powerpc/cpu/mpc8260/ether_fcc.c index 1853451..6b78235 100644 --- a/arch/powerpc/cpu/mpc8260/ether_fcc.c +++ b/arch/powerpc/cpu/mpc8260/ether_fcc.c @@ -384,11 +384,11 @@ int fec_initialize(bd_t *bis) sprintf(dev->name, "FCC%d", ether_fcc_info[i].ether_index + 1); - dev->priv = ðer_fcc_info[i]; - dev->init = fec_init; - dev->halt = fec_halt; - dev->send = fec_send; - dev->recv = fec_recv; + dev->priv = ðer_fcc_info[i]; + dev->eo->init = fec_init; + dev->eo->halt = fec_halt; + dev->eo->send = fec_send; + dev->eo->recv = fec_recv; eth_register(dev); diff --git a/arch/powerpc/cpu/mpc8260/ether_scc.c b/arch/powerpc/cpu/mpc8260/ether_scc.c index 3c71219..e56bfdf 100644 --- a/arch/powerpc/cpu/mpc8260/ether_scc.c +++ b/arch/powerpc/cpu/mpc8260/ether_scc.c @@ -372,10 +372,10 @@ int mpc82xx_scc_enet_initialize(bd_t *bis) memset(dev, 0, sizeof *dev); sprintf(dev->name, "SCC"); - dev->init = sec_init; - dev->halt = sec_halt; - dev->send = sec_send; - dev->recv = sec_rx; + dev->eo->init = sec_init; + dev->eo->halt = sec_halt; + dev->eo->send = sec_send; + dev->eo->recv = sec_rx; eth_register(dev); diff --git a/arch/powerpc/cpu/mpc85xx/ether_fcc.c b/arch/powerpc/cpu/mpc85xx/ether_fcc.c index 7d372aa..3b9eafa 100644 --- a/arch/powerpc/cpu/mpc85xx/ether_fcc.c +++ b/arch/powerpc/cpu/mpc85xx/ether_fcc.c @@ -447,11 +447,11 @@ int fec_initialize(bd_t *bis) sprintf(dev->name, "FCC%d", ether_fcc_info[i].ether_index + 1); - dev->priv = ðer_fcc_info[i]; - dev->init = fec_init; - dev->halt = fec_halt; - dev->send = fec_send; - dev->recv = fec_recv; + dev->priv = ðer_fcc_info[i]; + dev->eo->init = fec_init; + dev->eo->halt = fec_halt; + dev->eo->send = fec_send; + dev->eo->recv = fec_recv; eth_register(dev); diff --git a/arch/powerpc/cpu/mpc8xx/fec.c b/arch/powerpc/cpu/mpc8xx/fec.c index b348a98..5934d92 100644 --- a/arch/powerpc/cpu/mpc8xx/fec.c +++ b/arch/powerpc/cpu/mpc8xx/fec.c @@ -178,10 +178,10 @@ int fec_initialize(bd_t *bis) efis->actual_phy_addr = -1; dev->priv = efis; - dev->init = fec_init; - dev->halt = fec_halt; - dev->send = fec_send; - dev->recv = fec_recv; + dev->eo->init = fec_init; + dev->eo->halt = fec_halt; + dev->eo->send = fec_send; + dev->eo->recv = fec_recv; eth_register(dev); diff --git a/arch/powerpc/cpu/mpc8xx/scc.c b/arch/powerpc/cpu/mpc8xx/scc.c index 2c93e24..801c689 100644 --- a/arch/powerpc/cpu/mpc8xx/scc.c +++ b/arch/powerpc/cpu/mpc8xx/scc.c @@ -80,10 +80,10 @@ int scc_initialize(bd_t *bis) sprintf(dev->name, "SCC"); dev->iobase = 0; dev->priv = 0; - dev->init = scc_init; - dev->halt = scc_halt; - dev->send = scc_send; - dev->recv = scc_recv; + dev->eo->init = scc_init; + dev->eo->halt = scc_halt; + dev->eo->send = scc_send; + dev->eo->recv = scc_recv; eth_register(dev); diff --git a/board/Marvell/db64360/mv_eth.c b/board/Marvell/db64360/mv_eth.c index 1874cd1..226b964 100644 --- a/board/Marvell/db64360/mv_eth.c +++ b/board/Marvell/db64360/mv_eth.c @@ -259,10 +259,10 @@ void mv6436x_eth_initialize (bd_t * bis) /* ronen - set the MAC addr in the HW */ eth_port_uc_addr_set (devnum, dev->enetaddr, 0); - dev->init = (void *) db64360_eth_probe; - dev->halt = (void *) ethernet_phy_reset; - dev->send = (void *) db64360_eth_transmit; - dev->recv = (void *) db64360_eth_poll; + dev->eo->init = (void *) db64360_eth_probe; + dev->eo->halt = (void *) ethernet_phy_reset; + dev->eo->send = (void *) db64360_eth_transmit; + dev->eo->recv = (void *) db64360_eth_poll; ethernet_private = calloc (sizeof (*ethernet_private), 1); dev->priv = (void *) ethernet_private; diff --git a/board/Marvell/db64460/mv_eth.c b/board/Marvell/db64460/mv_eth.c index a24a7e8..df09be1 100644 --- a/board/Marvell/db64460/mv_eth.c +++ b/board/Marvell/db64460/mv_eth.c @@ -259,10 +259,10 @@ void mv6446x_eth_initialize (bd_t * bis) /* ronen - set the MAC addr in the HW */ eth_port_uc_addr_set (devnum, dev->enetaddr, 0); - dev->init = (void *) db64460_eth_probe; - dev->halt = (void *) ethernet_phy_reset; - dev->send = (void *) db64460_eth_transmit; - dev->recv = (void *) db64460_eth_poll; + dev->eo->init = (void *) db64460_eth_probe; + dev->eo->halt = (void *) ethernet_phy_reset; + dev->eo->send = (void *) db64460_eth_transmit; + dev->eo->recv = (void *) db64460_eth_poll; ethernet_private = calloc (sizeof (*ethernet_private), 1); dev->priv = (void *)ethernet_private; diff --git a/board/davinci/da8xxevm/da830evm.c b/board/davinci/da8xxevm/da830evm.c index c45c94b..6463a08 100644 --- a/board/davinci/da8xxevm/da830evm.c +++ b/board/davinci/da8xxevm/da830evm.c @@ -284,7 +284,7 @@ int board_eth_init(bd_t *bis) /* provide the resulting addr to the driver */ memcpy(dev->enetaddr, mac_addr, 6); - dev->write_hwaddr(dev); + dev->eo->write_hwaddr(dev); return 0; } diff --git a/board/esd/cpci750/mv_eth.c b/board/esd/cpci750/mv_eth.c index 9455b62..8be3f9b 100644 --- a/board/esd/cpci750/mv_eth.c +++ b/board/esd/cpci750/mv_eth.c @@ -259,10 +259,10 @@ void mv6436x_eth_initialize (bd_t * bis) /* ronen - set the MAC addr in the HW */ eth_port_uc_addr_set (devnum, dev->enetaddr, 0); - dev->init = (void *) db64360_eth_probe; - dev->halt = (void *) ethernet_phy_reset; - dev->send = (void *) db64360_eth_transmit; - dev->recv = (void *) db64360_eth_poll; + dev->eo->init = (void *) db64360_eth_probe; + dev->eo->halt = (void *) ethernet_phy_reset; + dev->eo->send = (void *) db64360_eth_transmit; + dev->eo->recv = (void *) db64360_eth_poll; ethernet_private = calloc (sizeof (*ethernet_private), 1); diff --git a/board/evb64260/eth.c b/board/evb64260/eth.c index a3a3276..783e0ae 100644 --- a/board/evb64260/eth.c +++ b/board/evb64260/eth.c @@ -720,10 +720,10 @@ gt6426x_eth_initialize(bd_t *bis) s = (*e) ? e+1 : e; } - dev->init = (void*)gt6426x_eth_probe; - dev->halt = (void*)gt6426x_eth_reset; - dev->send = (void*)gt6426x_eth_transmit; - dev->recv = (void*)gt6426x_eth_poll; + dev->eo->init = (void *)gt6426x_eth_probe; + dev->eo->halt = (void *)gt6426x_eth_reset; + dev->eo->send = (void *)gt6426x_eth_transmit; + dev->eo->recv = (void *)gt6426x_eth_poll; p = calloc( sizeof(*p), 1 ); dev->priv = (void*)p; diff --git a/board/prodrive/p3mx/mv_eth.c b/board/prodrive/p3mx/mv_eth.c index 06f816d..69c2dba 100644 --- a/board/prodrive/p3mx/mv_eth.c +++ b/board/prodrive/p3mx/mv_eth.c @@ -309,10 +309,10 @@ void mv6446x_eth_initialize (bd_t * bis) /* ronen - set the MAC addr in the HW */ eth_port_uc_addr_set (devnum, dev->enetaddr, 0); - dev->init = (void *) db64460_eth_probe; - dev->halt = (void *) ethernet_phy_reset; - dev->send = (void *) db64460_eth_transmit; - dev->recv = (void *) db64460_eth_poll; + dev->eo->init = (void *) db64460_eth_probe; + dev->eo->halt = (void *) ethernet_phy_reset; + dev->eo->send = (void *) db64460_eth_transmit; + dev->eo->recv = (void *) db64460_eth_poll; ethernet_private = calloc (sizeof (*ethernet_private), 1); dev->priv = (void *)ethernet_private; diff --git a/drivers/net/4xx_enet.c b/drivers/net/4xx_enet.c index 7c6e362..27b66dd 100644 --- a/drivers/net/4xx_enet.c +++ b/drivers/net/4xx_enet.c @@ -2023,10 +2023,10 @@ int ppc_4xx_eth_initialize (bd_t * bis) sprintf (dev->name, "ppc_4xx_eth%d", eth_num - CONFIG_EMAC_NR_START); dev->priv = (void *) hw; - dev->init = ppc_4xx_eth_init; - dev->halt = ppc_4xx_eth_halt; - dev->send = ppc_4xx_eth_send; - dev->recv = ppc_4xx_eth_rx; + dev->eo->init = ppc_4xx_eth_init; + dev->eo->halt = ppc_4xx_eth_halt; + dev->eo->send = ppc_4xx_eth_send; + dev->eo->recv = ppc_4xx_eth_rx; eth_register(dev); diff --git a/drivers/net/altera_tse.c b/drivers/net/altera_tse.c index de517f8..ee1a1f6 100644 --- a/drivers/net/altera_tse.c +++ b/drivers/net/altera_tse.c @@ -951,11 +951,11 @@ int altera_tse_initialize(u8 dev_num, int mac_base, /* init eth structure */ dev->priv = priv; - dev->init = tse_eth_init; - dev->halt = tse_eth_halt; - dev->send = tse_eth_send; - dev->recv = tse_eth_rx; - dev->write_hwaddr = tse_set_mac_address; + dev->eo->init = tse_eth_init; + dev->eo->halt = tse_eth_halt; + dev->eo->send = tse_eth_send; + dev->eo->recv = tse_eth_rx; + dev->eo->write_hwaddr = tse_set_mac_address; sprintf(dev->name, "%s-%hu", "ALTERA_TSE", dev_num); eth_register(dev); diff --git a/drivers/net/armada100_fec.c b/drivers/net/armada100_fec.c index ed7cf20..f256381 100644 --- a/drivers/net/armada100_fec.c +++ b/drivers/net/armada100_fec.c @@ -718,10 +718,10 @@ int armada100_fec_register(unsigned long base_addr) /* must be less than sizeof(dev->name) */ strcpy(dev->name, "armd-fec0"); - dev->init = armdfec_init; - dev->halt = armdfec_halt; - dev->send = armdfec_send; - dev->recv = armdfec_recv; + dev->eo->init = armdfec_init; + dev->eo->halt = armdfec_halt; + dev->eo->send = armdfec_send; + dev->eo->recv = armdfec_recv; eth_register(dev); diff --git a/drivers/net/at91_emac.c b/drivers/net/at91_emac.c index 2fa6b68..3395dcc 100644 --- a/drivers/net/at91_emac.c +++ b/drivers/net/at91_emac.c @@ -518,11 +518,11 @@ int at91emac_register(bd_t *bis, unsigned long iobase) sprintf(dev->name, "emac"); dev->iobase = iobase; dev->priv = emacfix; - dev->init = at91emac_init; - dev->halt = at91emac_halt; - dev->send = at91emac_send; - dev->recv = at91emac_recv; - dev->write_hwaddr = at91emac_write_hwaddr; + dev->eo->init = at91emac_init; + dev->eo->halt = at91emac_halt; + dev->eo->send = at91emac_send; + dev->eo->recv = at91emac_recv; + dev->eo->write_hwaddr = at91emac_write_hwaddr; eth_register(dev); diff --git a/drivers/net/ax88180.c b/drivers/net/ax88180.c index f501768..464f261 100644 --- a/drivers/net/ax88180.c +++ b/drivers/net/ax88180.c @@ -725,10 +725,10 @@ int ax88180_initialize (bd_t * bis) sprintf (dev->name, "ax88180"); dev->iobase = AX88180_BASE; dev->priv = priv; - dev->init = ax88180_init; - dev->halt = ax88180_halt; - dev->send = ax88180_send; - dev->recv = ax88180_recv; + dev->eo->init = ax88180_init; + dev->eo->halt = ax88180_halt; + dev->eo->send = ax88180_send; + dev->eo->recv = ax88180_recv; priv->BusWidth = BUS_WIDTH_32; priv->PadSize = 3; diff --git a/drivers/net/bfin_mac.c b/drivers/net/bfin_mac.c index c63398e..ef4736f 100644 --- a/drivers/net/bfin_mac.c +++ b/drivers/net/bfin_mac.c @@ -103,11 +103,11 @@ int bfin_EMAC_initialize(bd_t *bis) dev->iobase = 0; dev->priv = 0; - dev->init = bfin_EMAC_init; - dev->halt = bfin_EMAC_halt; - dev->send = bfin_EMAC_send; - dev->recv = bfin_EMAC_recv; - dev->write_hwaddr = bfin_EMAC_setup_addr; + dev->eo->init = bfin_EMAC_init; + dev->eo->halt = bfin_EMAC_halt; + dev->eo->send = bfin_EMAC_send; + dev->eo->recv = bfin_EMAC_recv; + dev->eo->write_hwaddr = bfin_EMAC_setup_addr; eth_register(dev); diff --git a/drivers/net/calxedaxgmac.c b/drivers/net/calxedaxgmac.c index e3553d6..2346feb 100644 --- a/drivers/net/calxedaxgmac.c +++ b/drivers/net/calxedaxgmac.c @@ -543,10 +543,10 @@ int calxedaxgmac_initialize(u32 id, ulong base_addr) macaddr[0] = readl(®s->macaddr[0].lo); memcpy(dev->enetaddr, macaddr, 6); - dev->init = xgmac_init; - dev->send = xgmac_tx; - dev->recv = xgmac_rx; - dev->halt = xgmac_halt; + dev->eo->init = xgmac_init; + dev->eo->send = xgmac_tx; + dev->eo->recv = xgmac_rx; + dev->eo->halt = xgmac_halt; eth_register(dev); diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c index af3d859..c120d4e 100644 --- a/drivers/net/cpsw.c +++ b/drivers/net/cpsw.c @@ -974,10 +974,10 @@ int cpsw_register(struct cpsw_platform_data *data) strcpy(dev->name, "cpsw"); dev->iobase = 0; - dev->init = cpsw_init; - dev->halt = cpsw_halt; - dev->send = cpsw_send; - dev->recv = cpsw_recv; + dev->eo->init = cpsw_init; + dev->eo->halt = cpsw_halt; + dev->eo->send = cpsw_send; + dev->eo->recv = cpsw_recv; dev->priv = priv; eth_register(dev); diff --git a/drivers/net/cs8900.c b/drivers/net/cs8900.c index 6aaa0cf..65a4254 100644 --- a/drivers/net/cs8900.c +++ b/drivers/net/cs8900.c @@ -320,10 +320,10 @@ int cs8900_initialize(u8 dev_num, int base_addr) dev->iobase = base_addr; dev->priv = priv; - dev->init = cs8900_init; - dev->halt = cs8900_halt; - dev->send = cs8900_send; - dev->recv = cs8900_recv; + dev->eo->init = cs8900_init; + dev->eo->halt = cs8900_halt; + dev->eo->send = cs8900_send; + dev->eo->recv = cs8900_recv; /* Load MAC address from EEPROM */ cs8900_get_enetaddr(dev); diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c index 1db586d..a221092 100644 --- a/drivers/net/davinci_emac.c +++ b/drivers/net/davinci_emac.c @@ -791,11 +791,11 @@ int davinci_emac_initialize(void) sprintf(dev->name, "DaVinci-EMAC"); 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; - dev->write_hwaddr = davinci_eth_set_mac_addr; + dev->eo->init = davinci_eth_open; + dev->eo->halt = davinci_eth_close; + dev->eo->send = davinci_eth_send_packet; + dev->eo->recv = davinci_eth_rcv_packet; + dev->eo->write_hwaddr = davinci_eth_set_mac_addr; eth_register(dev); diff --git a/drivers/net/dc2114x.c b/drivers/net/dc2114x.c index d9fcb5a..0361699 100644 --- a/drivers/net/dc2114x.c +++ b/drivers/net/dc2114x.c @@ -300,10 +300,10 @@ int dc21x4x_initialize(bd_t *bis) dev->iobase = pci_mem_to_phys(devbusfn, iobase); #endif dev->priv = (void*) devbusfn; - dev->init = dc21x4x_init; - dev->halt = dc21x4x_halt; - dev->send = dc21x4x_send; - dev->recv = dc21x4x_recv; + dev->eo->init = dc21x4x_init; + dev->eo->halt = dc21x4x_halt; + dev->eo->send = dc21x4x_send; + dev->eo->recv = dc21x4x_recv; /* Ensure we're not sleeping. */ pci_write_config_byte(devbusfn, PCI_CFDA_PSM, WAKEUP); diff --git a/drivers/net/designware.c b/drivers/net/designware.c index bf21a08..2d92591 100644 --- a/drivers/net/designware.c +++ b/drivers/net/designware.c @@ -559,11 +559,11 @@ int designware_initialize(u32 id, ulong base_addr, u32 phy_addr, u32 interface) priv->phy_configured = 0; priv->interface = interface; - dev->init = dw_eth_init; - dev->send = dw_eth_send; - dev->recv = dw_eth_recv; - dev->halt = dw_eth_halt; - dev->write_hwaddr = dw_write_hwaddr; + dev->eo->init = dw_eth_init; + dev->eo->send = dw_eth_send; + dev->eo->recv = dw_eth_recv; + dev->eo->halt = dw_eth_halt; + dev->eo->write_hwaddr = dw_write_hwaddr; eth_register(dev); diff --git a/drivers/net/dm9000x.c b/drivers/net/dm9000x.c index f0c4499..bd96948 100644 --- a/drivers/net/dm9000x.c +++ b/drivers/net/dm9000x.c @@ -630,10 +630,10 @@ int dm9000_initialize(bd_t *bis) /* Load MAC address from EEPROM */ dm9000_get_enetaddr(dev); - dev->init = dm9000_init; - dev->halt = dm9000_halt; - dev->send = dm9000_send; - dev->recv = dm9000_rx; + dev->eo->init = dm9000_init; + dev->eo->halt = dm9000_halt; + dev->eo->send = dm9000_send; + dev->eo->recv = dm9000_rx; sprintf(dev->name, "dm9000"); eth_register(dev); diff --git a/drivers/net/dnet.c b/drivers/net/dnet.c index 944a0c0..be0891f 100644 --- a/drivers/net/dnet.c +++ b/drivers/net/dnet.c @@ -374,13 +374,13 @@ int dnet_eth_initialize(int id, void *regs, unsigned int phy_addr) dnet->phy_addr = phy_addr; sprintf(netdev->name, "dnet%d", id); - netdev->init = dnet_init; - netdev->halt = dnet_halt; - netdev->send = dnet_send; - netdev->recv = dnet_recv; + netdev->eo->init = dnet_init; + netdev->eo->halt = dnet_halt; + netdev->eo->send = dnet_send; + netdev->eo->recv = dnet_recv; dev_capa = readl(&dnet->regs->VERCAPS) & 0xFFFF; - debug("%s: has %smdio, %sirq, %sgigabit, %sdma \n", netdev->name, + debug("%s: has %smdio, %sirq, %sgigabit, %sdma\n", netdev->name, (dev_capa & DNET_HAS_MDIO) ? "" : "no ", (dev_capa & DNET_HAS_IRQ) ? "" : "no ", (dev_capa & DNET_HAS_GIGABIT) ? "" : "no ", diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c index 2d4da4b..c9f9fb3 100644 --- a/drivers/net/e1000.c +++ b/drivers/net/e1000.c @@ -5218,10 +5218,10 @@ e1000_initialize(bd_t * bis) nic->enetaddr[3], nic->enetaddr[4], nic->enetaddr[5]); /* Set up the function pointers and register the device */ - nic->init = e1000_init; - nic->recv = e1000_poll; - nic->send = e1000_transmit; - nic->halt = e1000_disable; + nic->eo->init = e1000_init; + nic->eo->recv = e1000_poll; + nic->eo->send = e1000_transmit; + nic->eo->halt = e1000_disable; eth_register(nic); } diff --git a/drivers/net/eepro100.c b/drivers/net/eepro100.c index d2c8277..e3aa720 100644 --- a/drivers/net/eepro100.c +++ b/drivers/net/eepro100.c @@ -458,10 +458,10 @@ int eepro100_initialize (bd_t * bis) sprintf (dev->name, "i82559#%d", card_number); dev->priv = (void *) devno; /* this have to come before bus_to_phys() */ dev->iobase = bus_to_phys (iobase); - dev->init = eepro100_init; - dev->halt = eepro100_halt; - dev->send = eepro100_send; - dev->recv = eepro100_recv; + dev->eo->init = eepro100_init; + dev->eo->halt = eepro100_halt; + dev->eo->send = eepro100_send; + dev->eo->recv = eepro100_recv; eth_register (dev); diff --git a/drivers/net/enc28j60.c b/drivers/net/enc28j60.c index c55667c..95f0b93 100644 --- a/drivers/net/enc28j60.c +++ b/drivers/net/enc28j60.c @@ -962,11 +962,11 @@ int enc28j60_initialize(unsigned int bus, unsigned int cs, enc->dev = dev; /* now fill the eth_device object */ dev->priv = enc; - dev->init = enc_init; - dev->halt = enc_halt; - dev->send = enc_send; - dev->recv = enc_recv; - dev->write_hwaddr = enc_write_hwaddr; + dev->eo->init = enc_init; + dev->eo->halt = enc_halt; + dev->eo->send = enc_send; + dev->eo->recv = enc_recv; + dev->eo->write_hwaddr = enc_write_hwaddr; sprintf(dev->name, "enc%i.%i", bus, cs); eth_register(dev); #if defined(CONFIG_CMD_MII) diff --git a/drivers/net/ep93xx_eth.c b/drivers/net/ep93xx_eth.c index 245ad1c..0b5cb3c 100644 --- a/drivers/net/ep93xx_eth.c +++ b/drivers/net/ep93xx_eth.c @@ -499,10 +499,10 @@ int ep93xx_eth_initialize(u8 dev_num, int base_addr) dev->iobase = base_addr; dev->priv = priv; - dev->init = ep93xx_eth_open; - dev->halt = ep93xx_eth_close; - dev->send = ep93xx_eth_send_packet; - dev->recv = ep93xx_eth_rcv_packet; + dev->eo->init = ep93xx_eth_open; + dev->eo->halt = ep93xx_eth_close; + dev->eo->send = ep93xx_eth_send_packet; + dev->eo->recv = ep93xx_eth_rcv_packet; sprintf(dev->name, "ep93xx_eth-%hu", dev_num); diff --git a/drivers/net/ethoc.c b/drivers/net/ethoc.c index af06d4f..946b8e2 100644 --- a/drivers/net/ethoc.c +++ b/drivers/net/ethoc.c @@ -499,11 +499,11 @@ int ethoc_initialize(u8 dev_num, int base_addr) memset(dev, 0, sizeof(*dev)); dev->priv = priv; dev->iobase = base_addr; - dev->init = ethoc_init; - dev->halt = ethoc_halt; - dev->send = ethoc_send; - dev->recv = ethoc_recv; - dev->write_hwaddr = ethoc_set_mac_address; + dev->eo->init = ethoc_init; + dev->eo->halt = ethoc_halt; + dev->eo->send = ethoc_send; + dev->eo->recv = ethoc_recv; + dev->eo->write_hwaddr = ethoc_set_mac_address; sprintf(dev->name, "%s-%hu", "ETHOC", dev_num); eth_register(dev); diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index 3e232c7..f8a5556 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -943,11 +943,11 @@ static int fec_probe(bd_t *bd, int dev_id, int phy_id, uint32_t base_addr) memset(fec, 0, sizeof(*fec)); edev->priv = fec; - edev->init = fec_init; - edev->send = fec_send; - edev->recv = fec_recv; - edev->halt = fec_halt; - edev->write_hwaddr = fec_set_hwaddr; + edev->eo->init = fec_init; + edev->eo->send = fec_send; + edev->eo->recv = fec_recv; + edev->eo->halt = fec_halt; + edev->eo->write_hwaddr = fec_set_hwaddr; fec->eth = (struct ethernet_regs *)base_addr; fec->bd = bd; diff --git a/drivers/net/fm/eth.c b/drivers/net/fm/eth.c index 2b616ad..8d881d4 100644 --- a/drivers/net/fm/eth.c +++ b/drivers/net/fm/eth.c @@ -653,10 +653,10 @@ int fm_eth_initialize(struct ccsr_fman *reg, struct fm_eth_info *info) devlist[num_controllers++] = dev; dev->iobase = 0; dev->priv = (void *)fm_eth; - dev->init = fm_eth_open; - dev->halt = fm_eth_halt; - dev->send = fm_eth_send; - dev->recv = fm_eth_recv; + dev->eo->init = fm_eth_open; + dev->eo->halt = fm_eth_halt; + dev->eo->send = fm_eth_send; + dev->eo->recv = fm_eth_recv; fm_eth->dev = dev; fm_eth->bus = info->bus; fm_eth->phyaddr = info->phy_addr; diff --git a/drivers/net/fsl_mcdmafec.c b/drivers/net/fsl_mcdmafec.c index 63842cd..2e70d22 100644 --- a/drivers/net/fsl_mcdmafec.c +++ b/drivers/net/fsl_mcdmafec.c @@ -533,10 +533,10 @@ int mcdmafec_initialize(bd_t * bis) sprintf(dev->name, "FEC%d", fec_info[i].index); dev->priv = &fec_info[i]; - dev->init = fec_init; - dev->halt = fec_halt; - dev->send = fec_send; - dev->recv = fec_recv; + dev->eo->init = fec_init; + dev->eo->halt = fec_halt; + dev->eo->send = fec_send; + dev->eo->recv = fec_recv; /* setup Receive and Transmit buffer descriptor */ #ifdef CONFIG_SYS_DMA_USE_INTSRAM diff --git a/drivers/net/ftgmac100.c b/drivers/net/ftgmac100.c index 69ba57d..76391c1 100644 --- a/drivers/net/ftgmac100.c +++ b/drivers/net/ftgmac100.c @@ -548,10 +548,10 @@ int ftgmac100_initialize(bd_t *bd) sprintf(dev->name, "FTGMAC100"); dev->iobase = CONFIG_FTGMAC100_BASE; - dev->init = ftgmac100_init; - dev->halt = ftgmac100_halt; - dev->send = ftgmac100_send; - dev->recv = ftgmac100_recv; + dev->eo->init = ftgmac100_init; + dev->eo->halt = ftgmac100_halt; + dev->eo->send = ftgmac100_send; + dev->eo->recv = ftgmac100_recv; dev->priv = priv; eth_register(dev); diff --git a/drivers/net/ftmac100.c b/drivers/net/ftmac100.c index fdd3ec0..6fd2bde 100644 --- a/drivers/net/ftmac100.c +++ b/drivers/net/ftmac100.c @@ -260,10 +260,10 @@ int ftmac100_initialize (bd_t *bd) sprintf (dev->name, "FTMAC100"); dev->iobase = CONFIG_FTMAC100_BASE; - dev->init = ftmac100_init; - dev->halt = ftmac100_halt; - dev->send = ftmac100_send; - dev->recv = ftmac100_recv; + dev->eo->init = ftmac100_init; + dev->eo->halt = ftmac100_halt; + dev->eo->send = ftmac100_send; + dev->eo->recv = ftmac100_recv; dev->priv = priv; eth_register (dev); diff --git a/drivers/net/greth.c b/drivers/net/greth.c index 3103a74..150dccf 100644 --- a/drivers/net/greth.c +++ b/drivers/net/greth.c @@ -623,10 +623,10 @@ int greth_initialize(bd_t * bis) debug("Found GRETH at %p, irq %d\n", greth->regs, greth->irq); dev->priv = (void *)greth; dev->iobase = (unsigned int)greth->regs; - dev->init = greth_init; - dev->halt = greth_halt; - dev->send = greth_send; - dev->recv = greth_recv; + dev->eo->init = greth_init; + dev->eo->halt = greth_halt; + dev->eo->send = greth_send; + dev->eo->recv = greth_recv; greth->dev = dev; /* Reset Core */ diff --git a/drivers/net/inca-ip_sw.c b/drivers/net/inca-ip_sw.c index f0f62de..216122d 100644 --- a/drivers/net/inca-ip_sw.c +++ b/drivers/net/inca-ip_sw.c @@ -189,10 +189,10 @@ int inca_switch_initialize(bd_t * bis) #endif sprintf(dev->name, "INCA-IP Switch"); - dev->init = inca_switch_init; - dev->halt = inca_switch_halt; - dev->send = inca_switch_send; - dev->recv = inca_switch_recv; + dev->eo->init = inca_switch_init; + dev->eo->halt = inca_switch_halt; + dev->eo->send = inca_switch_send; + dev->eo->recv = inca_switch_recv; eth_register(dev); diff --git a/drivers/net/ks8695eth.c b/drivers/net/ks8695eth.c index b4904b6..b0703ef 100644 --- a/drivers/net/ks8695eth.c +++ b/drivers/net/ks8695eth.c @@ -230,10 +230,10 @@ int ks8695_eth_initialize(void) memset(dev, 0, sizeof(*dev)); dev->iobase = KS8695_IO_BASE + KS8695_LAN_DMA_TX; - dev->init = ks8695_eth_init; - dev->halt = ks8695_eth_halt; - dev->send = ks8695_eth_send; - dev->recv = ks8695_eth_recv; + dev->eo->init = ks8695_eth_init; + dev->eo->halt = ks8695_eth_halt; + dev->eo->send = ks8695_eth_send; + dev->eo->recv = ks8695_eth_recv; strcpy(dev->name, "ks8695eth"); eth_register(dev); diff --git a/drivers/net/lan91c96.c b/drivers/net/lan91c96.c index 11d350e..d87302b 100644 --- a/drivers/net/lan91c96.c +++ b/drivers/net/lan91c96.c @@ -806,10 +806,10 @@ int lan91c96_initialize(u8 dev_num, int base_addr) } get_rom_mac(dev, dev->enetaddr); - dev->init = lan91c96_init; - dev->halt = lan91c96_halt; - dev->send = lan91c96_send; - dev->recv = lan91c96_recv; + dev->eo->init = lan91c96_init; + dev->eo->halt = lan91c96_halt; + dev->eo->send = lan91c96_send; + dev->eo->recv = lan91c96_recv; sprintf(dev->name, "%s-%hu", supported_chips[r].name, dev_num); eth_register(dev); diff --git a/drivers/net/macb.c b/drivers/net/macb.c index 0e1ced7..2c53902 100644 --- a/drivers/net/macb.c +++ b/drivers/net/macb.c @@ -558,11 +558,11 @@ int macb_eth_initialize(int id, void *regs, unsigned int phy_addr) macb->phy_addr = phy_addr; sprintf(netdev->name, "macb%d", id); - netdev->init = macb_init; - netdev->halt = macb_halt; - netdev->send = macb_send; - netdev->recv = macb_recv; - netdev->write_hwaddr = macb_write_hwaddr; + netdev->eo->init = macb_init; + netdev->eo->halt = macb_halt; + netdev->eo->send = macb_send; + netdev->eo->recv = macb_recv; + netdev->eo->write_hwaddr = macb_write_hwaddr; /* * Do some basic initialization so that we at least can talk diff --git a/drivers/net/mcffec.c b/drivers/net/mcffec.c index ed7459c..0aeb24e 100644 --- a/drivers/net/mcffec.c +++ b/drivers/net/mcffec.c @@ -572,10 +572,10 @@ int mcffec_initialize(bd_t * bis) sprintf(dev->name, "FEC%d", fec_info[i].index); dev->priv = &fec_info[i]; - dev->init = fec_init; - dev->halt = fec_halt; - dev->send = fec_send; - dev->recv = fec_recv; + dev->eo->init = fec_init; + dev->eo->halt = fec_halt; + dev->eo->send = fec_send; + dev->eo->recv = fec_recv; /* setup Receive and Transmit buffer descriptor */ #ifdef CONFIG_SYS_FEC_BUF_USE_SRAM diff --git a/drivers/net/mpc512x_fec.c b/drivers/net/mpc512x_fec.c index ad57d56..4aa3b28 100644 --- a/drivers/net/mpc512x_fec.c +++ b/drivers/net/mpc512x_fec.c @@ -629,10 +629,10 @@ int mpc512x_fec_initialize (bd_t * bis) # endif dev->priv = (void *)fec; dev->iobase = (int)&im->fec; - dev->init = mpc512x_fec_init; - dev->halt = mpc512x_fec_halt; - dev->send = mpc512x_fec_send; - dev->recv = mpc512x_fec_recv; + dev->eo->init = mpc512x_fec_init; + dev->eo->halt = mpc512x_fec_halt; + dev->eo->send = mpc512x_fec_send; + dev->eo->recv = mpc512x_fec_recv; sprintf (dev->name, "FEC"); eth_register (dev); diff --git a/drivers/net/mpc5xxx_fec.c b/drivers/net/mpc5xxx_fec.c index 3d180db..73503da 100644 --- a/drivers/net/mpc5xxx_fec.c +++ b/drivers/net/mpc5xxx_fec.c @@ -915,10 +915,10 @@ int mpc5xxx_fec_initialize(bd_t * bis) dev->priv = (void *)fec; dev->iobase = MPC5XXX_FEC; - dev->init = mpc5xxx_fec_init; - dev->halt = mpc5xxx_fec_halt; - dev->send = mpc5xxx_fec_send; - dev->recv = mpc5xxx_fec_recv; + dev->eo->init = mpc5xxx_fec_init; + dev->eo->halt = mpc5xxx_fec_halt; + dev->eo->send = mpc5xxx_fec_send; + dev->eo->recv = mpc5xxx_fec_recv; sprintf(dev->name, "FEC"); eth_register(dev); diff --git a/drivers/net/mvgbe.c b/drivers/net/mvgbe.c index 47bf27c..6ddb6d6 100644 --- a/drivers/net/mvgbe.c +++ b/drivers/net/mvgbe.c @@ -721,11 +721,11 @@ error1: return -1; } - dev->init = (void *)mvgbe_init; - dev->halt = (void *)mvgbe_halt; - dev->send = (void *)mvgbe_send; - dev->recv = (void *)mvgbe_recv; - dev->write_hwaddr = (void *)mvgbe_write_hwaddr; + dev->eo->init = (void *)mvgbe_init; + dev->eo->halt = (void *)mvgbe_halt; + dev->eo->send = (void *)mvgbe_send; + dev->eo->recv = (void *)mvgbe_recv; + dev->eo->write_hwaddr = (void *)mvgbe_write_hwaddr; eth_register(dev); diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c index 04743bd..4288d1f 100644 --- a/drivers/net/natsemi.c +++ b/drivers/net/natsemi.c @@ -332,10 +332,10 @@ natsemi_initialize(bd_t * bis) printf("natsemi: NatSemi ns8381[56] @ %#x\n", dev->iobase); #endif dev->priv = (void *) devno; - dev->init = natsemi_init; - dev->halt = natsemi_disable; - dev->send = natsemi_send; - dev->recv = natsemi_poll; + dev->eo->init = natsemi_init; + dev->eo->halt = natsemi_disable; + dev->eo->send = natsemi_send; + dev->eo->recv = natsemi_poll; eth_register(dev); diff --git a/drivers/net/ne2000_base.c b/drivers/net/ne2000_base.c index ef35922..2cc9743 100644 --- a/drivers/net/ne2000_base.c +++ b/drivers/net/ne2000_base.c @@ -789,10 +789,10 @@ int ne2k_register(void) if (ne2k_setup_driver(dev)) return -1; - dev->init = ne2k_init; - dev->halt = ne2k_halt; - dev->send = ne2k_send; - dev->recv = ne2k_recv; + dev->eo->init = ne2k_init; + dev->eo->halt = ne2k_halt; + dev->eo->send = ne2k_send; + dev->eo->recv = ne2k_recv; sprintf(dev->name, "NE2000"); diff --git a/drivers/net/npe/npe.c b/drivers/net/npe/npe.c index 1fe3a95..d376c21 100644 --- a/drivers/net/npe/npe.c +++ b/drivers/net/npe/npe.c @@ -625,10 +625,10 @@ int npe_initialize(bd_t * bis) sprintf(dev->name, "NPE%d", eth_num); dev->priv = (void *)p_npe; - dev->init = npe_init; - dev->halt = npe_halt; - dev->send = npe_send; - dev->recv = npe_rx; + dev->eo->init = npe_init; + dev->eo->halt = npe_halt; + dev->eo->send = npe_send; + dev->eo->recv = npe_rx; p_npe->print_speed = 1; diff --git a/drivers/net/ns8382x.c b/drivers/net/ns8382x.c index cfe1f34..8b08e0b 100644 --- a/drivers/net/ns8382x.c +++ b/drivers/net/ns8382x.c @@ -346,10 +346,10 @@ ns8382x_initialize(bd_t * bis) sprintf(dev->name, "dp8382x#%d", card_number); dev->iobase = bus_to_phys(iobase); dev->priv = (void *) devno; - dev->init = ns8382x_init; - dev->halt = ns8382x_disable; - dev->send = ns8382x_send; - dev->recv = ns8382x_poll; + dev->eo->init = ns8382x_init; + dev->eo->halt = ns8382x_disable; + dev->eo->send = ns8382x_send; + dev->eo->recv = ns8382x_poll; /* ns8382x has a non-standard PM control register * in PCI config space. Some boards apparently need diff --git a/drivers/net/pcnet.c b/drivers/net/pcnet.c index c028a44..35254c3 100644 --- a/drivers/net/pcnet.c +++ b/drivers/net/pcnet.c @@ -218,10 +218,10 @@ int pcnet_initialize (bd_t * bis) /* * Setup device structure and register the driver. */ - dev->init = pcnet_init; - dev->halt = pcnet_halt; - dev->send = pcnet_send; - dev->recv = pcnet_recv; + dev->eo->init = pcnet_init; + dev->eo->halt = pcnet_halt; + dev->eo->send = pcnet_send; + dev->eo->recv = pcnet_recv; eth_register (dev); } diff --git a/drivers/net/plb2800_eth.c b/drivers/net/plb2800_eth.c index 93782c2..d3eb692 100644 --- a/drivers/net/plb2800_eth.c +++ b/drivers/net/plb2800_eth.c @@ -110,10 +110,10 @@ int plb2800_eth_initialize(bd_t * bis) memset(dev, 0, sizeof(*dev)); sprintf(dev->name, "PLB2800 Switch"); - dev->init = plb2800_eth_init; - dev->halt = plb2800_eth_halt; - dev->send = plb2800_eth_send; - dev->recv = plb2800_eth_recv; + dev->eo->init = plb2800_eth_init; + dev->eo->halt = plb2800_eth_halt; + dev->eo->send = plb2800_eth_send; + dev->eo->recv = plb2800_eth_recv; eth_register(dev); diff --git a/drivers/net/rtl8139.c b/drivers/net/rtl8139.c index 4186699..ed02cf6 100644 --- a/drivers/net/rtl8139.c +++ b/drivers/net/rtl8139.c @@ -229,12 +229,12 @@ int rtl8139_initialize(bd_t *bis) dev->priv = (void *) devno; dev->iobase = (int)bus_to_phys(iobase); - dev->init = rtl8139_probe; - dev->halt = rtl_disable; - dev->send = rtl_transmit; - dev->recv = rtl_poll; + dev->eo->init = rtl8139_probe; + dev->eo->halt = rtl_disable; + dev->eo->send = rtl_transmit; + dev->eo->recv = rtl_poll; #ifdef CONFIG_MCAST_TFTP - dev->mcast = rtl_bcast_addr; + dev->eo->mcast = rtl_bcast_addr; #endif eth_register (dev); diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c index 9864fd7..c75fd4f 100644 --- a/drivers/net/rtl8169.c +++ b/drivers/net/rtl8169.c @@ -902,10 +902,10 @@ int rtl8169_initialize(bd_t *bis) dev->priv = (void *) devno; dev->iobase = (int)pci_mem_to_phys(devno, iobase); - dev->init = rtl_reset; - dev->halt = rtl_halt; - dev->send = rtl_send; - dev->recv = rtl_recv; + dev->eo->init = rtl_reset; + dev->eo->halt = rtl_halt; + dev->eo->send = rtl_send; + dev->eo->recv = rtl_recv; eth_register (dev); diff --git a/drivers/net/sh_eth.c b/drivers/net/sh_eth.c index 2d9cc32..1f8d0c1 100644 --- a/drivers/net/sh_eth.c +++ b/drivers/net/sh_eth.c @@ -529,10 +529,10 @@ int sh_eth_initialize(bd_t *bd) dev->priv = (void *)eth; dev->iobase = 0; - dev->init = sh_eth_init; - dev->halt = sh_eth_halt; - dev->send = sh_eth_send; - dev->recv = sh_eth_recv; + dev->eo->init = sh_eth_init; + dev->eo->halt = sh_eth_halt; + dev->eo->send = sh_eth_send; + dev->eo->recv = sh_eth_recv; eth->port_info[eth->port].dev = dev; sprintf(dev->name, SHETHER_NAME); diff --git a/drivers/net/smc91111.c b/drivers/net/smc91111.c index 6dc7ad5..3ea7213 100644 --- a/drivers/net/smc91111.c +++ b/drivers/net/smc91111.c @@ -1357,11 +1357,11 @@ int smc91111_initialize(u8 dev_num, int base_addr) dev->enetaddr[i] = SMC_inb(dev, (ADDR0_REG + i)); swap_to(FLASH); - dev->init = smc_init; - dev->halt = smc_halt; - dev->send = smc_send; - dev->recv = smc_rcv; - dev->write_hwaddr = smc_write_hwaddr; + dev->eo->init = smc_init; + dev->eo->halt = smc_halt; + dev->eo->send = smc_send; + dev->eo->recv = smc_rcv; + dev->eo->write_hwaddr = smc_write_hwaddr; sprintf(dev->name, "%s-%hu", SMC_DEV_NAME, dev_num); eth_register(dev); diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c index b2aed7e..5ba1bdf 100644 --- a/drivers/net/smc911x.c +++ b/drivers/net/smc911x.c @@ -282,10 +282,10 @@ int smc911x_initialize(u8 dev_num, int base_addr) dev->enetaddr[5] = addrh >> 8; } - dev->init = smc911x_init; - dev->halt = smc911x_halt; - dev->send = smc911x_send; - dev->recv = smc911x_rx; + dev->eo->init = smc911x_init; + dev->eo->halt = smc911x_halt; + dev->eo->send = smc911x_send; + dev->eo->recv = smc911x_rx; sprintf(dev->name, "%s-%hu", DRIVERNAME, dev_num); eth_register(dev); diff --git a/drivers/net/tsec.c b/drivers/net/tsec.c index f5e314b..345d563 100644 --- a/drivers/net/tsec.c +++ b/drivers/net/tsec.c @@ -638,12 +638,12 @@ static int tsec_initialize(bd_t *bis, struct tsec_info_struct *tsec_info) priv->bus = miiphy_get_dev_by_name(tsec_info->mii_devname); dev->iobase = 0; dev->priv = priv; - dev->init = tsec_init; - dev->halt = tsec_halt; - dev->send = tsec_send; - dev->recv = tsec_recv; + dev->eo->init = tsec_init; + dev->eo->halt = tsec_halt; + dev->eo->send = tsec_send; + dev->eo->recv = tsec_recv; #ifdef CONFIG_MCAST_TFTP - dev->mcast = tsec_mcast_addr; + dev->eo->mcast = tsec_mcast_addr; #endif /* Tell u-boot to get the addr from the env */ diff --git a/drivers/net/tsi108_eth.c b/drivers/net/tsi108_eth.c index b2c1be5..bed09d5 100644 --- a/drivers/net/tsi108_eth.c +++ b/drivers/net/tsi108_eth.c @@ -739,10 +739,10 @@ int tsi108_eth_initialize (bd_t * bis) dev->iobase = ETH_BASE + (index * ETH_PORT_OFFSET); dev->priv = (void *)(phy_address[index]); - dev->init = tsi108_eth_probe; - dev->halt = tsi108_eth_halt; - dev->send = tsi108_eth_send; - dev->recv = tsi108_eth_recv; + dev->eo->init = tsi108_eth_probe; + dev->eo->halt = tsi108_eth_halt; + dev->eo->send = tsi108_eth_send; + dev->eo->recv = tsi108_eth_recv; eth_register(dev); } diff --git a/drivers/net/uli526x.c b/drivers/net/uli526x.c index 9648901..33d8b49 100644 --- a/drivers/net/uli526x.c +++ b/drivers/net/uli526x.c @@ -237,10 +237,10 @@ int uli526x_initialize(bd_t *bis) db->pdev = devno; dev->iobase = iobase; - dev->init = uli526x_init_one; - dev->halt = uli526x_disable; - dev->send = uli526x_start_xmit; - dev->recv = uli526x_rx_packet; + dev->eo->init = uli526x_init_one; + dev->eo->halt = uli526x_disable; + dev->eo->send = uli526x_start_xmit; + dev->eo->recv = uli526x_rx_packet; /* init db */ db->ioaddr = dev->iobase; diff --git a/drivers/net/xilinx_axi_emac.c b/drivers/net/xilinx_axi_emac.c index d777144..54a871b 100644 --- a/drivers/net/xilinx_axi_emac.c +++ b/drivers/net/xilinx_axi_emac.c @@ -645,11 +645,11 @@ int xilinx_axiemac_initialize(bd_t *bis, unsigned long base_addr, priv->dmatx = (struct axidma_reg *)dma_addr; /* RX channel offset is 0x30 */ priv->dmarx = (struct axidma_reg *)(dma_addr + 0x30); - dev->init = axiemac_init; - dev->halt = axiemac_halt; - dev->send = axiemac_send; - dev->recv = axiemac_recv; - dev->write_hwaddr = axiemac_setup_mac; + dev->eo->init = axiemac_init; + dev->eo->halt = axiemac_halt; + dev->eo->send = axiemac_send; + dev->eo->recv = axiemac_recv; + dev->eo->write_hwaddr = axiemac_setup_mac; #ifdef CONFIG_PHY_ADDR priv->phyaddr = CONFIG_PHY_ADDR; diff --git a/drivers/net/xilinx_emaclite.c b/drivers/net/xilinx_emaclite.c index d890d60..c0fefa7 100644 --- a/drivers/net/xilinx_emaclite.c +++ b/drivers/net/xilinx_emaclite.c @@ -369,10 +369,10 @@ int xilinx_emaclite_initialize(bd_t *bis, unsigned long base_addr, sprintf(dev->name, "Xelite.%lx", base_addr); dev->iobase = base_addr; - dev->init = emaclite_init; - dev->halt = emaclite_halt; - dev->send = emaclite_send; - dev->recv = emaclite_recv; + dev->eo->init = emaclite_init; + dev->eo->halt = emaclite_halt; + dev->eo->send = emaclite_send; + dev->eo->recv = emaclite_recv; eth_register(dev); diff --git a/drivers/net/xilinx_ll_temac.c b/drivers/net/xilinx_ll_temac.c index b67153b..8f67417 100644 --- a/drivers/net/xilinx_ll_temac.c +++ b/drivers/net/xilinx_ll_temac.c @@ -313,9 +313,9 @@ int xilinx_ll_temac_initialize(bd_t *bis, struct ll_temac_info *devinf) dev->iobase = devinf->base_addr; dev->priv = ll_temac; - dev->init = ll_temac_init; - dev->halt = ll_temac_halt; - dev->write_hwaddr = ll_temac_setup_mac_addr; + dev->eo->init = ll_temac_init; + dev->eo->halt = ll_temac_halt; + dev->eo->write_hwaddr = ll_temac_setup_mac_addr; ll_temac->ctrladdr = devinf->ctrl_addr; if (devinf->flags & XILINX_LL_TEMAC_M_SDMA_PLB) { @@ -334,16 +334,16 @@ int xilinx_ll_temac_initialize(bd_t *bis, struct ll_temac_info *devinf) ll_temac->ctrlinit = ll_temac_init_sdma; ll_temac->ctrlhalt = ll_temac_halt_sdma; ll_temac->ctrlreset = ll_temac_reset_sdma; - dev->recv = ll_temac_recv_sdma; - dev->send = ll_temac_send_sdma; + dev->eo->recv = ll_temac_recv_sdma; + dev->eo->send = ll_temac_send_sdma; } else { ll_temac->in32 = NULL; ll_temac->out32 = NULL; ll_temac->ctrlinit = NULL; ll_temac->ctrlhalt = NULL; ll_temac->ctrlreset = ll_temac_reset_fifo; - dev->recv = ll_temac_recv_fifo; - dev->send = ll_temac_send_fifo; + dev->eo->recv = ll_temac_recv_fifo; + dev->eo->send = ll_temac_send_fifo; } /* Link to specified MDIO bus */ diff --git a/drivers/net/zynq_gem.c b/drivers/net/zynq_gem.c index 3596065..3cba176 100644 --- a/drivers/net/zynq_gem.c +++ b/drivers/net/zynq_gem.c @@ -425,11 +425,11 @@ int zynq_gem_initialize(bd_t *bis, int base_addr) dev->iobase = base_addr; - dev->init = zynq_gem_init; - dev->halt = zynq_gem_halt; - dev->send = zynq_gem_send; - dev->recv = zynq_gem_recv; - dev->write_hwaddr = zynq_gem_setup_mac; + dev->eo->init = zynq_gem_init; + dev->eo->halt = zynq_gem_halt; + dev->eo->send = zynq_gem_send; + dev->eo->recv = zynq_gem_recv; + dev->eo->write_hwaddr = zynq_gem_setup_mac; eth_register(dev); diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c index e6ae709..0aded61 100644 --- a/drivers/qe/uec.c +++ b/drivers/qe/uec.c @@ -1394,10 +1394,10 @@ int uec_initialize(bd_t *bis, uec_info_t *uec_info) sprintf(dev->name, "UEC%d", uec_info->uf_info.ucc_num); dev->iobase = 0; dev->priv = (void *)uec; - dev->init = uec_init; - dev->halt = uec_halt; - dev->send = uec_send; - dev->recv = uec_recv; + dev->eo->init = uec_init; + dev->eo->halt = uec_halt; + dev->eo->send = uec_send; + dev->eo->recv = uec_recv; /* Clear the ethnet address */ for (i = 0; i < 6; i++) diff --git a/drivers/usb/eth/asix.c b/drivers/usb/eth/asix.c index 75ec8f7..f2cea6b 100644 --- a/drivers/usb/eth/asix.c +++ b/drivers/usb/eth/asix.c @@ -702,12 +702,12 @@ int asix_eth_get_info(struct usb_device *dev, struct ueth_data *ss, return 0; } sprintf(eth->name, "%s%d", ASIX_BASE_NAME, curr_eth_dev++); - eth->init = asix_init; - eth->send = asix_send; - eth->recv = asix_recv; - eth->halt = asix_halt; + eth->eo->init = asix_init; + eth->eo->send = asix_send; + eth->eo->recv = asix_recv; + eth->eo->halt = asix_halt; if (!(priv->flags & FLAG_TYPE_AX88172)) - eth->write_hwaddr = asix_write_hwaddr; + eth->eo->write_hwaddr = asix_write_hwaddr; eth->priv = ss; if (asix_basic_reset(ss)) diff --git a/drivers/usb/eth/smsc95xx.c b/drivers/usb/eth/smsc95xx.c index dc5ca65..b8c2f2e 100644 --- a/drivers/usb/eth/smsc95xx.c +++ b/drivers/usb/eth/smsc95xx.c @@ -890,11 +890,11 @@ int smsc95xx_eth_get_info(struct usb_device *dev, struct ueth_data *ss, return 0; } sprintf(eth->name, "%s%d", SMSC95XX_BASE_NAME, curr_eth_dev++); - eth->init = smsc95xx_init; - eth->send = smsc95xx_send; - eth->recv = smsc95xx_recv; - eth->halt = smsc95xx_halt; - eth->write_hwaddr = smsc95xx_write_hwaddr; + eth->eo->init = smsc95xx_init; + eth->eo->send = smsc95xx_send; + eth->eo->recv = smsc95xx_recv; + eth->eo->halt = smsc95xx_halt; + eth->eo->write_hwaddr = smsc95xx_write_hwaddr; eth->priv = ss; return 1; } diff --git a/include/net.h b/include/net.h index 3539336..939ad7f 100644 --- a/include/net.h +++ b/include/net.h @@ -78,12 +78,9 @@ enum eth_state_t { ETH_STATE_ACTIVE }; -struct eth_device { - char name[16]; - unsigned char enetaddr[6]; - int iobase; - int state; +struct eth_device; +struct eth_ops { int (*init) (struct eth_device *, bd_t *); int (*send) (struct eth_device *, void *packet, int length); int (*recv) (struct eth_device *); @@ -91,7 +88,15 @@ struct eth_device { #ifdef CONFIG_MCAST_TFTP int (*mcast) (struct eth_device *, u32 ip, u8 set); #endif - int (*write_hwaddr) (struct eth_device *); + int (*write_hwaddr) (struct eth_device *); +}; + +struct eth_device { + char name[16]; + unsigned char enetaddr[6]; + int iobase; + int state; + struct eth_ops *eo; struct eth_device *next; int index; void *priv; diff --git a/net/eth.c b/net/eth.c index 321d5b1..1bd1ce6 100644 --- a/net/eth.c +++ b/net/eth.c @@ -217,12 +217,12 @@ int eth_write_hwaddr(struct eth_device *dev, const char *base_name, dev->name); } - if (dev->write_hwaddr && + if (dev->eo->write_hwaddr && !eth_mac_skip(eth_number)) { if (!is_valid_ether_addr(dev->enetaddr)) return -1; - ret = dev->write_hwaddr(dev); + ret = dev->eo->write_hwaddr(dev); } return ret; @@ -363,7 +363,7 @@ int eth_initialize(bd_t *bis) int eth_mcast_join(IPaddr_t mcast_ip, u8 join) { u8 mcast_mac[6]; - if (!eth_current || !eth_current->mcast) + if (!eth_current || !eth_current->eo->mcast) return -1; mcast_mac[5] = htonl(mcast_ip) & 0xff; mcast_mac[4] = (htonl(mcast_ip)>>8) & 0xff; @@ -371,7 +371,7 @@ int eth_mcast_join(IPaddr_t mcast_ip, u8 join) mcast_mac[2] = 0x5e; mcast_mac[1] = 0x0; mcast_mac[0] = 0x1; - return eth_current->mcast(eth_current, mcast_mac, join); + return eth_current->eo->mcast(eth_current, mcast_mac, join); } /* the 'way' for ethernet-CRC-32. Spliced in from Linux lib/crc32.c @@ -426,7 +426,7 @@ int eth_init(bd_t *bis) do { debug("Trying %s\n", eth_current->name); - if (eth_current->init(eth_current, bis) >= 0) { + if (eth_current->eo->init(eth_current, bis) >= 0) { eth_current->state = ETH_STATE_ACTIVE; return 0; @@ -444,7 +444,7 @@ void eth_halt(void) if (!eth_current) return; - eth_current->halt(eth_current); + eth_current->eo->halt(eth_current); eth_current->state = ETH_STATE_PASSIVE; } @@ -454,7 +454,7 @@ int eth_send(void *packet, int length) if (!eth_current) return -1; - return eth_current->send(eth_current, packet, length); + return eth_current->eo->send(eth_current, packet, length); } int eth_rx(void) @@ -462,7 +462,7 @@ int eth_rx(void) if (!eth_current) return -1; - return eth_current->recv(eth_current); + return eth_current->eo->recv(eth_current); } #ifdef CONFIG_API -- 1.7.2.5 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot