1055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox/* 8390 core for ISA devices needing bus delays */ 2055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox 3055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Coxstatic const char version[] = 4055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox "8390p.c:v1.10cvs 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)\n"; 5055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox 6055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox#define ei_inb(_p) inb(_p) 7caa1687c0123705182dc0388304a4c9b78fcf41cGustavo F. Padovan#define ei_outb(_v, _p) outb(_v, _p) 8055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox#define ei_inb_p(_p) inb_p(_p) 9caa1687c0123705182dc0388304a4c9b78fcf41cGustavo F. Padovan#define ei_outb_p(_v, _p) outb_p(_v, _p) 10055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox 11055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox#include "lib8390.c" 12055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox 13055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Coxint eip_open(struct net_device *dev) 14055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox{ 15055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox return __ei_open(dev); 16055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox} 17caa1687c0123705182dc0388304a4c9b78fcf41cGustavo F. PadovanEXPORT_SYMBOL(eip_open); 18055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox 19055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Coxint eip_close(struct net_device *dev) 20055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox{ 21055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox return __ei_close(dev); 22055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox} 23caa1687c0123705182dc0388304a4c9b78fcf41cGustavo F. PadovanEXPORT_SYMBOL(eip_close); 24055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox 2561357325f377889a1daffa14962d705dc814dd0eStephen Hemmingernetdev_tx_t eip_start_xmit(struct sk_buff *skb, struct net_device *dev) 268884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger{ 278884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger return __ei_start_xmit(skb, dev); 288884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger} 298884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen HemmingerEXPORT_SYMBOL(eip_start_xmit); 308884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger 318884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemmingerstruct net_device_stats *eip_get_stats(struct net_device *dev) 328884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger{ 338884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger return __ei_get_stats(dev); 348884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger} 358884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen HemmingerEXPORT_SYMBOL(eip_get_stats); 368884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger 378884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemmingervoid eip_set_multicast_list(struct net_device *dev) 388884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger{ 398884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger __ei_set_multicast_list(dev); 408884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger} 418884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen HemmingerEXPORT_SYMBOL(eip_set_multicast_list); 428884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger 438884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemmingervoid eip_tx_timeout(struct net_device *dev) 448884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger{ 458884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger __ei_tx_timeout(dev); 468884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger} 478884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen HemmingerEXPORT_SYMBOL(eip_tx_timeout); 488884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger 49055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Coxirqreturn_t eip_interrupt(int irq, void *dev_id) 50055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox{ 51055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox return __ei_interrupt(irq, dev_id); 52055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox} 53caa1687c0123705182dc0388304a4c9b78fcf41cGustavo F. PadovanEXPORT_SYMBOL(eip_interrupt); 54055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox 55055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox#ifdef CONFIG_NET_POLL_CONTROLLER 56055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Coxvoid eip_poll(struct net_device *dev) 57055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox{ 58055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox __ei_poll(dev); 59055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox} 60caa1687c0123705182dc0388304a4c9b78fcf41cGustavo F. PadovanEXPORT_SYMBOL(eip_poll); 61055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox#endif 62055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox 638884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemmingerconst struct net_device_ops eip_netdev_ops = { 648884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger .ndo_open = eip_open, 658884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger .ndo_stop = eip_close, 668884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger .ndo_start_xmit = eip_start_xmit, 678884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger .ndo_tx_timeout = eip_tx_timeout, 688884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger .ndo_get_stats = eip_get_stats, 69afc4b13df143122f99a0eb10bfefb216c2806de0Jiri Pirko .ndo_set_rx_mode = eip_set_multicast_list, 708884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger .ndo_validate_addr = eth_validate_addr, 71fe96aaa14f553f0eb7af0e3502563a5400c65257Stephen Hemminger .ndo_set_mac_address = eth_mac_addr, 728884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger .ndo_change_mtu = eth_change_mtu, 738884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger#ifdef CONFIG_NET_POLL_CONTROLLER 748884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger .ndo_poll_controller = eip_poll, 758884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger#endif 768884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger}; 778884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen HemmingerEXPORT_SYMBOL(eip_netdev_ops); 788884c092e5e4f9a1b6e44f2e02a3eb5481af87abStephen Hemminger 79055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Coxstruct net_device *__alloc_eip_netdev(int size) 80055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox{ 819a4a84294b0d60b8c287131478f743ba2bc68949David S. Miller struct net_device *dev = ____alloc_ei_netdev(size); 82eb9bdaee550e4a56592ae12171b0be6de8fc9d17Alexander Beregalov if (dev) 83eb9bdaee550e4a56592ae12171b0be6de8fc9d17Alexander Beregalov dev->netdev_ops = &eip_netdev_ops; 849a4a84294b0d60b8c287131478f743ba2bc68949David S. Miller return dev; 85055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox} 86caa1687c0123705182dc0388304a4c9b78fcf41cGustavo F. PadovanEXPORT_SYMBOL(__alloc_eip_netdev); 87055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox 88055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Coxvoid NS8390p_init(struct net_device *dev, int startp) 89055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox{ 90057b61afca098d3ad3d9e8d15914bc9f9315e425Gustavo F. Padovan __NS8390_init(dev, startp); 91055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox} 92055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan CoxEXPORT_SYMBOL(NS8390p_init); 93055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox 94ad8affd972a705a38e769859c50ee8e749b631daAlexander Beregalovstatic int __init NS8390p_init_module(void) 95055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox{ 96055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox return 0; 97055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox} 98055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox 99ad8affd972a705a38e769859c50ee8e749b631daAlexander Beregalovstatic void __exit NS8390p_cleanup_module(void) 100055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox{ 101055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox} 102055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan Cox 103ad8affd972a705a38e769859c50ee8e749b631daAlexander Beregalovmodule_init(NS8390p_init_module); 104ad8affd972a705a38e769859c50ee8e749b631daAlexander Beregalovmodule_exit(NS8390p_cleanup_module); 105055e5110ae0c0c1176a75b78d789294f2ff2f7afAlan CoxMODULE_LICENSE("GPL"); 106