From: Rusty Russell <rusty@rustcorp.com.au>

This patch removes MODULE_PARM for everything shown up in allyesconfig
minus CONFIG_EXPERIMENTAL and a few broken drivers which didn't compile or
who were doing bestial things to module parameters.

akpm: this is the part of Rusty's patch which doesn't conflict with other
people's pending changes in -mm.  It'll take a while to finish this work off.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
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                         |    6 -
 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                 |    4 -
 25-akpm/drivers/isdn/hisax/elsa_cs.c                  |    6 -
 25-akpm/drivers/isdn/hisax/sedlbauer_cs.c             |    6 -
 25-akpm/drivers/isdn/hisax/teles_cs.c                 |    6 -
 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/media/common/ir-common.c              |    4 -
 25-akpm/drivers/media/common/saa7146_core.c           |    2 
 25-akpm/drivers/media/common/saa7146_video.c          |    2 
 25-akpm/drivers/media/dvb/frontends/cx22702.c         |    2 
 25-akpm/drivers/media/dvb/frontends/dst.c             |    4 -
 25-akpm/drivers/media/dvb/frontends/nxt6000.c         |    2 
 25-akpm/drivers/media/dvb/frontends/ves1x93.c         |    4 -
 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/btcx-risc.c               |    2 
 25-akpm/drivers/media/video/bttv-cards.c              |   26 +++----
 25-akpm/drivers/media/video/bttv-driver.c             |   50 +++++++-------
 25-akpm/drivers/media/video/bttv-vbi.c                |    4 -
 25-akpm/drivers/media/video/bw-qcam.c                 |    6 -
 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/saa7134/saa7134-core.c    |   26 +++----
 25-akpm/drivers/media/video/saa7134/saa7134-i2c.c     |    4 -
 25-akpm/drivers/media/video/saa7134/saa7134-input.c   |    4 -
 25-akpm/drivers/media/video/saa7134/saa7134-oss.c     |    4 -
 25-akpm/drivers/media/video/saa7134/saa7134-ts.c      |    6 -
 25-akpm/drivers/media/video/saa7134/saa7134-tvaudio.c |    8 +-
 25-akpm/drivers/media/video/saa7134/saa7134-vbi.c     |    4 -
 25-akpm/drivers/media/video/saa7134/saa7134-video.c   |    6 -
 25-akpm/drivers/media/video/saa7185.c                 |    2 
 25-akpm/drivers/media/video/tda7432.c                 |    8 +-
 25-akpm/drivers/media/video/tda9875.c                 |    2 
 25-akpm/drivers/media/video/tda9887.c                 |   14 ++--
 25-akpm/drivers/media/video/tuner-3036.c              |    2 
 25-akpm/drivers/media/video/tuner.c                   |    2 
 25-akpm/drivers/media/video/tvaudio.c                 |   28 ++++----
 25-akpm/drivers/media/video/tvmixer.c                 |    2 
 25-akpm/drivers/media/video/v4l1-compat.c             |    2 
 25-akpm/drivers/media/video/video-buf.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/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/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/tekram-sir.c                 |    4 -
 25-akpm/drivers/net/irda/w83977af_ir.c                |    6 -
 25-akpm/drivers/net/ixgb/ixgb_param.c                 |    4 -
 25-akpm/drivers/net/natsemi.c                         |   12 +--
 25-akpm/drivers/net/ne2k-pci.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/sk98lin/skge.c                    |   40 +++++------
 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/dmfe.c                      |   18 ++---
 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/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/wireless/airo.c                   |   28 ++++----
 25-akpm/drivers/net/wireless/airo_cs.c                |    4 -
 25-akpm/drivers/net/wireless/arlan-main.c             |   47 ++++++-------
 25-akpm/drivers/net/wireless/netwave_cs.c             |   10 +-
 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                 |   24 +++----
 25-akpm/drivers/net/wireless/wavelan_cs.p.h           |    8 +-
 25-akpm/drivers/parport/parport_cs.c                  |    4 -
 25-akpm/drivers/pnp/isapnp/core.c                     |    8 +-
 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/scsi/sr.c                             |    3 
 25-akpm/drivers/scsi/sr_ioctl.c                       |    1 
 25-akpm/drivers/telephony/ixj.c                       |    6 -
 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                               |    4 -
 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/btaudio.c                           |   18 ++---
 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/i810_audio.c                        |    8 +-
 25-akpm/sound/oss/mad16.c                             |   26 +++----
 25-akpm/sound/oss/maestro.c                           |    8 +-
 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                         |   22 +++---
 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 +++----
 229 files changed, 959 insertions(+), 960 deletions(-)

