diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-11-23 02:00:47 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-11-23 02:00:47 +0000 |
commit | 06615f62b17d7de6e12d2f5ec6b88cf30af08413 (patch) | |
tree | 8766f208847d4876a6db619aebbf54d53b76eb44 /drivers/net/8390.h | |
parent | fa9bdb574f4febb751848a685d9a9017e04e1d53 (diff) |
Merge with Linux 2.4.0-test10.
Diffstat (limited to 'drivers/net/8390.h')
-rw-r--r-- | drivers/net/8390.h | 108 |
1 files changed, 3 insertions, 105 deletions
diff --git a/drivers/net/8390.h b/drivers/net/8390.h index 6c8a68ecc..9db9fdb3c 100644 --- a/drivers/net/8390.h +++ b/drivers/net/8390.h @@ -1,6 +1,6 @@ /* Generic NS8390 register definitions. */ /* This file is part of Donald Becker's 8390 drivers, and is distributed - under the same license. Auto-loading of 8390.o added by Paul Gortmaker. + under the same license. Auto-loading of 8390.o only in v2.2 - Paul G. Some of these names and comments originated from the Crynwr packet drivers, which are distributed under the GPL. */ @@ -12,11 +12,6 @@ #include <linux/ioport.h> #include <linux/skbuff.h> -/* With kmod, drivers can now load the 8390 module themselves! */ -#if 0 /* def CONFIG_KMOD */ -#define LOAD_8390_BY_KMOD -#endif - #define TX_2X_PAGES 12 #define TX_1X_PAGES 6 @@ -50,113 +45,16 @@ extern void autoirq_setup(int waittime); extern unsigned long autoirq_report(int waittime); #endif -#if defined(LOAD_8390_BY_KMOD) && defined(MODULE) && !defined(NS8390_CORE) - -/* Function pointers to be mapped onto the 8390 core support */ -static int (*S_ethdev_init)(struct net_device *dev); -static void (*S_NS8390_init)(struct net_device *dev, int startp); -static int (*S_ei_open)(struct net_device *dev); -static int (*S_ei_close)(struct net_device *dev); -static void (*S_ei_interrupt)(int irq, void *dev_id, struct pt_regs *regs); - -extern __inline__ void unload_8390_module(void) -{ - if (S_ethdev_init) { - put_module_symbol((unsigned long)S_ethdev_init); - S_ethdev_init = NULL; - } - if (S_NS8390_init) { - put_module_symbol((unsigned long)S_NS8390_init); - S_NS8390_init = NULL; - } - if (S_ei_open) { - put_module_symbol((unsigned long)S_ei_open); - S_ei_open = NULL; - } - if (S_ei_close) { - put_module_symbol((unsigned long)S_ei_close); - S_ei_close = NULL; - } - if (S_ei_interrupt) { - put_module_symbol((unsigned long)S_ei_interrupt); - S_ei_interrupt = NULL; - } -} - -extern __inline__ int load_8390_module(const char *driver) -{ - /* Do we actually need to handle this case? */ - if (S_ethdev_init) { - printk(KERN_DEBUG "%s: load_8390_module called when pointers already present\n", driver); - return 0; - } - - /* Attempt to get the first symbol */ - S_ethdev_init = (void *)get_module_symbol(NULL, "ethdev_init"); - - if (!S_ethdev_init) { - /* It failed. See if we have request_module() */ - int (*request_mod)(const char *module_name); - - if (get_module_symbol("", "request_module") == 0) { - printk("%s: module auto-load (kmod) support not present.\n", driver); - printk("%s: unable to auto-load required 8390 module.\n", driver); - printk("%s: try \"modprobe 8390\" as root 1st.\n", driver); - return -ENOSYS; - } - - /* OK - we have request_module() - try it */ - request_mod = (void*)get_module_symbol("", "request_module"); - if (request_mod("8390")) { - printk("%s: request to load the 8390 module failed.\n", driver); - return -ENOSYS; - } - - printk(KERN_INFO "%s: auto-loaded 8390 module.\n", driver); - - /* Retry getting ethdev_init */ - S_ethdev_init = (void *)get_module_symbol(NULL, "ethdev_init"); - } - - /* Get addresses for the other functions */ - S_NS8390_init = (void*)get_module_symbol(0, "NS8390_init"); - S_ei_open = (void*)get_module_symbol(0, "ei_open"); - S_ei_close = (void*)get_module_symbol(0, "ei_close"); - S_ei_interrupt = (void*)get_module_symbol(0, "ei_interrupt"); - - /* Check if module really loaded and is valid */ - if (!S_ethdev_init || !S_NS8390_init || !S_ei_open || !S_ei_close - || !S_ei_interrupt) { - unload_8390_module(); - printk("%s: 8390.o not found/invalid or failed to load.\n", driver); - return -ENOSYS; -} - - return 0; -} - -/* - * These are last so they only have scope over the driver - * code (wd, ne, 3c503, etc.) and not over the above code. - */ -#define ethdev_init S_ethdev_init -#define NS8390_init S_NS8390_init -#define ei_open S_ei_open -#define ei_close S_ei_close -#define ei_interrupt S_ei_interrupt - -#else /* not a module or kmod support not wanted */ - +/* Currently unused - delete in v2.5.x after purging from drivers */ #define load_8390_module(driver) 0 #define unload_8390_module() do { } while (0) + extern int ethdev_init(struct net_device *dev); extern void NS8390_init(struct net_device *dev, int startp); extern int ei_open(struct net_device *dev); extern int ei_close(struct net_device *dev); extern void ei_interrupt(int irq, void *dev_id, struct pt_regs *regs); -#endif - /* Most of these entries should be in 'struct net_device' (or most of the things in there should be here!) */ /* You have one of these per-board */ |