Rusty Russell <rusty@rustcorp.com.au>

MODULE_PARM conversions for x86 `allmodconfig'.

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/drivers/block/ps2esdi.c              |    8 +-
 25-akpm/drivers/block/xd.c                   |    6 +-
 25-akpm/drivers/isdn/hisax/config.c          |   18 ++----
 25-akpm/drivers/media/video/cpia_pp.c        |    2 
 25-akpm/drivers/mtd/devices/mtdram.c         |    4 -
 25-akpm/drivers/net/3c501.c                  |    4 -
 25-akpm/drivers/net/3c503.c                  |    6 +-
 25-akpm/drivers/net/3c505.c                  |    6 +-
 25-akpm/drivers/net/3c507.c                  |    4 -
 25-akpm/drivers/net/3c523.c                  |    4 -
 25-akpm/drivers/net/ac3200.c                 |    6 +-
 25-akpm/drivers/net/appletalk/cops.c         |    6 +-
 25-akpm/drivers/net/appletalk/ltpc.c         |    8 +-
 25-akpm/drivers/net/at1700.c                 |    6 +-
 25-akpm/drivers/net/cs89x0.c                 |   16 ++---
 25-akpm/drivers/net/e2100.c                  |    8 +-
 25-akpm/drivers/net/eepro.c                  |    8 +-
 25-akpm/drivers/net/eexpress.c               |    4 -
 25-akpm/drivers/net/es3210.c                 |    6 +-
 25-akpm/drivers/net/eth16i.c                 |    8 +-
 25-akpm/drivers/net/ewrk3.c                  |    5 -
 25-akpm/drivers/net/hp-plus.c                |    4 -
 25-akpm/drivers/net/hp.c                     |    4 -
 25-akpm/drivers/net/ibmlana.c                |    4 -
 25-akpm/drivers/net/lance.c                  |    8 +-
 25-akpm/drivers/net/lne390.c                 |    6 +-
 25-akpm/drivers/net/ne.c                     |    6 +-
 25-akpm/drivers/net/ne2.c                    |    6 +-
 25-akpm/drivers/net/ni52.c                   |    8 +-
 25-akpm/drivers/net/ni65.c                   |    6 +-
 25-akpm/drivers/net/pcmcia/ibmtr_cs.c        |   14 ++---
 25-akpm/drivers/net/seeq8005.c               |    4 -
 25-akpm/drivers/net/shaper.c                 |    2 
 25-akpm/drivers/net/smc-ultra.c              |    4 -
 25-akpm/drivers/net/smc9194.c                |    6 +-
 25-akpm/drivers/net/tokenring/ibmtr.c        |    6 +-
 25-akpm/drivers/net/tokenring/proteon.c      |    6 +-
 25-akpm/drivers/net/tokenring/skisa.c        |    6 +-
 25-akpm/drivers/net/tokenring/smctr.c        |    6 +-
 25-akpm/drivers/net/wan/sbni.c               |   14 ++---
 25-akpm/drivers/net/wd.c                     |    8 +-
 25-akpm/drivers/net/wireless/wavelan.c       |    3 -
 25-akpm/drivers/net/wireless/wavelan.p.h     |    9 +--
 25-akpm/drivers/scsi/aha152x.c               |   52 +++++++++---------
 25-akpm/drivers/scsi/aha1542.c               |    4 -
 25-akpm/drivers/scsi/gdth.c                  |   24 ++++----
 25-akpm/drivers/scsi/ibmmca.c                |    9 ++-
 25-akpm/drivers/video/matrox/matroxfb_base.c |   74 +++++++++++++--------------
 25-akpm/sound/oss/ymfpci.c                   |    4 -
 49 files changed, 225 insertions(+), 225 deletions(-)

diff -puN drivers/block/ps2esdi.c~MODULE_PARM-allmod drivers/block/ps2esdi.c
--- 25/drivers/block/ps2esdi.c~MODULE_PARM-allmod	2004-11-30 01:24:27.870408776 -0800
+++ 25-akpm/drivers/block/ps2esdi.c	2004-11-30 01:24:27.949396768 -0800
@@ -177,10 +177,10 @@ static int cyl[MAX_HD] = {-1,-1};
 static int head[MAX_HD] = {-1, -1};
 static int sect[MAX_HD] = {-1, -1};
 
-MODULE_PARM(tp720esdi, "i");
-MODULE_PARM(cyl, "i");
-MODULE_PARM(head, "i");
-MODULE_PARM(sect, "i");
+module_param(tp720esdi, bool, 0);
+module_param_array(cyl, int, NULL, 0);
+module_param_array(head, int, NULL, 0);
+module_param_array(sect, int, NULL, 0);
 MODULE_LICENSE("GPL");
 
 int init_module(void) {
diff -puN drivers/block/xd.c~MODULE_PARM-allmod drivers/block/xd.c
--- 25/drivers/block/xd.c~MODULE_PARM-allmod	2004-11-30 01:24:27.871408624 -0800
+++ 25-akpm/drivers/block/xd.c	2004-11-30 01:24:27.950396616 -0800
@@ -1054,9 +1054,9 @@ static void __init xd_setparam (u_char c
 
 #ifdef MODULE
 
-MODULE_PARM(xd, "1-4i");
-MODULE_PARM(xd_geo, "3-6i");
-MODULE_PARM(nodma, "i");
+module_param_array(xd, int, NULL, 0);
+module_param_array(xd_geo, int, NULL, 0);
+module_param(nodma, bool, 0);
 
 MODULE_LICENSE("GPL");
 
diff -puN drivers/isdn/hisax/config.c~MODULE_PARM-allmod drivers/isdn/hisax/config.c
--- 25/drivers/isdn/hisax/config.c~MODULE_PARM-allmod	2004-11-30 01:24:27.873408320 -0800
+++ 25-akpm/drivers/isdn/hisax/config.c	2004-11-30 01:24:27.951396464 -0800
@@ -354,20 +354,18 @@ static int irq[HISAX_MAX_CARDS] __devini
 static int mem[HISAX_MAX_CARDS] __devinitdata = { 0, };
 static char *id = HiSaxID;
 
-#define PARM_PARA "1-" __MODULE_STRING(HISAX_MAX_CARDS) "i"
-
 MODULE_DESCRIPTION("ISDN4Linux: Driver for passive ISDN cards");
 MODULE_AUTHOR("Karsten Keil");
 MODULE_LICENSE("GPL");
-MODULE_PARM(type, PARM_PARA);
-MODULE_PARM(protocol, PARM_PARA);
-MODULE_PARM(io, PARM_PARA);
-MODULE_PARM(irq, PARM_PARA);
-MODULE_PARM(mem, PARM_PARA);
-MODULE_PARM(id, "s");
+module_param_array(type, int, NULL, 0);
+module_param_array(protocol, int, NULL, 0);
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(mem, int, NULL, 0);
+module_param(id, charp, 0);
 #ifdef IO0_IO1
-MODULE_PARM(io0, PARM_PARA);
-MODULE_PARM(io1, PARM_PARA);
+module_param_array(io0, int, NULL, 0);
+module_param_array(io1, int, NULL, 0);
 #endif
 #endif /* MODULE */
 
diff -puN drivers/media/video/cpia_pp.c~MODULE_PARM-allmod drivers/media/video/cpia_pp.c
--- 25/drivers/media/video/cpia_pp.c~MODULE_PARM-allmod	2004-11-30 01:24:27.875408016 -0800
+++ 25-akpm/drivers/media/video/cpia_pp.c	2004-11-30 01:24:27.952396312 -0800
@@ -71,7 +71,7 @@ MODULE_AUTHOR("B. Huisman <bhuism@cs.utw
 MODULE_DESCRIPTION("Parallel port driver for Vision CPiA based cameras");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(parport, "1-" __MODULE_STRING(PARPORT_MAX) "s");
+module_param_array(parport, charp, NULL, 0);
 MODULE_PARM_DESC(parport, "'auto' or a list of parallel port numbers. Just like lp.");
 #else
 static int parport_nr[PARPORT_MAX] __initdata =
diff -puN drivers/mtd/devices/mtdram.c~MODULE_PARM-allmod drivers/mtd/devices/mtdram.c
--- 25/drivers/mtd/devices/mtdram.c~MODULE_PARM-allmod	2004-11-30 01:24:27.876407864 -0800
+++ 25-akpm/drivers/mtd/devices/mtdram.c	2004-11-30 01:24:27.953396160 -0800
@@ -29,9 +29,9 @@
 #ifdef MODULE
 static unsigned long total_size = CONFIG_MTDRAM_TOTAL_SIZE;
 static unsigned long erase_size = CONFIG_MTDRAM_ERASE_SIZE;
-MODULE_PARM(total_size,"l");
+module_param(total_size,ulong,0);
 MODULE_PARM_DESC(total_size, "Total device size in KiB");
-MODULE_PARM(erase_size,"l");
+module_param(erase_size,ulong,0);
 MODULE_PARM_DESC(erase_size, "Device erase block size in KiB");
 #define MTDRAM_TOTAL_SIZE (total_size * 1024)
 #define MTDRAM_ERASE_SIZE (erase_size * 1024)
diff -puN drivers/net/3c501.c~MODULE_PARM-allmod drivers/net/3c501.c
--- 25/drivers/net/3c501.c~MODULE_PARM-allmod	2004-11-30 01:24:27.877407712 -0800
+++ 25-akpm/drivers/net/3c501.c	2004-11-30 01:24:27.954396008 -0800
@@ -892,8 +892,8 @@ static struct ethtool_ops netdev_ethtool
 
 static struct net_device *dev_3c501;
 
-MODULE_PARM(io, "i");
-MODULE_PARM(irq, "i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
 MODULE_PARM_DESC(io, "EtherLink I/O base address");
 MODULE_PARM_DESC(irq, "EtherLink IRQ number");
 
diff -puN drivers/net/3c503.c~MODULE_PARM-allmod drivers/net/3c503.c
--- 25/drivers/net/3c503.c~MODULE_PARM-allmod	2004-11-30 01:24:27.879407408 -0800
+++ 25-akpm/drivers/net/3c503.c	2004-11-30 01:24:27.954396008 -0800
@@ -673,9 +673,9 @@ static struct net_device *dev_el2[MAX_EL
 static int io[MAX_EL2_CARDS];
 static int irq[MAX_EL2_CARDS];
 static int xcvr[MAX_EL2_CARDS];	/* choose int. or ext. xcvr */
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_EL2_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_EL2_CARDS) "i");
-MODULE_PARM(xcvr, "1-" __MODULE_STRING(MAX_EL2_CARDS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(xcvr, int, NULL, 0);
 MODULE_PARM_DESC(io, "I/O base address(es)");
 MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)");
 MODULE_PARM_DESC(xcvr, "transceiver(s) (0=internal, 1=external)");
diff -puN drivers/net/3c505.c~MODULE_PARM-allmod drivers/net/3c505.c
--- 25/drivers/net/3c505.c~MODULE_PARM-allmod	2004-11-30 01:24:27.881407104 -0800
+++ 25-akpm/drivers/net/3c505.c	2004-11-30 01:24:27.956395704 -0800
@@ -1628,9 +1628,9 @@ static struct net_device *dev_3c505[ELP_
 static int io[ELP_MAX_CARDS];
 static int irq[ELP_MAX_CARDS];
 static int dma[ELP_MAX_CARDS];
-MODULE_PARM(io, "1-" __MODULE_STRING(ELP_MAX_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(ELP_MAX_CARDS) "i");
-MODULE_PARM(dma, "1-" __MODULE_STRING(ELP_MAX_CARDS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(dma, int, NULL, 0);
 MODULE_PARM_DESC(io, "EtherLink Plus I/O base address(es)");
 MODULE_PARM_DESC(irq, "EtherLink Plus IRQ number(s) (assigned)");
 MODULE_PARM_DESC(dma, "EtherLink Plus DMA channel(s)");
diff -puN drivers/net/3c507.c~MODULE_PARM-allmod drivers/net/3c507.c
--- 25/drivers/net/3c507.c~MODULE_PARM-allmod	2004-11-30 01:24:27.882406952 -0800
+++ 25-akpm/drivers/net/3c507.c	2004-11-30 01:24:27.957395552 -0800
@@ -927,8 +927,8 @@ static struct ethtool_ops netdev_ethtool
 
 #ifdef MODULE
 static struct net_device *dev_3c507;
-MODULE_PARM(io, "i");
-MODULE_PARM(irq, "i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
 MODULE_PARM_DESC(io, "EtherLink16 I/O base address");
 MODULE_PARM_DESC(irq, "(ignored)");
 
diff -puN drivers/net/3c523.c~MODULE_PARM-allmod drivers/net/3c523.c
--- 25/drivers/net/3c523.c~MODULE_PARM-allmod	2004-11-30 01:24:27.884406648 -0800
+++ 25-akpm/drivers/net/3c523.c	2004-11-30 01:24:27.958395400 -0800
@@ -1271,8 +1271,8 @@ static struct ethtool_ops netdev_ethtool
 static struct net_device *dev_elmc[MAX_3C523_CARDS];
 static int irq[MAX_3C523_CARDS];
 static int io[MAX_3C523_CARDS];
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_3C523_CARDS) "i");
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_3C523_CARDS) "i");
+module_param_array(irq, int, NULL, 0);
+module_param_array(io, int, NULL, 0);
 MODULE_PARM_DESC(io, "EtherLink/MC I/O base address(es)");
 MODULE_PARM_DESC(irq, "EtherLink/MC IRQ number(s)");
 
diff -puN drivers/net/ac3200.c~MODULE_PARM-allmod drivers/net/ac3200.c
--- 25/drivers/net/ac3200.c~MODULE_PARM-allmod	2004-11-30 01:24:27.885406496 -0800
+++ 25-akpm/drivers/net/ac3200.c	2004-11-30 01:24:27.958395400 -0800
@@ -367,9 +367,9 @@ static struct net_device *dev_ac32[MAX_A
 static int io[MAX_AC32_CARDS];
 static int irq[MAX_AC32_CARDS];
 static int mem[MAX_AC32_CARDS];
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_AC32_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_AC32_CARDS) "i");
-MODULE_PARM(mem, "1-" __MODULE_STRING(MAX_AC32_CARDS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(mem, int, NULL, 0);
 MODULE_PARM_DESC(io, "I/O base address(es)");
 MODULE_PARM_DESC(irq, "IRQ number(s)");
 MODULE_PARM_DESC(mem, "Memory base address(es)");
diff -puN drivers/net/appletalk/cops.c~MODULE_PARM-allmod drivers/net/appletalk/cops.c
--- 25/drivers/net/appletalk/cops.c~MODULE_PARM-allmod	2004-11-30 01:24:27.887406192 -0800
+++ 25-akpm/drivers/net/appletalk/cops.c	2004-11-30 01:24:27.959395248 -0800
@@ -1027,9 +1027,9 @@ static struct net_device_stats *cops_get
 static struct net_device *cops_dev;
 
 MODULE_LICENSE("GPL");
-MODULE_PARM(io, "i");
-MODULE_PARM(irq, "i");
-MODULE_PARM(board_type, "i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(board_type, int, 0);
 
 int init_module(void)
 {
diff -puN drivers/net/appletalk/ltpc.c~MODULE_PARM-allmod drivers/net/appletalk/ltpc.c
--- 25/drivers/net/appletalk/ltpc.c~MODULE_PARM-allmod	2004-11-30 01:24:27.888406040 -0800
+++ 25-akpm/drivers/net/appletalk/ltpc.c	2004-11-30 01:24:27.960395096 -0800
@@ -1257,10 +1257,10 @@ static struct net_device *dev_ltpc;
 #ifdef MODULE
 
 MODULE_LICENSE("GPL");
-MODULE_PARM(debug, "i");
-MODULE_PARM(io, "i");
-MODULE_PARM(irq, "i");
-MODULE_PARM(dma, "i");
+module_param(debug, int, 0);
+module_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(dma, int, 0);
 
 
 int __init init_module(void)
diff -puN drivers/net/at1700.c~MODULE_PARM-allmod drivers/net/at1700.c
--- 25/drivers/net/at1700.c~MODULE_PARM-allmod	2004-11-30 01:24:27.890405736 -0800
+++ 25-akpm/drivers/net/at1700.c	2004-11-30 01:24:27.961394944 -0800
@@ -899,9 +899,9 @@ set_rx_mode(struct net_device *dev)
 #ifdef MODULE
 static struct net_device *dev_at1700;
 
-MODULE_PARM(io, "i");
-MODULE_PARM(irq, "i");
-MODULE_PARM(net_debug, "i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(net_debug, int, 0);
 MODULE_PARM_DESC(io, "AT1700/FMV18X I/O base address");
 MODULE_PARM_DESC(irq, "AT1700/FMV18X IRQ number");
 MODULE_PARM_DESC(net_debug, "AT1700/FMV18X debug level (0-6)");
diff -puN drivers/net/cs89x0.c~MODULE_PARM-allmod drivers/net/cs89x0.c
--- 25/drivers/net/cs89x0.c~MODULE_PARM-allmod	2004-11-30 01:24:27.891405584 -0800
+++ 25-akpm/drivers/net/cs89x0.c	2004-11-30 01:24:27.963394640 -0800
@@ -1710,14 +1710,14 @@ static int use_dma;			/* These generate 
 static int dma;
 static int dmasize=16;			/* or 64 */
 
-MODULE_PARM(io, "i");
-MODULE_PARM(irq, "i");
-MODULE_PARM(debug, "i");
-MODULE_PARM(media, "c8");
-MODULE_PARM(duplex, "i");
-MODULE_PARM(dma , "i");
-MODULE_PARM(dmasize , "i");
-MODULE_PARM(use_dma , "i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(debug, int, 0);
+module_param_string(media, media, sizeof(media), 0);
+module_param(duplex, int, 0);
+module_param(dma , int, 0);
+module_param(dmasize , int, 0);
+module_param(use_dma , int, 0);
 MODULE_PARM_DESC(io, "cs89x0 I/O base address");
 MODULE_PARM_DESC(irq, "cs89x0 IRQ number");
 #if DEBUGGING
diff -puN drivers/net/e2100.c~MODULE_PARM-allmod drivers/net/e2100.c
--- 25/drivers/net/e2100.c~MODULE_PARM-allmod	2004-11-30 01:24:27.893405280 -0800
+++ 25-akpm/drivers/net/e2100.c	2004-11-30 01:24:27.964394488 -0800
@@ -421,10 +421,10 @@ static int irq[MAX_E21_CARDS];
 static int mem[MAX_E21_CARDS];
 static int xcvr[MAX_E21_CARDS];		/* choose int. or ext. xcvr */
 
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_E21_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_E21_CARDS) "i");
-MODULE_PARM(mem, "1-" __MODULE_STRING(MAX_E21_CARDS) "i");
-MODULE_PARM(xcvr, "1-" __MODULE_STRING(MAX_E21_CARDS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(mem, int, NULL, 0);
+module_param_array(xcvr, int, NULL, 0);
 MODULE_PARM_DESC(io, "I/O base address(es)");
 MODULE_PARM_DESC(irq, "IRQ number(s)");
 MODULE_PARM_DESC(mem, " memory base address(es)");
diff -puN drivers/net/eepro.c~MODULE_PARM-allmod drivers/net/eepro.c
--- 25/drivers/net/eepro.c~MODULE_PARM-allmod	2004-11-30 01:24:27.894405128 -0800
+++ 25-akpm/drivers/net/eepro.c	2004-11-30 01:24:27.965394336 -0800
@@ -1720,10 +1720,10 @@ MODULE_AUTHOR("Pascal Dupuis, and aris@c
 MODULE_DESCRIPTION("Intel i82595 ISA EtherExpressPro10/10+ driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_EEPRO) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_EEPRO) "i");
-MODULE_PARM(mem, "1-" __MODULE_STRING(MAX_EEPRO) "i");
-MODULE_PARM(autodetect, "1-" __MODULE_STRING(1) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(mem, int, NULL, 0);
+module_param(autodetect, bool, 0);
 MODULE_PARM_DESC(io, "EtherExpress Pro/10 I/O base addres(es)");
 MODULE_PARM_DESC(irq, "EtherExpress Pro/10 IRQ number(s)");
 MODULE_PARM_DESC(mem, "EtherExpress Pro/10 Rx buffer size(es) in kB (3-29)");
diff -puN drivers/net/eexpress.c~MODULE_PARM-allmod drivers/net/eexpress.c
--- 25/drivers/net/eexpress.c~MODULE_PARM-allmod	2004-11-30 01:24:27.896404824 -0800
+++ 25-akpm/drivers/net/eexpress.c	2004-11-30 01:24:27.966394184 -0800
@@ -1691,8 +1691,8 @@ static struct net_device *dev_eexp[EEXP_
 static int irq[EEXP_MAX_CARDS];
 static int io[EEXP_MAX_CARDS];
 
-MODULE_PARM(io, "1-" __MODULE_STRING(EEXP_MAX_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(EEXP_MAX_CARDS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
 MODULE_PARM_DESC(io, "EtherExpress 16 I/O base address(es)");
 MODULE_PARM_DESC(irq, "EtherExpress 16 IRQ number(s)");
 MODULE_LICENSE("GPL");
diff -puN drivers/net/es3210.c~MODULE_PARM-allmod drivers/net/es3210.c
--- 25/drivers/net/es3210.c~MODULE_PARM-allmod	2004-11-30 01:24:27.897404672 -0800
+++ 25-akpm/drivers/net/es3210.c	2004-11-30 01:24:27.967394032 -0800
@@ -414,9 +414,9 @@ static int io[MAX_ES_CARDS];
 static int irq[MAX_ES_CARDS];
 static int mem[MAX_ES_CARDS];
 
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_ES_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_ES_CARDS) "i");
-MODULE_PARM(mem, "1-" __MODULE_STRING(MAX_ES_CARDS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(mem, int, NULL, 0);
 MODULE_PARM_DESC(io, "I/O base address(es)");
 MODULE_PARM_DESC(irq, "IRQ number(s)");
 MODULE_PARM_DESC(mem, "memory base address(es)");
diff -puN drivers/net/eth16i.c~MODULE_PARM-allmod drivers/net/eth16i.c
--- 25/drivers/net/eth16i.c~MODULE_PARM-allmod	2004-11-30 01:24:27.899404368 -0800
+++ 25-akpm/drivers/net/eth16i.c	2004-11-30 01:24:27.968393880 -0800
@@ -1420,18 +1420,18 @@ MODULE_DESCRIPTION("ICL EtherTeam 16i/32
 MODULE_LICENSE("GPL");
 
 
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_ETH16I_CARDS) "i");
+module_param_array(io, int, NULL, 0);
 MODULE_PARM_DESC(io, "eth16i I/O base address(es)");
 
 #if 0
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_ETH16I_CARDS) "i");
+module_param_array(irq, int, NULL, 0);
 MODULE_PARM_DESC(irq, "eth16i interrupt request number");
 #endif
 
-MODULE_PARM(mediatype, "1-" __MODULE_STRING(MAX_ETH16I_CARDS) "s");
+module_param_array(mediatype, charp, NULL, 0);
 MODULE_PARM_DESC(mediatype, "eth16i media type of interface(s) (bnc,tp,dix,auto,eprom)");
 
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "eth16i debug level (0-6)");
 
 int init_module(void)
diff -puN drivers/net/ewrk3.c~MODULE_PARM-allmod drivers/net/ewrk3.c
--- 25/drivers/net/ewrk3.c~MODULE_PARM-allmod	2004-11-30 01:24:27.900404216 -0800
+++ 25-akpm/drivers/net/ewrk3.c	2004-11-30 01:24:27.970393576 -0800
@@ -202,7 +202,6 @@ static int ewrk3_debug = 1;
 #define EWRK3_IOP_INC 0x20	/* I/O address increment */
 #define EWRK3_TOTAL_SIZE 0x20	/* required I/O address length */
 
-/* If you change this, remember to also change MODULE_PARM array limits */
 #ifndef MAX_NUM_EWRK3S
 #define MAX_NUM_EWRK3S 21
 #endif
@@ -1945,8 +1944,8 @@ static int ndevs;
 static int io[MAX_NUM_EWRK3S+1] = { 0x300, 0, };
 
 /* '21' below should really be 'MAX_NUM_EWRK3S' */
-MODULE_PARM(io, "0-21i");
-MODULE_PARM(irq, "0-21i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
 MODULE_PARM_DESC(io, "EtherWORKS 3 I/O base address(es)");
 MODULE_PARM_DESC(irq, "EtherWORKS 3 IRQ number(s)");
 
diff -puN drivers/net/hp.c~MODULE_PARM-allmod drivers/net/hp.c
--- 25/drivers/net/hp.c~MODULE_PARM-allmod	2004-11-30 01:24:27.902403912 -0800
+++ 25-akpm/drivers/net/hp.c	2004-11-30 01:24:27.970393576 -0800
@@ -406,8 +406,8 @@ static struct net_device *dev_hp[MAX_HP_
 static int io[MAX_HP_CARDS];
 static int irq[MAX_HP_CARDS];
 
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_HP_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_HP_CARDS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
 MODULE_PARM_DESC(io, "I/O base address(es)");
 MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)");
 MODULE_DESCRIPTION("HP PC-LAN ISA ethernet driver");
diff -puN drivers/net/hp-plus.c~MODULE_PARM-allmod drivers/net/hp-plus.c
--- 25/drivers/net/hp-plus.c~MODULE_PARM-allmod	2004-11-30 01:24:27.903403760 -0800
+++ 25-akpm/drivers/net/hp-plus.c	2004-11-30 01:24:27.971393424 -0800
@@ -437,8 +437,8 @@ static struct net_device *dev_hpp[MAX_HP
 static int io[MAX_HPP_CARDS];
 static int irq[MAX_HPP_CARDS];
 
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_HPP_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_HPP_CARDS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
 MODULE_PARM_DESC(io, "I/O port address(es)");
 MODULE_PARM_DESC(irq, "IRQ number(s); ignored if properly detected");
 MODULE_DESCRIPTION("HP PC-LAN+ ISA ethernet driver");
diff -puN drivers/net/ibmlana.c~MODULE_PARM-allmod drivers/net/ibmlana.c
--- 25/drivers/net/ibmlana.c~MODULE_PARM-allmod	2004-11-30 01:24:27.904403608 -0800
+++ 25-akpm/drivers/net/ibmlana.c	2004-11-30 01:24:27.972393272 -0800
@@ -1020,8 +1020,8 @@ static struct net_device *moddevs[DEVMAX
 static int irq;
 static int io;
 
-MODULE_PARM(irq, "i");
-MODULE_PARM(io, "i");
+module_param(irq, int, 0);
+module_param(io, int, 0);
 MODULE_PARM_DESC(irq, "IBM LAN/A IRQ number");
 MODULE_PARM_DESC(io, "IBM LAN/A I/O base address");
 MODULE_LICENSE("GPL");
diff -puN drivers/net/lance.c~MODULE_PARM-allmod drivers/net/lance.c
--- 25/drivers/net/lance.c~MODULE_PARM-allmod	2004-11-30 01:24:27.906403304 -0800
+++ 25-akpm/drivers/net/lance.c	2004-11-30 01:24:27.973393120 -0800
@@ -327,10 +327,10 @@ static int io[MAX_CARDS];
 static int dma[MAX_CARDS];
 static int irq[MAX_CARDS];
 
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_CARDS) "i");
-MODULE_PARM(dma, "1-" __MODULE_STRING(MAX_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_CARDS) "i");
-MODULE_PARM(lance_debug, "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(dma, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param(lance_debug, int, 0);
 MODULE_PARM_DESC(io, "LANCE/PCnet I/O base address(es),required");
 MODULE_PARM_DESC(dma, "LANCE/PCnet ISA DMA channel (ignored for some devices)");
 MODULE_PARM_DESC(irq, "LANCE/PCnet IRQ number (ignored for some devices)");
diff -puN drivers/net/lne390.c~MODULE_PARM-allmod drivers/net/lne390.c
--- 25/drivers/net/lne390.c~MODULE_PARM-allmod	2004-11-30 01:24:27.907403152 -0800
+++ 25-akpm/drivers/net/lne390.c	2004-11-30 01:24:27.974392968 -0800
@@ -402,9 +402,9 @@ static int io[MAX_LNE_CARDS];
 static int irq[MAX_LNE_CARDS];
 static int mem[MAX_LNE_CARDS];
 
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_LNE_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_LNE_CARDS) "i");
-MODULE_PARM(mem, "1-" __MODULE_STRING(MAX_LNE_CARDS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(mem, int, NULL, 0);
 MODULE_PARM_DESC(io, "I/O base address(es)");
 MODULE_PARM_DESC(irq, "IRQ number(s)");
 MODULE_PARM_DESC(mem, "memory base address(es)");
diff -puN drivers/net/ne2.c~MODULE_PARM-allmod drivers/net/ne2.c
--- 25/drivers/net/ne2.c~MODULE_PARM-allmod	2004-11-30 01:24:27.909402848 -0800
+++ 25-akpm/drivers/net/ne2.c	2004-11-30 01:24:27.975392816 -0800
@@ -776,9 +776,9 @@ static int irq[MAX_NE_CARDS];
 static int bad[MAX_NE_CARDS];	/* 0xbad = bad sig or no reset ack */
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_NE_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_NE_CARDS) "i");
-MODULE_PARM(bad, "1-" __MODULE_STRING(MAX_NE_CARDS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(bad, int, NULL, 0);
 MODULE_PARM_DESC(io, "(ignored)");
 MODULE_PARM_DESC(irq, "(ignored)");
 MODULE_PARM_DESC(bad, "(ignored)");
diff -puN drivers/net/ne.c~MODULE_PARM-allmod drivers/net/ne.c
--- 25/drivers/net/ne.c~MODULE_PARM-allmod	2004-11-30 01:24:27.910402696 -0800
+++ 25-akpm/drivers/net/ne.c	2004-11-30 01:24:27.975392816 -0800
@@ -800,9 +800,9 @@ static int io[MAX_NE_CARDS];
 static int irq[MAX_NE_CARDS];
 static int bad[MAX_NE_CARDS];	/* 0xbad = bad sig or no reset ack */
 
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_NE_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_NE_CARDS) "i");
-MODULE_PARM(bad, "1-" __MODULE_STRING(MAX_NE_CARDS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(bad, int, NULL, 0);
 MODULE_PARM_DESC(io, "I/O base address(es),required");
 MODULE_PARM_DESC(irq, "IRQ number(s)");
 MODULE_PARM_DESC(bad, "Accept card(s) with bad signatures");
diff -puN drivers/net/ni52.c~MODULE_PARM-allmod drivers/net/ni52.c
--- 25/drivers/net/ni52.c~MODULE_PARM-allmod	2004-11-30 01:24:27.912402392 -0800
+++ 25-akpm/drivers/net/ni52.c	2004-11-30 01:24:27.977392512 -0800
@@ -1314,10 +1314,10 @@ static void set_multicast_list(struct ne
 #ifdef MODULE
 static struct net_device *dev_ni52;
 
-MODULE_PARM(io, "i");
-MODULE_PARM(irq, "i");
-MODULE_PARM(memstart, "l");
-MODULE_PARM(memend, "l");
+module_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(memstart, long, 0);
+module_param(memend, long, 0);
 MODULE_PARM_DESC(io, "NI5210 I/O base address,required");
 MODULE_PARM_DESC(irq, "NI5210 IRQ number,required");
 MODULE_PARM_DESC(memstart, "NI5210 memory base address,required");
diff -puN drivers/net/ni65.c~MODULE_PARM-allmod drivers/net/ni65.c
--- 25/drivers/net/ni65.c~MODULE_PARM-allmod	2004-11-30 01:24:27.913402240 -0800
+++ 25-akpm/drivers/net/ni65.c	2004-11-30 01:24:27.978392360 -0800
@@ -1250,9 +1250,9 @@ static void set_multicast_list(struct ne
 #ifdef MODULE
 static struct net_device *dev_ni65;
 
-MODULE_PARM(irq, "i");
-MODULE_PARM(io, "i");
-MODULE_PARM(dma, "i");
+module_param(irq, int, 0);
+module_param(io, int, 0);
+module_param(dma, int, 0);
 MODULE_PARM_DESC(irq, "ni6510 IRQ number (ignored for some cards)");
 MODULE_PARM_DESC(io, "ni6510 I/O base address");
 MODULE_PARM_DESC(dma, "ni6510 ISA DMA channel (ignored for some cards)");
diff -puN drivers/net/pcmcia/ibmtr_cs.c~MODULE_PARM-allmod drivers/net/pcmcia/ibmtr_cs.c
--- 25/drivers/net/pcmcia/ibmtr_cs.c~MODULE_PARM-allmod	2004-11-30 01:24:27.914402088 -0800
+++ 25-akpm/drivers/net/pcmcia/ibmtr_cs.c	2004-11-30 01:24:27.978392360 -0800
@@ -72,7 +72,7 @@
 
 #ifdef PCMCIA_DEBUG
 static int pc_debug = PCMCIA_DEBUG;
-MODULE_PARM(pc_debug, "i");
+module_param(pc_debug, int, 0);
 #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args)
 static char *version =
 "ibmtr_cs.c 1.10   1996/01/06 05:19:00 (Steve Kipisz)\n"
@@ -102,12 +102,12 @@ static u_long sramsize = 64;
 /* Ringspeed 4,16 */
 static int ringspeed = 16;
 
-MODULE_PARM(irq_mask, "i");
-MODULE_PARM(irq_list, "1-4i");
-MODULE_PARM(mmiobase, "i");
-MODULE_PARM(srambase, "i");
-MODULE_PARM(sramsize, "i");
-MODULE_PARM(ringspeed, "i");
+module_param(irq_mask, int, 0);
+module_param_array(irq_list, int, NULL, 0);
+module_param(mmiobase, ulong, 0);
+module_param(srambase, ulong, 0);
+module_param(sramsize, ulong, 0);
+module_param(ringspeed, int, 0);
 MODULE_LICENSE("GPL");
 
 /*====================================================================*/
diff -puN drivers/net/seeq8005.c~MODULE_PARM-allmod drivers/net/seeq8005.c
--- 25/drivers/net/seeq8005.c~MODULE_PARM-allmod	2004-11-30 01:24:27.916401784 -0800
+++ 25-akpm/drivers/net/seeq8005.c	2004-11-30 01:24:27.979392208 -0800
@@ -737,8 +737,8 @@ static void hardware_send_packet(struct 
 
 static struct net_device *dev_seeq;
 MODULE_LICENSE("GPL");
-MODULE_PARM(io, "i");
-MODULE_PARM(irq, "i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
 MODULE_PARM_DESC(io, "SEEQ 8005 I/O base address");
 MODULE_PARM_DESC(irq, "SEEQ 8005 IRQ number");
 
diff -puN drivers/net/shaper.c~MODULE_PARM-allmod drivers/net/shaper.c
--- 25/drivers/net/shaper.c~MODULE_PARM-allmod	2004-11-30 01:24:27.917401632 -0800
+++ 25-akpm/drivers/net/shaper.c	2004-11-30 01:24:27.980392056 -0800
@@ -674,7 +674,7 @@ static void __init shaper_setup(struct n
 static int shapers = 1;
 #ifdef MODULE
 
-MODULE_PARM(shapers, "i");
+module_param(shapers, int, 0);
 MODULE_PARM_DESC(shapers, "Traffic shaper: maximum number of shapers");
 
 #else /* MODULE */
diff -puN drivers/net/smc9194.c~MODULE_PARM-allmod drivers/net/smc9194.c
--- 25/drivers/net/smc9194.c~MODULE_PARM-allmod	2004-11-30 01:24:27.919401328 -0800
+++ 25-akpm/drivers/net/smc9194.c	2004-11-30 01:24:27.981391904 -0800
@@ -1600,9 +1600,9 @@ static void smc_set_multicast_list(struc
 static struct net_device *devSMC9194;
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "i");
-MODULE_PARM(irq, "i");
-MODULE_PARM(ifport, "i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(ifport, int, 0);
 MODULE_PARM_DESC(io, "SMC 99194 I/O base address");
 MODULE_PARM_DESC(irq, "SMC 99194 IRQ number");
 MODULE_PARM_DESC(ifport, "SMC 99194 interface port (0-default, 1-TP, 2-AUI)");
diff -puN drivers/net/smc-ultra.c~MODULE_PARM-allmod drivers/net/smc-ultra.c
--- 25/drivers/net/smc-ultra.c~MODULE_PARM-allmod	2004-11-30 01:24:27.920401176 -0800
+++ 25-akpm/drivers/net/smc-ultra.c	2004-11-30 01:24:27.982391752 -0800
@@ -553,8 +553,8 @@ static struct net_device *dev_ultra[MAX_
 static int io[MAX_ULTRA_CARDS];
 static int irq[MAX_ULTRA_CARDS];
 
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_ULTRA_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_ULTRA_CARDS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
 MODULE_PARM_DESC(io, "I/O base address(es)");
 MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)");
 MODULE_DESCRIPTION("SMC Ultra/EtherEZ ISA/PnP Ethernet driver");
diff -puN drivers/net/tokenring/ibmtr.c~MODULE_PARM-allmod drivers/net/tokenring/ibmtr.c
--- 25/drivers/net/tokenring/ibmtr.c~MODULE_PARM-allmod	2004-11-30 01:24:27.922400872 -0800
+++ 25-akpm/drivers/net/tokenring/ibmtr.c	2004-11-30 01:24:27.983391600 -0800
@@ -1933,9 +1933,9 @@ static int mem[IBMTR_MAX_ADAPTERS];
 
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "1-" __MODULE_STRING(IBMTR_MAX_ADAPTERS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(IBMTR_MAX_ADAPTERS) "i");
-MODULE_PARM(mem, "1-" __MODULE_STRING(IBMTR_MAX_ADAPTERS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(mem, int, NULL, 0);
 
 static int __init ibmtr_init(void)
 {
diff -puN drivers/net/tokenring/proteon.c~MODULE_PARM-allmod drivers/net/tokenring/proteon.c
--- 25/drivers/net/tokenring/proteon.c~MODULE_PARM-allmod	2004-11-30 01:24:27.923400720 -0800
+++ 25-akpm/drivers/net/tokenring/proteon.c	2004-11-30 01:24:27.984391448 -0800
@@ -362,9 +362,9 @@ static int dma[ISATR_MAX_ADAPTERS];
 
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "1-" __MODULE_STRING(ISATR_MAX_ADAPTERS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(ISATR_MAX_ADAPTERS) "i");
-MODULE_PARM(dma, "1-" __MODULE_STRING(ISATR_MAX_ADAPTERS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(dma, int, NULL, 0);
 
 static struct net_device *proteon_dev[ISATR_MAX_ADAPTERS];
 
diff -puN drivers/net/tokenring/skisa.c~MODULE_PARM-allmod drivers/net/tokenring/skisa.c
--- 25/drivers/net/tokenring/skisa.c~MODULE_PARM-allmod	2004-11-30 01:24:27.925400416 -0800
+++ 25-akpm/drivers/net/tokenring/skisa.c	2004-11-30 01:24:27.985391296 -0800
@@ -371,9 +371,9 @@ static int dma[ISATR_MAX_ADAPTERS];
 
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "1-" __MODULE_STRING(ISATR_MAX_ADAPTERS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(ISATR_MAX_ADAPTERS) "i");
-MODULE_PARM(dma, "1-" __MODULE_STRING(ISATR_MAX_ADAPTERS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(dma, int, NULL, 0);
 
 static struct net_device *sk_isa_dev[ISATR_MAX_ADAPTERS];
 
diff -puN drivers/net/tokenring/smctr.c~MODULE_PARM-allmod drivers/net/tokenring/smctr.c
--- 25/drivers/net/tokenring/smctr.c~MODULE_PARM-allmod	2004-11-30 01:24:27.927400112 -0800
+++ 25-akpm/drivers/net/tokenring/smctr.c	2004-11-30 01:24:27.989390688 -0800
@@ -5663,9 +5663,9 @@ static int irq[SMCTR_MAX_ADAPTERS];
 
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "1-" __MODULE_STRING(SMCTR_MAX_ADAPTERS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(SMCTR_MAX_ADAPTERS) "i");
-MODULE_PARM(ringspeed, "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param(ringspeed, int, 0);
 
 static struct net_device *setup_card(int n)
 {
diff -puN drivers/net/wan/sbni.c~MODULE_PARM-allmod drivers/net/wan/sbni.c
--- 25/drivers/net/wan/sbni.c~MODULE_PARM-allmod	2004-11-30 01:24:27.929399808 -0800
+++ 25-akpm/drivers/net/wan/sbni.c	2004-11-30 01:24:27.991390384 -0800
@@ -1485,14 +1485,12 @@ set_multicast_list( struct net_device  *
 
 
 #ifdef MODULE
-
-MODULE_PARM(	io,	"1-" __MODULE_STRING( SBNI_MAX_NUM_CARDS ) "i" );
-MODULE_PARM(	irq,	"1-" __MODULE_STRING( SBNI_MAX_NUM_CARDS ) "i" );
-MODULE_PARM(	baud,	"1-" __MODULE_STRING( SBNI_MAX_NUM_CARDS ) "i" );
-MODULE_PARM(	rxl,	"1-" __MODULE_STRING( SBNI_MAX_NUM_CARDS ) "i" );
-MODULE_PARM(	mac,	"1-" __MODULE_STRING( SBNI_MAX_NUM_CARDS ) "i" );
-
-MODULE_PARM(	skip_pci_probe,	"i" );
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(baud, int, NULL, 0);
+module_param_array(rxl, int, NULL, 0);
+module_param_array(mac, int, NULL, 0);
+module_param(skip_pci_probe, bool, 0);
 
 MODULE_LICENSE("GPL");
 
diff -puN drivers/net/wd.c~MODULE_PARM-allmod drivers/net/wd.c
--- 25/drivers/net/wd.c~MODULE_PARM-allmod	2004-11-30 01:24:27.930399656 -0800
+++ 25-akpm/drivers/net/wd.c	2004-11-30 01:24:27.991390384 -0800
@@ -487,10 +487,10 @@ static int irq[MAX_WD_CARDS];
 static int mem[MAX_WD_CARDS];
 static int mem_end[MAX_WD_CARDS];	/* for non std. mem size */
 
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_WD_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_WD_CARDS) "i");
-MODULE_PARM(mem, "1-" __MODULE_STRING(MAX_WD_CARDS) "i");
-MODULE_PARM(mem_end, "1-" __MODULE_STRING(MAX_WD_CARDS) "i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(mem, int, NULL, 0);
+module_param_array(mem_end, int, NULL, 0);
 MODULE_PARM_DESC(io, "I/O base address(es)");
 MODULE_PARM_DESC(irq, "IRQ number(s) (ignored for PureData boards)");
 MODULE_PARM_DESC(mem, "memory base address(es)(ignored for PureData boards)");
diff -puN drivers/net/wireless/wavelan.c~MODULE_PARM-allmod drivers/net/wireless/wavelan.c
--- 25/drivers/net/wireless/wavelan.c~MODULE_PARM-allmod	2004-11-30 01:24:27.932399352 -0800
+++ 25-akpm/drivers/net/wireless/wavelan.c	2004-11-30 01:24:27.994389928 -0800
@@ -4344,7 +4344,8 @@ int init_module(void)
 		struct net_device *dev = alloc_etherdev(sizeof(net_local));
 		if (!dev)
 			break;
-		memcpy(dev->name, name[i], IFNAMSIZ);	/* Copy name */
+		if (name[i])
+			strcpy(dev->name, name[i]);	/* Copy name */
 		dev->base_addr = io[i];
 		dev->irq = irq[i];
 
diff -puN drivers/net/wireless/wavelan.p.h~MODULE_PARM-allmod drivers/net/wireless/wavelan.p.h
--- 25/drivers/net/wireless/wavelan.p.h~MODULE_PARM-allmod	2004-11-30 01:24:27.933399200 -0800
+++ 25-akpm/drivers/net/wireless/wavelan.p.h	2004-11-30 01:24:27.995389776 -0800
@@ -703,10 +703,11 @@ static unsigned short	iobase[]	=
 /* Parameters set by insmod */
 static int	io[4];
 static int	irq[4];
-static char	name[4][IFNAMSIZ];
-MODULE_PARM(io, "1-4i");
-MODULE_PARM(irq, "1-4i");
-MODULE_PARM(name, "1-4c" __MODULE_STRING(IFNAMSIZ));
+static char	*name[4];
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(name, charp, NULL, 0);
+
 MODULE_PARM_DESC(io, "WaveLAN I/O base address(es),required");
 MODULE_PARM_DESC(irq, "WaveLAN IRQ number(s)");
 MODULE_PARM_DESC(name, "WaveLAN interface neme(s)");
diff -puN drivers/scsi/aha152x.c~MODULE_PARM-allmod drivers/scsi/aha152x.c
--- 25/drivers/scsi/aha152x.c~MODULE_PARM-allmod	2004-11-30 01:24:27.935398896 -0800
+++ 25-akpm/drivers/scsi/aha152x.c	2004-11-30 01:24:27.998389320 -0800
@@ -353,58 +353,58 @@ MODULE_LICENSE("GPL");
 
 #if !defined(PCMCIA)
 #if defined(MODULE)
-MODULE_PARM(io, "1-2i");
-MODULE_PARM_DESC(io,"base io address of controller");
 static int io[] = {0, 0};
+module_param_array(io, int, NULL, 0);
+MODULE_PARM_DESC(io,"base io address of controller");
 
-MODULE_PARM(irq, "1-2i");
-MODULE_PARM_DESC(irq,"interrupt for controller");
 static int irq[] = {0, 0};
+module_param_array(irq, int, NULL, 0);
+MODULE_PARM_DESC(irq,"interrupt for controller");
 
-MODULE_PARM(scsiid, "1-2i");
-MODULE_PARM_DESC(scsiid,"scsi id of controller");
 static int scsiid[] = {7, 7};
+module_param_array(scsiid, int, NULL, 0);
+MODULE_PARM_DESC(scsiid,"scsi id of controller");
 
-MODULE_PARM(reconnect, "1-2i");
-MODULE_PARM_DESC(reconnect,"allow targets to disconnect");
 static int reconnect[] = {1, 1};
+module_param_array(reconnect, int, NULL, 0);
+MODULE_PARM_DESC(reconnect,"allow targets to disconnect");
 
-MODULE_PARM(parity, "1-2i");
-MODULE_PARM_DESC(parity,"use scsi parity");
 static int parity[] = {1, 1};
+module_param_array(parity, int, NULL, 0);
+MODULE_PARM_DESC(parity,"use scsi parity");
 
-MODULE_PARM(sync, "1-2i");
-MODULE_PARM_DESC(sync,"use synchronous transfers");
 static int sync[] = {1, 1};
+module_param_array(sync, int, NULL, 0);
+MODULE_PARM_DESC(sync,"use synchronous transfers");
 
-MODULE_PARM(delay, "1-2i");
-MODULE_PARM_DESC(delay,"scsi reset delay");
 static int delay[] = {DELAY_DEFAULT, DELAY_DEFAULT};
+module_param_array(delay, int, NULL, 0);
+MODULE_PARM_DESC(delay,"scsi reset delay");
 
-MODULE_PARM(exttrans, "1-2i");
-MODULE_PARM_DESC(exttrans,"use extended translation");
 static int exttrans[] = {0, 0};
+module_param_array(exttrans, int, NULL, 0);
+MODULE_PARM_DESC(exttrans,"use extended translation");
 
 #if !defined(AHA152X_DEBUG)
-MODULE_PARM(aha152x, "1-8i");
-MODULE_PARM_DESC(aha152x, "parameters for first controller");
 static int aha152x[] = {0, 11, 7, 1, 1, 0, DELAY_DEFAULT, 0};
+module_param_array(aha152x, int, NULL, 0);
+MODULE_PARM_DESC(aha152x, "parameters for first controller");
 
-MODULE_PARM(aha152x1, "1-8i");
-MODULE_PARM_DESC(aha152x1, "parameters for second controller");
 static int aha152x1[] = {0, 11, 7, 1, 1, 0, DELAY_DEFAULT, 0};
+module_param_array(aha152x1, int, NULL, 0);
+MODULE_PARM_DESC(aha152x1, "parameters for second controller");
 #else
-MODULE_PARM(debug, "1-2i");
-MODULE_PARM_DESC(debug, "flags for driver debugging");
 static int debug[] = {DEBUG_DEFAULT, DEBUG_DEFAULT};
+module_param_array(debug, int, NULL, 0);
+MODULE_PARM_DESC(debug, "flags for driver debugging");
 
-MODULE_PARM(aha152x, "1-9i");
-MODULE_PARM_DESC(aha152x, "parameters for first controller");
 static int aha152x[]   = {0, 11, 7, 1, 1, 1, DELAY_DEFAULT, 0, DEBUG_DEFAULT};
+module_param_array(aha152x, int, NULL, 0);
+MODULE_PARM_DESC(aha152x, "parameters for first controller");
 
-MODULE_PARM(aha152x1, "1-9i");
-MODULE_PARM_DESC(aha152x1, "parameters for second controller");
 static int aha152x1[]  = {0, 11, 7, 1, 1, 1, DELAY_DEFAULT, 0, DEBUG_DEFAULT};
+module_param_array(aha152x1, int, NULL, 0);
+MODULE_PARM_DESC(aha152x1, "parameters for second controller");
 #endif /* !defined(AHA152X_DEBUG) */
 #endif /* MODULE */
 
diff -puN drivers/scsi/aha1542.c~MODULE_PARM-allmod drivers/scsi/aha1542.c
--- 25/drivers/scsi/aha1542.c~MODULE_PARM-allmod	2004-11-30 01:24:27.937398592 -0800
+++ 25-akpm/drivers/scsi/aha1542.c	2004-11-30 01:24:28.000389016 -0800
@@ -131,8 +131,8 @@ static int setup_dmaspeed[MAXBOARDS] __i
 #if defined(MODULE)
 static int isapnp = 0;
 static int aha1542[] = {0x330, 11, 4, -1};
-MODULE_PARM(aha1542, "1-4i");
-MODULE_PARM(isapnp, "i");
+module_param_array(aha1542, int, NULL, 0);
+module_param(isapnp, bool, 0);
 
 static struct isapnp_device_id id_table[] __initdata = {
 	{
diff -puN drivers/scsi/gdth.c~MODULE_PARM-allmod drivers/scsi/gdth.c
--- 25/drivers/scsi/gdth.c~MODULE_PARM-allmod	2004-11-30 01:24:27.939398288 -0800
+++ 25-akpm/drivers/scsi/gdth.c	2004-11-30 01:24:28.005388256 -0800
@@ -676,18 +676,18 @@ static int force_dma32 = 0;
 
 #ifdef MODULE
 /* parameters for modprobe/insmod */
-MODULE_PARM(irq, "i");
-MODULE_PARM(disable, "i");
-MODULE_PARM(reserve_mode, "i");
-MODULE_PARM(reserve_list, "4-" __MODULE_STRING(MAX_RES_ARGS) "i");
-MODULE_PARM(reverse_scan, "i");
-MODULE_PARM(hdr_channel, "i");
-MODULE_PARM(max_ids, "i");
-MODULE_PARM(rescan, "i");
-MODULE_PARM(virt_ctr, "i");
-MODULE_PARM(shared_access, "i");
-MODULE_PARM(probe_eisa_isa, "i");
-MODULE_PARM(force_dma32, "i");
+module_param(irq, int, 0);
+module_param(disable, int, 0);
+module_param(reserve_mode, int, 0);
+module_param_array(reserve_list, int, NULL, 0);
+module_param(reverse_scan, int, 0);
+module_param(hdr_channel, int, 0);
+module_param(max_ids, int, 0);
+module_param(rescan, int, 0);
+module_param(virt_ctr, int, 0);
+module_param(shared_access, int, 0);
+module_param(probe_eisa_isa, int, 0);
+module_param(force_dma32, int, 0);
 MODULE_AUTHOR("Achim Leubner");
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,11)
 MODULE_LICENSE("GPL");
diff -puN drivers/scsi/ibmmca.c~MODULE_PARM-allmod drivers/scsi/ibmmca.c
--- 25/drivers/scsi/ibmmca.c~MODULE_PARM-allmod	2004-11-30 01:24:27.941397984 -0800
+++ 25-akpm/drivers/scsi/ibmmca.c	2004-11-30 01:24:28.008387800 -0800
@@ -451,14 +451,17 @@ static int scsi_id[IM_MAX_HOSTS] = { 7, 
    (that is kernel version 2.1.x) */
 #if defined(MODULE)
 static char *boot_options = NULL;
-MODULE_PARM(boot_options, "s");
-MODULE_PARM(io_port, "1-" __MODULE_STRING(IM_MAX_HOSTS) "i");
-MODULE_PARM(scsi_id, "1-" __MODULE_STRING(IM_MAX_HOSTS) "i");
+module_param(boot_options, charp, 0);
+module_param_array(io_port, int, NULL, 0);
+module_param_array(scsi_id, int, NULL, 0);
+
+#if 0 /* FIXME: No longer exist? --RR */
 MODULE_PARM(display, "1i");
 MODULE_PARM(adisplay, "1i");
 MODULE_PARM(normal, "1i");
 MODULE_PARM(ansi, "1i");
 #endif
+#endif
 /*counter of concurrent disk read/writes, to turn on/off disk led */
 static int disk_rw_in_progress = 0;
 
diff -puN drivers/video/matrox/matroxfb_base.c~MODULE_PARM-allmod drivers/video/matrox/matroxfb_base.c
--- 25/drivers/video/matrox/matroxfb_base.c~MODULE_PARM-allmod	2004-11-30 01:24:27.943397680 -0800
+++ 25-akpm/drivers/video/matrox/matroxfb_base.c	2004-11-30 01:24:28.011387344 -0800
@@ -2459,84 +2459,84 @@ MODULE_AUTHOR("(c) 1998-2002 Petr Vandro
 MODULE_DESCRIPTION("Accelerated FBDev driver for Matrox Millennium/Mystique/G100/G200/G400/G450/G550");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(mem, "i");
+module_param(mem, int, 0);
 MODULE_PARM_DESC(mem, "Size of available memory in MB, KB or B (2,4,8,12,16MB, default=autodetect)");
-MODULE_PARM(disabled, "i");
+module_param(disabled, int, 0);
 MODULE_PARM_DESC(disabled, "Disabled (0 or 1=disabled) (default=0)");
-MODULE_PARM(noaccel, "i");
+module_param(noaccel, int, 0);
 MODULE_PARM_DESC(noaccel, "Do not use accelerating engine (0 or 1=disabled) (default=0)");
-MODULE_PARM(nopan, "i");
+module_param(nopan, int, 0);
 MODULE_PARM_DESC(nopan, "Disable pan on startup (0 or 1=disabled) (default=0)");
-MODULE_PARM(no_pci_retry, "i");
+module_param(no_pci_retry, int, 0);
 MODULE_PARM_DESC(no_pci_retry, "PCI retries enabled (0 or 1=disabled) (default=0)");
-MODULE_PARM(novga, "i");
+module_param(novga, int, 0);
 MODULE_PARM_DESC(novga, "VGA I/O (0x3C0-0x3DF) disabled (0 or 1=disabled) (default=0)");
-MODULE_PARM(nobios, "i");
+module_param(nobios, int, 0);
 MODULE_PARM_DESC(nobios, "Disables ROM BIOS (0 or 1=disabled) (default=do not change BIOS state)");
-MODULE_PARM(noinit, "i");
+module_param(noinit, int, 0);
 MODULE_PARM_DESC(noinit, "Disables W/SG/SD-RAM and bus interface initialization (0 or 1=do not initialize) (default=0)");
-MODULE_PARM(memtype, "i");
+module_param(memtype, int, 0);
 MODULE_PARM_DESC(memtype, "Memory type for G200/G400 (see Documentation/fb/matroxfb.txt for explanation) (default=3 for G200, 0 for G400)");
-MODULE_PARM(mtrr, "i");
+module_param(mtrr, int, 0);
 MODULE_PARM_DESC(mtrr, "This speeds up video memory accesses (0=disabled or 1) (default=1)");
-MODULE_PARM(sgram, "i");
+module_param(sgram, int, 0);
 MODULE_PARM_DESC(sgram, "Indicates that G100/G200/G400 has SGRAM memory (0=SDRAM, 1=SGRAM) (default=0)");
-MODULE_PARM(inv24, "i");
+module_param(inv24, int, 0);
 MODULE_PARM_DESC(inv24, "Inverts clock polarity for 24bpp and loop frequency > 100MHz (default=do not invert polarity)");
-MODULE_PARM(inverse, "i");
+module_param(inverse, int, 0);
 MODULE_PARM_DESC(inverse, "Inverse (0 or 1) (default=0)");
 #ifdef CONFIG_FB_MATROX_MULTIHEAD
-MODULE_PARM(dev, "i");
+module_param(dev, int, 0);
 MODULE_PARM_DESC(dev, "Multihead support, attach to device ID (0..N) (default=all working)");
 #else
-MODULE_PARM(dev, "i");
+module_param(dev, int, 0);
 MODULE_PARM_DESC(dev, "Multihead support, attach to device ID (0..N) (default=first working)");
 #endif
-MODULE_PARM(vesa, "i");
+module_param(vesa, int, 0);
 MODULE_PARM_DESC(vesa, "Startup videomode (0x000-0x1FF) (default=0x101)");
-MODULE_PARM(xres, "i");
+module_param(xres, int, 0);
 MODULE_PARM_DESC(xres, "Horizontal resolution (px), overrides xres from vesa (default=vesa)");
-MODULE_PARM(yres, "i");
+module_param(yres, int, 0);
 MODULE_PARM_DESC(yres, "Vertical resolution (scans), overrides yres from vesa (default=vesa)");
-MODULE_PARM(upper, "i");
+module_param(upper, int, 0);
 MODULE_PARM_DESC(upper, "Upper blank space (scans), overrides upper from vesa (default=vesa)");
-MODULE_PARM(lower, "i");
+module_param(lower, int, 0);
 MODULE_PARM_DESC(lower, "Lower blank space (scans), overrides lower from vesa (default=vesa)");
-MODULE_PARM(vslen, "i");
+module_param(vslen, int, 0);
 MODULE_PARM_DESC(vslen, "Vertical sync length (scans), overrides lower from vesa (default=vesa)");
-MODULE_PARM(left, "i");
+module_param(left, int, 0);
 MODULE_PARM_DESC(left, "Left blank space (px), overrides left from vesa (default=vesa)");
-MODULE_PARM(right, "i");
+module_param(right, int, 0);
 MODULE_PARM_DESC(right, "Right blank space (px), overrides right from vesa (default=vesa)");
-MODULE_PARM(hslen, "i");
+module_param(hslen, int, 0);
 MODULE_PARM_DESC(hslen, "Horizontal sync length (px), overrides hslen from vesa (default=vesa)");
-MODULE_PARM(pixclock, "i");
+module_param(pixclock, int, 0);
 MODULE_PARM_DESC(pixclock, "Pixelclock (ns), overrides pixclock from vesa (default=vesa)");
-MODULE_PARM(sync, "i");
+module_param(sync, int, 0);
 MODULE_PARM_DESC(sync, "Sync polarity, overrides sync from vesa (default=vesa)");
-MODULE_PARM(depth, "i");
+module_param(depth, int, 0);
 MODULE_PARM_DESC(depth, "Color depth (0=text,8,15,16,24,32) (default=vesa)");
-MODULE_PARM(maxclk, "i");
+module_param(maxclk, int, 0);
 MODULE_PARM_DESC(maxclk, "Startup maximal clock, 0-999MHz, 1000-999999kHz, 1000000-INF Hz");
-MODULE_PARM(fh, "i");
+module_param(fh, int, 0);
 MODULE_PARM_DESC(fh, "Startup horizontal frequency, 0-999kHz, 1000-INF Hz");
-MODULE_PARM(fv, "i");
+module_param(fv, int, 0);
 MODULE_PARM_DESC(fv, "Startup vertical frequency, 0-INF Hz\n"
 "You should specify \"fv:max_monitor_vsync,fh:max_monitor_hsync,maxclk:max_monitor_dotclock\"\n");
-MODULE_PARM(grayscale, "i");
+module_param(grayscale, int, 0);
 MODULE_PARM_DESC(grayscale, "Sets display into grayscale. Works perfectly with paletized videomode (4, 8bpp), some limitations apply to 16, 24 and 32bpp videomodes (default=nograyscale)");
-MODULE_PARM(cross4MB, "i");
+module_param(cross4MB, int, 0);
 MODULE_PARM_DESC(cross4MB, "Specifies that 4MB boundary can be in middle of line. (default=autodetected)");
-MODULE_PARM(dfp, "i");
+module_param(dfp, int, 0);
 MODULE_PARM_DESC(dfp, "Specifies whether to use digital flat panel interface of G200/G400 (0 or 1) (default=0)");
-MODULE_PARM(dfp_type, "i");
+module_param(dfp_type, int, 0);
 MODULE_PARM_DESC(dfp_type, "Specifies DFP interface type (0 to 255) (default=read from hardware)");
-MODULE_PARM(outputs, "c8");
+module_param_string(outputs, outputs, sizeof(outputs), 0);
 MODULE_PARM_DESC(outputs, "Specifies which CRTC is mapped to which output (string of up to three letters, consisting of 0 (disabled), 1 (CRTC1), 2 (CRTC2)) (default=111 for Gx50, 101 for G200/G400 with DFP, and 100 for all other devices)");
 #ifdef CONFIG_PPC_PMAC
-MODULE_PARM(vmode, "i");
+module_param(vmode, int, 0);
 MODULE_PARM_DESC(vmode, "Specify the vmode mode number that should be used (640x480 default)");
-MODULE_PARM(cmode, "i");
+module_param(cmode, int, 0);
 MODULE_PARM_DESC(cmode, "Specify the video depth that should be used (8bit default)");
 #endif
 
diff -puN sound/oss/ymfpci.c~MODULE_PARM-allmod sound/oss/ymfpci.c
--- 25/sound/oss/ymfpci.c~MODULE_PARM-allmod	2004-11-30 01:24:27.945397376 -0800
+++ 25-akpm/sound/oss/ymfpci.c	2004-11-30 01:24:28.013387040 -0800
@@ -2504,8 +2504,8 @@ static int ymf_ac97_init(ymfpci_t *unit,
 # ifdef MODULE
 static int mpu_io;
 static int synth_io;
-MODULE_PARM(mpu_io, "i");
-MODULE_PARM(synth_io, "i");
+module_param(mpu_io, int, 0);
+module_param(synth_io, int, 0);
 # else
 static int mpu_io     = 0x330;
 static int synth_io   = 0x388;
_