static int __initdata dma2 = -1;
 static int __initdata type = 0;
 
-module_param(io, int, 0);              /* I/O for a raw AD1848 card */
-module_param(irq, int, 0);             /* IRQ to use */
-module_param(dma, int, 0);             /* First DMA channel */
-module_param(dma2, int, 0);            /* Second DMA channel */
+module_param_hw(io, int, ioport, 0);   /* I/O for a raw AD1848 card */
+module_param_hw(irq, int, irq, 0);     /* IRQ to use */
+module_param_hw(dma, int, dma, 0);     /* First DMA channel */
+module_param_hw(dma2, int, dma, 0);    /* Second DMA channel */
 module_param(type, int, 0);            /* Card type */
 module_param(deskpro_xl, bool, 0);     /* Special magic for Deskpro XL boxen */
 module_param(deskpro_m, bool, 0);      /* Special magic for Deskpro M box */
 
 static int __initdata mss_base = -1;
 static int __initdata mpu_base = -1;
 
-module_param(io, int, 0);
+module_param_hw(io, int, ioport, 0);
 MODULE_PARM_DESC(io, "I/O base address (0x220 0x240)");
-module_param(irq, int, 0);
+module_param_hw(irq, int, irq, 0);
 MODULE_PARM_DESC(irq, "IRQ line (5 7 9 10 11)");
-module_param(dma, int, 0);
+module_param_hw(dma, int, dma, 0);
 MODULE_PARM_DESC(dma, "dma line (0 1 3)");
-module_param(mpu_irq, int, 0);
+module_param_hw(mpu_irq, int, irq, 0);
 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ line (5 7 9 10 0)");
-module_param(mss_base, int, 0);
+module_param_hw(mss_base, int, ioport, 0);
 MODULE_PARM_DESC(mss_base, "MSS emulation I/O base address (0x530 0xE80)");
-module_param(mpu_base, int, 0);
+module_param_hw(mpu_base, int, ioport, 0);
 MODULE_PARM_DESC(mpu_base,"MPU-401 I/O base address (0x300 0x310 0x320 0x330)");
 MODULE_AUTHOR("Riccardo Facchetti <fizban@tin.it>");
 MODULE_DESCRIPTION("Audio Excel DSP 16 Driver Version " VERSION);
 
 static int io = -1;
 static int irq = -1;
 