diff -puN drivers/acpi/asus_acpi.c~remove-module_parm-from-allyesconfig-almost drivers/acpi/asus_acpi.c
--- 25/drivers/acpi/asus_acpi.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:06 2004
+++ 25-akpm/drivers/acpi/asus_acpi.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/block/cpqarray.c
--- 25/drivers/block/cpqarray.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:06 2004
+++ 25-akpm/drivers/block/cpqarray.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/block/nbd.c
--- 25/drivers/block/nbd.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/block/nbd.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/block/paride/bpck6.c
--- 25/drivers/block/paride/bpck6.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/block/paride/bpck6.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/block/paride/pcd.c
--- 25/drivers/block/paride/pcd.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/block/paride/pcd.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/block/paride/pd.c
--- 25/drivers/block/paride/pd.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/block/paride/pd.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/block/paride/pf.c
--- 25/drivers/block/paride/pf.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/block/paride/pf.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/block/paride/pg.c
--- 25/drivers/block/paride/pg.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/block/paride/pg.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/block/paride/pt.c
--- 25/drivers/block/paride/pt.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/block/paride/pt.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/cdrom/aztcd.c
--- 25/drivers/cdrom/aztcd.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/cdrom/aztcd.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/cdrom/gscd.c
--- 25/drivers/cdrom/gscd.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/cdrom/gscd.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/cdrom/isp16.c
--- 25/drivers/cdrom/isp16.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/cdrom/isp16.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/cdrom/mcd.c
--- 25/drivers/cdrom/mcd.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/cdrom/mcd.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/cdrom/mcdx.c
--- 25/drivers/cdrom/mcdx.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/cdrom/mcdx.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/cdrom/optcd.c
--- 25/drivers/cdrom/optcd.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/cdrom/optcd.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/cdrom/sjcd.c
--- 25/drivers/cdrom/sjcd.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/cdrom/sjcd.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/cdrom/sonycd535.c
--- 25/drivers/cdrom/sonycd535.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/cdrom/sonycd535.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/char/agp/amd64-agp.c
--- 25/drivers/char/agp/amd64-agp.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/char/agp/amd64-agp.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/char/agp/sis-agp.c
--- 25/drivers/char/agp/sis-agp.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/char/agp/sis-agp.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/char/applicom.c
--- 25/drivers/char/applicom.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/char/applicom.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/char/mwave/mwavedd.c
--- 25/drivers/char/mwave/mwavedd.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/char/mwave/mwavedd.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/char/n_hdlc.c
--- 25/drivers/char/n_hdlc.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/char/n_hdlc.c	Thu Nov  4 15:10:07 2004
@@ -177,7 +177,7 @@ static struct n_hdlc *n_hdlc_alloc (void
 static int debuglevel;
 
 /* max frame size for memory allocations */
-static ssize_t maxframe = 4096;
+static int maxframe = 4096;
 
 /* TTY callbacks */
 
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/char/pcmcia/synclink_cs.c
--- 25/drivers/char/pcmcia/synclink_cs.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/char/pcmcia/synclink_cs.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/char/scx200_gpio.c
--- 25/drivers/char/scx200_gpio.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/char/scx200_gpio.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/char/synclink.c
--- 25/drivers/char/synclink.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/char/synclink.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/char/synclinkmp.c
--- 25/drivers/char/synclinkmp.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/char/synclinkmp.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/char/tipar.c
--- 25/drivers/char/tipar.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/char/tipar.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/char/toshiba.c
--- 25/drivers/char/toshiba.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/char/toshiba.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/ide/legacy/ide-cs.c
--- 25/drivers/ide/legacy/ide-cs.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/ide/legacy/ide-cs.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/isdn/act2000/module.c
--- 25/drivers/isdn/act2000/module.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/isdn/act2000/module.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/isdn/hardware/eicon/divamnt.c
--- 25/drivers/isdn/hardware/eicon/divamnt.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/isdn/hardware/eicon/divamnt.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/isdn/hardware/eicon/divasmain.c
--- 25/drivers/isdn/hardware/eicon/divasmain.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/isdn/hardware/eicon/divasmain.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/isdn/hisax/avma1_cs.c
--- 25/drivers/isdn/hisax/avma1_cs.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/isdn/hisax/avma1_cs.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/isdn/hisax/elsa_cs.c
--- 25/drivers/isdn/hisax/elsa_cs.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/isdn/hisax/elsa_cs.c	Thu Nov  4 15:10:07 2004
@@ -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/sedlbauer_cs.c~remove-module_parm-from-allyesconfig-almost drivers/isdn/hisax/sedlbauer_cs.c
--- 25/drivers/isdn/hisax/sedlbauer_cs.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/isdn/hisax/sedlbauer_cs.c	Thu Nov  4 15:10:07 2004
@@ -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/teles_cs.c~remove-module_parm-from-allyesconfig-almost drivers/isdn/hisax/teles_cs.c
--- 25/drivers/isdn/hisax/teles_cs.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/isdn/hisax/teles_cs.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/isdn/icn/icn.c
--- 25/drivers/isdn/icn/icn.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/isdn/icn/icn.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/isdn/pcbit/module.c
--- 25/drivers/isdn/pcbit/module.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/isdn/pcbit/module.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/isdn/sc/init.c
--- 25/drivers/isdn/sc/init.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/isdn/sc/init.c	Thu Nov  4 15:10:07 2004
@@ -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/media/common/ir-common.c~remove-module_parm-from-allyesconfig-almost drivers/media/common/ir-common.c
--- 25/drivers/media/common/ir-common.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/common/ir-common.c	Thu Nov  4 15:10:07 2004
@@ -31,11 +31,11 @@ MODULE_AUTHOR("Gerd Knorr <kraxel@bytese
 MODULE_LICENSE("GPL");
 
 static int repeat = 1;
-MODULE_PARM(repeat,"i");
+module_param(repeat, bool, 0);
 MODULE_PARM_DESC(repeat,"auto-repeat for IR keys (default: on)");
 
 static int debug = 0;    /* debug level (0,1,2) */
-MODULE_PARM(debug,"i");
+module_param(debug, int, 0);
 
 #define dprintk(level, fmt, arg...)	if (debug >= level) \
 	printk(KERN_DEBUG fmt , ## arg)
diff -puN drivers/media/common/saa7146_core.c~remove-module_parm-from-allyesconfig-almost drivers/media/common/saa7146_core.c
--- 25/drivers/media/common/saa7146_core.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/common/saa7146_core.c	Thu Nov  4 15:10:07 2004
@@ -29,7 +29,7 @@ int saa7146_num = 0;
 
 unsigned int saa7146_debug = 0;
 
-MODULE_PARM(saa7146_debug,"i");
+module_param(saa7146_debug, int, 0);
 MODULE_PARM_DESC(saa7146_debug, "debug level (default: 0)");
 
 #if 0
diff -puN drivers/media/common/saa7146_video.c~remove-module_parm-from-allyesconfig-almost drivers/media/common/saa7146_video.c
--- 25/drivers/media/common/saa7146_video.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/common/saa7146_video.c	Thu Nov  4 15:10:07 2004
@@ -2,7 +2,7 @@
 
 static int max_memory = 32;
 
-MODULE_PARM(max_memory,"i");
+module_param(max_memory, int, 0);
 MODULE_PARM_DESC(max_memory, "maximum memory usage for capture buffers (default: 32Mb)");
 
 #define IS_CAPTURE_ACTIVE(fh) \
diff -puN drivers/media/dvb/frontends/cx22702.c~remove-module_parm-from-allyesconfig-almost drivers/media/dvb/frontends/cx22702.c
--- 25/drivers/media/dvb/frontends/cx22702.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/dvb/frontends/cx22702.c	Thu Nov  4 15:10:07 2004
@@ -892,7 +892,7 @@ static void __exit exit_cx22702 (void)
 module_init (init_cx22702);
 module_exit (exit_cx22702);
 
-MODULE_PARM(debug,"i");
+module_param(debug, bool, 0644);
 MODULE_PARM_DESC(debug, "Enable verbose debug messages");
 MODULE_DESCRIPTION("CX22702 / Thomson DTT 759x / Thomson DTT 7579 PLL DVB Frontend driver");
 MODULE_AUTHOR("Steven Toth");
diff -puN drivers/media/dvb/frontends/dst.c~remove-module_parm-from-allyesconfig-almost drivers/media/dvb/frontends/dst.c
--- 25/drivers/media/dvb/frontends/dst.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/dvb/frontends/dst.c	Thu Nov  4 15:10:07 2004
@@ -33,10 +33,10 @@
 #include "dst-bt878.h"
 
 unsigned int dst_verbose = 0;
-MODULE_PARM(dst_verbose, "i");
+module_param(dst_verbose, bool, 0);
 MODULE_PARM_DESC(dst_verbose, "verbose startup messages, default is 1 (yes)");
 unsigned int dst_debug = 0;
-MODULE_PARM(dst_debug, "i");
+module_param(dst_debug, bool, 0);
 MODULE_PARM_DESC(dst_debug, "debug messages, default is 0 (no)");
 
 #define dprintk	if (dst_debug) printk
diff -puN drivers/media/dvb/frontends/nxt6000.c~remove-module_parm-from-allyesconfig-almost drivers/media/dvb/frontends/nxt6000.c
--- 25/drivers/media/dvb/frontends/nxt6000.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/dvb/frontends/nxt6000.c	Thu Nov  4 15:10:07 2004
@@ -41,7 +41,7 @@ MODULE_AUTHOR("Florian Schirmer");
 MODULE_LICENSE("GPL");
 
 static int debug = 0;
-MODULE_PARM(debug, "i");
+module_param(debug, bool, 0);
 
 static struct dvb_frontend_info nxt6000_info = {
 
diff -puN drivers/media/dvb/frontends/ves1x93.c~remove-module_parm-from-allyesconfig-almost drivers/media/dvb/frontends/ves1x93.c
--- 25/drivers/media/dvb/frontends/ves1x93.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/dvb/frontends/ves1x93.c	Thu Nov  4 15:10:07 2004
@@ -732,6 +732,6 @@ module_exit(exit_ves1x93);
 MODULE_DESCRIPTION("VES1x93 DVB-S Frontend");
 MODULE_AUTHOR("Ralph Metzler");
 MODULE_LICENSE("GPL");
-MODULE_PARM(debug,"i");
-MODULE_PARM(board_type,"i");
+module_param(debug, bool, 0);
+module_param(board_type, int, 0);
 
diff -puN drivers/media/radio/miropcm20-radio.c~remove-module_parm-from-allyesconfig-almost drivers/media/radio/miropcm20-radio.c
--- 25/drivers/media/radio/miropcm20-radio.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/miropcm20-radio.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-aimslab.c
--- 25/drivers/media/radio/radio-aimslab.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-aimslab.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-aztech.c
--- 25/drivers/media/radio/radio-aztech.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-aztech.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-cadet.c
--- 25/drivers/media/radio/radio-cadet.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-cadet.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-gemtek.c
--- 25/drivers/media/radio/radio-gemtek.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-gemtek.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-gemtek-pci.c
--- 25/drivers/media/radio/radio-gemtek-pci.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-gemtek-pci.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-maestro.c
--- 25/drivers/media/radio/radio-maestro.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-maestro.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-maxiradio.c
--- 25/drivers/media/radio/radio-maxiradio.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-maxiradio.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-rtrack2.c
--- 25/drivers/media/radio/radio-rtrack2.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-rtrack2.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-sf16fmi.c
--- 25/drivers/media/radio/radio-sf16fmi.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-sf16fmi.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-sf16fmr2.c
--- 25/drivers/media/radio/radio-sf16fmr2.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-sf16fmr2.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-terratec.c
--- 25/drivers/media/radio/radio-terratec.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-terratec.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-trust.c
--- 25/drivers/media/radio/radio-trust.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-trust.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-typhoon.c
--- 25/drivers/media/radio/radio-typhoon.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-typhoon.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/radio/radio-zoltrix.c
--- 25/drivers/media/radio/radio-zoltrix.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/radio/radio-zoltrix.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/video/adv7170.c
--- 25/drivers/media/video/adv7170.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/adv7170.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/video/adv7175.c
--- 25/drivers/media/video/adv7175.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/adv7175.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/video/bt819.c
--- 25/drivers/media/video/bt819.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/bt819.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/video/bt856.c
--- 25/drivers/media/video/bt856.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/bt856.c	Thu Nov  4 15:10:07 2004
@@ -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/btcx-risc.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/btcx-risc.c
--- 25/drivers/media/video/btcx-risc.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/btcx-risc.c	Thu Nov  4 15:10:07 2004
@@ -38,7 +38,7 @@ MODULE_AUTHOR("Gerd Knorr");
 MODULE_LICENSE("GPL");
 
 static unsigned int debug = 0;
-MODULE_PARM(debug,"i");
+module_param(debug, int, 0);
 MODULE_PARM_DESC(debug,"debug messages, default is 0 (no)");
 
 /* ---------------------------------------------------------- */
diff -puN drivers/media/video/bttv-cards.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/bttv-cards.c
--- 25/drivers/media/video/bttv-cards.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/bttv-cards.c	Thu Nov  4 15:10:07 2004
@@ -106,30 +106,30 @@ static unsigned int audioall = UNSET;
 static unsigned int audiomux[5] = { [ 0 ... 4 ] = UNSET };
 
 /* insmod options */
-MODULE_PARM(triton1,"i");
+module_param(triton1, int, 0);
 MODULE_PARM_DESC(triton1,"set ETBF pci config bit "
 		 "[enable bug compatibility for triton1 + others]");
-MODULE_PARM(vsfx,"i");
+module_param(vsfx, int, 0);
 MODULE_PARM_DESC(vsfx,"set VSFX pci config bit "
 		 "[yet another chipset flaw workaround]");
-MODULE_PARM(no_overlay,"i");
-MODULE_PARM(latency,"i");
+module_param(no_overlay, int, 0);
+module_param(latency, int, 0);
 MODULE_PARM_DESC(latency,"pci latency timer");
-MODULE_PARM(card,"1-" __stringify(BTTV_MAX) "i");
+module_param_array(card, int, NULL, 0);
 MODULE_PARM_DESC(card,"specify TV/grabber card model, see CARDLIST file for a list");
-MODULE_PARM(pll,"1-" __stringify(BTTV_MAX) "i");
+module_param_array(pll, int, NULL, 0);
 MODULE_PARM_DESC(pll,"specify installed crystal (0=none, 28=28 MHz, 35=35 MHz)");
-MODULE_PARM(tuner,"1-" __stringify(BTTV_MAX) "i");
+module_param_array(tuner, int, NULL, 0);
 MODULE_PARM_DESC(tuner,"specify installed tuner type");
-MODULE_PARM(autoload,"i");
+module_param(autoload, int, 0);
 MODULE_PARM_DESC(autoload,"automatically load i2c modules like tuner.o, default is 1 (yes)");
 
-MODULE_PARM(svhs,"1-" __stringify(BTTV_MAX) "i");
-MODULE_PARM(remote,"1-" __stringify(BTTV_MAX) "i");
+module_param_array(svhs, int, NULL, 0);
+module_param_array(remote, int, NULL, 0);
 
-MODULE_PARM(gpiomask,"i");
-MODULE_PARM(audioall,"i");
-MODULE_PARM(audiomux,"1-6i");
+module_param(gpiomask, int, 0);
+module_param(audioall, int, 0);
+module_param_array(audiomux, int, NULL, 0);
 
 /* kernel args */
 #ifndef MODULE
diff -puN drivers/media/video/bttv-driver.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/bttv-driver.c
--- 25/drivers/media/video/bttv-driver.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/bttv-driver.c	Thu Nov  4 15:10:07 2004
@@ -82,48 +82,48 @@ static unsigned int v4l2       = 1;
 
 
 /* insmod args */
-MODULE_PARM(radio,"1-" __stringify(BTTV_MAX) "i");
+module_param_array(radio, bool, NULL, 0);
 MODULE_PARM_DESC(radio,"The TV card supports radio, default is 0 (no)");
-MODULE_PARM(bigendian,"i");
+module_param(bigendian, int, 0);
 MODULE_PARM_DESC(bigendian,"byte order of the framebuffer, default is native endian");
-MODULE_PARM(bttv_verbose,"i");
+module_param(bttv_verbose, bool, 0);
 MODULE_PARM_DESC(bttv_verbose,"verbose startup messages, default is 1 (yes)");
-MODULE_PARM(bttv_gpio,"i");
+module_param(bttv_gpio, bool, 0);
 MODULE_PARM_DESC(bttv_gpio,"log gpio changes, default is 0 (no)");
-MODULE_PARM(bttv_debug,"i");
+module_param(bttv_debug, bool, 0);
 MODULE_PARM_DESC(bttv_debug,"debug messages, default is 0 (no)");
-MODULE_PARM(irq_debug,"i");
+module_param(irq_debug, bool, 0);
 MODULE_PARM_DESC(irq_debug,"irq handler debug messages, default is 0 (no)");
-MODULE_PARM(gbuffers,"i");
+module_param(gbuffers, int, 0);
 MODULE_PARM_DESC(gbuffers,"number of capture buffers. range 2-32, default 8");
-MODULE_PARM(gbufsize,"i");
+module_param(gbufsize, int, 0);
 MODULE_PARM_DESC(gbufsize,"size of the capture buffers, default is 0x208000");
 
-MODULE_PARM(video_nr,"i");
-MODULE_PARM(radio_nr,"i");
-MODULE_PARM(vbi_nr,"i");
-MODULE_PARM(debug_latency,"i");
-
-MODULE_PARM(fdsr,"i");
-
-MODULE_PARM(combfilter,"i");
-MODULE_PARM(lumafilter,"i");
-MODULE_PARM(automute,"i");
+module_param(video_nr, int, 0);
+module_param(radio_nr, int, 0);
+module_param(vbi_nr, int, 0);
+module_param(debug_latency, int, 0);
+
+module_param(fdsr, int, 0);
+
+module_param(combfilter, int, 0);
+module_param(lumafilter, int, 0);
+module_param(automute, bool, 0);
 MODULE_PARM_DESC(automute,"mute audio on bad/missing video signal, default is 1 (yes)");
-MODULE_PARM(chroma_agc,"i");
+module_param(chroma_agc, bool, 0);
 MODULE_PARM_DESC(chroma_agc,"enables the AGC of chroma signal, default is 0 (no)");
-MODULE_PARM(adc_crush,"i");
+module_param(adc_crush, bool, 0);
 MODULE_PARM_DESC(adc_crush,"enables the luminance ADC crush, default is 1 (yes)");
-MODULE_PARM(whitecrush_upper,"i");
+module_param(whitecrush_upper, int, 0);
 MODULE_PARM_DESC(whitecrush_upper,"sets the white crush upper value, default is 207");
-MODULE_PARM(whitecrush_lower,"i");
+module_param(whitecrush_lower, int, 0);
 MODULE_PARM_DESC(whitecrush_lower,"sets the white crush lower value, default is 127");
-MODULE_PARM(vcr_hack,"i");
+module_param(vcr_hack, bool, 0);
 MODULE_PARM_DESC(vcr_hack,"enables the VCR hack (improves synch on poor VCR tapes), default is 0 (no)");
-MODULE_PARM(irq_iswitch,"i");
+module_param(irq_iswitch, bool, 0);
 MODULE_PARM_DESC(irq_iswitch,"switch inputs in irq handler");
 
-MODULE_PARM(v4l2,"i");
+module_param(v4l2, int, 0);
 
 MODULE_DESCRIPTION("bttv - v4l/v4l2 driver module for bt848/878 based cards");
 MODULE_AUTHOR("Ralph Metzler & Marcus Metzler & Gerd Knorr");
diff -puN drivers/media/video/bttv-vbi.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/bttv-vbi.c
--- 25/drivers/media/video/bttv-vbi.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/bttv-vbi.c	Thu Nov  4 15:10:07 2004
@@ -37,9 +37,9 @@
 static unsigned int vbibufs = 4;
 static unsigned int vbi_debug = 0;
 
-MODULE_PARM(vbibufs,"i");
+module_param(vbibufs, int, 0);
 MODULE_PARM_DESC(vbibufs,"number of vbi buffers, range 2-32, default 4");
-MODULE_PARM(vbi_debug,"i");
+module_param(vbi_debug, bool, 0);
 MODULE_PARM_DESC(vbi_debug,"vbi code debug messages, default is 0 (no)");
 
 #ifdef dprintk
diff -puN drivers/media/video/bw-qcam.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/bw-qcam.c
--- 25/drivers/media/video/bw-qcam.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/bw-qcam.c	Thu Nov  4 15:10:07 2004
@@ -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)
 {
diff -puN drivers/media/video/dpc7146.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/dpc7146.c
--- 25/drivers/media/video/dpc7146.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/dpc7146.c	Thu Nov  4 15:10:07 2004
@@ -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");
 
 /* global variables */
diff -puN drivers/media/video/hexium_gemini.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/hexium_gemini.c
--- 25/drivers/media/video/hexium_gemini.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/hexium_gemini.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/video/hexium_orion.c
--- 25/drivers/media/video/hexium_orion.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/hexium_orion.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/video/pms.c
--- 25/drivers/media/video/pms.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/pms.c	Thu Nov  4 15:10:07 2004
@@ -1029,9 +1029,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~remove-module_parm-from-allyesconfig-almost drivers/media/video/saa7110.c
--- 25/drivers/media/video/saa7110.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/saa7110.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/video/saa7114.c
--- 25/drivers/media/video/saa7114.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/saa7114.c	Thu Nov  4 15:10:07 2004
@@ -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/saa7134/saa7134-core.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/saa7134/saa7134-core.c
--- 25/drivers/media/video/saa7134/saa7134-core.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/saa7134/saa7134-core.c	Thu Nov  4 15:10:07 2004
@@ -43,55 +43,55 @@ MODULE_LICENSE("GPL");
 /* ------------------------------------------------------------------ */
 
 static unsigned int irq_debug = 0;
-MODULE_PARM(irq_debug,"i");
+module_param(irq_debug, int, 0);
 MODULE_PARM_DESC(irq_debug,"enable debug messages [IRQ handler]");
 
 static unsigned int core_debug = 0;
-MODULE_PARM(core_debug,"i");
+module_param(core_debug, int, 0);
 MODULE_PARM_DESC(core_debug,"enable debug messages [core]");
 
 static unsigned int gpio_tracking = 0;
-MODULE_PARM(gpio_tracking,"i");
+module_param(gpio_tracking, int, 0);
 MODULE_PARM_DESC(gpio_tracking,"enable debug messages [gpio]");
 
 static unsigned int video_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
-MODULE_PARM(video_nr,"1-" __stringify(SAA7134_MAXBOARDS) "i");
+module_param_array(video_nr, int, NULL, 0);
 MODULE_PARM_DESC(video_nr,"video device number");
 
 static unsigned int ts_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
-MODULE_PARM(ts_nr,"1-" __stringify(SAA7134_MAXBOARDS) "i");
+module_param_array(ts_nr, int, NULL, 0);
 MODULE_PARM_DESC(ts_nr,"ts device number");
 
 static unsigned int vbi_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
-MODULE_PARM(vbi_nr,"1-" __stringify(SAA7134_MAXBOARDS) "i");
+module_param_array(vbi_nr, int, NULL, 0);
 MODULE_PARM_DESC(vbi_nr,"vbi device number");
 
 static unsigned int radio_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
-MODULE_PARM(radio_nr,"1-" __stringify(SAA7134_MAXBOARDS) "i");
+module_param_array(radio_nr, int, NULL, 0);
 MODULE_PARM_DESC(radio_nr,"radio device number");
 
 static unsigned int oss = 0;
-MODULE_PARM(oss,"i");
+module_param(oss, int, 0);
 MODULE_PARM_DESC(oss,"register oss devices (default: no)");
 
 static unsigned int dsp_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
-MODULE_PARM(dsp_nr,"1-" __stringify(SAA7134_MAXBOARDS) "i");
+module_param_array(dsp_nr, int, NULL, 0);
 MODULE_PARM_DESC(dsp_nr,"oss dsp device number");
 
 static unsigned int mixer_nr[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
-MODULE_PARM(mixer_nr,"1-" __stringify(SAA7134_MAXBOARDS) "i");
+module_param_array(mixer_nr, int, NULL, 0);
 MODULE_PARM_DESC(mixer_nr,"oss mixer device number");
 
 static unsigned int tuner[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
-MODULE_PARM(tuner,"1-" __stringify(SAA7134_MAXBOARDS) "i");
+module_param_array(tuner, int, NULL, 0);
 MODULE_PARM_DESC(tuner,"tuner type");
 
 static unsigned int card[] = {[0 ... (SAA7134_MAXBOARDS - 1)] = UNSET };
-MODULE_PARM(card,"1-" __stringify(SAA7134_MAXBOARDS) "i");
+module_param_array(card, int, NULL, 0);
 MODULE_PARM_DESC(card,"card type");
 
 static unsigned int latency = UNSET;
-MODULE_PARM(latency,"i");
+module_param(latency, int, 0);
 MODULE_PARM_DESC(latency,"pci latency timer");
 
 struct list_head  saa7134_devlist;
diff -puN drivers/media/video/saa7134/saa7134-i2c.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/saa7134/saa7134-i2c.c
--- 25/drivers/media/video/saa7134/saa7134-i2c.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/saa7134/saa7134-i2c.c	Thu Nov  4 15:10:07 2004
@@ -34,11 +34,11 @@
 /* ----------------------------------------------------------- */
 
 static unsigned int i2c_debug = 0;
-MODULE_PARM(i2c_debug,"i");
+module_param(i2c_debug, int, 0);
 MODULE_PARM_DESC(i2c_debug,"enable debug messages [i2c]");
 
 static unsigned int i2c_scan = 0;
-MODULE_PARM(i2c_scan,"i");
+module_param(i2c_scan, int, 0);
 MODULE_PARM_DESC(i2c_scan,"scan i2c bus at insmod time");
 
 #define d1printk if (1 == i2c_debug) printk
diff -puN drivers/media/video/saa7134/saa7134-input.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/saa7134/saa7134-input.c
--- 25/drivers/media/video/saa7134/saa7134-input.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/saa7134/saa7134-input.c	Thu Nov  4 15:10:07 2004
@@ -30,11 +30,11 @@
 #include "saa7134.h"
 
 static unsigned int disable_ir = 0;
-MODULE_PARM(disable_ir,"i");
+module_param(disable_ir, bool, 0);
 MODULE_PARM_DESC(disable_ir,"disable infrared remote support");
 
 static unsigned int ir_debug = 0;
-MODULE_PARM(ir_debug,"i");
+module_param(ir_debug, bool, 0);
 MODULE_PARM_DESC(ir_debug,"enable debug messages [IR]");
 
 #define dprintk(fmt, arg...)	if (ir_debug) \
diff -puN drivers/media/video/saa7134/saa7134-oss.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/saa7134/saa7134-oss.c
--- 25/drivers/media/video/saa7134/saa7134-oss.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/saa7134/saa7134-oss.c	Thu Nov  4 15:10:07 2004
@@ -34,11 +34,11 @@
 /* ------------------------------------------------------------------ */
 
 static unsigned int oss_debug  = 0;
-MODULE_PARM(oss_debug,"i");
+module_param(oss_debug, int, 0);
 MODULE_PARM_DESC(oss_debug,"enable debug messages [oss]");
 
 static unsigned int oss_rate  = 0;
-MODULE_PARM(oss_rate,"i");
+module_param(oss_rate, int, 0);
 MODULE_PARM_DESC(oss_rate,"sample rate (valid are: 32000,48000)");
 
 #define dprintk(fmt, arg...)	if (oss_debug) \
diff -puN drivers/media/video/saa7134/saa7134-ts.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/saa7134/saa7134-ts.c
--- 25/drivers/media/video/saa7134/saa7134-ts.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/saa7134/saa7134-ts.c	Thu Nov  4 15:10:07 2004
@@ -38,15 +38,15 @@
 #define TS_PACKET_SIZE 188 /* TS packets 188 bytes */
 
 static unsigned int ts_debug  = 0;
-MODULE_PARM(ts_debug,"i");
+module_param(ts_debug, int, 0);
 MODULE_PARM_DESC(ts_debug,"enable debug messages [ts]");
 
 static unsigned int tsbufs = 4;
-MODULE_PARM(tsbufs,"i");
+module_param(tsbufs, int, 0);
 MODULE_PARM_DESC(tsbufs,"number of ts buffers, range 2-32");
 
 static unsigned int ts_nr_packets = 30;
-MODULE_PARM(ts_nr_packets,"i");
+module_param(ts_nr_packets, int, 0);
 MODULE_PARM_DESC(ts_nr_packets,"size of a ts buffers (in ts packets)");
 
 #define dprintk(fmt, arg...)	if (ts_debug) \
diff -puN drivers/media/video/saa7134/saa7134-tvaudio.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/saa7134/saa7134-tvaudio.c
--- 25/drivers/media/video/saa7134/saa7134-tvaudio.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/saa7134/saa7134-tvaudio.c	Thu Nov  4 15:10:07 2004
@@ -36,18 +36,18 @@
 /* ------------------------------------------------------------------ */
 
 static unsigned int audio_debug = 0;
-MODULE_PARM(audio_debug,"i");
+module_param(audio_debug, int, 0);
 MODULE_PARM_DESC(audio_debug,"enable debug messages [tv audio]");
 
 static unsigned int audio_ddep = 0;
-MODULE_PARM(audio_ddep,"i");
+module_param(audio_ddep, int, 0);
 MODULE_PARM_DESC(audio_ddep,"audio ddep overwrite");
 
 static int audio_clock_override = UNSET;
-MODULE_PARM(audio_clock_override, "i");
+module_param(audio_clock_override, int, 0);
 
 static int audio_clock_tweak = 0;
-MODULE_PARM(audio_clock_tweak, "i");
+module_param(audio_clock_tweak, int, 0);
 MODULE_PARM_DESC(audio_clock_tweak, "Audio clock tick fine tuning for cards with audio crystal that's slightly off (range [-1024 .. 1024])");
 
 #define dprintk(fmt, arg...)	if (audio_debug) \
diff -puN drivers/media/video/saa7134/saa7134-vbi.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/saa7134/saa7134-vbi.c
--- 25/drivers/media/video/saa7134/saa7134-vbi.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/saa7134/saa7134-vbi.c	Thu Nov  4 15:10:07 2004
@@ -33,11 +33,11 @@
 /* ------------------------------------------------------------------ */
 
 static unsigned int vbi_debug  = 0;
-MODULE_PARM(vbi_debug,"i");
+module_param(vbi_debug, int, 0);
 MODULE_PARM_DESC(vbi_debug,"enable debug messages [vbi]");
 
 static unsigned int vbibufs = 4;
-MODULE_PARM(vbibufs,"i");
+module_param(vbibufs, int, 0);
 MODULE_PARM_DESC(vbibufs,"number of vbi buffers, range 2-32");
 
 #define dprintk(fmt, arg...)	if (vbi_debug) \
diff -puN drivers/media/video/saa7134/saa7134-video.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/saa7134/saa7134-video.c
--- 25/drivers/media/video/saa7134/saa7134-video.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/saa7134/saa7134-video.c	Thu Nov  4 15:10:07 2004
@@ -39,11 +39,11 @@ static unsigned int gbuffers      = 8;
 static unsigned int noninterlaced = 0;
 static unsigned int gbufsize      = 720*576*4;
 static unsigned int gbufsize_max  = 720*576*4;
-MODULE_PARM(video_debug,"i");
+module_param(video_debug, bool, 0);
 MODULE_PARM_DESC(video_debug,"enable debug messages [video]");
-MODULE_PARM(gbuffers,"i");
+module_param(gbuffers, int, 0);
 MODULE_PARM_DESC(gbuffers,"number of capture buffers, range 2-32");
-MODULE_PARM(noninterlaced,"i");
+module_param(noninterlaced, bool, 0);
 MODULE_PARM_DESC(noninterlaced,"video input is noninterlaced");
 
 #define dprintk(fmt, arg...)	if (video_debug) \
diff -puN drivers/media/video/saa7185.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/saa7185.c
--- 25/drivers/media/video/saa7185.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/saa7185.c	Thu Nov  4 15:10:07 2004
@@ -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/tda7432.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/tda7432.c
--- 25/drivers/media/video/tda7432.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/tda7432.c	Thu Nov  4 15:10:07 2004
@@ -60,14 +60,14 @@ MODULE_AUTHOR("Eric Sandeen <eric_sandee
 MODULE_DESCRIPTION("bttv driver for the tda7432 audio processor chip");
 MODULE_LICENSE("GPL");
 
-MODULE_PARM(debug,"i");
-MODULE_PARM(loudness,"i");
-MODULE_PARM_DESC(maxvol,"Set maximium volume to +20db (0), default is 0db(1)");
-MODULE_PARM(maxvol,"i");
 static int maxvol = 0;
 static int loudness = 0; /* disable loudness by default */
 static int debug = 0;	 /* insmod parameter */
 
+module_param(debug, int, 0);
+module_param(loudness, int, 0);
+MODULE_PARM_DESC(maxvol,"Set maximium volume to +20db (0), default is 0db(1)");
+module_param(maxvol, int, 0);
 
 /* Address to scan (I2C address of this chip) */
 static unsigned short normal_i2c[] = {
diff -puN drivers/media/video/tda9875.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/tda9875.c
--- 25/drivers/media/video/tda9875.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/tda9875.c	Thu Nov  4 15:10:07 2004
@@ -34,10 +34,10 @@
 #include <media/audiochip.h>
 #include <media/id.h>
 
-MODULE_PARM(debug,"i");
 MODULE_LICENSE("GPL");
 
 static int debug = 0;	/* insmod parameter */
+module_param(debug, int, 0);
 
 /* Addresses to scan */
 static unsigned short normal_i2c[] =  {
diff -puN drivers/media/video/tda9887.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/tda9887.c
--- 25/drivers/media/video/tda9887.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/tda9887.c	Thu Nov  4 15:10:07 2004
@@ -36,7 +36,7 @@ I2C_CLIENT_INSMOD;
 
 /* insmod options */
 static unsigned int debug = 0;
-MODULE_PARM(debug,"i");
+module_param(debug, int, 0);
 MODULE_LICENSE("GPL");
 
 /* ---------------------------------------------------------------------- */
@@ -377,10 +377,10 @@ static unsigned int port1  = 1;
 static unsigned int port2  = 1;
 static unsigned int qss    = UNSET;
 static unsigned int adjust = 0x10;
-MODULE_PARM(port1,"i");
-MODULE_PARM(port2,"i");
-MODULE_PARM(qss,"i");
-MODULE_PARM(adjust,"i");
+module_param(port1, int, 0);
+module_param(port2, int, 0);
+module_param(qss, int, 0);
+module_param(adjust, int, 0);
 
 static int tda9887_set_insmod(struct tda9887 *t, char *buf)
 {
@@ -461,9 +461,9 @@ static int tda9887_set_pinnacle(struct t
 /* ---------------------------------------------------------------------- */
 
 static char *pal = "-";
-MODULE_PARM(pal,"s");
+module_param(pal, charp, 0);
 static char *secam = "-";
-MODULE_PARM(secam,"s");
+module_param(secam, charp, 0);
 
 static int tda9887_fixup_std(struct tda9887 *t)
 {
diff -puN drivers/media/video/tuner-3036.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/tuner-3036.c
--- 25/drivers/media/video/tuner-3036.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/tuner-3036.c	Thu Nov  4 15:10:07 2004
@@ -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/tuner.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/tuner.c
--- 25/drivers/media/video/tuner.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/tuner.c	Thu Nov  4 15:10:07 2004
@@ -1103,7 +1103,7 @@ static void set_type(struct i2c_client *
 }
 
 static char *pal = "-";
-MODULE_PARM(pal,"s");
+module_param(pal, charp, 0);
 
 static int tuner_fixup_std(struct tuner *t)
 {
diff -puN drivers/media/video/tvaudio.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/tvaudio.c
--- 25/drivers/media/video/tvaudio.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/tvaudio.c	Thu Nov  4 15:10:07 2004
@@ -37,8 +37,8 @@
 /* ---------------------------------------------------------------------- */
 /* insmod args                                                            */
 
-MODULE_PARM(debug,"i");
 static int debug = 0;	/* insmod parameter */
+module_param(debug, bool, 0);
 
 MODULE_DESCRIPTION("device driver for various i2c TV sound decoder / audiomux chips");
 MODULE_AUTHOR("Eric Sandeen, Steve VanDeBogart, Greg Alexander, Gerd Knorr");
@@ -764,9 +764,9 @@ static int tda9874a_dic = -1;		/* device
 static unsigned int tda9874a_SIF   = UNSET;
 static unsigned int tda9874a_AMSEL = UNSET;
 static unsigned int tda9874a_STD   = UNSET;
-MODULE_PARM(tda9874a_SIF,"i");
-MODULE_PARM(tda9874a_AMSEL,"i");
-MODULE_PARM(tda9874a_STD,"i");
+module_param(tda9874a_SIF, int, 0);
+module_param(tda9874a_AMSEL, int, 0);
+module_param(tda9874a_STD, int, 0);
 
 /*
  * initialization table for tda9874 decoder:
@@ -1218,16 +1218,16 @@ int tea6420  = 1;
 int pic16c54 = 1;
 int ta8874z  = 0;  // address clash with tda9840
 
-MODULE_PARM(tda8425,"i");
-MODULE_PARM(tda9840,"i");
-MODULE_PARM(tda9850,"i");
-MODULE_PARM(tda9855,"i");
-MODULE_PARM(tda9873,"i");
-MODULE_PARM(tda9874a,"i");
-MODULE_PARM(tea6300,"i");
-MODULE_PARM(tea6420,"i");
-MODULE_PARM(pic16c54,"i");
-MODULE_PARM(ta8874z,"i");
+module_param(tda8425, bool, 0);
+module_param(tda9840, bool, 0);
+module_param(tda9850, bool, 0);
+module_param(tda9855, bool, 0);
+module_param(tda9873, bool, 0);
+module_param(tda9874a, bool, 0);
+module_param(tea6300, bool, 0);
+module_param(tea6420, bool, 0);
+module_param(pic16c54, bool, 0);
+module_param(ta8874z, bool, 0);
 
 static struct CHIPDESC chiplist[] = {
 	{
diff -puN drivers/media/video/tvmixer.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/tvmixer.c
--- 25/drivers/media/video/tvmixer.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/tvmixer.c	Thu Nov  4 15:10:07 2004
@@ -20,7 +20,7 @@
 #define DEV_MAX  4
 
 static int devnr = -1;
-MODULE_PARM(devnr,"i");
+module_param(devnr, int, 0);
 
 MODULE_AUTHOR("Gerd Knorr");
 MODULE_LICENSE("GPL");
diff -puN drivers/media/video/v4l1-compat.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/v4l1-compat.c
--- 25/drivers/media/video/v4l1-compat.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/v4l1-compat.c	Thu Nov  4 15:10:07 2004
@@ -44,7 +44,7 @@
 #endif
 
 static unsigned int debug  = 0;
-MODULE_PARM(debug,"i");
+module_param(debug, bool, 0);
 MODULE_PARM_DESC(debug,"enable debug messages");
 MODULE_AUTHOR("Bill Dirks");
 MODULE_DESCRIPTION("v4l(1) compatibility layer for v4l2 drivers.");
diff -puN drivers/media/video/video-buf.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/video-buf.c
--- 25/drivers/media/video/video-buf.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/video-buf.c	Thu Nov  4 15:10:07 2004
@@ -40,7 +40,7 @@ static int debug = 0;
 MODULE_DESCRIPTION("helper module to manage video4linux pci dma buffers");
 MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
 MODULE_LICENSE("GPL");
-MODULE_PARM(debug,"i");
+module_param(debug, int, 0);
 
 #define dprintk(level, fmt, arg...)	if (debug >= level) \
 	printk(KERN_DEBUG "vbuf: " fmt , ## arg)
diff -puN drivers/media/video/videocodec.c~remove-module_parm-from-allyesconfig-almost drivers/media/video/videocodec.c
--- 25/drivers/media/video/videocodec.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/videocodec.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/video/vpx3220.c
--- 25/drivers/media/video/vpx3220.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/vpx3220.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/video/w9966.c
--- 25/drivers/media/video/w9966.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/w9966.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/video/zoran_card.c
--- 25/drivers/media/video/zoran_card.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/zoran_card.c	Thu Nov  4 15:10:07 2004
@@ -61,15 +61,15 @@ extern const struct zoran_format zoran_f
 extern const int zoran_num_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");
 
 /*
@@ -81,23 +81,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");
 
 /*
@@ -119,27 +119,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~remove-module_parm-from-allyesconfig-almost drivers/media/video/zoran_device.c
--- 25/drivers/media/video/zoran_device.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/zoran_device.c	Thu Nov  4 15:10:07 2004
@@ -76,7 +76,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~remove-module_parm-from-allyesconfig-almost drivers/media/video/zoran_driver.c
--- 25/drivers/media/video/zoran_driver.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/zoran_driver.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/video/zr36016.c
--- 25/drivers/media/video/zr36016.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/zr36016.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/video/zr36050.c
--- 25/drivers/media/video/zr36050.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/zr36050.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/media/video/zr36060.c
--- 25/drivers/media/video/zr36060.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/media/video/zr36060.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/mtd/devices/blkmtd.c
--- 25/drivers/mtd/devices/blkmtd.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/mtd/devices/blkmtd.c	Thu Nov  4 15:10:07 2004
@@ -68,13 +68,13 @@ 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~remove-module_parm-from-allyesconfig-almost drivers/mtd/devices/docprobe.c
--- 25/drivers/mtd/devices/docprobe.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/mtd/devices/docprobe.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/mtd/devices/pmc551.c
--- 25/drivers/mtd/devices/pmc551.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/mtd/devices/pmc551.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/mtd/devices/slram.c
--- 25/drivers/mtd/devices/slram.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/mtd/devices/slram.c	Thu Nov  4 15:10:07 2004
@@ -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;
 
 int slram_erase(struct mtd_info *, struct erase_info *);
diff -puN drivers/mtd/ftl.c~remove-module_parm-from-allyesconfig-almost drivers/mtd/ftl.c
--- 25/drivers/mtd/ftl.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/mtd/ftl.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/mtd/maps/scx200_docflash.c
--- 25/drivers/mtd/maps/scx200_docflash.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/mtd/maps/scx200_docflash.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/3c509.c
--- 25/drivers/net/3c509.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/3c509.c	Thu Nov  4 15:10:07 2004
@@ -1535,16 +1535,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~remove-module_parm-from-allyesconfig-almost drivers/net/3c515.c
--- 25/drivers/net/3c515.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/3c515.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/3c59x.c
--- 25/drivers/net/3c59x.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/3c59x.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/82596.c
--- 25/drivers/net/82596.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/82596.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/amd8111e.c
--- 25/drivers/net/amd8111e.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/amd8111e.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/appletalk/ipddp.c
--- 25/drivers/net/appletalk/ipddp.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/appletalk/ipddp.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/arcnet/arcnet.c
--- 25/drivers/net/arcnet/arcnet.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/arcnet/arcnet.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/atp.c
--- 25/drivers/net/atp.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/atp.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/bonding/bond_main.c
--- 25/drivers/net/bonding/bond_main.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/bonding/bond_main.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/de600.c
--- 25/drivers/net/de600.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/de600.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/de620.c
--- 25/drivers/net/de620.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/de620.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/dgrs.c
--- 25/drivers/net/dgrs.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/dgrs.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/dl2k.c
--- 25/drivers/net/dl2k.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/dl2k.c	Thu Nov  4 15:10:07 2004
@@ -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/epic100.c~remove-module_parm-from-allyesconfig-almost drivers/net/epic100.c
--- 25/drivers/net/epic100.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/epic100.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/fealnx.c
--- 25/drivers/net/fealnx.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/fealnx.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/hamachi.c
--- 25/drivers/net/hamachi.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/hamachi.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/hamradio/baycom_epp.c
--- 25/drivers/net/hamradio/baycom_epp.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/hamradio/baycom_epp.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/hamradio/baycom_par.c
--- 25/drivers/net/hamradio/baycom_par.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/hamradio/baycom_par.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/hamradio/baycom_ser_fdx.c
--- 25/drivers/net/hamradio/baycom_ser_fdx.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/hamradio/baycom_ser_fdx.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/hamradio/baycom_ser_hdx.c
--- 25/drivers/net/hamradio/baycom_ser_hdx.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/hamradio/baycom_ser_hdx.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/hp100.c
--- 25/drivers/net/hp100.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/hp100.c	Thu Nov  4 15:10:07 2004
@@ -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/donauboe.c~remove-module_parm-from-allyesconfig-almost drivers/net/irda/donauboe.c
--- 25/drivers/net/irda/donauboe.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/irda/donauboe.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/irda/irda-usb.c
--- 25/drivers/net/irda/irda-usb.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/irda/irda-usb.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/irda/irtty-sir.c
--- 25/drivers/net/irda/irtty-sir.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/irda/irtty-sir.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/irda/nsc-ircc.c
--- 25/drivers/net/irda/nsc-ircc.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/irda/nsc-ircc.c	Thu Nov  4 15:10:07 2004
@@ -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/tekram-sir.c~remove-module_parm-from-allyesconfig-almost drivers/net/irda/tekram-sir.c
--- 25/drivers/net/irda/tekram-sir.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/irda/tekram-sir.c	Thu Nov  4 15:10:07 2004
@@ -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/w83977af_ir.c~remove-module_parm-from-allyesconfig-almost drivers/net/irda/w83977af_ir.c
--- 25/drivers/net/irda/w83977af_ir.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/irda/w83977af_ir.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/ixgb/ixgb_param.c
--- 25/drivers/net/ixgb/ixgb_param.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/ixgb/ixgb_param.c	Thu Nov  4 15:10:07 2004
@@ -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/natsemi.c~remove-module_parm-from-allyesconfig-almost drivers/net/natsemi.c
--- 25/drivers/net/natsemi.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/natsemi.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/ne2k-pci.c
--- 25/drivers/net/ne2k-pci.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/ne2k-pci.c	Thu Nov  4 15:10:07 2004
@@ -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/plip.c~remove-module_parm-from-allyesconfig-almost drivers/net/plip.c
--- 25/drivers/net/plip.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/plip.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/ppp_async.c
--- 25/drivers/net/ppp_async.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/ppp_async.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/sis900.c
--- 25/drivers/net/sis900.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/sis900.c	Thu Nov  4 15:10:07 2004
@@ -178,9 +178,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/sk98lin/skge.c~remove-module_parm-from-allyesconfig-almost drivers/net/sk98lin/skge.c
--- 25/drivers/net/sk98lin/skge.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/sk98lin/skge.c	Thu Nov  4 15:10:07 2004
@@ -360,26 +360,6 @@ SK_AC		*pAC;
 MODULE_AUTHOR("Mirko Lindner <mlindner@syskonnect.de>");
 MODULE_DESCRIPTION("SysKonnect SK-NET Gigabit Ethernet SK-98xx driver");
 MODULE_LICENSE("GPL");
-MODULE_PARM(Speed_A,    "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(Speed_B,    "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(AutoNeg_A,  "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(AutoNeg_B,  "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(DupCap_A,   "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(DupCap_B,   "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(FlowCtrl_A, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(FlowCtrl_B, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(Role_A,	"1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(Role_B,	"1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(ConType,	"1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(PrefPort,   "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(RlmtMode,   "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-/* used for interrupt moderation */
-MODULE_PARM(IntsPerSec,     "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "i");
-MODULE_PARM(Moderation,     "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(Stats,          "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(ModerationMask, "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-MODULE_PARM(AutoSizing,     "1-" __MODULE_STRING(SK_MAX_CARD_PARAM) "s");
-
 
 #ifdef LINK_SPEED_A
 static char *Speed_A[SK_MAX_CARD_PARAM] = LINK_SPEED;
@@ -465,6 +445,26 @@ static char *ModerationMask[SK_MAX_CARD_
 static char *AutoSizing[SK_MAX_CARD_PARAM];
 static char *Stats[SK_MAX_CARD_PARAM];
 
+module_param_array(Speed_A, charp, NULL, 0);
+module_param_array(Speed_B, charp, NULL, 0);
+module_param_array(AutoNeg_A, charp, NULL, 0);
+module_param_array(AutoNeg_B, charp, NULL, 0);
+module_param_array(DupCap_A, charp, NULL, 0);
+module_param_array(DupCap_B, charp, NULL, 0);
+module_param_array(FlowCtrl_A, charp, NULL, 0);
+module_param_array(FlowCtrl_B, charp, NULL, 0);
+module_param_array(Role_A, charp, NULL, 0);
+module_param_array(Role_B, charp, NULL, 0);
+module_param_array(ConType, charp, NULL, 0);
+module_param_array(PrefPort, charp, NULL, 0);
+module_param_array(RlmtMode, charp, NULL, 0);
+/* used for interrupt moderation */
+module_param_array(IntsPerSec, int, NULL, 0);
+module_param_array(Moderation, charp, NULL, 0);
+module_param_array(Stats, charp, NULL, 0);
+module_param_array(ModerationMask, charp, NULL, 0);
+module_param_array(AutoSizing, charp, NULL, 0);
+
 /*****************************************************************************
  *
  * 	SkGeBoardInit - do level 0 and 1 initialization
diff -puN drivers/net/smc-mca.c~remove-module_parm-from-allyesconfig-almost drivers/net/smc-mca.c
--- 25/drivers/net/smc-mca.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/smc-mca.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/starfire.c
--- 25/drivers/net/starfire.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/starfire.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/sundance.c
--- 25/drivers/net/sundance.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/sundance.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/sunhme.c
--- 25/drivers/net/sunhme.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/sunhme.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/tlan.c
--- 25/drivers/net/tlan.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/tlan.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/tokenring/3c359.c
--- 25/drivers/net/tokenring/3c359.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/tokenring/3c359.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/tokenring/lanstreamer.c
--- 25/drivers/net/tokenring/lanstreamer.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/tokenring/lanstreamer.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/tokenring/olympic.c
--- 25/drivers/net/tokenring/olympic.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/tokenring/olympic.c	Thu Nov  4 15:10:07 2004
@@ -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/dmfe.c~remove-module_parm-from-allyesconfig-almost drivers/net/tulip/dmfe.c
--- 25/drivers/net/tulip/dmfe.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/tulip/dmfe.c	Thu Nov  4 15:10:07 2004
@@ -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, int, 0);
+module_param(cr6set, int, 0);
+module_param(chkmode, int, 0);
+module_param(HPNA_mode, int, 0);
+module_param(HPNA_rx_cmd, int, 0);
+module_param(HPNA_tx_cmd, int, 0);
+module_param(HPNA_NoiseFloor, int, 0);
+module_param(SF_mode, int, 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/winbond-840.c~remove-module_parm-from-allyesconfig-almost drivers/net/tulip/winbond-840.c
--- 25/drivers/net/tulip/winbond-840.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/tulip/winbond-840.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/typhoon.c
--- 25/drivers/net/typhoon.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/typhoon.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/via-velocity.c
--- 25/drivers/net/via-velocity.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/via-velocity.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/wan/cosa.c
--- 25/drivers/net/wan/cosa.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wan/cosa.c	Thu Nov  4 15:10:07 2004
@@ -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/dscc4.c~remove-module_parm-from-allyesconfig-almost drivers/net/wan/dscc4.c
--- 25/drivers/net/wan/dscc4.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wan/dscc4.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/wan/farsync.c
--- 25/drivers/net/wan/farsync.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wan/farsync.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/wan/hostess_sv11.c
--- 25/drivers/net/wan/hostess_sv11.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wan/hostess_sv11.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/wan/sealevel.c
--- 25/drivers/net/wan/sealevel.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wan/sealevel.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/wan/syncppp.c
--- 25/drivers/net/wan/syncppp.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wan/syncppp.c	Thu Nov  4 15:10:07 2004
@@ -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/wireless/airo.c~remove-module_parm-from-allyesconfig-almost drivers/net/wireless/airo.c
--- 25/drivers/net/wireless/airo.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wireless/airo.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/wireless/airo_cs.c
--- 25/drivers/net/wireless/airo_cs.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wireless/airo_cs.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/wireless/arlan-main.c
--- 25/drivers/net/wireless/arlan-main.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wireless/arlan-main.c	Thu Nov  4 15:10:07 2004
@@ -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/netwave_cs.c~remove-module_parm-from-allyesconfig-almost drivers/net/wireless/netwave_cs.c
--- 25/drivers/net/wireless/netwave_cs.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wireless/netwave_cs.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/wireless/orinoco.c
--- 25/drivers/net/wireless/orinoco.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wireless/orinoco.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/wireless/orinoco_cs.c
--- 25/drivers/net/wireless/orinoco_cs.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wireless/orinoco_cs.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/wireless/ray_cs.c
--- 25/drivers/net/wireless/ray_cs.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wireless/ray_cs.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/net/wireless/wavelan_cs.p.h
--- 25/drivers/net/wireless/wavelan_cs.p.h~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/net/wireless/wavelan_cs.p.h	Thu Nov  4 15:10:07 2004
@@ -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/parport/parport_cs.c~remove-module_parm-from-allyesconfig-almost drivers/parport/parport_cs.c
--- 25/drivers/parport/parport_cs.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/parport/parport_cs.c	Thu Nov  4 15:10:07 2004
@@ -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/pnp/isapnp/core.c~remove-module_parm-from-allyesconfig-almost drivers/pnp/isapnp/core.c
--- 25/drivers/pnp/isapnp/core.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/pnp/isapnp/core.c	Thu Nov  4 15:10:07 2004
@@ -58,13 +58,13 @@ int isapnp_verbose = 1;			/* verbose mod
 
 MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
 MODULE_DESCRIPTION("Generic ISA Plug & Play support");
-MODULE_PARM(isapnp_disable, "i");
+module_param(isapnp_disable, int, 0);
 MODULE_PARM_DESC(isapnp_disable, "ISA Plug & Play disable");
-MODULE_PARM(isapnp_rdp, "i");
+module_param(isapnp_rdp, int, 0);
 MODULE_PARM_DESC(isapnp_rdp, "ISA Plug & Play read data port");
-MODULE_PARM(isapnp_reset, "i");
+module_param(isapnp_reset, int, 0);
 MODULE_PARM_DESC(isapnp_reset, "ISA Plug & Play reset all cards");
-MODULE_PARM(isapnp_verbose, "i");
+module_param(isapnp_verbose, int, 0);
 MODULE_PARM_DESC(isapnp_verbose, "ISA Plug & Play verbose mode");
 MODULE_LICENSE("GPL");
 
diff -puN drivers/scsi/aacraid/aachba.c~remove-module_parm-from-allyesconfig-almost drivers/scsi/aacraid/aachba.c
--- 25/drivers/scsi/aacraid/aachba.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/aacraid/aachba.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/scsi/aic7xxx/aic79xx_osm.c
--- 25/drivers/scsi/aic7xxx/aic79xx_osm.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/aic7xxx/aic79xx_osm.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/scsi/fdomain.c
--- 25/drivers/scsi/fdomain.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/fdomain.c	Thu Nov  4 15:10:07 2004
@@ -408,7 +408,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~remove-module_parm-from-allyesconfig-almost drivers/scsi/g_NCR5380.c
--- 25/drivers/scsi/g_NCR5380.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/g_NCR5380.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/scsi/in2000.c
--- 25/drivers/scsi/in2000.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/in2000.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/scsi/NCR_D700.c
--- 25/drivers/scsi/NCR_D700.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/NCR_D700.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/scsi/nsp32.c
--- 25/drivers/scsi/nsp32.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/nsp32.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/scsi/pcmcia/aha152x_stub.c
--- 25/drivers/scsi/pcmcia/aha152x_stub.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/pcmcia/aha152x_stub.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/scsi/pcmcia/fdomain_stub.c
--- 25/drivers/scsi/pcmcia/fdomain_stub.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/pcmcia/fdomain_stub.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/scsi/pcmcia/nsp_cs.c
--- 25/drivers/scsi/pcmcia/nsp_cs.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/pcmcia/nsp_cs.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/scsi/pcmcia/qlogic_stub.c
--- 25/drivers/scsi/pcmcia/qlogic_stub.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/pcmcia/qlogic_stub.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/scsi/qlogicfas.c
--- 25/drivers/scsi/qlogicfas.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/qlogicfas.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/scsi/sim710.c
--- 25/drivers/scsi/sim710.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/sim710.c	Thu Nov  4 15:10:07 2004
@@ -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/scsi/sr.c~remove-module_parm-from-allyesconfig-almost drivers/scsi/sr.c
--- 25/drivers/scsi/sr.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/sr.c	Thu Nov  4 15:10:07 2004
@@ -59,9 +59,6 @@
 #include "sr.h"
 
 
-MODULE_PARM(xa_test, "i");	/* see sr_ioctl.c */
-
-
 #define SR_DISKS	256
 
 #define MAX_RETRIES	3
diff -puN drivers/scsi/sr_ioctl.c~remove-module_parm-from-allyesconfig-almost drivers/scsi/sr_ioctl.c
--- 25/drivers/scsi/sr_ioctl.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/scsi/sr_ioctl.c	Thu Nov  4 15:10:07 2004
@@ -28,6 +28,7 @@
 /* The sr_is_xa() seems to trigger firmware bugs with some drives :-(
  * It is off by default and can be turned on with this module parameter */
 static int xa_test = 0;
+module_param(xa_test, bool, 0);
 
 #define IOCTL_RETRIES 3
 
diff -puN drivers/telephony/ixj.c~remove-module_parm-from-allyesconfig-almost drivers/telephony/ixj.c
--- 25/drivers/telephony/ixj.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/telephony/ixj.c	Thu Nov  4 15:10:07 2004
@@ -285,7 +285,7 @@ static int ixjdebug;
 static int hertz = HZ;
 static int samplerate = 100;
 
-MODULE_PARM(ixjdebug, "i");
+module_param(ixjdebug, int, 0);
 
 /************************************************************************
 *
@@ -7707,8 +7707,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/cyber2000fb.c~remove-module_parm-from-allyesconfig-almost drivers/video/cyber2000fb.c
--- 25/drivers/video/cyber2000fb.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/video/cyber2000fb.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/video/hgafb.c
--- 25/drivers/video/hgafb.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/video/hgafb.c	Thu Nov  4 15:10:07 2004
@@ -612,7 +612,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~remove-module_parm-from-allyesconfig-almost drivers/video/matrox/matroxfb_crtc2.c
--- 25/drivers/video/matrox/matroxfb_crtc2.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/video/matrox/matroxfb_crtc2.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/video/pm2fb.c
--- 25/drivers/video/pm2fb.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/video/pm2fb.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/video/sstfb.c
--- 25/drivers/video/sstfb.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/video/sstfb.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/video/tridentfb.c
--- 25/drivers/video/tridentfb.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/video/tridentfb.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost drivers/video/vfb.c
--- 25/drivers/video/vfb.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/drivers/video/vfb.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/aci.c
--- 25/sound/oss/aci.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/aci.c	Thu Nov  4 15:10:07 2004
@@ -90,11 +90,11 @@ 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/ad1848.c~remove-module_parm-from-allyesconfig-almost sound/oss/ad1848.c
--- 25/sound/oss/ad1848.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/ad1848.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/adlib_card.c
--- 25/sound/oss/adlib_card.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/adlib_card.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/aedsp16.c
--- 25/sound/oss/aedsp16.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/aedsp16.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/ali5455.c
--- 25/sound/oss/ali5455.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/ali5455.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/awe_wave.c
--- 25/sound/oss/awe_wave.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/awe_wave.c	Thu Nov  4 15:10:07 2004
@@ -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/btaudio.c~remove-module_parm-from-allyesconfig-almost sound/oss/btaudio.c
--- 25/sound/oss/btaudio.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/btaudio.c	Thu Nov  4 15:10:07 2004
@@ -1113,15 +1113,15 @@ static void btaudio_cleanup_module(void)
 module_init(btaudio_init_module);
 module_exit(btaudio_cleanup_module);
 
-MODULE_PARM(dsp1,"i");
-MODULE_PARM(dsp2,"i");
-MODULE_PARM(mixer,"i");
-MODULE_PARM(debug,"i");
-MODULE_PARM(irq_debug,"i");
-MODULE_PARM(digital,"i");
-MODULE_PARM(analog,"i");
-MODULE_PARM(rate,"i");
-MODULE_PARM(latency,"i");
+module_param(dsp1, int, 0);
+module_param(dsp2, int, 0);
+module_param(mixer, int, 0);
+module_param(debug, bool, 0644);
+module_param(irq_debug, bool, 0644);
+module_param(digital, bool, 0);
+module_param(analog, bool, 0);
+module_param(rate, int, 0);
+module_param(latency, int, 0);
 MODULE_PARM_DESC(latency,"pci latency timer");
 
 MODULE_DEVICE_TABLE(pci, btaudio_pci_tbl);
diff -puN sound/oss/cmpci.c~remove-module_parm-from-allyesconfig-almost sound/oss/cmpci.c
--- 25/sound/oss/cmpci.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/cmpci.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/cs4232.c
--- 25/sound/oss/cs4232.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/cs4232.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/cs4281/cs4281m.c
--- 25/sound/oss/cs4281/cs4281m.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/cs4281/cs4281m.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/cs46xx.c
--- 25/sound/oss/cs46xx.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/cs46xx.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/es1370.c
--- 25/sound/oss/es1370.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/es1370.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/es1371.c
--- 25/sound/oss/es1371.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/es1371.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/gus_card.c
--- 25/sound/oss/gus_card.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/gus_card.c	Thu Nov  4 15:10:07 2004
@@ -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/i810_audio.c~remove-module_parm-from-allyesconfig-almost sound/oss/i810_audio.c
--- 25/sound/oss/i810_audio.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/i810_audio.c	Thu Nov  4 15:10:07 2004
@@ -3463,10 +3463,10 @@ static int i810_pm_resume(struct pci_dev
 MODULE_AUTHOR("");
 MODULE_DESCRIPTION("Intel 810 audio support");
 MODULE_LICENSE("GPL");
-MODULE_PARM(ftsodell, "i");
-MODULE_PARM(clocking, "i");
-MODULE_PARM(strict_clocking, "i");
-MODULE_PARM(spdif_locked, "i");
+module_param(ftsodell, bool, 0);
+module_param(clocking, int, 0);
+module_param(strict_clocking, bool, 0);
+module_param(spdif_locked, int, 0);
 
 #define I810_MODULE_NAME "intel810_audio"
 
diff -puN sound/oss/mad16.c~remove-module_parm-from-allyesconfig-almost sound/oss/mad16.c
--- 25/sound/oss/mad16.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/mad16.c	Thu Nov  4 15:10:07 2004
@@ -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/maestro.c~remove-module_parm-from-allyesconfig-almost sound/oss/maestro.c
--- 25/sound/oss/maestro.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/maestro.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/maui.c
--- 25/sound/oss/maui.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/maui.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/mpu401.c
--- 25/sound/oss/mpu401.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/mpu401.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/msnd_pinnacle.c
--- 25/sound/oss/msnd_pinnacle.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/msnd_pinnacle.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/nm256_audio.c
--- 25/sound/oss/nm256_audio.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/nm256_audio.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/opl3.c
--- 25/sound/oss/opl3.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/opl3.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/opl3sa2.c
--- 25/sound/oss/opl3sa2.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/opl3sa2.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/opl3sa.c
--- 25/sound/oss/opl3sa.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/opl3sa.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/pas2_card.c
--- 25/sound/oss/pas2_card.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/pas2_card.c	Thu Nov  4 15:10:07 2004
@@ -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_param(io, int, 0);
+module_param(irq, int, 0);
+module_param(dma, int, 0);
+module_param(dma16, int, 0);
 
-MODULE_PARM(sb_io,"i");
-MODULE_PARM(sb_irq,"i");
-MODULE_PARM(sb_dma,"i");
-MODULE_PARM(sb_dma16,"i");
+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_PARM(joystick,"i");
-MODULE_PARM(symphony,"i");
-MODULE_PARM(broken_bus_clock,"i");
+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~remove-module_parm-from-allyesconfig-almost sound/oss/pss.c
--- 25/sound/oss/pss.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/pss.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/rme96xx.c
--- 25/sound/oss/rme96xx.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/rme96xx.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/sgalaxy.c
--- 25/sound/oss/sgalaxy.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/sgalaxy.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/sonicvibes.c
--- 25/sound/oss/sonicvibes.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/sonicvibes.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/soundcard.c
--- 25/sound/oss/soundcard.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/soundcard.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/sscape.c
--- 25/sound/oss/sscape.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/sscape.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/trix.c
--- 25/sound/oss/trix.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/trix.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/uart401.c
--- 25/sound/oss/uart401.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/uart401.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/uart6850.c
--- 25/sound/oss/uart6850.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/uart6850.c	Thu Nov  4 15:10:07 2004
@@ -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~remove-module_parm-from-allyesconfig-almost sound/oss/wavfront.c
--- 25/sound/oss/wavfront.c~remove-module_parm-from-allyesconfig-almost	Thu Nov  4 15:10:07 2004
+++ 25-akpm/sound/oss/wavfront.c	Thu Nov  4 15:10:07 2004
@@ -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)
 {
_