summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/mm/testmmiotrace.c2
-rw-r--r--drivers/char/applicom.c4
-rw-r--r--drivers/char/ipmi/ipmi_si_intf.c14
-rw-r--r--drivers/char/mwave/mwavedd.c8
-rw-r--r--drivers/clocksource/cs5535-clockevt.c2
-rw-r--r--drivers/cpufreq/speedstep-smi.c2
-rw-r--r--drivers/gpio/gpio-104-dio-48e.c4
-rw-r--r--drivers/gpio/gpio-104-idi-48.c4
-rw-r--r--drivers/gpio/gpio-104-idio-16.c4
-rw-r--r--drivers/gpio/gpio-gpio-mm.c2
-rw-r--r--drivers/gpio/gpio-ws16c48.c4
-rw-r--r--drivers/i2c/busses/i2c-ali15x3.c2
-rw-r--r--drivers/i2c/busses/i2c-elektor.c6
-rw-r--r--drivers/i2c/busses/i2c-parport-light.c4
-rw-r--r--drivers/i2c/busses/i2c-pca-isa.c4
-rw-r--r--drivers/i2c/busses/i2c-piix4.c2
-rw-r--r--drivers/i2c/busses/i2c-sis5595.c2
-rw-r--r--drivers/i2c/busses/i2c-viapro.c2
-rw-r--r--drivers/i2c/busses/scx200_acb.c2
-rw-r--r--drivers/iio/adc/stx104.c2
-rw-r--r--drivers/iio/dac/cio-dac.c2
-rw-r--r--drivers/input/mouse/inport.c2
-rw-r--r--drivers/input/mouse/logibm.c2
-rw-r--r--drivers/input/touchscreen/mk712.c4
-rw-r--r--drivers/isdn/hardware/avm/b1isa.c4
-rw-r--r--drivers/isdn/hardware/avm/t1isa.c4
-rw-r--r--drivers/isdn/hisax/config.c10
-rw-r--r--drivers/media/pci/zoran/zoran_card.c2
-rw-r--r--drivers/media/rc/serial_ir.c10
-rw-r--r--drivers/misc/dummy-irq.c2
-rw-r--r--drivers/mmc/host/wbsd.c8
-rw-r--r--drivers/net/appletalk/cops.c6
-rw-r--r--drivers/net/appletalk/ltpc.c6
-rw-r--r--drivers/net/arcnet/com20020-isa.c4
-rw-r--r--drivers/net/arcnet/com90io.c4
-rw-r--r--drivers/net/arcnet/com90xx.c4
-rw-r--r--drivers/net/can/cc770/cc770_isa.c8
-rw-r--r--drivers/net/can/sja1000/sja1000_isa.c8
-rw-r--r--drivers/net/ethernet/3com/3c509.c2
-rw-r--r--drivers/net/ethernet/3com/3c59x.c4
-rw-r--r--drivers/net/ethernet/8390/ne.c4
-rw-r--r--drivers/net/ethernet/8390/smc-ultra.c4
-rw-r--r--drivers/net/ethernet/8390/wd.c8
-rw-r--r--drivers/net/ethernet/amd/lance.c6
-rw-r--r--drivers/net/ethernet/amd/ni65.c6
-rw-r--r--drivers/net/ethernet/cirrus/cs89x0.c6
-rw-r--r--drivers/net/ethernet/dec/tulip/de4x5.c2
-rw-r--r--drivers/net/ethernet/hp/hp100.c2
-rw-r--r--drivers/net/ethernet/realtek/atp.c4
-rw-r--r--drivers/net/ethernet/smsc/smc9194.c4
-rw-r--r--drivers/net/hamradio/baycom_epp.c2
-rw-r--r--drivers/net/hamradio/baycom_par.c2
-rw-r--r--drivers/net/hamradio/baycom_ser_fdx.c4
-rw-r--r--drivers/net/hamradio/baycom_ser_hdx.c4
-rw-r--r--drivers/net/hamradio/dmascc.c2
-rw-r--r--drivers/net/irda/ali-ircc.c6
-rw-r--r--drivers/net/irda/nsc-ircc.c6
-rw-r--r--drivers/net/irda/smsc-ircc2.c10
-rw-r--r--drivers/net/irda/w83977af_ir.c4
-rw-r--r--drivers/net/wan/cosa.c6
-rw-r--r--drivers/net/wan/hostess_sv11.c6
-rw-r--r--drivers/net/wan/sbni.c4
-rw-r--r--drivers/net/wan/sealevel.c8
-rw-r--r--drivers/net/wireless/cisco/airo.c4
-rw-r--r--drivers/parport/parport_pc.c8
-rw-r--r--drivers/pci/hotplug/cpcihp_generic.c2
-rw-r--r--drivers/pcmcia/i82365.c8
-rw-r--r--drivers/pcmcia/tcic.c8
-rw-r--r--drivers/scsi/aha152x.c4
-rw-r--r--drivers/scsi/aha1542.c2
-rw-r--r--drivers/scsi/g_NCR5380.c8
-rw-r--r--drivers/scsi/gdth.c2
-rw-r--r--drivers/scsi/qlogicfas.c4
-rw-r--r--drivers/staging/speakup/speakup_acntpc.c2
-rw-r--r--drivers/staging/speakup/speakup_dtlk.c2
-rw-r--r--drivers/staging/speakup/speakup_keypc.c2
-rw-r--r--drivers/staging/vme/devices/vme_pio2_core.c8
-rw-r--r--drivers/tty/cyclades.c4
-rw-r--r--drivers/tty/moxa.c2
-rw-r--r--drivers/tty/mxser.c2
-rw-r--r--drivers/tty/rocket.c10
-rw-r--r--drivers/tty/serial/8250/8250_core.c4
-rw-r--r--drivers/tty/synclink.c6
-rw-r--r--drivers/video/fbdev/arcfb.c8
-rw-r--r--drivers/video/fbdev/n411.c6
-rw-r--r--drivers/watchdog/cpu5wdt.c2
-rw-r--r--drivers/watchdog/eurotechwdt.c4
-rw-r--r--drivers/watchdog/pc87413_wdt.c2
-rw-r--r--drivers/watchdog/sc1200wdt.c2
-rw-r--r--drivers/watchdog/wdt.c4
-rw-r--r--fs/pstore/ram.c2
-rw-r--r--include/linux/moduleparam.h65
-rw-r--r--sound/drivers/mpu401/mpu401.c4
-rw-r--r--sound/drivers/mtpav.c4
-rw-r--r--sound/drivers/serial-u16550.c4
-rw-r--r--sound/isa/ad1848/ad1848.c6
-rw-r--r--sound/isa/adlib.c2
-rw-r--r--sound/isa/cmi8328.c12
-rw-r--r--sound/isa/cmi8330.c20
-rw-r--r--sound/isa/cs423x/cs4231.c12
-rw-r--r--sound/isa/cs423x/cs4236.c18
-rw-r--r--sound/isa/es1688/es1688.c12
-rw-r--r--sound/isa/es18xx.c12
-rw-r--r--sound/isa/galaxy/galaxy.c16
-rw-r--r--sound/isa/gus/gusclassic.c8
-rw-r--r--sound/isa/gus/gusextreme.c16
-rw-r--r--sound/isa/gus/gusmax.c8
-rw-r--r--sound/isa/gus/interwave.c10
-rw-r--r--sound/isa/msnd/msnd_pinnacle.c20
-rw-r--r--sound/isa/opl3sa2.c16
-rw-r--r--sound/isa/opti9xx/miro.c14
-rw-r--r--sound/isa/opti9xx/opti92x-ad1848.c14
-rw-r--r--sound/isa/sb/jazz16.c12
-rw-r--r--sound/isa/sb/sb16.c14
-rw-r--r--sound/isa/sb/sb8.c6
-rw-r--r--sound/isa/sc6000.c12
-rw-r--r--sound/isa/sscape.c12
-rw-r--r--sound/isa/wavefront/wavefront.c18
-rw-r--r--sound/oss/ad1848.c8
-rw-r--r--sound/oss/aedsp16.c12
-rw-r--r--sound/oss/mpu401.c4
-rw-r--r--sound/oss/msnd_pinnacle.c20
-rw-r--r--sound/oss/opl3.c2
-rw-r--r--sound/oss/pas2_card.c18
-rw-r--r--sound/oss/pss.c14
-rw-r--r--sound/oss/sb_card.c10
-rw-r--r--sound/oss/trix.c18
-rw-r--r--sound/oss/uart401.c4
-rw-r--r--sound/oss/uart6850.c4
-rw-r--r--sound/oss/waveartist.c8
-rw-r--r--sound/pci/als4000.c2
-rw-r--r--sound/pci/cmipci.c6
-rw-r--r--sound/pci/ens1370.c2
-rw-r--r--sound/pci/riptide/riptide.c6
-rw-r--r--sound/pci/sonicvibes.c2
-rw-r--r--sound/pci/via82xx.c2
-rw-r--r--sound/pci/ymfpci/ymfpci.c6
137 files changed, 491 insertions, 428 deletions
diff --git a/arch/x86/mm/testmmiotrace.c b/arch/x86/mm/testmmiotrace.c
index 38868adf07ea..f6ae6830b341 100644
--- a/arch/x86/mm/testmmiotrace.c
+++ b/arch/x86/mm/testmmiotrace.c
@@ -9,7 +9,7 @@
9#include <linux/mmiotrace.h> 9#include <linux/mmiotrace.h>
10 10
11static unsigned long mmio_address; 11static unsigned long mmio_address;
12module_param(mmio_address, ulong, 0); 12module_param_hw(mmio_address, ulong, iomem, 0);
13MODULE_PARM_DESC(mmio_address, " Start address of the mapping of 16 kB " 13MODULE_PARM_DESC(mmio_address, " Start address of the mapping of 16 kB "
14 "(or 8 MB if read_far is non-zero)."); 14 "(or 8 MB if read_far is non-zero).");
15 15
diff --git a/drivers/char/applicom.c b/drivers/char/applicom.c
index e770ad977472..b67263d6e34b 100644
--- a/drivers/char/applicom.c
+++ b/drivers/char/applicom.c
@@ -94,9 +94,9 @@ static struct applicom_board {
94static unsigned int irq = 0; /* interrupt number IRQ */ 94static unsigned int irq = 0; /* interrupt number IRQ */
95static unsigned long mem = 0; /* physical segment of board */ 95static unsigned long mem = 0; /* physical segment of board */
96 96
97module_param(irq, uint, 0); 97module_param_hw(irq, uint, irq, 0);
98MODULE_PARM_DESC(irq, "IRQ of the Applicom board"); 98MODULE_PARM_DESC(irq, "IRQ of the Applicom board");
99module_param(mem, ulong, 0); 99module_param_hw(mem, ulong, iomem, 0);
100MODULE_PARM_DESC(mem, "Shared Memory Address of Applicom board"); 100MODULE_PARM_DESC(mem, "Shared Memory Address of Applicom board");
101 101
102static unsigned int numboards; /* number of installed boards */ 102static unsigned int numboards; /* number of installed boards */
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index b2b618f066e0..59ee93ea84eb 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -1375,39 +1375,39 @@ MODULE_PARM_DESC(type, "Defines the type of each interface, each"
1375 " interface separated by commas. The types are 'kcs'," 1375 " interface separated by commas. The types are 'kcs',"
1376 " 'smic', and 'bt'. For example si_type=kcs,bt will set" 1376 " 'smic', and 'bt'. For example si_type=kcs,bt will set"
1377 " the first interface to kcs and the second to bt"); 1377 " the first interface to kcs and the second to bt");
1378module_param_array(addrs, ulong, &num_addrs, 0); 1378module_param_hw_array(addrs, ulong, iomem, &num_addrs, 0);
1379MODULE_PARM_DESC(addrs, "Sets the memory address of each interface, the" 1379MODULE_PARM_DESC(addrs, "Sets the memory address of each interface, the"
1380 " addresses separated by commas. Only use if an interface" 1380 " addresses separated by commas. Only use if an interface"
1381 " is in memory. Otherwise, set it to zero or leave" 1381 " is in memory. Otherwise, set it to zero or leave"
1382 " it blank."); 1382 " it blank.");
1383module_param_array(ports, uint, &num_ports, 0); 1383module_param_hw_array(ports, uint, ioport, &num_ports, 0);
1384MODULE_PARM_DESC(ports, "Sets the port address of each interface, the" 1384MODULE_PARM_DESC(ports, "Sets the port address of each interface, the"
1385 " addresses separated by commas. Only use if an interface" 1385 " addresses separated by commas. Only use if an interface"
1386 " is a port. Otherwise, set it to zero or leave" 1386 " is a port. Otherwise, set it to zero or leave"
1387 " it blank."); 1387 " it blank.");
1388module_param_array(irqs, int, &num_irqs, 0); 1388module_param_hw_array(irqs, int, irq, &num_irqs, 0);
1389MODULE_PARM_DESC(irqs, "Sets the interrupt of each interface, the" 1389MODULE_PARM_DESC(irqs, "Sets the interrupt of each interface, the"
1390 " addresses separated by commas. Only use if an interface" 1390 " addresses separated by commas. Only use if an interface"
1391 " has an interrupt. Otherwise, set it to zero or leave" 1391 " has an interrupt. Otherwise, set it to zero or leave"
1392 " it blank."); 1392 " it blank.");
1393module_param_array(regspacings, int, &num_regspacings, 0); 1393module_param_hw_array(regspacings, int, other, &num_regspacings, 0);
1394MODULE_PARM_DESC(regspacings, "The number of bytes between the start address" 1394MODULE_PARM_DESC(regspacings, "The number of bytes between the start address"
1395 " and each successive register used by the interface. For" 1395 " and each successive register used by the interface. For"
1396 " instance, if the start address is 0xca2 and the spacing" 1396 " instance, if the start address is 0xca2 and the spacing"
1397 " is 2, then the second address is at 0xca4. Defaults" 1397 " is 2, then the second address is at 0xca4. Defaults"
1398 " to 1."); 1398 " to 1.");
1399module_param_array(regsizes, int, &num_regsizes, 0); 1399module_param_hw_array(regsizes, int, other, &num_regsizes, 0);
1400MODULE_PARM_DESC(regsizes, "The size of the specific IPMI register in bytes." 1400MODULE_PARM_DESC(regsizes, "The size of the specific IPMI register in bytes."
1401 " This should generally be 1, 2, 4, or 8 for an 8-bit," 1401 " This should generally be 1, 2, 4, or 8 for an 8-bit,"
1402 " 16-bit, 32-bit, or 64-bit register. Use this if you" 1402 " 16-bit, 32-bit, or 64-bit register. Use this if you"
1403 " the 8-bit IPMI register has to be read from a larger" 1403 " the 8-bit IPMI register has to be read from a larger"
1404 " register."); 1404 " register.");
1405module_param_array(regshifts, int, &num_regshifts, 0); 1405module_param_hw_array(regshifts, int, other, &num_regshifts, 0);
1406MODULE_PARM_DESC(regshifts, "The amount to shift the data read from the." 1406MODULE_PARM_DESC(regshifts, "The amount to shift the data read from the."
1407 " IPMI register, in bits. For instance, if the data" 1407 " IPMI register, in bits. For instance, if the data"
1408 " is read from a 32-bit word and the IPMI data is in" 1408 " is read from a 32-bit word and the IPMI data is in"
1409 " bit 8-15, then the shift would be 8"); 1409 " bit 8-15, then the shift would be 8");
1410module_param_array(slave_addrs, int, &num_slave_addrs, 0); 1410module_param_hw_array(slave_addrs, int, other, &num_slave_addrs, 0);
1411MODULE_PARM_DESC(slave_addrs, "Set the default IPMB slave address for" 1411MODULE_PARM_DESC(slave_addrs, "Set the default IPMB slave address for"
1412 " the controller. Normally this is 0x20, but can be" 1412 " the controller. Normally this is 0x20, but can be"
1413 " overridden by this parm. This is an array indexed" 1413 " overridden by this parm. This is an array indexed"
diff --git a/drivers/char/mwave/mwavedd.c b/drivers/char/mwave/mwavedd.c
index 3a3ff2eb6cba..b5e3103c1175 100644
--- a/drivers/char/mwave/mwavedd.c
+++ b/drivers/char/mwave/mwavedd.c
@@ -80,10 +80,10 @@ int mwave_3780i_io = 0;
80int mwave_uart_irq = 0; 80int mwave_uart_irq = 0;
81int mwave_uart_io = 0; 81int mwave_uart_io = 0;
82module_param(mwave_debug, int, 0); 82module_param(mwave_debug, int, 0);
83module_param(mwave_3780i_irq, int, 0); 83module_param_hw(mwave_3780i_irq, int, irq, 0);
84module_param(mwave_3780i_io, int, 0); 84module_param_hw(mwave_3780i_io, int, ioport, 0);
85module_param(mwave_uart_irq, int, 0); 85module_param_hw(mwave_uart_irq, int, irq, 0);
86module_param(mwave_uart_io, int, 0); 86module_param_hw(mwave_uart_io, int, ioport, 0);
87 87
88static int mwave_open(struct inode *inode, struct file *file); 88static int mwave_open(struct inode *inode, struct file *file);
89static int mwave_close(struct inode *inode, struct file *file); 89static int mwave_close(struct inode *inode, struct file *file);
diff --git a/drivers/clocksource/cs5535-clockevt.c b/drivers/clocksource/cs5535-clockevt.c
index 9a7e37cf56b0..a1df588343f2 100644
--- a/drivers/clocksource/cs5535-clockevt.c
+++ b/drivers/clocksource/cs5535-clockevt.c
@@ -22,7 +22,7 @@
22#define DRV_NAME "cs5535-clockevt" 22#define DRV_NAME "cs5535-clockevt"
23 23
24static int timer_irq; 24static int timer_irq;
25module_param_named(irq, timer_irq, int, 0644); 25module_param_hw_named(irq, timer_irq, int, irq, 0644);
26MODULE_PARM_DESC(irq, "Which IRQ to use for the clock source MFGPT ticks."); 26MODULE_PARM_DESC(irq, "Which IRQ to use for the clock source MFGPT ticks.");
27 27
28/* 28/*
diff --git a/drivers/cpufreq/speedstep-smi.c b/drivers/cpufreq/speedstep-smi.c
index 770a9ae1999a..37b30071c220 100644
--- a/drivers/cpufreq/speedstep-smi.c
+++ b/drivers/cpufreq/speedstep-smi.c
@@ -378,7 +378,7 @@ static void __exit speedstep_exit(void)
378 cpufreq_unregister_driver(&speedstep_driver); 378 cpufreq_unregister_driver(&speedstep_driver);
379} 379}
380 380
381module_param(smi_port, int, 0444); 381module_param_hw(smi_port, int, ioport, 0444);
382module_param(smi_cmd, int, 0444); 382module_param(smi_cmd, int, 0444);
383module_param(smi_sig, uint, 0444); 383module_param(smi_sig, uint, 0444);
384 384
diff --git a/drivers/gpio/gpio-104-dio-48e.c b/drivers/gpio/gpio-104-dio-48e.c
index 61b50c40b87b..598e209efa2d 100644
--- a/drivers/gpio/gpio-104-dio-48e.c
+++ b/drivers/gpio/gpio-104-dio-48e.c
@@ -33,11 +33,11 @@
33 33
34static unsigned int base[MAX_NUM_DIO48E]; 34static unsigned int base[MAX_NUM_DIO48E];
35static unsigned int num_dio48e; 35static unsigned int num_dio48e;
36module_param_array(base, uint, &num_dio48e, 0); 36module_param_hw_array(base, uint, ioport, &num_dio48e, 0);
37MODULE_PARM_DESC(base, "ACCES 104-DIO-48E base addresses"); 37MODULE_PARM_DESC(base, "ACCES 104-DIO-48E base addresses");
38 38
39static unsigned int irq[MAX_NUM_DIO48E]; 39static unsigned int irq[MAX_NUM_DIO48E];
40module_param_array(irq, uint, NULL, 0); 40module_param_hw_array(irq, uint, irq, NULL, 0);
41MODULE_PARM_DESC(irq, "ACCES 104-DIO-48E interrupt line numbers"); 41MODULE_PARM_DESC(irq, "ACCES 104-DIO-48E interrupt line numbers");
42 42
43/** 43/**
diff --git a/drivers/gpio/gpio-104-idi-48.c b/drivers/gpio/gpio-104-idi-48.c
index 337c048168d8..51f046e29ff7 100644
--- a/drivers/gpio/gpio-104-idi-48.c
+++ b/drivers/gpio/gpio-104-idi-48.c
@@ -33,11 +33,11 @@
33 33
34static unsigned int base[MAX_NUM_IDI_48]; 34static unsigned int base[MAX_NUM_IDI_48];
35static unsigned int num_idi_48; 35static unsigned int num_idi_48;
36module_param_array(base, uint, &num_idi_48, 0); 36module_param_hw_array(base, uint, ioport, &num_idi_48, 0);
37MODULE_PARM_DESC(base, "ACCES 104-IDI-48 base addresses"); 37MODULE_PARM_DESC(base, "ACCES 104-IDI-48 base addresses");
38 38
39static unsigned int irq[MAX_NUM_IDI_48]; 39static unsigned int irq[MAX_NUM_IDI_48];
40module_param_array(irq, uint, NULL, 0); 40module_param_hw_array(irq, uint, irq, NULL, 0);
41MODULE_PARM_DESC(irq, "ACCES 104-IDI-48 interrupt line numbers"); 41MODULE_PARM_DESC(irq, "ACCES 104-IDI-48 interrupt line numbers");
42 42
43/** 43/**
diff --git a/drivers/gpio/gpio-104-idio-16.c b/drivers/gpio/gpio-104-idio-16.c
index 5281e1cedb01..ec2ce34ff473 100644
--- a/drivers/gpio/gpio-104-idio-16.c
+++ b/drivers/gpio/gpio-104-idio-16.c
@@ -33,11 +33,11 @@
33 33
34static unsigned int base[MAX_NUM_IDIO_16]; 34static unsigned int base[MAX_NUM_IDIO_16];
35static unsigned int num_idio_16; 35static unsigned int num_idio_16;
36module_param_array(base, uint, &num_idio_16, 0); 36module_param_hw_array(base, uint, ioport, &num_idio_16, 0);
37MODULE_PARM_DESC(base, "ACCES 104-IDIO-16 base addresses"); 37MODULE_PARM_DESC(base, "ACCES 104-IDIO-16 base addresses");
38 38
39static unsigned int irq[MAX_NUM_IDIO_16]; 39static unsigned int irq[MAX_NUM_IDIO_16];
40module_param_array(irq, uint, NULL, 0); 40module_param_hw_array(irq, uint, irq, NULL, 0);
41MODULE_PARM_DESC(irq, "ACCES 104-IDIO-16 interrupt line numbers"); 41MODULE_PARM_DESC(irq, "ACCES 104-IDIO-16 interrupt line numbers");
42 42
43/** 43/**
diff --git a/drivers/gpio/gpio-gpio-mm.c b/drivers/gpio/gpio-gpio-mm.c
index fa4baa2543db..11ade5b288f8 100644
--- a/drivers/gpio/gpio-gpio-mm.c
+++ b/drivers/gpio/gpio-gpio-mm.c
@@ -31,7 +31,7 @@
31 31
32static unsigned int base[MAX_NUM_GPIOMM]; 32static unsigned int base[MAX_NUM_GPIOMM];
33static unsigned int num_gpiomm; 33static unsigned int num_gpiomm;
34module_param_array(base, uint, &num_gpiomm, 0); 34module_param_hw_array(base, uint, ioport, &num_gpiomm, 0);
35MODULE_PARM_DESC(base, "Diamond Systems GPIO-MM base addresses"); 35MODULE_PARM_DESC(base, "Diamond Systems GPIO-MM base addresses");
36 36
37/** 37/**
diff --git a/drivers/gpio/gpio-ws16c48.c b/drivers/gpio/gpio-ws16c48.c
index 87d63695dfcf..5037974ac063 100644
--- a/drivers/gpio/gpio-ws16c48.c
+++ b/drivers/gpio/gpio-ws16c48.c
@@ -30,11 +30,11 @@
30 30
31static unsigned int base[MAX_NUM_WS16C48]; 31static unsigned int base[MAX_NUM_WS16C48];
32static unsigned int num_ws16c48; 32static unsigned int num_ws16c48;
33module_param_array(base, uint, &num_ws16c48, 0); 33module_param_hw_array(base, uint, ioport, &num_ws16c48, 0);
34MODULE_PARM_DESC(base, "WinSystems WS16C48 base addresses"); 34MODULE_PARM_DESC(base, "WinSystems WS16C48 base addresses");
35 35
36static unsigned int irq[MAX_NUM_WS16C48]; 36static unsigned int irq[MAX_NUM_WS16C48];
37module_param_array(irq, uint, NULL, 0); 37module_param_hw_array(irq, uint, irq, NULL, 0);
38MODULE_PARM_DESC(irq, "WinSystems WS16C48 interrupt line numbers"); 38MODULE_PARM_DESC(irq, "WinSystems WS16C48 interrupt line numbers");
39 39
40/** 40/**
diff --git a/drivers/i2c/busses/i2c-ali15x3.c b/drivers/i2c/busses/i2c-ali15x3.c
index 45c5c4883022..6e6bf46bcb52 100644
--- a/drivers/i2c/busses/i2c-ali15x3.c
+++ b/drivers/i2c/busses/i2c-ali15x3.c
@@ -119,7 +119,7 @@
119/* If force_addr is set to anything different from 0, we forcibly enable 119/* If force_addr is set to anything different from 0, we forcibly enable
120 the device at the given address. */ 120 the device at the given address. */
121static u16 force_addr; 121static u16 force_addr;
122module_param(force_addr, ushort, 0); 122module_param_hw(force_addr, ushort, ioport, 0);
123MODULE_PARM_DESC(force_addr, 123MODULE_PARM_DESC(force_addr,
124 "Initialize the base address of the i2c controller"); 124 "Initialize the base address of the i2c controller");
125 125
diff --git a/drivers/i2c/busses/i2c-elektor.c b/drivers/i2c/busses/i2c-elektor.c
index 8af62fb3fe41..5416003e0605 100644
--- a/drivers/i2c/busses/i2c-elektor.c
+++ b/drivers/i2c/busses/i2c-elektor.c
@@ -323,9 +323,9 @@ MODULE_AUTHOR("Hans Berglund <hb@spacetec.no>");
323MODULE_DESCRIPTION("I2C-Bus adapter routines for PCF8584 ISA bus adapter"); 323MODULE_DESCRIPTION("I2C-Bus adapter routines for PCF8584 ISA bus adapter");
324MODULE_LICENSE("GPL"); 324MODULE_LICENSE("GPL");
325 325
326module_param(base, int, 0); 326module_param_hw(base, int, ioport_or_iomem, 0);
327module_param(irq, int, 0); 327module_param_hw(irq, int, irq, 0);
328module_param(clock, int, 0); 328module_param(clock, int, 0);
329module_param(own, int, 0); 329module_param(own, int, 0);
330module_param(mmapped, int, 0); 330module_param_hw(mmapped, int, other, 0);
331module_isa_driver(i2c_elektor_driver, 1); 331module_isa_driver(i2c_elektor_driver, 1);
diff --git a/drivers/i2c/busses/i2c-parport-light.c b/drivers/i2c/busses/i2c-parport-light.c
index 1bcdd10b68b9..faa8fb8f2b8f 100644
--- a/drivers/i2c/busses/i2c-parport-light.c
+++ b/drivers/i2c/busses/i2c-parport-light.c
@@ -38,11 +38,11 @@
38static struct platform_device *pdev; 38static struct platform_device *pdev;
39 39
40static u16 base; 40static u16 base;
41module_param(base, ushort, 0); 41module_param_hw(base, ushort, ioport, 0);
42MODULE_PARM_DESC(base, "Base I/O address"); 42MODULE_PARM_DESC(base, "Base I/O address");
43 43
44static int irq; 44static int irq;
45module_param(irq, int, 0); 45module_param_hw(irq, int, irq, 0);
46MODULE_PARM_DESC(irq, "IRQ (optional)"); 46MODULE_PARM_DESC(irq, "IRQ (optional)");
47 47
48/* ----- Low-level parallel port access ----------------------------------- */ 48/* ----- Low-level parallel port access ----------------------------------- */
diff --git a/drivers/i2c/busses/i2c-pca-isa.c b/drivers/i2c/busses/i2c-pca-isa.c
index ba88f17f636c..946ac646de2a 100644
--- a/drivers/i2c/busses/i2c-pca-isa.c
+++ b/drivers/i2c/busses/i2c-pca-isa.c
@@ -197,9 +197,9 @@ MODULE_AUTHOR("Ian Campbell <icampbell@arcom.com>");
197MODULE_DESCRIPTION("ISA base PCA9564/PCA9665 driver"); 197MODULE_DESCRIPTION("ISA base PCA9564/PCA9665 driver");
198MODULE_LICENSE("GPL"); 198MODULE_LICENSE("GPL");
199 199
200module_param(base, ulong, 0); 200module_param_hw(base, ulong, ioport, 0);
201MODULE_PARM_DESC(base, "I/O base address"); 201MODULE_PARM_DESC(base, "I/O base address");
202module_param(irq, int, 0); 202module_param_hw(irq, int, irq, 0);
203MODULE_PARM_DESC(irq, "IRQ"); 203MODULE_PARM_DESC(irq, "IRQ");
204module_param(clock, int, 0); 204module_param(clock, int, 0);
205MODULE_PARM_DESC(clock, "Clock rate in hertz.\n\t\t" 205MODULE_PARM_DESC(clock, "Clock rate in hertz.\n\t\t"
diff --git a/drivers/i2c/busses/i2c-piix4.c b/drivers/i2c/busses/i2c-piix4.c
index c21ca7bf2efe..0ecdb47a23ab 100644
--- a/drivers/i2c/busses/i2c-piix4.c
+++ b/drivers/i2c/busses/i2c-piix4.c
@@ -106,7 +106,7 @@ MODULE_PARM_DESC(force, "Forcibly enable the PIIX4. DANGEROUS!");
106/* If force_addr is set to anything different from 0, we forcibly enable 106/* If force_addr is set to anything different from 0, we forcibly enable
107 the PIIX4 at the given address. VERY DANGEROUS! */ 107 the PIIX4 at the given address. VERY DANGEROUS! */
108static int force_addr; 108static int force_addr;
109module_param (force_addr, int, 0); 109module_param_hw(force_addr, int, ioport, 0);
110MODULE_PARM_DESC(force_addr, 110MODULE_PARM_DESC(force_addr,
111 "Forcibly enable the PIIX4 at the given address. " 111 "Forcibly enable the PIIX4 at the given address. "
112 "EXTREMELY DANGEROUS!"); 112 "EXTREMELY DANGEROUS!");
diff --git a/drivers/i2c/busses/i2c-sis5595.c b/drivers/i2c/busses/i2c-sis5595.c
index 7d58a40faf2d..d543a9867ba4 100644
--- a/drivers/i2c/busses/i2c-sis5595.c
+++ b/drivers/i2c/busses/i2c-sis5595.c
@@ -119,7 +119,7 @@ static int blacklist[] = {
119/* If force_addr is set to anything different from 0, we forcibly enable 119/* If force_addr is set to anything different from 0, we forcibly enable
120 the device at the given address. */ 120 the device at the given address. */
121static u16 force_addr; 121static u16 force_addr;
122module_param(force_addr, ushort, 0); 122module_param_hw(force_addr, ushort, ioport, 0);
123MODULE_PARM_DESC(force_addr, "Initialize the base address of the i2c controller"); 123MODULE_PARM_DESC(force_addr, "Initialize the base address of the i2c controller");
124 124
125static struct pci_driver sis5595_driver; 125static struct pci_driver sis5595_driver;
diff --git a/drivers/i2c/busses/i2c-viapro.c b/drivers/i2c/busses/i2c-viapro.c
index 0ee2646f3b00..0dc45e12bb1d 100644
--- a/drivers/i2c/busses/i2c-viapro.c
+++ b/drivers/i2c/busses/i2c-viapro.c
@@ -94,7 +94,7 @@ MODULE_PARM_DESC(force, "Forcibly enable the SMBus. DANGEROUS!");
94/* If force_addr is set to anything different from 0, we forcibly enable 94/* If force_addr is set to anything different from 0, we forcibly enable
95 the VT596 at the given address. VERY DANGEROUS! */ 95 the VT596 at the given address. VERY DANGEROUS! */
96static u16 force_addr; 96static u16 force_addr;
97module_param(force_addr, ushort, 0); 97module_param_hw(force_addr, ushort, ioport, 0);
98MODULE_PARM_DESC(force_addr, 98MODULE_PARM_DESC(force_addr,
99 "Forcibly enable the SMBus at the given address. " 99 "Forcibly enable the SMBus at the given address. "
100 "EXTREMELY DANGEROUS!"); 100 "EXTREMELY DANGEROUS!");
diff --git a/drivers/i2c/busses/scx200_acb.c b/drivers/i2c/busses/scx200_acb.c
index 0a7e410b6195..e0923bee8d1f 100644
--- a/drivers/i2c/busses/scx200_acb.c
+++ b/drivers/i2c/busses/scx200_acb.c
@@ -42,7 +42,7 @@ MODULE_LICENSE("GPL");
42 42
43#define MAX_DEVICES 4 43#define MAX_DEVICES 4
44static int base[MAX_DEVICES] = { 0x820, 0x840 }; 44static int base[MAX_DEVICES] = { 0x820, 0x840 };
45module_param_array(base, int, NULL, 0); 45module_param_hw_array(base, int, ioport, NULL, 0);
46MODULE_PARM_DESC(base, "Base addresses for the ACCESS.bus controllers"); 46MODULE_PARM_DESC(base, "Base addresses for the ACCESS.bus controllers");
47 47
48#define POLL_TIMEOUT (HZ/5) 48#define POLL_TIMEOUT (HZ/5)
diff --git a/drivers/iio/adc/stx104.c b/drivers/iio/adc/stx104.c
index 2df84fa5e3fc..2da741d27540 100644
--- a/drivers/iio/adc/stx104.c
+++ b/drivers/iio/adc/stx104.c
@@ -49,7 +49,7 @@
49 49
50static unsigned int base[max_num_isa_dev(STX104_EXTENT)]; 50static unsigned int base[max_num_isa_dev(STX104_EXTENT)];
51static unsigned int num_stx104; 51static unsigned int num_stx104;
52module_param_array(base, uint, &num_stx104, 0); 52module_param_hw_array(base, uint, ioport, &num_stx104, 0);
53MODULE_PARM_DESC(base, "Apex Embedded Systems STX104 base addresses"); 53MODULE_PARM_DESC(base, "Apex Embedded Systems STX104 base addresses");
54 54
55/** 55/**
diff --git a/drivers/iio/dac/cio-dac.c b/drivers/iio/dac/cio-dac.c
index a0464227a3a0..a8dffd938615 100644
--- a/drivers/iio/dac/cio-dac.c
+++ b/drivers/iio/dac/cio-dac.c
@@ -39,7 +39,7 @@
39 39
40static unsigned int base[max_num_isa_dev(CIO_DAC_EXTENT)]; 40static unsigned int base[max_num_isa_dev(CIO_DAC_EXTENT)];
41static unsigned int num_cio_dac; 41static unsigned int num_cio_dac;
42module_param_array(base, uint, &num_cio_dac, 0); 42module_param_hw_array(base, uint, ioport, &num_cio_dac, 0);
43MODULE_PARM_DESC(base, "Measurement Computing CIO-DAC base addresses"); 43MODULE_PARM_DESC(base, "Measurement Computing CIO-DAC base addresses");
44 44
45/** 45/**
diff --git a/drivers/input/mouse/inport.c b/drivers/input/mouse/inport.c
index 3827a22362de..9ce71dfa0de1 100644
--- a/drivers/input/mouse/inport.c
+++ b/drivers/input/mouse/inport.c
@@ -78,7 +78,7 @@ MODULE_LICENSE("GPL");
78#define INPORT_IRQ 5 78#define INPORT_IRQ 5
79 79
80static int inport_irq = INPORT_IRQ; 80static int inport_irq = INPORT_IRQ;
81module_param_named(irq, inport_irq, uint, 0); 81module_param_hw_named(irq, inport_irq, uint, irq, 0);
82MODULE_PARM_DESC(irq, "IRQ number (5=default)"); 82MODULE_PARM_DESC(irq, "IRQ number (5=default)");
83 83
84static struct input_dev *inport_dev; 84static struct input_dev *inport_dev;
diff --git a/drivers/input/mouse/logibm.c b/drivers/input/mouse/logibm.c
index e2413113df22..6f165e053f4d 100644
--- a/drivers/input/mouse/logibm.c
+++ b/drivers/input/mouse/logibm.c
@@ -69,7 +69,7 @@ MODULE_LICENSE("GPL");
69#define LOGIBM_IRQ 5 69#define LOGIBM_IRQ 5
70 70
71static int logibm_irq = LOGIBM_IRQ; 71static int logibm_irq = LOGIBM_IRQ;
72module_param_named(irq, logibm_irq, uint, 0); 72module_param_hw_named(irq, logibm_irq, uint, irq, 0);
73MODULE_PARM_DESC(irq, "IRQ number (5=default)"); 73MODULE_PARM_DESC(irq, "IRQ number (5=default)");
74 74
75static struct input_dev *logibm_dev; 75static struct input_dev *logibm_dev;
diff --git a/drivers/input/touchscreen/mk712.c b/drivers/input/touchscreen/mk712.c
index 36e57deacd03..bd5352824f77 100644
--- a/drivers/input/touchscreen/mk712.c
+++ b/drivers/input/touchscreen/mk712.c
@@ -50,11 +50,11 @@ MODULE_DESCRIPTION("ICS MicroClock MK712 TouchScreen driver");
50MODULE_LICENSE("GPL"); 50MODULE_LICENSE("GPL");
51 51
52static unsigned int mk712_io = 0x260; /* Also 0x200, 0x208, 0x300 */ 52static unsigned int mk712_io = 0x260; /* Also 0x200, 0x208, 0x300 */
53module_param_named(io, mk712_io, uint, 0); 53module_param_hw_named(io, mk712_io, uint, ioport, 0);
54MODULE_PARM_DESC(io, "I/O base address of MK712 touchscreen controller"); 54MODULE_PARM_DESC(io, "I/O base address of MK712 touchscreen controller");
55 55
56static unsigned int mk712_irq = 10; /* Also 12, 14, 15 */ 56static unsigned int mk712_irq = 10; /* Also 12, 14, 15 */
57module_param_named(irq, mk712_irq, uint, 0); 57module_param_hw_named(irq, mk712_irq, uint, irq, 0);
58MODULE_PARM_DESC(irq, "IRQ of MK712 touchscreen controller"); 58MODULE_PARM_DESC(irq, "IRQ of MK712 touchscreen controller");
59 59
60/* eight 8-bit registers */ 60/* eight 8-bit registers */
diff --git a/drivers/isdn/hardware/avm/b1isa.c b/drivers/isdn/hardware/avm/b1isa.c
index 31ef8130a87f..54e871a47387 100644
--- a/drivers/isdn/hardware/avm/b1isa.c
+++ b/drivers/isdn/hardware/avm/b1isa.c
@@ -169,8 +169,8 @@ static struct pci_dev isa_dev[MAX_CARDS];
169static int io[MAX_CARDS]; 169static int io[MAX_CARDS];
170static int irq[MAX_CARDS]; 170static int irq[MAX_CARDS];
171 171
172module_param_array(io, int, NULL, 0); 172module_param_hw_array(io, int, ioport, NULL, 0);
173module_param_array(irq, int, NULL, 0); 173module_param_hw_array(irq, int, irq, NULL, 0);
174MODULE_PARM_DESC(io, "I/O base address(es)"); 174MODULE_PARM_DESC(io, "I/O base address(es)");
175MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)"); 175MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)");
176 176
diff --git a/drivers/isdn/hardware/avm/t1isa.c b/drivers/isdn/hardware/avm/t1isa.c
index 72ef18853951..9516203c735f 100644
--- a/drivers/isdn/hardware/avm/t1isa.c
+++ b/drivers/isdn/hardware/avm/t1isa.c
@@ -516,8 +516,8 @@ static int io[MAX_CARDS];
516static int irq[MAX_CARDS]; 516static int irq[MAX_CARDS];
517static int cardnr[MAX_CARDS]; 517static int cardnr[MAX_CARDS];
518 518
519module_param_array(io, int, NULL, 0); 519module_param_hw_array(io, int, ioport, NULL, 0);
520module_param_array(irq, int, NULL, 0); 520module_param_hw_array(irq, int, irq, NULL, 0);
521module_param_array(cardnr, int, NULL, 0); 521module_param_array(cardnr, int, NULL, 0);
522MODULE_PARM_DESC(io, "I/O base address(es)"); 522MODULE_PARM_DESC(io, "I/O base address(es)");
523MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)"); 523MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)");
diff --git a/drivers/isdn/hisax/config.c b/drivers/isdn/hisax/config.c
index 2d12c6ceeb89..c7d68675b028 100644
--- a/drivers/isdn/hisax/config.c
+++ b/drivers/isdn/hisax/config.c
@@ -350,13 +350,13 @@ MODULE_AUTHOR("Karsten Keil");
350MODULE_LICENSE("GPL"); 350MODULE_LICENSE("GPL");
351module_param_array(type, int, NULL, 0); 351module_param_array(type, int, NULL, 0);
352module_param_array(protocol, int, NULL, 0); 352module_param_array(protocol, int, NULL, 0);
353module_param_array(io, int, NULL, 0); 353module_param_hw_array(io, int, ioport, NULL, 0);
354module_param_array(irq, int, NULL, 0); 354module_param_hw_array(irq, int, irq, NULL, 0);
355module_param_array(mem, int, NULL, 0); 355module_param_hw_array(mem, int, iomem, NULL, 0);
356module_param(id, charp, 0); 356module_param(id, charp, 0);
357#ifdef IO0_IO1 357#ifdef IO0_IO1
358module_param_array(io0, int, NULL, 0); 358module_param_hw_array(io0, int, ioport, NULL, 0);
359module_param_array(io1, int, NULL, 0); 359module_param_hw_array(io1, int, ioport, NULL, 0);
360#endif 360#endif
361#endif /* MODULE */ 361#endif /* MODULE */
362 362
diff --git a/drivers/media/pci/zoran/zoran_card.c b/drivers/media/pci/zoran/zoran_card.c
index 5266755add63..4680f001653a 100644
--- a/drivers/media/pci/zoran/zoran_card.c
+++ b/drivers/media/pci/zoran/zoran_card.c
@@ -69,7 +69,7 @@ MODULE_PARM_DESC(card, "Card type");
69 */ 69 */
70 70
71static unsigned long vidmem; /* default = 0 - Video memory base address */ 71static unsigned long vidmem; /* default = 0 - Video memory base address */
72module_param(vidmem, ulong, 0444); 72module_param_hw(vidmem, ulong, iomem, 0444);
73MODULE_PARM_DESC(vidmem, "Default video memory base address"); 73MODULE_PARM_DESC(vidmem, "Default video memory base address");
74 74
75/* 75/*
diff --git a/drivers/media/rc/serial_ir.c b/drivers/media/rc/serial_ir.c
index 2f0a0d248936..77d5d4cbed0a 100644
--- a/drivers/media/rc/serial_ir.c
+++ b/drivers/media/rc/serial_ir.c
@@ -833,11 +833,11 @@ MODULE_LICENSE("GPL");
833module_param(type, int, 0444); 833module_param(type, int, 0444);
834MODULE_PARM_DESC(type, "Hardware type (0 = home-brew, 1 = IRdeo, 2 = IRdeo Remote, 3 = AnimaX, 4 = IgorPlug"); 834MODULE_PARM_DESC(type, "Hardware type (0 = home-brew, 1 = IRdeo, 2 = IRdeo Remote, 3 = AnimaX, 4 = IgorPlug");
835 835
836module_param(io, int, 0444); 836module_param_hw(io, int, ioport, 0444);
837MODULE_PARM_DESC(io, "I/O address base (0x3f8 or 0x2f8)"); 837MODULE_PARM_DESC(io, "I/O address base (0x3f8 or 0x2f8)");
838 838
839/* some architectures (e.g. intel xscale) have memory mapped registers */ 839/* some architectures (e.g. intel xscale) have memory mapped registers */
840module_param(iommap, ulong, 0444); 840module_param_hw(iommap, ulong, other, 0444);
841MODULE_PARM_DESC(iommap, "physical base for memory mapped I/O (0 = no memory mapped io)"); 841MODULE_PARM_DESC(iommap, "physical base for memory mapped I/O (0 = no memory mapped io)");
842 842
843/* 843/*
@@ -845,13 +845,13 @@ MODULE_PARM_DESC(iommap, "physical base for memory mapped I/O (0 = no memory map
845 * on 32bit word boundaries. 845 * on 32bit word boundaries.
846 * See linux-kernel/drivers/tty/serial/8250/8250.c serial_in()/out() 846 * See linux-kernel/drivers/tty/serial/8250/8250.c serial_in()/out()
847 */ 847 */
848module_param(ioshift, int, 0444); 848module_param_hw(ioshift, int, other, 0444);
849MODULE_PARM_DESC(ioshift, "shift I/O register offset (0 = no shift)"); 849MODULE_PARM_DESC(ioshift, "shift I/O register offset (0 = no shift)");
850 850
851module_param(irq, int, 0444); 851module_param_hw(irq, int, irq, 0444);
852MODULE_PARM_DESC(irq, "Interrupt (4 or 3)"); 852MODULE_PARM_DESC(irq, "Interrupt (4 or 3)");
853 853
854module_param(share_irq, bool, 0444); 854module_param_hw(share_irq, bool, other, 0444);
855MODULE_PARM_DESC(share_irq, "Share interrupts (0 = off, 1 = on)"); 855MODULE_PARM_DESC(share_irq, "Share interrupts (0 = off, 1 = on)");
856 856
857module_param(sense, int, 0444); 857module_param(sense, int, 0444);
diff --git a/drivers/misc/dummy-irq.c b/drivers/misc/dummy-irq.c
index acbbe0390be4..76a1015d5783 100644
--- a/drivers/misc/dummy-irq.c
+++ b/drivers/misc/dummy-irq.c
@@ -59,6 +59,6 @@ module_exit(dummy_irq_exit);
59 59
60MODULE_LICENSE("GPL"); 60MODULE_LICENSE("GPL");
61MODULE_AUTHOR("Jiri Kosina"); 61MODULE_AUTHOR("Jiri Kosina");
62module_param(irq, uint, 0444); 62module_param_hw(irq, uint, irq, 0444);
63MODULE_PARM_DESC(irq, "The IRQ to register for"); 63MODULE_PARM_DESC(irq, "The IRQ to register for");
64MODULE_DESCRIPTION("Dummy IRQ handler driver"); 64MODULE_DESCRIPTION("Dummy IRQ handler driver");
diff --git a/drivers/mmc/host/wbsd.c b/drivers/mmc/host/wbsd.c
index bd04e8bae010..e15a9733fcfd 100644
--- a/drivers/mmc/host/wbsd.c
+++ b/drivers/mmc/host/wbsd.c
@@ -2001,11 +2001,11 @@ static void __exit wbsd_drv_exit(void)
2001module_init(wbsd_drv_init); 2001module_init(wbsd_drv_init);
2002module_exit(wbsd_drv_exit); 2002module_exit(wbsd_drv_exit);
2003#ifdef CONFIG_PNP 2003#ifdef CONFIG_PNP
2004module_param_named(nopnp, param_nopnp, uint, 0444); 2004module_param_hw_named(nopnp, param_nopnp, uint, other, 0444);
2005#endif 2005#endif
2006module_param_named(io, param_io, uint, 0444); 2006module_param_hw_named(io, param_io, uint, ioport, 0444);
2007module_param_named(irq, param_irq, uint, 0444); 2007module_param_hw_named(irq, param_irq, uint, irq, 0444);
2008module_param_named(dma, param_dma, int, 0444); 2008module_param_hw_named(dma, param_dma, int, dma, 0444);
2009 2009
2010MODULE_LICENSE("GPL"); 2010MODULE_LICENSE("GPL");
2011MODULE_AUTHOR("Pierre Ossman <pierre@ossman.eu>"); 2011MODULE_AUTHOR("Pierre Ossman <pierre@ossman.eu>");
diff --git a/drivers/net/appletalk/cops.c b/drivers/net/appletalk/cops.c
index 1b2e9217ec78..486e1e6997fc 100644
--- a/drivers/net/appletalk/cops.c
+++ b/drivers/net/appletalk/cops.c
@@ -986,9 +986,9 @@ static int cops_close(struct net_device *dev)
986static struct net_device *cops_dev; 986static struct net_device *cops_dev;
987 987
988MODULE_LICENSE("GPL"); 988MODULE_LICENSE("GPL");
989module_param(io, int, 0); 989module_param_hw(io, int, ioport, 0);
990module_param(irq, int, 0); 990module_param_hw(irq, int, irq, 0);
991module_param(board_type, int, 0); 991module_param_hw(board_type, int, other, 0);
992 992
993static int __init cops_module_init(void) 993static int __init cops_module_init(void)
994{ 994{
diff --git a/drivers/net/appletalk/ltpc.c b/drivers/net/appletalk/ltpc.c
index 01e2ac55c137..ac755d2950a6 100644
--- a/drivers/net/appletalk/ltpc.c
+++ b/drivers/net/appletalk/ltpc.c
@@ -1231,9 +1231,9 @@ static struct net_device *dev_ltpc;
1231 1231
1232MODULE_LICENSE("GPL"); 1232MODULE_LICENSE("GPL");
1233module_param(debug, int, 0); 1233module_param(debug, int, 0);
1234module_param(io, int, 0); 1234module_param_hw(io, int, ioport, 0);
1235module_param(irq, int, 0); 1235module_param_hw(irq, int, irq, 0);
1236module_param(dma, int, 0); 1236module_param_hw(dma, int, dma, 0);
1237 1237
1238 1238
1239static int __init ltpc_module_init(void) 1239static int __init ltpc_module_init(void)
diff --git a/drivers/net/arcnet/com20020-isa.c b/drivers/net/arcnet/com20020-isa.c
index b9e9931353b2..38fa60ddaf2e 100644
--- a/drivers/net/arcnet/com20020-isa.c
+++ b/drivers/net/arcnet/com20020-isa.c
@@ -129,8 +129,8 @@ static int clockp = 0;
129static int clockm = 0; 129static int clockm = 0;
130 130
131module_param(node, int, 0); 131module_param(node, int, 0);
132module_param(io, int, 0); 132module_param_hw(io, int, ioport, 0);
133module_param(irq, int, 0); 133module_param_hw(irq, int, irq, 0);
134module_param_string(device, device, sizeof(device), 0); 134module_param_string(device, device, sizeof(device), 0);
135module_param(timeout, int, 0); 135module_param(timeout, int, 0);
136module_param(backplane, int, 0); 136module_param(backplane, int, 0);
diff --git a/drivers/net/arcnet/com90io.c b/drivers/net/arcnet/com90io.c
index b57863df5bf5..4e56aaf2b984 100644
--- a/drivers/net/arcnet/com90io.c
+++ b/drivers/net/arcnet/com90io.c
@@ -347,8 +347,8 @@ static int io; /* use the insmod io= irq= shmem= options */
347static int irq; 347static int irq;
348static char device[9]; /* use eg. device=arc1 to change name */ 348static char device[9]; /* use eg. device=arc1 to change name */
349 349
350module_param(io, int, 0); 350module_param_hw(io, int, ioport, 0);
351module_param(irq, int, 0); 351module_param_hw(irq, int, irq, 0);
352module_param_string(device, device, sizeof(device), 0); 352module_param_string(device, device, sizeof(device), 0);
353MODULE_LICENSE("GPL"); 353MODULE_LICENSE("GPL");
354 354
diff --git a/drivers/net/arcnet/com90xx.c b/drivers/net/arcnet/com90xx.c
index 81f90c4703ae..ca4a57c30bf8 100644
--- a/drivers/net/arcnet/com90xx.c
+++ b/drivers/net/arcnet/com90xx.c
@@ -88,8 +88,8 @@ static int irq;
88static int shmem; 88static int shmem;
89static char device[9]; /* use eg. device=arc1 to change name */ 89static char device[9]; /* use eg. device=arc1 to change name */
90 90
91module_param(io, int, 0); 91module_param_hw(io, int, ioport, 0);
92module_param(irq, int, 0); 92module_param_hw(irq, int, irq, 0);
93module_param(shmem, int, 0); 93module_param(shmem, int, 0);
94module_param_string(device, device, sizeof(device), 0); 94module_param_string(device, device, sizeof(device), 0);
95 95
diff --git a/drivers/net/can/cc770/cc770_isa.c b/drivers/net/can/cc770/cc770_isa.c
index e0d15711e9ac..3a30fd3b4498 100644
--- a/drivers/net/can/cc770/cc770_isa.c
+++ b/drivers/net/can/cc770/cc770_isa.c
@@ -82,16 +82,16 @@ static u8 cor[MAXDEV] = {[0 ... (MAXDEV - 1)] = 0xff};
82static u8 bcr[MAXDEV] = {[0 ... (MAXDEV - 1)] = 0xff}; 82static u8 bcr[MAXDEV] = {[0 ... (MAXDEV - 1)] = 0xff};
83static int indirect[MAXDEV] = {[0 ... (MAXDEV - 1)] = -1}; 83static int indirect[MAXDEV] = {[0 ... (MAXDEV - 1)] = -1};
84 84
85module_param_array(port, ulong, NULL, S_IRUGO); 85module_param_hw_array(port, ulong, ioport, NULL, S_IRUGO);
86MODULE_PARM_DESC(port, "I/O port number"); 86MODULE_PARM_DESC(port, "I/O port number");
87 87
88module_param_array(mem, ulong, NULL, S_IRUGO); 88module_param_hw_array(mem, ulong, iomem, NULL, S_IRUGO);
89MODULE_PARM_DESC(mem, "I/O memory address"); 89MODULE_PARM_DESC(mem, "I/O memory address");
90 90
91module_param_array(indirect, int, NULL, S_IRUGO); 91module_param_hw_array(indirect, int, ioport, NULL, S_IRUGO);
92MODULE_PARM_DESC(indirect, "Indirect access via address and data port"); 92MODULE_PARM_DESC(indirect, "Indirect access via address and data port");
93 93
94module_param_array(irq, int, NULL, S_IRUGO); 94module_param_hw_array(irq, int, irq, NULL, S_IRUGO);
95MODULE_PARM_DESC(irq, "IRQ number"); 95MODULE_PARM_DESC(irq, "IRQ number");
96 96
97module_param_array(clk, int, NULL, S_IRUGO); 97module_param_array(clk, int, NULL, S_IRUGO);
diff --git a/drivers/net/can/sja1000/sja1000_isa.c b/drivers/net/can/sja1000/sja1000_isa.c
index e97e6d35b300..a89c1e92554d 100644
--- a/drivers/net/can/sja1000/sja1000_isa.c
+++ b/drivers/net/can/sja1000/sja1000_isa.c
@@ -48,16 +48,16 @@ static unsigned char ocr[MAXDEV] = {[0 ... (MAXDEV - 1)] = 0xff};
48static int indirect[MAXDEV] = {[0 ... (MAXDEV - 1)] = -1}; 48static int indirect[MAXDEV] = {[0 ... (MAXDEV - 1)] = -1};
49static spinlock_t indirect_lock[MAXDEV]; /* lock for indirect access mode */ 49static spinlock_t indirect_lock[MAXDEV]; /* lock for indirect access mode */
50 50
51module_param_array(port, ulong, NULL, S_IRUGO); 51module_param_hw_array(port, ulong, ioport, NULL, S_IRUGO);
52MODULE_PARM_DESC(port, "I/O port number"); 52MODULE_PARM_DESC(port, "I/O port number");
53 53
54module_param_array(mem, ulong, NULL, S_IRUGO); 54module_param_hw_array(mem, ulong, iomem, NULL, S_IRUGO);
55MODULE_PARM_DESC(mem, "I/O memory address"); 55MODULE_PARM_DESC(mem, "I/O memory address");
56 56
57module_param_array(indirect, int, NULL, S_IRUGO); 57module_param_hw_array(indirect, int, ioport, NULL, S_IRUGO);
58MODULE_PARM_DESC(indirect, "Indirect access via address and data port"); 58MODULE_PARM_DESC(indirect, "Indirect access via address and data port");
59 59
60module_param_array(irq, int, NULL, S_IRUGO); 60module_param_hw_array(irq, int, irq, NULL, S_IRUGO);
61MODULE_PARM_DESC(irq, "IRQ number"); 61MODULE_PARM_DESC(irq, "IRQ number");
62 62
63module_param_array(clk, int, NULL, S_IRUGO); 63module_param_array(clk, int, NULL, S_IRUGO);
diff --git a/drivers/net/ethernet/3com/3c509.c b/drivers/net/ethernet/3com/3c509.c
index c7f9f2c77da7..db8592d412ab 100644
--- a/drivers/net/ethernet/3com/3c509.c
+++ b/drivers/net/ethernet/3com/3c509.c
@@ -1371,7 +1371,7 @@ el3_resume(struct device *pdev)
1371#endif /* CONFIG_PM */ 1371#endif /* CONFIG_PM */
1372 1372
1373module_param(debug,int, 0); 1373module_param(debug,int, 0);
1374module_param_array(irq, int, NULL, 0); 1374module_param_hw_array(irq, int, irq, NULL, 0);
1375module_param(max_interrupt_work, int, 0); 1375module_param(max_interrupt_work, int, 0);
1376MODULE_PARM_DESC(debug, "debug level (0-6)"); 1376MODULE_PARM_DESC(debug, "debug level (0-6)");
1377MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)"); 1377MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)");
diff --git a/drivers/net/ethernet/3com/3c59x.c b/drivers/net/ethernet/3com/3c59x.c
index 40196f41768a..e41245a54f8b 100644
--- a/drivers/net/ethernet/3com/3c59x.c
+++ b/drivers/net/ethernet/3com/3c59x.c
@@ -813,8 +813,8 @@ module_param(global_enable_wol, int, 0);
813module_param_array(enable_wol, int, NULL, 0); 813module_param_array(enable_wol, int, NULL, 0);
814module_param(rx_copybreak, int, 0); 814module_param(rx_copybreak, int, 0);
815module_param(max_interrupt_work, int, 0); 815module_param(max_interrupt_work, int, 0);
816module_param(compaq_ioaddr, int, 0); 816module_param_hw(compaq_ioaddr, int, ioport, 0);
817module_param(compaq_irq, int, 0); 817module_param_hw(compaq_irq, int, irq, 0);
818module_param(compaq_device_id, int, 0); 818module_param(compaq_device_id, int, 0);
819module_param(watchdog, int, 0); 819module_param(watchdog, int, 0);
820module_param(global_use_mmio, int, 0); 820module_param(global_use_mmio, int, 0);
diff --git a/drivers/net/ethernet/8390/ne.c b/drivers/net/ethernet/8390/ne.c
index c063b410a163..66f47987e2a2 100644
--- a/drivers/net/ethernet/8390/ne.c
+++ b/drivers/net/ethernet/8390/ne.c
@@ -74,8 +74,8 @@ static int bad[MAX_NE_CARDS];
74static u32 ne_msg_enable; 74static u32 ne_msg_enable;
75 75
76#ifdef MODULE 76#ifdef MODULE
77module_param_array(io, int, NULL, 0); 77module_param_hw_array(io, int, ioport, NULL, 0);
78module_param_array(irq, int, NULL, 0); 78module_param_hw_array(irq, int, irq, NULL, 0);
79module_param_array(bad, int, NULL, 0); 79module_param_array(bad, int, NULL, 0);
80module_param_named(msg_enable, ne_msg_enable, uint, (S_IRUSR|S_IRGRP|S_IROTH)); 80module_param_named(msg_enable, ne_msg_enable, uint, (S_IRUSR|S_IRGRP|S_IROTH));
81MODULE_PARM_DESC(io, "I/O base address(es),required"); 81MODULE_PARM_DESC(io, "I/O base address(es),required");
diff --git a/drivers/net/ethernet/8390/smc-ultra.c b/drivers/net/ethernet/8390/smc-ultra.c
index 364b6514f65f..4e02f6a23575 100644
--- a/drivers/net/ethernet/8390/smc-ultra.c
+++ b/drivers/net/ethernet/8390/smc-ultra.c
@@ -561,8 +561,8 @@ static struct net_device *dev_ultra[MAX_ULTRA_CARDS];
561static int io[MAX_ULTRA_CARDS]; 561static int io[MAX_ULTRA_CARDS];
562static int irq[MAX_ULTRA_CARDS]; 562static int irq[MAX_ULTRA_CARDS];
563 563
564module_param_array(io, int, NULL, 0); 564module_param_hw_array(io, int, ioport, NULL, 0);
565module_param_array(irq, int, NULL, 0); 565module_param_hw_array(irq, int, irq, NULL, 0);
566module_param_named(msg_enable, ultra_msg_enable, uint, (S_IRUSR|S_IRGRP|S_IROTH)); 566module_param_named(msg_enable, ultra_msg_enable, uint, (S_IRUSR|S_IRGRP|S_IROTH));
567MODULE_PARM_DESC(io, "I/O base address(es)"); 567MODULE_PARM_DESC(io, "I/O base address(es)");
568MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)"); 568MODULE_PARM_DESC(irq, "IRQ number(s) (assigned)");
diff --git a/drivers/net/ethernet/8390/wd.c b/drivers/net/ethernet/8390/wd.c
index ad019cbc698f..6efa2722f850 100644
--- a/drivers/net/ethernet/8390/wd.c
+++ b/drivers/net/ethernet/8390/wd.c
@@ -503,10 +503,10 @@ static int irq[MAX_WD_CARDS];
503static int mem[MAX_WD_CARDS]; 503static int mem[MAX_WD_CARDS];
504static int mem_end[MAX_WD_CARDS]; /* for non std. mem size */ 504static int mem_end[MAX_WD_CARDS]; /* for non std. mem size */
505 505
506module_param_array(io, int, NULL, 0); 506module_param_hw_array(io, int, ioport, NULL, 0);
507module_param_array(irq, int, NULL, 0); 507module_param_hw_array(irq, int, irq, NULL, 0);
508module_param_array(mem, int, NULL, 0); 508module_param_hw_array(mem, int, iomem, NULL, 0);
509module_param_array(mem_end, int, NULL, 0); 509module_param_hw_array(mem_end, int, iomem, NULL, 0);
510module_param_named(msg_enable, wd_msg_enable, uint, (S_IRUSR|S_IRGRP|S_IROTH)); 510module_param_named(msg_enable, wd_msg_enable, uint, (S_IRUSR|S_IRGRP|S_IROTH));
511MODULE_PARM_DESC(io, "I/O base address(es)"); 511MODULE_PARM_DESC(io, "I/O base address(es)");
512MODULE_PARM_DESC(irq, "IRQ number(s) (ignored for PureData boards)"); 512MODULE_PARM_DESC(irq, "IRQ number(s) (ignored for PureData boards)");
diff --git a/drivers/net/ethernet/amd/lance.c b/drivers/net/ethernet/amd/lance.c
index 61a641f23149..12a6a93d221b 100644
--- a/drivers/net/ethernet/amd/lance.c
+++ b/drivers/net/ethernet/amd/lance.c
@@ -318,9 +318,9 @@ static int io[MAX_CARDS];
318static int dma[MAX_CARDS]; 318static int dma[MAX_CARDS];
319static int irq[MAX_CARDS]; 319static int irq[MAX_CARDS];
320 320
321module_param_array(io, int, NULL, 0); 321module_param_hw_array(io, int, ioport, NULL, 0);
322module_param_array(dma, int, NULL, 0); 322module_param_hw_array(dma, int, dma, NULL, 0);
323module_param_array(irq, int, NULL, 0); 323module_param_hw_array(irq, int, irq, NULL, 0);
324module_param(lance_debug, int, 0); 324module_param(lance_debug, int, 0);
325MODULE_PARM_DESC(io, "LANCE/PCnet I/O base address(es),required"); 325MODULE_PARM_DESC(io, "LANCE/PCnet I/O base address(es),required");
326MODULE_PARM_DESC(dma, "LANCE/PCnet ISA DMA channel (ignored for some devices)"); 326MODULE_PARM_DESC(dma, "LANCE/PCnet ISA DMA channel (ignored for some devices)");
diff --git a/drivers/net/ethernet/amd/ni65.c b/drivers/net/ethernet/amd/ni65.c
index 5985bf220a8d..e248d1ab3e47 100644
--- a/drivers/net/ethernet/amd/ni65.c
+++ b/drivers/net/ethernet/amd/ni65.c
@@ -1227,9 +1227,9 @@ static void set_multicast_list(struct net_device *dev)
1227#ifdef MODULE 1227#ifdef MODULE
1228static struct net_device *dev_ni65; 1228static struct net_device *dev_ni65;
1229 1229
1230module_param(irq, int, 0); 1230module_param_hw(irq, int, irq, 0);
1231module_param(io, int, 0); 1231module_param_hw(io, int, ioport, 0);
1232module_param(dma, int, 0); 1232module_param_hw(dma, int, dma, 0);
1233MODULE_PARM_DESC(irq, "ni6510 IRQ number (ignored for some cards)"); 1233MODULE_PARM_DESC(irq, "ni6510 IRQ number (ignored for some cards)");
1234MODULE_PARM_DESC(io, "ni6510 I/O base address"); 1234MODULE_PARM_DESC(io, "ni6510 I/O base address");
1235MODULE_PARM_DESC(dma, "ni6510 ISA DMA channel (ignored for some cards)"); 1235MODULE_PARM_DESC(dma, "ni6510 ISA DMA channel (ignored for some cards)");
diff --git a/drivers/net/ethernet/cirrus/cs89x0.c b/drivers/net/ethernet/cirrus/cs89x0.c
index 47384f7323ac..da5b58b853e2 100644
--- a/drivers/net/ethernet/cirrus/cs89x0.c
+++ b/drivers/net/ethernet/cirrus/cs89x0.c
@@ -1704,12 +1704,12 @@ static int use_dma; /* These generate unused var warnings if ALLOW_DMA = 0 */
1704static int dma; 1704static int dma;
1705static int dmasize = 16; /* or 64 */ 1705static int dmasize = 16; /* or 64 */
1706 1706
1707module_param(io, int, 0); 1707module_param_hw(io, int, ioport, 0);
1708module_param(irq, int, 0); 1708module_param_hw(irq, int, irq, 0);
1709module_param(debug, int, 0); 1709module_param(debug, int, 0);
1710module_param_string(media, media, sizeof(media), 0); 1710module_param_string(media, media, sizeof(media), 0);
1711module_param(duplex, int, 0); 1711module_param(duplex, int, 0);
1712module_param(dma , int, 0); 1712module_param_hw(dma , int, dma, 0);
1713module_param(dmasize , int, 0); 1713module_param(dmasize , int, 0);
1714module_param(use_dma , int, 0); 1714module_param(use_dma , int, 0);
1715MODULE_PARM_DESC(io, "cs89x0 I/O base address"); 1715MODULE_PARM_DESC(io, "cs89x0 I/O base address");
diff --git a/drivers/net/ethernet/dec/tulip/de4x5.c b/drivers/net/ethernet/dec/tulip/de4x5.c
index df4a871df633..fd6bcf024729 100644
--- a/drivers/net/ethernet/dec/tulip/de4x5.c
+++ b/drivers/net/ethernet/dec/tulip/de4x5.c
@@ -1015,7 +1015,7 @@ static int compact_infoblock(struct net_device *dev, u_char count, u_char *p
1015 1015
1016static int io=0x0;/* EDIT THIS LINE FOR YOUR CONFIGURATION IF NEEDED */ 1016static int io=0x0;/* EDIT THIS LINE FOR YOUR CONFIGURATION IF NEEDED */
1017 1017
1018module_param(io, int, 0); 1018module_param_hw(io, int, ioport, 0);
1019module_param(de4x5_debug, int, 0); 1019module_param(de4x5_debug, int, 0);
1020module_param(dec_only, int, 0); 1020module_param(dec_only, int, 0);
1021module_param(args, charp, 0); 1021module_param(args, charp, 0);
diff --git a/drivers/net/ethernet/hp/hp100.c b/drivers/net/ethernet/hp/hp100.c
index 1a31bee6e728..5673b071e39d 100644
--- a/drivers/net/ethernet/hp/hp100.c
+++ b/drivers/net/ethernet/hp/hp100.c
@@ -2966,7 +2966,7 @@ MODULE_DESCRIPTION("HP CASCADE Architecture Driver for 100VG-AnyLan Network Adap
2966#define HP100_DEVICES 5 2966#define HP100_DEVICES 5
2967/* Parameters set by insmod */ 2967/* Parameters set by insmod */
2968static int hp100_port[HP100_DEVICES] = { 0, [1 ... (HP100_DEVICES-1)] = -1 }; 2968static int hp100_port[HP100_DEVICES] = { 0, [1 ... (HP100_DEVICES-1)] = -1 };
2969module_param_array(hp100_port, int, NULL, 0); 2969module_param_hw_array(hp100_port, int, ioport, NULL, 0);
2970 2970
2971/* List of devices */ 2971/* List of devices */
2972static struct net_device *hp100_devlist[HP100_DEVICES]; 2972static struct net_device *hp100_devlist[HP100_DEVICES];
diff --git a/drivers/net/ethernet/realtek/atp.c b/drivers/net/ethernet/realtek/atp.c
index 9bcd4aefc9c5..bed34684994f 100644
--- a/drivers/net/ethernet/realtek/atp.c
+++ b/drivers/net/ethernet/realtek/atp.c
@@ -151,8 +151,8 @@ MODULE_LICENSE("GPL");
151 151
152module_param(max_interrupt_work, int, 0); 152module_param(max_interrupt_work, int, 0);
153module_param(debug, int, 0); 153module_param(debug, int, 0);
154module_param_array(io, int, NULL, 0); 154module_param_hw_array(io, int, ioport, NULL, 0);
155module_param_array(irq, int, NULL, 0); 155module_param_hw_array(irq, int, irq, NULL, 0);
156module_param_array(xcvr, int, NULL, 0); 156module_param_array(xcvr, int, NULL, 0);
157MODULE_PARM_DESC(max_interrupt_work, "ATP maximum events handled per interrupt"); 157MODULE_PARM_DESC(max_interrupt_work, "ATP maximum events handled per interrupt");
158MODULE_PARM_DESC(debug, "ATP debug level (0-7)"); 158MODULE_PARM_DESC(debug, "ATP debug level (0-7)");
diff --git a/drivers/net/ethernet/smsc/smc9194.c b/drivers/net/ethernet/smsc/smc9194.c
index c8d84679ede7..d3bb2ba51f40 100644
--- a/drivers/net/ethernet/smsc/smc9194.c
+++ b/drivers/net/ethernet/smsc/smc9194.c
@@ -1501,8 +1501,8 @@ static void smc_set_multicast_list(struct net_device *dev)
1501static struct net_device *devSMC9194; 1501static struct net_device *devSMC9194;
1502MODULE_LICENSE("GPL"); 1502MODULE_LICENSE("GPL");
1503 1503
1504module_param(io, int, 0); 1504module_param_hw(io, int, ioport, 0);
1505module_param(irq, int, 0); 1505module_param_hw(irq, int, irq, 0);
1506module_param(ifport, int, 0); 1506module_param(ifport, int, 0);
1507MODULE_PARM_DESC(io, "SMC 99194 I/O base address"); 1507MODULE_PARM_DESC(io, "SMC 99194 I/O base address");
1508MODULE_PARM_DESC(irq, "SMC 99194 IRQ number"); 1508MODULE_PARM_DESC(irq, "SMC 99194 IRQ number");
diff --git a/drivers/net/hamradio/baycom_epp.c b/drivers/net/hamradio/baycom_epp.c
index 594fa1407e29..1503f10122f7 100644
--- a/drivers/net/hamradio/baycom_epp.c
+++ b/drivers/net/hamradio/baycom_epp.c
@@ -1176,7 +1176,7 @@ static int iobase[NR_PORTS] = { 0x378, };
1176 1176
1177module_param_array(mode, charp, NULL, 0); 1177module_param_array(mode, charp, NULL, 0);
1178MODULE_PARM_DESC(mode, "baycom operating mode"); 1178MODULE_PARM_DESC(mode, "baycom operating mode");
1179module_param_array(iobase, int, NULL, 0); 1179module_param_hw_array(iobase, int, ioport, NULL, 0);
1180MODULE_PARM_DESC(iobase, "baycom io base address"); 1180MODULE_PARM_DESC(iobase, "baycom io base address");
1181 1181
1182MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu"); 1182MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
diff --git a/drivers/net/hamradio/baycom_par.c b/drivers/net/hamradio/baycom_par.c
index 809dc25909d1..92b13b39f426 100644
--- a/drivers/net/hamradio/baycom_par.c
+++ b/drivers/net/hamradio/baycom_par.c
@@ -481,7 +481,7 @@ static int iobase[NR_PORTS] = { 0x378, };
481 481
482module_param_array(mode, charp, NULL, 0); 482module_param_array(mode, charp, NULL, 0);
483MODULE_PARM_DESC(mode, "baycom operating mode; eg. par96 or picpar"); 483MODULE_PARM_DESC(mode, "baycom operating mode; eg. par96 or picpar");
484module_param_array(iobase, int, NULL, 0); 484module_param_hw_array(iobase, int, ioport, NULL, 0);
485MODULE_PARM_DESC(iobase, "baycom io base address"); 485MODULE_PARM_DESC(iobase, "baycom io base address");
486 486
487MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu"); 487MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
diff --git a/drivers/net/hamradio/baycom_ser_fdx.c b/drivers/net/hamradio/baycom_ser_fdx.c
index ebc06822fd4d..d9a646acca20 100644
--- a/drivers/net/hamradio/baycom_ser_fdx.c
+++ b/drivers/net/hamradio/baycom_ser_fdx.c
@@ -614,9 +614,9 @@ static int baud[NR_PORTS] = { [0 ... NR_PORTS-1] = 1200 };
614 614
615module_param_array(mode, charp, NULL, 0); 615module_param_array(mode, charp, NULL, 0);
616MODULE_PARM_DESC(mode, "baycom operating mode; * for software DCD"); 616MODULE_PARM_DESC(mode, "baycom operating mode; * for software DCD");
617module_param_array(iobase, int, NULL, 0); 617module_param_hw_array(iobase, int, ioport, NULL, 0);
618MODULE_PARM_DESC(iobase, "baycom io base address"); 618MODULE_PARM_DESC(iobase, "baycom io base address");
619module_param_array(irq, int, NULL, 0); 619module_param_hw_array(irq, int, irq, NULL, 0);
620MODULE_PARM_DESC(irq, "baycom irq number"); 620MODULE_PARM_DESC(irq, "baycom irq number");
621module_param_array(baud, int, NULL, 0); 621module_param_array(baud, int, NULL, 0);
622MODULE_PARM_DESC(baud, "baycom baud rate (300 to 4800)"); 622MODULE_PARM_DESC(baud, "baycom baud rate (300 to 4800)");
diff --git a/drivers/net/hamradio/baycom_ser_hdx.c b/drivers/net/hamradio/baycom_ser_hdx.c
index 60fcf512c208..f1c8a9ff3891 100644
--- a/drivers/net/hamradio/baycom_ser_hdx.c
+++ b/drivers/net/hamradio/baycom_ser_hdx.c
@@ -642,9 +642,9 @@ static int irq[NR_PORTS] = { 4, };
642 642
643module_param_array(mode, charp, NULL, 0); 643module_param_array(mode, charp, NULL, 0);
644MODULE_PARM_DESC(mode, "baycom operating mode; * for software DCD"); 644MODULE_PARM_DESC(mode, "baycom operating mode; * for software DCD");
645module_param_array(iobase, int, NULL, 0); 645module_param_hw_array(iobase, int, ioport, NULL, 0);
646MODULE_PARM_DESC(iobase, "baycom io base address"); 646MODULE_PARM_DESC(iobase, "baycom io base address");
647module_param_array(irq, int, NULL, 0); 647module_param_hw_array(irq, int, irq, NULL, 0);
648MODULE_PARM_DESC(irq, "baycom irq number"); 648MODULE_PARM_DESC(irq, "baycom irq number");
649 649
650MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu"); 650MODULE_AUTHOR("Thomas M. Sailer, sailer@ife.ee.ethz.ch, hb9jnx@hb9w.che.eu");
diff --git a/drivers/net/hamradio/dmascc.c b/drivers/net/hamradio/dmascc.c
index 2479072981a1..dec6b76bc0fb 100644
--- a/drivers/net/hamradio/dmascc.c
+++ b/drivers/net/hamradio/dmascc.c
@@ -274,7 +274,7 @@ static unsigned long rand;
274 274
275MODULE_AUTHOR("Klaus Kudielka"); 275MODULE_AUTHOR("Klaus Kudielka");
276MODULE_DESCRIPTION("Driver for high-speed SCC boards"); 276MODULE_DESCRIPTION("Driver for high-speed SCC boards");
277module_param_array(io, int, NULL, 0); 277module_param_hw_array(io, int, ioport, NULL, 0);
278MODULE_LICENSE("GPL"); 278MODULE_LICENSE("GPL");
279 279
280static void __exit dmascc_exit(void) 280static void __exit dmascc_exit(void)
diff --git a/drivers/net/irda/ali-ircc.c b/drivers/net/irda/ali-ircc.c
index c285eafd3f1c..35f198d83701 100644
--- a/drivers/net/irda/ali-ircc.c
+++ b/drivers/net/irda/ali-ircc.c
@@ -2207,11 +2207,11 @@ MODULE_LICENSE("GPL");
2207MODULE_ALIAS("platform:" ALI_IRCC_DRIVER_NAME); 2207MODULE_ALIAS("platform:" ALI_IRCC_DRIVER_NAME);
2208 2208
2209 2209
2210module_param_array(io, int, NULL, 0); 2210module_param_hw_array(io, int, ioport, NULL, 0);
2211MODULE_PARM_DESC(io, "Base I/O addresses"); 2211MODULE_PARM_DESC(io, "Base I/O addresses");
2212module_param_array(irq, int, NULL, 0); 2212module_param_hw_array(irq, int, irq, NULL, 0);
2213MODULE_PARM_DESC(irq, "IRQ lines"); 2213MODULE_PARM_DESC(irq, "IRQ lines");
2214module_param_array(dma, int, NULL, 0); 2214module_param_hw_array(dma, int, dma, NULL, 0);
2215MODULE_PARM_DESC(dma, "DMA channels"); 2215MODULE_PARM_DESC(dma, "DMA channels");
2216 2216
2217module_init(ali_ircc_init); 2217module_init(ali_ircc_init);
diff --git a/drivers/net/irda/nsc-ircc.c b/drivers/net/irda/nsc-ircc.c
index aaecc3baaf30..7beae147be11 100644
--- a/drivers/net/irda/nsc-ircc.c
+++ b/drivers/net/irda/nsc-ircc.c
@@ -2396,11 +2396,11 @@ MODULE_LICENSE("GPL");
2396 2396
2397module_param(qos_mtt_bits, int, 0); 2397module_param(qos_mtt_bits, int, 0);
2398MODULE_PARM_DESC(qos_mtt_bits, "Minimum Turn Time"); 2398MODULE_PARM_DESC(qos_mtt_bits, "Minimum Turn Time");
2399module_param_array(io, int, NULL, 0); 2399module_param_hw_array(io, int, ioport, NULL, 0);
2400MODULE_PARM_DESC(io, "Base I/O addresses"); 2400MODULE_PARM_DESC(io, "Base I/O addresses");
2401module_param_array(irq, int, NULL, 0); 2401module_param_hw_array(irq, int, irq, NULL, 0);
2402MODULE_PARM_DESC(irq, "IRQ lines"); 2402MODULE_PARM_DESC(irq, "IRQ lines");
2403module_param_array(dma, int, NULL, 0); 2403module_param_hw_array(dma, int, dma, NULL, 0);
2404MODULE_PARM_DESC(dma, "DMA channels"); 2404MODULE_PARM_DESC(dma, "DMA channels");
2405module_param(dongle_id, int, 0); 2405module_param(dongle_id, int, 0);
2406MODULE_PARM_DESC(dongle_id, "Type-id of used dongle"); 2406MODULE_PARM_DESC(dongle_id, "Type-id of used dongle");
diff --git a/drivers/net/irda/smsc-ircc2.c b/drivers/net/irda/smsc-ircc2.c
index dcf92ba80872..23ed89ae5ddc 100644
--- a/drivers/net/irda/smsc-ircc2.c
+++ b/drivers/net/irda/smsc-ircc2.c
@@ -82,24 +82,24 @@ MODULE_PARM_DESC(nopnp, "Do not use PNP to detect controller settings, defaults
82 82
83#define DMA_INVAL 255 83#define DMA_INVAL 255
84static int ircc_dma = DMA_INVAL; 84static int ircc_dma = DMA_INVAL;
85module_param(ircc_dma, int, 0); 85module_param_hw(ircc_dma, int, dma, 0);
86MODULE_PARM_DESC(ircc_dma, "DMA channel"); 86MODULE_PARM_DESC(ircc_dma, "DMA channel");
87 87
88#define IRQ_INVAL 255 88#define IRQ_INVAL 255
89static int ircc_irq = IRQ_INVAL; 89static int ircc_irq = IRQ_INVAL;
90module_param(ircc_irq, int, 0); 90module_param_hw(ircc_irq, int, irq, 0);
91MODULE_PARM_DESC(ircc_irq, "IRQ line"); 91MODULE_PARM_DESC(ircc_irq, "IRQ line");
92 92
93static int ircc_fir; 93static int ircc_fir;
94module_param(ircc_fir, int, 0); 94module_param_hw(ircc_fir, int, ioport, 0);
95MODULE_PARM_DESC(ircc_fir, "FIR Base Address"); 95MODULE_PARM_DESC(ircc_fir, "FIR Base Address");
96 96
97static int ircc_sir; 97static int ircc_sir;
98module_param(ircc_sir, int, 0); 98module_param_hw(ircc_sir, int, ioport, 0);
99MODULE_PARM_DESC(ircc_sir, "SIR Base Address"); 99MODULE_PARM_DESC(ircc_sir, "SIR Base Address");
100 100
101static int ircc_cfg; 101static int ircc_cfg;
102module_param(ircc_cfg, int, 0); 102module_param_hw(ircc_cfg, int, ioport, 0);
103MODULE_PARM_DESC(ircc_cfg, "Configuration register base address"); 103MODULE_PARM_DESC(ircc_cfg, "Configuration register base address");
104 104
105static int ircc_transceiver; 105static int ircc_transceiver;
diff --git a/drivers/net/irda/w83977af_ir.c b/drivers/net/irda/w83977af_ir.c
index 8d5b903d1d9d..282b6c9ae05b 100644
--- a/drivers/net/irda/w83977af_ir.c
+++ b/drivers/net/irda/w83977af_ir.c
@@ -1263,9 +1263,9 @@ MODULE_LICENSE("GPL");
1263 1263
1264module_param(qos_mtt_bits, int, 0); 1264module_param(qos_mtt_bits, int, 0);
1265MODULE_PARM_DESC(qos_mtt_bits, "Mimimum Turn Time"); 1265MODULE_PARM_DESC(qos_mtt_bits, "Mimimum Turn Time");
1266module_param_array(io, int, NULL, 0); 1266module_param_hw_array(io, int, ioport, NULL, 0);
1267MODULE_PARM_DESC(io, "Base I/O addresses"); 1267MODULE_PARM_DESC(io, "Base I/O addresses");
1268module_param_array(irq, int, NULL, 0); 1268module_param_hw_array(irq, int, irq, NULL, 0);
1269MODULE_PARM_DESC(irq, "IRQ lines"); 1269MODULE_PARM_DESC(irq, "IRQ lines");
1270 1270
1271/* 1271/*
diff --git a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c
index 4ca71bca39ac..6ea16260ec76 100644
--- a/drivers/net/wan/cosa.c
+++ b/drivers/net/wan/cosa.c
@@ -232,11 +232,11 @@ static int irq[MAX_CARDS+1] = { -1, -1, -1, -1, -1, -1, 0, };
232static struct class *cosa_class; 232static struct class *cosa_class;
233 233
234#ifdef MODULE 234#ifdef MODULE
235module_param_array(io, int, NULL, 0); 235module_param_hw_array(io, int, ioport, NULL, 0);
236MODULE_PARM_DESC(io, "The I/O bases of the COSA or SRP cards"); 236MODULE_PARM_DESC(io, "The I/O bases of the COSA or SRP cards");
237module_param_array(irq, int, NULL, 0); 237module_param_hw_array(irq, int, irq, NULL, 0);
238MODULE_PARM_DESC(irq, "The IRQ lines of the COSA or SRP cards"); 238MODULE_PARM_DESC(irq, "The IRQ lines of the COSA or SRP cards");
239module_param_array(dma, int, NULL, 0); 239module_param_hw_array(dma, int, dma, NULL, 0);
240MODULE_PARM_DESC(dma, "The DMA channels of the COSA or SRP cards"); 240MODULE_PARM_DESC(dma, "The DMA channels of the COSA or SRP cards");
241 241
242MODULE_AUTHOR("Jan \"Yenya\" Kasprzak, <kas@fi.muni.cz>"); 242MODULE_AUTHOR("Jan \"Yenya\" Kasprzak, <kas@fi.muni.cz>");
diff --git a/drivers/net/wan/hostess_sv11.c b/drivers/net/wan/hostess_sv11.c
index dd6bb3364ad2..4de0737fbf8a 100644
--- a/drivers/net/wan/hostess_sv11.c
+++ b/drivers/net/wan/hostess_sv11.c
@@ -324,11 +324,11 @@ static void sv11_shutdown(struct z8530_dev *dev)
324static int io = 0x200; 324static int io = 0x200;
325static int irq = 9; 325static int irq = 9;
326 326
327module_param(io, int, 0); 327module_param_hw(io, int, ioport, 0);
328MODULE_PARM_DESC(io, "The I/O base of the Comtrol Hostess SV11 card"); 328MODULE_PARM_DESC(io, "The I/O base of the Comtrol Hostess SV11 card");
329module_param(dma, int, 0); 329module_param_hw(dma, int, dma, 0);
330MODULE_PARM_DESC(dma, "Set this to 1 to use DMA1/DMA3 for TX/RX"); 330MODULE_PARM_DESC(dma, "Set this to 1 to use DMA1/DMA3 for TX/RX");
331module_param(irq, int, 0); 331module_param_hw(irq, int, irq, 0);
332MODULE_PARM_DESC(irq, "The interrupt line setting for the Comtrol Hostess SV11 card"); 332MODULE_PARM_DESC(irq, "The interrupt line setting for the Comtrol Hostess SV11 card");
333 333
334MODULE_AUTHOR("Alan Cox"); 334MODULE_AUTHOR("Alan Cox");
diff --git a/drivers/net/wan/sbni.c b/drivers/net/wan/sbni.c
index 3ca3419c54a0..bde8c0339831 100644
--- a/drivers/net/wan/sbni.c
+++ b/drivers/net/wan/sbni.c
@@ -1463,8 +1463,8 @@ set_multicast_list( struct net_device *dev )
1463 1463
1464 1464
1465#ifdef MODULE 1465#ifdef MODULE
1466module_param_array(io, int, NULL, 0); 1466module_param_hw_array(io, int, ioport, NULL, 0);
1467module_param_array(irq, int, NULL, 0); 1467module_param_hw_array(irq, int, irq, NULL, 0);
1468module_param_array(baud, int, NULL, 0); 1468module_param_array(baud, int, NULL, 0);
1469module_param_array(rxl, int, NULL, 0); 1469module_param_array(rxl, int, NULL, 0);
1470module_param_array(mac, int, NULL, 0); 1470module_param_array(mac, int, NULL, 0);
diff --git a/drivers/net/wan/sealevel.c b/drivers/net/wan/sealevel.c
index fbb5aa2c4d8f..c56f2c252113 100644
--- a/drivers/net/wan/sealevel.c
+++ b/drivers/net/wan/sealevel.c
@@ -363,13 +363,13 @@ static int rxdma=3;
363static int irq=5; 363static int irq=5;
364static bool slow=false; 364static bool slow=false;
365 365
366module_param(io, int, 0); 366module_param_hw(io, int, ioport, 0);
367MODULE_PARM_DESC(io, "The I/O base of the Sealevel card"); 367MODULE_PARM_DESC(io, "The I/O base of the Sealevel card");
368module_param(txdma, int, 0); 368module_param_hw(txdma, int, dma, 0);
369MODULE_PARM_DESC(txdma, "Transmit DMA channel"); 369MODULE_PARM_DESC(txdma, "Transmit DMA channel");
370module_param(rxdma, int, 0); 370module_param_hw(rxdma, int, dma, 0);
371MODULE_PARM_DESC(rxdma, "Receive DMA channel"); 371MODULE_PARM_DESC(rxdma, "Receive DMA channel");
372module_param(irq, int, 0); 372module_param_hw(irq, int, irq, 0);
373MODULE_PARM_DESC(irq, "The interrupt line setting for the SeaLevel card"); 373MODULE_PARM_DESC(irq, "The interrupt line setting for the SeaLevel card");
374module_param(slow, bool, 0); 374module_param(slow, bool, 0);
375MODULE_PARM_DESC(slow, "Set this for an older Sealevel card such as the 4012"); 375MODULE_PARM_DESC(slow, "Set this for an older Sealevel card such as the 4012");
diff --git a/drivers/net/wireless/cisco/airo.c b/drivers/net/wireless/cisco/airo.c
index 4b040451a9b8..1b7e125a28e2 100644
--- a/drivers/net/wireless/cisco/airo.c
+++ b/drivers/net/wireless/cisco/airo.c
@@ -246,8 +246,8 @@ MODULE_DESCRIPTION("Support for Cisco/Aironet 802.11 wireless ethernet cards. "
246 "Direct support for ISA/PCI/MPI cards and support for PCMCIA when used with airo_cs."); 246 "Direct support for ISA/PCI/MPI cards and support for PCMCIA when used with airo_cs.");
247MODULE_LICENSE("Dual BSD/GPL"); 247MODULE_LICENSE("Dual BSD/GPL");
248MODULE_SUPPORTED_DEVICE("Aironet 4500, 4800 and Cisco 340/350"); 248MODULE_SUPPORTED_DEVICE("Aironet 4500, 4800 and Cisco 340/350");
249module_param_array(io, int, NULL, 0); 249module_param_hw_array(io, int, ioport, NULL, 0);
250module_param_array(irq, int, NULL, 0); 250module_param_hw_array(irq, int, irq, NULL, 0);
251module_param_array(rates, int, NULL, 0); 251module_param_array(rates, int, NULL, 0);
252module_param_array(ssids, charp, NULL, 0); 252module_param_array(ssids, charp, NULL, 0);
253module_param(auto_wep, int, 0); 253module_param(auto_wep, int, 0);
diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
index 9d42dfe65d44..5548193a28a6 100644
--- a/drivers/parport/parport_pc.c
+++ b/drivers/parport/parport_pc.c
@@ -3150,13 +3150,13 @@ static char *irq[PARPORT_PC_MAX_PORTS];
3150static char *dma[PARPORT_PC_MAX_PORTS]; 3150static char *dma[PARPORT_PC_MAX_PORTS];
3151 3151
3152MODULE_PARM_DESC(io, "Base I/O address (SPP regs)"); 3152MODULE_PARM_DESC(io, "Base I/O address (SPP regs)");
3153module_param_array(io, int, NULL, 0); 3153module_param_hw_array(io, int, ioport, NULL, 0);
3154MODULE_PARM_DESC(io_hi, "Base I/O address (ECR)"); 3154MODULE_PARM_DESC(io_hi, "Base I/O address (ECR)");
3155module_param_array(io_hi, int, NULL, 0); 3155module_param_hw_array(io_hi, int, ioport, NULL, 0);
3156MODULE_PARM_DESC(irq, "IRQ line"); 3156MODULE_PARM_DESC(irq, "IRQ line");
3157module_param_array(irq, charp, NULL, 0); 3157module_param_hw_array(irq, charp, irq, NULL, 0);
3158MODULE_PARM_DESC(dma, "DMA channel"); 3158MODULE_PARM_DESC(dma, "DMA channel");
3159module_param_array(dma, charp, NULL, 0); 3159module_param_hw_array(dma, charp, dma, NULL, 0);
3160#if defined(CONFIG_PARPORT_PC_SUPERIO) || \ 3160#if defined(CONFIG_PARPORT_PC_SUPERIO) || \
3161 (defined(CONFIG_PARPORT_1284) && defined(CONFIG_PARPORT_PC_FIFO)) 3161 (defined(CONFIG_PARPORT_1284) && defined(CONFIG_PARPORT_PC_FIFO))
3162MODULE_PARM_DESC(verbose_probing, "Log chit-chat during initialisation"); 3162MODULE_PARM_DESC(verbose_probing, "Log chit-chat during initialisation");
diff --git a/drivers/pci/hotplug/cpcihp_generic.c b/drivers/pci/hotplug/cpcihp_generic.c
index 88a44a707b96..bbf9cf8aeaad 100644
--- a/drivers/pci/hotplug/cpcihp_generic.c
+++ b/drivers/pci/hotplug/cpcihp_generic.c
@@ -220,7 +220,7 @@ module_param(first_slot, byte, 0);
220MODULE_PARM_DESC(first_slot, "Hotswap bus first slot number"); 220MODULE_PARM_DESC(first_slot, "Hotswap bus first slot number");
221module_param(last_slot, byte, 0); 221module_param(last_slot, byte, 0);
222MODULE_PARM_DESC(last_slot, "Hotswap bus last slot number"); 222MODULE_PARM_DESC(last_slot, "Hotswap bus last slot number");
223module_param(port, ushort, 0); 223module_param_hw(port, ushort, ioport, 0);
224MODULE_PARM_DESC(port, "#ENUM signal I/O port"); 224MODULE_PARM_DESC(port, "#ENUM signal I/O port");
225module_param(enum_bit, uint, 0); 225module_param(enum_bit, uint, 0);
226MODULE_PARM_DESC(enum_bit, "#ENUM signal bit (0-7)"); 226MODULE_PARM_DESC(enum_bit, "#ENUM signal bit (0-7)");
diff --git a/drivers/pcmcia/i82365.c b/drivers/pcmcia/i82365.c
index eb0d80a429e4..fb38cc01859f 100644
--- a/drivers/pcmcia/i82365.c
+++ b/drivers/pcmcia/i82365.c
@@ -108,12 +108,12 @@ static int async_clock = -1;
108static int cable_mode = -1; 108static int cable_mode = -1;
109static int wakeup = 0; 109static int wakeup = 0;
110 110
111module_param(i365_base, ulong, 0444); 111module_param_hw(i365_base, ulong, ioport, 0444);
112module_param(ignore, int, 0444); 112module_param(ignore, int, 0444);
113module_param(extra_sockets, int, 0444); 113module_param(extra_sockets, int, 0444);
114module_param(irq_mask, int, 0444); 114module_param_hw(irq_mask, int, other, 0444);
115module_param_array(irq_list, int, &irq_list_count, 0444); 115module_param_hw_array(irq_list, int, irq, &irq_list_count, 0444);
116module_param(cs_irq, int, 0444); 116module_param_hw(cs_irq, int, irq, 0444);
117module_param(async_clock, int, 0444); 117module_param(async_clock, int, 0444);
118module_param(cable_mode, int, 0444); 118module_param(cable_mode, int, 0444);
119module_param(wakeup, int, 0444); 119module_param(wakeup, int, 0444);
diff --git a/drivers/pcmcia/tcic.c b/drivers/pcmcia/tcic.c
index 1ee63e5f0550..a1ac72d51d70 100644
--- a/drivers/pcmcia/tcic.c
+++ b/drivers/pcmcia/tcic.c
@@ -85,12 +85,12 @@ static int poll_quick = HZ/20;
85/* CCLK external clock time, in nanoseconds. 70 ns = 14.31818 MHz */ 85/* CCLK external clock time, in nanoseconds. 70 ns = 14.31818 MHz */
86static int cycle_time = 70; 86static int cycle_time = 70;
87 87
88module_param(tcic_base, ulong, 0444); 88module_param_hw(tcic_base, ulong, ioport, 0444);
89module_param(ignore, int, 0444); 89module_param(ignore, int, 0444);
90module_param(do_scan, int, 0444); 90module_param(do_scan, int, 0444);
91module_param(irq_mask, int, 0444); 91module_param_hw(irq_mask, int, other, 0444);
92module_param_array(irq_list, int, &irq_list_count, 0444); 92module_param_hw_array(irq_list, int, irq, &irq_list_count, 0444);
93module_param(cs_irq, int, 0444); 93module_param_hw(cs_irq, int, irq, 0444);
94module_param(poll_interval, int, 0444); 94module_param(poll_interval, int, 0444);
95module_param(poll_quick, int, 0444); 95module_param(poll_quick, int, 0444);
96module_param(cycle_time, int, 0444); 96module_param(cycle_time, int, 0444);
diff --git a/drivers/scsi/aha152x.c b/drivers/scsi/aha152x.c
index f44d0487236e..ce5dc73d85bb 100644
--- a/drivers/scsi/aha152x.c
+++ b/drivers/scsi/aha152x.c
@@ -331,11 +331,11 @@ MODULE_LICENSE("GPL");
331#if !defined(PCMCIA) 331#if !defined(PCMCIA)
332#if defined(MODULE) 332#if defined(MODULE)
333static int io[] = {0, 0}; 333static int io[] = {0, 0};
334module_param_array(io, int, NULL, 0); 334module_param_hw_array(io, int, ioport, NULL, 0);
335MODULE_PARM_DESC(io,"base io address of controller"); 335MODULE_PARM_DESC(io,"base io address of controller");
336 336
337static int irq[] = {0, 0}; 337static int irq[] = {0, 0};
338module_param_array(irq, int, NULL, 0); 338module_param_hw_array(irq, int, irq, NULL, 0);
339MODULE_PARM_DESC(irq,"interrupt for controller"); 339MODULE_PARM_DESC(irq,"interrupt for controller");
340 340
341static int scsiid[] = {7, 7}; 341static int scsiid[] = {7, 7};
diff --git a/drivers/scsi/aha1542.c b/drivers/scsi/aha1542.c
index 7db448ec8beb..a23cc9ac5acd 100644
--- a/drivers/scsi/aha1542.c
+++ b/drivers/scsi/aha1542.c
@@ -31,7 +31,7 @@ module_param(isapnp, bool, 0);
31MODULE_PARM_DESC(isapnp, "enable PnP support (default=1)"); 31MODULE_PARM_DESC(isapnp, "enable PnP support (default=1)");
32 32
33static int io[MAXBOARDS] = { 0x330, 0x334, 0, 0 }; 33static int io[MAXBOARDS] = { 0x330, 0x334, 0, 0 };
34module_param_array(io, int, NULL, 0); 34module_param_hw_array(io, int, ioport, NULL, 0);
35MODULE_PARM_DESC(io, "base IO address of controller (0x130,0x134,0x230,0x234,0x330,0x334, default=0x330,0x334)"); 35MODULE_PARM_DESC(io, "base IO address of controller (0x130,0x134,0x230,0x234,0x330,0x334, default=0x330,0x334)");
36 36
37/* time AHA spends on the AT-bus during data transfer */ 37/* time AHA spends on the AT-bus during data transfer */
diff --git a/drivers/scsi/g_NCR5380.c b/drivers/scsi/g_NCR5380.c
index 67c8dac321ad..c34fc91ba486 100644
--- a/drivers/scsi/g_NCR5380.c
+++ b/drivers/scsi/g_NCR5380.c
@@ -85,8 +85,8 @@ static int ncr_53c400;
85static int ncr_53c400a; 85static int ncr_53c400a;
86static int dtc_3181e; 86static int dtc_3181e;
87static int hp_c2502; 87static int hp_c2502;
88module_param(ncr_irq, int, 0); 88module_param_hw(ncr_irq, int, irq, 0);
89module_param(ncr_addr, int, 0); 89module_param_hw(ncr_addr, int, ioport, 0);
90module_param(ncr_5380, int, 0); 90module_param(ncr_5380, int, 0);
91module_param(ncr_53c400, int, 0); 91module_param(ncr_53c400, int, 0);
92module_param(ncr_53c400a, int, 0); 92module_param(ncr_53c400a, int, 0);
@@ -94,11 +94,11 @@ module_param(dtc_3181e, int, 0);
94module_param(hp_c2502, int, 0); 94module_param(hp_c2502, int, 0);
95 95
96static int irq[] = { -1, -1, -1, -1, -1, -1, -1, -1 }; 96static int irq[] = { -1, -1, -1, -1, -1, -1, -1, -1 };
97module_param_array(irq, int, NULL, 0); 97module_param_hw_array(irq, int, irq, NULL, 0);
98MODULE_PARM_DESC(irq, "IRQ number(s) (0=none, 254=auto [default])"); 98MODULE_PARM_DESC(irq, "IRQ number(s) (0=none, 254=auto [default])");
99 99
100static int base[] = { 0, 0, 0, 0, 0, 0, 0, 0 }; 100static int base[] = { 0, 0, 0, 0, 0, 0, 0, 0 };
101module_param_array(base, int, NULL, 0); 101module_param_hw_array(base, int, ioport, NULL, 0);
102MODULE_PARM_DESC(base, "base address(es)"); 102MODULE_PARM_DESC(base, "base address(es)");
103 103
104static int card[] = { -1, -1, -1, -1, -1, -1, -1, -1 }; 104static int card[] = { -1, -1, -1, -1, -1, -1, -1, -1 };
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
index d020a13646ae..facc7271f932 100644
--- a/drivers/scsi/gdth.c
+++ b/drivers/scsi/gdth.c
@@ -353,7 +353,7 @@ static int probe_eisa_isa = 0;
353static int force_dma32 = 0; 353static int force_dma32 = 0;
354 354
355/* parameters for modprobe/insmod */ 355/* parameters for modprobe/insmod */
356module_param_array(irq, int, NULL, 0); 356module_param_hw_array(irq, int, irq, NULL, 0);
357module_param(disable, int, 0); 357module_param(disable, int, 0);
358module_param(reserve_mode, int, 0); 358module_param(reserve_mode, int, 0);
359module_param_array(reserve_list, int, NULL, 0); 359module_param_array(reserve_list, int, NULL, 0);
diff --git a/drivers/scsi/qlogicfas.c b/drivers/scsi/qlogicfas.c
index 61cac87fb86f..840823b99e51 100644
--- a/drivers/scsi/qlogicfas.c
+++ b/drivers/scsi/qlogicfas.c
@@ -137,8 +137,8 @@ err:
137static struct qlogicfas408_priv *cards; 137static struct qlogicfas408_priv *cards;
138static int iobase[MAX_QLOGICFAS]; 138static int iobase[MAX_QLOGICFAS];
139static int irq[MAX_QLOGICFAS] = { [0 ... MAX_QLOGICFAS-1] = -1 }; 139static int irq[MAX_QLOGICFAS] = { [0 ... MAX_QLOGICFAS-1] = -1 };
140module_param_array(iobase, int, NULL, 0); 140module_param_hw_array(iobase, int, ioport, NULL, 0);
141module_param_array(irq, int, NULL, 0); 141module_param_hw_array(irq, int, irq, NULL, 0);
142MODULE_PARM_DESC(iobase, "I/O address"); 142MODULE_PARM_DESC(iobase, "I/O address");
143MODULE_PARM_DESC(irq, "IRQ"); 143MODULE_PARM_DESC(irq, "IRQ");
144 144
diff --git a/drivers/staging/speakup/speakup_acntpc.c b/drivers/staging/speakup/speakup_acntpc.c
index ad72f8e883fc..a041441766aa 100644
--- a/drivers/staging/speakup/speakup_acntpc.c
+++ b/drivers/staging/speakup/speakup_acntpc.c
@@ -310,7 +310,7 @@ static void accent_release(void)
310 speakup_info.port_tts = 0; 310 speakup_info.port_tts = 0;
311} 311}
312 312
313module_param_named(port, port_forced, int, 0444); 313module_param_hw_named(port, port_forced, int, ioport, 0444);
314module_param_named(start, synth_acntpc.startup, short, 0444); 314module_param_named(start, synth_acntpc.startup, short, 0444);
315 315
316MODULE_PARM_DESC(port, "Set the port for the synthesizer (override probing)."); 316MODULE_PARM_DESC(port, "Set the port for the synthesizer (override probing).");
diff --git a/drivers/staging/speakup/speakup_dtlk.c b/drivers/staging/speakup/speakup_dtlk.c
index 5973acc0a006..33180937222d 100644
--- a/drivers/staging/speakup/speakup_dtlk.c
+++ b/drivers/staging/speakup/speakup_dtlk.c
@@ -382,7 +382,7 @@ static void dtlk_release(void)
382 speakup_info.port_tts = 0; 382 speakup_info.port_tts = 0;
383} 383}
384 384
385module_param_named(port, port_forced, int, 0444); 385module_param_hw_named(port, port_forced, int, ioport, 0444);
386module_param_named(start, synth_dtlk.startup, short, 0444); 386module_param_named(start, synth_dtlk.startup, short, 0444);
387 387
388MODULE_PARM_DESC(port, "Set the port for the synthesizer (override probing)."); 388MODULE_PARM_DESC(port, "Set the port for the synthesizer (override probing).");
diff --git a/drivers/staging/speakup/speakup_keypc.c b/drivers/staging/speakup/speakup_keypc.c
index ba7901178e0b..d3203f8fc3d0 100644
--- a/drivers/staging/speakup/speakup_keypc.c
+++ b/drivers/staging/speakup/speakup_keypc.c
@@ -312,7 +312,7 @@ static void keynote_release(void)
312 synth_port = 0; 312 synth_port = 0;
313} 313}
314 314
315module_param_named(port, port_forced, int, 0444); 315module_param_hw_named(port, port_forced, int, ioport, 0444);
316module_param_named(start, synth_keypc.startup, short, 0444); 316module_param_named(start, synth_keypc.startup, short, 0444);
317 317
318MODULE_PARM_DESC(port, "Set the port for the synthesizer (override probing)."); 318MODULE_PARM_DESC(port, "Set the port for the synthesizer (override probing).");
diff --git a/drivers/staging/vme/devices/vme_pio2_core.c b/drivers/staging/vme/devices/vme_pio2_core.c
index 20a2d835fdaa..367535b4b77f 100644
--- a/drivers/staging/vme/devices/vme_pio2_core.c
+++ b/drivers/staging/vme/devices/vme_pio2_core.c
@@ -466,16 +466,16 @@ static void __exit pio2_exit(void)
466 466
467/* These are required for each board */ 467/* These are required for each board */
468MODULE_PARM_DESC(bus, "Enumeration of VMEbus to which the board is connected"); 468MODULE_PARM_DESC(bus, "Enumeration of VMEbus to which the board is connected");
469module_param_array(bus, int, &bus_num, 0444); 469module_param_hw_array(bus, int, other, &bus_num, 0444);
470 470
471MODULE_PARM_DESC(base, "Base VME address for PIO2 Registers"); 471MODULE_PARM_DESC(base, "Base VME address for PIO2 Registers");
472module_param_array(base, long, &base_num, 0444); 472module_param_hw_array(base, long, other, &base_num, 0444);
473 473
474MODULE_PARM_DESC(vector, "VME IRQ Vector (Lower 4 bits masked)"); 474MODULE_PARM_DESC(vector, "VME IRQ Vector (Lower 4 bits masked)");
475module_param_array(vector, int, &vector_num, 0444); 475module_param_hw_array(vector, int, other, &vector_num, 0444);
476 476
477MODULE_PARM_DESC(level, "VME IRQ Level"); 477MODULE_PARM_DESC(level, "VME IRQ Level");
478module_param_array(level, int, &level_num, 0444); 478module_param_hw_array(level, int, other, &level_num, 0444);
479 479
480MODULE_PARM_DESC(variant, "Last 4 characters of PIO2 board variant"); 480MODULE_PARM_DESC(variant, "Last 4 characters of PIO2 board variant");
481module_param_array(variant, charp, &variant_num, 0444); 481module_param_array(variant, charp, &variant_num, 0444);
diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
index 5e4fa9206861..104f09c58163 100644
--- a/drivers/tty/cyclades.c
+++ b/drivers/tty/cyclades.c
@@ -156,8 +156,8 @@ static unsigned int cy_isa_addresses[] = {
156static long maddr[NR_CARDS]; 156static long maddr[NR_CARDS];
157static int irq[NR_CARDS]; 157static int irq[NR_CARDS];
158 158
159module_param_array(maddr, long, NULL, 0); 159module_param_hw_array(maddr, long, iomem, NULL, 0);
160module_param_array(irq, int, NULL, 0); 160module_param_hw_array(irq, int, irq, NULL, 0);
161 161
162#endif /* CONFIG_ISA */ 162#endif /* CONFIG_ISA */
163 163
diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c
index 4caf0c3b1f99..3b251f4e5df0 100644
--- a/drivers/tty/moxa.c
+++ b/drivers/tty/moxa.c
@@ -179,7 +179,7 @@ MODULE_FIRMWARE("c320tunx.cod");
179 179
180module_param_array(type, uint, NULL, 0); 180module_param_array(type, uint, NULL, 0);
181MODULE_PARM_DESC(type, "card type: C218=2, C320=4"); 181MODULE_PARM_DESC(type, "card type: C218=2, C320=4");
182module_param_array(baseaddr, ulong, NULL, 0); 182module_param_hw_array(baseaddr, ulong, ioport, NULL, 0);
183MODULE_PARM_DESC(baseaddr, "base address"); 183MODULE_PARM_DESC(baseaddr, "base address");
184module_param_array(numports, uint, NULL, 0); 184module_param_array(numports, uint, NULL, 0);
185MODULE_PARM_DESC(numports, "numports (ignored for C218)"); 185MODULE_PARM_DESC(numports, "numports (ignored for C218)");
diff --git a/drivers/tty/mxser.c b/drivers/tty/mxser.c
index 7b8f383fb090..8bd6fb6d9391 100644
--- a/drivers/tty/mxser.c
+++ b/drivers/tty/mxser.c
@@ -183,7 +183,7 @@ static int ttymajor = MXSERMAJOR;
183 183
184MODULE_AUTHOR("Casper Yang"); 184MODULE_AUTHOR("Casper Yang");
185MODULE_DESCRIPTION("MOXA Smartio/Industio Family Multiport Board Device Driver"); 185MODULE_DESCRIPTION("MOXA Smartio/Industio Family Multiport Board Device Driver");
186module_param_array(ioaddr, ulong, NULL, 0); 186module_param_hw_array(ioaddr, ulong, ioport, NULL, 0);
187MODULE_PARM_DESC(ioaddr, "ISA io addresses to look for a moxa board"); 187MODULE_PARM_DESC(ioaddr, "ISA io addresses to look for a moxa board");
188module_param(ttymajor, int, 0); 188module_param(ttymajor, int, 0);
189MODULE_LICENSE("GPL"); 189MODULE_LICENSE("GPL");
diff --git a/drivers/tty/rocket.c b/drivers/tty/rocket.c
index d66c1edd9892..b51a877da986 100644
--- a/drivers/tty/rocket.c
+++ b/drivers/tty/rocket.c
@@ -250,15 +250,15 @@ static int sReadAiopNumChan(WordIO_t io);
250 250
251MODULE_AUTHOR("Theodore Ts'o"); 251MODULE_AUTHOR("Theodore Ts'o");
252MODULE_DESCRIPTION("Comtrol RocketPort driver"); 252MODULE_DESCRIPTION("Comtrol RocketPort driver");
253module_param(board1, ulong, 0); 253module_param_hw(board1, ulong, ioport, 0);
254MODULE_PARM_DESC(board1, "I/O port for (ISA) board #1"); 254MODULE_PARM_DESC(board1, "I/O port for (ISA) board #1");
255module_param(board2, ulong, 0); 255module_param_hw(board2, ulong, ioport, 0);
256MODULE_PARM_DESC(board2, "I/O port for (ISA) board #2"); 256MODULE_PARM_DESC(board2, "I/O port for (ISA) board #2");
257module_param(board3, ulong, 0); 257module_param_hw(board3, ulong, ioport, 0);
258MODULE_PARM_DESC(board3, "I/O port for (ISA) board #3"); 258MODULE_PARM_DESC(board3, "I/O port for (ISA) board #3");
259module_param(board4, ulong, 0); 259module_param_hw(board4, ulong, ioport, 0);
260MODULE_PARM_DESC(board4, "I/O port for (ISA) board #4"); 260MODULE_PARM_DESC(board4, "I/O port for (ISA) board #4");
261module_param(controller, ulong, 0); 261module_param_hw(controller, ulong, ioport, 0);
262MODULE_PARM_DESC(controller, "I/O port for (ISA) rocketport controller"); 262MODULE_PARM_DESC(controller, "I/O port for (ISA) rocketport controller");
263module_param(support_low_speed, bool, 0); 263module_param(support_low_speed, bool, 0);
264MODULE_PARM_DESC(support_low_speed, "1 means support 50 baud, 0 means support 460400 baud"); 264MODULE_PARM_DESC(support_low_speed, "1 means support 50 baud, 0 means support 460400 baud");
diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
index 48a07e2f617f..1aab3010fbfa 100644
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -1191,7 +1191,7 @@ module_exit(serial8250_exit);
1191MODULE_LICENSE("GPL"); 1191MODULE_LICENSE("GPL");
1192MODULE_DESCRIPTION("Generic 8250/16x50 serial driver"); 1192MODULE_DESCRIPTION("Generic 8250/16x50 serial driver");
1193 1193
1194module_param(share_irqs, uint, 0644); 1194module_param_hw(share_irqs, uint, other, 0644);
1195MODULE_PARM_DESC(share_irqs, "Share IRQs with other non-8250/16x50 devices (unsafe)"); 1195MODULE_PARM_DESC(share_irqs, "Share IRQs with other non-8250/16x50 devices (unsafe)");
1196 1196
1197module_param(nr_uarts, uint, 0644); 1197module_param(nr_uarts, uint, 0644);
@@ -1201,7 +1201,7 @@ module_param(skip_txen_test, uint, 0644);
1201MODULE_PARM_DESC(skip_txen_test, "Skip checking for the TXEN bug at init time"); 1201MODULE_PARM_DESC(skip_txen_test, "Skip checking for the TXEN bug at init time");
1202 1202
1203#ifdef CONFIG_SERIAL_8250_RSA 1203#ifdef CONFIG_SERIAL_8250_RSA
1204module_param_array(probe_rsa, ulong, &probe_rsa_count, 0444); 1204module_param_hw_array(probe_rsa, ulong, ioport, &probe_rsa_count, 0444);
1205MODULE_PARM_DESC(probe_rsa, "Probe I/O ports for RSA"); 1205MODULE_PARM_DESC(probe_rsa, "Probe I/O ports for RSA");
1206#endif 1206#endif
1207MODULE_ALIAS_CHARDEV_MAJOR(TTY_MAJOR); 1207MODULE_ALIAS_CHARDEV_MAJOR(TTY_MAJOR);
diff --git a/drivers/tty/synclink.c b/drivers/tty/synclink.c
index 657eed82eeb3..a2c308f7d637 100644
--- a/drivers/tty/synclink.c
+++ b/drivers/tty/synclink.c
@@ -869,9 +869,9 @@ static int txholdbufs[MAX_TOTAL_DEVICES];
869 869
870module_param(break_on_load, bool, 0); 870module_param(break_on_load, bool, 0);
871module_param(ttymajor, int, 0); 871module_param(ttymajor, int, 0);
872module_param_array(io, int, NULL, 0); 872module_param_hw_array(io, int, ioport, NULL, 0);
873module_param_array(irq, int, NULL, 0); 873module_param_hw_array(irq, int, irq, NULL, 0);
874module_param_array(dma, int, NULL, 0); 874module_param_hw_array(dma, int, dma, NULL, 0);
875module_param(debug_level, int, 0); 875module_param(debug_level, int, 0);
876module_param_array(maxframe, int, NULL, 0); 876module_param_array(maxframe, int, NULL, 0);
877module_param_array(txdmabufs, int, NULL, 0); 877module_param_array(txdmabufs, int, NULL, 0);
diff --git a/drivers/video/fbdev/arcfb.c b/drivers/video/fbdev/arcfb.c
index 1928cb2b5386..7e87d0d61658 100644
--- a/drivers/video/fbdev/arcfb.c
+++ b/drivers/video/fbdev/arcfb.c
@@ -645,17 +645,17 @@ module_param(nosplash, uint, 0);
645MODULE_PARM_DESC(nosplash, "Disable doing the splash screen"); 645MODULE_PARM_DESC(nosplash, "Disable doing the splash screen");
646module_param(arcfb_enable, uint, 0); 646module_param(arcfb_enable, uint, 0);
647MODULE_PARM_DESC(arcfb_enable, "Enable communication with Arc board"); 647MODULE_PARM_DESC(arcfb_enable, "Enable communication with Arc board");
648module_param(dio_addr, ulong, 0); 648module_param_hw(dio_addr, ulong, ioport, 0);
649MODULE_PARM_DESC(dio_addr, "IO address for data, eg: 0x480"); 649MODULE_PARM_DESC(dio_addr, "IO address for data, eg: 0x480");
650module_param(cio_addr, ulong, 0); 650module_param_hw(cio_addr, ulong, ioport, 0);
651MODULE_PARM_DESC(cio_addr, "IO address for control, eg: 0x400"); 651MODULE_PARM_DESC(cio_addr, "IO address for control, eg: 0x400");
652module_param(c2io_addr, ulong, 0); 652module_param_hw(c2io_addr, ulong, ioport, 0);
653MODULE_PARM_DESC(c2io_addr, "IO address for secondary control, eg: 0x408"); 653MODULE_PARM_DESC(c2io_addr, "IO address for secondary control, eg: 0x408");
654module_param(splashval, ulong, 0); 654module_param(splashval, ulong, 0);
655MODULE_PARM_DESC(splashval, "Splash pattern: 0xFF is black, 0x00 is green"); 655MODULE_PARM_DESC(splashval, "Splash pattern: 0xFF is black, 0x00 is green");
656module_param(tuhold, ulong, 0); 656module_param(tuhold, ulong, 0);
657MODULE_PARM_DESC(tuhold, "Time to hold between strobing data to Arc board"); 657MODULE_PARM_DESC(tuhold, "Time to hold between strobing data to Arc board");
658module_param(irq, uint, 0); 658module_param_hw(irq, uint, irq, 0);
659MODULE_PARM_DESC(irq, "IRQ for the Arc board"); 659MODULE_PARM_DESC(irq, "IRQ for the Arc board");
660 660
661module_init(arcfb_init); 661module_init(arcfb_init);
diff --git a/drivers/video/fbdev/n411.c b/drivers/video/fbdev/n411.c
index 053deacad7cc..a3677313396e 100644
--- a/drivers/video/fbdev/n411.c
+++ b/drivers/video/fbdev/n411.c
@@ -193,11 +193,11 @@ module_exit(n411_exit);
193 193
194module_param(nosplash, uint, 0); 194module_param(nosplash, uint, 0);
195MODULE_PARM_DESC(nosplash, "Disable doing the splash screen"); 195MODULE_PARM_DESC(nosplash, "Disable doing the splash screen");
196module_param(dio_addr, ulong, 0); 196module_param_hw(dio_addr, ulong, ioport, 0);
197MODULE_PARM_DESC(dio_addr, "IO address for data, eg: 0x480"); 197MODULE_PARM_DESC(dio_addr, "IO address for data, eg: 0x480");
198module_param(cio_addr, ulong, 0); 198module_param_hw(cio_addr, ulong, ioport, 0);
199MODULE_PARM_DESC(cio_addr, "IO address for control, eg: 0x400"); 199MODULE_PARM_DESC(cio_addr, "IO address for control, eg: 0x400");
200module_param(c2io_addr, ulong, 0); 200module_param_hw(c2io_addr, ulong, ioport, 0);
201MODULE_PARM_DESC(c2io_addr, "IO address for secondary control, eg: 0x408"); 201MODULE_PARM_DESC(c2io_addr, "IO address for secondary control, eg: 0x408");
202module_param(splashval, ulong, 0); 202module_param(splashval, ulong, 0);
203MODULE_PARM_DESC(splashval, "Splash pattern: 0x00 is black, 0x01 is white"); 203MODULE_PARM_DESC(splashval, "Splash pattern: 0x00 is black, 0x01 is white");
diff --git a/drivers/watchdog/cpu5wdt.c b/drivers/watchdog/cpu5wdt.c
index 6d03e8e30f8b..6c3f78e45c26 100644
--- a/drivers/watchdog/cpu5wdt.c
+++ b/drivers/watchdog/cpu5wdt.c
@@ -289,7 +289,7 @@ MODULE_DESCRIPTION("sma cpu5 watchdog driver");
289MODULE_SUPPORTED_DEVICE("sma cpu5 watchdog"); 289MODULE_SUPPORTED_DEVICE("sma cpu5 watchdog");
290MODULE_LICENSE("GPL"); 290MODULE_LICENSE("GPL");
291 291
292module_param(port, int, 0); 292module_param_hw(port, int, ioport, 0);
293MODULE_PARM_DESC(port, "base address of watchdog card, default is 0x91"); 293MODULE_PARM_DESC(port, "base address of watchdog card, default is 0x91");
294 294
295module_param(verbose, int, 0); 295module_param(verbose, int, 0);
diff --git a/drivers/watchdog/eurotechwdt.c b/drivers/watchdog/eurotechwdt.c
index 23ee53240c4c..38e96712264f 100644
--- a/drivers/watchdog/eurotechwdt.c
+++ b/drivers/watchdog/eurotechwdt.c
@@ -97,9 +97,9 @@ MODULE_PARM_DESC(nowayout,
97#define WDT_TIMER_CFG 0xf3 97#define WDT_TIMER_CFG 0xf3
98 98
99 99
100module_param(io, int, 0); 100module_param_hw(io, int, ioport, 0);
101MODULE_PARM_DESC(io, "Eurotech WDT io port (default=0x3f0)"); 101MODULE_PARM_DESC(io, "Eurotech WDT io port (default=0x3f0)");
102module_param(irq, int, 0); 102module_param_hw(irq, int, irq, 0);
103MODULE_PARM_DESC(irq, "Eurotech WDT irq (default=10)"); 103MODULE_PARM_DESC(irq, "Eurotech WDT irq (default=10)");
104module_param(ev, charp, 0); 104module_param(ev, charp, 0);
105MODULE_PARM_DESC(ev, "Eurotech WDT event type (default is `int')"); 105MODULE_PARM_DESC(ev, "Eurotech WDT event type (default is `int')");
diff --git a/drivers/watchdog/pc87413_wdt.c b/drivers/watchdog/pc87413_wdt.c
index 9f15dd9435d1..06a892e36a8d 100644
--- a/drivers/watchdog/pc87413_wdt.c
+++ b/drivers/watchdog/pc87413_wdt.c
@@ -579,7 +579,7 @@ MODULE_AUTHOR("Marcus Junker <junker@anduras.de>");
579MODULE_DESCRIPTION("PC87413 WDT driver"); 579MODULE_DESCRIPTION("PC87413 WDT driver");
580MODULE_LICENSE("GPL"); 580MODULE_LICENSE("GPL");
581 581
582module_param(io, int, 0); 582module_param_hw(io, int, ioport, 0);
583MODULE_PARM_DESC(io, MODNAME " I/O port (default: " 583MODULE_PARM_DESC(io, MODNAME " I/O port (default: "
584 __MODULE_STRING(IO_DEFAULT) ")."); 584 __MODULE_STRING(IO_DEFAULT) ").");
585 585
diff --git a/drivers/watchdog/sc1200wdt.c b/drivers/watchdog/sc1200wdt.c
index 131193a7acdf..b34d3d5ba632 100644
--- a/drivers/watchdog/sc1200wdt.c
+++ b/drivers/watchdog/sc1200wdt.c
@@ -88,7 +88,7 @@ MODULE_PARM_DESC(isapnp,
88 "When set to 0 driver ISA PnP support will be disabled"); 88 "When set to 0 driver ISA PnP support will be disabled");
89#endif 89#endif
90 90
91module_param(io, int, 0); 91module_param_hw(io, int, ioport, 0);
92MODULE_PARM_DESC(io, "io port"); 92MODULE_PARM_DESC(io, "io port");
93module_param(timeout, int, 0); 93module_param(timeout, int, 0);
94MODULE_PARM_DESC(timeout, "range is 0-255 minutes, default is 1"); 94MODULE_PARM_DESC(timeout, "range is 0-255 minutes, default is 1");
diff --git a/drivers/watchdog/wdt.c b/drivers/watchdog/wdt.c
index e0206b5b7d89..e481fbbc4ae7 100644
--- a/drivers/watchdog/wdt.c
+++ b/drivers/watchdog/wdt.c
@@ -78,9 +78,9 @@ static int irq = 11;
78 78
79static DEFINE_SPINLOCK(wdt_lock); 79static DEFINE_SPINLOCK(wdt_lock);
80 80
81module_param(io, int, 0); 81module_param_hw(io, int, ioport, 0);
82MODULE_PARM_DESC(io, "WDT io port (default=0x240)"); 82MODULE_PARM_DESC(io, "WDT io port (default=0x240)");
83module_param(irq, int, 0); 83module_param_hw(irq, int, irq, 0);
84MODULE_PARM_DESC(irq, "WDT irq (default=11)"); 84MODULE_PARM_DESC(irq, "WDT irq (default=11)");
85 85
86/* Support for the Fan Tachometer on the WDT501-P */ 86/* Support for the Fan Tachometer on the WDT501-P */
diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c
index 5523df7f17ef..5cb022c8cd33 100644
--- a/fs/pstore/ram.c
+++ b/fs/pstore/ram.c
@@ -58,7 +58,7 @@ module_param_named(pmsg_size, ramoops_pmsg_size, ulong, 0400);
58MODULE_PARM_DESC(pmsg_size, "size of user space message log"); 58MODULE_PARM_DESC(pmsg_size, "size of user space message log");
59 59
60static unsigned long long mem_address; 60static unsigned long long mem_address;
61module_param(mem_address, ullong, 0400); 61module_param_hw(mem_address, ullong, other, 0400);
62MODULE_PARM_DESC(mem_address, 62MODULE_PARM_DESC(mem_address,
63 "start of reserved RAM used to store oops/panic logs"); 63 "start of reserved RAM used to store oops/panic logs");
64 64
diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
index 52666d90ca94..6be1949ebcdf 100644
--- a/include/linux/moduleparam.h
+++ b/include/linux/moduleparam.h
@@ -60,9 +60,11 @@ struct kernel_param_ops {
60 * Flags available for kernel_param 60 * Flags available for kernel_param
61 * 61 *
62 * UNSAFE - the parameter is dangerous and setting it will taint the kernel 62 * UNSAFE - the parameter is dangerous and setting it will taint the kernel
63 * HWPARAM - Hardware param not permitted in lockdown mode
63 */ 64 */
64enum { 65enum {
65 KERNEL_PARAM_FL_UNSAFE = (1 << 0) 66 KERNEL_PARAM_FL_UNSAFE = (1 << 0),
67 KERNEL_PARAM_FL_HWPARAM = (1 << 1),
66}; 68};
67 69
68struct kernel_param { 70struct kernel_param {
@@ -451,6 +453,67 @@ extern int param_set_bint(const char *val, const struct kernel_param *kp);
451 perm, -1, 0); \ 453 perm, -1, 0); \
452 __MODULE_PARM_TYPE(name, "array of " #type) 454 __MODULE_PARM_TYPE(name, "array of " #type)
453 455
456enum hwparam_type {
457 hwparam_ioport, /* Module parameter configures an I/O port */
458 hwparam_iomem, /* Module parameter configures an I/O mem address */
459 hwparam_ioport_or_iomem, /* Module parameter could be either, depending on other option */
460 hwparam_irq, /* Module parameter configures an I/O port */
461 hwparam_dma, /* Module parameter configures a DMA channel */
462 hwparam_dma_addr, /* Module parameter configures a DMA buffer address */
463 hwparam_other, /* Module parameter configures some other value */
464};
465
466/**
467 * module_param_hw_named - A parameter representing a hw parameters
468 * @name: a valid C identifier which is the parameter name.
469 * @value: the actual lvalue to alter.
470 * @type: the type of the parameter
471 * @hwtype: what the value represents (enum hwparam_type)
472 * @perm: visibility in sysfs.
473 *
474 * Usually it's a good idea to have variable names and user-exposed names the
475 * same, but that's harder if the variable must be non-static or is inside a
476 * structure. This allows exposure under a different name.
477 */
478#define module_param_hw_named(name, value, type, hwtype, perm) \
479 param_check_##type(name, &(value)); \
480 __module_param_call(MODULE_PARAM_PREFIX, name, \
481 &param_ops_##type, &value, \
482 perm, -1, \
483 KERNEL_PARAM_FL_HWPARAM | (hwparam_##hwtype & 0)); \
484 __MODULE_PARM_TYPE(name, #type)
485
486#define module_param_hw(name, type, hwtype, perm) \
487 module_param_hw_named(name, name, type, hwtype, perm)
488
489/**
490 * module_param_hw_array - A parameter representing an array of hw parameters
491 * @name: the name of the array variable
492 * @type: the type, as per module_param()
493 * @hwtype: what the value represents (enum hwparam_type)
494 * @nump: optional pointer filled in with the number written
495 * @perm: visibility in sysfs
496 *
497 * Input and output are as comma-separated values. Commas inside values
498 * don't work properly (eg. an array of charp).
499 *
500 * ARRAY_SIZE(@name) is used to determine the number of elements in the
501 * array, so the definition must be visible.
502 */
503#define module_param_hw_array(name, type, hwtype, nump, perm) \
504 param_check_##type(name, &(name)[0]); \
505 static const struct kparam_array __param_arr_##name \
506 = { .max = ARRAY_SIZE(name), .num = nump, \
507 .ops = &param_ops_##type, \
508 .elemsize = sizeof(name[0]), .elem = name }; \
509 __module_param_call(MODULE_PARAM_PREFIX, name, \
510 &param_array_ops, \
511 .arr = &__param_arr_##name, \
512 perm, -1, \
513 KERNEL_PARAM_FL_HWPARAM | (hwparam_##hwtype & 0)); \
514 __MODULE_PARM_TYPE(name, "array of " #type)
515
516
454extern const struct kernel_param_ops param_array_ops; 517extern const struct kernel_param_ops param_array_ops;
455 518
456extern const struct kernel_param_ops param_ops_string; 519extern const struct kernel_param_ops param_ops_string;
diff --git a/sound/drivers/mpu401/mpu401.c b/sound/drivers/mpu401/mpu401.c
index fed7e7e2177b..9b86e00d7d95 100644
--- a/sound/drivers/mpu401/mpu401.c
+++ b/sound/drivers/mpu401/mpu401.c
@@ -53,9 +53,9 @@ MODULE_PARM_DESC(enable, "Enable MPU-401 device.");
53module_param_array(pnp, bool, NULL, 0444); 53module_param_array(pnp, bool, NULL, 0444);
54MODULE_PARM_DESC(pnp, "PnP detection for MPU-401 device."); 54MODULE_PARM_DESC(pnp, "PnP detection for MPU-401 device.");
55#endif 55#endif
56module_param_array(port, long, NULL, 0444); 56module_param_hw_array(port, long, ioport, NULL, 0444);
57MODULE_PARM_DESC(port, "Port # for MPU-401 device."); 57MODULE_PARM_DESC(port, "Port # for MPU-401 device.");
58module_param_array(irq, int, NULL, 0444); 58module_param_hw_array(irq, int, irq, NULL, 0444);
59MODULE_PARM_DESC(irq, "IRQ # for MPU-401 device."); 59MODULE_PARM_DESC(irq, "IRQ # for MPU-401 device.");
60module_param_array(uart_enter, bool, NULL, 0444); 60module_param_array(uart_enter, bool, NULL, 0444);
61MODULE_PARM_DESC(uart_enter, "Issue UART_ENTER command at open."); 61MODULE_PARM_DESC(uart_enter, "Issue UART_ENTER command at open.");
diff --git a/sound/drivers/mtpav.c b/sound/drivers/mtpav.c
index 00b31f92c504..0f6392001e30 100644
--- a/sound/drivers/mtpav.c
+++ b/sound/drivers/mtpav.c
@@ -86,9 +86,9 @@ module_param(index, int, 0444);
86MODULE_PARM_DESC(index, "Index value for MotuMTPAV MIDI."); 86MODULE_PARM_DESC(index, "Index value for MotuMTPAV MIDI.");
87module_param(id, charp, 0444); 87module_param(id, charp, 0444);
88MODULE_PARM_DESC(id, "ID string for MotuMTPAV MIDI."); 88MODULE_PARM_DESC(id, "ID string for MotuMTPAV MIDI.");
89module_param(port, long, 0444); 89module_param_hw(port, long, ioport, 0444);
90MODULE_PARM_DESC(port, "Parallel port # for MotuMTPAV MIDI."); 90MODULE_PARM_DESC(port, "Parallel port # for MotuMTPAV MIDI.");
91module_param(irq, int, 0444); 91module_param_hw(irq, int, irq, 0444);
92MODULE_PARM_DESC(irq, "Parallel IRQ # for MotuMTPAV MIDI."); 92MODULE_PARM_DESC(irq, "Parallel IRQ # for MotuMTPAV MIDI.");
93module_param(hwports, int, 0444); 93module_param(hwports, int, 0444);
94MODULE_PARM_DESC(hwports, "Hardware ports # for MotuMTPAV MIDI."); 94MODULE_PARM_DESC(hwports, "Hardware ports # for MotuMTPAV MIDI.");
diff --git a/sound/drivers/serial-u16550.c b/sound/drivers/serial-u16550.c
index 60d51ac4ccfe..88e66ea0306d 100644
--- a/sound/drivers/serial-u16550.c
+++ b/sound/drivers/serial-u16550.c
@@ -84,9 +84,9 @@ module_param_array(id, charp, NULL, 0444);
84MODULE_PARM_DESC(id, "ID string for Serial MIDI."); 84MODULE_PARM_DESC(id, "ID string for Serial MIDI.");
85module_param_array(enable, bool, NULL, 0444); 85module_param_array(enable, bool, NULL, 0444);
86MODULE_PARM_DESC(enable, "Enable UART16550A chip."); 86MODULE_PARM_DESC(enable, "Enable UART16550A chip.");
87module_param_array(port, long, NULL, 0444); 87module_param_hw_array(port, long, ioport, NULL, 0444);
88MODULE_PARM_DESC(port, "Port # for UART16550A chip."); 88MODULE_PARM_DESC(port, "Port # for UART16550A chip.");
89module_param_array(irq, int, NULL, 0444); 89module_param_hw_array(irq, int, irq, NULL, 0444);
90MODULE_PARM_DESC(irq, "IRQ # for UART16550A chip."); 90MODULE_PARM_DESC(irq, "IRQ # for UART16550A chip.");
91module_param_array(speed, int, NULL, 0444); 91module_param_array(speed, int, NULL, 0444);
92MODULE_PARM_DESC(speed, "Speed in bauds."); 92MODULE_PARM_DESC(speed, "Speed in bauds.");
diff --git a/sound/isa/ad1848/ad1848.c b/sound/isa/ad1848/ad1848.c
index a302d1f8d14f..e739b1c85c25 100644
--- a/sound/isa/ad1848/ad1848.c
+++ b/sound/isa/ad1848/ad1848.c
@@ -55,11 +55,11 @@ module_param_array(id, charp, NULL, 0444);
55MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard."); 55MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard.");
56module_param_array(enable, bool, NULL, 0444); 56module_param_array(enable, bool, NULL, 0444);
57MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard."); 57MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
58module_param_array(port, long, NULL, 0444); 58module_param_hw_array(port, long, ioport, NULL, 0444);
59MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver."); 59MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
60module_param_array(irq, int, NULL, 0444); 60module_param_hw_array(irq, int, irq, NULL, 0444);
61MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver."); 61MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver.");
62module_param_array(dma1, int, NULL, 0444); 62module_param_hw_array(dma1, int, dma, NULL, 0444);
63MODULE_PARM_DESC(dma1, "DMA1 # for " CRD_NAME " driver."); 63MODULE_PARM_DESC(dma1, "DMA1 # for " CRD_NAME " driver.");
64module_param_array(thinkpad, bool, NULL, 0444); 64module_param_array(thinkpad, bool, NULL, 0444);
65MODULE_PARM_DESC(thinkpad, "Enable only for the onboard CS4248 of IBM Thinkpad 360/750/755 series."); 65MODULE_PARM_DESC(thinkpad, "Enable only for the onboard CS4248 of IBM Thinkpad 360/750/755 series.");
diff --git a/sound/isa/adlib.c b/sound/isa/adlib.c
index 8d3060fd7ad7..5fb619eca5c8 100644
--- a/sound/isa/adlib.c
+++ b/sound/isa/adlib.c
@@ -27,7 +27,7 @@ module_param_array(id, charp, NULL, 0444);
27MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard."); 27MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard.");
28module_param_array(enable, bool, NULL, 0444); 28module_param_array(enable, bool, NULL, 0444);
29MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard."); 29MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
30module_param_array(port, long, NULL, 0444); 30module_param_hw_array(port, long, ioport, NULL, 0444);
31MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver."); 31MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
32 32
33static int snd_adlib_match(struct device *dev, unsigned int n) 33static int snd_adlib_match(struct device *dev, unsigned int n)
diff --git a/sound/isa/cmi8328.c b/sound/isa/cmi8328.c
index 787475084f46..8e1756c3b9bb 100644
--- a/sound/isa/cmi8328.c
+++ b/sound/isa/cmi8328.c
@@ -51,18 +51,18 @@ MODULE_PARM_DESC(index, "Index value for CMI8328 soundcard.");
51module_param_array(id, charp, NULL, 0444); 51module_param_array(id, charp, NULL, 0444);
52MODULE_PARM_DESC(id, "ID string for CMI8328 soundcard."); 52MODULE_PARM_DESC(id, "ID string for CMI8328 soundcard.");
53 53
54module_param_array(port, long, NULL, 0444); 54module_param_hw_array(port, long, ioport, NULL, 0444);
55MODULE_PARM_DESC(port, "Port # for CMI8328 driver."); 55MODULE_PARM_DESC(port, "Port # for CMI8328 driver.");
56module_param_array(irq, int, NULL, 0444); 56module_param_hw_array(irq, int, irq, NULL, 0444);
57MODULE_PARM_DESC(irq, "IRQ # for CMI8328 driver."); 57MODULE_PARM_DESC(irq, "IRQ # for CMI8328 driver.");
58module_param_array(dma1, int, NULL, 0444); 58module_param_hw_array(dma1, int, dma, NULL, 0444);
59MODULE_PARM_DESC(dma1, "DMA1 for CMI8328 driver."); 59MODULE_PARM_DESC(dma1, "DMA1 for CMI8328 driver.");
60module_param_array(dma2, int, NULL, 0444); 60module_param_hw_array(dma2, int, dma, NULL, 0444);
61MODULE_PARM_DESC(dma2, "DMA2 for CMI8328 driver."); 61MODULE_PARM_DESC(dma2, "DMA2 for CMI8328 driver.");
62 62
63module_param_array(mpuport, long, NULL, 0444); 63module_param_hw_array(mpuport, long, ioport, NULL, 0444);
64MODULE_PARM_DESC(mpuport, "MPU-401 port # for CMI8328 driver."); 64MODULE_PARM_DESC(mpuport, "MPU-401 port # for CMI8328 driver.");
65module_param_array(mpuirq, int, NULL, 0444); 65module_param_hw_array(mpuirq, int, irq, NULL, 0444);
66MODULE_PARM_DESC(mpuirq, "IRQ # for CMI8328 MPU-401 port."); 66MODULE_PARM_DESC(mpuirq, "IRQ # for CMI8328 MPU-401 port.");
67#ifdef SUPPORT_JOYSTICK 67#ifdef SUPPORT_JOYSTICK
68module_param_array(gameport, bool, NULL, 0444); 68module_param_array(gameport, bool, NULL, 0444);
diff --git a/sound/isa/cmi8330.c b/sound/isa/cmi8330.c
index dfedfd85f205..f64b29ab5cc7 100644
--- a/sound/isa/cmi8330.c
+++ b/sound/isa/cmi8330.c
@@ -95,27 +95,27 @@ module_param_array(isapnp, bool, NULL, 0444);
95MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard."); 95MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
96#endif 96#endif
97 97
98module_param_array(sbport, long, NULL, 0444); 98module_param_hw_array(sbport, long, ioport, NULL, 0444);
99MODULE_PARM_DESC(sbport, "Port # for CMI8330/CMI8329 SB driver."); 99MODULE_PARM_DESC(sbport, "Port # for CMI8330/CMI8329 SB driver.");
100module_param_array(sbirq, int, NULL, 0444); 100module_param_hw_array(sbirq, int, irq, NULL, 0444);
101MODULE_PARM_DESC(sbirq, "IRQ # for CMI8330/CMI8329 SB driver."); 101MODULE_PARM_DESC(sbirq, "IRQ # for CMI8330/CMI8329 SB driver.");
102module_param_array(sbdma8, int, NULL, 0444); 102module_param_hw_array(sbdma8, int, dma, NULL, 0444);
103MODULE_PARM_DESC(sbdma8, "DMA8 for CMI8330/CMI8329 SB driver."); 103MODULE_PARM_DESC(sbdma8, "DMA8 for CMI8330/CMI8329 SB driver.");
104module_param_array(sbdma16, int, NULL, 0444); 104module_param_hw_array(sbdma16, int, dma, NULL, 0444);
105MODULE_PARM_DESC(sbdma16, "DMA16 for CMI8330/CMI8329 SB driver."); 105MODULE_PARM_DESC(sbdma16, "DMA16 for CMI8330/CMI8329 SB driver.");
106 106
107module_param_array(wssport, long, NULL, 0444); 107module_param_hw_array(wssport, long, ioport, NULL, 0444);
108MODULE_PARM_DESC(wssport, "Port # for CMI8330/CMI8329 WSS driver."); 108MODULE_PARM_DESC(wssport, "Port # for CMI8330/CMI8329 WSS driver.");
109module_param_array(wssirq, int, NULL, 0444); 109module_param_hw_array(wssirq, int, irq, NULL, 0444);
110MODULE_PARM_DESC(wssirq, "IRQ # for CMI8330/CMI8329 WSS driver."); 110MODULE_PARM_DESC(wssirq, "IRQ # for CMI8330/CMI8329 WSS driver.");
111module_param_array(wssdma, int, NULL, 0444); 111module_param_hw_array(wssdma, int, dma, NULL, 0444);
112MODULE_PARM_DESC(wssdma, "DMA for CMI8330/CMI8329 WSS driver."); 112MODULE_PARM_DESC(wssdma, "DMA for CMI8330/CMI8329 WSS driver.");
113 113
114module_param_array(fmport, long, NULL, 0444); 114module_param_hw_array(fmport, long, ioport, NULL, 0444);
115MODULE_PARM_DESC(fmport, "FM port # for CMI8330/CMI8329 driver."); 115MODULE_PARM_DESC(fmport, "FM port # for CMI8330/CMI8329 driver.");
116module_param_array(mpuport, long, NULL, 0444); 116module_param_hw_array(mpuport, long, ioport, NULL, 0444);
117MODULE_PARM_DESC(mpuport, "MPU-401 port # for CMI8330/CMI8329 driver."); 117MODULE_PARM_DESC(mpuport, "MPU-401 port # for CMI8330/CMI8329 driver.");
118module_param_array(mpuirq, int, NULL, 0444); 118module_param_hw_array(mpuirq, int, irq, NULL, 0444);
119MODULE_PARM_DESC(mpuirq, "IRQ # for CMI8330/CMI8329 MPU-401 port."); 119MODULE_PARM_DESC(mpuirq, "IRQ # for CMI8330/CMI8329 MPU-401 port.");
120#ifdef CONFIG_PNP 120#ifdef CONFIG_PNP
121static int isa_registered; 121static int isa_registered;
diff --git a/sound/isa/cs423x/cs4231.c b/sound/isa/cs423x/cs4231.c
index ef7448e9f813..e8edd9017a2f 100644
--- a/sound/isa/cs423x/cs4231.c
+++ b/sound/isa/cs423x/cs4231.c
@@ -55,17 +55,17 @@ module_param_array(id, charp, NULL, 0444);
55MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard."); 55MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard.");
56module_param_array(enable, bool, NULL, 0444); 56module_param_array(enable, bool, NULL, 0444);
57MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard."); 57MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
58module_param_array(port, long, NULL, 0444); 58module_param_hw_array(port, long, ioport, NULL, 0444);
59MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver."); 59MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
60module_param_array(mpu_port, long, NULL, 0444); 60module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
61MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " CRD_NAME " driver."); 61MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " CRD_NAME " driver.");
62module_param_array(irq, int, NULL, 0444); 62module_param_hw_array(irq, int, irq, NULL, 0444);
63MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver."); 63MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver.");
64module_param_array(mpu_irq, int, NULL, 0444); 64module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
65MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " CRD_NAME " driver."); 65MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " CRD_NAME " driver.");
66module_param_array(dma1, int, NULL, 0444); 66module_param_hw_array(dma1, int, dma, NULL, 0444);
67MODULE_PARM_DESC(dma1, "DMA1 # for " CRD_NAME " driver."); 67MODULE_PARM_DESC(dma1, "DMA1 # for " CRD_NAME " driver.");
68module_param_array(dma2, int, NULL, 0444); 68module_param_hw_array(dma2, int, dma, NULL, 0444);
69MODULE_PARM_DESC(dma2, "DMA2 # for " CRD_NAME " driver."); 69MODULE_PARM_DESC(dma2, "DMA2 # for " CRD_NAME " driver.");
70 70
71static int snd_cs4231_match(struct device *dev, unsigned int n) 71static int snd_cs4231_match(struct device *dev, unsigned int n)
diff --git a/sound/isa/cs423x/cs4236.c b/sound/isa/cs423x/cs4236.c
index 9d7582c90a95..1f9a3b2be7a1 100644
--- a/sound/isa/cs423x/cs4236.c
+++ b/sound/isa/cs423x/cs4236.c
@@ -98,23 +98,23 @@ MODULE_PARM_DESC(enable, "Enable " IDENT " soundcard.");
98module_param_array(isapnp, bool, NULL, 0444); 98module_param_array(isapnp, bool, NULL, 0444);
99MODULE_PARM_DESC(isapnp, "ISA PnP detection for specified soundcard."); 99MODULE_PARM_DESC(isapnp, "ISA PnP detection for specified soundcard.");
100#endif 100#endif
101module_param_array(port, long, NULL, 0444); 101module_param_hw_array(port, long, ioport, NULL, 0444);
102MODULE_PARM_DESC(port, "Port # for " IDENT " driver."); 102MODULE_PARM_DESC(port, "Port # for " IDENT " driver.");
103module_param_array(cport, long, NULL, 0444); 103module_param_hw_array(cport, long, ioport, NULL, 0444);
104MODULE_PARM_DESC(cport, "Control port # for " IDENT " driver."); 104MODULE_PARM_DESC(cport, "Control port # for " IDENT " driver.");
105module_param_array(mpu_port, long, NULL, 0444); 105module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
106MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " IDENT " driver."); 106MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " IDENT " driver.");
107module_param_array(fm_port, long, NULL, 0444); 107module_param_hw_array(fm_port, long, ioport, NULL, 0444);
108MODULE_PARM_DESC(fm_port, "FM port # for " IDENT " driver."); 108MODULE_PARM_DESC(fm_port, "FM port # for " IDENT " driver.");
109module_param_array(sb_port, long, NULL, 0444); 109module_param_hw_array(sb_port, long, ioport, NULL, 0444);
110MODULE_PARM_DESC(sb_port, "SB port # for " IDENT " driver (optional)."); 110MODULE_PARM_DESC(sb_port, "SB port # for " IDENT " driver (optional).");
111module_param_array(irq, int, NULL, 0444); 111module_param_hw_array(irq, int, irq, NULL, 0444);
112MODULE_PARM_DESC(irq, "IRQ # for " IDENT " driver."); 112MODULE_PARM_DESC(irq, "IRQ # for " IDENT " driver.");
113module_param_array(mpu_irq, int, NULL, 0444); 113module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
114MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " IDENT " driver."); 114MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " IDENT " driver.");
115module_param_array(dma1, int, NULL, 0444); 115module_param_hw_array(dma1, int, dma, NULL, 0444);
116MODULE_PARM_DESC(dma1, "DMA1 # for " IDENT " driver."); 116MODULE_PARM_DESC(dma1, "DMA1 # for " IDENT " driver.");
117module_param_array(dma2, int, NULL, 0444); 117module_param_hw_array(dma2, int, dma, NULL, 0444);
118MODULE_PARM_DESC(dma2, "DMA2 # for " IDENT " driver."); 118MODULE_PARM_DESC(dma2, "DMA2 # for " IDENT " driver.");
119 119
120#ifdef CONFIG_PNP 120#ifdef CONFIG_PNP
diff --git a/sound/isa/es1688/es1688.c b/sound/isa/es1688/es1688.c
index 1901c2bb6c3b..36320e7f2789 100644
--- a/sound/isa/es1688/es1688.c
+++ b/sound/isa/es1688/es1688.c
@@ -71,17 +71,17 @@ module_param_array(isapnp, bool, NULL, 0444);
71MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard."); 71MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
72#endif 72#endif
73MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard."); 73MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
74module_param_array(port, long, NULL, 0444); 74module_param_hw_array(port, long, ioport, NULL, 0444);
75MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver."); 75MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
76module_param_array(mpu_port, long, NULL, 0444); 76module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
77MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " CRD_NAME " driver."); 77MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " CRD_NAME " driver.");
78module_param_array(irq, int, NULL, 0444); 78module_param_hw_array(irq, int, irq, NULL, 0444);
79module_param_array(fm_port, long, NULL, 0444); 79module_param_hw_array(fm_port, long, ioport, NULL, 0444);
80MODULE_PARM_DESC(fm_port, "FM port # for ES1688 driver."); 80MODULE_PARM_DESC(fm_port, "FM port # for ES1688 driver.");
81MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver."); 81MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver.");
82module_param_array(mpu_irq, int, NULL, 0444); 82module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
83MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " CRD_NAME " driver."); 83MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " CRD_NAME " driver.");
84module_param_array(dma8, int, NULL, 0444); 84module_param_hw_array(dma8, int, dma, NULL, 0444);
85MODULE_PARM_DESC(dma8, "8-bit DMA # for " CRD_NAME " driver."); 85MODULE_PARM_DESC(dma8, "8-bit DMA # for " CRD_NAME " driver.");
86 86
87#ifdef CONFIG_PNP 87#ifdef CONFIG_PNP
diff --git a/sound/isa/es18xx.c b/sound/isa/es18xx.c
index 5094b62d8f77..0cabe2b8974f 100644
--- a/sound/isa/es18xx.c
+++ b/sound/isa/es18xx.c
@@ -1999,17 +1999,17 @@ MODULE_PARM_DESC(enable, "Enable ES18xx soundcard.");
1999module_param_array(isapnp, bool, NULL, 0444); 1999module_param_array(isapnp, bool, NULL, 0444);
2000MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard."); 2000MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
2001#endif 2001#endif
2002module_param_array(port, long, NULL, 0444); 2002module_param_hw_array(port, long, ioport, NULL, 0444);
2003MODULE_PARM_DESC(port, "Port # for ES18xx driver."); 2003MODULE_PARM_DESC(port, "Port # for ES18xx driver.");
2004module_param_array(mpu_port, long, NULL, 0444); 2004module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
2005MODULE_PARM_DESC(mpu_port, "MPU-401 port # for ES18xx driver."); 2005MODULE_PARM_DESC(mpu_port, "MPU-401 port # for ES18xx driver.");
2006module_param_array(fm_port, long, NULL, 0444); 2006module_param_hw_array(fm_port, long, ioport, NULL, 0444);
2007MODULE_PARM_DESC(fm_port, "FM port # for ES18xx driver."); 2007MODULE_PARM_DESC(fm_port, "FM port # for ES18xx driver.");
2008module_param_array(irq, int, NULL, 0444); 2008module_param_hw_array(irq, int, irq, NULL, 0444);
2009MODULE_PARM_DESC(irq, "IRQ # for ES18xx driver."); 2009MODULE_PARM_DESC(irq, "IRQ # for ES18xx driver.");
2010module_param_array(dma1, int, NULL, 0444); 2010module_param_hw_array(dma1, int, dma, NULL, 0444);
2011MODULE_PARM_DESC(dma1, "DMA 1 # for ES18xx driver."); 2011MODULE_PARM_DESC(dma1, "DMA 1 # for ES18xx driver.");
2012module_param_array(dma2, int, NULL, 0444); 2012module_param_hw_array(dma2, int, dma, NULL, 0444);
2013MODULE_PARM_DESC(dma2, "DMA 2 # for ES18xx driver."); 2013MODULE_PARM_DESC(dma2, "DMA 2 # for ES18xx driver.");
2014 2014
2015#ifdef CONFIG_PNP 2015#ifdef CONFIG_PNP
diff --git a/sound/isa/galaxy/galaxy.c b/sound/isa/galaxy/galaxy.c
index 379abe2cbeb2..b9994cc9f5fb 100644
--- a/sound/isa/galaxy/galaxy.c
+++ b/sound/isa/galaxy/galaxy.c
@@ -53,21 +53,21 @@ static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;
53static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA; 53static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;
54static int dma2[SNDRV_CARDS] = SNDRV_DEFAULT_DMA; 54static int dma2[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;
55 55
56module_param_array(port, long, NULL, 0444); 56module_param_hw_array(port, long, ioport, NULL, 0444);
57MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver."); 57MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
58module_param_array(wss_port, long, NULL, 0444); 58module_param_hw_array(wss_port, long, ioport, NULL, 0444);
59MODULE_PARM_DESC(wss_port, "WSS port # for " CRD_NAME " driver."); 59MODULE_PARM_DESC(wss_port, "WSS port # for " CRD_NAME " driver.");
60module_param_array(mpu_port, long, NULL, 0444); 60module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
61MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " CRD_NAME " driver."); 61MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " CRD_NAME " driver.");
62module_param_array(fm_port, long, NULL, 0444); 62module_param_hw_array(fm_port, long, ioport, NULL, 0444);
63MODULE_PARM_DESC(fm_port, "FM port # for " CRD_NAME " driver."); 63MODULE_PARM_DESC(fm_port, "FM port # for " CRD_NAME " driver.");
64module_param_array(irq, int, NULL, 0444); 64module_param_hw_array(irq, int, irq, NULL, 0444);
65MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver."); 65MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver.");
66module_param_array(mpu_irq, int, NULL, 0444); 66module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
67MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " CRD_NAME " driver."); 67MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " CRD_NAME " driver.");
68module_param_array(dma1, int, NULL, 0444); 68module_param_hw_array(dma1, int, dma, NULL, 0444);
69MODULE_PARM_DESC(dma1, "Playback DMA # for " CRD_NAME " driver."); 69MODULE_PARM_DESC(dma1, "Playback DMA # for " CRD_NAME " driver.");
70module_param_array(dma2, int, NULL, 0444); 70module_param_hw_array(dma2, int, dma, NULL, 0444);
71MODULE_PARM_DESC(dma2, "Capture DMA # for " CRD_NAME " driver."); 71MODULE_PARM_DESC(dma2, "Capture DMA # for " CRD_NAME " driver.");
72 72
73/* 73/*
diff --git a/sound/isa/gus/gusclassic.c b/sound/isa/gus/gusclassic.c
index c169be49ed71..92a997ab1229 100644
--- a/sound/isa/gus/gusclassic.c
+++ b/sound/isa/gus/gusclassic.c
@@ -58,13 +58,13 @@ module_param_array(id, charp, NULL, 0444);
58MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard."); 58MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard.");
59module_param_array(enable, bool, NULL, 0444); 59module_param_array(enable, bool, NULL, 0444);
60MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard."); 60MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
61module_param_array(port, long, NULL, 0444); 61module_param_hw_array(port, long, ioport, NULL, 0444);
62MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver."); 62MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
63module_param_array(irq, int, NULL, 0444); 63module_param_hw_array(irq, int, irq, NULL, 0444);
64MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver."); 64MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver.");
65module_param_array(dma1, int, NULL, 0444); 65module_param_hw_array(dma1, int, dma, NULL, 0444);
66MODULE_PARM_DESC(dma1, "DMA1 # for " CRD_NAME " driver."); 66MODULE_PARM_DESC(dma1, "DMA1 # for " CRD_NAME " driver.");
67module_param_array(dma2, int, NULL, 0444); 67module_param_hw_array(dma2, int, dma, NULL, 0444);
68MODULE_PARM_DESC(dma2, "DMA2 # for " CRD_NAME " driver."); 68MODULE_PARM_DESC(dma2, "DMA2 # for " CRD_NAME " driver.");
69module_param_array(joystick_dac, int, NULL, 0444); 69module_param_array(joystick_dac, int, NULL, 0444);
70MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for " CRD_NAME " driver."); 70MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for " CRD_NAME " driver.");
diff --git a/sound/isa/gus/gusextreme.c b/sound/isa/gus/gusextreme.c
index 77ac2fd723b4..beb52c0f70ea 100644
--- a/sound/isa/gus/gusextreme.c
+++ b/sound/isa/gus/gusextreme.c
@@ -66,21 +66,21 @@ module_param_array(id, charp, NULL, 0444);
66MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard."); 66MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard.");
67module_param_array(enable, bool, NULL, 0444); 67module_param_array(enable, bool, NULL, 0444);
68MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard."); 68MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
69module_param_array(port, long, NULL, 0444); 69module_param_hw_array(port, long, ioport, NULL, 0444);
70MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver."); 70MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
71module_param_array(gf1_port, long, NULL, 0444); 71module_param_hw_array(gf1_port, long, ioport, NULL, 0444);
72MODULE_PARM_DESC(gf1_port, "GF1 port # for " CRD_NAME " driver (optional)."); 72MODULE_PARM_DESC(gf1_port, "GF1 port # for " CRD_NAME " driver (optional).");
73module_param_array(mpu_port, long, NULL, 0444); 73module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
74MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " CRD_NAME " driver."); 74MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " CRD_NAME " driver.");
75module_param_array(irq, int, NULL, 0444); 75module_param_hw_array(irq, int, irq, NULL, 0444);
76MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver."); 76MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver.");
77module_param_array(mpu_irq, int, NULL, 0444); 77module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
78MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " CRD_NAME " driver."); 78MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " CRD_NAME " driver.");
79module_param_array(gf1_irq, int, NULL, 0444); 79module_param_hw_array(gf1_irq, int, irq, NULL, 0444);
80MODULE_PARM_DESC(gf1_irq, "GF1 IRQ # for " CRD_NAME " driver."); 80MODULE_PARM_DESC(gf1_irq, "GF1 IRQ # for " CRD_NAME " driver.");
81module_param_array(dma8, int, NULL, 0444); 81module_param_hw_array(dma8, int, dma, NULL, 0444);
82MODULE_PARM_DESC(dma8, "8-bit DMA # for " CRD_NAME " driver."); 82MODULE_PARM_DESC(dma8, "8-bit DMA # for " CRD_NAME " driver.");
83module_param_array(dma1, int, NULL, 0444); 83module_param_hw_array(dma1, int, dma, NULL, 0444);
84MODULE_PARM_DESC(dma1, "GF1 DMA # for " CRD_NAME " driver."); 84MODULE_PARM_DESC(dma1, "GF1 DMA # for " CRD_NAME " driver.");
85module_param_array(joystick_dac, int, NULL, 0444); 85module_param_array(joystick_dac, int, NULL, 0444);
86MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for " CRD_NAME " driver."); 86MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for " CRD_NAME " driver.");
diff --git a/sound/isa/gus/gusmax.c b/sound/isa/gus/gusmax.c
index dd88c9d33492..63309a453140 100644
--- a/sound/isa/gus/gusmax.c
+++ b/sound/isa/gus/gusmax.c
@@ -56,13 +56,13 @@ module_param_array(id, charp, NULL, 0444);
56MODULE_PARM_DESC(id, "ID string for GUS MAX soundcard."); 56MODULE_PARM_DESC(id, "ID string for GUS MAX soundcard.");
57module_param_array(enable, bool, NULL, 0444); 57module_param_array(enable, bool, NULL, 0444);
58MODULE_PARM_DESC(enable, "Enable GUS MAX soundcard."); 58MODULE_PARM_DESC(enable, "Enable GUS MAX soundcard.");
59module_param_array(port, long, NULL, 0444); 59module_param_hw_array(port, long, ioport, NULL, 0444);
60MODULE_PARM_DESC(port, "Port # for GUS MAX driver."); 60MODULE_PARM_DESC(port, "Port # for GUS MAX driver.");
61module_param_array(irq, int, NULL, 0444); 61module_param_hw_array(irq, int, irq, NULL, 0444);
62MODULE_PARM_DESC(irq, "IRQ # for GUS MAX driver."); 62MODULE_PARM_DESC(irq, "IRQ # for GUS MAX driver.");
63module_param_array(dma1, int, NULL, 0444); 63module_param_hw_array(dma1, int, dma, NULL, 0444);
64MODULE_PARM_DESC(dma1, "DMA1 # for GUS MAX driver."); 64MODULE_PARM_DESC(dma1, "DMA1 # for GUS MAX driver.");
65module_param_array(dma2, int, NULL, 0444); 65module_param_hw_array(dma2, int, dma, NULL, 0444);
66MODULE_PARM_DESC(dma2, "DMA2 # for GUS MAX driver."); 66MODULE_PARM_DESC(dma2, "DMA2 # for GUS MAX driver.");
67module_param_array(joystick_dac, int, NULL, 0444); 67module_param_array(joystick_dac, int, NULL, 0444);
68MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for GUS MAX driver."); 68MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for GUS MAX driver.");
diff --git a/sound/isa/gus/interwave.c b/sound/isa/gus/interwave.c
index 70d0040484c8..0687b7ef3e53 100644
--- a/sound/isa/gus/interwave.c
+++ b/sound/isa/gus/interwave.c
@@ -92,17 +92,17 @@ MODULE_PARM_DESC(enable, "Enable InterWave soundcard.");
92module_param_array(isapnp, bool, NULL, 0444); 92module_param_array(isapnp, bool, NULL, 0444);
93MODULE_PARM_DESC(isapnp, "ISA PnP detection for specified soundcard."); 93MODULE_PARM_DESC(isapnp, "ISA PnP detection for specified soundcard.");
94#endif 94#endif
95module_param_array(port, long, NULL, 0444); 95module_param_hw_array(port, long, ioport, NULL, 0444);
96MODULE_PARM_DESC(port, "Port # for InterWave driver."); 96MODULE_PARM_DESC(port, "Port # for InterWave driver.");
97#ifdef SNDRV_STB 97#ifdef SNDRV_STB
98module_param_array(port_tc, long, NULL, 0444); 98module_param_hw_array(port_tc, long, ioport, NULL, 0444);
99MODULE_PARM_DESC(port_tc, "Tone control (TEA6330T - i2c bus) port # for InterWave driver."); 99MODULE_PARM_DESC(port_tc, "Tone control (TEA6330T - i2c bus) port # for InterWave driver.");
100#endif 100#endif
101module_param_array(irq, int, NULL, 0444); 101module_param_hw_array(irq, int, irq, NULL, 0444);
102MODULE_PARM_DESC(irq, "IRQ # for InterWave driver."); 102MODULE_PARM_DESC(irq, "IRQ # for InterWave driver.");
103module_param_array(dma1, int, NULL, 0444); 103module_param_hw_array(dma1, int, dma, NULL, 0444);
104MODULE_PARM_DESC(dma1, "DMA1 # for InterWave driver."); 104MODULE_PARM_DESC(dma1, "DMA1 # for InterWave driver.");
105module_param_array(dma2, int, NULL, 0444); 105module_param_hw_array(dma2, int, dma, NULL, 0444);
106MODULE_PARM_DESC(dma2, "DMA2 # for InterWave driver."); 106MODULE_PARM_DESC(dma2, "DMA2 # for InterWave driver.");
107module_param_array(joystick_dac, int, NULL, 0444); 107module_param_array(joystick_dac, int, NULL, 0444);
108MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for InterWave driver."); 108MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for InterWave driver.");
diff --git a/sound/isa/msnd/msnd_pinnacle.c b/sound/isa/msnd/msnd_pinnacle.c
index 4c072666115d..ad4897337df5 100644
--- a/sound/isa/msnd/msnd_pinnacle.c
+++ b/sound/isa/msnd/msnd_pinnacle.c
@@ -800,22 +800,22 @@ MODULE_LICENSE("GPL");
800MODULE_FIRMWARE(INITCODEFILE); 800MODULE_FIRMWARE(INITCODEFILE);
801MODULE_FIRMWARE(PERMCODEFILE); 801MODULE_FIRMWARE(PERMCODEFILE);
802 802
803module_param_array(io, long, NULL, S_IRUGO); 803module_param_hw_array(io, long, ioport, NULL, S_IRUGO);
804MODULE_PARM_DESC(io, "IO port #"); 804MODULE_PARM_DESC(io, "IO port #");
805module_param_array(irq, int, NULL, S_IRUGO); 805module_param_hw_array(irq, int, irq, NULL, S_IRUGO);
806module_param_array(mem, long, NULL, S_IRUGO); 806module_param_hw_array(mem, long, iomem, NULL, S_IRUGO);
807module_param_array(write_ndelay, int, NULL, S_IRUGO); 807module_param_array(write_ndelay, int, NULL, S_IRUGO);
808module_param(calibrate_signal, int, S_IRUGO); 808module_param(calibrate_signal, int, S_IRUGO);
809#ifndef MSND_CLASSIC 809#ifndef MSND_CLASSIC
810module_param_array(digital, int, NULL, S_IRUGO); 810module_param_array(digital, int, NULL, S_IRUGO);
811module_param_array(cfg, long, NULL, S_IRUGO); 811module_param_hw_array(cfg, long, ioport, NULL, S_IRUGO);
812module_param_array(reset, int, 0, S_IRUGO); 812module_param_array(reset, int, 0, S_IRUGO);
813module_param_array(mpu_io, long, NULL, S_IRUGO); 813module_param_hw_array(mpu_io, long, ioport, NULL, S_IRUGO);
814module_param_array(mpu_irq, int, NULL, S_IRUGO); 814module_param_hw_array(mpu_irq, int, irq, NULL, S_IRUGO);
815module_param_array(ide_io0, long, NULL, S_IRUGO); 815module_param_hw_array(ide_io0, long, ioport, NULL, S_IRUGO);
816module_param_array(ide_io1, long, NULL, S_IRUGO); 816module_param_hw_array(ide_io1, long, ioport, NULL, S_IRUGO);
817module_param_array(ide_irq, int, NULL, S_IRUGO); 817module_param_hw_array(ide_irq, int, irq, NULL, S_IRUGO);
818module_param_array(joystick_io, long, NULL, S_IRUGO); 818module_param_hw_array(joystick_io, long, ioport, NULL, S_IRUGO);
819#endif 819#endif
820 820
821 821
diff --git a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c
index ae133633a420..4098e3e0353d 100644
--- a/sound/isa/opl3sa2.c
+++ b/sound/isa/opl3sa2.c
@@ -69,21 +69,21 @@ MODULE_PARM_DESC(enable, "Enable OPL3-SA soundcard.");
69module_param_array(isapnp, bool, NULL, 0444); 69module_param_array(isapnp, bool, NULL, 0444);
70MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard."); 70MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
71#endif 71#endif
72module_param_array(port, long, NULL, 0444); 72module_param_hw_array(port, long, ioport, NULL, 0444);
73MODULE_PARM_DESC(port, "Port # for OPL3-SA driver."); 73MODULE_PARM_DESC(port, "Port # for OPL3-SA driver.");
74module_param_array(sb_port, long, NULL, 0444); 74module_param_hw_array(sb_port, long, ioport, NULL, 0444);
75MODULE_PARM_DESC(sb_port, "SB port # for OPL3-SA driver."); 75MODULE_PARM_DESC(sb_port, "SB port # for OPL3-SA driver.");
76module_param_array(wss_port, long, NULL, 0444); 76module_param_hw_array(wss_port, long, ioport, NULL, 0444);
77MODULE_PARM_DESC(wss_port, "WSS port # for OPL3-SA driver."); 77MODULE_PARM_DESC(wss_port, "WSS port # for OPL3-SA driver.");
78module_param_array(fm_port, long, NULL, 0444); 78module_param_hw_array(fm_port, long, ioport, NULL, 0444);
79MODULE_PARM_DESC(fm_port, "FM port # for OPL3-SA driver."); 79MODULE_PARM_DESC(fm_port, "FM port # for OPL3-SA driver.");
80module_param_array(midi_port, long, NULL, 0444); 80module_param_hw_array(midi_port, long, ioport, NULL, 0444);
81MODULE_PARM_DESC(midi_port, "MIDI port # for OPL3-SA driver."); 81MODULE_PARM_DESC(midi_port, "MIDI port # for OPL3-SA driver.");
82module_param_array(irq, int, NULL, 0444); 82module_param_hw_array(irq, int, irq, NULL, 0444);
83MODULE_PARM_DESC(irq, "IRQ # for OPL3-SA driver."); 83MODULE_PARM_DESC(irq, "IRQ # for OPL3-SA driver.");
84module_param_array(dma1, int, NULL, 0444); 84module_param_hw_array(dma1, int, dma, NULL, 0444);
85MODULE_PARM_DESC(dma1, "DMA1 # for OPL3-SA driver."); 85MODULE_PARM_DESC(dma1, "DMA1 # for OPL3-SA driver.");
86module_param_array(dma2, int, NULL, 0444); 86module_param_hw_array(dma2, int, dma, NULL, 0444);
87MODULE_PARM_DESC(dma2, "DMA2 # for OPL3-SA driver."); 87MODULE_PARM_DESC(dma2, "DMA2 # for OPL3-SA driver.");
88module_param_array(opl3sa3_ymode, int, NULL, 0444); 88module_param_array(opl3sa3_ymode, int, NULL, 0444);
89MODULE_PARM_DESC(opl3sa3_ymode, "Speaker size selection for 3D Enhancement mode: Desktop/Large Notebook/Small Notebook/HiFi."); 89MODULE_PARM_DESC(opl3sa3_ymode, "Speaker size selection for 3D Enhancement mode: Desktop/Large Notebook/Small Notebook/HiFi.");
diff --git a/sound/isa/opti9xx/miro.c b/sound/isa/opti9xx/miro.c
index 3a9067db1a84..bcbff56f060d 100644
--- a/sound/isa/opti9xx/miro.c
+++ b/sound/isa/opti9xx/miro.c
@@ -69,19 +69,19 @@ module_param(index, int, 0444);
69MODULE_PARM_DESC(index, "Index value for miro soundcard."); 69MODULE_PARM_DESC(index, "Index value for miro soundcard.");
70module_param(id, charp, 0444); 70module_param(id, charp, 0444);
71MODULE_PARM_DESC(id, "ID string for miro soundcard."); 71MODULE_PARM_DESC(id, "ID string for miro soundcard.");
72module_param(port, long, 0444); 72module_param_hw(port, long, ioport, 0444);
73MODULE_PARM_DESC(port, "WSS port # for miro driver."); 73MODULE_PARM_DESC(port, "WSS port # for miro driver.");
74module_param(mpu_port, long, 0444); 74module_param_hw(mpu_port, long, ioport, 0444);
75MODULE_PARM_DESC(mpu_port, "MPU-401 port # for miro driver."); 75MODULE_PARM_DESC(mpu_port, "MPU-401 port # for miro driver.");
76module_param(fm_port, long, 0444); 76module_param_hw(fm_port, long, ioport, 0444);
77MODULE_PARM_DESC(fm_port, "FM Port # for miro driver."); 77MODULE_PARM_DESC(fm_port, "FM Port # for miro driver.");
78module_param(irq, int, 0444); 78module_param_hw(irq, int, irq, 0444);
79MODULE_PARM_DESC(irq, "WSS irq # for miro driver."); 79MODULE_PARM_DESC(irq, "WSS irq # for miro driver.");
80module_param(mpu_irq, int, 0444); 80module_param_hw(mpu_irq, int, irq, 0444);
81MODULE_PARM_DESC(mpu_irq, "MPU-401 irq # for miro driver."); 81MODULE_PARM_DESC(mpu_irq, "MPU-401 irq # for miro driver.");
82module_param(dma1, int, 0444); 82module_param_hw(dma1, int, dma, 0444);
83MODULE_PARM_DESC(dma1, "1st dma # for miro driver."); 83MODULE_PARM_DESC(dma1, "1st dma # for miro driver.");
84module_param(dma2, int, 0444); 84module_param_hw(dma2, int, dma, 0444);
85MODULE_PARM_DESC(dma2, "2nd dma # for miro driver."); 85MODULE_PARM_DESC(dma2, "2nd dma # for miro driver.");
86module_param(wss, int, 0444); 86module_param(wss, int, 0444);
87MODULE_PARM_DESC(wss, "wss mode"); 87MODULE_PARM_DESC(wss, "wss mode");
diff --git a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c
index 0a5266003786..ceddb392b1e3 100644
--- a/sound/isa/opti9xx/opti92x-ad1848.c
+++ b/sound/isa/opti9xx/opti92x-ad1848.c
@@ -88,20 +88,20 @@ MODULE_PARM_DESC(id, "ID string for opti9xx based soundcard.");
88module_param(isapnp, bool, 0444); 88module_param(isapnp, bool, 0444);
89MODULE_PARM_DESC(isapnp, "Enable ISA PnP detection for specified soundcard."); 89MODULE_PARM_DESC(isapnp, "Enable ISA PnP detection for specified soundcard.");
90#endif 90#endif
91module_param(port, long, 0444); 91module_param_hw(port, long, ioport, 0444);
92MODULE_PARM_DESC(port, "WSS port # for opti9xx driver."); 92MODULE_PARM_DESC(port, "WSS port # for opti9xx driver.");
93module_param(mpu_port, long, 0444); 93module_param_hw(mpu_port, long, ioport, 0444);
94MODULE_PARM_DESC(mpu_port, "MPU-401 port # for opti9xx driver."); 94MODULE_PARM_DESC(mpu_port, "MPU-401 port # for opti9xx driver.");
95module_param(fm_port, long, 0444); 95module_param_hw(fm_port, long, ioport, 0444);
96MODULE_PARM_DESC(fm_port, "FM port # for opti9xx driver."); 96MODULE_PARM_DESC(fm_port, "FM port # for opti9xx driver.");
97module_param(irq, int, 0444); 97module_param_hw(irq, int, irq, 0444);
98MODULE_PARM_DESC(irq, "WSS irq # for opti9xx driver."); 98MODULE_PARM_DESC(irq, "WSS irq # for opti9xx driver.");
99module_param(mpu_irq, int, 0444); 99module_param_hw(mpu_irq, int, irq, 0444);
100MODULE_PARM_DESC(mpu_irq, "MPU-401 irq # for opti9xx driver."); 100MODULE_PARM_DESC(mpu_irq, "MPU-401 irq # for opti9xx driver.");
101module_param(dma1, int, 0444); 101module_param_hw(dma1, int, dma, 0444);
102MODULE_PARM_DESC(dma1, "1st dma # for opti9xx driver."); 102MODULE_PARM_DESC(dma1, "1st dma # for opti9xx driver.");
103#if defined(CS4231) || defined(OPTi93X) 103#if defined(CS4231) || defined(OPTi93X)
104module_param(dma2, int, 0444); 104module_param_hw(dma2, int, dma, 0444);
105MODULE_PARM_DESC(dma2, "2nd dma # for opti9xx driver."); 105MODULE_PARM_DESC(dma2, "2nd dma # for opti9xx driver.");
106#endif /* CS4231 || OPTi93X */ 106#endif /* CS4231 || OPTi93X */
107 107
diff --git a/sound/isa/sb/jazz16.c b/sound/isa/sb/jazz16.c
index 4d909971eedb..bfa0055e1fd6 100644
--- a/sound/isa/sb/jazz16.c
+++ b/sound/isa/sb/jazz16.c
@@ -50,17 +50,17 @@ module_param_array(id, charp, NULL, 0444);
50MODULE_PARM_DESC(id, "ID string for Media Vision Jazz16 based soundcard."); 50MODULE_PARM_DESC(id, "ID string for Media Vision Jazz16 based soundcard.");
51module_param_array(enable, bool, NULL, 0444); 51module_param_array(enable, bool, NULL, 0444);
52MODULE_PARM_DESC(enable, "Enable Media Vision Jazz16 based soundcard."); 52MODULE_PARM_DESC(enable, "Enable Media Vision Jazz16 based soundcard.");
53module_param_array(port, long, NULL, 0444); 53module_param_hw_array(port, long, ioport, NULL, 0444);
54MODULE_PARM_DESC(port, "Port # for jazz16 driver."); 54MODULE_PARM_DESC(port, "Port # for jazz16 driver.");
55module_param_array(mpu_port, long, NULL, 0444); 55module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
56MODULE_PARM_DESC(mpu_port, "MPU-401 port # for jazz16 driver."); 56MODULE_PARM_DESC(mpu_port, "MPU-401 port # for jazz16 driver.");
57module_param_array(irq, int, NULL, 0444); 57module_param_hw_array(irq, int, irq, NULL, 0444);
58MODULE_PARM_DESC(irq, "IRQ # for jazz16 driver."); 58MODULE_PARM_DESC(irq, "IRQ # for jazz16 driver.");
59module_param_array(mpu_irq, int, NULL, 0444); 59module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
60MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for jazz16 driver."); 60MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for jazz16 driver.");
61module_param_array(dma8, int, NULL, 0444); 61module_param_hw_array(dma8, int, dma, NULL, 0444);
62MODULE_PARM_DESC(dma8, "DMA8 # for jazz16 driver."); 62MODULE_PARM_DESC(dma8, "DMA8 # for jazz16 driver.");
63module_param_array(dma16, int, NULL, 0444); 63module_param_hw_array(dma16, int, dma, NULL, 0444);
64MODULE_PARM_DESC(dma16, "DMA16 # for jazz16 driver."); 64MODULE_PARM_DESC(dma16, "DMA16 # for jazz16 driver.");
65 65
66#define SB_JAZZ16_WAKEUP 0xaf 66#define SB_JAZZ16_WAKEUP 0xaf
diff --git a/sound/isa/sb/sb16.c b/sound/isa/sb/sb16.c
index 4a7d7c89808f..3b2e4f405ff2 100644
--- a/sound/isa/sb/sb16.c
+++ b/sound/isa/sb/sb16.c
@@ -99,21 +99,21 @@ MODULE_PARM_DESC(enable, "Enable SoundBlaster 16 soundcard.");
99module_param_array(isapnp, bool, NULL, 0444); 99module_param_array(isapnp, bool, NULL, 0444);
100MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard."); 100MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
101#endif 101#endif
102module_param_array(port, long, NULL, 0444); 102module_param_hw_array(port, long, ioport, NULL, 0444);
103MODULE_PARM_DESC(port, "Port # for SB16 driver."); 103MODULE_PARM_DESC(port, "Port # for SB16 driver.");
104module_param_array(mpu_port, long, NULL, 0444); 104module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
105MODULE_PARM_DESC(mpu_port, "MPU-401 port # for SB16 driver."); 105MODULE_PARM_DESC(mpu_port, "MPU-401 port # for SB16 driver.");
106module_param_array(fm_port, long, NULL, 0444); 106module_param_hw_array(fm_port, long, ioport, NULL, 0444);
107MODULE_PARM_DESC(fm_port, "FM port # for SB16 PnP driver."); 107MODULE_PARM_DESC(fm_port, "FM port # for SB16 PnP driver.");
108#ifdef SNDRV_SBAWE_EMU8000 108#ifdef SNDRV_SBAWE_EMU8000
109module_param_array(awe_port, long, NULL, 0444); 109module_param_hw_array(awe_port, long, ioport, NULL, 0444);
110MODULE_PARM_DESC(awe_port, "AWE port # for SB16 PnP driver."); 110MODULE_PARM_DESC(awe_port, "AWE port # for SB16 PnP driver.");
111#endif 111#endif
112module_param_array(irq, int, NULL, 0444); 112module_param_hw_array(irq, int, irq, NULL, 0444);
113MODULE_PARM_DESC(irq, "IRQ # for SB16 driver."); 113MODULE_PARM_DESC(irq, "IRQ # for SB16 driver.");
114module_param_array(dma8, int, NULL, 0444); 114module_param_hw_array(dma8, int, dma, NULL, 0444);
115MODULE_PARM_DESC(dma8, "8-bit DMA # for SB16 driver."); 115MODULE_PARM_DESC(dma8, "8-bit DMA # for SB16 driver.");
116module_param_array(dma16, int, NULL, 0444); 116module_param_hw_array(dma16, int, dma, NULL, 0444);
117MODULE_PARM_DESC(dma16, "16-bit DMA # for SB16 driver."); 117MODULE_PARM_DESC(dma16, "16-bit DMA # for SB16 driver.");
118module_param_array(mic_agc, int, NULL, 0444); 118module_param_array(mic_agc, int, NULL, 0444);
119MODULE_PARM_DESC(mic_agc, "Mic Auto-Gain-Control switch."); 119MODULE_PARM_DESC(mic_agc, "Mic Auto-Gain-Control switch.");
diff --git a/sound/isa/sb/sb8.c b/sound/isa/sb/sb8.c
index ad42d2364199..d77dcba276b5 100644
--- a/sound/isa/sb/sb8.c
+++ b/sound/isa/sb/sb8.c
@@ -47,11 +47,11 @@ module_param_array(id, charp, NULL, 0444);
47MODULE_PARM_DESC(id, "ID string for Sound Blaster soundcard."); 47MODULE_PARM_DESC(id, "ID string for Sound Blaster soundcard.");
48module_param_array(enable, bool, NULL, 0444); 48module_param_array(enable, bool, NULL, 0444);
49MODULE_PARM_DESC(enable, "Enable Sound Blaster soundcard."); 49MODULE_PARM_DESC(enable, "Enable Sound Blaster soundcard.");
50module_param_array(port, long, NULL, 0444); 50module_param_hw_array(port, long, ioport, NULL, 0444);
51MODULE_PARM_DESC(port, "Port # for SB8 driver."); 51MODULE_PARM_DESC(port, "Port # for SB8 driver.");
52module_param_array(irq, int, NULL, 0444); 52module_param_hw_array(irq, int, irq, NULL, 0444);
53MODULE_PARM_DESC(irq, "IRQ # for SB8 driver."); 53MODULE_PARM_DESC(irq, "IRQ # for SB8 driver.");
54module_param_array(dma8, int, NULL, 0444); 54module_param_hw_array(dma8, int, dma, NULL, 0444);
55MODULE_PARM_DESC(dma8, "8-bit DMA # for SB8 driver."); 55MODULE_PARM_DESC(dma8, "8-bit DMA # for SB8 driver.");
56 56
57struct snd_sb8 { 57struct snd_sb8 {
diff --git a/sound/isa/sc6000.c b/sound/isa/sc6000.c
index b61a6633d8f2..c09d9b914efe 100644
--- a/sound/isa/sc6000.c
+++ b/sound/isa/sc6000.c
@@ -64,17 +64,17 @@ module_param_array(id, charp, NULL, 0444);
64MODULE_PARM_DESC(id, "ID string for sc-6000 based soundcard."); 64MODULE_PARM_DESC(id, "ID string for sc-6000 based soundcard.");
65module_param_array(enable, bool, NULL, 0444); 65module_param_array(enable, bool, NULL, 0444);
66MODULE_PARM_DESC(enable, "Enable sc-6000 based soundcard."); 66MODULE_PARM_DESC(enable, "Enable sc-6000 based soundcard.");
67module_param_array(port, long, NULL, 0444); 67module_param_hw_array(port, long, ioport, NULL, 0444);
68MODULE_PARM_DESC(port, "Port # for sc-6000 driver."); 68MODULE_PARM_DESC(port, "Port # for sc-6000 driver.");
69module_param_array(mss_port, long, NULL, 0444); 69module_param_hw_array(mss_port, long, ioport, NULL, 0444);
70MODULE_PARM_DESC(mss_port, "MSS Port # for sc-6000 driver."); 70MODULE_PARM_DESC(mss_port, "MSS Port # for sc-6000 driver.");
71module_param_array(mpu_port, long, NULL, 0444); 71module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
72MODULE_PARM_DESC(mpu_port, "MPU-401 port # for sc-6000 driver."); 72MODULE_PARM_DESC(mpu_port, "MPU-401 port # for sc-6000 driver.");
73module_param_array(irq, int, NULL, 0444); 73module_param_hw_array(irq, int, irq, NULL, 0444);
74MODULE_PARM_DESC(irq, "IRQ # for sc-6000 driver."); 74MODULE_PARM_DESC(irq, "IRQ # for sc-6000 driver.");
75module_param_array(mpu_irq, int, NULL, 0444); 75module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
76MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for sc-6000 driver."); 76MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for sc-6000 driver.");
77module_param_array(dma, int, NULL, 0444); 77module_param_hw_array(dma, int, dma, NULL, 0444);
78MODULE_PARM_DESC(dma, "DMA # for sc-6000 driver."); 78MODULE_PARM_DESC(dma, "DMA # for sc-6000 driver.");
79module_param_array(joystick, bool, NULL, 0444); 79module_param_array(joystick, bool, NULL, 0444);
80MODULE_PARM_DESC(joystick, "Enable gameport."); 80MODULE_PARM_DESC(joystick, "Enable gameport.");
diff --git a/sound/isa/sscape.c b/sound/isa/sscape.c
index fdcfa29e2205..54f5758a1bb3 100644
--- a/sound/isa/sscape.c
+++ b/sound/isa/sscape.c
@@ -63,22 +63,22 @@ MODULE_PARM_DESC(index, "Index number for SoundScape soundcard");
63module_param_array(id, charp, NULL, 0444); 63module_param_array(id, charp, NULL, 0444);
64MODULE_PARM_DESC(id, "Description for SoundScape card"); 64MODULE_PARM_DESC(id, "Description for SoundScape card");
65 65
66module_param_array(port, long, NULL, 0444); 66module_param_hw_array(port, long, ioport, NULL, 0444);
67MODULE_PARM_DESC(port, "Port # for SoundScape driver."); 67MODULE_PARM_DESC(port, "Port # for SoundScape driver.");
68 68
69module_param_array(wss_port, long, NULL, 0444); 69module_param_hw_array(wss_port, long, ioport, NULL, 0444);
70MODULE_PARM_DESC(wss_port, "WSS Port # for SoundScape driver."); 70MODULE_PARM_DESC(wss_port, "WSS Port # for SoundScape driver.");
71 71
72module_param_array(irq, int, NULL, 0444); 72module_param_hw_array(irq, int, irq, NULL, 0444);
73MODULE_PARM_DESC(irq, "IRQ # for SoundScape driver."); 73MODULE_PARM_DESC(irq, "IRQ # for SoundScape driver.");
74 74
75module_param_array(mpu_irq, int, NULL, 0444); 75module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
76MODULE_PARM_DESC(mpu_irq, "MPU401 IRQ # for SoundScape driver."); 76MODULE_PARM_DESC(mpu_irq, "MPU401 IRQ # for SoundScape driver.");
77 77
78module_param_array(dma, int, NULL, 0444); 78module_param_hw_array(dma, int, dma, NULL, 0444);
79MODULE_PARM_DESC(dma, "DMA # for SoundScape driver."); 79MODULE_PARM_DESC(dma, "DMA # for SoundScape driver.");
80 80
81module_param_array(dma2, int, NULL, 0444); 81module_param_hw_array(dma2, int, dma, NULL, 0444);
82MODULE_PARM_DESC(dma2, "DMA2 # for SoundScape driver."); 82MODULE_PARM_DESC(dma2, "DMA2 # for SoundScape driver.");
83 83
84module_param_array(joystick, bool, NULL, 0444); 84module_param_array(joystick, bool, NULL, 0444);
diff --git a/sound/isa/wavefront/wavefront.c b/sound/isa/wavefront/wavefront.c
index a0987a57c8a9..da4e9a85f0af 100644
--- a/sound/isa/wavefront/wavefront.c
+++ b/sound/isa/wavefront/wavefront.c
@@ -63,23 +63,23 @@ MODULE_PARM_DESC(enable, "Enable WaveFront soundcard.");
63module_param_array(isapnp, bool, NULL, 0444); 63module_param_array(isapnp, bool, NULL, 0444);
64MODULE_PARM_DESC(isapnp, "ISA PnP detection for WaveFront soundcards."); 64MODULE_PARM_DESC(isapnp, "ISA PnP detection for WaveFront soundcards.");
65#endif 65#endif
66module_param_array(cs4232_pcm_port, long, NULL, 0444); 66module_param_hw_array(cs4232_pcm_port, long, ioport, NULL, 0444);
67MODULE_PARM_DESC(cs4232_pcm_port, "Port # for CS4232 PCM interface."); 67MODULE_PARM_DESC(cs4232_pcm_port, "Port # for CS4232 PCM interface.");
68module_param_array(cs4232_pcm_irq, int, NULL, 0444); 68module_param_hw_array(cs4232_pcm_irq, int, irq, NULL, 0444);
69MODULE_PARM_DESC(cs4232_pcm_irq, "IRQ # for CS4232 PCM interface."); 69MODULE_PARM_DESC(cs4232_pcm_irq, "IRQ # for CS4232 PCM interface.");
70module_param_array(dma1, int, NULL, 0444); 70module_param_hw_array(dma1, int, dma, NULL, 0444);
71MODULE_PARM_DESC(dma1, "DMA1 # for CS4232 PCM interface."); 71MODULE_PARM_DESC(dma1, "DMA1 # for CS4232 PCM interface.");
72module_param_array(dma2, int, NULL, 0444); 72module_param_hw_array(dma2, int, dma, NULL, 0444);
73MODULE_PARM_DESC(dma2, "DMA2 # for CS4232 PCM interface."); 73MODULE_PARM_DESC(dma2, "DMA2 # for CS4232 PCM interface.");
74module_param_array(cs4232_mpu_port, long, NULL, 0444); 74module_param_hw_array(cs4232_mpu_port, long, ioport, NULL, 0444);
75MODULE_PARM_DESC(cs4232_mpu_port, "port # for CS4232 MPU-401 interface."); 75MODULE_PARM_DESC(cs4232_mpu_port, "port # for CS4232 MPU-401 interface.");
76module_param_array(cs4232_mpu_irq, int, NULL, 0444); 76module_param_hw_array(cs4232_mpu_irq, int, irq, NULL, 0444);
77MODULE_PARM_DESC(cs4232_mpu_irq, "IRQ # for CS4232 MPU-401 interface."); 77MODULE_PARM_DESC(cs4232_mpu_irq, "IRQ # for CS4232 MPU-401 interface.");
78module_param_array(ics2115_irq, int, NULL, 0444); 78module_param_hw_array(ics2115_irq, int, irq, NULL, 0444);
79MODULE_PARM_DESC(ics2115_irq, "IRQ # for ICS2115."); 79MODULE_PARM_DESC(ics2115_irq, "IRQ # for ICS2115.");
80module_param_array(ics2115_port, long, NULL, 0444); 80module_param_hw_array(ics2115_port, long, ioport, NULL, 0444);
81MODULE_PARM_DESC(ics2115_port, "Port # for ICS2115."); 81MODULE_PARM_DESC(ics2115_port, "Port # for ICS2115.");
82module_param_array(fm_port, long, NULL, 0444); 82module_param_hw_array(fm_port, long, ioport, NULL, 0444);
83MODULE_PARM_DESC(fm_port, "FM port #."); 83MODULE_PARM_DESC(fm_port, "FM port #.");
84module_param_array(use_cs4232_midi, bool, NULL, 0444); 84module_param_array(use_cs4232_midi, bool, NULL, 0444);
85MODULE_PARM_DESC(use_cs4232_midi, "Use CS4232 MPU-401 interface (inaccessibly located inside your computer)"); 85MODULE_PARM_DESC(use_cs4232_midi, "Use CS4232 MPU-401 interface (inaccessibly located inside your computer)");
diff --git a/sound/oss/ad1848.c b/sound/oss/ad1848.c
index f6156d8169d0..2421f59cf279 100644
--- a/sound/oss/ad1848.c
+++ b/sound/oss/ad1848.c
@@ -2805,10 +2805,10 @@ static int __initdata dma = -1;
2805static int __initdata dma2 = -1; 2805static int __initdata dma2 = -1;
2806static int __initdata type = 0; 2806static int __initdata type = 0;
2807 2807
2808module_param(io, int, 0); /* I/O for a raw AD1848 card */ 2808module_param_hw(io, int, ioport, 0); /* I/O for a raw AD1848 card */
2809module_param(irq, int, 0); /* IRQ to use */ 2809module_param_hw(irq, int, irq, 0); /* IRQ to use */
2810module_param(dma, int, 0); /* First DMA channel */ 2810module_param_hw(dma, int, dma, 0); /* First DMA channel */
2811module_param(dma2, int, 0); /* Second DMA channel */ 2811module_param_hw(dma2, int, dma, 0); /* Second DMA channel */
2812module_param(type, int, 0); /* Card type */ 2812module_param(type, int, 0); /* Card type */
2813module_param(deskpro_xl, bool, 0); /* Special magic for Deskpro XL boxen */ 2813module_param(deskpro_xl, bool, 0); /* Special magic for Deskpro XL boxen */
2814module_param(deskpro_m, bool, 0); /* Special magic for Deskpro M box */ 2814module_param(deskpro_m, bool, 0); /* Special magic for Deskpro M box */
diff --git a/sound/oss/aedsp16.c b/sound/oss/aedsp16.c
index bb477d5c8528..f058ed6bdb69 100644
--- a/sound/oss/aedsp16.c
+++ b/sound/oss/aedsp16.c
@@ -1303,17 +1303,17 @@ static int __initdata mpu_irq = -1;
1303static int __initdata mss_base = -1; 1303static int __initdata mss_base = -1;
1304static int __initdata mpu_base = -1; 1304static int __initdata mpu_base = -1;
1305 1305
1306module_param(io, int, 0); 1306module_param_hw(io, int, ioport, 0);
1307MODULE_PARM_DESC(io, "I/O base address (0x220 0x240)"); 1307MODULE_PARM_DESC(io, "I/O base address (0x220 0x240)");
1308module_param(irq, int, 0); 1308module_param_hw(irq, int, irq, 0);
1309MODULE_PARM_DESC(irq, "IRQ line (5 7 9 10 11)"); 1309MODULE_PARM_DESC(irq, "IRQ line (5 7 9 10 11)");
1310module_param(dma, int, 0); 1310module_param_hw(dma, int, dma, 0);
1311MODULE_PARM_DESC(dma, "dma line (0 1 3)"); 1311MODULE_PARM_DESC(dma, "dma line (0 1 3)");
1312module_param(mpu_irq, int, 0); 1312module_param_hw(mpu_irq, int, irq, 0);
1313MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ line (5 7 9 10 0)"); 1313MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ line (5 7 9 10 0)");
1314module_param(mss_base, int, 0); 1314module_param_hw(mss_base, int, ioport, 0);
1315MODULE_PARM_DESC(mss_base, "MSS emulation I/O base address (0x530 0xE80)"); 1315MODULE_PARM_DESC(mss_base, "MSS emulation I/O base address (0x530 0xE80)");
1316module_param(mpu_base, int, 0); 1316module_param_hw(mpu_base, int, ioport, 0);
1317MODULE_PARM_DESC(mpu_base,"MPU-401 I/O base address (0x300 0x310 0x320 0x330)"); 1317MODULE_PARM_DESC(mpu_base,"MPU-401 I/O base address (0x300 0x310 0x320 0x330)");
1318MODULE_AUTHOR("Riccardo Facchetti <fizban@tin.it>"); 1318MODULE_AUTHOR("Riccardo Facchetti <fizban@tin.it>");
1319MODULE_DESCRIPTION("Audio Excel DSP 16 Driver Version " VERSION); 1319MODULE_DESCRIPTION("Audio Excel DSP 16 Driver Version " VERSION);
diff --git a/sound/oss/mpu401.c b/sound/oss/mpu401.c
index 862735005b43..20e8fa46f647 100644
--- a/sound/oss/mpu401.c
+++ b/sound/oss/mpu401.c
@@ -1748,8 +1748,8 @@ static struct address_info cfg;
1748static int io = -1; 1748static int io = -1;
1749static int irq = -1; 1749static int irq = -1;
1750 1750
1751module_param(irq, int, 0); 1751module_param_hw(irq, int, irq, 0);
1752module_param(io, int, 0); 1752module_param_hw(io, int, ioport, 0);
1753 1753
1754static int __init init_mpu401(void) 1754static int __init init_mpu401(void)
1755{ 1755{
diff --git a/sound/oss/msnd_pinnacle.c b/sound/oss/msnd_pinnacle.c
index f34ec01d2239..d2abc2cf3213 100644
--- a/sound/oss/msnd_pinnacle.c
+++ b/sound/oss/msnd_pinnacle.c
@@ -1727,22 +1727,22 @@ static int
1727calibrate_signal __initdata = CONFIG_MSND_CALSIGNAL; 1727calibrate_signal __initdata = CONFIG_MSND_CALSIGNAL;
1728#endif /* MODULE */ 1728#endif /* MODULE */
1729 1729
1730module_param (io, int, 0); 1730module_param_hw (io, int, ioport, 0);
1731module_param (irq, int, 0); 1731module_param_hw (irq, int, irq, 0);
1732module_param (mem, int, 0); 1732module_param_hw (mem, int, iomem, 0);
1733module_param (write_ndelay, int, 0); 1733module_param (write_ndelay, int, 0);
1734module_param (fifosize, int, 0); 1734module_param (fifosize, int, 0);
1735module_param (calibrate_signal, int, 0); 1735module_param (calibrate_signal, int, 0);
1736#ifndef MSND_CLASSIC 1736#ifndef MSND_CLASSIC
1737module_param (digital, bool, 0); 1737module_param (digital, bool, 0);
1738module_param (cfg, int, 0); 1738module_param_hw (cfg, int, ioport, 0);
1739module_param (reset, int, 0); 1739module_param (reset, int, 0);
1740module_param (mpu_io, int, 0); 1740module_param_hw (mpu_io, int, ioport, 0);
1741module_param (mpu_irq, int, 0); 1741module_param_hw (mpu_irq, int, irq, 0);
1742module_param (ide_io0, int, 0); 1742module_param_hw (ide_io0, int, ioport, 0);
1743module_param (ide_io1, int, 0); 1743module_param_hw (ide_io1, int, ioport, 0);
1744module_param (ide_irq, int, 0); 1744module_param_hw (ide_irq, int, irq, 0);
1745module_param (joystick_io, int, 0); 1745module_param_hw (joystick_io, int, ioport, 0);
1746#endif 1746#endif
1747 1747
1748static int __init msnd_init(void) 1748static int __init msnd_init(void)
diff --git a/sound/oss/opl3.c b/sound/oss/opl3.c
index b6d19adf8f41..f0f5b5be6314 100644
--- a/sound/oss/opl3.c
+++ b/sound/oss/opl3.c
@@ -1200,7 +1200,7 @@ static int me;
1200 1200
1201static int io = -1; 1201static int io = -1;
1202 1202
1203module_param(io, int, 0); 1203module_param_hw(io, int, ioport, 0);
1204 1204
1205static int __init init_opl3 (void) 1205static int __init init_opl3 (void)
1206{ 1206{
diff --git a/sound/oss/pas2_card.c b/sound/oss/pas2_card.c
index b07954a79536..769fca692d2a 100644
--- a/sound/oss/pas2_card.c
+++ b/sound/oss/pas2_card.c
@@ -383,15 +383,15 @@ static int __initdata sb_irq = -1;
383static int __initdata sb_dma = -1; 383static int __initdata sb_dma = -1;
384static int __initdata sb_dma16 = -1; 384static int __initdata sb_dma16 = -1;
385 385
386module_param(io, int, 0); 386module_param_hw(io, int, ioport, 0);
387module_param(irq, int, 0); 387module_param_hw(irq, int, irq, 0);
388module_param(dma, int, 0); 388module_param_hw(dma, int, dma, 0);
389module_param(dma16, int, 0); 389module_param_hw(dma16, int, dma, 0);
390 390
391module_param(sb_io, int, 0); 391module_param_hw(sb_io, int, ioport, 0);
392module_param(sb_irq, int, 0); 392module_param_hw(sb_irq, int, irq, 0);
393module_param(sb_dma, int, 0); 393module_param_hw(sb_dma, int, dma, 0);
394module_param(sb_dma16, int, 0); 394module_param_hw(sb_dma16, int, dma, 0);
395 395
396module_param(joystick, bool, 0); 396module_param(joystick, bool, 0);
397module_param(symphony, bool, 0); 397module_param(symphony, bool, 0);
diff --git a/sound/oss/pss.c b/sound/oss/pss.c
index 81314f9e2ccb..33c3a442e162 100644
--- a/sound/oss/pss.c
+++ b/sound/oss/pss.c
@@ -1139,19 +1139,19 @@ static bool pss_no_sound = 0; /* Just configure non-sound components */
1139static bool pss_keep_settings = 1; /* Keep hardware settings at module exit */ 1139static bool pss_keep_settings = 1; /* Keep hardware settings at module exit */
1140static char *pss_firmware = "/etc/sound/pss_synth"; 1140static char *pss_firmware = "/etc/sound/pss_synth";
1141 1141
1142module_param(pss_io, int, 0); 1142module_param_hw(pss_io, int, ioport, 0);
1143MODULE_PARM_DESC(pss_io, "Set i/o base of PSS card (probably 0x220 or 0x240)"); 1143MODULE_PARM_DESC(pss_io, "Set i/o base of PSS card (probably 0x220 or 0x240)");
1144module_param(mss_io, int, 0); 1144module_param_hw(mss_io, int, ioport, 0);
1145MODULE_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)"); 1145MODULE_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)");
1146module_param(mss_irq, int, 0); 1146module_param_hw(mss_irq, int, irq, 0);
1147MODULE_PARM_DESC(mss_irq, "Set WSS (audio) IRQ (3, 5, 7, 9, 10, 11, 12)"); 1147MODULE_PARM_DESC(mss_irq, "Set WSS (audio) IRQ (3, 5, 7, 9, 10, 11, 12)");
1148module_param(mss_dma, int, 0); 1148module_param_hw(mss_dma, int, dma, 0);
1149MODULE_PARM_DESC(mss_dma, "Set WSS (audio) DMA (0, 1, 3)"); 1149MODULE_PARM_DESC(mss_dma, "Set WSS (audio) DMA (0, 1, 3)");
1150module_param(mpu_io, int, 0); 1150module_param_hw(mpu_io, int, ioport, 0);
1151MODULE_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)"); 1151MODULE_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)");
1152module_param(mpu_irq, int, 0); 1152module_param_hw(mpu_irq, int, irq, 0);
1153MODULE_PARM_DESC(mpu_irq, "Set MIDI IRQ (3, 5, 7, 9, 10, 11, 12)"); 1153MODULE_PARM_DESC(mpu_irq, "Set MIDI IRQ (3, 5, 7, 9, 10, 11, 12)");
1154module_param(pss_cdrom_port, int, 0); 1154module_param_hw(pss_cdrom_port, int, ioport, 0);
1155MODULE_PARM_DESC(pss_cdrom_port, "Set the PSS CDROM port i/o base (0x340 or other)"); 1155MODULE_PARM_DESC(pss_cdrom_port, "Set the PSS CDROM port i/o base (0x340 or other)");
1156module_param(pss_enable_joystick, bool, 0); 1156module_param(pss_enable_joystick, bool, 0);
1157MODULE_PARM_DESC(pss_enable_joystick, "Enables the PSS joystick port (1 to enable, 0 to disable)"); 1157MODULE_PARM_DESC(pss_enable_joystick, "Enables the PSS joystick port (1 to enable, 0 to disable)");
diff --git a/sound/oss/sb_card.c b/sound/oss/sb_card.c
index fb5d7250de38..2a92cfe6cfe9 100644
--- a/sound/oss/sb_card.c
+++ b/sound/oss/sb_card.c
@@ -61,15 +61,15 @@ static int __initdata uart401 = 0;
61static int __initdata pnp = 0; 61static int __initdata pnp = 0;
62#endif 62#endif
63 63
64module_param(io, int, 000); 64module_param_hw(io, int, ioport, 000);
65MODULE_PARM_DESC(io, "Soundblaster i/o base address (0x220,0x240,0x260,0x280)"); 65MODULE_PARM_DESC(io, "Soundblaster i/o base address (0x220,0x240,0x260,0x280)");
66module_param(irq, int, 000); 66module_param_hw(irq, int, irq, 000);
67MODULE_PARM_DESC(irq, "IRQ (5,7,9,10)"); 67MODULE_PARM_DESC(irq, "IRQ (5,7,9,10)");
68module_param(dma, int, 000); 68module_param_hw(dma, int, dma, 000);
69MODULE_PARM_DESC(dma, "8-bit DMA channel (0,1,3)"); 69MODULE_PARM_DESC(dma, "8-bit DMA channel (0,1,3)");
70module_param(dma16, int, 000); 70module_param_hw(dma16, int, dma, 000);
71MODULE_PARM_DESC(dma16, "16-bit DMA channel (5,6,7)"); 71MODULE_PARM_DESC(dma16, "16-bit DMA channel (5,6,7)");
72module_param(mpu_io, int, 000); 72module_param_hw(mpu_io, int, ioport, 000);
73MODULE_PARM_DESC(mpu_io, "MPU base address"); 73MODULE_PARM_DESC(mpu_io, "MPU base address");
74module_param(type, int, 000); 74module_param(type, int, 000);
75MODULE_PARM_DESC(type, "You can set this to specific card type (doesn't " \ 75MODULE_PARM_DESC(type, "You can set this to specific card type (doesn't " \
diff --git a/sound/oss/trix.c b/sound/oss/trix.c
index 3c494dc93b93..a57bc635d758 100644
--- a/sound/oss/trix.c
+++ b/sound/oss/trix.c
@@ -413,15 +413,15 @@ static int __initdata sb_irq = -1;
413static int __initdata mpu_io = -1; 413static int __initdata mpu_io = -1;
414static int __initdata mpu_irq = -1; 414static int __initdata mpu_irq = -1;
415 415
416module_param(io, int, 0); 416module_param_hw(io, int, ioport, 0);
417module_param(irq, int, 0); 417module_param_hw(irq, int, irq, 0);
418module_param(dma, int, 0); 418module_param_hw(dma, int, dma, 0);
419module_param(dma2, int, 0); 419module_param_hw(dma2, int, dma, 0);
420module_param(sb_io, int, 0); 420module_param_hw(sb_io, int, ioport, 0);
421module_param(sb_dma, int, 0); 421module_param_hw(sb_dma, int, dma, 0);
422module_param(sb_irq, int, 0); 422module_param_hw(sb_irq, int, irq, 0);
423module_param(mpu_io, int, 0); 423module_param_hw(mpu_io, int, ioport, 0);
424module_param(mpu_irq, int, 0); 424module_param_hw(mpu_irq, int, irq, 0);
425module_param(joystick, bool, 0); 425module_param(joystick, bool, 0);
426 426
427static int __init init_trix(void) 427static int __init init_trix(void)
diff --git a/sound/oss/uart401.c b/sound/oss/uart401.c
index dae4d4344407..83dcc85b8688 100644
--- a/sound/oss/uart401.c
+++ b/sound/oss/uart401.c
@@ -429,8 +429,8 @@ static struct address_info cfg_mpu;
429static int io = -1; 429static int io = -1;
430static int irq = -1; 430static int irq = -1;
431 431
432module_param(io, int, 0444); 432module_param_hw(io, int, ioport, 0444);
433module_param(irq, int, 0444); 433module_param_hw(irq, int, irq, 0444);
434 434
435 435
436static int __init init_uart401(void) 436static int __init init_uart401(void)
diff --git a/sound/oss/uart6850.c b/sound/oss/uart6850.c
index 1079133dd6ab..eda32d7eddbd 100644
--- a/sound/oss/uart6850.c
+++ b/sound/oss/uart6850.c
@@ -315,8 +315,8 @@ static struct address_info cfg_mpu;
315static int __initdata io = -1; 315static int __initdata io = -1;
316static int __initdata irq = -1; 316static int __initdata irq = -1;
317 317
318module_param(io, int, 0); 318module_param_hw(io, int, ioport, 0);
319module_param(irq, int, 0); 319module_param_hw(irq, int, irq, 0);
320 320
321static int __init init_uart6850(void) 321static int __init init_uart6850(void)
322{ 322{
diff --git a/sound/oss/waveartist.c b/sound/oss/waveartist.c
index 0b8d0de87273..4f0c3a232e41 100644
--- a/sound/oss/waveartist.c
+++ b/sound/oss/waveartist.c
@@ -2036,8 +2036,8 @@ __setup("waveartist=", setup_waveartist);
2036#endif 2036#endif
2037 2037
2038MODULE_DESCRIPTION("Rockwell WaveArtist RWA-010 sound driver"); 2038MODULE_DESCRIPTION("Rockwell WaveArtist RWA-010 sound driver");
2039module_param(io, int, 0); /* IO base */ 2039module_param_hw(io, int, ioport, 0); /* IO base */
2040module_param(irq, int, 0); /* IRQ */ 2040module_param_hw(irq, int, irq, 0); /* IRQ */
2041module_param(dma, int, 0); /* DMA */ 2041module_param_hw(dma, int, dma, 0); /* DMA */
2042module_param(dma2, int, 0); /* DMA2 */ 2042module_param_hw(dma2, int, dma, 0); /* DMA2 */
2043MODULE_LICENSE("GPL"); 2043MODULE_LICENSE("GPL");
diff --git a/sound/pci/als4000.c b/sound/pci/als4000.c
index 92bc06d01288..7844a75d8ed9 100644
--- a/sound/pci/als4000.c
+++ b/sound/pci/als4000.c
@@ -102,7 +102,7 @@ MODULE_PARM_DESC(id, "ID string for ALS4000 soundcard.");
102module_param_array(enable, bool, NULL, 0444); 102module_param_array(enable, bool, NULL, 0444);
103MODULE_PARM_DESC(enable, "Enable ALS4000 soundcard."); 103MODULE_PARM_DESC(enable, "Enable ALS4000 soundcard.");
104#ifdef SUPPORT_JOYSTICK 104#ifdef SUPPORT_JOYSTICK
105module_param_array(joystick_port, int, NULL, 0444); 105module_param_hw_array(joystick_port, int, ioport, NULL, 0444);
106MODULE_PARM_DESC(joystick_port, "Joystick port address for ALS4000 soundcard. (0 = disabled)"); 106MODULE_PARM_DESC(joystick_port, "Joystick port address for ALS4000 soundcard. (0 = disabled)");
107#endif 107#endif
108 108
diff --git a/sound/pci/cmipci.c b/sound/pci/cmipci.c
index 227c9d3802b8..745a0a3743b4 100644
--- a/sound/pci/cmipci.c
+++ b/sound/pci/cmipci.c
@@ -68,14 +68,14 @@ module_param_array(id, charp, NULL, 0444);
68MODULE_PARM_DESC(id, "ID string for C-Media PCI soundcard."); 68MODULE_PARM_DESC(id, "ID string for C-Media PCI soundcard.");
69module_param_array(enable, bool, NULL, 0444); 69module_param_array(enable, bool, NULL, 0444);
70MODULE_PARM_DESC(enable, "Enable C-Media PCI soundcard."); 70MODULE_PARM_DESC(enable, "Enable C-Media PCI soundcard.");
71module_param_array(mpu_port, long, NULL, 0444); 71module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
72MODULE_PARM_DESC(mpu_port, "MPU-401 port."); 72MODULE_PARM_DESC(mpu_port, "MPU-401 port.");
73module_param_array(fm_port, long, NULL, 0444); 73module_param_hw_array(fm_port, long, ioport, NULL, 0444);
74MODULE_PARM_DESC(fm_port, "FM port."); 74MODULE_PARM_DESC(fm_port, "FM port.");
75module_param_array(soft_ac3, bool, NULL, 0444); 75module_param_array(soft_ac3, bool, NULL, 0444);
76MODULE_PARM_DESC(soft_ac3, "Software-conversion of raw SPDIF packets (model 033 only)."); 76MODULE_PARM_DESC(soft_ac3, "Software-conversion of raw SPDIF packets (model 033 only).");
77#ifdef SUPPORT_JOYSTICK 77#ifdef SUPPORT_JOYSTICK
78module_param_array(joystick_port, int, NULL, 0444); 78module_param_hw_array(joystick_port, int, ioport, NULL, 0444);
79MODULE_PARM_DESC(joystick_port, "Joystick port address."); 79MODULE_PARM_DESC(joystick_port, "Joystick port address.");
80#endif 80#endif
81 81
diff --git a/sound/pci/ens1370.c b/sound/pci/ens1370.c
index 5d10349d11ce..09a63ef41ef2 100644
--- a/sound/pci/ens1370.c
+++ b/sound/pci/ens1370.c
@@ -106,7 +106,7 @@ module_param_array(enable, bool, NULL, 0444);
106MODULE_PARM_DESC(enable, "Enable Ensoniq AudioPCI soundcard."); 106MODULE_PARM_DESC(enable, "Enable Ensoniq AudioPCI soundcard.");
107#ifdef SUPPORT_JOYSTICK 107#ifdef SUPPORT_JOYSTICK
108#ifdef CHIP1371 108#ifdef CHIP1371
109module_param_array(joystick_port, int, NULL, 0444); 109module_param_hw_array(joystick_port, int, ioport, NULL, 0444);
110MODULE_PARM_DESC(joystick_port, "Joystick port address."); 110MODULE_PARM_DESC(joystick_port, "Joystick port address.");
111#else 111#else
112module_param_array(joystick, bool, NULL, 0444); 112module_param_array(joystick, bool, NULL, 0444);
diff --git a/sound/pci/riptide/riptide.c b/sound/pci/riptide/riptide.c
index 19c9df6b0f3d..f067c76d77f8 100644
--- a/sound/pci/riptide/riptide.c
+++ b/sound/pci/riptide/riptide.c
@@ -137,12 +137,12 @@ MODULE_PARM_DESC(id, "ID string for Riptide soundcard.");
137module_param_array(enable, bool, NULL, 0444); 137module_param_array(enable, bool, NULL, 0444);
138MODULE_PARM_DESC(enable, "Enable Riptide soundcard."); 138MODULE_PARM_DESC(enable, "Enable Riptide soundcard.");
139#ifdef SUPPORT_JOYSTICK 139#ifdef SUPPORT_JOYSTICK
140module_param_array(joystick_port, int, NULL, 0444); 140module_param_hw_array(joystick_port, int, ioport, NULL, 0444);
141MODULE_PARM_DESC(joystick_port, "Joystick port # for Riptide soundcard."); 141MODULE_PARM_DESC(joystick_port, "Joystick port # for Riptide soundcard.");
142#endif 142#endif
143module_param_array(mpu_port, int, NULL, 0444); 143module_param_hw_array(mpu_port, int, ioport, NULL, 0444);
144MODULE_PARM_DESC(mpu_port, "MPU401 port # for Riptide driver."); 144MODULE_PARM_DESC(mpu_port, "MPU401 port # for Riptide driver.");
145module_param_array(opl3_port, int, NULL, 0444); 145module_param_hw_array(opl3_port, int, ioport, NULL, 0444);
146MODULE_PARM_DESC(opl3_port, "OPL3 port # for Riptide driver."); 146MODULE_PARM_DESC(opl3_port, "OPL3 port # for Riptide driver.");
147 147
148/* 148/*
diff --git a/sound/pci/sonicvibes.c b/sound/pci/sonicvibes.c
index a6aa48c5b969..8e3d4ec39c35 100644
--- a/sound/pci/sonicvibes.c
+++ b/sound/pci/sonicvibes.c
@@ -66,7 +66,7 @@ module_param_array(reverb, bool, NULL, 0444);
66MODULE_PARM_DESC(reverb, "Enable reverb (SRAM is present) for S3 SonicVibes soundcard."); 66MODULE_PARM_DESC(reverb, "Enable reverb (SRAM is present) for S3 SonicVibes soundcard.");
67module_param_array(mge, bool, NULL, 0444); 67module_param_array(mge, bool, NULL, 0444);
68MODULE_PARM_DESC(mge, "MIC Gain Enable for S3 SonicVibes soundcard."); 68MODULE_PARM_DESC(mge, "MIC Gain Enable for S3 SonicVibes soundcard.");
69module_param(dmaio, uint, 0444); 69module_param_hw(dmaio, uint, ioport, 0444);
70MODULE_PARM_DESC(dmaio, "DDMA i/o base address for S3 SonicVibes soundcard."); 70MODULE_PARM_DESC(dmaio, "DDMA i/o base address for S3 SonicVibes soundcard.");
71 71
72/* 72/*
diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c
index d078e86414c2..b6c84d15b10b 100644
--- a/sound/pci/via82xx.c
+++ b/sound/pci/via82xx.c
@@ -92,7 +92,7 @@ module_param(index, int, 0444);
92MODULE_PARM_DESC(index, "Index value for VIA 82xx bridge."); 92MODULE_PARM_DESC(index, "Index value for VIA 82xx bridge.");
93module_param(id, charp, 0444); 93module_param(id, charp, 0444);
94MODULE_PARM_DESC(id, "ID string for VIA 82xx bridge."); 94MODULE_PARM_DESC(id, "ID string for VIA 82xx bridge.");
95module_param(mpu_port, long, 0444); 95module_param_hw(mpu_port, long, ioport, 0444);
96MODULE_PARM_DESC(mpu_port, "MPU-401 port. (VT82C686x only)"); 96MODULE_PARM_DESC(mpu_port, "MPU-401 port. (VT82C686x only)");
97#ifdef SUPPORT_JOYSTICK 97#ifdef SUPPORT_JOYSTICK
98module_param(joystick, bool, 0444); 98module_param(joystick, bool, 0444);
diff --git a/sound/pci/ymfpci/ymfpci.c b/sound/pci/ymfpci/ymfpci.c
index 812e27a1bcbc..4faf3e1ed06a 100644
--- a/sound/pci/ymfpci/ymfpci.c
+++ b/sound/pci/ymfpci/ymfpci.c
@@ -55,12 +55,12 @@ module_param_array(id, charp, NULL, 0444);
55MODULE_PARM_DESC(id, "ID string for the Yamaha DS-1 PCI soundcard."); 55MODULE_PARM_DESC(id, "ID string for the Yamaha DS-1 PCI soundcard.");
56module_param_array(enable, bool, NULL, 0444); 56module_param_array(enable, bool, NULL, 0444);
57MODULE_PARM_DESC(enable, "Enable Yamaha DS-1 soundcard."); 57MODULE_PARM_DESC(enable, "Enable Yamaha DS-1 soundcard.");
58module_param_array(mpu_port, long, NULL, 0444); 58module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
59MODULE_PARM_DESC(mpu_port, "MPU-401 Port."); 59MODULE_PARM_DESC(mpu_port, "MPU-401 Port.");
60module_param_array(fm_port, long, NULL, 0444); 60module_param_hw_array(fm_port, long, ioport, NULL, 0444);
61MODULE_PARM_DESC(fm_port, "FM OPL-3 Port."); 61MODULE_PARM_DESC(fm_port, "FM OPL-3 Port.");
62#ifdef SUPPORT_JOYSTICK 62#ifdef SUPPORT_JOYSTICK
63module_param_array(joystick_port, long, NULL, 0444); 63module_param_hw_array(joystick_port, long, ioport, NULL, 0444);
64MODULE_PARM_DESC(joystick_port, "Joystick port address"); 64MODULE_PARM_DESC(joystick_port, "Joystick port address");
65#endif 65#endif
66module_param_array(rear_switch, bool, NULL, 0444); 66module_param_array(rear_switch, bool, NULL, 0444);