
Rusty Russell <rusty@rustcorp.com.au>

MODULE_PARM conversions for x86 `allyesconfig'.


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

 25-akpm/drivers/acpi/asus_acpi.c                |    4 -
 25-akpm/drivers/block/cpqarray.c                |    2 
 25-akpm/drivers/block/nbd.c                     |    2 
 25-akpm/drivers/block/paride/bpck6.c            |    2 
 25-akpm/drivers/block/paride/pcd.c              |   16 +++---
 25-akpm/drivers/block/paride/pd.c               |   18 +++----
 25-akpm/drivers/block/paride/pf.c               |   18 +++----
 25-akpm/drivers/block/paride/pg.c               |   14 ++---
 25-akpm/drivers/block/paride/pt.c               |   14 ++---
 25-akpm/drivers/cdrom/aztcd.c                   |    2 
 25-akpm/drivers/cdrom/gscd.c                    |    3 -
 25-akpm/drivers/cdrom/isp16.c                   |    8 +--
 25-akpm/drivers/cdrom/mcd.c                     |   12 +++-
 25-akpm/drivers/cdrom/mcdx.c                    |   11 +++-
 25-akpm/drivers/cdrom/optcd.c                   |    2 
 25-akpm/drivers/cdrom/sjcd.c                    |    2 
 25-akpm/drivers/cdrom/sonycd535.c               |    2 
 25-akpm/drivers/char/agp/amd64-agp.c            |    2 
 25-akpm/drivers/char/agp/sis-agp.c              |    4 -
 25-akpm/drivers/char/applicom.c                 |    9 +--
 25-akpm/drivers/char/mwave/mwavedd.c            |   10 +--
 25-akpm/drivers/char/n_hdlc.c                   |    4 -
 25-akpm/drivers/char/pcmcia/synclink_cs.c       |   14 ++---
 25-akpm/drivers/char/scx200_gpio.c              |    2 
 25-akpm/drivers/char/synclink.c                 |   20 +++----
 25-akpm/drivers/char/synclinkmp.c               |   10 +--
 25-akpm/drivers/char/tipar.c                    |    4 -
 25-akpm/drivers/char/toshiba.c                  |    2 
 25-akpm/drivers/ide/legacy/ide-cs.c             |    4 -
 25-akpm/drivers/isdn/act2000/module.c           |    8 +--
 25-akpm/drivers/isdn/hardware/eicon/divamnt.c   |    4 -
 25-akpm/drivers/isdn/hardware/eicon/divasmain.c |    2 
 25-akpm/drivers/isdn/hisax/avma1_cs.c           |    6 +-
 25-akpm/drivers/isdn/hisax/elsa_cs.c            |    8 +--
 25-akpm/drivers/isdn/hisax/hisax_fcpcipnp.c     |    6 +-
 25-akpm/drivers/isdn/hisax/hisax_isac.c         |    2 
 25-akpm/drivers/isdn/hisax/sedlbauer_cs.c       |    8 +--
 25-akpm/drivers/isdn/hisax/st5481_init.c        |    6 +-
 25-akpm/drivers/isdn/hisax/teles_cs.c           |    8 +--
 25-akpm/drivers/isdn/icn/icn.c                  |    8 +--
 25-akpm/drivers/isdn/pcbit/module.c             |    5 +
 25-akpm/drivers/isdn/sc/init.c                  |    9 +--
 25-akpm/drivers/isdn/tpam/tpam_main.c           |    2 
 25-akpm/drivers/media/radio/miropcm20-radio.c   |    2 
 25-akpm/drivers/media/radio/radio-aimslab.c     |    4 -
 25-akpm/drivers/media/radio/radio-aztech.c      |    4 -
 25-akpm/drivers/media/radio/radio-cadet.c       |    4 -
 25-akpm/drivers/media/radio/radio-gemtek-pci.c  |    6 +-
 25-akpm/drivers/media/radio/radio-gemtek.c      |    4 -
 25-akpm/drivers/media/radio/radio-maestro.c     |    2 
 25-akpm/drivers/media/radio/radio-maxiradio.c   |    2 
 25-akpm/drivers/media/radio/radio-rtrack2.c     |    4 -
 25-akpm/drivers/media/radio/radio-sf16fmi.c     |    4 -
 25-akpm/drivers/media/radio/radio-sf16fmr2.c    |    4 -
 25-akpm/drivers/media/radio/radio-terratec.c    |    4 -
 25-akpm/drivers/media/radio/radio-trust.c       |    4 -
 25-akpm/drivers/media/radio/radio-typhoon.c     |   12 ++--
 25-akpm/drivers/media/radio/radio-zoltrix.c     |    4 -
 25-akpm/drivers/media/video/adv7170.c           |    2 
 25-akpm/drivers/media/video/adv7175.c           |    2 
 25-akpm/drivers/media/video/bt819.c             |    2 
 25-akpm/drivers/media/video/bt856.c             |    2 
 25-akpm/drivers/media/video/bw-qcam.c           |    8 +--
 25-akpm/drivers/media/video/c-qcam.c            |    9 +--
 25-akpm/drivers/media/video/cpia.c              |    2 
 25-akpm/drivers/media/video/dpc7146.c           |    2 
 25-akpm/drivers/media/video/hexium_gemini.c     |    2 
 25-akpm/drivers/media/video/hexium_orion.c      |    2 
 25-akpm/drivers/media/video/pms.c               |    6 +-
 25-akpm/drivers/media/video/saa7110.c           |    2 
 25-akpm/drivers/media/video/saa7114.c           |    2 
 25-akpm/drivers/media/video/saa7185.c           |    2 
 25-akpm/drivers/media/video/stradis.c           |    2 
 25-akpm/drivers/media/video/tuner-3036.c        |    2 
 25-akpm/drivers/media/video/videocodec.c        |    2 
 25-akpm/drivers/media/video/vpx3220.c           |    2 
 25-akpm/drivers/media/video/w9966.c             |    6 +-
 25-akpm/drivers/media/video/zoran_card.c        |   26 +++++-----
 25-akpm/drivers/media/video/zoran_device.c      |    2 
 25-akpm/drivers/media/video/zoran_driver.c      |    2 
 25-akpm/drivers/media/video/zr36016.c           |    2 
 25-akpm/drivers/media/video/zr36050.c           |    2 
 25-akpm/drivers/media/video/zr36060.c           |    4 -
 25-akpm/drivers/mtd/devices/blkmtd.c            |    8 +--
 25-akpm/drivers/mtd/devices/docprobe.c          |    2 
 25-akpm/drivers/mtd/devices/pmc551.c            |    9 +--
 25-akpm/drivers/mtd/devices/slram.c             |    6 +-
 25-akpm/drivers/mtd/ftl.c                       |    2 
 25-akpm/drivers/mtd/maps/scx200_docflash.c      |   18 +++----
 25-akpm/drivers/net/3c509.c                     |   10 +--
 25-akpm/drivers/net/3c515.c                     |   19 +++----
 25-akpm/drivers/net/3c59x.c                     |   61 ++++++++++++------------
 25-akpm/drivers/net/82596.c                     |    8 +--
 25-akpm/drivers/net/amd8111e.c                  |    6 +-
 25-akpm/drivers/net/appletalk/ipddp.c           |    2 
 25-akpm/drivers/net/arcnet/arcnet.c             |    2 
 25-akpm/drivers/net/atp.c                       |   10 +--
 25-akpm/drivers/net/bonding/bond_main.c         |   20 +++----
 25-akpm/drivers/net/de600.c                     |    6 +-
 25-akpm/drivers/net/de620.c                     |   12 ++--
 25-akpm/drivers/net/dgrs.c                      |   16 +++---
 25-akpm/drivers/net/dl2k.c                      |   20 +++----
 25-akpm/drivers/net/eepro100.c                  |   24 ++++-----
 25-akpm/drivers/net/epic100.c                   |    8 +--
 25-akpm/drivers/net/fealnx.c                    |   12 ++--
 25-akpm/drivers/net/hamachi.c                   |   30 +++++------
 25-akpm/drivers/net/hamradio/baycom_epp.c       |    4 -
 25-akpm/drivers/net/hamradio/baycom_par.c       |    4 -
 25-akpm/drivers/net/hamradio/baycom_ser_fdx.c   |    8 +--
 25-akpm/drivers/net/hamradio/baycom_ser_hdx.c   |    6 +-
 25-akpm/drivers/net/hp100.c                     |    8 +--
 25-akpm/drivers/net/irda/ali-ircc.c             |    6 +-
 25-akpm/drivers/net/irda/donauboe.c             |    4 -
 25-akpm/drivers/net/irda/irda-usb.c             |    2 
 25-akpm/drivers/net/irda/irtty-sir.c            |    6 +-
 25-akpm/drivers/net/irda/nsc-ircc.c             |   10 +--
 25-akpm/drivers/net/irda/smsc-ircc2.c           |   12 ++--
 25-akpm/drivers/net/irda/tekram-sir.c           |    4 -
 25-akpm/drivers/net/irda/via-ircc.c             |    2 
 25-akpm/drivers/net/irda/vlsi_ir.c              |   16 +++---
 25-akpm/drivers/net/irda/w83977af_ir.c          |    6 +-
 25-akpm/drivers/net/ixgb/ixgb_param.c           |    4 -
 25-akpm/drivers/net/lp486e.c                    |   14 ++---
 25-akpm/drivers/net/natsemi.c                   |   12 ++--
 25-akpm/drivers/net/ne2k-pci.c                  |    6 +-
 25-akpm/drivers/net/pcmcia/3c574_cs.c           |    4 -
 25-akpm/drivers/net/pcmcia/3c589_cs.c           |    4 -
 25-akpm/drivers/net/pcmcia/axnet_cs.c           |    4 -
 25-akpm/drivers/net/pcmcia/com20020_cs.c        |   16 +++---
 25-akpm/drivers/net/pcmcia/fmvj18x_cs.c         |    4 -
 25-akpm/drivers/net/pcmcia/nmclan_cs.c          |    4 -
 25-akpm/drivers/net/pcmcia/pcnet_cs.c           |    8 +--
 25-akpm/drivers/net/pcmcia/smc91c92_cs.c        |    4 -
 25-akpm/drivers/net/pcmcia/xirc2ps_cs.c         |    6 +-
 25-akpm/drivers/net/plip.c                      |    4 -
 25-akpm/drivers/net/ppp_async.c                 |    2 
 25-akpm/drivers/net/sis900.c                    |    6 +-
 25-akpm/drivers/net/smc-mca.c                   |    4 -
 25-akpm/drivers/net/starfire.c                  |   18 +++----
 25-akpm/drivers/net/sundance.c                  |    8 +--
 25-akpm/drivers/net/sunhme.c                    |    2 
 25-akpm/drivers/net/tlan.c                      |   10 ---
 25-akpm/drivers/net/tokenring/3c359.c           |    6 +-
 25-akpm/drivers/net/tokenring/lanstreamer.c     |    7 +-
 25-akpm/drivers/net/tokenring/olympic.c         |    8 +--
 25-akpm/drivers/net/tulip/de2104x.c             |    4 -
 25-akpm/drivers/net/tulip/dmfe.c                |   18 +++----
 25-akpm/drivers/net/tulip/tulip_core.c          |   12 ++--
 25-akpm/drivers/net/tulip/winbond-840.c         |   12 ++--
 25-akpm/drivers/net/typhoon.c                   |    2 
 25-akpm/drivers/net/via-velocity.c              |    6 +-
 25-akpm/drivers/net/wan/cosa.c                  |    6 +-
 25-akpm/drivers/net/wan/cycx_main.c             |    2 
 25-akpm/drivers/net/wan/dscc4.c                 |    4 -
 25-akpm/drivers/net/wan/farsync.c               |   11 ++--
 25-akpm/drivers/net/wan/hostess_sv11.c          |    6 +-
 25-akpm/drivers/net/wan/sealevel.c              |   10 +--
 25-akpm/drivers/net/wan/syncppp.c               |    2 
 25-akpm/drivers/net/wan/x25_asy.c               |    2 
 25-akpm/drivers/net/wireless/airo.c             |   28 +++++------
 25-akpm/drivers/net/wireless/airo_cs.c          |    6 +-
 25-akpm/drivers/net/wireless/arlan-main.c       |   47 ++++++++----------
 25-akpm/drivers/net/wireless/atmel_cs.c         |    6 +-
 25-akpm/drivers/net/wireless/netwave_cs.c       |   12 ++--
 25-akpm/drivers/net/wireless/orinoco.c          |    4 -
 25-akpm/drivers/net/wireless/orinoco_cs.c       |    6 +-
 25-akpm/drivers/net/wireless/ray_cs.c           |   26 +++++-----
 25-akpm/drivers/net/wireless/wavelan_cs.p.h     |    8 +--
 25-akpm/drivers/net/wireless/wl3501_cs.c        |    6 +-
 25-akpm/drivers/net/yellowfin.c                 |   14 ++---
 25-akpm/drivers/net/znet.c                      |    2 
 25-akpm/drivers/parport/parport_cs.c            |    4 -
 25-akpm/drivers/parport/parport_pc.c            |    2 
 25-akpm/drivers/scsi/NCR_D700.c                 |    2 
 25-akpm/drivers/scsi/aacraid/aachba.c           |   14 ++---
 25-akpm/drivers/scsi/aic7xxx/aic79xx_osm.c      |    2 
 25-akpm/drivers/scsi/fdomain.c                  |    2 
 25-akpm/drivers/scsi/g_NCR5380.c                |   14 ++---
 25-akpm/drivers/scsi/in2000.c                   |    2 
 25-akpm/drivers/scsi/nsp32.c                    |    6 +-
 25-akpm/drivers/scsi/pcmcia/aha152x_stub.c      |   16 +++---
 25-akpm/drivers/scsi/pcmcia/fdomain_stub.c      |    6 +-
 25-akpm/drivers/scsi/pcmcia/nsp_cs.c            |    8 +--
 25-akpm/drivers/scsi/pcmcia/qlogic_stub.c       |    4 -
 25-akpm/drivers/scsi/qlogicfas.c                |    4 -
 25-akpm/drivers/scsi/sim710.c                   |    2 
 25-akpm/drivers/telephony/ixj.c                 |    6 +-
 25-akpm/drivers/video/console/mdacon.c          |    4 -
 25-akpm/drivers/video/cyber2000fb.c             |    2 
 25-akpm/drivers/video/hgafb.c                   |    2 
 25-akpm/drivers/video/matrox/matroxfb_crtc2.c   |    2 
 25-akpm/drivers/video/pm2fb.c                   |    6 +-
 25-akpm/drivers/video/sstfb.c                   |   10 +--
 25-akpm/drivers/video/tridentfb.c               |   20 +++----
 25-akpm/drivers/video/vfb.c                     |    4 -
 25-akpm/sound/oss/aci.c                         |    6 +-
 25-akpm/sound/oss/ad1816.c                      |   16 +++---
 25-akpm/sound/oss/ad1848.c                      |   22 ++++----
 25-akpm/sound/oss/adlib_card.c                  |    2 
 25-akpm/sound/oss/aedsp16.c                     |   12 ++--
 25-akpm/sound/oss/ali5455.c                     |   13 ++---
 25-akpm/sound/oss/awe_wave.c                    |    6 +-
 25-akpm/sound/oss/cmpci.c                       |   22 ++++----
 25-akpm/sound/oss/cs4232.c                      |   20 +++----
 25-akpm/sound/oss/cs4281/cs4281m.c              |    6 +-
 25-akpm/sound/oss/cs46xx.c                      |   16 +++---
 25-akpm/sound/oss/es1370.c                      |    4 -
 25-akpm/sound/oss/es1371.c                      |    6 +-
 25-akpm/sound/oss/gus_card.c                    |   16 +++---
 25-akpm/sound/oss/mad16.c                       |   26 +++++-----
 25-akpm/sound/oss/maestro.c                     |    8 +--
 25-akpm/sound/oss/maestro3.c                    |    6 +-
 25-akpm/sound/oss/maui.c                        |    4 -
 25-akpm/sound/oss/mpu401.c                      |    4 -
 25-akpm/sound/oss/msnd_pinnacle.c               |   35 ++++++-------
 25-akpm/sound/oss/nm256_audio.c                 |    8 +--
 25-akpm/sound/oss/opl3.c                        |    2 
 25-akpm/sound/oss/opl3sa.c                      |   12 ++--
 25-akpm/sound/oss/opl3sa2.c                     |   20 +++----
 25-akpm/sound/oss/pas2_card.c                   |   26 +++++-----
 25-akpm/sound/oss/pss.c                         |   28 +++++------
 25-akpm/sound/oss/rme96xx.c                     |    2 
 25-akpm/sound/oss/sgalaxy.c                     |   10 +--
 25-akpm/sound/oss/sonicvibes.c                  |    2 
 25-akpm/sound/oss/soundcard.c                   |    4 -
 25-akpm/sound/oss/sscape.c                      |   14 ++---
 25-akpm/sound/oss/trix.c                        |   20 +++----
 25-akpm/sound/oss/uart401.c                     |    4 -
 25-akpm/sound/oss/uart6850.c                    |    4 -
 25-akpm/sound/oss/wavfront.c                    |   24 ++++-----
 230 files changed, 936 insertions(+), 934 deletions(-)

diff -puN drivers/acpi/asus_acpi.c~MODULE_PARM-allyes drivers/acpi/asus_acpi.c
--- 25/drivers/acpi/asus_acpi.c~MODULE_PARM-allyes	2004-11-29 14:48:41.529534056 -0800
+++ 25-akpm/drivers/acpi/asus_acpi.c	2004-11-29 14:48:42.061453192 -0800
@@ -78,9 +78,9 @@ MODULE_LICENSE("GPL");
 
 static uid_t asus_uid;
 static gid_t asus_gid;
-MODULE_PARM(asus_uid, "i");
+module_param(asus_uid, uint, 0);
 MODULE_PARM_DESC(uid, "UID for entries in /proc/acpi/asus.\n");
-MODULE_PARM(asus_gid, "i");
+module_param(asus_gid, uint, 0);
 MODULE_PARM_DESC(gid, "GID for entries in /proc/acpi/asus.\n");
 
 
diff -puN drivers/block/cpqarray.c~MODULE_PARM-allyes drivers/block/cpqarray.c
--- 25/drivers/block/cpqarray.c~MODULE_PARM-allyes	2004-11-29 14:48:41.530533904 -0800
+++ 25-akpm/drivers/block/cpqarray.c	2004-11-29 14:48:42.062453040 -0800
@@ -310,7 +310,7 @@ static int ida_proc_get_info(char *buffe
 }
 #endif /* CONFIG_PROC_FS */
 
-MODULE_PARM(eisa, "1-8i");
+module_param_array(eisa, int, NULL, 0);
 
 /* This is a bit of a hack,
  * necessary to support both eisa and pci
diff -puN drivers/block/nbd.c~MODULE_PARM-allyes drivers/block/nbd.c
--- 25/drivers/block/nbd.c~MODULE_PARM-allyes	2004-11-29 14:48:41.532533600 -0800
+++ 25-akpm/drivers/block/nbd.c	2004-11-29 14:48:42.063452888 -0800
@@ -726,6 +726,6 @@ MODULE_DESCRIPTION("Network Block Device
 MODULE_LICENSE("GPL");
 
 #ifndef NDEBUG
-MODULE_PARM(debugflags, "i");
+module_param(debugflags, int, 0644);
 MODULE_PARM_DESC(debugflags, "flags for controlling debug output");
 #endif
diff -puN drivers/block/paride/bpck6.c~MODULE_PARM-allyes drivers/block/paride/bpck6.c
--- 25/drivers/block/paride/bpck6.c~MODULE_PARM-allyes	2004-11-29 14:48:41.533533448 -0800
+++ 25-akpm/drivers/block/paride/bpck6.c	2004-11-29 14:48:42.063452888 -0800
@@ -277,6 +277,6 @@ static void __exit bpck6_exit(void)
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Micro Solutions Inc.");
 MODULE_DESCRIPTION("BACKPACK Protocol module, compatible with PARIDE");
-MODULE_PARM(verbose,"i");
+module_param(verbose, bool, 0644);
 module_init(bpck6_init)
 module_exit(bpck6_exit)
diff -puN drivers/block/paride/pcd.c~MODULE_PARM-allyes drivers/block/paride/pcd.c
--- 25/drivers/block/paride/pcd.c~MODULE_PARM-allyes	2004-11-29 14:48:41.535533144 -0800
+++ 25-akpm/drivers/block/paride/pcd.c	2004-11-29 14:48:42.064452736 -0800
@@ -162,14 +162,14 @@ void pcd_setup(char *str, int *ints)
 
 #endif
 
-MODULE_PARM(verbose, "i");
-MODULE_PARM(major, "i");
-MODULE_PARM(name, "s");
-MODULE_PARM(nice, "i");
-MODULE_PARM(drive0, "1-6i");
-MODULE_PARM(drive1, "1-6i");
-MODULE_PARM(drive2, "1-6i");
-MODULE_PARM(drive3, "1-6i");
+module_param(verbose, bool, 0644);
+module_param(major, int, 0);
+module_param(name, charp, 0);
+module_param(nice, int, 0);
+module_param_array(drive0, int, NULL, 0);
+module_param_array(drive1, int, NULL, 0);
+module_param_array(drive2, int, NULL, 0);
+module_param_array(drive3, int, NULL, 0);
 
 #include "paride.h"
 #include "pseudo.h"
diff -puN drivers/block/paride/pd.c~MODULE_PARM-allyes drivers/block/paride/pd.c
--- 25/drivers/block/paride/pd.c~MODULE_PARM-allyes	2004-11-29 14:48:41.536532992 -0800
+++ 25-akpm/drivers/block/paride/pd.c	2004-11-29 14:48:42.065452584 -0800
@@ -178,15 +178,15 @@ void pd_setup(char *str, int *ints)
 
 #endif
 
-MODULE_PARM(verbose, "i");
-MODULE_PARM(major, "i");
-MODULE_PARM(name, "s");
-MODULE_PARM(cluster, "i");
-MODULE_PARM(nice, "i");
-MODULE_PARM(drive0, "1-8i");
-MODULE_PARM(drive1, "1-8i");
-MODULE_PARM(drive2, "1-8i");
-MODULE_PARM(drive3, "1-8i");
+module_param(verbose, bool, 0);
+module_param(major, int, 0);
+module_param(name, charp, 0);
+module_param(cluster, int, 0);
+module_param(nice, int, 0);
+module_param_array(drive0, int, NULL, 0);
+module_param_array(drive1, int, NULL, 0);
+module_param_array(drive2, int, NULL, 0);
+module_param_array(drive3, int, NULL, 0);
 
 #include "paride.h"
 
diff -puN drivers/block/paride/pf.c~MODULE_PARM-allyes drivers/block/paride/pf.c
--- 25/drivers/block/paride/pf.c~MODULE_PARM-allyes	2004-11-29 14:48:41.537532840 -0800
+++ 25-akpm/drivers/block/paride/pf.c	2004-11-29 14:48:42.067452280 -0800
@@ -177,15 +177,15 @@ void pf_setup(char *str, int *ints)
 
 #endif
 
-MODULE_PARM(verbose, "i");
-MODULE_PARM(major, "i");
-MODULE_PARM(name, "s");
-MODULE_PARM(cluster, "i");
-MODULE_PARM(nice, "i");
-MODULE_PARM(drive0, "1-7i");
-MODULE_PARM(drive1, "1-7i");
-MODULE_PARM(drive2, "1-7i");
-MODULE_PARM(drive3, "1-7i");
+module_param(verbose, bool, 0644);
+module_param(major, int, 0);
+module_param(name, charp, 0);
+module_param(cluster, int, 0);
+module_param(nice, int, 0);
+module_param_array(drive0, int, NULL, 0);
+module_param_array(drive1, int, NULL, 0);
+module_param_array(drive2, int, NULL, 0);
+module_param_array(drive3, int, NULL, 0);
 
 #include "paride.h"
 #include "pseudo.h"
diff -puN drivers/block/paride/pg.c~MODULE_PARM-allyes drivers/block/paride/pg.c
--- 25/drivers/block/paride/pg.c~MODULE_PARM-allyes	2004-11-29 14:48:41.539532536 -0800
+++ 25-akpm/drivers/block/paride/pg.c	2004-11-29 14:48:42.067452280 -0800
@@ -184,13 +184,13 @@ void pg_setup(char *str, int *ints)
 
 #endif
 
-MODULE_PARM(verbose, "i");
-MODULE_PARM(major, "i");
-MODULE_PARM(name, "s");
-MODULE_PARM(drive0, "1-6i");
-MODULE_PARM(drive1, "1-6i");
-MODULE_PARM(drive2, "1-6i");
-MODULE_PARM(drive3, "1-6i");
+module_param(verbose, bool, 0644);
+module_param(major, int, 0);
+module_param(name, charp, 0);
+module_param_array(drive0, int, NULL, 0);
+module_param_array(drive1, int, NULL, 0);
+module_param_array(drive2, int, NULL, 0);
+module_param_array(drive3, int, NULL, 0);
 
 #include "paride.h"
 
diff -puN drivers/block/paride/pt.c~MODULE_PARM-allyes drivers/block/paride/pt.c
--- 25/drivers/block/paride/pt.c~MODULE_PARM-allyes	2004-11-29 14:48:41.540532384 -0800
+++ 25-akpm/drivers/block/paride/pt.c	2004-11-29 14:48:42.068452128 -0800
@@ -169,13 +169,13 @@ pt_setup(char *str, int *ints)
 
 #endif
 
-MODULE_PARM(verbose, "i");
-MODULE_PARM(major, "i");
-MODULE_PARM(name, "s");
-MODULE_PARM(drive0, "1-6i");
-MODULE_PARM(drive1, "1-6i");
-MODULE_PARM(drive2, "1-6i");
-MODULE_PARM(drive3, "1-6i");
+module_param(verbose, bool, 0);
+module_param(major, int, 0);
+module_param(name, charp, 0);
+module_param_array(drive0, int, NULL, 0);
+module_param_array(drive1, int, NULL, 0);
+module_param_array(drive2, int, NULL, 0);
+module_param_array(drive3, int, NULL, 0);
 
 #include "paride.h"
 
diff -puN drivers/cdrom/aztcd.c~MODULE_PARM-allyes drivers/cdrom/aztcd.c
--- 25/drivers/cdrom/aztcd.c~MODULE_PARM-allyes	2004-11-29 14:48:41.542532080 -0800
+++ 25-akpm/drivers/cdrom/aztcd.c	2004-11-29 14:48:42.070451824 -0800
@@ -288,7 +288,7 @@ static volatile int azt_read_count = 1;
 
 static int azt_port = AZT_BASE_ADDR;
 
-MODULE_PARM(azt_port, "i");
+module_param(azt_port, int, 0);
 
 static int azt_port_auto[16] = AZT_BASE_AUTO;
 
diff -puN drivers/cdrom/gscd.c~MODULE_PARM-allyes drivers/cdrom/gscd.c
--- 25/drivers/cdrom/gscd.c~MODULE_PARM-allyes	2004-11-29 14:48:41.543531928 -0800
+++ 25-akpm/drivers/cdrom/gscd.c	2004-11-29 14:48:42.071451672 -0800
@@ -70,7 +70,6 @@
 
 #define MAJOR_NR GOLDSTAR_CDROM_MAJOR
 #include <linux/blkdev.h>
-#define gscd_port gscd		/* for compatible parameter passing with "insmod" */
 #include "gscd.h"
 
 static int gscdPresent = 0;
@@ -78,7 +77,7 @@ static int gscdPresent = 0;
 static unsigned char gscd_buf[2048];	/* buffer for block size conversion */
 static int gscd_bn = -1;
 static short gscd_port = GSCD_BASE_ADDR;
-MODULE_PARM(gscd, "h");
+module_param_named(gscd, gscd_port, short, 0);
 
 /* Kommt spaeter vielleicht noch mal dran ...
  *    static DECLARE_WAIT_QUEUE_HEAD(gscd_waitq);
diff -puN drivers/cdrom/isp16.c~MODULE_PARM-allyes drivers/cdrom/isp16.c
--- 25/drivers/cdrom/isp16.c~MODULE_PARM-allyes	2004-11-29 14:48:41.544531776 -0800
+++ 25-akpm/drivers/cdrom/isp16.c	2004-11-29 14:48:42.071451672 -0800
@@ -72,10 +72,10 @@ static int isp16_cdrom_irq = ISP16_CDROM
 static int isp16_cdrom_dma = ISP16_CDROM_DMA;
 static char *isp16_cdrom_type = ISP16_CDROM_TYPE;
 
-MODULE_PARM(isp16_cdrom_base, "i");
-MODULE_PARM(isp16_cdrom_irq, "i");
-MODULE_PARM(isp16_cdrom_dma, "i");
-MODULE_PARM(isp16_cdrom_type, "s");
+module_param(isp16_cdrom_base, int, 0);
+module_param(isp16_cdrom_irq, int, 0);
+module_param(isp16_cdrom_dma, int, 0);
+module_param(isp16_cdrom_type, charp, 0);
 
 #ifdef MODULE
 void isp16_exit(void);
diff -puN drivers/cdrom/mcd.c~MODULE_PARM-allyes drivers/cdrom/mcd.c
--- 25/drivers/cdrom/mcd.c~MODULE_PARM-allyes	2004-11-29 14:48:41.546531472 -0800
+++ 25-akpm/drivers/cdrom/mcd.c	2004-11-29 14:48:42.073451368 -0800
@@ -103,7 +103,6 @@
 #include <asm/uaccess.h>
 #include <linux/blkdev.h>
 
-#define mcd_port mcd		/* for compatible parameter passing with "insmod" */
 #include "mcd.h"
 
 /* I added A flag to drop to 1x speed if too many errors 0 = 1X ; 1 = 2X */
@@ -157,7 +156,6 @@ int mitsumi_bug_93_wait;
 
 static short mcd_port = CONFIG_MCD_BASE;	/* used as "mcd" by "insmod" */
 static int mcd_irq = CONFIG_MCD_IRQ;	/* must directly follow mcd_port */
-MODULE_PARM(mcd, "1-2i");
 
 static int McdTimeout, McdTries;
 static DECLARE_WAIT_QUEUE_HEAD(mcd_waitq);
@@ -246,7 +244,6 @@ static struct block_device_operations mc
 
 static struct gendisk *mcd_gendisk;
 
-#ifndef MODULE
 static int __init mcd_setup(char *str)
 {
 	int ints[9];
@@ -265,7 +262,14 @@ static int __init mcd_setup(char *str)
 
 __setup("mcd=", mcd_setup);
 
-#endif				/* MODULE */
+#ifdef MODULE
+static int __init param_set_mcd(const char *val, struct kernel_param *kp)
+{
+	mcd_setup(val);
+	return 0;
+}
+module_param_call(mcd, param_set_mcd, NULL, NULL, 0);
+#endif
 
 static int mcd_media_changed(struct cdrom_device_info *cdi, int disc_nr)
 {
diff -puN drivers/cdrom/mcdx.c~MODULE_PARM-allyes drivers/cdrom/mcdx.c
--- 25/drivers/cdrom/mcdx.c~MODULE_PARM-allyes	2004-11-29 14:48:41.547531320 -0800
+++ 25-akpm/drivers/cdrom/mcdx.c	2004-11-29 14:48:42.074451216 -0800
@@ -77,8 +77,6 @@ static const char *mcdx_c_version
 #include <linux/blkdev.h>
 #include <linux/devfs_fs_kernel.h>
 
-/* for compatible parameter passing with "insmod" */
-#define	mcdx_drive_map mcdx
 #include "mcdx.h"
 
 #ifndef HZ
@@ -309,7 +307,14 @@ static int mcdx_drive_map[][2] = MCDX_DR
 static struct s_drive_stuff *mcdx_stuffp[MCDX_NDRIVES];
 static spinlock_t mcdx_lock = SPIN_LOCK_UNLOCKED;
 static struct request_queue *mcdx_queue;
-MODULE_PARM(mcdx, "1-4i");
+
+/* You can only set the first two pairs, from old MODULE_PARM code.  */
+static int mcdx_set(const char *val, struct kernel_param *kp)
+{
+	get_options((char *)val, 4, (int *)mcdx_drive_map);
+	return 0;
+}
+module_param_call(mcdx, mcdx_set, NULL, NULL, 0);
 
 static struct cdrom_device_ops mcdx_dops = {
 	.open		= mcdx_open,
diff -puN drivers/cdrom/optcd.c~MODULE_PARM-allyes drivers/cdrom/optcd.c
--- 25/drivers/cdrom/optcd.c~MODULE_PARM-allyes	2004-11-29 14:48:41.549531016 -0800
+++ 25-akpm/drivers/cdrom/optcd.c	2004-11-29 14:48:42.076450912 -0800
@@ -116,7 +116,7 @@ static void debug(int debug_this, const 
 
 #define optcd_port optcd			/* Needed for the modutils. */
 static short optcd_port = OPTCD_PORTBASE;	/* I/O base of drive. */
-MODULE_PARM(optcd_port, "h");
+module_param(optcd_port, short, 0);
 /* Drive registers, read */
 #define DATA_PORT	optcd_port	/* Read data/status */
 #define STATUS_PORT	optcd_port+1	/* Indicate data/status availability */
diff -puN drivers/cdrom/sjcd.c~MODULE_PARM-allyes drivers/cdrom/sjcd.c
--- 25/drivers/cdrom/sjcd.c~MODULE_PARM-allyes	2004-11-29 14:48:41.550530864 -0800
+++ 25-akpm/drivers/cdrom/sjcd.c	2004-11-29 14:48:42.077450760 -0800
@@ -116,7 +116,7 @@ static struct sjcd_play_msf sjcd_playing
 
 static int sjcd_base = SJCD_BASE_ADDR;
 
-MODULE_PARM(sjcd_base, "i");
+module_param(sjcd_base, int, 0);
 
 static DECLARE_WAIT_QUEUE_HEAD(sjcd_waitq);
 
diff -puN drivers/cdrom/sonycd535.c~MODULE_PARM-allyes drivers/cdrom/sonycd535.c
--- 25/drivers/cdrom/sonycd535.c~MODULE_PARM-allyes	2004-11-29 14:48:41.552530560 -0800
+++ 25-akpm/drivers/cdrom/sonycd535.c	2004-11-29 14:48:42.078450608 -0800
@@ -210,7 +210,7 @@ static int do_sony_cmd(Byte * cmd, int n
 /* The base I/O address of the Sony Interface.  This is a variable (not a
    #define) so it can be easily changed via some future ioctl() */
 static unsigned int sony535_cd_base_io = CDU535_ADDRESS;
-MODULE_PARM(sony535_cd_base_io, "i");
+module_param(sony535_cd_base_io, int, 0);
 
 /*
  * The following are I/O addresses of the various registers for the drive.  The
diff -puN drivers/char/agp/amd64-agp.c~MODULE_PARM-allyes drivers/char/agp/amd64-agp.c
--- 25/drivers/char/agp/amd64-agp.c~MODULE_PARM-allyes	2004-11-29 14:48:41.553530408 -0800
+++ 25-akpm/drivers/char/agp/amd64-agp.c	2004-11-29 14:48:42.079450456 -0800
@@ -679,5 +679,5 @@ module_exit(agp_amd64_cleanup);
 #endif
 
 MODULE_AUTHOR("Dave Jones <davej@codemonkey.org.uk>, Andi Kleen");
-MODULE_PARM(agp_try_unsupported, "1i");
+module_param(agp_try_unsupported, bool, 0);
 MODULE_LICENSE("GPL");
diff -puN drivers/char/agp/sis-agp.c~MODULE_PARM-allyes drivers/char/agp/sis-agp.c
--- 25/drivers/char/agp/sis-agp.c~MODULE_PARM-allyes	2004-11-29 14:48:41.555530104 -0800
+++ 25-akpm/drivers/char/agp/sis-agp.c	2004-11-29 14:48:42.080450304 -0800
@@ -351,8 +351,8 @@ static void __exit agp_sis_cleanup(void)
 module_init(agp_sis_init);
 module_exit(agp_sis_cleanup);
 
-MODULE_PARM(agp_sis_force_delay,"i");
+module_param(agp_sis_force_delay, bool, 0);
 MODULE_PARM_DESC(agp_sis_force_delay,"forces sis delay hack");
-MODULE_PARM(agp_sis_agp_spec,"i");
+module_param(agp_sis_agp_spec, int, 0);
 MODULE_PARM_DESC(agp_sis_agp_spec,"0=force sis init, 1=force generic agp3 init, default: autodetect");
 MODULE_LICENSE("GPL and additional rights");
diff -puN drivers/char/applicom.c~MODULE_PARM-allyes drivers/char/applicom.c
--- 25/drivers/char/applicom.c~MODULE_PARM-allyes	2004-11-29 14:48:41.556529952 -0800
+++ 25-akpm/drivers/char/applicom.c	2004-11-29 14:48:42.080450304 -0800
@@ -79,10 +79,6 @@ MODULE_DEVICE_TABLE(pci, applicom_pci_tb
 MODULE_AUTHOR("David Woodhouse & Applicom International");
 MODULE_DESCRIPTION("Driver for Applicom Profibus card");
 MODULE_LICENSE("GPL");
-MODULE_PARM(irq, "i");
-MODULE_PARM_DESC(irq, "IRQ of the Applicom board");
-MODULE_PARM(mem, "i");
-MODULE_PARM_DESC(mem, "Shared Memory Address of Applicom board");
 
 MODULE_SUPPORTED_DEVICE("ac");
 
@@ -98,6 +94,11 @@ static struct applicom_board {
 static unsigned int irq = 0;	/* interrupt number IRQ       */
 static unsigned long mem = 0;	/* physical segment of board  */
 
+module_param(irq, uint, 0);
+MODULE_PARM_DESC(irq, "IRQ of the Applicom board");
+module_param(mem, ulong, 0);
+MODULE_PARM_DESC(mem, "Shared Memory Address of Applicom board");
+
 static unsigned int numboards;	/* number of installed boards */
 static volatile unsigned char Dummy;
 static DECLARE_WAIT_QUEUE_HEAD(FlagSleepRec);
diff -puN drivers/char/mwave/mwavedd.c~MODULE_PARM-allyes drivers/char/mwave/mwavedd.c
--- 25/drivers/char/mwave/mwavedd.c~MODULE_PARM-allyes	2004-11-29 14:48:41.558529648 -0800
+++ 25-akpm/drivers/char/mwave/mwavedd.c	2004-11-29 14:48:42.081450152 -0800
@@ -76,11 +76,11 @@ int mwave_3780i_irq = 0;
 int mwave_3780i_io = 0;
 int mwave_uart_irq = 0;
 int mwave_uart_io = 0;
-MODULE_PARM(mwave_debug, "i");
-MODULE_PARM(mwave_3780i_irq, "i");
-MODULE_PARM(mwave_3780i_io, "i");
-MODULE_PARM(mwave_uart_irq, "i");
-MODULE_PARM(mwave_uart_io, "i");
+module_param(mwave_debug, int, 0);
+module_param(mwave_3780i_irq, int, 0);
+module_param(mwave_3780i_io, int, 0);
+module_param(mwave_uart_irq, int, 0);
+module_param(mwave_uart_io, int, 0);
 
 static int mwave_open(struct inode *inode, struct file *file);
 static int mwave_close(struct inode *inode, struct file *file);
diff -puN drivers/char/n_hdlc.c~MODULE_PARM-allyes drivers/char/n_hdlc.c
--- 25/drivers/char/n_hdlc.c~MODULE_PARM-allyes	2004-11-29 14:48:41.559529496 -0800
+++ 25-akpm/drivers/char/n_hdlc.c	2004-11-29 14:48:42.082450000 -0800
@@ -975,6 +975,6 @@ module_exit(n_hdlc_exit);
 
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Paul Fulghum paulkf@microgate.com");
-MODULE_PARM(debuglevel, "i");
-MODULE_PARM(maxframe, "i");
+module_param(debuglevel, int, 0);
+module_param(maxframe, int, 0);
 MODULE_ALIAS_LDISC(N_HDLC);
diff -puN drivers/char/pcmcia/synclink_cs.c~MODULE_PARM-allyes drivers/char/pcmcia/synclink_cs.c
--- 25/drivers/char/pcmcia/synclink_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.561529192 -0800
+++ 25-akpm/drivers/char/pcmcia/synclink_cs.c	2004-11-29 14:48:42.085449544 -0800
@@ -471,14 +471,14 @@ static u_int irq_mask = 0xdeb8;
 /* Newer, simpler way of listing specific interrupts */
 static int irq_list[4] = { -1 };
 
-MODULE_PARM(irq_mask, "i");
-MODULE_PARM(irq_list, "1-4i");
+module_param(irq_mask, int, 0);
+module_param_array(irq_list, int, NULL, 0);
 
-MODULE_PARM(break_on_load,"i");
-MODULE_PARM(ttymajor,"i");
-MODULE_PARM(debug_level,"i");
-MODULE_PARM(maxframe,"1-" __MODULE_STRING(MAX_DEVICE_COUNT) "i");
-MODULE_PARM(dosyncppp,"1-" __MODULE_STRING(MAX_DEVICE_COUNT) "i");
+module_param(break_on_load, bool, 0);
+module_param(ttymajor, int, 0);
+module_param(debug_level, int, 0);
+module_param_array(maxframe, int, NULL, 0);
+module_param_array(dosyncppp, int, NULL, 0);
 
 MODULE_LICENSE("GPL");
 
diff -puN drivers/char/scx200_gpio.c~MODULE_PARM-allyes drivers/char/scx200_gpio.c
--- 25/drivers/char/scx200_gpio.c~MODULE_PARM-allyes	2004-11-29 14:48:41.562529040 -0800
+++ 25-akpm/drivers/char/scx200_gpio.c	2004-11-29 14:48:42.086449392 -0800
@@ -23,7 +23,7 @@ MODULE_DESCRIPTION("NatSemi SCx200 GPIO 
 MODULE_LICENSE("GPL");
 
 static int major = 0;		/* default to dynamic major */
-MODULE_PARM(major, "i");
+module_param(major, int, 0);
 MODULE_PARM_DESC(major, "Major device number");
 
 static ssize_t scx200_gpio_write(struct file *file, const char __user *data, 
diff -puN drivers/char/synclink.c~MODULE_PARM-allyes drivers/char/synclink.c
--- 25/drivers/char/synclink.c~MODULE_PARM-allyes	2004-11-29 14:48:41.565528584 -0800
+++ 25-akpm/drivers/char/synclink.c	2004-11-29 14:48:42.092448480 -0800
@@ -886,16 +886,16 @@ static int dosyncppp[MAX_TOTAL_DEVICES];
 static int txdmabufs[MAX_TOTAL_DEVICES];
 static int txholdbufs[MAX_TOTAL_DEVICES];
 	
-MODULE_PARM(break_on_load,"i");
-MODULE_PARM(ttymajor,"i");
-MODULE_PARM(io,"1-" __MODULE_STRING(MAX_ISA_DEVICES) "i");
-MODULE_PARM(irq,"1-" __MODULE_STRING(MAX_ISA_DEVICES) "i");
-MODULE_PARM(dma,"1-" __MODULE_STRING(MAX_ISA_DEVICES) "i");
-MODULE_PARM(debug_level,"i");
-MODULE_PARM(maxframe,"1-" __MODULE_STRING(MAX_TOTAL_DEVICES) "i");
-MODULE_PARM(dosyncppp,"1-" __MODULE_STRING(MAX_TOTAL_DEVICES) "i");
-MODULE_PARM(txdmabufs,"1-" __MODULE_STRING(MAX_TOTAL_DEVICES) "i");
-MODULE_PARM(txholdbufs,"1-" __MODULE_STRING(MAX_TOTAL_DEVICES) "i");
+module_param(break_on_load, bool, 0);
+module_param(ttymajor, int, 0);
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(dma, int, NULL, 0);
+module_param(debug_level, int, 0);
+module_param_array(maxframe, int, NULL, 0);
+module_param_array(dosyncppp, int, NULL, 0);
+module_param_array(txdmabufs, int, NULL, 0);
+module_param_array(txholdbufs, int, NULL, 0);
 
 static char *driver_name = "SyncLink serial driver";
 static char *driver_version = "$Revision: 4.28 $";
diff -puN drivers/char/synclinkmp.c~MODULE_PARM-allyes drivers/char/synclinkmp.c
--- 25/drivers/char/synclinkmp.c~MODULE_PARM-allyes	2004-11-29 14:48:41.567528280 -0800
+++ 25-akpm/drivers/char/synclinkmp.c	2004-11-29 14:48:42.096447872 -0800
@@ -480,11 +480,11 @@ static int debug_level = 0;
 static int maxframe[MAX_DEVICES] = {0,};
 static int dosyncppp[MAX_DEVICES] = {0,};
 
-MODULE_PARM(break_on_load,"i");
-MODULE_PARM(ttymajor,"i");
-MODULE_PARM(debug_level,"i");
-MODULE_PARM(maxframe,"1-" __MODULE_STRING(MAX_DEVICES) "i");
-MODULE_PARM(dosyncppp,"1-" __MODULE_STRING(MAX_DEVICES) "i");
+module_param(break_on_load, bool, 0);
+module_param(ttymajor, int, 0);
+module_param(debug_level, int, 0);
+module_param_array(maxframe, int, NULL, 0);
+module_param_array(dosyncppp, int, NULL, 0);
 
 static char *driver_name = "SyncLink MultiPort driver";
 static char *driver_version = "$Revision: 4.29 $";
diff -puN drivers/char/tipar.c~MODULE_PARM-allyes drivers/char/tipar.c
--- 25/drivers/char/tipar.c~MODULE_PARM-allyes	2004-11-29 14:48:41.568528128 -0800
+++ 25-akpm/drivers/char/tipar.c	2004-11-29 14:48:42.097447720 -0800
@@ -559,7 +559,7 @@ MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
 MODULE_LICENSE(DRIVER_LICENSE);
 
-MODULE_PARM(timeout, "i");
+module_param(timeout, int, 0);
 MODULE_PARM_DESC(timeout, "Timeout (default=1.5 seconds)");
-MODULE_PARM(delay, "i");
+module_param(delay, int, 0);
 MODULE_PARM_DESC(delay, "Inter-bit delay (default=10 microseconds)");
diff -puN drivers/char/toshiba.c~MODULE_PARM-allyes drivers/char/toshiba.c
--- 25/drivers/char/toshiba.c~MODULE_PARM-allyes	2004-11-29 14:48:41.570527824 -0800
+++ 25-akpm/drivers/char/toshiba.c	2004-11-29 14:48:42.097447720 -0800
@@ -81,7 +81,7 @@ static int tosh_fan = 0;
 
 static int tosh_fn = 0;
 
-MODULE_PARM(tosh_fn, "i");
+module_param(tosh_fn, int, 0);
 
 
 static int tosh_ioctl(struct inode *, struct file *, unsigned int,
diff -puN drivers/ide/legacy/ide-cs.c~MODULE_PARM-allyes drivers/ide/legacy/ide-cs.c
--- 25/drivers/ide/legacy/ide-cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.571527672 -0800
+++ 25-akpm/drivers/ide/legacy/ide-cs.c	2004-11-29 14:48:42.098447568 -0800
@@ -62,12 +62,12 @@ MODULE_AUTHOR("David Hinds <dahinds@user
 MODULE_DESCRIPTION("PCMCIA ATA/IDE card driver");
 MODULE_LICENSE("Dual MPL/GPL");
 
-#define INT_MODULE_PARM(n, v) static int n = v; MODULE_PARM(n, "i")
+#define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0)
 
 /* Bit map of interrupts to choose from */
 INT_MODULE_PARM(irq_mask, 0xdeb8);
 static int irq_list[4] = { -1 };
-MODULE_PARM(irq_list, "1-4i");
+module_param_array(irq_list, int, NULL, 0);
 
 #ifdef PCMCIA_DEBUG
 INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG);
diff -puN drivers/isdn/act2000/module.c~MODULE_PARM-allyes drivers/isdn/act2000/module.c
--- 25/drivers/isdn/act2000/module.c~MODULE_PARM-allyes	2004-11-29 14:48:41.573527368 -0800
+++ 25-akpm/drivers/isdn/act2000/module.c	2004-11-29 14:48:42.099447416 -0800
@@ -40,10 +40,10 @@ MODULE_PARM_DESC(act_bus, "BusType of fi
 MODULE_PARM_DESC(membase, "Base port address of first card");
 MODULE_PARM_DESC(act_irq, "IRQ of first card");
 MODULE_PARM_DESC(act_id,  "ID-String of first card");
-MODULE_PARM(act_bus,  "i");
-MODULE_PARM(act_port, "i");
-MODULE_PARM(act_irq,  "i");
-MODULE_PARM(act_id,   "s");
+module_param(act_bus,  int, 0);
+module_param(act_port, int, 0);
+module_param(act_irq, int, 0);
+module_param(act_id, charp, 0);
 
 static int act2000_addcard(int, int, int, char *);
 
diff -puN drivers/isdn/hardware/eicon/divamnt.c~MODULE_PARM-allyes drivers/isdn/hardware/eicon/divamnt.c
--- 25/drivers/isdn/hardware/eicon/divamnt.c~MODULE_PARM-allyes	2004-11-29 14:48:41.574527216 -0800
+++ 25-akpm/drivers/isdn/hardware/eicon/divamnt.c	2004-11-29 14:48:42.099447416 -0800
@@ -34,9 +34,9 @@ MODULE_SUPPORTED_DEVICE("DIVA card drive
 MODULE_LICENSE("GPL");
 
 int buffer_length = 128;
-MODULE_PARM(buffer_length, "i");
+module_param(buffer_length, int, 0);
 unsigned long diva_dbg_mem = 0;
-MODULE_PARM(diva_dbg_mem, "l");
+module_param(diva_dbg_mem, ulong, 0);
 
 static char *DRIVERNAME =
     "Eicon DIVA - MAINT module (http://www.melware.net)";
diff -puN drivers/isdn/hardware/eicon/divasmain.c~MODULE_PARM-allyes drivers/isdn/hardware/eicon/divasmain.c
--- 25/drivers/isdn/hardware/eicon/divasmain.c~MODULE_PARM-allyes	2004-11-29 14:48:41.575527064 -0800
+++ 25-akpm/drivers/isdn/hardware/eicon/divasmain.c	2004-11-29 14:48:42.100447264 -0800
@@ -51,7 +51,7 @@ MODULE_DESCRIPTION("Kernel driver for Ei
 MODULE_AUTHOR("Cytronics & Melware, Eicon Networks");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(dbgmask, "i");
+module_param(dbgmask, int, 0);
 MODULE_PARM_DESC(dbgmask, "initial debug mask");
 
 static char *DRIVERNAME =
diff -puN drivers/isdn/hisax/avma1_cs.c~MODULE_PARM-allyes drivers/isdn/hisax/avma1_cs.c
--- 25/drivers/isdn/hisax/avma1_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.577526760 -0800
+++ 25-akpm/drivers/isdn/hisax/avma1_cs.c	2004-11-29 14:48:42.100447264 -0800
@@ -41,7 +41,7 @@ MODULE_LICENSE("GPL");
 */
 #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 =
 "avma1_cs.c 1.00 1998/01/23 10:00:00 (Carsten Paeth)";
@@ -57,8 +57,8 @@ static int default_irq_list[11] = { 15, 
 static int irq_list[11] = { -1 };
 static int isdnprot = 2;
 
-MODULE_PARM(irq_list, "1-11i");
-MODULE_PARM(isdnprot, "1-4i");
+module_param_array(irq_list, int, NULL, 0);
+module_param(isdnprot, int, 0);
 
 /*====================================================================*/
 
diff -puN drivers/isdn/hisax/elsa_cs.c~MODULE_PARM-allyes drivers/isdn/hisax/elsa_cs.c
--- 25/drivers/isdn/hisax/elsa_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.578526608 -0800
+++ 25-akpm/drivers/isdn/hisax/elsa_cs.c	2004-11-29 14:48:42.101447112 -0800
@@ -69,7 +69,7 @@ MODULE_LICENSE("Dual MPL/GPL");
 
 #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 =
 "elsa_cs.c $Revision: 1.2.2.4 $ $Date: 2004/01/25 15:07:06 $ (K.Lichtenwalder)";
@@ -88,11 +88,11 @@ static u_long irq_mask = 0xdeb8;
 /* Newer, simpler way of listing specific interrupts */
 static int irq_list[4] = { -1 };
 
-MODULE_PARM(irq_mask, "i");
-MODULE_PARM(irq_list, "1-4i");
+module_param(irq_mask, ulong, 0);
+module_param_array(irq_list, int, NULL, 0);
 
 static int protocol = 2;        /* EURO-ISDN Default */
-MODULE_PARM(protocol, "i");
+module_param(protocol, int, 0);
 
 /*====================================================================*/
 
diff -puN drivers/isdn/hisax/hisax_fcpcipnp.c~MODULE_PARM-allyes drivers/isdn/hisax/hisax_fcpcipnp.c
--- 25/drivers/isdn/hisax/hisax_fcpcipnp.c~MODULE_PARM-allyes	2004-11-29 14:48:41.580526304 -0800
+++ 25-akpm/drivers/isdn/hisax/hisax_fcpcipnp.c	2004-11-29 14:48:42.102446960 -0800
@@ -45,8 +45,8 @@
 #ifdef CONFIG_HISAX_DEBUG
 static int debug = 0;
 /* static int hdlcfifosize = 32; */
-MODULE_PARM(debug, "i");
-/* MODULE_PARM(hdlcfifosize, "i"); */
+module_param(debug, int, 0);
+/* module_param(hdlcfifosize, int, 0); */
 #endif
 
 MODULE_AUTHOR("Kai Germaschewski <kai.germaschewski@gmx.de>/Karsten Keil <kkeil@suse.de>");
@@ -81,7 +81,7 @@ MODULE_DEVICE_TABLE(isapnp, fcpnp_ids);
 #endif
 
 static int protocol = 2;       /* EURO-ISDN Default */
-MODULE_PARM(protocol, "i");
+module_param(protocol, int, 0);
 MODULE_LICENSE("GPL");
 
 // ----------------------------------------------------------------------
diff -puN drivers/isdn/hisax/hisax_isac.c~MODULE_PARM-allyes drivers/isdn/hisax/hisax_isac.c
--- 25/drivers/isdn/hisax/hisax_isac.c~MODULE_PARM-allyes	2004-11-29 14:48:41.581526152 -0800
+++ 25-akpm/drivers/isdn/hisax/hisax_isac.c	2004-11-29 14:48:42.103446808 -0800
@@ -32,7 +32,7 @@
 
 #ifdef CONFIG_HISAX_DEBUG
 static int debug = 1;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 
 static char *ISACVer[] = {
   "2086/2186 V1.1", 
diff -puN drivers/isdn/hisax/sedlbauer_cs.c~MODULE_PARM-allyes drivers/isdn/hisax/sedlbauer_cs.c
--- 25/drivers/isdn/hisax/sedlbauer_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.582526000 -0800
+++ 25-akpm/drivers/isdn/hisax/sedlbauer_cs.c	2004-11-29 14:48:42.104446656 -0800
@@ -69,7 +69,7 @@ MODULE_LICENSE("Dual MPL/GPL");
 
 #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 =
 "sedlbauer_cs.c 1.1a 2001/01/28 15:04:04 (M.Niemann)";
@@ -88,11 +88,11 @@ static u_int irq_mask = 0xdeb8;
 /* Newer, simpler way of listing specific interrupts */
 static int irq_list[4] = { -1 };
 
-MODULE_PARM(irq_mask, "i");
-MODULE_PARM(irq_list, "1-4i");
+module_param(irq_mask, int, 0);
+module_param_array(irq_list, int, NULL, 0);
 
 static int protocol = 2;        /* EURO-ISDN Default */
-MODULE_PARM(protocol, "i");
+module_param(protocol, int, 0);
 
 /*====================================================================*/
 
diff -puN drivers/isdn/hisax/st5481_init.c~MODULE_PARM-allyes drivers/isdn/hisax/st5481_init.c
--- 25/drivers/isdn/hisax/st5481_init.c~MODULE_PARM-allyes	2004-11-29 14:48:41.584525696 -0800
+++ 25-akpm/drivers/isdn/hisax/st5481_init.c	2004-11-29 14:48:42.104446656 -0800
@@ -37,14 +37,14 @@ MODULE_AUTHOR("Frode Isaksen");
 MODULE_LICENSE("GPL");
 
 static int protocol = 2;       /* EURO-ISDN Default */
-MODULE_PARM(protocol, "i");
+module_param(protocol, int, 0);
 
 static int number_of_leds = 2;       /* 2 LEDs on the adpater default */
-MODULE_PARM(number_of_leds, "i");
+module_param(number_of_leds, int, 0);
 
 #ifdef CONFIG_HISAX_DEBUG
 static int debug = 0x1;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 int st5481_debug;
 #endif
 
diff -puN drivers/isdn/hisax/teles_cs.c~MODULE_PARM-allyes drivers/isdn/hisax/teles_cs.c
--- 25/drivers/isdn/hisax/teles_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.585525544 -0800
+++ 25-akpm/drivers/isdn/hisax/teles_cs.c	2004-11-29 14:48:42.105446504 -0800
@@ -50,7 +50,7 @@ MODULE_LICENSE("GPL");
 
 #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 =
 "teles_cs.c 2.10 2002/07/30 22:23:34 kkeil";
@@ -69,11 +69,11 @@ static u_long irq_mask = 0xdeb8;
 /* Newer, simpler way of listing specific interrupts */
 static int irq_list[4] = { -1 };
 
-MODULE_PARM(irq_mask, "i");
-MODULE_PARM(irq_list, "1-4i");
+module_param(irq_mask, ulong, 0);
+module_param_array(irq_list, int, NULL, 0);
 
 static int protocol = 2;        /* EURO-ISDN Default */
-MODULE_PARM(protocol, "i");
+module_param(protocol, int, 0);
 
 /*====================================================================*/
 
diff -puN drivers/isdn/icn/icn.c~MODULE_PARM-allyes drivers/isdn/icn/icn.c
--- 25/drivers/isdn/icn/icn.c~MODULE_PARM-allyes	2004-11-29 14:48:41.586525392 -0800
+++ 25-akpm/drivers/isdn/icn/icn.c	2004-11-29 14:48:42.106446352 -0800
@@ -21,13 +21,13 @@ static char *icn_id2 = "\0";
 MODULE_DESCRIPTION("ISDN4Linux: Driver for ICN active ISDN card");
 MODULE_AUTHOR("Fritz Elfert");
 MODULE_LICENSE("GPL");
-MODULE_PARM(portbase, "i");
+module_param(portbase, int, 0);
 MODULE_PARM_DESC(portbase, "Port address of first card");
-MODULE_PARM(membase, "l");
+module_param(membase, ulong, 0);
 MODULE_PARM_DESC(membase, "Shared memory address of all cards");
-MODULE_PARM(icn_id, "s");
+module_param(icn_id, charp, 0);
 MODULE_PARM_DESC(icn_id, "ID-String of first card");
-MODULE_PARM(icn_id2, "s");
+module_param(icn_id2, charp, 0);
 MODULE_PARM_DESC(icn_id2, "ID-String of first card, second S0 (4B only)");
 
 /*
diff -puN drivers/isdn/pcbit/module.c~MODULE_PARM-allyes drivers/isdn/pcbit/module.c
--- 25/drivers/isdn/pcbit/module.c~MODULE_PARM-allyes	2004-11-29 14:48:41.588525088 -0800
+++ 25-akpm/drivers/isdn/pcbit/module.c	2004-11-29 14:48:42.106446352 -0800
@@ -22,12 +22,13 @@
 MODULE_DESCRIPTION("ISDN4Linux: Driver for PCBIT-T card");
 MODULE_AUTHOR("Pedro Roque Marques");
 MODULE_LICENSE("GPL");
-MODULE_PARM(mem, "1-" __MODULE_STRING(MAX_PCBIT_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_PCBIT_CARDS) "i");
 
 static int mem[MAX_PCBIT_CARDS];
 static int irq[MAX_PCBIT_CARDS];
 
+module_param_array(mem, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+
 static int num_boards;
 struct pcbit_dev * dev_pcbit[MAX_PCBIT_CARDS];
 
diff -puN drivers/isdn/sc/init.c~MODULE_PARM-allyes drivers/isdn/sc/init.c
--- 25/drivers/isdn/sc/init.c~MODULE_PARM-allyes	2004-11-29 14:48:41.589524936 -0800
+++ 25-akpm/drivers/isdn/sc/init.c	2004-11-29 14:48:42.107446200 -0800
@@ -15,10 +15,6 @@
 MODULE_DESCRIPTION("ISDN4Linux: Driver for Spellcaster card");
 MODULE_AUTHOR("Spellcaster Telecommunications Inc.");
 MODULE_LICENSE("GPL");
-MODULE_PARM( io, "1-" __MODULE_STRING(MAX_CARDS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_CARDS) "i");
-MODULE_PARM(ram, "1-" __MODULE_STRING(MAX_CARDS) "i");
-MODULE_PARM(do_reset, "i");
 
 board *sc_adapter[MAX_CARDS];
 int cinst;
@@ -34,6 +30,11 @@ static unsigned char irq[] = {0,0,0,0};
 static unsigned long ram[] = {0,0,0,0};
 static int do_reset = 0;
 
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(ram, int, NULL, 0);
+module_param(do_reset, bool, 0);
+
 static int sup_irq[] = { 11, 10, 9, 5, 12, 14, 7, 3, 4, 6 };
 #define MAX_IRQS	10
 
diff -puN drivers/isdn/tpam/tpam_main.c~MODULE_PARM-allyes drivers/isdn/tpam/tpam_main.c
--- 25/drivers/isdn/tpam/tpam_main.c~MODULE_PARM-allyes	2004-11-29 14:48:41.591524632 -0800
+++ 25-akpm/drivers/isdn/tpam/tpam_main.c	2004-11-29 14:48:42.107446200 -0800
@@ -39,7 +39,7 @@ MODULE_DESCRIPTION("ISDN4Linux: Driver f
 MODULE_AUTHOR("Stelian Pop");
 MODULE_LICENSE("GPL");
 MODULE_PARM_DESC(id,"ID-String of the driver");
-MODULE_PARM(id,"s");
+module_param(id, charp, 0);
 
 /*
  * Finds a board by its driver ID.
diff -puN drivers/media/radio/miropcm20-radio.c~MODULE_PARM-allyes drivers/media/radio/miropcm20-radio.c
--- 25/drivers/media/radio/miropcm20-radio.c~MODULE_PARM-allyes	2004-11-29 14:48:41.592524480 -0800
+++ 25-akpm/drivers/media/radio/miropcm20-radio.c	2004-11-29 14:48:42.108446048 -0800
@@ -26,7 +26,7 @@
 #include "miropcm20-rds-core.h"
 
 static int radio_nr = -1;
-MODULE_PARM(radio_nr, "i");
+module_param(radio_nr, int, 0);
 
 struct pcm20_device {
 	unsigned long freq;
diff -puN drivers/media/radio/radio-aimslab.c~MODULE_PARM-allyes drivers/media/radio/radio-aimslab.c
--- 25/drivers/media/radio/radio-aimslab.c~MODULE_PARM-allyes	2004-11-29 14:48:41.594524176 -0800
+++ 25-akpm/drivers/media/radio/radio-aimslab.c	2004-11-29 14:48:42.108446048 -0800
@@ -353,9 +353,9 @@ MODULE_AUTHOR("M.Kirkwood");
 MODULE_DESCRIPTION("A driver for the RadioTrack/RadioReveal radio card.");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "I/O address of the RadioTrack card (0x20f or 0x30f)");
-MODULE_PARM(radio_nr, "i");
+module_param(radio_nr, int, 0);
 
 static void __exit cleanup_rtrack_module(void)
 {
diff -puN drivers/media/radio/radio-aztech.c~MODULE_PARM-allyes drivers/media/radio/radio-aztech.c
--- 25/drivers/media/radio/radio-aztech.c~MODULE_PARM-allyes	2004-11-29 14:48:41.595524024 -0800
+++ 25-akpm/drivers/media/radio/radio-aztech.c	2004-11-29 14:48:42.109445896 -0800
@@ -301,8 +301,8 @@ MODULE_AUTHOR("Russell Kroll, Quay Lu, D
 MODULE_DESCRIPTION("A driver for the Aztech radio card.");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "i");
-MODULE_PARM(radio_nr, "i");
+module_param(io, int, 0);
+module_param(radio_nr, int, 0);
 MODULE_PARM_DESC(io, "I/O address of the Aztech card (0x350 or 0x358)");
 
 static void __exit aztech_cleanup(void)
diff -puN drivers/media/radio/radio-cadet.c~MODULE_PARM-allyes drivers/media/radio/radio-cadet.c
--- 25/drivers/media/radio/radio-cadet.c~MODULE_PARM-allyes	2004-11-29 14:48:41.596523872 -0800
+++ 25-akpm/drivers/media/radio/radio-cadet.c	2004-11-29 14:48:42.109445896 -0800
@@ -604,9 +604,9 @@ MODULE_AUTHOR("Fred Gleason, Russell Kro
 MODULE_DESCRIPTION("A driver for the ADS Cadet AM/FM/RDS radio card.");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "I/O address of Cadet card (0x330,0x332,0x334,0x336,0x338,0x33a,0x33c,0x33e)");
-MODULE_PARM(radio_nr, "i");
+module_param(radio_nr, int, 0);
 
 static void __exit cadet_cleanup_module(void)
 {
diff -puN drivers/media/radio/radio-gemtek.c~MODULE_PARM-allyes drivers/media/radio/radio-gemtek.c
--- 25/drivers/media/radio/radio-gemtek.c~MODULE_PARM-allyes	2004-11-29 14:48:41.598523568 -0800
+++ 25-akpm/drivers/media/radio/radio-gemtek.c	2004-11-29 14:48:42.110445744 -0800
@@ -284,9 +284,9 @@ MODULE_AUTHOR("Jonas Munsin");
 MODULE_DESCRIPTION("A driver for the GemTek Radio Card");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "I/O address of the GemTek card (0x20c, 0x30c, 0x24c or 0x34c (0x20c or 0x248 have been reported to work for the combined sound/radiocard)).");
-MODULE_PARM(radio_nr, "i");
+module_param(radio_nr, int, 0);
 
 static void __exit gemtek_cleanup(void)
 {
diff -puN drivers/media/radio/radio-gemtek-pci.c~MODULE_PARM-allyes drivers/media/radio/radio-gemtek-pci.c
--- 25/drivers/media/radio/radio-gemtek-pci.c~MODULE_PARM-allyes	2004-11-29 14:48:41.599523416 -0800
+++ 25-akpm/drivers/media/radio/radio-gemtek-pci.c	2004-11-29 14:48:42.111445592 -0800
@@ -294,7 +294,7 @@ static struct pci_device_id gemtek_pci_i
 
 MODULE_DEVICE_TABLE( pci, gemtek_pci_id );
 
-static u8 mx = 1;
+static int mx = 1;
 
 static struct file_operations gemtek_pci_fops = {
 	.owner		= THIS_MODULE,
@@ -406,9 +406,9 @@ MODULE_AUTHOR( "Vladimir Shebordaev <vsh
 MODULE_DESCRIPTION( "The video4linux driver for the Gemtek PCI Radio Card" );
 MODULE_LICENSE("GPL");
 
-MODULE_PARM( mx, "b" );
+module_param(mx, bool, 0);
 MODULE_PARM_DESC( mx, "single digit: 1 - turn off the turner upon module exit (default), 0 - do not" );
-MODULE_PARM( nr_radio, "i");
+module_param(nr_radio, int, 0);
 MODULE_PARM_DESC( nr_radio, "video4linux device number to use");
 
 module_init( gemtek_pci_init_module );
diff -puN drivers/media/radio/radio-maestro.c~MODULE_PARM-allyes drivers/media/radio/radio-maestro.c
--- 25/drivers/media/radio/radio-maestro.c~MODULE_PARM-allyes	2004-11-29 14:48:41.601523112 -0800
+++ 25-akpm/drivers/media/radio/radio-maestro.c	2004-11-29 14:48:42.111445592 -0800
@@ -62,7 +62,7 @@
 #define BITS2FREQ(x)	((x) * FREQ_STEP - FREQ_IF)
 
 static int radio_nr = -1;
-MODULE_PARM(radio_nr, "i");
+module_param(radio_nr, int, 0);
 
 static int radio_ioctl(struct inode *inode, struct file *file,
 		       unsigned int cmd, unsigned long arg);
diff -puN drivers/media/radio/radio-maxiradio.c~MODULE_PARM-allyes drivers/media/radio/radio-maxiradio.c
--- 25/drivers/media/radio/radio-maxiradio.c~MODULE_PARM-allyes	2004-11-29 14:48:41.602522960 -0800
+++ 25-akpm/drivers/media/radio/radio-maxiradio.c	2004-11-29 14:48:42.111445592 -0800
@@ -57,7 +57,7 @@
 static const int clk = 1, data = 2, wren = 4, mo_st = 8, power = 16 ;
 
 static int radio_nr = -1;
-MODULE_PARM(radio_nr, "i");
+module_param(radio_nr, int, 0);
 
 
 #define FREQ_LO		 50*16000
diff -puN drivers/media/radio/radio-rtrack2.c~MODULE_PARM-allyes drivers/media/radio/radio-rtrack2.c
--- 25/drivers/media/radio/radio-rtrack2.c~MODULE_PARM-allyes	2004-11-29 14:48:41.603522808 -0800
+++ 25-akpm/drivers/media/radio/radio-rtrack2.c	2004-11-29 14:48:42.112445440 -0800
@@ -246,9 +246,9 @@ MODULE_AUTHOR("Ben Pfaff");
 MODULE_DESCRIPTION("A driver for the RadioTrack II radio card.");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "I/O address of the RadioTrack card (0x20c or 0x30c)");
-MODULE_PARM(radio_nr, "i");
+module_param(radio_nr, int, 0);
 
 static void __exit rtrack2_cleanup_module(void)
 {
diff -puN drivers/media/radio/radio-sf16fmi.c~MODULE_PARM-allyes drivers/media/radio/radio-sf16fmi.c
--- 25/drivers/media/radio/radio-sf16fmi.c~MODULE_PARM-allyes	2004-11-29 14:48:41.605522504 -0800
+++ 25-akpm/drivers/media/radio/radio-sf16fmi.c	2004-11-29 14:48:42.112445440 -0800
@@ -312,9 +312,9 @@ MODULE_AUTHOR("Petr Vandrovec, vandrove@
 MODULE_DESCRIPTION("A driver for the SF16MI radio.");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "I/O address of the SF16MI card (0x284 or 0x384)");
-MODULE_PARM(radio_nr, "i");
+module_param(radio_nr, int, 0);
 
 static void __exit fmi_cleanup_module(void)
 {
diff -puN drivers/media/radio/radio-sf16fmr2.c~MODULE_PARM-allyes drivers/media/radio/radio-sf16fmr2.c
--- 25/drivers/media/radio/radio-sf16fmr2.c~MODULE_PARM-allyes	2004-11-29 14:48:41.606522352 -0800
+++ 25-akpm/drivers/media/radio/radio-sf16fmr2.c	2004-11-29 14:48:42.113445288 -0800
@@ -408,9 +408,9 @@ MODULE_AUTHOR("Ziglio Frediano, freddy77
 MODULE_DESCRIPTION("A driver for the SF16FMR2 radio.");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "I/O address of the SF16FMR2 card (should be 0x384, if do not work try 0x284)");
-MODULE_PARM(radio_nr, "i");
+module_param(radio_nr, int, 0);
 
 static void __exit fmr2_cleanup_module(void)
 {
diff -puN drivers/media/radio/radio-terratec.c~MODULE_PARM-allyes drivers/media/radio/radio-terratec.c
--- 25/drivers/media/radio/radio-terratec.c~MODULE_PARM-allyes	2004-11-29 14:48:41.607522200 -0800
+++ 25-akpm/drivers/media/radio/radio-terratec.c	2004-11-29 14:48:42.114445136 -0800
@@ -325,9 +325,9 @@ static int __init terratec_init(void)
 MODULE_AUTHOR("R.OFFERMANNS & others");
 MODULE_DESCRIPTION("A driver for the TerraTec ActiveRadio Standalone radio card.");
 MODULE_LICENSE("GPL");
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "I/O address of the TerraTec ActiveRadio card (0x590 or 0x591)");
-MODULE_PARM(radio_nr, "i");
+module_param(radio_nr, int, 0);
 
 static void __exit terratec_cleanup_module(void)
 {
diff -puN drivers/media/radio/radio-trust.c~MODULE_PARM-allyes drivers/media/radio/radio-trust.c
--- 25/drivers/media/radio/radio-trust.c~MODULE_PARM-allyes	2004-11-29 14:48:41.609521896 -0800
+++ 25-akpm/drivers/media/radio/radio-trust.c	2004-11-29 14:48:42.114445136 -0800
@@ -306,9 +306,9 @@ MODULE_AUTHOR("Eric Lammerts, Russell Kr
 MODULE_DESCRIPTION("A driver for the Trust FM Radio card.");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "I/O address of the Trust FM Radio card (0x350 or 0x358)");
-MODULE_PARM(radio_nr, "i");
+module_param(radio_nr, int, 0);
 
 static void __exit cleanup_trust_module(void)
 {
diff -puN drivers/media/radio/radio-typhoon.c~MODULE_PARM-allyes drivers/media/radio/radio-typhoon.c
--- 25/drivers/media/radio/radio-typhoon.c~MODULE_PARM-allyes	2004-11-29 14:48:41.610521744 -0800
+++ 25-akpm/drivers/media/radio/radio-typhoon.c	2004-11-29 14:48:42.115444984 -0800
@@ -305,17 +305,17 @@ MODULE_AUTHOR("Dr. Henrik Seidel");
 MODULE_DESCRIPTION("A driver for the Typhoon radio card (a.k.a. EcoRadio).");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "i");
-MODULE_PARM_DESC(io, "I/O address of the Typhoon card (0x316 or 0x336)");
-MODULE_PARM(mutefreq, "i");
-MODULE_PARM_DESC(mutefreq, "Frequency used when muting the card (in kHz)");
-MODULE_PARM(radio_nr, "i");
-
 static int io = -1;
 static int radio_nr = -1;
 
+module_param(io, int, 0);
+MODULE_PARM_DESC(io, "I/O address of the Typhoon card (0x316 or 0x336)");
+module_param(radio_nr, int, 0);
+
 #ifdef MODULE
 static unsigned long mutefreq = 0;
+module_param(mutefreq, int, 0);
+MODULE_PARM_DESC(mutefreq, "Frequency used when muting the card (in kHz)");
 #endif
 
 static int __init typhoon_init(void)
diff -puN drivers/media/radio/radio-zoltrix.c~MODULE_PARM-allyes drivers/media/radio/radio-zoltrix.c
--- 25/drivers/media/radio/radio-zoltrix.c~MODULE_PARM-allyes	2004-11-29 14:48:41.611521592 -0800
+++ 25-akpm/drivers/media/radio/radio-zoltrix.c	2004-11-29 14:48:42.115444984 -0800
@@ -382,9 +382,9 @@ MODULE_AUTHOR("C.van Schaik");
 MODULE_DESCRIPTION("A driver for the Zoltrix Radio Plus.");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "I/O address of the Zoltrix Radio Plus (0x20c or 0x30c)");
-MODULE_PARM(radio_nr, "i");
+module_param(radio_nr, int, 0);
 
 static void __exit zoltrix_cleanup_module(void)
 {
diff -puN drivers/media/video/adv7170.c~MODULE_PARM-allyes drivers/media/video/adv7170.c
--- 25/drivers/media/video/adv7170.c~MODULE_PARM-allyes	2004-11-29 14:48:41.613521288 -0800
+++ 25-akpm/drivers/media/video/adv7170.c	2004-11-29 14:48:42.116444832 -0800
@@ -61,7 +61,7 @@ MODULE_LICENSE("GPL");
 #include <linux/video_encoder.h>
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0-1)");
 
 #define dprintk(num, format, args...) \
diff -puN drivers/media/video/adv7175.c~MODULE_PARM-allyes drivers/media/video/adv7175.c
--- 25/drivers/media/video/adv7175.c~MODULE_PARM-allyes	2004-11-29 14:48:41.614521136 -0800
+++ 25-akpm/drivers/media/video/adv7175.c	2004-11-29 14:48:42.117444680 -0800
@@ -57,7 +57,7 @@ MODULE_LICENSE("GPL");
 #include <linux/video_encoder.h>
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0-1)");
 
 #define dprintk(num, format, args...) \
diff -puN drivers/media/video/bt819.c~MODULE_PARM-allyes drivers/media/video/bt819.c
--- 25/drivers/media/video/bt819.c~MODULE_PARM-allyes	2004-11-29 14:48:41.616520832 -0800
+++ 25-akpm/drivers/media/video/bt819.c	2004-11-29 14:48:42.117444680 -0800
@@ -61,7 +61,7 @@ MODULE_LICENSE("GPL");
 #include <linux/video_decoder.h>
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0-1)");
 
 #define dprintk(num, format, args...) \
diff -puN drivers/media/video/bt856.c~MODULE_PARM-allyes drivers/media/video/bt856.c
--- 25/drivers/media/video/bt856.c~MODULE_PARM-allyes	2004-11-29 14:48:41.617520680 -0800
+++ 25-akpm/drivers/media/video/bt856.c	2004-11-29 14:48:42.118444528 -0800
@@ -61,7 +61,7 @@ MODULE_LICENSE("GPL");
 #include <linux/video_encoder.h>
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0-1)");
 
 #define dprintk(num, format, args...) \
diff -puN drivers/media/video/bw-qcam.c~MODULE_PARM-allyes drivers/media/video/bw-qcam.c
--- 25/drivers/media/video/bw-qcam.c~MODULE_PARM-allyes	2004-11-29 14:48:41.618520528 -0800
+++ 25-akpm/drivers/media/video/bw-qcam.c	2004-11-29 14:48:42.119444376 -0800
@@ -82,9 +82,9 @@ static unsigned int maxpoll=250;   /* Ma
 static unsigned int yieldlines=4;  /* Yield after this many during capture */
 static int video_nr = -1;
 
-MODULE_PARM(maxpoll,"i");
-MODULE_PARM(yieldlines,"i");   
-MODULE_PARM(video_nr,"i");
+module_param(maxpoll, int, 0);
+module_param(yieldlines, int, 0);
+module_param(video_nr, int, 0);
 
 static inline int read_lpstatus(struct qcam_device *q)
 {
@@ -946,7 +946,7 @@ static void close_bwqcam(struct qcam_dev
  *       -- March 14, 1999  Billy Donahue <billy@escape.com> */
 #ifdef MODULE
 static char *parport[MAX_CAMS] = { NULL, };
-MODULE_PARM(parport, "1-" __MODULE_STRING(MAX_CAMS) "s");
+module_param_array(parport, charp, NULL, 0);
 #endif
 
 static int accept_bwqcam(struct parport *port)
diff -puN drivers/media/video/cpia.c~MODULE_PARM-allyes drivers/media/video/cpia.c
--- 25/drivers/media/video/cpia.c~MODULE_PARM-allyes	2004-11-29 14:48:41.620520224 -0800
+++ 25-akpm/drivers/media/video/cpia.c	2004-11-29 14:48:42.122443920 -0800
@@ -57,7 +57,7 @@ extern int cpia_usb_init(void);
 static int video_nr = -1;
 
 #ifdef MODULE
-MODULE_PARM(video_nr,"i");
+module_param(video_nr, int, 0);
 MODULE_AUTHOR("Scott J. Bertin <sbertin@securenym.net> & Peter Pregler <Peter_Pregler@email.com> & Johannes Erdfelt <johannes@erdfeld.com>");
 MODULE_DESCRIPTION("V4L-driver for Vision CPiA based cameras");
 MODULE_LICENSE("GPL");
diff -puN drivers/media/video/c-qcam.c~MODULE_PARM-allyes drivers/media/video/c-qcam.c
--- 25/drivers/media/video/c-qcam.c~MODULE_PARM-allyes	2004-11-29 14:48:41.622519920 -0800
+++ 25-akpm/drivers/media/video/c-qcam.c	2004-11-29 14:48:42.123443768 -0800
@@ -842,13 +842,14 @@ MODULE_AUTHOR("Philip Blundell <philb@gn
 MODULE_DESCRIPTION(BANNER);
 MODULE_LICENSE("GPL");
 
+/* FIXME: parport=auto would never have worked, surely? --RR */
 MODULE_PARM_DESC(parport ,"parport=<auto|n[,n]...> for port detection method\n\
 probe=<0|1|2> for camera detection method\n\
 force_rgb=<0|1> for RGB data format (default BGR)");
-MODULE_PARM(parport, "1-" __MODULE_STRING(MAX_CAMS) "i");
-MODULE_PARM(probe, "i");
-MODULE_PARM(force_rgb, "i");
-MODULE_PARM(video_nr,"i");
+module_param_array(parport, int, NULL, 0);
+module_param(probe, int, 0);
+module_param(force_rgb, bool, 0);
+module_param(video_nr, int, 0);
 
 module_init(cqcam_init);
 module_exit(cqcam_cleanup);
diff -puN drivers/media/video/dpc7146.c~MODULE_PARM-allyes drivers/media/video/dpc7146.c
--- 25/drivers/media/video/dpc7146.c~MODULE_PARM-allyes	2004-11-29 14:48:41.623519768 -0800
+++ 25-akpm/drivers/media/video/dpc7146.c	2004-11-29 14:48:42.123443768 -0800
@@ -55,7 +55,7 @@
 #define DPC_BOARD_CAN_DO_VBI(dev)   (dev->revision != 0) 
 
 static int debug = 0;
-MODULE_PARM(debug,"i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "debug verbosity");
 
 static int dpc_num = 0;
diff -puN drivers/media/video/hexium_gemini.c~MODULE_PARM-allyes drivers/media/video/hexium_gemini.c
--- 25/drivers/media/video/hexium_gemini.c~MODULE_PARM-allyes	2004-11-29 14:48:41.624519616 -0800
+++ 25-akpm/drivers/media/video/hexium_gemini.c	2004-11-29 14:48:42.124443616 -0800
@@ -26,7 +26,7 @@
 #include <media/saa7146_vv.h>
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "debug verbosity");
 
 /* global variables */
diff -puN drivers/media/video/hexium_orion.c~MODULE_PARM-allyes drivers/media/video/hexium_orion.c
--- 25/drivers/media/video/hexium_orion.c~MODULE_PARM-allyes	2004-11-29 14:48:41.626519312 -0800
+++ 25-akpm/drivers/media/video/hexium_orion.c	2004-11-29 14:48:42.124443616 -0800
@@ -26,7 +26,7 @@
 #include <media/saa7146_vv.h>
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "debug verbosity");
 
 /* global variables */
diff -puN drivers/media/video/pms.c~MODULE_PARM-allyes drivers/media/video/pms.c
--- 25/drivers/media/video/pms.c~MODULE_PARM-allyes	2004-11-29 14:48:41.627519160 -0800
+++ 25-akpm/drivers/media/video/pms.c	2004-11-29 14:48:42.125443464 -0800
@@ -1036,9 +1036,9 @@ static int __init init_pms_cards(void)
 	return video_register_device((struct video_device *)&pms_device, VFL_TYPE_GRABBER, video_nr);
 }
 
-MODULE_PARM(io_port,"i");
-MODULE_PARM(mem_base,"i");
-MODULE_PARM(video_nr,"i");
+module_param(io_port, int, 0);
+module_param(mem_base, int, 0);
+module_param(video_nr, int, 0);
 MODULE_LICENSE("GPL");
 
 
diff -puN drivers/media/video/saa7110.c~MODULE_PARM-allyes drivers/media/video/saa7110.c
--- 25/drivers/media/video/saa7110.c~MODULE_PARM-allyes	2004-11-29 14:48:41.628519008 -0800
+++ 25-akpm/drivers/media/video/saa7110.c	2004-11-29 14:48:42.126443312 -0800
@@ -46,7 +46,7 @@ MODULE_LICENSE("GPL");
 #include <linux/video_decoder.h>
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0-1)");
 
 #define dprintk(num, format, args...) \
diff -puN drivers/media/video/saa7114.c~MODULE_PARM-allyes drivers/media/video/saa7114.c
--- 25/drivers/media/video/saa7114.c~MODULE_PARM-allyes	2004-11-29 14:48:41.630518704 -0800
+++ 25-akpm/drivers/media/video/saa7114.c	2004-11-29 14:48:42.127443160 -0800
@@ -63,7 +63,7 @@ MODULE_LICENSE("GPL");
 #include <linux/video_decoder.h>
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0-1)");
 
 #define dprintk(num, format, args...) \
diff -puN drivers/media/video/saa7185.c~MODULE_PARM-allyes drivers/media/video/saa7185.c
--- 25/drivers/media/video/saa7185.c~MODULE_PARM-allyes	2004-11-29 14:48:41.631518552 -0800
+++ 25-akpm/drivers/media/video/saa7185.c	2004-11-29 14:48:42.127443160 -0800
@@ -57,7 +57,7 @@ MODULE_LICENSE("GPL");
 #include <linux/video_encoder.h>
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0-1)");
 
 #define dprintk(num, format, args...) \
diff -puN drivers/media/video/stradis.c~MODULE_PARM-allyes drivers/media/video/stradis.c
--- 25/drivers/media/video/stradis.c~MODULE_PARM-allyes	2004-11-29 14:48:41.633518248 -0800
+++ 25-akpm/drivers/media/video/stradis.c	2004-11-29 14:48:42.129442856 -0800
@@ -60,7 +60,7 @@ static struct saa7146 saa7146s[SAA7146_M
 static int saa_num = 0;		/* number of SAA7146s in use */
 
 static int video_nr = -1;
-MODULE_PARM(video_nr,"i");
+module_param(video_nr, int, 0);
 MODULE_LICENSE("GPL");
 
 
diff -puN drivers/media/video/tuner-3036.c~MODULE_PARM-allyes drivers/media/video/tuner-3036.c
--- 25/drivers/media/video/tuner-3036.c~MODULE_PARM-allyes	2004-11-29 14:48:41.634518096 -0800
+++ 25-akpm/drivers/media/video/tuner-3036.c	2004-11-29 14:48:42.129442856 -0800
@@ -214,7 +214,7 @@ MODULE_DESCRIPTION("SAB3036 tuner driver
 MODULE_AUTHOR("Philip Blundell <philb@gnu.org>");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(debug,"i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug,"Enable debugging output");
 
 module_init(tuner3036_init);
diff -puN drivers/media/video/videocodec.c~MODULE_PARM-allyes drivers/media/video/videocodec.c
--- 25/drivers/media/video/videocodec.c~MODULE_PARM-allyes	2004-11-29 14:48:41.636517792 -0800
+++ 25-akpm/drivers/media/video/videocodec.c	2004-11-29 14:48:42.130442704 -0800
@@ -46,7 +46,7 @@
 #include "videocodec.h"
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0-4)");
 
 #define dprintk(num, format, args...) \
diff -puN drivers/media/video/vpx3220.c~MODULE_PARM-allyes drivers/media/video/vpx3220.c
--- 25/drivers/media/video/vpx3220.c~MODULE_PARM-allyes	2004-11-29 14:48:41.637517640 -0800
+++ 25-akpm/drivers/media/video/vpx3220.c	2004-11-29 14:48:42.131442552 -0800
@@ -41,7 +41,7 @@
 #define VPX3220_DEBUG	KERN_DEBUG "vpx3220: "
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0-1)");
 
 #define dprintk(num, format, args...) \
diff -puN drivers/media/video/w9966.c~MODULE_PARM-allyes drivers/media/video/w9966.c
--- 25/drivers/media/video/w9966.c~MODULE_PARM-allyes	2004-11-29 14:48:41.638517488 -0800
+++ 25-akpm/drivers/media/video/w9966.c	2004-11-29 14:48:42.132442400 -0800
@@ -127,18 +127,18 @@ static const char* pardev[] = {[0 ... W9
 #else
 static const char* pardev[] = {[0 ... W9966_MAXCAMS] = "aggressive"};
 #endif
-MODULE_PARM(pardev, "1-" __MODULE_STRING(W9966_MAXCAMS) "s");
+module_param_array(pardev, charp, NULL, 0);
 MODULE_PARM_DESC(pardev, "pardev: where to search for\n\
 \teach camera. 'aggressive' means brute-force search.\n\
 \tEg: >pardev=parport3,aggressive,parport2,parport1< would assign\n\
 \tcam 1 to parport3 and search every parport for cam 2 etc...");
 
 static int parmode = 0;
-MODULE_PARM(parmode, "i");
+module_param(parmode, int, 0);
 MODULE_PARM_DESC(parmode, "parmode: transfer mode (0=auto, 1=ecp, 2=epp");
 
 static int video_nr = -1;
-MODULE_PARM(video_nr, "i");
+module_param(video_nr, int, 0);
 
 /*
  *	Private data
diff -puN drivers/media/video/zoran_card.c~MODULE_PARM-allyes drivers/media/video/zoran_card.c
--- 25/drivers/media/video/zoran_card.c~MODULE_PARM-allyes	2004-11-29 14:48:41.640517184 -0800
+++ 25-akpm/drivers/media/video/zoran_card.c	2004-11-29 14:48:42.133442248 -0800
@@ -60,15 +60,15 @@
 extern const struct zoran_format zoran_formats[];
 
 static int card[BUZ_MAX] = { -1, -1, -1, -1 };
-MODULE_PARM(card, "1-" __stringify(BUZ_MAX) "i");
+module_param_array(card, int, NULL, 0);
 MODULE_PARM_DESC(card, "The type of card");
 
 static int encoder[BUZ_MAX] = { -1, -1, -1, -1 };
-MODULE_PARM(encoder, "1-" __stringify(BUZ_MAX) "i");
+module_param_array(encoder, int, NULL, 0);
 MODULE_PARM_DESC(encoder, "i2c TV encoder");
 
 static int decoder[BUZ_MAX] = { -1, -1, -1, -1 };
-MODULE_PARM(decoder, "1-" __stringify(BUZ_MAX) "i");
+module_param_array(decoder, int, NULL, 0);
 MODULE_PARM_DESC(decoder, "i2c TV decoder");
 
 /*
@@ -80,23 +80,23 @@ MODULE_PARM_DESC(decoder, "i2c TV decode
  */
 
 static unsigned long vidmem = 0;	/* Video memory base address */
-MODULE_PARM(vidmem, "i");
+module_param(vidmem, ulong, 0);
 
 /*
    Default input and video norm at startup of the driver.
 */
 
 static int default_input = 0;	/* 0=Composite, 1=S-Video */
-MODULE_PARM(default_input, "i");
+module_param(default_input, int, 0);
 MODULE_PARM_DESC(default_input,
 		 "Default input (0=Composite, 1=S-Video, 2=Internal)");
 
 static int default_norm = 0;	/* 0=PAL, 1=NTSC 2=SECAM */
-MODULE_PARM(default_norm, "i");
+module_param(default_norm, int, 0);
 MODULE_PARM_DESC(default_norm, "Default norm (0=PAL, 1=NTSC, 2=SECAM)");
 
 static int video_nr = -1;	/* /dev/videoN, -1 for autodetect */
-MODULE_PARM(video_nr, "i");
+module_param(video_nr, int, 0);
 MODULE_PARM_DESC(video_nr, "video device number");
 
 /*
@@ -118,27 +118,27 @@ MODULE_PARM_DESC(video_nr, "video device
 
 int v4l_nbufs = 2;
 int v4l_bufsize = 128;		/* Everybody should be able to work with this setting */
-MODULE_PARM(v4l_nbufs, "i");
+module_param(v4l_nbufs, int, 0);
 MODULE_PARM_DESC(v4l_nbufs, "Maximum number of V4L buffers to use");
-MODULE_PARM(v4l_bufsize, "i");
+module_param(v4l_bufsize, int, 0);
 MODULE_PARM_DESC(v4l_bufsize, "Maximum size per V4L buffer (in kB)");
 
 int jpg_nbufs = 32;
 int jpg_bufsize = 512;		/* max size for 100% quality full-PAL frame */
-MODULE_PARM(jpg_nbufs, "i");
+module_param(jpg_nbufs, int, 0);
 MODULE_PARM_DESC(jpg_nbufs, "Maximum number of JPG buffers to use");
-MODULE_PARM(jpg_bufsize, "i");
+module_param(jpg_bufsize, int, 0);
 MODULE_PARM_DESC(jpg_bufsize, "Maximum size per JPG buffer (in kB)");
 
 int pass_through = 0;		/* 1=Pass through TV signal when device is not used */
 				/* 0=Show color bar when device is not used (LML33: only if lml33dpath=1) */
-MODULE_PARM(pass_through, "i");
+module_param(pass_through, int, 0);
 MODULE_PARM_DESC(pass_through,
 		 "Pass TV signal through to TV-out when idling");
 
 static int debug = 1;
 int *zr_debug = &debug;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0-4)");
 
 MODULE_DESCRIPTION("Zoran-36057/36067 JPEG codec driver");
diff -puN drivers/media/video/zoran_device.c~MODULE_PARM-allyes drivers/media/video/zoran_device.c
--- 25/drivers/media/video/zoran_device.c~MODULE_PARM-allyes	2004-11-29 14:48:41.641517032 -0800
+++ 25-akpm/drivers/media/video/zoran_device.c	2004-11-29 14:48:42.135441944 -0800
@@ -75,7 +75,7 @@ static int lml33dpath = 0;	/* 1 will use
 				 * load on Bt819 input, there will be
 				 * some image imperfections */
 
-MODULE_PARM(lml33dpath, "i");
+module_param(lml33dpath, bool, 0);
 MODULE_PARM_DESC(lml33dpath,
 		 "Use digital path capture mode (on LML33 cards)");
 
diff -puN drivers/media/video/zoran_driver.c~MODULE_PARM-allyes drivers/media/video/zoran_driver.c
--- 25/drivers/media/video/zoran_driver.c~MODULE_PARM-allyes	2004-11-29 14:48:41.643516728 -0800
+++ 25-akpm/drivers/media/video/zoran_driver.c	2004-11-29 14:48:42.138441488 -0800
@@ -204,7 +204,7 @@ extern int jpg_bufsize;
 extern int pass_through;
 
 static int lock_norm = 0;	/* 1=Don't change TV standard (norm) */
-MODULE_PARM(lock_norm, "i");
+module_param(lock_norm, int, 0);
 MODULE_PARM_DESC(lock_norm, "Users can't change norm");
 
 #ifdef HAVE_V4L2
diff -puN drivers/media/video/zr36016.c~MODULE_PARM-allyes drivers/media/video/zr36016.c
--- 25/drivers/media/video/zr36016.c~MODULE_PARM-allyes	2004-11-29 14:48:41.645516424 -0800
+++ 25-akpm/drivers/media/video/zr36016.c	2004-11-29 14:48:42.139441336 -0800
@@ -61,7 +61,7 @@ static int zr36016_codecs = 0;
 /* debugging is available via module parameter */
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0-4)");
 
 #define dprintk(num, format, args...) \
diff -puN drivers/media/video/zr36050.c~MODULE_PARM-allyes drivers/media/video/zr36050.c
--- 25/drivers/media/video/zr36050.c~MODULE_PARM-allyes	2004-11-29 14:48:41.646516272 -0800
+++ 25-akpm/drivers/media/video/zr36050.c	2004-11-29 14:48:42.139441336 -0800
@@ -58,7 +58,7 @@ static int zr36050_codecs = 0;
 /* debugging is available via module parameter */
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0-4)");
 
 #define dprintk(num, format, args...) \
diff -puN drivers/media/video/zr36060.c~MODULE_PARM-allyes drivers/media/video/zr36060.c
--- 25/drivers/media/video/zr36060.c~MODULE_PARM-allyes	2004-11-29 14:48:41.648515968 -0800
+++ 25-akpm/drivers/media/video/zr36060.c	2004-11-29 14:48:42.140441184 -0800
@@ -56,12 +56,12 @@
 static int zr36060_codecs = 0;
 
 static int low_bitrate = 0;
-MODULE_PARM(low_bitrate, "i");
+module_param(low_bitrate, bool, 0);
 MODULE_PARM_DESC(low_bitrate, "Buz compatibility option, halves bitrate");
 
 /* debugging is available via module parameter */
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0-4)");
 
 #define dprintk(num, format, args...) \
diff -puN drivers/mtd/devices/blkmtd.c~MODULE_PARM-allyes drivers/mtd/devices/blkmtd.c
--- 25/drivers/mtd/devices/blkmtd.c~MODULE_PARM-allyes	2004-11-29 14:48:41.649515816 -0800
+++ 25-akpm/drivers/mtd/devices/blkmtd.c	2004-11-29 14:48:42.141441032 -0800
@@ -68,13 +68,13 @@ static int sync;
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Simon Evans <spse@secret.org.uk>");
 MODULE_DESCRIPTION("Emulate an MTD using a block device");
-MODULE_PARM(device, "1-4s");
+module_param_array(device, charp, NULL, 0);
 MODULE_PARM_DESC(device, "block device to use");
-MODULE_PARM(erasesz, "1-4i");
+module_param_array(erasesz, int, NULL, 0);
 MODULE_PARM_DESC(erasesz, "optional erase size to use in KiB. eg 4=4KiB.");
-MODULE_PARM(ro, "1-4i");
+module_param_array(ro, bool, NULL, 0);
 MODULE_PARM_DESC(ro, "1=Read only, writes and erases cause errors");
-MODULE_PARM(sync, "i");
+module_param(sync, bool, 0);
 MODULE_PARM_DESC(sync, "1=Synchronous writes");
 
 
diff -puN drivers/mtd/devices/docprobe.c~MODULE_PARM-allyes drivers/mtd/devices/docprobe.c
--- 25/drivers/mtd/devices/docprobe.c~MODULE_PARM-allyes	2004-11-29 14:48:41.651515512 -0800
+++ 25-akpm/drivers/mtd/devices/docprobe.c	2004-11-29 14:48:42.142440880 -0800
@@ -62,7 +62,7 @@
 
 
 static unsigned long doc_config_location = CONFIG_MTD_DOCPROBE_ADDRESS;
-MODULE_PARM(doc_config_location, "l");
+module_param(doc_config_location, ulong, 0);
 MODULE_PARM_DESC(doc_config_location, "Physical memory address at which to probe for DiskOnChip");
 
 static unsigned long __initdata doc_locations[] = {
diff -puN drivers/mtd/devices/pmc551.c~MODULE_PARM-allyes drivers/mtd/devices/pmc551.c
--- 25/drivers/mtd/devices/pmc551.c~MODULE_PARM-allyes	2004-11-29 14:48:41.652515360 -0800
+++ 25-akpm/drivers/mtd/devices/pmc551.c	2004-11-29 14:48:42.143440728 -0800
@@ -630,10 +630,6 @@ static u32 fixup_pmc551 (struct pci_dev 
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Mark Ferrell <mferrell@mvista.com>");
 MODULE_DESCRIPTION(PMC551_VERSION);
-MODULE_PARM(msize, "i");
-MODULE_PARM_DESC(msize, "memory size in Megabytes [1 - 1024]");
-MODULE_PARM(asize, "i");
-MODULE_PARM_DESC(asize, "aperture size, must be <= memsize [1-1024]");
 
 /*
  * Stuff these outside the ifdef so as to not bust compiled in driver support
@@ -645,6 +641,11 @@ static int asize=CONFIG_MTD_PMC551_APERT
 static int asize=0;
 #endif
 
+module_param(msize, int, 0);
+MODULE_PARM_DESC(msize, "memory size in Megabytes [1 - 1024]");
+module_param(asize, int, 0);
+MODULE_PARM_DESC(asize, "aperture size, must be <= memsize [1-1024]");
+
 /*
  * PMC551 Card Initialization
  */
diff -puN drivers/mtd/devices/slram.c~MODULE_PARM-allyes drivers/mtd/devices/slram.c
--- 25/drivers/mtd/devices/slram.c~MODULE_PARM-allyes	2004-11-29 14:48:41.653515208 -0800
+++ 25-akpm/drivers/mtd/devices/slram.c	2004-11-29 14:48:42.143440728 -0800
@@ -66,13 +66,13 @@ typedef struct slram_mtd_list {
 
 #ifdef MODULE
 static char *map[SLRAM_MAX_DEVICES_PARAMS];
+
+module_param_array(map, charp, NULL, 0);
+MODULE_PARM_DESC(map, "List of memory regions to map. \"map=<name>, <start>, <length / end>\"");
 #else
 static char *map;
 #endif
 
-MODULE_PARM(map, "3-" __MODULE_STRING(SLRAM_MAX_DEVICES_PARAMS) "s");
-MODULE_PARM_DESC(map, "List of memory regions to map. \"map=<name>, <start>, <length / end>\"");
-
 static slram_mtd_list_t *slram_mtdlist = NULL;
 
 static int slram_erase(struct mtd_info *, struct erase_info *);
diff -puN drivers/mtd/ftl.c~MODULE_PARM-allyes drivers/mtd/ftl.c
--- 25/drivers/mtd/ftl.c~MODULE_PARM-allyes	2004-11-29 14:48:41.655514904 -0800
+++ 25-akpm/drivers/mtd/ftl.c	2004-11-29 14:48:42.144440576 -0800
@@ -80,7 +80,7 @@
 
 /* Parameters that can be set with 'insmod' */
 static int shuffle_freq = 50;
-MODULE_PARM(shuffle_freq, "i");
+module_param(shuffle_freq, int, 0);
 
 /*====================================================================*/
 
diff -puN drivers/mtd/maps/scx200_docflash.c~MODULE_PARM-allyes drivers/mtd/maps/scx200_docflash.c
--- 25/drivers/mtd/maps/scx200_docflash.c~MODULE_PARM-allyes	2004-11-29 14:48:41.656514752 -0800
+++ 25-akpm/drivers/mtd/maps/scx200_docflash.c	2004-11-29 14:48:42.145440424 -0800
@@ -29,20 +29,20 @@ MODULE_LICENSE("GPL");
 /* Set this to one if you want to partition the flash */
 #define PARTITION 1
 
-MODULE_PARM(probe, "i");
-MODULE_PARM_DESC(probe, "Probe for a BIOS mapping");
-MODULE_PARM(size, "i");
-MODULE_PARM_DESC(size, "Size of the flash mapping");
-MODULE_PARM(width, "i");
-MODULE_PARM_DESC(width, "Data width of the flash mapping (8/16)");
-MODULE_PARM(flashtype, "s");
-MODULE_PARM_DESC(flashtype, "Type of MTD probe to do");
-
 static int probe = 0;		/* Don't autoprobe */
 static unsigned size = 0x1000000; /* 16 MiB the whole ISA address space */
 static unsigned width = 8;	/* Default to 8 bits wide */
 static char *flashtype = "cfi_probe";
 
+module_param(probe, int, 0);
+MODULE_PARM_DESC(probe, "Probe for a BIOS mapping");
+module_param(size, int, 0);
+MODULE_PARM_DESC(size, "Size of the flash mapping");
+module_param(width, int, 0);
+MODULE_PARM_DESC(width, "Data width of the flash mapping (8/16)");
+module_param(flashtype, charp, 0);
+MODULE_PARM_DESC(flashtype, "Type of MTD probe to do");
+
 static struct resource docmem = {
 	.flags = IORESOURCE_MEM,
 	.name  = "NatSemi SCx200 DOCCS Flash",
diff -puN drivers/net/3c509.c~MODULE_PARM-allyes drivers/net/3c509.c
--- 25/drivers/net/3c509.c~MODULE_PARM-allyes	2004-11-29 14:48:41.658514448 -0800
+++ 25-akpm/drivers/net/3c509.c	2004-11-29 14:48:42.146440272 -0800
@@ -1554,16 +1554,16 @@ static int debug = -1;
 static int irq[] = {-1, -1, -1, -1, -1, -1, -1, -1};
 static int xcvr[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
 
-MODULE_PARM(debug,"i");
-MODULE_PARM(irq,"1-8i");
-MODULE_PARM(xcvr,"1-12i");
-MODULE_PARM(max_interrupt_work, "i");
+module_param(debug,int, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(xcvr, int, NULL, 0);
+module_param(max_interrupt_work, int, 0);
 MODULE_PARM_DESC(debug, "debug level (0-6)");
 MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)");
 MODULE_PARM_DESC(xcvr,"transceiver(s) (0=internal, 1=external)");
 MODULE_PARM_DESC(max_interrupt_work, "maximum events handled per interrupt");
 #if defined(__ISAPNP__)
-MODULE_PARM(nopnp, "i");
+module_param(nopnp, int, 0);
 MODULE_PARM_DESC(nopnp, "disable ISA PnP support (0-1)");
 MODULE_DEVICE_TABLE(isapnp, el3_isapnp_adapters);
 #endif	/* __ISAPNP__ */
diff -puN drivers/net/3c515.c~MODULE_PARM-allyes drivers/net/3c515.c
--- 25/drivers/net/3c515.c~MODULE_PARM-allyes	2004-11-29 14:48:41.659514296 -0800
+++ 25-akpm/drivers/net/3c515.c	2004-11-29 14:48:42.148439968 -0800
@@ -87,15 +87,6 @@ MODULE_AUTHOR("Donald Becker <becker@scy
 MODULE_DESCRIPTION("3Com 3c515 Corkscrew driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(debug, "i");
-MODULE_PARM(options, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(rx_copybreak, "i");
-MODULE_PARM(max_interrupt_work, "i");
-MODULE_PARM_DESC(debug, "3c515 debug level (0-6)");
-MODULE_PARM_DESC(options, "3c515: Bits 0-2: media type, bit 3: full duplex, bit 4: bus mastering");
-MODULE_PARM_DESC(rx_copybreak, "3c515 copy breakpoint for copy-only-tiny-frames");
-MODULE_PARM_DESC(max_interrupt_work, "3c515 maximum events handled per interrupt");
-
 /* "Knobs" for adjusting internal parameters. */
 /* Put out somewhat more debugging messages. (0 - no msg, 1 minimal msgs). */
 #define DRIVER_DEBUG 1
@@ -409,6 +400,16 @@ static int options[MAX_UNITS] = { -1, -1
 
 #ifdef MODULE
 static int debug = -1;
+
+module_param(debug, int, 0);
+module_param_array(options, int, NULL, 0);
+module_param(rx_copybreak, int, 0);
+module_param(max_interrupt_work, int, 0);
+MODULE_PARM_DESC(debug, "3c515 debug level (0-6)");
+MODULE_PARM_DESC(options, "3c515: Bits 0-2: media type, bit 3: full duplex, bit 4: bus mastering");
+MODULE_PARM_DESC(rx_copybreak, "3c515 copy breakpoint for copy-only-tiny-frames");
+MODULE_PARM_DESC(max_interrupt_work, "3c515 maximum events handled per interrupt");
+
 /* A list of all installed Vortex devices, for removing the driver module. */
 /* we will need locking (and refcounting) if we ever use it for more */
 static LIST_HEAD(root_corkscrew_dev);
diff -puN drivers/net/3c59x.c~MODULE_PARM-allyes drivers/net/3c59x.c
--- 25/drivers/net/3c59x.c~MODULE_PARM-allyes	2004-11-29 14:48:41.661513992 -0800
+++ 25-akpm/drivers/net/3c59x.c	2004-11-29 14:48:42.151439512 -0800
@@ -279,36 +279,6 @@ MODULE_DESCRIPTION("3Com 3c59x/3c9xx eth
 MODULE_LICENSE("GPL");
 MODULE_VERSION(DRV_VERSION);
 
-MODULE_PARM(debug, "i");
-MODULE_PARM(global_options, "i");
-MODULE_PARM(options, "1-" __MODULE_STRING(8) "i");
-MODULE_PARM(global_full_duplex, "i");
-MODULE_PARM(full_duplex, "1-" __MODULE_STRING(8) "i");
-MODULE_PARM(hw_checksums, "1-" __MODULE_STRING(8) "i");
-MODULE_PARM(flow_ctrl, "1-" __MODULE_STRING(8) "i");
-MODULE_PARM(global_enable_wol, "i");
-MODULE_PARM(enable_wol, "1-" __MODULE_STRING(8) "i");
-MODULE_PARM(rx_copybreak, "i");
-MODULE_PARM(max_interrupt_work, "i");
-MODULE_PARM(compaq_ioaddr, "i");
-MODULE_PARM(compaq_irq, "i");
-MODULE_PARM(compaq_device_id, "i");
-MODULE_PARM(watchdog, "i");
-MODULE_PARM_DESC(debug, "3c59x debug level (0-6)");
-MODULE_PARM_DESC(options, "3c59x: Bits 0-3: media type, bit 4: bus mastering, bit 9: full duplex");
-MODULE_PARM_DESC(global_options, "3c59x: same as options, but applies to all NICs if options is unset");
-MODULE_PARM_DESC(full_duplex, "3c59x full duplex setting(s) (1)");
-MODULE_PARM_DESC(global_full_duplex, "3c59x: same as full_duplex, but applies to all NICs if options is unset");
-MODULE_PARM_DESC(hw_checksums, "3c59x Hardware checksum checking by adapter(s) (0-1)");
-MODULE_PARM_DESC(flow_ctrl, "3c59x 802.3x flow control usage (PAUSE only) (0-1)");
-MODULE_PARM_DESC(enable_wol, "3c59x: Turn on Wake-on-LAN for adapter(s) (0-1)");
-MODULE_PARM_DESC(global_enable_wol, "3c59x: same as enable_wol, but applies to all NICs if options is unset");
-MODULE_PARM_DESC(rx_copybreak, "3c59x copy breakpoint for copy-only-tiny-frames");
-MODULE_PARM_DESC(max_interrupt_work, "3c59x maximum events handled per interrupt");
-MODULE_PARM_DESC(compaq_ioaddr, "3c59x PCI I/O base address (Compaq BIOS problem workaround)");
-MODULE_PARM_DESC(compaq_irq, "3c59x PCI IRQ number (Compaq BIOS problem workaround)");
-MODULE_PARM_DESC(compaq_device_id, "3c59x PCI device ID (Compaq BIOS problem workaround)");
-MODULE_PARM_DESC(watchdog, "3c59x transmit timeout in milliseconds");
 
 /* Operational parameter that usually are not changed. */
 
@@ -947,6 +917,37 @@ static struct net_device *compaq_net_dev
 
 static int vortex_cards_found;
 
+module_param(debug, int, 0);
+module_param(global_options, int, 0);
+module_param_array(options, int, NULL, 0);
+module_param(global_full_duplex, int, 0);
+module_param_array(full_duplex, int, NULL, 0);
+module_param_array(hw_checksums, int, NULL, 0);
+module_param_array(flow_ctrl, int, NULL, 0);
+module_param(global_enable_wol, int, 0);
+module_param_array(enable_wol, int, NULL, 0);
+module_param(rx_copybreak, int, 0);
+module_param(max_interrupt_work, int, 0);
+module_param(compaq_ioaddr, int, 0);
+module_param(compaq_irq, int, 0);
+module_param(compaq_device_id, int, 0);
+module_param(watchdog, int, 0);
+MODULE_PARM_DESC(debug, "3c59x debug level (0-6)");
+MODULE_PARM_DESC(options, "3c59x: Bits 0-3: media type, bit 4: bus mastering, bit 9: full duplex");
+MODULE_PARM_DESC(global_options, "3c59x: same as options, but applies to all NICs if options is unset");
+MODULE_PARM_DESC(full_duplex, "3c59x full duplex setting(s) (1)");
+MODULE_PARM_DESC(global_full_duplex, "3c59x: same as full_duplex, but applies to all NICs if options is unset");
+MODULE_PARM_DESC(hw_checksums, "3c59x Hardware checksum checking by adapter(s) (0-1)");
+MODULE_PARM_DESC(flow_ctrl, "3c59x 802.3x flow control usage (PAUSE only) (0-1)");
+MODULE_PARM_DESC(enable_wol, "3c59x: Turn on Wake-on-LAN for adapter(s) (0-1)");
+MODULE_PARM_DESC(global_enable_wol, "3c59x: same as enable_wol, but applies to all NICs if options is unset");
+MODULE_PARM_DESC(rx_copybreak, "3c59x copy breakpoint for copy-only-tiny-frames");
+MODULE_PARM_DESC(max_interrupt_work, "3c59x maximum events handled per interrupt");
+MODULE_PARM_DESC(compaq_ioaddr, "3c59x PCI I/O base address (Compaq BIOS problem workaround)");
+MODULE_PARM_DESC(compaq_irq, "3c59x PCI IRQ number (Compaq BIOS problem workaround)");
+MODULE_PARM_DESC(compaq_device_id, "3c59x PCI device ID (Compaq BIOS problem workaround)");
+MODULE_PARM_DESC(watchdog, "3c59x transmit timeout in milliseconds");
+
 #ifdef CONFIG_NET_POLL_CONTROLLER
 static void poll_vortex(struct net_device *dev)
 {
diff -puN drivers/net/82596.c~MODULE_PARM-allyes drivers/net/82596.c
--- 25/drivers/net/82596.c~MODULE_PARM-allyes	2004-11-29 14:48:41.662513840 -0800
+++ 25-akpm/drivers/net/82596.c	2004-11-29 14:48:42.152439360 -0800
@@ -150,7 +150,7 @@ MODULE_AUTHOR("Richard Hirst");
 MODULE_DESCRIPTION("i82596 driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(i596_debug, "i");
+module_param(i596_debug, int, 0);
 MODULE_PARM_DESC(i596_debug, "i82596 debug mask");
 
 
@@ -1572,13 +1572,13 @@ static void set_multicast_list(struct ne
 static struct net_device *dev_82596;
 
 #ifdef ENABLE_APRICOT
-MODULE_PARM(irq, "i");
+module_param(irq, int, 0);
 MODULE_PARM_DESC(irq, "Apricot IRQ number");
 #endif
 
-MODULE_PARM(debug, "i");
-MODULE_PARM_DESC(debug, "i82596 debug mask");
 static int debug = -1;
+module_param(debug, int, 0);
+MODULE_PARM_DESC(debug, "i82596 debug mask");
 
 int init_module(void)
 {
diff -puN drivers/net/amd8111e.c~MODULE_PARM-allyes drivers/net/amd8111e.c
--- 25/drivers/net/amd8111e.c~MODULE_PARM-allyes	2004-11-29 14:48:41.664513536 -0800
+++ 25-akpm/drivers/net/amd8111e.c	2004-11-29 14:48:42.154439056 -0800
@@ -105,11 +105,11 @@ Revision History:
 MODULE_AUTHOR("Advanced Micro Devices, Inc.");
 MODULE_DESCRIPTION ("AMD8111 based 10/100 Ethernet Controller. Driver Version 3.0.3");
 MODULE_LICENSE("GPL");
-MODULE_PARM(speed_duplex, "1-" __MODULE_STRING (MAX_UNITS) "i");
+module_param_array(speed_duplex, int, NULL, 0);
 MODULE_PARM_DESC(speed_duplex, "Set device speed and duplex modes, 0: Auto Negotitate, 1: 10Mbps Half Duplex, 2: 10Mbps Full Duplex, 3: 100Mbps Half Duplex, 4: 100Mbps Full Duplex");
-MODULE_PARM(coalesce, "1-" __MODULE_STRING(MAX_UNITS) "i");
+module_param_array(coalesce, bool, NULL, 0);
 MODULE_PARM_DESC(coalesce, "Enable or Disable interrupt coalescing, 1: Enable, 0: Disable");
-MODULE_PARM(dynamic_ipg, "1-" __MODULE_STRING(MAX_UNITS) "i");
+module_param_array(dynamic_ipg, bool, NULL, 0);
 MODULE_PARM_DESC(dynamic_ipg, "Enable or Disable dynamic IPG, 1: Enable, 0: Disable");
 
 static struct pci_device_id amd8111e_pci_tbl[] = {
diff -puN drivers/net/appletalk/ipddp.c~MODULE_PARM-allyes drivers/net/appletalk/ipddp.c
--- 25/drivers/net/appletalk/ipddp.c~MODULE_PARM-allyes	2004-11-29 14:48:41.666513232 -0800
+++ 25-akpm/drivers/net/appletalk/ipddp.c	2004-11-29 14:48:42.155438904 -0800
@@ -289,7 +289,7 @@ static int ipddp_ioctl(struct net_device
 static struct net_device *dev_ipddp;
 
 MODULE_LICENSE("GPL");
-MODULE_PARM(ipddp_mode, "i");
+module_param(ipddp_mode, int, 0);
 
 static int __init ipddp_init_module(void)
 {
diff -puN drivers/net/arcnet/arcnet.c~MODULE_PARM-allyes drivers/net/arcnet/arcnet.c
--- 25/drivers/net/arcnet/arcnet.c~MODULE_PARM-allyes	2004-11-29 14:48:41.667513080 -0800
+++ 25-akpm/drivers/net/arcnet/arcnet.c	2004-11-29 14:48:42.156438752 -0800
@@ -110,7 +110,7 @@ static struct net_device_stats *arcnet_g
 static int go_tx(struct net_device *dev);
 
 static int debug = ARCNET_DEBUG;
-MODULE_PARM(debug, "i");
+module_param(debug, int, 0);
 MODULE_LICENSE("GPL");
 
 static int __init arcnet_init(void)
diff -puN drivers/net/atp.c~MODULE_PARM-allyes drivers/net/atp.c
--- 25/drivers/net/atp.c~MODULE_PARM-allyes	2004-11-29 14:48:41.669512776 -0800
+++ 25-akpm/drivers/net/atp.c	2004-11-29 14:48:42.157438600 -0800
@@ -153,11 +153,11 @@ MODULE_AUTHOR("Donald Becker <becker@scy
 MODULE_DESCRIPTION("RealTek RTL8002/8012 parallel port Ethernet driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(max_interrupt_work, "i");
-MODULE_PARM(debug, "i");
-MODULE_PARM(io, "1-" __MODULE_STRING(NUM_UNITS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(NUM_UNITS) "i");
-MODULE_PARM(xcvr, "1-" __MODULE_STRING(NUM_UNITS) "i");
+module_param(max_interrupt_work, int, 0);
+module_param(debug, int, 0);
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param_array(xcvr, int, NULL, 0);
 MODULE_PARM_DESC(max_interrupt_work, "ATP maximum events handled per interrupt");
 MODULE_PARM_DESC(debug, "ATP debug level (0-7)");
 MODULE_PARM_DESC(io, "ATP I/O base address(es)");
diff -puN drivers/net/bonding/bond_main.c~MODULE_PARM-allyes drivers/net/bonding/bond_main.c
--- 25/drivers/net/bonding/bond_main.c~MODULE_PARM-allyes	2004-11-29 14:48:41.671512472 -0800
+++ 25-akpm/drivers/net/bonding/bond_main.c	2004-11-29 14:48:42.160438144 -0800
@@ -540,25 +540,25 @@ static char *lacp_rate	= NULL;
 static int arp_interval = BOND_LINK_ARP_INTERV;
 static char *arp_ip_target[BOND_MAX_ARP_TARGETS] = { NULL, };
 
-MODULE_PARM(max_bonds, "i");
+module_param(max_bonds, int, 0);
 MODULE_PARM_DESC(max_bonds, "Max number of bonded devices");
-MODULE_PARM(miimon, "i");
+module_param(miimon, int, 0);
 MODULE_PARM_DESC(miimon, "Link check interval in milliseconds");
-MODULE_PARM(updelay, "i");
+module_param(updelay, int, 0);
 MODULE_PARM_DESC(updelay, "Delay before considering link up, in milliseconds");
-MODULE_PARM(downdelay, "i");
+module_param(downdelay, int, 0);
 MODULE_PARM_DESC(downdelay, "Delay before considering link down, in milliseconds");
-MODULE_PARM(use_carrier, "i");
+module_param(use_carrier, int, 0);
 MODULE_PARM_DESC(use_carrier, "Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default)");
-MODULE_PARM(mode, "s");
+module_param(mode, charp, 0);
 MODULE_PARM_DESC(mode, "Mode of operation : 0 for round robin, 1 for active-backup, 2 for xor");
-MODULE_PARM(primary, "s");
+module_param(primary, charp, 0);
 MODULE_PARM_DESC(primary, "Primary network device to use");
-MODULE_PARM(lacp_rate, "s");
+module_param(lacp_rate, charp, 0);
 MODULE_PARM_DESC(lacp_rate, "LACPDU tx rate to request from 802.3ad partner (slow/fast)");
-MODULE_PARM(arp_interval, "i");
+module_param(arp_interval, int, 0);
 MODULE_PARM_DESC(arp_interval, "arp interval in milliseconds");
-MODULE_PARM(arp_ip_target, "1-" __MODULE_STRING(BOND_MAX_ARP_TARGETS) "s");
+module_param_array(arp_ip_target, charp, NULL, 0);
 MODULE_PARM_DESC(arp_ip_target, "arp targets in n.n.n.n form");
 
 /*----------------------------- Global variables ----------------------------*/
diff -puN drivers/net/de600.c~MODULE_PARM-allyes drivers/net/de600.c
--- 25/drivers/net/de600.c~MODULE_PARM-allyes	2004-11-29 14:48:41.672512320 -0800
+++ 25-akpm/drivers/net/de600.c	2004-11-29 14:48:42.161437992 -0800
@@ -75,15 +75,15 @@ static const char version[] = "de600.c: 
 #include "de600.h"
 
 static unsigned int de600_debug = DE600_DEBUG;
-MODULE_PARM(de600_debug, "i");
+module_param(de600_debug, int, 0);
 MODULE_PARM_DESC(de600_debug, "DE-600 debug level (0-2)");
 
 static unsigned int check_lost = 1;
-MODULE_PARM(check_lost, "i");
+module_param(check_lost, bool, 0);
 MODULE_PARM_DESC(check_lost, "If set then check for unplugged de600");
 
 static unsigned int delay_time = 10;
-MODULE_PARM(delay_time, "i");
+module_param(delay_time, int, 0);
 MODULE_PARM_DESC(delay_time, "DE-600 deley on I/O in microseconds");
 
 
diff -puN drivers/net/de620.c~MODULE_PARM-allyes drivers/net/de620.c
--- 25/drivers/net/de620.c~MODULE_PARM-allyes	2004-11-29 14:48:41.673512168 -0800
+++ 25-akpm/drivers/net/de620.c	2004-11-29 14:48:42.162437840 -0800
@@ -190,12 +190,12 @@ static unsigned int de620_debug = DE620_
 
 static spinlock_t de620_lock;
 
-MODULE_PARM(bnc, "i");
-MODULE_PARM(utp, "i");
-MODULE_PARM(io, "i");
-MODULE_PARM(irq, "i");
-MODULE_PARM(clone, "i");
-MODULE_PARM(de620_debug, "i");
+module_param(bnc, int, 0);
+module_param(utp, int, 0);
+module_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(clone, int, 0);
+module_param(de620_debug, int, 0);
 MODULE_PARM_DESC(bnc, "DE-620 set BNC medium (0-1)");
 MODULE_PARM_DESC(utp, "DE-620 set UTP medium (0-1)");
 MODULE_PARM_DESC(io, "DE-620 I/O base address,required");
diff -puN drivers/net/dgrs.c~MODULE_PARM-allyes drivers/net/dgrs.c
--- 25/drivers/net/dgrs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.675511864 -0800
+++ 25-akpm/drivers/net/dgrs.c	2004-11-29 14:48:42.163437688 -0800
@@ -1534,14 +1534,14 @@ static int	iptrap[4] = { -1 };
 static __u32	ipxnet = -1;
 static int	nicmode = -1;
 
-MODULE_PARM(debug, "i");
-MODULE_PARM(dma, "i");
-MODULE_PARM(hashexpire, "i");
-MODULE_PARM(spantree, "i");
-MODULE_PARM(ipaddr, "1-4i");
-MODULE_PARM(iptrap, "1-4i");
-MODULE_PARM(ipxnet, "i");
-MODULE_PARM(nicmode, "i");
+module_param(debug, int, 0);
+module_param(dma, int, 0);
+module_param(hashexpire, int, 0);
+module_param(spantree, int, 0);
+module_param_array(ipaddr, int, NULL, 0);
+module_param_array(iptrap, int, NULL, 0);
+module_param(ipxnet, int, 0);
+module_param(nicmode, int, 0);
 MODULE_PARM_DESC(debug, "Digi RightSwitch enable debugging (0-1)");
 MODULE_PARM_DESC(dma, "Digi RightSwitch enable BM DMA (0-1)");
 MODULE_PARM_DESC(nicmode, "Digi RightSwitch operating mode (1: switch, 2: multi-NIC)");
diff -puN drivers/net/dl2k.c~MODULE_PARM-allyes drivers/net/dl2k.c
--- 25/drivers/net/dl2k.c~MODULE_PARM-allyes	2004-11-29 14:48:41.676511712 -0800
+++ 25-akpm/drivers/net/dl2k.c	2004-11-29 14:48:42.165437384 -0800
@@ -72,16 +72,16 @@ static int tx_coalesce=16;	/* HW xmit co
 MODULE_AUTHOR ("Edward Peng");
 MODULE_DESCRIPTION ("D-Link DL2000-based Gigabit Ethernet Adapter");
 MODULE_LICENSE("GPL");
-MODULE_PARM (mtu, "1-" __MODULE_STRING (MAX_UNITS) "i");
-MODULE_PARM (media, "1-" __MODULE_STRING (MAX_UNITS) "s");
-MODULE_PARM (vlan, "1-" __MODULE_STRING (MAX_UNITS) "i");
-MODULE_PARM (jumbo, "1-" __MODULE_STRING (MAX_UNITS) "i");
-MODULE_PARM (tx_flow, "i");
-MODULE_PARM (rx_flow, "i");
-MODULE_PARM (copy_thresh, "i");
-MODULE_PARM (rx_coalesce, "i");	/* Rx frame count each interrupt */
-MODULE_PARM (rx_timeout, "i");	/* Rx DMA wait time in 64ns increments */
-MODULE_PARM (tx_coalesce, "i"); /* HW xmit count each TxDMAComplete */
+module_param_array(mtu, int, NULL, 0);
+module_param_array(media, charp, NULL, 0);
+module_param_array(vlan, int, NULL, 0);
+module_param_array(jumbo, int, NULL, 0);
+module_param(tx_flow, int, 0);
+module_param(rx_flow, int, 0);
+module_param(copy_thresh, int, 0);
+module_param(rx_coalesce, int, 0);	/* Rx frame count each interrupt */
+module_param(rx_timeout, int, 0);	/* Rx DMA wait time in 64ns increments */
+module_param(tx_coalesce, int, 0); /* HW xmit count each TxDMAComplete */
 
 
 /* Enable the default interrupts */
diff -puN drivers/net/eepro100.c~MODULE_PARM-allyes drivers/net/eepro100.c
--- 25/drivers/net/eepro100.c~MODULE_PARM-allyes	2004-11-29 14:48:41.678511408 -0800
+++ 25-akpm/drivers/net/eepro100.c	2004-11-29 14:48:42.167437080 -0800
@@ -126,18 +126,18 @@ static int debug = -1;
 MODULE_AUTHOR("Maintainer: Andrey V. Savochkin <saw@saw.sw.com.sg>");
 MODULE_DESCRIPTION("Intel i82557/i82558/i82559 PCI EtherExpressPro driver");
 MODULE_LICENSE("GPL");
-MODULE_PARM(use_io, "i");
-MODULE_PARM(debug, "i");
-MODULE_PARM(options, "1-" __MODULE_STRING(8) "i");
-MODULE_PARM(full_duplex, "1-" __MODULE_STRING(8) "i");
-MODULE_PARM(congenb, "i");
-MODULE_PARM(txfifo, "i");
-MODULE_PARM(rxfifo, "i");
-MODULE_PARM(txdmacount, "i");
-MODULE_PARM(rxdmacount, "i");
-MODULE_PARM(rx_copybreak, "i");
-MODULE_PARM(max_interrupt_work, "i");
-MODULE_PARM(multicast_filter_limit, "i");
+module_param(use_io, int, 0);
+module_param(debug, int, 0);
+module_param_array(options, int, NULL, 0);
+module_param_array(full_duplex, int, NULL, 0);
+module_param(congenb, int, 0);
+module_param(txfifo, int, 0);
+module_param(rxfifo, int, 0);
+module_param(txdmacount, int, 0);
+module_param(rxdmacount, int, 0);
+module_param(rx_copybreak, int, 0);
+module_param(max_interrupt_work, int, 0);
+module_param(multicast_filter_limit, int, 0);
 MODULE_PARM_DESC(debug, "debug level (0-6)");
 MODULE_PARM_DESC(options, "Bits 0-3: transceiver type, bit 4: full duplex, bit 5: 100Mbps");
 MODULE_PARM_DESC(full_duplex, "full duplex setting(s) (1)");
diff -puN drivers/net/epic100.c~MODULE_PARM-allyes drivers/net/epic100.c
--- 25/drivers/net/epic100.c~MODULE_PARM-allyes	2004-11-29 14:48:41.680511104 -0800
+++ 25-akpm/drivers/net/epic100.c	2004-11-29 14:48:42.169436776 -0800
@@ -149,10 +149,10 @@ MODULE_AUTHOR("Donald Becker <becker@scy
 MODULE_DESCRIPTION("SMC 83c170 EPIC series Ethernet driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(debug, "i");
-MODULE_PARM(rx_copybreak, "i");
-MODULE_PARM(options, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(full_duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
+module_param(debug, int, 0);
+module_param(rx_copybreak, int, 0);
+module_param_array(options, int, NULL, 0);
+module_param_array(full_duplex, int, NULL, 0);
 MODULE_PARM_DESC(debug, "EPIC/100 debug level (0-5)");
 MODULE_PARM_DESC(options, "EPIC/100: Bits 0-3: media type, bit 4: full duplex");
 MODULE_PARM_DESC(rx_copybreak, "EPIC/100 copy breakpoint for copy-only-tiny-frames");
diff -puN drivers/net/fealnx.c~MODULE_PARM-allyes drivers/net/fealnx.c
--- 25/drivers/net/fealnx.c~MODULE_PARM-allyes	2004-11-29 14:48:41.681510952 -0800
+++ 25-akpm/drivers/net/fealnx.c	2004-11-29 14:48:42.170436624 -0800
@@ -110,13 +110,13 @@ KERN_INFO DRV_NAME ".c:v" DRV_VERSION " 
 MODULE_AUTHOR("Myson or whoever");
 MODULE_DESCRIPTION("Myson MTD-8xx 100/10M Ethernet PCI Adapter Driver");
 MODULE_LICENSE("GPL");
-MODULE_PARM(max_interrupt_work, "i");
+module_param(max_interrupt_work, int, 0);
 //MODULE_PARM(min_pci_latency, "i");
-MODULE_PARM(debug, "i");
-MODULE_PARM(rx_copybreak, "i");
-MODULE_PARM(multicast_filter_limit, "i");
-MODULE_PARM(options, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(full_duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
+module_param(debug, int, 0);
+module_param(rx_copybreak, int, 0);
+module_param(multicast_filter_limit, int, 0);
+module_param_array(options, int, NULL, 0);
+module_param_array(full_duplex, int, NULL, 0);
 MODULE_PARM_DESC(max_interrupt_work, "fealnx maximum events handled per interrupt");
 MODULE_PARM_DESC(debug, "fealnx enable debugging (0-1)");
 MODULE_PARM_DESC(rx_copybreak, "fealnx copy breakpoint for copy-only-tiny-frames");
diff -puN drivers/net/hamachi.c~MODULE_PARM-allyes drivers/net/hamachi.c
--- 25/drivers/net/hamachi.c~MODULE_PARM-allyes	2004-11-29 14:48:41.683510648 -0800
+++ 25-akpm/drivers/net/hamachi.c	2004-11-29 14:48:42.172436320 -0800
@@ -518,21 +518,21 @@ MODULE_AUTHOR("Donald Becker <becker@scy
 MODULE_DESCRIPTION("Packet Engines 'Hamachi' GNIC-II Gigabit Ethernet driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(max_interrupt_work, "i");
-MODULE_PARM(mtu, "i");
-MODULE_PARM(debug, "i");
-MODULE_PARM(min_rx_pkt, "i");
-MODULE_PARM(max_rx_gap, "i");
-MODULE_PARM(max_rx_latency, "i");
-MODULE_PARM(min_tx_pkt, "i");
-MODULE_PARM(max_tx_gap, "i");
-MODULE_PARM(max_tx_latency, "i");
-MODULE_PARM(rx_copybreak, "i");
-MODULE_PARM(rx_params, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(tx_params, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(options, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(full_duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(force32, "i");
+module_param(max_interrupt_work, int, 0);
+module_param(mtu, int, 0);
+module_param(debug, int, 0);
+module_param(min_rx_pkt, int, 0);
+module_param(max_rx_gap, int, 0);
+module_param(max_rx_latency, int, 0);
+module_param(min_tx_pkt, int, 0);
+module_param(max_tx_gap, int, 0);
+module_param(max_tx_latency, int, 0);
+module_param(rx_copybreak, int, 0);
+module_param_array(rx_params, int, NULL, 0);
+module_param_array(tx_params, int, NULL, 0);
+module_param_array(options, int, NULL, 0);
+module_param_array(full_duplex, int, NULL, 0);
+module_param(force32, int, 0);
 MODULE_PARM_DESC(max_interrupt_work, "GNIC-II maximum events handled per interrupt");
 MODULE_PARM_DESC(mtu, "GNIC-II MTU (all boards)");
 MODULE_PARM_DESC(debug, "GNIC-II debug level (0-7)");
diff -puN drivers/net/hamradio/baycom_epp.c~MODULE_PARM-allyes drivers/net/hamradio/baycom_epp.c
--- 25/drivers/net/hamradio/baycom_epp.c~MODULE_PARM-allyes	2004-11-29 14:48:41.685510344 -0800
+++ 25-akpm/drivers/net/hamradio/baycom_epp.c	2004-11-29 14:48:42.173436168 -0800
@@ -1294,9 +1294,9 @@ static void baycom_probe(struct net_devi
 static const char *mode[NR_PORTS] = { "", };
 static int iobase[NR_PORTS] = { 0x378, };
 
-MODULE_PARM(mode, "1-" __MODULE_STRING(NR_PORTS) "s");
+module_param_array(mode, charp, NULL, 0);
 MODULE_PARM_DESC(mode, "baycom operating mode");
-MODULE_PARM(iobase, "1-" __MODULE_STRING(NR_PORTS) "i");
+module_param_array(iobase, int, NULL, 0);
 MODULE_PARM_DESC(iobase, "baycom io base address");
 
 MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
diff -puN drivers/net/hamradio/baycom_par.c~MODULE_PARM-allyes drivers/net/hamradio/baycom_par.c
--- 25/drivers/net/hamradio/baycom_par.c~MODULE_PARM-allyes	2004-11-29 14:48:41.686510192 -0800
+++ 25-akpm/drivers/net/hamradio/baycom_par.c	2004-11-29 14:48:42.174436016 -0800
@@ -480,9 +480,9 @@ static int baycom_ioctl(struct net_devic
 static const char *mode[NR_PORTS] = { "picpar", };
 static int iobase[NR_PORTS] = { 0x378, };
 
-MODULE_PARM(mode, "1-" __MODULE_STRING(NR_PORTS) "s");
+module_param_array(mode, charp, NULL, 0);
 MODULE_PARM_DESC(mode, "baycom operating mode; eg. par96 or picpar");
-MODULE_PARM(iobase, "1-" __MODULE_STRING(NR_PORTS) "i");
+module_param_array(iobase, int, NULL, 0);
 MODULE_PARM_DESC(iobase, "baycom io base address");
 
 MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
diff -puN drivers/net/hamradio/baycom_ser_fdx.c~MODULE_PARM-allyes drivers/net/hamradio/baycom_ser_fdx.c
--- 25/drivers/net/hamradio/baycom_ser_fdx.c~MODULE_PARM-allyes	2004-11-29 14:48:41.687510040 -0800
+++ 25-akpm/drivers/net/hamradio/baycom_ser_fdx.c	2004-11-29 14:48:42.175435864 -0800
@@ -599,13 +599,13 @@ static int iobase[NR_PORTS] = { 0x3f8, }
 static int irq[NR_PORTS] = { 4, };
 static int baud[NR_PORTS] = { [0 ... NR_PORTS-1] = 1200 };
 
-MODULE_PARM(mode, "1-" __MODULE_STRING(NR_PORTS) "s");
+module_param_array(mode, charp, NULL, 0);
 MODULE_PARM_DESC(mode, "baycom operating mode; * for software DCD");
-MODULE_PARM(iobase, "1-" __MODULE_STRING(NR_PORTS) "i");
+module_param_array(iobase, int, NULL, 0);
 MODULE_PARM_DESC(iobase, "baycom io base address");
-MODULE_PARM(irq, "1-" __MODULE_STRING(NR_PORTS) "i");
+module_param_array(irq, int, NULL, 0);
 MODULE_PARM_DESC(irq, "baycom irq number");
-MODULE_PARM(baud, "1-" __MODULE_STRING(NR_PORTS) "i");
+module_param_array(baud, int, NULL, 0);
 MODULE_PARM_DESC(baud, "baycom baud rate (300 to 4800)");
 
 MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
diff -puN drivers/net/hamradio/baycom_ser_hdx.c~MODULE_PARM-allyes drivers/net/hamradio/baycom_ser_hdx.c
--- 25/drivers/net/hamradio/baycom_ser_hdx.c~MODULE_PARM-allyes	2004-11-29 14:48:41.689509736 -0800
+++ 25-akpm/drivers/net/hamradio/baycom_ser_hdx.c	2004-11-29 14:48:42.176435712 -0800
@@ -638,11 +638,11 @@ static char *mode[NR_PORTS] = { "ser12*"
 static int iobase[NR_PORTS] = { 0x3f8, };
 static int irq[NR_PORTS] = { 4, };
 
-MODULE_PARM(mode, "1-" __MODULE_STRING(NR_PORTS) "s");
+module_param_array(mode, charp, NULL, 0);
 MODULE_PARM_DESC(mode, "baycom operating mode; * for software DCD");
-MODULE_PARM(iobase, "1-" __MODULE_STRING(NR_PORTS) "i");
+module_param_array(iobase, int, NULL, 0);
 MODULE_PARM_DESC(iobase, "baycom io base address");
-MODULE_PARM(irq, "1-" __MODULE_STRING(NR_PORTS) "i");
+module_param_array(irq, int, NULL, 0);
 MODULE_PARM_DESC(irq, "baycom irq number");
 
 MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
diff -puN drivers/net/hp100.c~MODULE_PARM-allyes drivers/net/hp100.c
--- 25/drivers/net/hp100.c~MODULE_PARM-allyes	2004-11-29 14:48:41.690509584 -0800
+++ 25-akpm/drivers/net/hp100.c	2004-11-29 14:48:42.178435408 -0800
@@ -224,9 +224,9 @@ static int hp100_rx_ratio = HP100_DEFAUL
 static int hp100_priority_tx = HP100_DEFAULT_PRIORITY_TX;
 static int hp100_mode = 1;
 
-MODULE_PARM(hp100_rx_ratio, "1i");
-MODULE_PARM(hp100_priority_tx, "1i");
-MODULE_PARM(hp100_mode, "1i");
+module_param(hp100_rx_ratio, int, 0);
+module_param(hp100_priority_tx, int, 0);
+module_param(hp100_mode, int, 0);
 
 /*
  *  prototypes
@@ -3005,7 +3005,7 @@ MODULE_DESCRIPTION("HP CASCADE Architect
 #define HP100_DEVICES 5
 /* Parameters set by insmod */
 static int hp100_port[HP100_DEVICES] = { 0, [1 ... (HP100_DEVICES-1)] = -1 };
-MODULE_PARM(hp100_port, "1-" __MODULE_STRING(HP100_DEVICES) "i");
+module_param_array(hp100_port, int, NULL, 0);
 
 /* List of devices */
 static struct net_device *hp100_devlist[HP100_DEVICES];
diff -puN drivers/net/irda/ali-ircc.c~MODULE_PARM-allyes drivers/net/irda/ali-ircc.c
--- 25/drivers/net/irda/ali-ircc.c~MODULE_PARM-allyes	2004-11-29 14:48:41.692509280 -0800
+++ 25-akpm/drivers/net/irda/ali-ircc.c	2004-11-29 14:48:42.180435104 -0800
@@ -2264,11 +2264,11 @@ MODULE_DESCRIPTION("ALi FIR Controller D
 MODULE_LICENSE("GPL");
 
 
-MODULE_PARM(io,  "1-4i");
+module_param_array(io, int, NULL, 0);
 MODULE_PARM_DESC(io, "Base I/O addresses");
-MODULE_PARM(irq, "1-4i");
+module_param_array(irq, int, NULL, 0);
 MODULE_PARM_DESC(irq, "IRQ lines");
-MODULE_PARM(dma, "1-4i");
+module_param_array(dma, int, NULL, 0);
 MODULE_PARM_DESC(dma, "DMA channels");
 
 module_init(ali_ircc_init);
diff -puN drivers/net/irda/donauboe.c~MODULE_PARM-allyes drivers/net/irda/donauboe.c
--- 25/drivers/net/irda/donauboe.c~MODULE_PARM-allyes	2004-11-29 14:48:41.694508976 -0800
+++ 25-akpm/drivers/net/irda/donauboe.c	2004-11-29 14:48:42.181434952 -0800
@@ -1493,11 +1493,11 @@ MODULE_DESCRIPTION("Toshiba OBOE IrDA De
 MODULE_AUTHOR("James McKenzie <james@fishsoup.dhs.org>");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM (max_baud, "i");
+module_param (max_baud, int, 0);
 MODULE_PARM_DESC(max_baud, "Maximum baud rate");
 
 #ifdef USE_PROBE
-MODULE_PARM (do_probe, "i");
+module_param (do_probe, bool, 0);
 MODULE_PARM_DESC(do_probe, "Enable/disable chip probing and self-test");
 #endif
 
diff -puN drivers/net/irda/irda-usb.c~MODULE_PARM-allyes drivers/net/irda/irda-usb.c
--- 25/drivers/net/irda/irda-usb.c~MODULE_PARM-allyes	2004-11-29 14:48:41.695508824 -0800
+++ 25-akpm/drivers/net/irda/irda-usb.c	2004-11-29 14:48:42.183434648 -0800
@@ -1593,7 +1593,7 @@ module_exit(usb_irda_cleanup);
 /*
  * Module parameters
  */
-MODULE_PARM(qos_mtt_bits, "i");
+module_param(qos_mtt_bits, int, 0);
 MODULE_PARM_DESC(qos_mtt_bits, "Minimum Turn Time");
 MODULE_AUTHOR("Roman Weissgaerber <weissg@vienna.at>, Dag Brattli <dag@brattli.net> and Jean Tourrilhes <jt@hpl.hp.com>");
 MODULE_DESCRIPTION("IrDA-USB Dongle Driver"); 
diff -puN drivers/net/irda/irtty-sir.c~MODULE_PARM-allyes drivers/net/irda/irtty-sir.c
--- 25/drivers/net/irda/irtty-sir.c~MODULE_PARM-allyes	2004-11-29 14:48:41.697508520 -0800
+++ 25-akpm/drivers/net/irda/irtty-sir.c	2004-11-29 14:48:42.183434648 -0800
@@ -39,11 +39,11 @@
 #include "sir-dev.h"
 #include "irtty-sir.h"
 
-MODULE_PARM(qos_mtt_bits, "i");
-MODULE_PARM_DESC(qos_mtt_bits, "Minimum Turn Time");
-
 static int qos_mtt_bits = 0x03;      /* 5 ms or more */
 
+module_param(qos_mtt_bits, int, 0);
+MODULE_PARM_DESC(qos_mtt_bits, "Minimum Turn Time");
+
 /* ------------------------------------------------------- */
 
 /* device configuration callbacks always invoked with irda-thread context */
diff -puN drivers/net/irda/nsc-ircc.c~MODULE_PARM-allyes drivers/net/irda/nsc-ircc.c
--- 25/drivers/net/irda/nsc-ircc.c~MODULE_PARM-allyes	2004-11-29 14:48:41.698508368 -0800
+++ 25-akpm/drivers/net/irda/nsc-ircc.c	2004-11-29 14:48:42.185434344 -0800
@@ -2206,15 +2206,15 @@ MODULE_DESCRIPTION("NSC IrDA Device Driv
 MODULE_LICENSE("GPL");
 
 
-MODULE_PARM(qos_mtt_bits, "i");
+module_param(qos_mtt_bits, int, 0);
 MODULE_PARM_DESC(qos_mtt_bits, "Minimum Turn Time");
-MODULE_PARM(io,  "1-4i");
+module_param_array(io, int, NULL, 0);
 MODULE_PARM_DESC(io, "Base I/O addresses");
-MODULE_PARM(irq, "1-4i");
+module_param_array(irq, int, NULL, 0);
 MODULE_PARM_DESC(irq, "IRQ lines");
-MODULE_PARM(dma, "1-4i");
+module_param_array(dma, int, NULL, 0);
 MODULE_PARM_DESC(dma, "DMA channels");
-MODULE_PARM(dongle_id, "i");
+module_param(dongle_id, int, 0);
 MODULE_PARM_DESC(dongle_id, "Type-id of used dongle");
 
 module_init(nsc_ircc_init);
diff -puN drivers/net/irda/smsc-ircc2.c~MODULE_PARM-allyes drivers/net/irda/smsc-ircc2.c
--- 25/drivers/net/irda/smsc-ircc2.c~MODULE_PARM-allyes	2004-11-29 14:48:41.700508064 -0800
+++ 25-akpm/drivers/net/irda/smsc-ircc2.c	2004-11-29 14:48:42.187434040 -0800
@@ -2378,15 +2378,15 @@ MODULE_AUTHOR("Daniele Peri <peri@csai.u
 MODULE_DESCRIPTION("SMC IrCC SIR/FIR controller driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(ircc_dma, "1i");
+module_param(ircc_dma, int, 0);
 MODULE_PARM_DESC(ircc_dma, "DMA channel");
-MODULE_PARM(ircc_irq, "1i");
+module_param(ircc_irq, int, 0);
 MODULE_PARM_DESC(ircc_irq, "IRQ line");
-MODULE_PARM(ircc_fir, "1-4i");
+module_param(ircc_fir, int, 0);
 MODULE_PARM_DESC(ircc_fir, "FIR Base Address");
-MODULE_PARM(ircc_sir, "1-4i");
+module_param(ircc_sir, int, 0);
 MODULE_PARM_DESC(ircc_sir, "SIR Base Address");
-MODULE_PARM(ircc_cfg, "1-4i");
+module_param(ircc_cfg, int, 0);
 MODULE_PARM_DESC(ircc_cfg, "Configuration register base address");
-MODULE_PARM(ircc_transceiver, "1i");
+module_param(ircc_transceiver, int, 0);
 MODULE_PARM_DESC(ircc_transceiver, "Transceiver type");
diff -puN drivers/net/irda/tekram-sir.c~MODULE_PARM-allyes drivers/net/irda/tekram-sir.c
--- 25/drivers/net/irda/tekram-sir.c~MODULE_PARM-allyes	2004-11-29 14:48:41.701507912 -0800
+++ 25-akpm/drivers/net/irda/tekram-sir.c	2004-11-29 14:48:42.187434040 -0800
@@ -32,9 +32,9 @@
 
 #include "sir-dev.h"
 
-MODULE_PARM(tekram_delay, "i");
-MODULE_PARM_DESC(tekram_delay, "tekram dongle write complete delay");
 static int tekram_delay = 150;		/* default is 150 ms */
+module_param(tekram_delay, int, 0);
+MODULE_PARM_DESC(tekram_delay, "tekram dongle write complete delay");
 
 static int tekram_open(struct sir_dev *);
 static int tekram_close(struct sir_dev *);
diff -puN drivers/net/irda/via-ircc.c~MODULE_PARM-allyes drivers/net/irda/via-ircc.c
--- 25/drivers/net/irda/via-ircc.c~MODULE_PARM-allyes	2004-11-29 14:48:41.703507608 -0800
+++ 25-akpm/drivers/net/irda/via-ircc.c	2004-11-29 14:48:42.188433888 -0800
@@ -73,7 +73,7 @@ static int qos_mtt_bits = 0x07;	/* 1 ms 
 static int dongle_id = 0;	/* default: probe */
 
 /* We can't guess the type of connected dongle, user *must* supply it. */
-MODULE_PARM(dongle_id, "i");
+module_param(dongle_id, int, 0);
 
 /* Max 4 instances for now */
 static struct via_ircc_cb *dev_self[] = { NULL, NULL, NULL, NULL };
diff -puN drivers/net/irda/vlsi_ir.c~MODULE_PARM-allyes drivers/net/irda/vlsi_ir.c
--- 25/drivers/net/irda/vlsi_ir.c~MODULE_PARM-allyes	2004-11-29 14:48:41.704507456 -0800
+++ 25-akpm/drivers/net/irda/vlsi_ir.c	2004-11-29 14:48:42.190433584 -0800
@@ -83,9 +83,9 @@ MODULE_DEVICE_TABLE(pci, vlsi_irda_table
  *		3: external 40MHz XCLK (HP OB-800)
  */
 
-MODULE_PARM(clksrc, "i");
-MODULE_PARM_DESC(clksrc, "clock input source selection");
 static int clksrc = 0;			/* default is 0(auto) */
+module_param(clksrc, int, 0);
+MODULE_PARM_DESC(clksrc, "clock input source selection");
 
 /*	ringsize: size of the tx and rx descriptor rings
  *		independent for tx and rx
@@ -95,9 +95,9 @@ static int clksrc = 0;			/* default is 0
  *		there should be no gain when using rings larger than 8
  */
 
-MODULE_PARM(ringsize, "1-2i");
-MODULE_PARM_DESC(ringsize, "TX, RX ring descriptor size");
 static int ringsize[] = {8,8};		/* default is tx=8 / rx=8 */
+module_param_array(ringsize, int, NULL, 0);
+MODULE_PARM_DESC(ringsize, "TX, RX ring descriptor size");
 
 /*	sirpulse: tuning of the SIR pulse width within IrPHY 1.3 limits
  *		0: very short, 1.5us (exception: 6us at 2.4 kbaud)
@@ -108,9 +108,9 @@ static int ringsize[] = {8,8};		/* defau
  *		pulse width saves more than 90% of the transmitted IR power.
  */
 
-MODULE_PARM(sirpulse, "i");
-MODULE_PARM_DESC(sirpulse, "SIR pulse width tuning");
 static int sirpulse = 1;		/* default is 3/16 bittime */
+module_param(sirpulse, int, 0);
+MODULE_PARM_DESC(sirpulse, "SIR pulse width tuning");
 
 /*	qos_mtt_bits: encoded min-turn-time value we require the peer device
  *		 to use before transmitting to us. "Type 1" (per-station)
@@ -119,9 +119,9 @@ static int sirpulse = 1;		/* default is 
  *		 pretty common HP HDLS-1100 requires 1 msec - so lets use this.
  */
 
-MODULE_PARM(qos_mtt_bits, "i");
-MODULE_PARM_DESC(qos_mtt_bits, "IrLAP bitfield representing min-turn-time");
 static int qos_mtt_bits = 0x07;		/* default is 1 ms or more */
+module_param(qos_mtt_bits, int, 0);
+MODULE_PARM_DESC(qos_mtt_bits, "IrLAP bitfield representing min-turn-time");
 
 /********************************************************/
 
diff -puN drivers/net/irda/w83977af_ir.c~MODULE_PARM-allyes drivers/net/irda/w83977af_ir.c
--- 25/drivers/net/irda/w83977af_ir.c~MODULE_PARM-allyes	2004-11-29 14:48:41.706507152 -0800
+++ 25-akpm/drivers/net/irda/w83977af_ir.c	2004-11-29 14:48:42.191433432 -0800
@@ -1355,11 +1355,11 @@ MODULE_DESCRIPTION("Winbond W83977AF IrD
 MODULE_LICENSE("GPL");
 
 
-MODULE_PARM(qos_mtt_bits, "i");
+module_param(qos_mtt_bits, int, 0);
 MODULE_PARM_DESC(qos_mtt_bits, "Mimimum Turn Time");
-MODULE_PARM(io, "1-4i");
+module_param_array(io, int, NULL, 0);
 MODULE_PARM_DESC(io, "Base I/O addresses");
-MODULE_PARM(irq, "1-4i");
+module_param_array(irq, int, NULL, 0);
 MODULE_PARM_DESC(irq, "IRQ lines");
 
 /*
diff -puN drivers/net/ixgb/ixgb_param.c~MODULE_PARM-allyes drivers/net/ixgb/ixgb_param.c
--- 25/drivers/net/ixgb/ixgb_param.c~MODULE_PARM-allyes	2004-11-29 14:48:41.707507000 -0800
+++ 25-akpm/drivers/net/ixgb/ixgb_param.c	2004-11-29 14:48:42.192433280 -0800
@@ -56,8 +56,8 @@
  */
 
 #define IXGB_PARAM(X, S) \
-static const int __devinitdata X[IXGB_MAX_NIC + 1] = IXGB_PARAM_INIT; \
-MODULE_PARM(X, "1-" __MODULE_STRING(IXGB_MAX_NIC) "i"); \
+static int __devinitdata X[IXGB_MAX_NIC + 1] = IXGB_PARAM_INIT; \
+module_param_array(X, int, NULL, 0); \
 MODULE_PARM_DESC(X, S);
 
 /* Transmit Descriptor Count
diff -puN drivers/net/lp486e.c~MODULE_PARM-allyes drivers/net/lp486e.c
--- 25/drivers/net/lp486e.c~MODULE_PARM-allyes	2004-11-29 14:48:41.709506696 -0800
+++ 25-akpm/drivers/net/lp486e.c	2004-11-29 14:48:42.193433128 -0800
@@ -1302,19 +1302,19 @@ MODULE_AUTHOR("Ard van Breemen <ard@cstm
 MODULE_DESCRIPTION("Intel Panther onboard i82596 driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(debug, "i");
-//MODULE_PARM(max_interrupt_work, "i");
-//MODULE_PARM(reverse_probe, "i");
-//MODULE_PARM(rx_copybreak, "i");
-MODULE_PARM(options, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(full_duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
-
 static struct net_device *dev_lp486e;
 static int full_duplex;
 static int options;
 static int io = IOADDR;
 static int irq = IRQ;
 
+module_param(debug, int, 0);
+//module_param(max_interrupt_work, int, 0);
+//module_param(reverse_probe, int, 0);
+//module_param(rx_copybreak, int, 0);
+module_param(options, int, 0);
+module_param(full_duplex, int, 0);
+
 static int __init lp486e_init_module(void) {
 	int err;
 	struct net_device *dev = alloc_etherdev(sizeof(struct i596_private));
diff -puN drivers/net/natsemi.c~MODULE_PARM-allyes drivers/net/natsemi.c
--- 25/drivers/net/natsemi.c~MODULE_PARM-allyes	2004-11-29 14:48:41.710506544 -0800
+++ 25-akpm/drivers/net/natsemi.c	2004-11-29 14:48:42.195432824 -0800
@@ -251,12 +251,12 @@ MODULE_AUTHOR("Donald Becker <becker@scy
 MODULE_DESCRIPTION("National Semiconductor DP8381x series PCI Ethernet driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(max_interrupt_work, "i");
-MODULE_PARM(mtu, "i");
-MODULE_PARM(debug, "i");
-MODULE_PARM(rx_copybreak, "i");
-MODULE_PARM(options, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(full_duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
+module_param(max_interrupt_work, int, 0);
+module_param(mtu, int, 0);
+module_param(debug, int, 0);
+module_param(rx_copybreak, int, 0);
+module_param_array(options, int, NULL, 0);
+module_param_array(full_duplex, int, NULL, 0);
 MODULE_PARM_DESC(max_interrupt_work, 
 	"DP8381x maximum events handled per interrupt");
 MODULE_PARM_DESC(mtu, "DP8381x MTU (all boards)");
diff -puN drivers/net/ne2k-pci.c~MODULE_PARM-allyes drivers/net/ne2k-pci.c
--- 25/drivers/net/ne2k-pci.c~MODULE_PARM-allyes	2004-11-29 14:48:41.712506240 -0800
+++ 25-akpm/drivers/net/ne2k-pci.c	2004-11-29 14:48:42.196432672 -0800
@@ -77,9 +77,9 @@ MODULE_AUTHOR("Donald Becker / Paul Gort
 MODULE_DESCRIPTION("PCI NE2000 clone driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(debug, "i");
-MODULE_PARM(options, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(full_duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
+module_param(debug, int, 0);
+module_param_array(options, int, NULL, 0);
+module_param_array(full_duplex, int, NULL, 0);
 MODULE_PARM_DESC(debug, "debug level (1-2)");
 MODULE_PARM_DESC(options, "Bit 5: full duplex");
 MODULE_PARM_DESC(full_duplex, "full duplex setting(s) (1)");
diff -puN drivers/net/pcmcia/3c574_cs.c~MODULE_PARM-allyes drivers/net/pcmcia/3c574_cs.c
--- 25/drivers/net/pcmcia/3c574_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.713506088 -0800
+++ 25-akpm/drivers/net/pcmcia/3c574_cs.c	2004-11-29 14:48:42.198432368 -0800
@@ -107,12 +107,12 @@ MODULE_AUTHOR("David Hinds <dahinds@user
 MODULE_DESCRIPTION("3Com 3c574 series PCMCIA ethernet driver");
 MODULE_LICENSE("GPL");
 
-#define INT_MODULE_PARM(n, v) static int n = v; MODULE_PARM(n, "i")
+#define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0)
 
 /* Now-standard PC card module parameters. */
 INT_MODULE_PARM(irq_mask, 0xdeb8);
 static int irq_list[4] = { -1 };
-MODULE_PARM(irq_list, "1-4i");
+module_param_array(irq_list, int, NULL, 0);
 
 /* Maximum events (Rx packets, etc.) to handle at each interrupt. */
 INT_MODULE_PARM(max_interrupt_work, 32);
diff -puN drivers/net/pcmcia/3c589_cs.c~MODULE_PARM-allyes drivers/net/pcmcia/3c589_cs.c
--- 25/drivers/net/pcmcia/3c589_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.715505784 -0800
+++ 25-akpm/drivers/net/pcmcia/3c589_cs.c	2004-11-29 14:48:42.200432064 -0800
@@ -126,7 +126,7 @@ MODULE_AUTHOR("David Hinds <dahinds@user
 MODULE_DESCRIPTION("3Com 3c589 series PCMCIA ethernet driver");
 MODULE_LICENSE("GPL");
 
-#define INT_MODULE_PARM(n, v) static int n = v; MODULE_PARM(n, "i")
+#define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0)
 
 /* Special hook for setting if_port when module is loaded */
 INT_MODULE_PARM(if_port, 0);
@@ -134,7 +134,7 @@ INT_MODULE_PARM(if_port, 0);
 /* Bit map of interrupts to choose from */
 INT_MODULE_PARM(irq_mask, 0xdeb8);
 static int irq_list[4] = { -1 };
-MODULE_PARM(irq_list, "1-4i");
+module_param_array(irq_list, int, NULL, 0);
 
 #ifdef PCMCIA_DEBUG
 INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG);
diff -puN drivers/net/pcmcia/axnet_cs.c~MODULE_PARM-allyes drivers/net/pcmcia/axnet_cs.c
--- 25/drivers/net/pcmcia/axnet_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.716505632 -0800
+++ 25-akpm/drivers/net/pcmcia/axnet_cs.c	2004-11-29 14:48:42.201431912 -0800
@@ -73,12 +73,12 @@ MODULE_AUTHOR("David Hinds <dahinds@user
 MODULE_DESCRIPTION("Asix AX88190 PCMCIA ethernet driver");
 MODULE_LICENSE("GPL");
 
-#define INT_MODULE_PARM(n, v) static int n = v; MODULE_PARM(n, "i")
+#define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0)
 
 /* Bit map of interrupts to choose from */
 INT_MODULE_PARM(irq_mask,	0xdeb8);
 static int irq_list[4] = { -1 };
-MODULE_PARM(irq_list, "1-4i");
+module_param_array(irq_list, int, NULL, 0);
 
 #ifdef PCMCIA_DEBUG
 INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG);
diff -puN drivers/net/pcmcia/com20020_cs.c~MODULE_PARM-allyes drivers/net/pcmcia/com20020_cs.c
--- 25/drivers/net/pcmcia/com20020_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.896478272 -0800
+++ 25-akpm/drivers/net/pcmcia/com20020_cs.c	2004-11-29 14:48:42.202431760 -0800
@@ -57,7 +57,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 void regdump(struct net_device *dev)
@@ -109,18 +109,18 @@ static int backplane;
 static int clockp;
 static int clockm;
 
-MODULE_PARM(node, "i");
-MODULE_PARM(timeout, "i");
-MODULE_PARM(backplane, "i");
-MODULE_PARM(clockp, "i");
-MODULE_PARM(clockm, "i");
+module_param(node, int, 0);
+module_param(timeout, int, 0);
+module_param(backplane, int, 0);
+module_param(clockp, int, 0);
+module_param(clockm, int, 0);
 
 /* Bit map of interrupts to choose from */
 static u_int irq_mask = 0xdeb8;
 static int irq_list[4] = { -1 };
 
-MODULE_PARM(irq_mask, "i");
-MODULE_PARM(irq_list, "1-4i");
+module_param(irq_mask, int, 0);
+module_param_array(irq_list, int, NULL, 0);
 MODULE_LICENSE("GPL");
 
 /*====================================================================*/
diff -puN drivers/net/pcmcia/fmvj18x_cs.c~MODULE_PARM-allyes drivers/net/pcmcia/fmvj18x_cs.c
--- 25/drivers/net/pcmcia/fmvj18x_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.897478120 -0800
+++ 25-akpm/drivers/net/pcmcia/fmvj18x_cs.c	2004-11-29 14:48:42.203431608 -0800
@@ -67,13 +67,13 @@
 MODULE_DESCRIPTION("fmvj18x and compatible PCMCIA ethernet driver");
 MODULE_LICENSE("GPL");
 
-#define INT_MODULE_PARM(n, v) static int n = v; MODULE_PARM(n, "i")
+#define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0)
 
 /* Bit map of interrupts to choose from */
 /* This means pick from 15, 14, 12, 11, 10, 9, 7, 5, 4, and 3 */
 INT_MODULE_PARM(irq_mask, 0xdeb8);
 static int irq_list[4] = { -1 };
-MODULE_PARM(irq_list, "1-4i");
+module_param_array(irq_list, int, NULL, 0);
 
 /* SRAM configuration */
 /* 0:4KB*2 TX buffer   else:8KB*2 TX buffer */
diff -puN drivers/net/pcmcia/nmclan_cs.c~MODULE_PARM-allyes drivers/net/pcmcia/nmclan_cs.c
--- 25/drivers/net/pcmcia/nmclan_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.899477816 -0800
+++ 25-akpm/drivers/net/pcmcia/nmclan_cs.c	2004-11-29 14:48:42.205431304 -0800
@@ -405,10 +405,10 @@ Parameters
 MODULE_DESCRIPTION("New Media PCMCIA ethernet driver");
 MODULE_LICENSE("GPL");
 
-#define INT_MODULE_PARM(n, v) static int n = v; MODULE_PARM(n, "i")
+#define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0)
 
 static int irq_list[4] = { -1 };
-MODULE_PARM(irq_list, "1-4i");
+module_param_array(irq_list, int, NULL, 0);
 
 /* 0=auto, 1=10baseT, 2 = 10base2, default=auto */
 INT_MODULE_PARM(if_port, 0);
diff -puN drivers/net/pcmcia/pcnet_cs.c~MODULE_PARM-allyes drivers/net/pcmcia/pcnet_cs.c
--- 25/drivers/net/pcmcia/pcnet_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.900477664 -0800
+++ 25-akpm/drivers/net/pcmcia/pcnet_cs.c	2004-11-29 14:48:42.206431152 -0800
@@ -71,7 +71,7 @@ static char *if_names[] = { "auto", "10b
 
 #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 =
 "pcnet_cs.c 1.153 2003/11/09 18:53:09 (David Hinds)";
@@ -87,12 +87,12 @@ MODULE_AUTHOR("David Hinds <dahinds@user
 MODULE_DESCRIPTION("NE2000 compatible PCMCIA ethernet driver");
 MODULE_LICENSE("GPL");
 
-#define INT_MODULE_PARM(n, v) static int n = v; MODULE_PARM(n, "i")
+#define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0)
 
 /* Bit map of interrupts to choose from */
 INT_MODULE_PARM(irq_mask,	0xdeb8);
 static int irq_list[4] = { -1 };
-MODULE_PARM(irq_list, "1-4i");
+module_param_array(irq_list, int, NULL, 0);
 
 INT_MODULE_PARM(if_port,	1);	/* Transceiver type */
 INT_MODULE_PARM(use_big_buf,	1);	/* use 64K packet buffer? */
@@ -104,7 +104,7 @@ INT_MODULE_PARM(full_duplex,	0);	/* full
 
 /* Ugh!  Let the user hardwire the hardware address for queer cards */
 static int hw_addr[6] = { 0, /* ... */ };
-MODULE_PARM(hw_addr, "6i");
+module_param_array(hw_addr, int, NULL, 0);
 
 /*====================================================================*/
 
diff -puN drivers/net/pcmcia/smc91c92_cs.c~MODULE_PARM-allyes drivers/net/pcmcia/smc91c92_cs.c
--- 25/drivers/net/pcmcia/smc91c92_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.902477360 -0800
+++ 25-akpm/drivers/net/pcmcia/smc91c92_cs.c	2004-11-29 14:48:42.208430848 -0800
@@ -66,7 +66,7 @@ static char *if_names[] = { "auto", "10b
 MODULE_DESCRIPTION("SMC 91c92 series PCMCIA ethernet driver");
 MODULE_LICENSE("GPL");
 
-#define INT_MODULE_PARM(n, v) static int n = v; MODULE_PARM(n, "i")
+#define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0)
 
 /*
   Transceiver/media type.
@@ -79,7 +79,7 @@ INT_MODULE_PARM(if_port, 0);
 /* Bit map of interrupts to choose from. */
 INT_MODULE_PARM(irq_mask, 0xdeb8);
 static int irq_list[4] = { -1 };
-MODULE_PARM(irq_list, "1-4i");
+module_param_array(irq_list, int, NULL, 0);
 
 #ifdef PCMCIA_DEBUG
 INT_MODULE_PARM(pc_debug, PCMCIA_DEBUG);
diff -puN drivers/net/pcmcia/xirc2ps_cs.c~MODULE_PARM-allyes drivers/net/pcmcia/xirc2ps_cs.c
--- 25/drivers/net/pcmcia/xirc2ps_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.904477056 -0800
+++ 25-akpm/drivers/net/pcmcia/xirc2ps_cs.c	2004-11-29 14:48:42.210430544 -0800
@@ -220,7 +220,7 @@ static char *if_names[] = { "Auto", "10B
  */
 #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(KDBG_XIRC args)
 #else
 #define DEBUG(n, args...)
@@ -255,10 +255,10 @@ MODULE_PARM(pc_debug, "i");
 MODULE_DESCRIPTION("Xircom PCMCIA ethernet driver");
 MODULE_LICENSE("Dual MPL/GPL");
 
-#define INT_MODULE_PARM(n, v) static int n = v; MODULE_PARM(n, "i")
+#define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0)
 
 static int irq_list[4] = { -1 };
-MODULE_PARM(irq_list, "1-4i");
+module_param_array(irq_list, int, NULL, 0);
 INT_MODULE_PARM(irq_mask,	0xdeb8);
 INT_MODULE_PARM(if_port,	0);
 INT_MODULE_PARM(full_duplex,	0);
diff -puN drivers/net/plip.c~MODULE_PARM-allyes drivers/net/plip.c
--- 25/drivers/net/plip.c~MODULE_PARM-allyes	2004-11-29 14:48:41.905476904 -0800
+++ 25-akpm/drivers/net/plip.c	2004-11-29 14:48:42.211430392 -0800
@@ -1242,8 +1242,8 @@ plip_ioctl(struct net_device *dev, struc
 static int parport[PLIP_MAX] = { [0 ... PLIP_MAX-1] = -1 };
 static int timid;
 
-MODULE_PARM(parport, "1-" __MODULE_STRING(PLIP_MAX) "i");
-MODULE_PARM(timid, "1i");
+module_param_array(parport, int, NULL, 0);
+module_param(timid, int, 0);
 MODULE_PARM_DESC(parport, "List of parport device numbers to use by plip");
 
 static struct net_device *dev_plip[PLIP_MAX] = { NULL, };
diff -puN drivers/net/ppp_async.c~MODULE_PARM-allyes drivers/net/ppp_async.c
--- 25/drivers/net/ppp_async.c~MODULE_PARM-allyes	2004-11-29 14:48:41.907476600 -0800
+++ 25-akpm/drivers/net/ppp_async.c	2004-11-29 14:48:42.212430240 -0800
@@ -84,7 +84,7 @@ struct asyncppp {
 #define SC_RCV_BITS	(SC_RCV_B7_1|SC_RCV_B7_0|SC_RCV_ODDP|SC_RCV_EVNP)
 
 static int flag_time = HZ;
-MODULE_PARM(flag_time, "i");
+module_param(flag_time, int, 0);
 MODULE_PARM_DESC(flag_time, "ppp_async: interval between flagged packets (in clock ticks)");
 MODULE_LICENSE("GPL");
 MODULE_ALIAS_LDISC(N_PPP);
diff -puN drivers/net/sis900.c~MODULE_PARM-allyes drivers/net/sis900.c
--- 25/drivers/net/sis900.c~MODULE_PARM-allyes	2004-11-29 14:48:41.908476448 -0800
+++ 25-akpm/drivers/net/sis900.c	2004-11-29 14:48:42.214429936 -0800
@@ -179,9 +179,9 @@ MODULE_AUTHOR("Jim Huang <cmhuang@sis.co
 MODULE_DESCRIPTION("SiS 900 PCI Fast Ethernet driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(multicast_filter_limit, "i");
-MODULE_PARM(max_interrupt_work, "i");
-MODULE_PARM(debug, "i");
+module_param(multicast_filter_limit, int, 0);
+module_param(max_interrupt_work, int, 0);
+module_param(debug, int, 0);
 MODULE_PARM_DESC(multicast_filter_limit, "SiS 900/7016 maximum number of filtered multicast addresses");
 MODULE_PARM_DESC(max_interrupt_work, "SiS 900/7016 maximum events handled per interrupt");
 MODULE_PARM_DESC(debug, "SiS 900/7016 debug level (2-4)");
diff -puN drivers/net/smc-mca.c~MODULE_PARM-allyes drivers/net/smc-mca.c
--- 25/drivers/net/smc-mca.c~MODULE_PARM-allyes	2004-11-29 14:48:41.910476144 -0800
+++ 25-akpm/drivers/net/smc-mca.c	2004-11-29 14:48:42.214429936 -0800
@@ -95,8 +95,8 @@ static int ultra_io[MAX_ULTRAMCA_CARDS];
 static int ultra_irq[MAX_ULTRAMCA_CARDS];
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(ultra_io, "1-" __MODULE_STRING(MAX_ULTRAMCA_CARDS) "i");
-MODULE_PARM(ultra_irq, "1-" __MODULE_STRING(MAX_ULTRAMCA_CARDS) "i");
+module_param_array(ultra_io, int, NULL, 0);
+module_param_array(ultra_irq, int, NULL, 0);
 MODULE_PARM_DESC(ultra_io, "SMC Ultra/EtherEZ MCA I/O base address(es)");
 MODULE_PARM_DESC(ultra_irq, "SMC Ultra/EtherEZ MCA IRQ number(s)");
 
diff -puN drivers/net/starfire.c~MODULE_PARM-allyes drivers/net/starfire.c
--- 25/drivers/net/starfire.c~MODULE_PARM-allyes	2004-11-29 14:48:41.911475992 -0800
+++ 25-akpm/drivers/net/starfire.c	2004-11-29 14:48:42.216429632 -0800
@@ -372,15 +372,15 @@ MODULE_AUTHOR("Donald Becker <becker@scy
 MODULE_DESCRIPTION("Adaptec Starfire Ethernet driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(max_interrupt_work, "i");
-MODULE_PARM(mtu, "i");
-MODULE_PARM(debug, "i");
-MODULE_PARM(rx_copybreak, "i");
-MODULE_PARM(intr_latency, "i");
-MODULE_PARM(small_frames, "i");
-MODULE_PARM(options, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(full_duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(enable_hw_cksum, "i");
+module_param(max_interrupt_work, int, 0);
+module_param(mtu, int, 0);
+module_param(debug, int, 0);
+module_param(rx_copybreak, int, 0);
+module_param(intr_latency, int, 0);
+module_param(small_frames, int, 0);
+module_param_array(options, int, NULL, 0);
+module_param_array(full_duplex, int, NULL, 0);
+module_param(enable_hw_cksum, int, 0);
 MODULE_PARM_DESC(max_interrupt_work, "Maximum events handled per interrupt");
 MODULE_PARM_DESC(mtu, "MTU (all boards)");
 MODULE_PARM_DESC(debug, "Debug level (0-6)");
diff -puN drivers/net/sundance.c~MODULE_PARM-allyes drivers/net/sundance.c
--- 25/drivers/net/sundance.c~MODULE_PARM-allyes	2004-11-29 14:48:41.913475688 -0800
+++ 25-akpm/drivers/net/sundance.c	2004-11-29 14:48:42.218429328 -0800
@@ -188,10 +188,10 @@ MODULE_AUTHOR("Donald Becker <becker@scy
 MODULE_DESCRIPTION("Sundance Alta Ethernet driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(debug, "i");
-MODULE_PARM(rx_copybreak, "i");
-MODULE_PARM(media, "1-" __MODULE_STRING(MAX_UNITS) "s");
-MODULE_PARM(flowctrl, "i");
+module_param(debug, int, 0);
+module_param(rx_copybreak, int, 0);
+module_param_array(media, charp, NULL, 0);
+module_param(flowctrl, int, 0);
 MODULE_PARM_DESC(debug, "Sundance Alta debug level (0-5)");
 MODULE_PARM_DESC(rx_copybreak, "Sundance Alta copy breakpoint for copy-only-tiny-frames");
 MODULE_PARM_DESC(flowctrl, "Sundance Alta flow control [0|1]");
diff -puN drivers/net/sunhme.c~MODULE_PARM-allyes drivers/net/sunhme.c
--- 25/drivers/net/sunhme.c~MODULE_PARM-allyes	2004-11-29 14:48:41.915475384 -0800
+++ 25-akpm/drivers/net/sunhme.c	2004-11-29 14:48:42.220429024 -0800
@@ -73,7 +73,7 @@ static char version[] =
 static int macaddr[6];
 
 /* accept MAC address of the form macaddr=0x08,0x00,0x20,0x30,0x40,0x50 */
-MODULE_PARM(macaddr, "6i");
+module_param_array(macaddr, int, NULL, 0);
 MODULE_PARM_DESC(macaddr, "Happy Meal MAC address to set");
 MODULE_LICENSE("GPL");
 
diff -puN drivers/net/tlan.c~MODULE_PARM-allyes drivers/net/tlan.c
--- 25/drivers/net/tlan.c~MODULE_PARM-allyes	2004-11-29 14:48:41.917475080 -0800
+++ 25-akpm/drivers/net/tlan.c	2004-11-29 14:48:42.223428568 -0800
@@ -198,16 +198,6 @@ MODULE_AUTHOR("Maintainer: Samuel Chessm
 MODULE_DESCRIPTION("Driver for TI ThunderLAN based ethernet PCI adapters");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(aui, "1-" __MODULE_STRING(MAX_TLAN_BOARDS) "i");
-MODULE_PARM(duplex, "1-" __MODULE_STRING(MAX_TLAN_BOARDS) "i");
-MODULE_PARM(speed, "1-" __MODULE_STRING(MAX_TLAN_BOARDS) "i");
-MODULE_PARM(debug, "i");
-MODULE_PARM(bbuf, "i");
-MODULE_PARM_DESC(aui, "ThunderLAN use AUI port(s) (0-1)");
-MODULE_PARM_DESC(duplex, "ThunderLAN duplex setting(s) (0-default, 1-half, 2-full)");
-MODULE_PARM_DESC(speed, "ThunderLAN port speen setting(s) (0,10,100)");
-MODULE_PARM_DESC(debug, "ThunderLAN debug mask");
-MODULE_PARM_DESC(bbuf, "ThunderLAN use big buffer (0-1)");
 
 /* Define this to enable Link beat monitoring */
 #undef MONITOR
diff -puN drivers/net/tokenring/3c359.c~MODULE_PARM-allyes drivers/net/tokenring/3c359.c
--- 25/drivers/net/tokenring/3c359.c~MODULE_PARM-allyes	2004-11-29 14:48:41.918474928 -0800
+++ 25-akpm/drivers/net/tokenring/3c359.c	2004-11-29 14:48:42.224428416 -0800
@@ -94,20 +94,20 @@ MODULE_DESCRIPTION("3Com 3C359 Velocity 
 
 static int ringspeed[XL_MAX_ADAPTERS] = {0,} ;
 
-MODULE_PARM(ringspeed, "1-" __MODULE_STRING(XL_MAX_ADAPTERS) "i");
+module_param_array(ringspeed, int, NULL, 0);
 MODULE_PARM_DESC(ringspeed,"3c359: Ringspeed selection - 4,16 or 0") ; 
 
 /* Packet buffer size */
 
 static int pkt_buf_sz[XL_MAX_ADAPTERS] = {0,} ;
  
-MODULE_PARM(pkt_buf_sz, "1-" __MODULE_STRING(XL_MAX_ADAPTERS) "i") ; 
+module_param_array(pkt_buf_sz, int, NULL, 0) ;
 MODULE_PARM_DESC(pkt_buf_sz,"3c359: Initial buffer size") ; 
 /* Message Level */
 
 static int message_level[XL_MAX_ADAPTERS] = {0,} ; 
 
-MODULE_PARM(message_level, "1-" __MODULE_STRING(XL_MAX_ADAPTERS) "i") ; 
+module_param_array(message_level, int, NULL, 0) ;
 MODULE_PARM_DESC(message_level, "3c359: Level of reported messages \n") ; 
 /* 
  *	This is a real nasty way of doing this, but otherwise you
diff -puN drivers/net/tokenring/lanstreamer.c~MODULE_PARM-allyes drivers/net/tokenring/lanstreamer.c
--- 25/drivers/net/tokenring/lanstreamer.c~MODULE_PARM-allyes	2004-11-29 14:48:41.920474624 -0800
+++ 25-akpm/drivers/net/tokenring/lanstreamer.c	2004-11-29 14:48:42.226428112 -0800
@@ -182,20 +182,19 @@ static char *open_min_error[] = {
 
 static int ringspeed[STREAMER_MAX_ADAPTERS] = { 0, };
 
-MODULE_PARM(ringspeed, "1-" __MODULE_STRING(STREAMER_MAX_ADAPTERS) "i");
+module_param_array(ringspeed, int, NULL, 0);
 
 /* Packet buffer size */
 
 static int pkt_buf_sz[STREAMER_MAX_ADAPTERS] = { 0, };
 
-MODULE_PARM(pkt_buf_sz, "1-" __MODULE_STRING(STREAMER_MAX_ADAPTERS) "i");
+module_param_array(pkt_buf_sz, int, NULL, 0);
 
 /* Message Level */
 
 static int message_level[STREAMER_MAX_ADAPTERS] = { 1, };
 
-MODULE_PARM(message_level,
-	    "1-" __MODULE_STRING(STREAMER_MAX_ADAPTERS) "i");
+module_param_array(message_level, int, NULL, 0);
 
 #if STREAMER_IOCTL
 static int streamer_ioctl(struct net_device *, struct ifreq *, int);
diff -puN drivers/net/tokenring/olympic.c~MODULE_PARM-allyes drivers/net/tokenring/olympic.c
--- 25/drivers/net/tokenring/olympic.c~MODULE_PARM-allyes	2004-11-29 14:48:41.922474320 -0800
+++ 25-akpm/drivers/net/tokenring/olympic.c	2004-11-29 14:48:42.228427808 -0800
@@ -150,17 +150,17 @@ MODULE_DESCRIPTION("Olympic PCI/Cardbus 
  */
 
 static int ringspeed[OLYMPIC_MAX_ADAPTERS] = {0,} ;
-MODULE_PARM(ringspeed, "1-" __MODULE_STRING(OLYMPIC_MAX_ADAPTERS) "i");
+module_param_array(ringspeed, int, NULL, 0);
 
 /* Packet buffer size */
 
 static int pkt_buf_sz[OLYMPIC_MAX_ADAPTERS] = {0,} ;
-MODULE_PARM(pkt_buf_sz, "1-" __MODULE_STRING(OLYMPIC_MAX_ADAPTERS) "i") ; 
+module_param_array(pkt_buf_sz, int, NULL, 0) ;
 
 /* Message Level */
 
 static int message_level[OLYMPIC_MAX_ADAPTERS] = {0,} ; 
-MODULE_PARM(message_level, "1-" __MODULE_STRING(OLYMPIC_MAX_ADAPTERS) "i") ; 
+module_param_array(message_level, int, NULL, 0) ;
 
 /* Change network_monitor to receive mac frames through the arb channel.
  * Will also create a /proc/net/olympic_tr%d entry, where %d is the tr
@@ -169,7 +169,7 @@ MODULE_PARM(message_level, "1-" __MODULE
  * i.e. it will give you the source address of beaconers on the ring 
  */
 static int network_monitor[OLYMPIC_MAX_ADAPTERS] = {0,};
-MODULE_PARM(network_monitor, "1-" __MODULE_STRING(OLYMPIC_MAX_ADAPTERS) "i");
+module_param_array(network_monitor, int, NULL, 0);
 
 static struct pci_device_id olympic_pci_tbl[] = {
 	{PCI_VENDOR_ID_IBM,PCI_DEVICE_ID_IBM_TR_WAKE,PCI_ANY_ID,PCI_ANY_ID,},
diff -puN drivers/net/tulip/de2104x.c~MODULE_PARM-allyes drivers/net/tulip/de2104x.c
--- 25/drivers/net/tulip/de2104x.c~MODULE_PARM-allyes	2004-11-29 14:48:41.923474168 -0800
+++ 25-akpm/drivers/net/tulip/de2104x.c	2004-11-29 14:48:42.230427504 -0800
@@ -59,7 +59,7 @@ MODULE_LICENSE("GPL");
 MODULE_VERSION(DRV_VERSION);
 
 static int debug = -1;
-MODULE_PARM (debug, "i");
+module_param (debug, int, 0);
 MODULE_PARM_DESC (debug, "de2104x bitmapped message enable number");
 
 /* Set the copy breakpoint for the copy-only-tiny-buffer Rx structure. */
@@ -70,7 +70,7 @@ static int rx_copybreak = 1518;
 #else
 static int rx_copybreak = 100;
 #endif
-MODULE_PARM (rx_copybreak, "i");
+module_param (rx_copybreak, int, 0);
 MODULE_PARM_DESC (rx_copybreak, "de2104x Breakpoint at which Rx packets are copied");
 
 #define PFX			DRV_NAME ": "
diff -puN drivers/net/tulip/dmfe.c~MODULE_PARM-allyes drivers/net/tulip/dmfe.c
--- 25/drivers/net/tulip/dmfe.c~MODULE_PARM-allyes	2004-11-29 14:48:41.925473864 -0800
+++ 25-akpm/drivers/net/tulip/dmfe.c	2004-11-29 14:48:42.231427352 -0800
@@ -1989,15 +1989,15 @@ MODULE_DESCRIPTION("Davicom DM910X fast 
 MODULE_LICENSE("GPL");
 MODULE_VERSION(DRV_VERSION);
 
-MODULE_PARM(debug, "i");
-MODULE_PARM(mode, "i");
-MODULE_PARM(cr6set, "i");
-MODULE_PARM(chkmode, "i");
-MODULE_PARM(HPNA_mode, "i");
-MODULE_PARM(HPNA_rx_cmd, "i");
-MODULE_PARM(HPNA_tx_cmd, "i");
-MODULE_PARM(HPNA_NoiseFloor, "i");
-MODULE_PARM(SF_mode, "i");
+module_param(debug, int, 0);
+module_param(mode, byte, 0);
+module_param(cr6set, int, 0);
+module_param(chkmode, byte, 0);
+module_param(HPNA_mode, byte, 0);
+module_param(HPNA_rx_cmd, byte, 0);
+module_param(HPNA_tx_cmd, byte, 0);
+module_param(HPNA_NoiseFloor, byte, 0);
+module_param(SF_mode, byte, 0);
 MODULE_PARM_DESC(debug, "Davicom DM9xxx enable debugging (0-1)");
 MODULE_PARM_DESC(mode, "Davicom DM9xxx: Bit 0: 10/100Mbps, bit 2: duplex, bit 8: HomePNA");
 MODULE_PARM_DESC(SF_mode, "Davicom DM9xxx special function (bit 0: VLAN, bit 1 Flow Control, bit 2: TX pause packet)");
diff -puN drivers/net/tulip/tulip_core.c~MODULE_PARM-allyes drivers/net/tulip/tulip_core.c
--- 25/drivers/net/tulip/tulip_core.c~MODULE_PARM-allyes	2004-11-29 14:48:41.926473712 -0800
+++ 25-akpm/drivers/net/tulip/tulip_core.c	2004-11-29 14:48:42.233427048 -0800
@@ -116,12 +116,12 @@ MODULE_AUTHOR("The Linux Kernel Team");
 MODULE_DESCRIPTION("Digital 21*4* Tulip ethernet driver");
 MODULE_LICENSE("GPL");
 MODULE_VERSION(DRV_VERSION);
-MODULE_PARM(tulip_debug, "i");
-MODULE_PARM(max_interrupt_work, "i");
-MODULE_PARM(rx_copybreak, "i");
-MODULE_PARM(csr0, "i");
-MODULE_PARM(options, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(full_duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
+module_param(tulip_debug, int, 0);
+module_param(max_interrupt_work, int, 0);
+module_param(rx_copybreak, int, 0);
+module_param(csr0, int, 0);
+module_param_array(options, int, NULL, 0);
+module_param_array(full_duplex, int, NULL, 0);
 
 #define PFX DRV_NAME ": "
 
diff -puN drivers/net/tulip/winbond-840.c~MODULE_PARM-allyes drivers/net/tulip/winbond-840.c
--- 25/drivers/net/tulip/winbond-840.c~MODULE_PARM-allyes	2004-11-29 14:48:41.928473408 -0800
+++ 25-akpm/drivers/net/tulip/winbond-840.c	2004-11-29 14:48:42.234426896 -0800
@@ -146,12 +146,12 @@ MODULE_DESCRIPTION("Winbond W89c840 Ethe
 MODULE_LICENSE("GPL");
 MODULE_VERSION(DRV_VERSION);
 
-MODULE_PARM(max_interrupt_work, "i");
-MODULE_PARM(debug, "i");
-MODULE_PARM(rx_copybreak, "i");
-MODULE_PARM(multicast_filter_limit, "i");
-MODULE_PARM(options, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(full_duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
+module_param(max_interrupt_work, int, 0);
+module_param(debug, int, 0);
+module_param(rx_copybreak, int, 0);
+module_param(multicast_filter_limit, int, 0);
+module_param_array(options, int, NULL, 0);
+module_param_array(full_duplex, int, NULL, 0);
 MODULE_PARM_DESC(max_interrupt_work, "winbond-840 maximum events handled per interrupt");
 MODULE_PARM_DESC(debug, "winbond-840 debug level (0-6)");
 MODULE_PARM_DESC(rx_copybreak, "winbond-840 copy breakpoint for copy-only-tiny-frames");
diff -puN drivers/net/typhoon.c~MODULE_PARM-allyes drivers/net/typhoon.c
--- 25/drivers/net/typhoon.c~MODULE_PARM-allyes	2004-11-29 14:48:41.930473104 -0800
+++ 25-akpm/drivers/net/typhoon.c	2004-11-29 14:48:42.236426592 -0800
@@ -133,7 +133,7 @@ static char version[] __devinitdata =
 MODULE_AUTHOR("David Dillow <dave@thedillows.org>");
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("3Com Typhoon Family (3C990, 3CR990, and variants)");
-MODULE_PARM(rx_copybreak, "i");
+module_param(rx_copybreak, int, 0);
 
 #if defined(NETIF_F_TSO) && MAX_SKB_FRAGS > 32
 #warning Typhoon only supports 32 entries in its SG list for TSO, disabling TSO
diff -puN drivers/net/via-velocity.c~MODULE_PARM-allyes drivers/net/via-velocity.c
--- 25/drivers/net/via-velocity.c~MODULE_PARM-allyes	2004-11-29 14:48:41.931472952 -0800
+++ 25-akpm/drivers/net/via-velocity.c	2004-11-29 14:48:42.239426136 -0800
@@ -100,8 +100,8 @@ MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("VIA Networking Velocity Family Gigabit Ethernet Adapter Driver");
 
 #define VELOCITY_PARAM(N,D) \
-        static const int N[MAX_UNITS]=OPTION_DEFAULT;\
-        MODULE_PARM(N, "1-" __MODULE_STRING(MAX_UNITS) "i");\
+        static int N[MAX_UNITS]=OPTION_DEFAULT;\
+        module_param_array(N, int, NULL, 0);\
         MODULE_PARM_DESC(N, D);
 
 #define RX_DESC_MIN     64
@@ -229,7 +229,7 @@ VELOCITY_PARAM(wol_opts, "Wake On Lan op
 VELOCITY_PARAM(int_works, "Number of packets per interrupt services");
 
 static int rx_copybreak = 200;
-MODULE_PARM(rx_copybreak, "i");
+module_param(rx_copybreak, int, 0);
 MODULE_PARM_DESC(rx_copybreak, "Copy breakpoint for copy-only-tiny-frames");
 
 static void velocity_init_info(struct pci_dev *pdev, struct velocity_info *vptr, struct velocity_info_tbl *info);
diff -puN drivers/net/wan/cosa.c~MODULE_PARM-allyes drivers/net/wan/cosa.c
--- 25/drivers/net/wan/cosa.c~MODULE_PARM-allyes	2004-11-29 14:48:41.933472648 -0800
+++ 25-akpm/drivers/net/wan/cosa.c	2004-11-29 14:48:42.241425832 -0800
@@ -238,11 +238,11 @@ static int irq[MAX_CARDS+1] = { -1, -1, 
 static struct class_simple *cosa_class;
 
 #ifdef MODULE
-MODULE_PARM(io, "1-" __MODULE_STRING(MAX_CARDS) "i");
+module_param_array(io, int, NULL, 0);
 MODULE_PARM_DESC(io, "The I/O bases of the COSA or SRP cards");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_CARDS) "i");
+module_param_array(irq, int, NULL, 0);
 MODULE_PARM_DESC(irq, "The IRQ lines of the COSA or SRP cards");
-MODULE_PARM(dma, "1-" __MODULE_STRING(MAX_CARDS) "i");
+module_param_array(dma, int, NULL, 0);
 MODULE_PARM_DESC(dma, "The DMA channels of the COSA or SRP cards");
 
 MODULE_AUTHOR("Jan \"Yenya\" Kasprzak, <kas@fi.muni.cz>");
diff -puN drivers/net/wan/cycx_main.c~MODULE_PARM-allyes drivers/net/wan/cycx_main.c
--- 25/drivers/net/wan/cycx_main.c~MODULE_PARM-allyes	2004-11-29 14:48:41.934472496 -0800
+++ 25-akpm/drivers/net/wan/cycx_main.c	2004-11-29 14:48:42.242425680 -0800
@@ -57,7 +57,7 @@ unsigned int cycx_debug;
 MODULE_AUTHOR("Arnaldo Carvalho de Melo");
 MODULE_DESCRIPTION("Cyclom 2X Sync Card Driver.");
 MODULE_LICENSE("GPL");
-MODULE_PARM(cycx_debug, "i");
+module_param(cycx_debug, int, 0);
 MODULE_PARM_DESC(cycx_debug, "cyclomx debug level");
 
 /* Defines & Macros */
diff -puN drivers/net/wan/dscc4.c~MODULE_PARM-allyes drivers/net/wan/dscc4.c
--- 25/drivers/net/wan/dscc4.c~MODULE_PARM-allyes	2004-11-29 14:48:41.936472192 -0800
+++ 25-akpm/drivers/net/wan/dscc4.c	2004-11-29 14:48:42.243425528 -0800
@@ -125,9 +125,9 @@ static u32 dscc4_pci_config_store[16];
 MODULE_AUTHOR("Maintainer: Francois Romieu <romieu@cogenit.fr>");
 MODULE_DESCRIPTION("Siemens PEB20534 PCI Controler");
 MODULE_LICENSE("GPL");
-MODULE_PARM(debug,"i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug,"Enable/disable extra messages");
-MODULE_PARM(quartz,"i");
+module_param(quartz, int, 0);
 MODULE_PARM_DESC(quartz,"If present, on-board quartz frequency (Hz)");
 
 /* Structures */
diff -puN drivers/net/wan/farsync.c~MODULE_PARM-allyes drivers/net/wan/farsync.c
--- 25/drivers/net/wan/farsync.c~MODULE_PARM-allyes	2004-11-29 14:48:41.937472040 -0800
+++ 25-akpm/drivers/net/wan/farsync.c	2004-11-29 14:48:42.245425224 -0800
@@ -33,11 +33,6 @@
  */
 MODULE_AUTHOR("R.J.Dunlop <bob.dunlop@farsite.co.uk>");
 MODULE_DESCRIPTION("FarSync T-Series WAN driver. FarSite Communications Ltd.");
-MODULE_PARM(fst_txq_low, "i");
-MODULE_PARM(fst_txq_high, "i");
-MODULE_PARM(fst_max_reads, "i");
-MODULE_PARM(fst_excluded_cards, "i");
-MODULE_PARM(fst_excluded_list, "0-32i");
 MODULE_LICENSE("GPL");
 
 /*      Driver configuration and global parameters
@@ -85,6 +80,12 @@ int fst_max_reads = 7;
 int fst_excluded_cards = 0;
 int fst_excluded_list[FST_MAX_CARDS];
 
+module_param(fst_txq_low, int, 0);
+module_param(fst_txq_high, int, 0);
+module_param(fst_max_reads, int, 0);
+module_param(fst_excluded_cards, int, 0);
+module_param_array(fst_excluded_list, int, NULL, 0);
+
 /*      Card shared memory layout
  *      =========================
  */
diff -puN drivers/net/wan/hostess_sv11.c~MODULE_PARM-allyes drivers/net/wan/hostess_sv11.c
--- 25/drivers/net/wan/hostess_sv11.c~MODULE_PARM-allyes	2004-11-29 14:48:41.939471736 -0800
+++ 25-akpm/drivers/net/wan/hostess_sv11.c	2004-11-29 14:48:42.246425072 -0800
@@ -388,11 +388,11 @@ static void sv11_shutdown(struct sv11_de
 static int io=0x200;
 static int irq=9;
 
-MODULE_PARM(io,"i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "The I/O base of the Comtrol Hostess SV11 card");
-MODULE_PARM(dma,"i");
+module_param(dma, int, 0);
 MODULE_PARM_DESC(dma, "Set this to 1 to use DMA1/DMA3 for TX/RX");
-MODULE_PARM(irq,"i");
+module_param(irq, int, 0);
 MODULE_PARM_DESC(irq, "The interrupt line setting for the Comtrol Hostess SV11 card");
 
 MODULE_AUTHOR("Alan Cox");
diff -puN drivers/net/wan/sealevel.c~MODULE_PARM-allyes drivers/net/wan/sealevel.c
--- 25/drivers/net/wan/sealevel.c~MODULE_PARM-allyes	2004-11-29 14:48:41.940471584 -0800
+++ 25-akpm/drivers/net/wan/sealevel.c	2004-11-29 14:48:42.246425072 -0800
@@ -431,15 +431,15 @@ static int rxdma=3;
 static int irq=5;
 static int slow=0;
 
-MODULE_PARM(io,"i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "The I/O base of the Sealevel card");
-MODULE_PARM(txdma,"i");
+module_param(txdma, int, 0);
 MODULE_PARM_DESC(txdma, "Transmit DMA channel");
-MODULE_PARM(rxdma,"i");
+module_param(rxdma, int, 0);
 MODULE_PARM_DESC(rxdma, "Receive DMA channel");
-MODULE_PARM(irq,"i");
+module_param(irq, int, 0);
 MODULE_PARM_DESC(irq, "The interrupt line setting for the SeaLevel card");
-MODULE_PARM(slow,"i");
+module_param(slow, bool, 0);
 MODULE_PARM_DESC(slow, "Set this for an older Sealevel card such as the 4012");
 
 MODULE_AUTHOR("Alan Cox");
diff -puN drivers/net/wan/syncppp.c~MODULE_PARM-allyes drivers/net/wan/syncppp.c
--- 25/drivers/net/wan/syncppp.c~MODULE_PARM-allyes	2004-11-29 14:48:41.941471432 -0800
+++ 25-akpm/drivers/net/wan/syncppp.c	2004-11-29 14:48:42.247424920 -0800
@@ -1483,6 +1483,6 @@ static void __exit sync_ppp_cleanup(void
 
 module_init(sync_ppp_init);
 module_exit(sync_ppp_cleanup);
-MODULE_PARM(debug,"1i");
+module_param(debug, int, 0);
 MODULE_LICENSE("GPL");
 
diff -puN drivers/net/wan/x25_asy.c~MODULE_PARM-allyes drivers/net/wan/x25_asy.c
--- 25/drivers/net/wan/x25_asy.c~MODULE_PARM-allyes	2004-11-29 14:48:41.943471128 -0800
+++ 25-akpm/drivers/net/wan/x25_asy.c	2004-11-29 14:48:42.248424768 -0800
@@ -39,7 +39,7 @@
 static struct net_device **x25_asy_devs;
 static int x25_asy_maxdev = SL_NRUNIT;
 
-MODULE_PARM(x25_asy_maxdev, "i");
+module_param(x25_asy_maxdev, int, 0);
 MODULE_LICENSE("GPL");
 
 static int x25_asy_esc(unsigned char *p, unsigned char *d, int len);
diff -puN drivers/net/wireless/airo.c~MODULE_PARM-allyes drivers/net/wireless/airo.c
--- 25/drivers/net/wireless/airo.c~MODULE_PARM-allyes	2004-11-29 14:48:41.945470824 -0800
+++ 25-akpm/drivers/net/wireless/airo.c	2004-11-29 14:48:42.254423856 -0800
@@ -246,36 +246,36 @@ MODULE_DESCRIPTION("Support for Cisco/Ai
 		   for PCMCIA when used with airo_cs.");
 MODULE_LICENSE("Dual BSD/GPL");
 MODULE_SUPPORTED_DEVICE("Aironet 4500, 4800 and Cisco 340/350");
-MODULE_PARM(io,"1-4i");
-MODULE_PARM(irq,"1-4i");
-MODULE_PARM(basic_rate,"i");
-MODULE_PARM(rates,"1-8i");
-MODULE_PARM(ssids,"1-3s");
-MODULE_PARM(auto_wep,"i");
+module_param_array(io, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
+module_param(basic_rate, int, 0);
+module_param_array(rates, int, NULL, 0);
+module_param_array(ssids, charp, NULL, 0);
+module_param(auto_wep, int, 0);
 MODULE_PARM_DESC(auto_wep, "If non-zero, the driver will keep looping through \
 the authentication options until an association is made.  The value of \
 auto_wep is number of the wep keys to check.  A value of 2 will try using \
 the key at index 0 and index 1.");
-MODULE_PARM(aux_bap,"i");
+module_param(aux_bap, int, 0);
 MODULE_PARM_DESC(aux_bap, "If non-zero, the driver will switch into a mode \
 than seems to work better for older cards with some older buses.  Before \
 switching it checks that the switch is needed.");
-MODULE_PARM(maxencrypt, "i");
+module_param(maxencrypt, int, 0);
 MODULE_PARM_DESC(maxencrypt, "The maximum speed that the card can do \
 encryption.  Units are in 512kbs.  Zero (default) means there is no limit. \
 Older cards used to be limited to 2mbs (4).");
-MODULE_PARM(adhoc, "i");
+module_param(adhoc, int, 0);
 MODULE_PARM_DESC(adhoc, "If non-zero, the card will start in adhoc mode.");
-MODULE_PARM(probe, "i");
+module_param(probe, int, 0);
 MODULE_PARM_DESC(probe, "If zero, the driver won't start the card.");
 
-MODULE_PARM(proc_uid, "i");
+module_param(proc_uid, int, 0);
 MODULE_PARM_DESC(proc_uid, "The uid that the /proc files will belong to.");
-MODULE_PARM(proc_gid, "i");
+module_param(proc_gid, int, 0);
 MODULE_PARM_DESC(proc_gid, "The gid that the /proc files will belong to.");
-MODULE_PARM(airo_perm, "i");
+module_param(airo_perm, int, 0);
 MODULE_PARM_DESC(airo_perm, "The permission bits of /proc/[driver/]aironet.");
-MODULE_PARM(proc_perm, "i");
+module_param(proc_perm, int, 0);
 MODULE_PARM_DESC(proc_perm, "The permission bits of the files in /proc");
 
 /* This is a kind of sloppy hack to get this information to OUT4500 and
diff -puN drivers/net/wireless/airo_cs.c~MODULE_PARM-allyes drivers/net/wireless/airo_cs.c
--- 25/drivers/net/wireless/airo_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.946470672 -0800
+++ 25-akpm/drivers/net/wireless/airo_cs.c	2004-11-29 14:48:42.255423704 -0800
@@ -52,7 +52,7 @@
 */
 #ifdef PCMCIA_DEBUG
 static int pc_debug = PCMCIA_DEBUG;
-MODULE_PARM(pc_debug, "i");
+module_param(pc_debug, int, 0);
 static char *version = "$Revision: 1.2 $";
 #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args);
 #else
@@ -75,8 +75,8 @@ MODULE_DESCRIPTION("Support for Cisco/Ai
 		   with the airo module.");
 MODULE_LICENSE("Dual BSD/GPL");
 MODULE_SUPPORTED_DEVICE("Aironet 4500, 4800 and Cisco 340 PCMCIA cards");
-MODULE_PARM(irq_mask, "i");
-MODULE_PARM(irq_list, "1-4i");
+module_param(irq_mask, int, 0);
+module_param_array(irq_list, int, NULL, 0);
 
 /*====================================================================*/
 
diff -puN drivers/net/wireless/arlan-main.c~MODULE_PARM-allyes drivers/net/wireless/arlan-main.c
--- 25/drivers/net/wireless/arlan-main.c~MODULE_PARM-allyes	2004-11-29 14:48:41.948470368 -0800
+++ 25-akpm/drivers/net/wireless/arlan-main.c	2004-11-29 14:48:42.256423552 -0800
@@ -39,35 +39,32 @@ static int testMemory = testMemoryUNKNOW
 static int irq = irqUNKNOWN;
 static int txScrambled = 1;
 static int mdebug;
-#endif
 
-MODULE_PARM(irq, "i");
-MODULE_PARM(mem, "i");
-MODULE_PARM(arlan_debug, "i");
-MODULE_PARM(testMemory, "i");
-MODULE_PARM(spreadingCode, "i");
-MODULE_PARM(channelNumber, "i");
-MODULE_PARM(channelSet, "i");
-MODULE_PARM(systemId, "i");
-MODULE_PARM(registrationMode, "i");
-MODULE_PARM(radioNodeId, "i");
-MODULE_PARM(SID, "i");
-MODULE_PARM(txScrambled, "i");
-MODULE_PARM(keyStart, "i");
-MODULE_PARM(mdebug, "i");
-MODULE_PARM(tx_delay_ms, "i");
-MODULE_PARM(retries, "i");
-MODULE_PARM(async, "i");
-MODULE_PARM(tx_queue_len, "i");
-MODULE_PARM(arlan_entry_debug, "i");
-MODULE_PARM(arlan_exit_debug, "i");
-MODULE_PARM(arlan_entry_and_exit_debug, "i");
-MODULE_PARM(arlan_EEPROM_bad, "i");
+module_param(irq, int, 0);
+module_param(mdebug, int, 0);
+module_param(testMemory, int, 0);
+module_param(arlan_entry_debug, int, 0);
+module_param(arlan_exit_debug, int, 0);
+module_param(txScrambled, int, 0);
 MODULE_PARM_DESC(irq, "(unused)");
-MODULE_PARM_DESC(mem, "Arlan memory address for single device probing");
-MODULE_PARM_DESC(arlan_debug, "Arlan debug enable (0-1)");
 MODULE_PARM_DESC(testMemory, "(unused)");
 MODULE_PARM_DESC(mdebug, "Arlan multicast debugging (0-1)");
+#endif
+
+module_param(arlan_debug, int, 0);
+module_param(spreadingCode, int, 0);
+module_param(channelNumber, int, 0);
+module_param(channelSet, int, 0);
+module_param(systemId, int, 0);
+module_param(registrationMode, int, 0);
+module_param(radioNodeId, int, 0);
+module_param(SID, int, 0);
+module_param(keyStart, int, 0);
+module_param(tx_delay_ms, int, 0);
+module_param(retries, int, 0);
+module_param(tx_queue_len, int, 0);
+module_param(arlan_EEPROM_bad, int, 0);
+MODULE_PARM_DESC(arlan_debug, "Arlan debug enable (0-1)");
 MODULE_PARM_DESC(retries, "Arlan maximum packet retransmisions");
 #ifdef ARLAN_ENTRY_EXIT_DEBUGGING
 MODULE_PARM_DESC(arlan_entry_debug, "Arlan driver function entry debugging");
diff -puN drivers/net/wireless/atmel_cs.c~MODULE_PARM-allyes drivers/net/wireless/atmel_cs.c
--- 25/drivers/net/wireless/atmel_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.949470216 -0800
+++ 25-akpm/drivers/net/wireless/atmel_cs.c	2004-11-29 14:48:42.257423400 -0800
@@ -65,7 +65,7 @@
 */
 #ifdef PCMCIA_DEBUG
 static int pc_debug = PCMCIA_DEBUG;
-MODULE_PARM(pc_debug, "i");
+module_param(pc_debug, int, 0);
 static char *version = "$Revision: 1.2 $";
 #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args);
 #else
@@ -86,8 +86,8 @@ MODULE_AUTHOR("Simon Kelley");
 MODULE_DESCRIPTION("Support for Atmel at76c50x 802.11 wireless ethernet cards.");
 MODULE_LICENSE("GPL");
 MODULE_SUPPORTED_DEVICE("Atmel at76c50x PCMCIA cards");
-MODULE_PARM(irq_mask, "i");
-MODULE_PARM(irq_list, "1-4i");
+module_param(irq_mask, int, 0);
+module_param_array(irq_list, int, NULL, 0);
 
 /*====================================================================*/
 
diff -puN drivers/net/wireless/netwave_cs.c~MODULE_PARM-allyes drivers/net/wireless/netwave_cs.c
--- 25/drivers/net/wireless/netwave_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.951469912 -0800
+++ 25-akpm/drivers/net/wireless/netwave_cs.c	2004-11-29 14:48:42.259423096 -0800
@@ -161,7 +161,7 @@ static const unsigned int txConfLoop   =
 
 #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 =
 "netwave_cs.c 0.3.0 Thu Jul 17 14:36:02 1997 (John Markus Bjørndalen)\n";
@@ -195,11 +195,11 @@ static int mem_speed;
 static u_int irq_mask = 0xdeb8;
 static int irq_list[4] = { -1 };
 
-MODULE_PARM(domain, "i");
-MODULE_PARM(scramble_key, "i");
-MODULE_PARM(mem_speed, "i");
-MODULE_PARM(irq_mask, "i");
-MODULE_PARM(irq_list, "1-4i");
+module_param(domain, int, 0);
+module_param(scramble_key, int, 0);
+module_param(mem_speed, int, 0);
+module_param(irq_mask, int, 0);
+module_param_array(irq_list, int, NULL, 0);
 
 /*====================================================================*/
 
diff -puN drivers/net/wireless/orinoco.c~MODULE_PARM-allyes drivers/net/wireless/orinoco.c
--- 25/drivers/net/wireless/orinoco.c~MODULE_PARM-allyes	2004-11-29 14:48:41.953469608 -0800
+++ 25-akpm/drivers/net/wireless/orinoco.c	2004-11-29 14:48:42.262422640 -0800
@@ -461,12 +461,12 @@ MODULE_LICENSE("Dual MPL/GPL");
 /* Level of debugging. Used in the macros in orinoco.h */
 #ifdef ORINOCO_DEBUG
 int orinoco_debug = ORINOCO_DEBUG;
-MODULE_PARM(orinoco_debug, "i");
+module_param(orinoco_debug, int, 0);
 EXPORT_SYMBOL(orinoco_debug);
 #endif
 
 static int suppress_linkstatus; /* = 0 */
-MODULE_PARM(suppress_linkstatus, "i");
+module_param(suppress_linkstatus, bool, 0);
 
 /********************************************************************/
 /* Compile time configuration and compatibility stuff               */
diff -puN drivers/net/wireless/orinoco_cs.c~MODULE_PARM-allyes drivers/net/wireless/orinoco_cs.c
--- 25/drivers/net/wireless/orinoco_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.954469456 -0800
+++ 25-akpm/drivers/net/wireless/orinoco_cs.c	2004-11-29 14:48:42.263422488 -0800
@@ -64,9 +64,9 @@ static int irq_list[4] = { -1 };
  * don't have any CIS entry for it. This workaround it... */
 static int ignore_cis_vcc; /* = 0 */
 
-MODULE_PARM(irq_mask, "i");
-MODULE_PARM(irq_list, "1-4i");
-MODULE_PARM(ignore_cis_vcc, "i");
+module_param(irq_mask, int, 0);
+module_param_array(irq_list, int, NULL, 0);
+module_param(ignore_cis_vcc, int, 0);
 
 /********************************************************************/
 /* Magic constants						    */
diff -puN drivers/net/wireless/ray_cs.c~MODULE_PARM-allyes drivers/net/wireless/ray_cs.c
--- 25/drivers/net/wireless/ray_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.956469152 -0800
+++ 25-akpm/drivers/net/wireless/ray_cs.c	2004-11-29 14:48:42.265422184 -0800
@@ -84,7 +84,7 @@ typedef u_char	mac_addr[ETH_ALEN];	/* Ha
 #ifdef PCMCIA_DEBUG
 static int ray_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); */
 #define DEBUG(n, args...) if (pc_debug>(n)) printk(args);
 #else
@@ -222,18 +222,18 @@ MODULE_AUTHOR("Corey Thomas <corey@world
 MODULE_DESCRIPTION("Raylink/WebGear wireless LAN driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(irq_mask,"i");
-MODULE_PARM(net_type,"i");
-MODULE_PARM(hop_dwell,"i");
-MODULE_PARM(beacon_period,"i");
-MODULE_PARM(psm,"i");
-MODULE_PARM(essid,"s");
-MODULE_PARM(translate,"i");
-MODULE_PARM(country,"i");
-MODULE_PARM(sniffer,"i");
-MODULE_PARM(bc,"i");
-MODULE_PARM(phy_addr,"s");
-MODULE_PARM(ray_mem_speed, "i");
+module_param(irq_mask, ulong, 0);
+module_param(net_type, int, 0);
+module_param(hop_dwell, int, 0);
+module_param(beacon_period, int, 0);
+module_param(psm, int, 0);
+module_param(essid, charp, 0);
+module_param(translate, int, 0);
+module_param(country, int, 0);
+module_param(sniffer, int, 0);
+module_param(bc, int, 0);
+module_param(phy_addr, charp, 0);
+module_param(ray_mem_speed, int, 0);
 
 static UCHAR b5_default_startup_parms[] = {
     0,   0,                         /* Adhoc station */
diff -puN drivers/net/wireless/wavelan_cs.p.h~MODULE_PARM-allyes drivers/net/wireless/wavelan_cs.p.h
--- 25/drivers/net/wireless/wavelan_cs.p.h~MODULE_PARM-allyes	2004-11-29 14:48:41.958468848 -0800
+++ 25-akpm/drivers/net/wireless/wavelan_cs.p.h	2004-11-29 14:48:42.266422032 -0800
@@ -804,14 +804,14 @@ static int 	irq_list[4] = { -1 };
 static int	mem_speed = 0;
 
 /* New module interface */
-MODULE_PARM(irq_mask, "i");
-MODULE_PARM(irq_list, "1-4i");
-MODULE_PARM(mem_speed, "i");
+module_param(irq_mask, int, 0);
+module_param_array(irq_list, int, NULL, 0);
+module_param(mem_speed, int, 0);
 
 #ifdef WAVELAN_ROAMING		/* Conditional compile, see above in options */
 /* Enable roaming mode ? No ! Please keep this to 0 */
 static int	do_roaming = 0;
-MODULE_PARM(do_roaming, "i");
+module_param(do_roaming, bool, 0);
 #endif	/* WAVELAN_ROAMING */
 
 MODULE_LICENSE("GPL");
diff -puN drivers/net/wireless/wl3501_cs.c~MODULE_PARM-allyes drivers/net/wireless/wl3501_cs.c
--- 25/drivers/net/wireless/wl3501_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.959468696 -0800
+++ 25-akpm/drivers/net/wireless/wl3501_cs.c	2004-11-29 14:48:42.268421728 -0800
@@ -79,7 +79,7 @@
 #define PCMCIA_DEBUG 0
 #ifdef PCMCIA_DEBUG
 static int pc_debug = PCMCIA_DEBUG;
-MODULE_PARM(pc_debug, "i");
+module_param(pc_debug, int, 0);
 #define dprintk(n, format, args...) \
 	{ if (pc_debug > (n)) \
 		printk(KERN_INFO "%s: " format "\n", __FUNCTION__ , ##args); }
@@ -2274,8 +2274,8 @@ static void __exit wl3501_exit_module(vo
 module_init(wl3501_init_module);
 module_exit(wl3501_exit_module);
 
-MODULE_PARM(wl3501_irq_mask, "i");
-MODULE_PARM(wl3501_irq_list, "1-4i");
+module_param(wl3501_irq_mask, int, 0);
+module_param_array(wl3501_irq_list, int, NULL, 0);
 MODULE_AUTHOR("Fox Chen <mhchen@golf.ccl.itri.org.tw>, "
 	      "Arnaldo Carvalho de Melo <acme@conectiva.com.br>,"
 	      "Gustavo Niemeyer <niemeyer@conectiva.com>");
diff -puN drivers/net/yellowfin.c~MODULE_PARM-allyes drivers/net/yellowfin.c
--- 25/drivers/net/yellowfin.c~MODULE_PARM-allyes	2004-11-29 14:48:41.961468392 -0800
+++ 25-akpm/drivers/net/yellowfin.c	2004-11-29 14:48:42.270421424 -0800
@@ -140,13 +140,13 @@ MODULE_AUTHOR("Donald Becker <becker@scy
 MODULE_DESCRIPTION("Packet Engines Yellowfin G-NIC Gigabit Ethernet driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(max_interrupt_work, "i");
-MODULE_PARM(mtu, "i");
-MODULE_PARM(debug, "i");
-MODULE_PARM(rx_copybreak, "i");
-MODULE_PARM(options, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(full_duplex, "1-" __MODULE_STRING(MAX_UNITS) "i");
-MODULE_PARM(gx_fix, "i");
+module_param(max_interrupt_work, int, 0);
+module_param(mtu, int, 0);
+module_param(debug, int, 0);
+module_param(rx_copybreak, int, 0);
+module_param_array(options, int, NULL, 0);
+module_param_array(full_duplex, int, NULL, 0);
+module_param(gx_fix, int, 0);
 MODULE_PARM_DESC(max_interrupt_work, "G-NIC maximum events handled per interrupt");
 MODULE_PARM_DESC(mtu, "G-NIC MTU (all boards)");
 MODULE_PARM_DESC(debug, "G-NIC debug level (0-7)");
diff -puN drivers/net/znet.c~MODULE_PARM-allyes drivers/net/znet.c
--- 25/drivers/net/znet.c~MODULE_PARM-allyes	2004-11-29 14:48:41.962468240 -0800
+++ 25-akpm/drivers/net/znet.c	2004-11-29 14:48:42.271421272 -0800
@@ -113,7 +113,7 @@ static char version[] __initdata = "znet
 #define ZNET_DEBUG 1
 #endif
 static unsigned int znet_debug = ZNET_DEBUG;
-MODULE_PARM (znet_debug, "i");
+module_param (znet_debug, int, 0);
 MODULE_PARM_DESC (znet_debug, "ZNet debug level");
 MODULE_LICENSE("GPL");
 
diff -puN drivers/parport/parport_cs.c~MODULE_PARM-allyes drivers/parport/parport_cs.c
--- 25/drivers/parport/parport_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.964467936 -0800
+++ 25-akpm/drivers/parport/parport_cs.c	2004-11-29 14:48:42.271421272 -0800
@@ -64,12 +64,12 @@ MODULE_AUTHOR("David Hinds <dahinds@user
 MODULE_DESCRIPTION("PCMCIA parallel port card driver");
 MODULE_LICENSE("Dual MPL/GPL");
 
-#define INT_MODULE_PARM(n, v) static int n = v; MODULE_PARM(n, "i")
+#define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0)
 
 /* Bit map of interrupts to choose from */
 INT_MODULE_PARM(irq_mask, 0xdeb8);
 static int irq_list[4] = { -1 };
-MODULE_PARM(irq_list, "1-4i");
+module_param_array(irq_list, int, NULL, 0);
 
 INT_MODULE_PARM(epp_mode, 1);
 
diff -puN drivers/parport/parport_pc.c~MODULE_PARM-allyes drivers/parport/parport_pc.c
--- 25/drivers/parport/parport_pc.c~MODULE_PARM-allyes	2004-11-29 14:48:41.966467632 -0800
+++ 25-akpm/drivers/parport/parport_pc.c	2004-11-29 14:48:42.273420968 -0800
@@ -3193,7 +3193,7 @@ module_param(verbose_probing, int, 0644)
 #endif
 #ifdef CONFIG_PCI
 MODULE_PARM_DESC(init_mode, "Initialise mode for VIA VT8231 port (spp, ps2, epp, ecp or ecpepp)");
-MODULE_PARM(init_mode, "s");
+module_param(init_mode, charp, 0);
 #endif
 
 static int __init parse_parport_params(void)
diff -puN drivers/scsi/aacraid/aachba.c~MODULE_PARM-allyes drivers/scsi/aacraid/aachba.c
--- 25/drivers/scsi/aacraid/aachba.c~MODULE_PARM-allyes	2004-11-29 14:48:41.967467480 -0800
+++ 25-akpm/drivers/scsi/aacraid/aachba.c	2004-11-29 14:48:42.275420664 -0800
@@ -146,18 +146,18 @@ static char *aac_get_status_string(u32 s
  *	Non dasd selection is handled entirely in aachba now
  */	
  
-MODULE_PARM(nondasd, "i");
-MODULE_PARM_DESC(nondasd, "Control scanning of hba for nondasd devices. 0=off, 1=on");
-MODULE_PARM(dacmode, "i");
-MODULE_PARM_DESC(dacmode, "Control whether dma addressing is using 64 bit DAC. 0=off, 1=on");
-MODULE_PARM(commit, "i");
-MODULE_PARM_DESC(commit, "Control whether a COMMIT_CONFIG is issued to the adapter for foreign arrays.\nThis is typically needed in systems that do not have a BIOS. 0=off, 1=on");
-
 static int nondasd = -1;
 static int dacmode = -1;
 
 static int commit = -1;
 
+module_param(nondasd, int, 0);
+MODULE_PARM_DESC(nondasd, "Control scanning of hba for nondasd devices. 0=off, 1=on");
+module_param(dacmode, int, 0);
+MODULE_PARM_DESC(dacmode, "Control whether dma addressing is using 64 bit DAC. 0=off, 1=on");
+module_param(commit, int, 0);
+MODULE_PARM_DESC(commit, "Control whether a COMMIT_CONFIG is issued to the adapter for foreign arrays.\nThis is typically needed in systems that do not have a BIOS. 0=off, 1=on");
+
 /**
  *	aac_get_config_status	-	check the adapter configuration
  *	@common: adapter to query
diff -puN drivers/scsi/aic7xxx/aic79xx_osm.c~MODULE_PARM-allyes drivers/scsi/aic7xxx/aic79xx_osm.c
--- 25/drivers/scsi/aic7xxx/aic79xx_osm.c~MODULE_PARM-allyes	2004-11-29 14:48:41.969467176 -0800
+++ 25-akpm/drivers/scsi/aic7xxx/aic79xx_osm.c	2004-11-29 14:48:42.279420056 -0800
@@ -418,7 +418,7 @@ MODULE_AUTHOR("Maintainer: Justin T. Gib
 MODULE_DESCRIPTION("Adaptec Aic790X U320 SCSI Host Bus Adapter driver");
 MODULE_LICENSE("Dual BSD/GPL");
 MODULE_VERSION(AIC79XX_DRIVER_VERSION);
-MODULE_PARM(aic79xx, "s");
+module_param(aic79xx, charp, 0);
 MODULE_PARM_DESC(aic79xx,
 "period delimited, options string.\n"
 "	verbose			Enable verbose/diagnostic logging\n"
diff -puN drivers/scsi/fdomain.c~MODULE_PARM-allyes drivers/scsi/fdomain.c
--- 25/drivers/scsi/fdomain.c~MODULE_PARM-allyes	2004-11-29 14:48:41.971466872 -0800
+++ 25-akpm/drivers/scsi/fdomain.c	2004-11-29 14:48:42.280419904 -0800
@@ -409,7 +409,7 @@ static irqreturn_t       do_fdomain_16x0
 /* Allow insmod parameters to be like LILO parameters.  For example:
    insmod fdomain fdomain=0x140,11 */
 static char * fdomain = NULL;
-MODULE_PARM(fdomain, "s");
+module_param(fdomain, charp, 0);
 
 static unsigned long addresses[] = {
    0xc8000,
diff -puN drivers/scsi/g_NCR5380.c~MODULE_PARM-allyes drivers/scsi/g_NCR5380.c
--- 25/drivers/scsi/g_NCR5380.c~MODULE_PARM-allyes	2004-11-29 14:48:41.973466568 -0800
+++ 25-akpm/drivers/scsi/g_NCR5380.c	2004-11-29 14:48:42.281419752 -0800
@@ -920,13 +920,13 @@ static Scsi_Host_Template driver_templat
 #include <linux/module.h>
 #include "scsi_module.c"
 
-MODULE_PARM(ncr_irq, "i");
-MODULE_PARM(ncr_dma, "i");
-MODULE_PARM(ncr_addr, "i");
-MODULE_PARM(ncr_5380, "i");
-MODULE_PARM(ncr_53c400, "i");
-MODULE_PARM(ncr_53c400a, "i");
-MODULE_PARM(dtc_3181e, "i");
+module_param(ncr_irq, int, 0);
+module_param(ncr_dma, int, 0);
+module_param(ncr_addr, int, 0);
+module_param(ncr_5380, int, 0);
+module_param(ncr_53c400, int, 0);
+module_param(ncr_53c400a, int, 0);
+module_param(dtc_3181e, int, 0);
 MODULE_LICENSE("GPL");
 
 
diff -puN drivers/scsi/in2000.c~MODULE_PARM-allyes drivers/scsi/in2000.c
--- 25/drivers/scsi/in2000.c~MODULE_PARM-allyes	2004-11-29 14:48:41.974466416 -0800
+++ 25-akpm/drivers/scsi/in2000.c	2004-11-29 14:48:42.283419448 -0800
@@ -186,7 +186,7 @@ static char *setup_args[] = { "", "", ""
 /* filled in by 'insmod' */
 static char *setup_strings;
 
-MODULE_PARM(setup_strings, "s");
+module_param(setup_strings, charp, 0);
 
 static inline uchar read_3393(struct IN2000_hostdata *hostdata, uchar reg_num)
 {
diff -puN drivers/scsi/NCR_D700.c~MODULE_PARM-allyes drivers/scsi/NCR_D700.c
--- 25/drivers/scsi/NCR_D700.c~MODULE_PARM-allyes	2004-11-29 14:48:41.976466112 -0800
+++ 25-akpm/drivers/scsi/NCR_D700.c	2004-11-29 14:48:42.284419296 -0800
@@ -111,7 +111,7 @@ char *NCR_D700;			/* command line from i
 MODULE_AUTHOR("James Bottomley");
 MODULE_DESCRIPTION("NCR Dual700 SCSI Driver");
 MODULE_LICENSE("GPL");
-MODULE_PARM(NCR_D700, "s");
+module_param(NCR_D700, charp, 0);
 
 static __u8 __initdata id_array[2*(MCA_MAX_SLOT_NR + 1)] =
 	{ [0 ... 2*(MCA_MAX_SLOT_NR + 1)-1] = 7 };
diff -puN drivers/scsi/nsp32.c~MODULE_PARM-allyes drivers/scsi/nsp32.c
--- 25/drivers/scsi/nsp32.c~MODULE_PARM-allyes	2004-11-29 14:48:41.978465808 -0800
+++ 25-akpm/drivers/scsi/nsp32.c	2004-11-29 14:48:42.286418992 -0800
@@ -60,17 +60,17 @@
  * Module parameters
  */
 static int       trans_mode = 0;	/* default: BIOS */
-MODULE_PARM     (trans_mode, "i");
+module_param     (trans_mode, int, 0);
 MODULE_PARM_DESC(trans_mode, "transfer mode (0: BIOS(default) 1: Async 2: Ultra20M");
 #define ASYNC_MODE    1
 #define ULTRA20M_MODE 2
 
 static int       auto_param = 0;	/* default: ON */
-MODULE_PARM     (auto_param, "i");
+module_param     (auto_param, bool, 0);
 MODULE_PARM_DESC(auto_param, "AutoParameter mode (0: ON(default) 1: OFF)");
 
 static int       disc_priv  = 1;	/* default: OFF */
-MODULE_PARM     (disc_priv,  "i");
+module_param     (disc_priv, bool, 0);
 MODULE_PARM_DESC(disc_priv,  "disconnection privilege mode (0: ON 1: OFF(default))");
 
 MODULE_AUTHOR("YOKOTA Hiroshi <yokota@netlab.is.tsukuba.ac.jp>, GOTO Masanori <gotom@debian.or.jp>");
diff -puN drivers/scsi/pcmcia/aha152x_stub.c~MODULE_PARM-allyes drivers/scsi/pcmcia/aha152x_stub.c
--- 25/drivers/scsi/pcmcia/aha152x_stub.c~MODULE_PARM-allyes	2004-11-29 14:48:41.979465656 -0800
+++ 25-akpm/drivers/scsi/pcmcia/aha152x_stub.c	2004-11-29 14:48:42.287418840 -0800
@@ -82,14 +82,14 @@ static int synchronous = 1;
 static int reset_delay = 100;
 static int ext_trans = 0;
 
-MODULE_PARM(irq_mask, "i");
-MODULE_PARM(irq_list, "1-4i");
-MODULE_PARM(host_id, "i");
-MODULE_PARM(reconnect, "i");
-MODULE_PARM(parity, "i");
-MODULE_PARM(synchronous, "i");
-MODULE_PARM(reset_delay, "i");
-MODULE_PARM(ext_trans, "i");
+module_param(irq_mask, int, 0);
+module_param_array(irq_list, int, NULL, 0);
+module_param(host_id, int, 0);
+module_param(reconnect, int, 0);
+module_param(parity, int, 0);
+module_param(synchronous, int, 0);
+module_param(reset_delay, int, 0);
+module_param(ext_trans, int, 0);
 
 MODULE_LICENSE("Dual MPL/GPL");
 
diff -puN drivers/scsi/pcmcia/fdomain_stub.c~MODULE_PARM-allyes drivers/scsi/pcmcia/fdomain_stub.c
--- 25/drivers/scsi/pcmcia/fdomain_stub.c~MODULE_PARM-allyes	2004-11-29 14:48:41.980465504 -0800
+++ 25-akpm/drivers/scsi/pcmcia/fdomain_stub.c	2004-11-29 14:48:42.288418688 -0800
@@ -63,13 +63,13 @@ MODULE_LICENSE("Dual MPL/GPL");
 
 /* Bit map of interrupts to choose from */
 static int irq_mask = 0xdeb8;
-MODULE_PARM(irq_mask, "i");
+module_param(irq_mask, int, 0);
 static int irq_list[4] = { -1 };
-MODULE_PARM(irq_list, "1-4i");
+module_param_array(irq_list, int, NULL, 0);
 
 #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 =
 "fdomain_cs.c 1.47 2001/10/13 00:08:52 (David Hinds)";
diff -puN drivers/scsi/pcmcia/nsp_cs.c~MODULE_PARM-allyes drivers/scsi/pcmcia/nsp_cs.c
--- 25/drivers/scsi/pcmcia/nsp_cs.c~MODULE_PARM-allyes	2004-11-29 14:48:41.982465200 -0800
+++ 25-akpm/drivers/scsi/pcmcia/nsp_cs.c	2004-11-29 14:48:42.289418536 -0800
@@ -73,20 +73,20 @@ MODULE_LICENSE("GPL");
 /* Parameters that can be set with 'insmod' */
 
 static unsigned int irq_mask = 0xffff;
-MODULE_PARM     (irq_mask, "i");
+module_param(irq_mask, int, 0);
 MODULE_PARM_DESC(irq_mask, "IRQ mask bits (default: 0xffff)");
 
 static int       irq_list[4] = { -1 };
-MODULE_PARM     (irq_list, "1-4i");
+module_param_array(irq_list, int, NULL, 0);
 MODULE_PARM_DESC(irq_list, "Use specified IRQ number. (default: auto select)");
 
 static int       nsp_burst_mode = BURST_MEM32;
-MODULE_PARM     (nsp_burst_mode, "i");
+module_param(nsp_burst_mode, int, 0);
 MODULE_PARM_DESC(nsp_burst_mode, "Burst transfer mode (0=io8, 1=io32, 2=mem32(default))");
 
 /* Release IO ports after configuration? */
 static int       free_ports = 0;
-MODULE_PARM     (free_ports, "i");
+module_param(free_ports, bool, 0);
 MODULE_PARM_DESC(free_ports, "Release IO ports after configuration? (default: 0 (=no))");
 
 /* /usr/src/linux/drivers/scsi/hosts.h */
diff -puN drivers/scsi/pcmcia/qlogic_stub.c~MODULE_PARM-allyes drivers/scsi/pcmcia/qlogic_stub.c
--- 25/drivers/scsi/pcmcia/qlogic_stub.c~MODULE_PARM-allyes	2004-11-29 14:48:41.983465048 -0800
+++ 25-akpm/drivers/scsi/pcmcia/qlogic_stub.c	2004-11-29 14:48:42.290418384 -0800
@@ -99,8 +99,8 @@ static Scsi_Host_Template qlogicfas_driv
 static unsigned int irq_mask = 0xdeb8;
 static int irq_list[4] = { -1 };
 
-MODULE_PARM(irq_mask, "i");
-MODULE_PARM(irq_list, "1-4i");
+module_param(irq_mask, int, 0);
+module_param_array(irq_list, int, NULL, 0);
 
 /*====================================================================*/
 
diff -puN drivers/scsi/qlogicfas.c~MODULE_PARM-allyes drivers/scsi/qlogicfas.c
--- 25/drivers/scsi/qlogicfas.c~MODULE_PARM-allyes	2004-11-29 14:48:41.984464896 -0800
+++ 25-akpm/drivers/scsi/qlogicfas.c	2004-11-29 14:48:42.290418384 -0800
@@ -137,8 +137,8 @@ err:
 static struct qlogicfas408_priv *cards;
 static int iobase[MAX_QLOGICFAS];
 static int irq[MAX_QLOGICFAS] = { [0 ... MAX_QLOGICFAS-1] = -1 };
-MODULE_PARM(iobase, "1-" __MODULE_STRING(MAX_QLOGICFAS) "i");
-MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_QLOGICFAS) "i");
+module_param_array(iobase, int, NULL, 0);
+module_param_array(irq, int, NULL, 0);
 MODULE_PARM_DESC(iobase, "I/O address");
 MODULE_PARM_DESC(irq, "IRQ");
 
diff -puN drivers/scsi/sim710.c~MODULE_PARM-allyes drivers/scsi/sim710.c
--- 25/drivers/scsi/sim710.c~MODULE_PARM-allyes	2004-11-29 14:48:41.986464592 -0800
+++ 25-akpm/drivers/scsi/sim710.c	2004-11-29 14:48:42.291418232 -0800
@@ -53,7 +53,7 @@ MODULE_AUTHOR("Richard Hirst");
 MODULE_DESCRIPTION("Simple NCR53C710 driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(sim710, "s");
+module_param(sim710, charp, 0);
 
 #ifdef MODULE
 #define ARG_SEP ' '
diff -puN drivers/telephony/ixj.c~MODULE_PARM-allyes drivers/telephony/ixj.c
--- 25/drivers/telephony/ixj.c~MODULE_PARM-allyes	2004-11-29 14:48:41.988464288 -0800
+++ 25-akpm/drivers/telephony/ixj.c	2004-11-29 14:48:42.298417168 -0800
@@ -285,7 +285,7 @@ static int ixjdebug;
 static int hertz = HZ;
 static int samplerate = 100;
 
-MODULE_PARM(ixjdebug, "i");
+module_param(ixjdebug, int, 0);
 
 /************************************************************************
 *
@@ -7612,8 +7612,8 @@ static int xio[IXJMAX + 1] =
 	0,
 };
 
-MODULE_PARM(dspio, "1-" __MODULE_STRING(IXJMAX) "i");
-MODULE_PARM(xio, "1-" __MODULE_STRING(IXJMAX) "i");
+module_param_array(dspio, int, NULL, 0);
+module_param_array(xio, int, NULL, 0);
 MODULE_DESCRIPTION("Quicknet VoIP Telephony card module - www.quicknet.net");
 MODULE_AUTHOR("Ed Okerson <eokerson@quicknet.net>");
 MODULE_LICENSE("GPL");
diff -puN drivers/video/console/mdacon.c~MODULE_PARM-allyes drivers/video/console/mdacon.c
--- 25/drivers/video/console/mdacon.c~MODULE_PARM-allyes	2004-11-29 14:48:41.990463984 -0800
+++ 25-akpm/drivers/video/console/mdacon.c	2004-11-29 14:48:42.299417016 -0800
@@ -79,8 +79,8 @@ static int	mda_last_vc  = 16;
 
 static struct vc_data	*mda_display_fg = NULL;
 
-MODULE_PARM(mda_first_vc, "1-255i");
-MODULE_PARM(mda_last_vc,  "1-255i");
+module_param(mda_first_vc, int, 0);
+module_param(mda_last_vc, int, 0);
 
 /* MDA register values
  */
diff -puN drivers/video/cyber2000fb.c~MODULE_PARM-allyes drivers/video/cyber2000fb.c
--- 25/drivers/video/cyber2000fb.c~MODULE_PARM-allyes	2004-11-29 14:48:41.991463832 -0800
+++ 25-akpm/drivers/video/cyber2000fb.c	2004-11-29 14:48:42.301416712 -0800
@@ -94,7 +94,7 @@ struct cfb_info {
 
 static char default_font_storage[40];
 static char *default_font = "Acorn8x8";
-MODULE_PARM(default_font, "s");
+module_param(default_font, charp, 0);
 MODULE_PARM_DESC(default_font, "Default font name");
 
 /*
diff -puN drivers/video/hgafb.c~MODULE_PARM-allyes drivers/video/hgafb.c
--- 25/drivers/video/hgafb.c~MODULE_PARM-allyes	2004-11-29 14:48:41.993463528 -0800
+++ 25-akpm/drivers/video/hgafb.c	2004-11-29 14:48:42.301416712 -0800
@@ -618,7 +618,7 @@ MODULE_AUTHOR("Ferenc Bakonyi (fero@dram
 MODULE_DESCRIPTION("FBDev driver for Hercules Graphics Adaptor");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(nologo, "i");
+module_param(nologo, bool, 0);
 MODULE_PARM_DESC(nologo, "Disables startup logo if != 0 (default=0)");
 module_init(hgafb_init);
 
diff -puN drivers/video/matrox/matroxfb_crtc2.c~MODULE_PARM-allyes drivers/video/matrox/matroxfb_crtc2.c
--- 25/drivers/video/matrox/matroxfb_crtc2.c~MODULE_PARM-allyes	2004-11-29 14:48:41.994463376 -0800
+++ 25-akpm/drivers/video/matrox/matroxfb_crtc2.c	2004-11-29 14:48:42.302416560 -0800
@@ -21,7 +21,7 @@
 
 static int mem = 8192;
 
-MODULE_PARM(mem, "i");
+module_param(mem, int, 0);
 MODULE_PARM_DESC(mem, "Memory size reserved for dualhead (default=8MB)");
 
 /* **************************************************** */
diff -puN drivers/video/pm2fb.c~MODULE_PARM-allyes drivers/video/pm2fb.c
--- 25/drivers/video/pm2fb.c~MODULE_PARM-allyes	2004-11-29 14:48:41.996463072 -0800
+++ 25-akpm/drivers/video/pm2fb.c	2004-11-29 14:48:42.303416408 -0800
@@ -1279,9 +1279,9 @@ int __init pm2fb_setup(char *options)
 module_init(pm2fb_init);
 module_exit(pm2fb_exit);
 
-MODULE_PARM(mode,"s");
-MODULE_PARM(lowhsync,"i");
-MODULE_PARM(lowvsync,"i");
+module_param(mode, charp, 0);
+module_param(lowhsync, int, 0);
+module_param(lowvsync, int, 0);
 
 MODULE_AUTHOR("Jim Hague <jim.hague@acm.org>");
 MODULE_DESCRIPTION("Permedia2 framebuffer device driver");
diff -puN drivers/video/sstfb.c~MODULE_PARM-allyes drivers/video/sstfb.c
--- 25/drivers/video/sstfb.c~MODULE_PARM-allyes	2004-11-29 14:48:41.997462920 -0800
+++ 25-akpm/drivers/video/sstfb.c	2004-11-29 14:48:42.304416256 -0800
@@ -1706,14 +1706,14 @@ MODULE_AUTHOR("(c) 2000,2002 Ghozlane To
 MODULE_DESCRIPTION("FBDev driver for 3dfx Voodoo Graphics and Voodoo2 based video boards");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(mem, "i");
+module_param(mem, int, 0);
 MODULE_PARM_DESC(mem, "Size of frame buffer memory in MB (1, 2, 4 MB, default=autodetect)");
-MODULE_PARM(vgapass, "i");
+module_param(vgapass, bool, 0);
 MODULE_PARM_DESC(vgapass, "Enable VGA PassThrough mode (0 or 1) (default=0)");
-MODULE_PARM(clipping , "i");
+module_param(clipping, bool, 0);
 MODULE_PARM_DESC(clipping, "Enable clipping (slower, safer) (0 or 1) (default=1)");
-MODULE_PARM(gfxclk , "i");
+module_param(gfxclk, int, 0);
 MODULE_PARM_DESC(gfxclk, "Force graphic chip frequency in MHz. DANGEROUS. (default=auto)");
-MODULE_PARM(slowpci, "i");
+module_param(slowpci, bool, 0);
 MODULE_PARM_DESC(slowpci, "Uses slow PCI settings (0 or 1) (default=0)");
 
diff -puN drivers/video/tridentfb.c~MODULE_PARM-allyes drivers/video/tridentfb.c
--- 25/drivers/video/tridentfb.c~MODULE_PARM-allyes	2004-11-29 14:48:41.998462768 -0800
+++ 25-akpm/drivers/video/tridentfb.c	2004-11-29 14:48:42.306415952 -0800
@@ -76,16 +76,16 @@ static int memdiff;
 static int nativex;
 
 
-MODULE_PARM(mode,"s");
-MODULE_PARM(bpp,"i");
-MODULE_PARM(center,"i");
-MODULE_PARM(stretch,"i");
-MODULE_PARM(noaccel,"i");
-MODULE_PARM(memsize,"i");
-MODULE_PARM(memdiff,"i");
-MODULE_PARM(nativex,"i");
-MODULE_PARM(fp,"i");
-MODULE_PARM(crt,"i");
+module_param(mode, charp, 0);
+module_param(bpp, int, 0);
+module_param(center, int, 0);
+module_param(stretch, int, 0);
+module_param(noaccel, int, 0);
+module_param(memsize, int, 0);
+module_param(memdiff, int, 0);
+module_param(nativex, int, 0);
+module_param(fp, int, 0);
+module_param(crt, int, 0);
 
 
 static int chip3D;
diff -puN drivers/video/vfb.c~MODULE_PARM-allyes drivers/video/vfb.c
--- 25/drivers/video/vfb.c~MODULE_PARM-allyes	2004-11-29 14:48:42.000462464 -0800
+++ 25-akpm/drivers/video/vfb.c	2004-11-29 14:48:42.306415952 -0800
@@ -35,7 +35,7 @@
 
 static void *videomemory;
 static u_long videomemorysize = VIDEOMEMSIZE;
-MODULE_PARM(videomemorysize, "l");
+module_param(videomemorysize, ulong, 0);
 
 static struct fb_var_screeninfo vfb_default __initdata = {
 	.xres =		640,
@@ -70,7 +70,7 @@ static struct fb_fix_screeninfo vfb_fix 
 };
 
 static int vfb_enable __initdata = 0;	/* disabled by default */
-MODULE_PARM(vfb_enable, "i");
+module_param(vfb_enable, bool, 0);
 
     /*
      *  Interface used by the world
diff -puN sound/oss/aci.c~MODULE_PARM-allyes sound/oss/aci.c
--- 25/sound/oss/aci.c~MODULE_PARM-allyes	2004-11-29 14:48:42.001462312 -0800
+++ 25-akpm/sound/oss/aci.c	2004-11-29 14:48:58.128010704 -0800
@@ -83,18 +83,18 @@ static struct semaphore aci_sem;
 
 #ifdef MODULE
 static int reset;
-MODULE_PARM(reset,"i");
+module_param(reset, bool, 0);
 MODULE_PARM_DESC(reset,"When set to 1, reset aci mixer.");
 #else
 static int reset = 1;
 #endif
 
 static int ide=-1;
-MODULE_PARM(ide,"i");
+module_param(ide, int, 0);
 MODULE_PARM_DESC(ide,"1 enable, 0 disable ide-port - untested"
 		 " default: do nothing");
 static int wss=-1;
-MODULE_PARM(wss,"i");
+module_param(wss, int, 0);
 MODULE_PARM_DESC(wss,"change between ACI/WSS-mixer; use 0 and 1 - untested"
 		 " default: do nothing; for PCM1-pro only");
 
diff -puN sound/oss/ad1816.c~MODULE_PARM-allyes sound/oss/ad1816.c
--- 25/sound/oss/ad1816.c~MODULE_PARM-allyes	2004-11-29 14:48:42.003462008 -0800
+++ 25-akpm/sound/oss/ad1816.c	2004-11-29 14:48:42.308415648 -0800
@@ -1215,16 +1215,16 @@ static int __initdata dma2 = -1;
 /* use isapnp for configuration */
 static int isapnp	= 1;
 static int isapnpjump;
-MODULE_PARM(isapnp, "i");
-MODULE_PARM(isapnpjump, "i");
+module_param(isapnp, bool, 0);
+module_param(isapnpjump, int, 0);
 #endif
 
-MODULE_PARM(io,"i");
-MODULE_PARM(irq,"i");
-MODULE_PARM(dma,"i");
-MODULE_PARM(dma2,"i");
-MODULE_PARM(ad1816_clockfreq,"i");
-MODULE_PARM(options,"i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(dma, int, 0);
+module_param(dma2, int, 0);
+module_param(ad1816_clockfreq, int, 0);
+module_param(options, int, 0);
 
 #ifdef __ISAPNP__
 static struct {
diff -puN sound/oss/ad1848.c~MODULE_PARM-allyes sound/oss/ad1848.c
--- 25/sound/oss/ad1848.c~MODULE_PARM-allyes	2004-11-29 14:48:42.004461856 -0800
+++ 25-akpm/sound/oss/ad1848.c	2004-11-29 14:48:42.310415344 -0800
@@ -2905,19 +2905,19 @@ static int __initdata dma = -1;
 static int __initdata dma2 = -1;
 static int __initdata type = 0;
 
-MODULE_PARM(io, "i");                   /* I/O for a raw AD1848 card */
-MODULE_PARM(irq, "i");                  /* IRQ to use */
-MODULE_PARM(dma, "i");                  /* First DMA channel */
-MODULE_PARM(dma2, "i");                 /* Second DMA channel */
-MODULE_PARM(type, "i");                 /* Card type */
-MODULE_PARM(deskpro_xl, "i");           /* Special magic for Deskpro XL boxen */
-MODULE_PARM(deskpro_m, "i");            /* Special magic for Deskpro M box */
-MODULE_PARM(soundpro, "i");             /* More special magic for SoundPro chips */
+module_param(io, int, 0);		/* I/O for a raw AD1848 card */
+module_param(irq, int, 0);		/* IRQ to use */
+module_param(dma, int, 0);		/* First DMA channel */
+module_param(dma2, int, 0);		/* Second DMA channel */
+module_param(type, int, 0);		/* Card type */
+module_param(deskpro_xl, bool, 0);	/* Special magic for Deskpro XL boxen */
+module_param(deskpro_m, bool, 0);	/* Special magic for Deskpro M box */
+module_param(soundpro, bool, 0);	/* More special magic for SoundPro chips */
 
 #ifdef CONFIG_PNP
-MODULE_PARM(isapnp,	"i");
-MODULE_PARM(isapnpjump,	"i");
-MODULE_PARM(reverse,	"i");
+module_param(isapnp, int, 0);
+module_param(isapnpjump, int, 0);
+module_param(reverse, bool, 0);
 MODULE_PARM_DESC(isapnp,	"When set to 0, Plug & Play support will be disabled");
 MODULE_PARM_DESC(isapnpjump,	"Jumps to a specific slot in the driver's PnP table. Use the source, Luke.");
 MODULE_PARM_DESC(reverse,	"When set to 1, will reverse ISAPnP search order");
diff -puN sound/oss/adlib_card.c~MODULE_PARM-allyes sound/oss/adlib_card.c
--- 25/sound/oss/adlib_card.c~MODULE_PARM-allyes	2004-11-29 14:48:42.006461552 -0800
+++ 25-akpm/sound/oss/adlib_card.c	2004-11-29 14:48:42.311415192 -0800
@@ -31,7 +31,7 @@ static struct address_info cfg;
 
 static int __initdata io = -1;
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 
 static int __init init_adlib(void)
 {
diff -puN sound/oss/aedsp16.c~MODULE_PARM-allyes sound/oss/aedsp16.c
--- 25/sound/oss/aedsp16.c~MODULE_PARM-allyes	2004-11-29 14:48:42.007461400 -0800
+++ 25-akpm/sound/oss/aedsp16.c	2004-11-29 14:48:42.312415040 -0800
@@ -1311,17 +1311,17 @@ static int __initdata mpu_irq = -1;
 static int __initdata mss_base = -1;
 static int __initdata mpu_base = -1;
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "I/O base address (0x220 0x240)");
-MODULE_PARM(irq, "i");
+module_param(irq, int, 0);
 MODULE_PARM_DESC(irq, "IRQ line (5 7 9 10 11)");
-MODULE_PARM(dma, "i");
+module_param(dma, int, 0);
 MODULE_PARM_DESC(dma, "dma line (0 1 3)");
-MODULE_PARM(mpu_irq, "i");
+module_param(mpu_irq, int, 0);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ line (5 7 9 10 0)");
-MODULE_PARM(mss_base, "i");
+module_param(mss_base, int, 0);
 MODULE_PARM_DESC(mss_base, "MSS emulation I/O base address (0x530 0xE80)");
-MODULE_PARM(mpu_base, "i");
+module_param(mpu_base, int, 0);
 MODULE_PARM_DESC(mpu_base,"MPU-401 I/O base address (0x300 0x310 0x320 0x330)");
 MODULE_AUTHOR("Riccardo Facchetti <fizban@tin.it>");
 MODULE_DESCRIPTION("Audio Excel DSP 16 Driver Version " VERSION);
diff -puN sound/oss/ali5455.c~MODULE_PARM-allyes sound/oss/ali5455.c
--- 25/sound/oss/ali5455.c~MODULE_PARM-allyes	2004-11-29 14:48:42.009461096 -0800
+++ 25-akpm/sound/oss/ali5455.c	2004-11-29 14:48:42.315414584 -0800
@@ -3651,12 +3651,13 @@ static int ali_pm_resume(struct pci_dev 
 MODULE_AUTHOR("");
 MODULE_DESCRIPTION("ALI 5455 audio support");
 MODULE_LICENSE("GPL");
-MODULE_PARM(clocking, "i");
-MODULE_PARM(strict_clocking, "i");
-MODULE_PARM(codec_pcmout_share_spdif_locked, "i");
-MODULE_PARM(codec_independent_spdif_locked, "i");
-MODULE_PARM(controller_pcmout_share_spdif_locked, "i");
-MODULE_PARM(controller_independent_spdif_locked, "i");
+module_param(clocking, int, 0);
+/* FIXME: bool? */
+module_param(strict_clocking, uint, 0);
+module_param(codec_pcmout_share_spdif_locked, uint, 0);
+module_param(codec_independent_spdif_locked, uint, 0);
+module_param(controller_pcmout_share_spdif_locked, uint, 0);
+module_param(controller_independent_spdif_locked, uint, 0);
 #define ALI5455_MODULE_NAME "ali5455"
 static struct pci_driver ali_pci_driver = {
 	.name		= ALI5455_MODULE_NAME,
diff -puN sound/oss/awe_wave.c~MODULE_PARM-allyes sound/oss/awe_wave.c
--- 25/sound/oss/awe_wave.c~MODULE_PARM-allyes	2004-11-29 14:48:42.011460792 -0800
+++ 25-akpm/sound/oss/awe_wave.c	2004-11-29 14:48:42.319413976 -0800
@@ -219,11 +219,11 @@ MODULE_AUTHOR("Takashi Iwai <iwai@ww.uni
 MODULE_DESCRIPTION("SB AWE32/64 WaveTable driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "base i/o port of Emu8000");
-MODULE_PARM(memsize, "i");
+module_param(memsize, int, 0);
 MODULE_PARM_DESC(memsize, "onboard DRAM size in Kbytes");
-MODULE_PARM(isapnp, "i");
+module_param(isapnp, bool, 0);
 MODULE_PARM_DESC(isapnp, "use ISAPnP detection");
 
 /* DRAM start offset */
diff -puN sound/oss/cmpci.c~MODULE_PARM-allyes sound/oss/cmpci.c
--- 25/sound/oss/cmpci.c~MODULE_PARM-allyes	2004-11-29 14:48:42.013460488 -0800
+++ 25-akpm/sound/oss/cmpci.c	2004-11-29 14:48:42.322413520 -0800
@@ -479,17 +479,17 @@ static	int	use_line_as_bass = 0;
 static	int	use_mic_as_bass = 0;
 static	int	mic_boost = 0;
 static	int	hw_copy = 0;
-MODULE_PARM(mpuio, "i");
-MODULE_PARM(fmio, "i");
-MODULE_PARM(joystick, "i");
-MODULE_PARM(spdif_inverse, "i");
-MODULE_PARM(spdif_loop, "i");
-MODULE_PARM(spdif_out, "i");
-MODULE_PARM(use_line_as_rear, "i");
-MODULE_PARM(use_line_as_bass, "i");
-MODULE_PARM(use_mic_as_bass, "i");
-MODULE_PARM(mic_boost, "i");
-MODULE_PARM(hw_copy, "i");
+module_param(mpuio, int, 0);
+module_param(fmio, int, 0);
+module_param(joystick, bool, 0);
+module_param(spdif_inverse, bool, 0);
+module_param(spdif_loop, bool, 0);
+module_param(spdif_out, bool, 0);
+module_param(use_line_as_rear, bool, 0);
+module_param(use_line_as_bass, bool, 0);
+module_param(use_mic_as_bass, bool, 0);
+module_param(mic_boost, bool, 0);
+module_param(hw_copy, bool, 0);
 MODULE_PARM_DESC(mpuio, "(0x330, 0x320, 0x310, 0x300) Base of MPU-401, 0 to disable");
 MODULE_PARM_DESC(fmio, "(0x388, 0x3C8, 0x3E0) Base of OPL3, 0 to disable");
 MODULE_PARM_DESC(joystick, "(1/0) Enable joystick interface, still need joystick driver");
diff -puN sound/oss/cs4232.c~MODULE_PARM-allyes sound/oss/cs4232.c
--- 25/sound/oss/cs4232.c~MODULE_PARM-allyes	2004-11-29 14:48:42.014460336 -0800
+++ 25-akpm/sound/oss/cs4232.c	2004-11-29 14:48:42.323413368 -0800
@@ -363,25 +363,25 @@ MODULE_DESCRIPTION("CS4232 based soundca
 MODULE_AUTHOR("Hannu Savolainen, Paul Barton-Davis"); 
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(io,"i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io,"base I/O port for AD1848");
-MODULE_PARM(irq,"i");
+module_param(irq, int, 0);
 MODULE_PARM_DESC(irq,"IRQ for AD1848 chip");
-MODULE_PARM(dma,"i");
+module_param(dma, int, 0);
 MODULE_PARM_DESC(dma,"8 bit DMA for AD1848 chip");
-MODULE_PARM(dma2,"i");
+module_param(dma2, int, 0);
 MODULE_PARM_DESC(dma2,"16 bit DMA for AD1848 chip");
-MODULE_PARM(mpuio,"i");
+module_param(mpuio, int, 0);
 MODULE_PARM_DESC(mpuio,"MPU 401 base address");
-MODULE_PARM(mpuirq,"i");
+module_param(mpuirq, int, 0);
 MODULE_PARM_DESC(mpuirq,"MPU 401 IRQ");
-MODULE_PARM(synthio,"i");
+module_param(synthio, int, 0);
 MODULE_PARM_DESC(synthio,"Maui WaveTable base I/O port");
-MODULE_PARM(synthirq,"i");
+module_param(synthirq, int, 0);
 MODULE_PARM_DESC(synthirq,"Maui WaveTable IRQ");
-MODULE_PARM(isapnp,"i");
+module_param(isapnp, bool, 0);
 MODULE_PARM_DESC(isapnp,"Enable ISAPnP probing (default 1)");
-MODULE_PARM(bss,"i");
+module_param(bss, bool, 0);
 MODULE_PARM_DESC(bss,"Enable Bose Sound System Support (default 0)");
 
 /*
diff -puN sound/oss/cs4281/cs4281m.c~MODULE_PARM-allyes sound/oss/cs4281/cs4281m.c
--- 25/sound/oss/cs4281/cs4281m.c~MODULE_PARM-allyes	2004-11-29 14:48:42.016460032 -0800
+++ 25-akpm/sound/oss/cs4281/cs4281m.c	2004-11-29 14:48:42.326412912 -0800
@@ -111,7 +111,7 @@ static void start_adc(struct cs4281_stat
 // rather than 64k as some of the games work more responsively.
 // log base 2( buff sz = 32k).
 static unsigned long defaultorder = 3;
-MODULE_PARM(defaultorder, "i");
+module_param(defaultorder, ulong, 0);
 
 //
 // Turn on/off debugging compilation by commenting out "#define CSDEBUG"
@@ -159,8 +159,8 @@ MODULE_PARM(defaultorder, "i");
 #if CSDEBUG
 static unsigned long cs_debuglevel = 1;	// levels range from 1-9
 static unsigned long cs_debugmask = CS_INIT | CS_ERROR;	// use CS_DBGOUT with various mask values
-MODULE_PARM(cs_debuglevel, "i");
-MODULE_PARM(cs_debugmask, "i");
+module_param(cs_debuglevel, ulong, 0);
+module_param(cs_debugmask, ulong, 0);
 #endif
 #define CS_TRUE 	1
 #define CS_FALSE 	0
diff -puN sound/oss/cs46xx.c~MODULE_PARM-allyes sound/oss/cs46xx.c
--- 25/sound/oss/cs46xx.c~MODULE_PARM-allyes	2004-11-29 14:48:42.018459728 -0800
+++ 25-akpm/sound/oss/cs46xx.c	2004-11-29 14:48:42.330412304 -0800
@@ -175,24 +175,24 @@
 
 #if CSDEBUG
 static unsigned long cs_debuglevel=1;			/* levels range from 1-9 */
-MODULE_PARM(cs_debuglevel, "i");
+module_param(cs_debuglevel, ulong, 0644);
 static unsigned long cs_debugmask=CS_INIT | CS_ERROR;	/* use CS_DBGOUT with various mask values */
-MODULE_PARM(cs_debugmask, "i");
+module_param(cs_debugmask, ulong, 0644);
 #endif
 static unsigned long hercules_egpio_disable;  /* if non-zero set all EGPIO to 0 */
-MODULE_PARM(hercules_egpio_disable, "i");
+module_param(hercules_egpio_disable, ulong, 0);
 static unsigned long initdelay=700;  /* PM delay in millisecs */
-MODULE_PARM(initdelay, "i");
+module_param(initdelay, ulong, 0);
 static unsigned long powerdown=-1;  /* turn on/off powerdown processing in driver */
-MODULE_PARM(powerdown, "i");
+module_param(powerdown, ulong, 0);
 #define DMABUF_DEFAULTORDER 3
 static unsigned long defaultorder=DMABUF_DEFAULTORDER;
-MODULE_PARM(defaultorder, "i");
+module_param(defaultorder, ulong, 0);
 
 static int external_amp;
-MODULE_PARM(external_amp, "i");
+module_param(external_amp, bool, 0);
 static int thinkpad;
-MODULE_PARM(thinkpad, "i");
+module_param(thinkpad, bool, 0);
 
 /*
 * set the powerdown module parm to 0 to disable all 
diff -puN sound/oss/es1370.c~MODULE_PARM-allyes sound/oss/es1370.c
--- 25/sound/oss/es1370.c~MODULE_PARM-allyes	2004-11-29 14:48:42.020459424 -0800
+++ 25-akpm/sound/oss/es1370.c	2004-11-29 14:48:42.333411848 -0800
@@ -2525,9 +2525,9 @@ static int micbias[NR_DEVICE];
 
 static unsigned int devindex;
 
-MODULE_PARM(lineout, "1-" __MODULE_STRING(NR_DEVICE) "i");
+module_param_array(lineout, bool, NULL, 0);
 MODULE_PARM_DESC(lineout, "if 1 the LINE input is converted to LINE out");
-MODULE_PARM(micbias, "1-" __MODULE_STRING(NR_DEVICE) "i");
+module_param_array(micbias, bool, NULL, 0);
 MODULE_PARM_DESC(micbias, "sets the +5V bias for an electret microphone");
 
 MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
diff -puN sound/oss/es1371.c~MODULE_PARM-allyes sound/oss/es1371.c
--- 25/sound/oss/es1371.c~MODULE_PARM-allyes	2004-11-29 14:48:42.022459120 -0800
+++ 25-akpm/sound/oss/es1371.c	2004-11-29 14:48:42.335411544 -0800
@@ -2741,11 +2741,11 @@ static int amplifier[NR_DEVICE];
 
 static unsigned int devindex;
 
-MODULE_PARM(spdif, "1-" __MODULE_STRING(NR_DEVICE) "i");
+module_param_array(spdif, bool, NULL, 0);
 MODULE_PARM_DESC(spdif, "if 1 the output is in S/PDIF digital mode");
-MODULE_PARM(nomix, "1-" __MODULE_STRING(NR_DEVICE) "i");
+module_param_array(nomix, bool, NULL, 0);
 MODULE_PARM_DESC(nomix, "if 1 no analog audio is mixed to the digital output");
-MODULE_PARM(amplifier, "1-" __MODULE_STRING(NR_DEVICE) "i");
+module_param_array(amplifier, bool, NULL, 0);
 MODULE_PARM_DESC(amplifier, "Set to 1 if the machine needs the amp control enabling (many laptops)");
 
 MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
diff -puN sound/oss/gus_card.c~MODULE_PARM-allyes sound/oss/gus_card.c
--- 25/sound/oss/gus_card.c~MODULE_PARM-allyes	2004-11-29 14:48:42.023458968 -0800
+++ 25-akpm/sound/oss/gus_card.c	2004-11-29 14:48:42.336411392 -0800
@@ -218,17 +218,17 @@ static int __initdata dma = -1;
 static int __initdata dma16 = -1;	/* Set this for modules that need it */
 static int __initdata type = 0;		/* 1 for PnP */
 
-MODULE_PARM(io, "i");
-MODULE_PARM(irq, "i");
-MODULE_PARM(dma, "i");
-MODULE_PARM(dma16, "i");
-MODULE_PARM(type, "i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(dma, int, 0);
+module_param(dma16, int, 0);
+module_param(type, int, 0);
 #ifdef CONFIG_SOUND_GUSMAX
-MODULE_PARM(no_wave_dma, "i");
+module_param(no_wave_dma, int, 0);
 #endif
 #ifdef CONFIG_SOUND_GUS16
-MODULE_PARM(db16, "i");
-MODULE_PARM(gus16, "i");
+module_param(db16, int, 0);
+module_param(gus16, int, 0);
 #endif
 MODULE_LICENSE("GPL");
 
diff -puN sound/oss/mad16.c~MODULE_PARM-allyes sound/oss/mad16.c
--- 25/sound/oss/mad16.c~MODULE_PARM-allyes	2004-11-29 14:48:42.025458664 -0800
+++ 25-akpm/sound/oss/mad16.c	2004-11-29 14:48:42.337411240 -0800
@@ -874,19 +874,19 @@ static int __initdata cddma = -1;
 static int __initdata opl4 = 0;
 static int __initdata joystick = 0;
 
-MODULE_PARM(mpu_io, "i");
-MODULE_PARM(mpu_irq, "i");
-MODULE_PARM(io,"i");
-MODULE_PARM(dma,"i");
-MODULE_PARM(dma16,"i");
-MODULE_PARM(irq,"i");
-MODULE_PARM(cdtype,"i");
-MODULE_PARM(cdirq,"i");
-MODULE_PARM(cdport,"i");
-MODULE_PARM(cddma,"i");
-MODULE_PARM(opl4,"i");
-MODULE_PARM(joystick,"i");
-MODULE_PARM(debug,"i");
+module_param(mpu_io, int, 0);
+module_param(mpu_irq, int, 0);
+module_param(io, int, 0);
+module_param(dma, int, 0);
+module_param(dma16, int, 0);
+module_param(irq, int, 0);
+module_param(cdtype, int, 0);
+module_param(cdirq, int, 0);
+module_param(cdport, int, 0);
+module_param(cddma, int, 0);
+module_param(opl4, int, 0);
+module_param(joystick, bool, 0);
+module_param(debug, bool, 0644);
 
 static int __initdata dma_map[2][8] =
 {
diff -puN sound/oss/maestro3.c~MODULE_PARM-allyes sound/oss/maestro3.c
--- 25/sound/oss/maestro3.c~MODULE_PARM-allyes	2004-11-29 14:48:42.026458512 -0800
+++ 25-akpm/sound/oss/maestro3.c	2004-11-29 14:48:42.339410936 -0800
@@ -2919,10 +2919,10 @@ MODULE_DESCRIPTION("ESS Maestro3/Allegro
 MODULE_LICENSE("GPL");
 
 #ifdef M_DEBUG
-MODULE_PARM(debug,"i");
+module_param(debug, int, 0);
 #endif
-MODULE_PARM(external_amp,"i");
-MODULE_PARM(gpio_pin, "i");
+module_param(external_amp, int, 0);
+module_param(gpio_pin, int, 0);
 
 static struct pci_driver m3_pci_driver = {
 	.name	  = "ess_m3_audio",
diff -puN sound/oss/maestro.c~MODULE_PARM-allyes sound/oss/maestro.c
--- 25/sound/oss/maestro.c~MODULE_PARM-allyes	2004-11-29 14:48:42.028458208 -0800
+++ 25-akpm/sound/oss/maestro.c	2004-11-29 14:48:42.342410480 -0800
@@ -262,11 +262,11 @@ MODULE_DESCRIPTION("ESS Maestro Driver")
 MODULE_LICENSE("GPL");
 
 #ifdef M_DEBUG
-MODULE_PARM(debug,"i");
+module_param(debug, bool, 0644);
 #endif
-MODULE_PARM(dsps_order,"i");
-MODULE_PARM(use_pm,"i");
-MODULE_PARM(clocking, "i");
+module_param(dsps_order, int, 0);
+module_param(use_pm, int, 0);
+module_param(clocking, int, 0);
 
 /* --------------------------------------------------------------------- */
 #define DRIVER_VERSION "0.15"
diff -puN sound/oss/maui.c~MODULE_PARM-allyes sound/oss/maui.c
--- 25/sound/oss/maui.c~MODULE_PARM-allyes	2004-11-29 14:48:42.029458056 -0800
+++ 25-akpm/sound/oss/maui.c	2004-11-29 14:48:42.342410480 -0800
@@ -420,8 +420,8 @@ static struct address_info cfg;
 static int __initdata io = -1;
 static int __initdata irq = -1;
 
-MODULE_PARM(io,"i");
-MODULE_PARM(irq,"i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
 
 /*
  *	Install a Maui card. Needs mpu401 loaded already.
diff -puN sound/oss/mpu401.c~MODULE_PARM-allyes sound/oss/mpu401.c
--- 25/sound/oss/mpu401.c~MODULE_PARM-allyes	2004-11-29 14:48:42.031457752 -0800
+++ 25-akpm/sound/oss/mpu401.c	2004-11-29 14:48:42.344410176 -0800
@@ -1770,8 +1770,8 @@ static struct address_info cfg;
 static int io = -1;
 static int irq = -1;
 
-MODULE_PARM(irq, "i");
-MODULE_PARM(io, "i");
+module_param(irq, int, 0);
+module_param(io, int, 0);
 
 static int __init init_mpu401(void)
 {
diff -puN sound/oss/msnd_pinnacle.c~MODULE_PARM-allyes sound/oss/msnd_pinnacle.c
--- 25/sound/oss/msnd_pinnacle.c~MODULE_PARM-allyes	2004-11-29 14:48:42.032457600 -0800
+++ 25-akpm/sound/oss/msnd_pinnacle.c	2004-11-29 14:48:42.345410024 -0800
@@ -1603,24 +1603,6 @@ MODULE_AUTHOR				("Andrew Veliath <andre
 MODULE_DESCRIPTION			("Turtle Beach " LONGNAME " Linux Driver");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM				(io, "i");
-MODULE_PARM				(irq, "i");
-MODULE_PARM				(mem, "i");
-MODULE_PARM				(write_ndelay, "i");
-MODULE_PARM				(fifosize, "i");
-MODULE_PARM				(calibrate_signal, "i");
-#ifndef MSND_CLASSIC
-MODULE_PARM				(digital, "i");
-MODULE_PARM				(cfg, "i");
-MODULE_PARM				(reset, "i");
-MODULE_PARM				(mpu_io, "i");
-MODULE_PARM				(mpu_irq, "i");
-MODULE_PARM				(ide_io0, "i");
-MODULE_PARM				(ide_io1, "i");
-MODULE_PARM				(ide_irq, "i");
-MODULE_PARM				(joystick_io, "i");
-#endif
-
 static int io __initdata =		-1;
 static int irq __initdata =		-1;
 static int mem __initdata =		-1;
@@ -1726,6 +1708,23 @@ static int
 calibrate_signal __initdata =		CONFIG_MSND_CALSIGNAL;
 #endif /* MODULE */
 
+module_param				(io, int, 0);
+module_param				(irq, int, 0);
+module_param				(mem, int, 0);
+module_param				(write_ndelay, int, 0);
+module_param				(fifosize, int, 0);
+module_param				(calibrate_signal, int, 0);
+#ifndef MSND_CLASSIC
+module_param				(digital, bool, 0);
+module_param				(cfg, int, 0);
+module_param				(reset, int, 0);
+module_param				(mpu_io, int, 0);
+module_param				(mpu_irq, int, 0);
+module_param				(ide_io0, int, 0);
+module_param				(ide_io1, int, 0);
+module_param				(ide_irq, int, 0);
+module_param				(joystick_io, int, 0);
+#endif
 
 static int __init msnd_init(void)
 {
diff -puN sound/oss/nm256_audio.c~MODULE_PARM-allyes sound/oss/nm256_audio.c
--- 25/sound/oss/nm256_audio.c~MODULE_PARM-allyes	2004-11-29 14:48:42.034457296 -0800
+++ 25-akpm/sound/oss/nm256_audio.c	2004-11-29 14:48:42.346409872 -0800
@@ -1680,10 +1680,10 @@ struct pci_driver nm256_pci_driver = {
 	.remove		= nm256_remove,
 };
 
-MODULE_PARM (usecache, "i");
-MODULE_PARM (buffertop, "i");
-MODULE_PARM (nm256_debug, "i");
-MODULE_PARM (force_load, "i");
+module_param(usecache, bool, 0);
+module_param(buffertop, int, 0);
+module_param(nm256_debug, bool, 0644);
+module_param(force_load, bool, 0);
 
 static int __init do_init_nm256(void)
 {
diff -puN sound/oss/opl3.c~MODULE_PARM-allyes sound/oss/opl3.c
--- 25/sound/oss/opl3.c~MODULE_PARM-allyes	2004-11-29 14:48:42.035457144 -0800
+++ 25-akpm/sound/oss/opl3.c	2004-11-29 14:48:42.347409720 -0800
@@ -1202,7 +1202,7 @@ static int me;
 
 static int io = -1;
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 
 static int __init init_opl3 (void)
 {
diff -puN sound/oss/opl3sa2.c~MODULE_PARM-allyes sound/oss/opl3sa2.c
--- 25/sound/oss/opl3sa2.c~MODULE_PARM-allyes	2004-11-29 14:48:42.037456840 -0800
+++ 25-akpm/sound/oss/opl3sa2.c	2004-11-29 14:48:42.348409568 -0800
@@ -192,35 +192,35 @@ MODULE_AUTHOR("Scott Murray <scott@spite
 MODULE_LICENSE("GPL");
 
 
-MODULE_PARM(io, "i");
+module_param(io, int, 0);
 MODULE_PARM_DESC(io, "Set I/O base of OPL3-SA2 or SA3 card (usually 0x370.  Address must be even and must be from 0x100 to 0xFFE)");
 
-MODULE_PARM(mss_io, "i");
+module_param(mss_io, int, 0);
 MODULE_PARM_DESC(mss_io, "Set MSS (audio) I/O base (0x530, 0xE80, or other. Address must end in 0 or 4 and must be from 0x530 to 0xF48)");
 
-MODULE_PARM(mpu_io, "i");
+module_param(mpu_io, int, 0);
 MODULE_PARM_DESC(mpu_io, "Set MIDI I/O base (0x330 or other. Address must be even and must be from 0x300 to 0x334)");
 
-MODULE_PARM(irq, "i");
+module_param(irq, int, 0);
 MODULE_PARM_DESC(mss_irq, "Set MSS (audio) IRQ (5, 7, 9, 10, 11, 12)");
 
-MODULE_PARM(dma, "i");
+module_param(dma, int, 0);
 MODULE_PARM_DESC(dma, "Set MSS (audio) first DMA channel (0, 1, 3)");
 
-MODULE_PARM(dma2, "i");
+module_param(dma2, int, 0);
 MODULE_PARM_DESC(dma2, "Set MSS (audio) second DMA channel (0, 1, 3)");
 
-MODULE_PARM(ymode, "i");
+module_param(ymode, int, 0);
 MODULE_PARM_DESC(ymode, "Set Yamaha 3D enhancement mode (0 = Desktop/Normal, 1 = Notebook PC (1), 2 = Notebook PC (2), 3 = Hi-Fi)");
 
-MODULE_PARM(loopback, "i");
+module_param(loopback, int, 0);
 MODULE_PARM_DESC(loopback, "Set A/D input source. Useful for echo cancellation (0 = Mic Rch (default), 1 = Mono output loopback)");
 
 #ifdef CONFIG_PNP
-MODULE_PARM(isapnp, "i");
+module_param(isapnp, bool, 0);
 MODULE_PARM_DESC(isapnp, "When set to 0, ISA PnP support will be disabled");
 
-MODULE_PARM(multiple, "i");
+module_param(multiple, bool, 0);
 MODULE_PARM_DESC(multiple, "When set to 0, will not search for multiple cards");
 #endif
 
diff -puN sound/oss/opl3sa.c~MODULE_PARM-allyes sound/oss/opl3sa.c
--- 25/sound/oss/opl3sa.c~MODULE_PARM-allyes	2004-11-29 14:48:42.038456688 -0800
+++ 25-akpm/sound/oss/opl3sa.c	2004-11-29 14:48:42.349409416 -0800
@@ -245,12 +245,12 @@ static int __initdata dma2	= -1;
 static int __initdata mpu_io	= -1;
 static int __initdata mpu_irq	= -1;
 
-MODULE_PARM(io,"i");
-MODULE_PARM(irq,"i");
-MODULE_PARM(dma,"i");
-MODULE_PARM(dma2,"i");
-MODULE_PARM(mpu_io,"i");
-MODULE_PARM(mpu_irq,"i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(dma, int, 0);
+module_param(dma2, int, 0);
+module_param(mpu_io, int, 0);
+module_param(mpu_irq, int, 0);
 
 static int __init init_opl3sa(void)
 {
diff -puN sound/oss/pas2_card.c~MODULE_PARM-allyes sound/oss/pas2_card.c
--- 25/sound/oss/pas2_card.c~MODULE_PARM-allyes	2004-11-29 14:48:42.039456536 -0800
+++ 25-akpm/sound/oss/pas2_card.c	2004-11-29 14:48:42.350409264 -0800
@@ -393,19 +393,19 @@ static int __initdata sb_irq	= -1;
 static int __initdata sb_dma	= -1;
 static int __initdata sb_dma16	= -1;
 
-MODULE_PARM(io,"i");
-MODULE_PARM(irq,"i");
-MODULE_PARM(dma,"i");
-MODULE_PARM(dma16,"i");
-
-MODULE_PARM(sb_io,"i");
-MODULE_PARM(sb_irq,"i");
-MODULE_PARM(sb_dma,"i");
-MODULE_PARM(sb_dma16,"i");
-
-MODULE_PARM(joystick,"i");
-MODULE_PARM(symphony,"i");
-MODULE_PARM(broken_bus_clock,"i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(dma, int, 0);
+module_param(dma16, int, 0);
+
+module_param(sb_io, int, 0);
+module_param(sb_irq, int, 0);
+module_param(sb_dma, int, 0);
+module_param(sb_dma16, int, 0);
+
+module_param(joystick, bool, 0);
+module_param(symphony, bool, 0);
+module_param(broken_bus_clock, bool, 0);
 
 MODULE_LICENSE("GPL");
 
diff -puN sound/oss/pss.c~MODULE_PARM-allyes sound/oss/pss.c
--- 25/sound/oss/pss.c~MODULE_PARM-allyes	2004-11-29 14:48:42.041456232 -0800
+++ 25-akpm/sound/oss/pss.c	2004-11-29 14:48:42.351409112 -0800
@@ -118,9 +118,9 @@
 
 /* If compiled into kernel, it enable or disable pss mixer */
 #ifdef CONFIG_PSS_MIXER
-static unsigned char pss_mixer = 1;
+static int pss_mixer = 1;
 #else
-static unsigned char pss_mixer;
+static int pss_mixer;
 #endif
 
 
@@ -1153,29 +1153,29 @@ static int pss_no_sound __initdata = 0;	
 static int pss_keep_settings  = 1;	/* Keep hardware settings at module exit */
 static char *pss_firmware = "/etc/sound/pss_synth";
 
-MODULE_PARM(pss_io, "i");
+module_param(pss_io, int, 0);
 MODULE_PARM_DESC(pss_io, "Set i/o base of PSS card (probably 0x220 or 0x240)");
-MODULE_PARM(mss_io, "i");
+module_param(mss_io, int, 0);
 MODULE_PARM_DESC(mss_io, "Set WSS (audio) i/o base (0x530, 0x604, 0xE80, 0xF40, or other. Address must end in 0 or 4 and must be from 0x100 to 0xFF4)");
-MODULE_PARM(mss_irq, "i");
+module_param(mss_irq, int, 0);
 MODULE_PARM_DESC(mss_irq, "Set WSS (audio) IRQ (3, 5, 7, 9, 10, 11, 12)");
-MODULE_PARM(mss_dma, "i");
+module_param(mss_dma, int, 0);
 MODULE_PARM_DESC(mss_dma, "Set WSS (audio) DMA (0, 1, 3)");
-MODULE_PARM(mpu_io, "i");
+module_param(mpu_io, int, 0);
 MODULE_PARM_DESC(mpu_io, "Set MIDI i/o base (0x330 or other. Address must be on 4 location boundaries and must be from 0x100 to 0xFFC)");
-MODULE_PARM(mpu_irq, "i");
+module_param(mpu_irq, int, 0);
 MODULE_PARM_DESC(mpu_irq, "Set MIDI IRQ (3, 5, 7, 9, 10, 11, 12)");
-MODULE_PARM(pss_cdrom_port, "i");
+module_param(pss_cdrom_port, int, 0);
 MODULE_PARM_DESC(pss_cdrom_port, "Set the PSS CDROM port i/o base (0x340 or other)");
-MODULE_PARM(pss_enable_joystick, "i");
+module_param(pss_enable_joystick, bool, 0);
 MODULE_PARM_DESC(pss_enable_joystick, "Enables the PSS joystick port (1 to enable, 0 to disable)");
-MODULE_PARM(pss_no_sound, "i");
+module_param(pss_no_sound, bool, 0);
 MODULE_PARM_DESC(pss_no_sound, "Configure sound compoents (0 - no, 1 - yes)");
-MODULE_PARM(pss_keep_settings, "i");
+module_param(pss_keep_settings, bool, 0);
 MODULE_PARM_DESC(pss_keep_settings, "Keep hardware setting at driver unloading (0 - no, 1 - yes)");
-MODULE_PARM(pss_firmware, "s");
+module_param(pss_firmware, charp, 0);
 MODULE_PARM_DESC(pss_firmware, "Location of the firmware file (default - /etc/sound/pss_synth)");
-MODULE_PARM(pss_mixer, "b");
+module_param(pss_mixer, bool, 0);
 MODULE_PARM_DESC(pss_mixer, "Enable (1) or disable (0) PSS mixer (controlling of output volume, bass, treble, synth volume). The mixer is not available on all PSS cards.");
 MODULE_AUTHOR("Hannu Savolainen, Vladimir Michl");
 MODULE_DESCRIPTION("Module for PSS sound cards (based on AD1848, ADSP-2115 and ESC614). This module includes control of output amplifier and synth volume of the Beethoven ADSP-16 card (this may work with other PSS cards).");
diff -puN sound/oss/rme96xx.c~MODULE_PARM-allyes sound/oss/rme96xx.c
--- 25/sound/oss/rme96xx.c~MODULE_PARM-allyes	2004-11-29 14:48:42.042456080 -0800
+++ 25-akpm/sound/oss/rme96xx.c	2004-11-29 14:48:42.352408960 -0800
@@ -68,7 +68,7 @@ TODO:
 #define NR_DEVICE 2
 
 static int devices = 1;
-MODULE_PARM(devices, "1-" __MODULE_STRING(NR_DEVICE) "i");
+module_param(devices, int, 0);
 MODULE_PARM_DESC(devices, "number of dsp devices allocated by the driver");
 
 
diff -puN sound/oss/sgalaxy.c~MODULE_PARM-allyes sound/oss/sgalaxy.c
--- 25/sound/oss/sgalaxy.c~MODULE_PARM-allyes	2004-11-29 14:48:42.044455776 -0800
+++ 25-akpm/sound/oss/sgalaxy.c	2004-11-29 14:48:42.353408808 -0800
@@ -153,11 +153,11 @@ static int __initdata dma	= -1;
 static int __initdata dma2	= -1;
 static int __initdata sgbase	= -1;
 
-MODULE_PARM(io,"i");
-MODULE_PARM(irq,"i");
-MODULE_PARM(dma,"i");
-MODULE_PARM(dma2,"i");
-MODULE_PARM(sgbase,"i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(dma, int, 0);
+module_param(dma2, int, 0);
+module_param(sgbase, int, 0);
 
 static int __init init_sgalaxy(void)
 {
diff -puN sound/oss/sonicvibes.c~MODULE_PARM-allyes sound/oss/sonicvibes.c
--- 25/sound/oss/sonicvibes.c~MODULE_PARM-allyes	2004-11-29 14:48:42.045455624 -0800
+++ 25-akpm/sound/oss/sonicvibes.c	2004-11-29 14:48:42.355408504 -0800
@@ -2453,7 +2453,7 @@ static int wavetable[NR_DEVICE];
 
 static unsigned int devindex;
 
-MODULE_PARM(reverb, "1-" __MODULE_STRING(NR_DEVICE) "i");
+module_param_array(reverb, bool, NULL, 0);
 MODULE_PARM_DESC(reverb, "if 1 enables the reverb circuitry. NOTE: your card must have the reverb RAM");
 #if 0
 MODULE_PARM(wavetable, "1-" __MODULE_STRING(NR_DEVICE) "i");
diff -puN sound/oss/soundcard.c~MODULE_PARM-allyes sound/oss/soundcard.c
--- 25/sound/oss/soundcard.c~MODULE_PARM-allyes	2004-11-29 14:48:42.047455320 -0800
+++ 25-akpm/sound/oss/soundcard.c	2004-11-29 14:48:42.356408352 -0800
@@ -535,8 +535,8 @@ static const struct {
 static int dmabuf;
 static int dmabug;
 
-MODULE_PARM(dmabuf, "i");
-MODULE_PARM(dmabug, "i");
+module_param(dmabuf, int, 0);
+module_param(dmabug, int, 0);
 
 static int __init oss_init(void)
 {
diff -puN sound/oss/sscape.c~MODULE_PARM-allyes sound/oss/sscape.c
--- 25/sound/oss/sscape.c~MODULE_PARM-allyes	2004-11-29 14:48:42.048455168 -0800
+++ 25-akpm/sound/oss/sscape.c	2004-11-29 14:48:42.357408200 -0800
@@ -1400,13 +1400,13 @@ static int __initdata io = -1;
 static int __initdata mpu_irq = -1;
 static int __initdata mpu_io = -1;
 
-MODULE_PARM(dma, "i");
-MODULE_PARM(irq, "i");
-MODULE_PARM(io, "i");
-MODULE_PARM(spea, "i");		/* spea=0/1 set the old_hardware */
-MODULE_PARM(mpu_irq, "i");
-MODULE_PARM(mpu_io, "i");
-MODULE_PARM(mss, "i");
+module_param(dma, int, 0);
+module_param(irq, int, 0);
+module_param(io, int, 0);
+module_param(spea, int, 0);		/* spea=0/1 set the old_hardware */
+module_param(mpu_irq, int, 0);
+module_param(mpu_io, int, 0);
+module_param(mss, int, 0);
 
 static int __init init_sscape(void)
 {
diff -puN sound/oss/trix.c~MODULE_PARM-allyes sound/oss/trix.c
--- 25/sound/oss/trix.c~MODULE_PARM-allyes	2004-11-29 14:48:42.050454864 -0800
+++ 25-akpm/sound/oss/trix.c	2004-11-29 14:48:42.357408200 -0800
@@ -413,16 +413,16 @@ static int __initdata sb_irq	= -1;
 static int __initdata mpu_io	= -1;
 static int __initdata mpu_irq	= -1;
 
-MODULE_PARM(io,"i");
-MODULE_PARM(irq,"i");
-MODULE_PARM(dma,"i");
-MODULE_PARM(dma2,"i");
-MODULE_PARM(sb_io,"i");
-MODULE_PARM(sb_dma,"i");
-MODULE_PARM(sb_irq,"i");
-MODULE_PARM(mpu_io,"i");
-MODULE_PARM(mpu_irq,"i");
-MODULE_PARM(joystick, "i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(dma, int, 0);
+module_param(dma2, int, 0);
+module_param(sb_io, int, 0);
+module_param(sb_dma, int, 0);
+module_param(sb_irq, int, 0);
+module_param(mpu_io, int, 0);
+module_param(mpu_irq, int, 0);
+module_param(joystick, bool, 0);
 
 static int __init init_trix(void)
 {
diff -puN sound/oss/uart401.c~MODULE_PARM-allyes sound/oss/uart401.c
--- 25/sound/oss/uart401.c~MODULE_PARM-allyes	2004-11-29 14:48:42.051454712 -0800
+++ 25-akpm/sound/oss/uart401.c	2004-11-29 14:48:42.358408048 -0800
@@ -433,8 +433,8 @@ static struct address_info cfg_mpu;
 static int __initdata io = -1;
 static int __initdata irq = -1;
 
-MODULE_PARM(io, "i");
-MODULE_PARM(irq, "i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
 
 
 static int __init init_uart401(void)
diff -puN sound/oss/uart6850.c~MODULE_PARM-allyes sound/oss/uart6850.c
--- 25/sound/oss/uart6850.c~MODULE_PARM-allyes	2004-11-29 14:48:42.053454408 -0800
+++ 25-akpm/sound/oss/uart6850.c	2004-11-29 14:48:42.358408048 -0800
@@ -316,8 +316,8 @@ static struct address_info cfg_mpu;
 static int __initdata io = -1;
 static int __initdata irq = -1;
 
-MODULE_PARM(io,"i");
-MODULE_PARM(irq,"i");
+module_param(io, int, 0);
+module_param(irq, int, 0);
 
 static int __init init_uart6850(void)
 {
diff -puN sound/oss/wavfront.c~MODULE_PARM-allyes sound/oss/wavfront.c
--- 25/sound/oss/wavfront.c~MODULE_PARM-allyes	2004-11-29 14:48:42.054454256 -0800
+++ 25-akpm/sound/oss/wavfront.c	2004-11-29 14:48:42.361407592 -0800
@@ -200,16 +200,16 @@ int osrun_time = 10;       /* time in se
 			      start running.
 			   */
 
-MODULE_PARM(wf_raw,"i");
-MODULE_PARM(fx_raw,"i");
-MODULE_PARM(debug_default,"i");
-MODULE_PARM(wait_polls,"i");
-MODULE_PARM(sleep_length,"i");
-MODULE_PARM(sleep_tries,"i");
-MODULE_PARM(ospath,"s");
-MODULE_PARM(reset_time,"i");
-MODULE_PARM(ramcheck_time,"i");
-MODULE_PARM(osrun_time,"i");
+module_param(wf_raw, int, 0);
+module_param(fx_raw, int, 0);
+module_param(debug_default, int, 0);
+module_param(wait_polls, int, 0);
+module_param(sleep_length, int, 0);
+module_param(sleep_tries, int, 0);
+module_param(ospath, charp, 0);
+module_param(reset_time, int, 0);
+module_param(ramcheck_time, int, 0);
+module_param(osrun_time, int, 0);
 
 /***************************************************************************/
 
@@ -3490,8 +3490,8 @@ static int irq = -1;
 MODULE_AUTHOR      ("Paul Barton-Davis <pbd@op.net>");
 MODULE_DESCRIPTION ("Turtle Beach WaveFront Linux Driver");
 MODULE_LICENSE("GPL");
-MODULE_PARM        (io,"i");
-MODULE_PARM        (irq,"i");
+module_param       (io, int, 0);
+module_param       (irq, int, 0);
 
 static int __init init_wavfront (void)
 {
_