-module_param(irq, int, 0);
-module_param(io, int, 0);
+module_param_hw(irq, int, irq, 0);
+module_param_hw(io, int, ioport, 0);
 
 static int __init init_mpu401(void)
 {
 
 calibrate_signal __initdata =          CONFIG_MSND_CALSIGNAL;
 #endif /* MODULE */
 
-module_param                           (io, int, 0);
-module_param                           (irq, int, 0);
-module_param                           (mem, int, 0);
+module_param_hw                                (io, int, ioport, 0);
+module_param_hw                                (irq, int, irq, 0);
+module_param_hw                                (mem, int, iomem, 0);
 module_param                           (write_ndelay, int, 0);
 module_param                           (fifosize, int, 0);
 module_param                           (calibrate_signal, int, 0);
 #ifndef MSND_CLASSIC
 module_param                           (digital, bool, 0);
-module_param                           (cfg, int, 0);
+module_param_hw                                (cfg, int, ioport, 0);
 module_param                           (reset, int, 0);
-module_param                           (mpu_io, int, 0);
-module_param                           (mpu_irq, int, 0);
-module_param                           (ide_io0, int, 0);
-module_param                           (ide_io1, int, 0);
-module_param                           (ide_irq, int, 0);
-module_param                           (joystick_io, int, 0);
+module_param_hw                                (mpu_io, int, ioport, 0);
+module_param_hw                                (mpu_irq, int, irq, 0);
+module_param_hw                                (ide_io0, int, ioport, 0);
+module_param_hw                                (ide_io1, int, ioport, 0);
+module_param_hw                                (ide_irq, int, irq, 0);
+module_param_hw                                (joystick_io, int, ioport, 0);
 #endif
 
 static int __init msnd_init(void)
 
 
 static int io = -1;
 
-module_param(io, int, 0);
+module_param_hw(io, int, ioport, 0);
 
 static int __init init_opl3 (void)
 {
 
 static int __initdata sb_dma   = -1;
 static int __initdata sb_dma16 = -1;
 
-module_param(io, int, 0);
-module_param(irq, int, 0);
-module_param(dma, int, 0);
-module_param(dma16, int, 0);
-
-module_param(sb_io, int, 0);
-module_param(sb_irq, int, 0);
-module_param(sb_dma, int, 0);
-module_param(sb_dma16, int, 0);
+module_param_hw(io, int, ioport, 0);
+module_param_hw(irq, int, irq, 0);
+module_param_hw(dma, int, dma, 0);
+module_param_hw(dma16, int, dma, 0);
+
+module_param_hw(sb_io, int, ioport, 0);
+module_param_hw(sb_irq, int, irq, 0);
+module_param_hw(sb_dma, int, dma, 0);
+module_param_hw(sb_dma16, int, dma, 0);
 
 module_param(joystick, bool, 0);
 module_param(symphony, bool, 0);
 
 static bool pss_keep_settings  = 1;    /* Keep hardware settings at module exit */
 static char *pss_firmware = "/etc/sound/pss_synth";
 
-module_param(pss_io, int, 0);
+module_param_hw(pss_io, int, ioport, 0);
 MODULE_PARM_DESC(pss_io, "Set i/o base of PSS card (probably 0x220 or 0x240)");
-module_param(mss_io, int, 0);
+module_param_hw(mss_io, int, ioport, 0);
 MODULE_PARM_DESC(mss_io, "Set WSS (audio) i/o base (0x530, 0x604, 0xE80, 0xF40, or other. Address must end in 0 or 4 and must be from 0x100 to 0xFF4)");
-module_param(mss_irq, int, 0);
+module_param_hw(mss_irq, int, irq, 0);
 MODULE_PARM_DESC(mss_irq, "Set WSS (audio) IRQ (3, 5, 7, 9, 10, 11, 12)");
-module_param(mss_dma, int, 0);
+module_param_hw(mss_dma, int, dma, 0);
 MODULE_PARM_DESC(mss_dma, "Set WSS (audio) DMA (0, 1, 3)");
-module_param(mpu_io, int, 0);
+module_param_hw(mpu_io, int, ioport, 0);
 MODULE_PARM_DESC(mpu_io, "Set MIDI i/o base (0x330 or other. Address must be on 4 location boundaries and must be from 0x100 to 0xFFC)");
-module_param(mpu_irq, int, 0);
+module_param_hw(mpu_irq, int, irq, 0);
 MODULE_PARM_DESC(mpu_irq, "Set MIDI IRQ (3, 5, 7, 9, 10, 11, 12)");
-module_param(pss_cdrom_port, int, 0);
+module_param_hw(pss_cdrom_port, int, ioport, 0);
 MODULE_PARM_DESC(pss_cdrom_port, "Set the PSS CDROM port i/o base (0x340 or other)");
 module_param(pss_enable_joystick, bool, 0);
 MODULE_PARM_DESC(pss_enable_joystick, "Enables the PSS joystick port (1 to enable, 0 to disable)");
 
 static int __initdata pnp       = 0;
 #endif
 
-module_param(io, int, 000);
+module_param_hw(io, int, ioport, 000);
 MODULE_PARM_DESC(io,       "Soundblaster i/o base address (0x220,0x240,0x260,0x280)");
-module_param(irq, int, 000);
+module_param_hw(irq, int, irq, 000);
 MODULE_PARM_DESC(irq,     "IRQ (5,7,9,10)");
-module_param(dma, int, 000);
+module_param_hw(dma, int, dma, 000);
 MODULE_PARM_DESC(dma,     "8-bit DMA channel (0,1,3)");
-module_param(dma16, int, 000);
+module_param_hw(dma16, int, dma, 000);
 MODULE_PARM_DESC(dma16,           "16-bit DMA channel (5,6,7)");
-module_param(mpu_io, int, 000);
+module_param_hw(mpu_io, int, ioport, 000);
 MODULE_PARM_DESC(mpu_io,   "MPU base address");
 module_param(type, int, 000);
 MODULE_PARM_DESC(type,    "You can set this to specific card type (doesn't " \
 
 static int __initdata mpu_io   = -1;
 static int __initdata mpu_irq  = -1;
 
-module_param(io, int, 0);
-module_param(irq, int, 0);
-module_param(dma, int, 0);
-module_param(dma2, int, 0);
-module_param(sb_io, int, 0);
-module_param(sb_dma, int, 0);
-module_param(sb_irq, int, 0);
-module_param(mpu_io, int, 0);
-module_param(mpu_irq, int, 0);
+module_param_hw(io, int, ioport, 0);
+module_param_hw(irq, int, irq, 0);
+module_param_hw(dma, int, dma, 0);
+module_param_hw(dma2, int, dma, 0);
+module_param_hw(sb_io, int, ioport, 0);
+module_param_hw(sb_dma, int, dma, 0);
+module_param_hw(sb_irq, int, irq, 0);
+module_param_hw(mpu_io, int, ioport, 0);
+module_param_hw(mpu_irq, int, irq, 0);
 module_param(joystick, bool, 0);
 
 static int __init init_trix(void)
 
 static int io = -1;
 static int irq = -1;
 
-module_param(io, int, 0444);
-module_param(irq, int, 0444);
+module_param_hw(io, int, ioport, 0444);
+module_param_hw(irq, int, irq, 0444);
 
 
 static int __init init_uart401(void)
 
 static int __initdata io = -1;
 static int __initdata irq = -1;
 
-module_param(io, int, 0);
-module_param(irq, int, 0);
+module_param_hw(io, int, ioport, 0);
+module_param_hw(irq, int, irq, 0);
 
 static int __init init_uart6850(void)
 {
 
 #endif
 
 MODULE_DESCRIPTION("Rockwell WaveArtist RWA-010 sound driver");
-module_param(io, int, 0);              /* IO base */
-module_param(irq, int, 0);             /* IRQ */
-module_param(dma, int, 0);             /* DMA */
-module_param(dma2, int, 0);            /* DMA2 */
+module_param_hw(io, int, ioport, 0);           /* IO base */
+module_param_hw(irq, int, irq, 0);             /* IRQ */
+module_param_hw(dma, int, dma, 0);             /* DMA */
+module_param_hw(dma2, int, dma, 0);            /* DMA2 */
 MODULE_LICENSE("GPL");