Merge tag 'hwparam-20170420' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs
Pull hw lockdown support from David Howells: "Annotation of module parameters that configure hardware resources including ioports, iomem addresses, irq lines and dma channels. This allows a future patch to prohibit the use of such module parameters to prevent that hardware from being abused to gain access to the running kernel image as part of locking the kernel down under UEFI secure boot conditions. Annotations are made by changing: module_param(n, t, p) module_param_named(n, v, t, p) module_param_array(n, t, m, p) to: module_param_hw(n, t, hwtype, p) module_param_hw_named(n, v, t, hwtype, p) module_param_hw_array(n, t, hwtype, m, p) where the module parameter refers to a hardware setting hwtype specifies the type of the resource being configured. This can be one of: ioport Module parameter configures an I/O port iomem Module parameter configures an I/O mem address ioport_or_iomem Module parameter could be either (runtime set) irq Module parameter configures an I/O port dma Module parameter configures a DMA channel dma_addr Module parameter configures a DMA buffer address other Module parameter configures some other value Note that the hwtype is compile checked, but not currently stored (the lockdown code probably won't require it). It is, however, there for future use. A bonus is that the hwtype can also be used for grepping. The intention is for the kernel to ignore or reject attempts to set annotated module parameters if lockdown is enabled. This applies to options passed on the boot command line, passed to insmod/modprobe or direct twiddling in /sys/module/ parameter files. The module initialisation then needs to handle the parameter not being set, by (1) giving an error, (2) probing for a value or (3) using a reasonable default. What I can't do is just reject a module out of hand because it may take a hardware setting in the module parameters. Some important modules, some ipmi stuff for instance, both probe for hardware and allow hardware to be manually specified; if the driver is aborts with any error, you don't get any ipmi hardware. Further, trying to do this entirely in the module initialisation code doesn't protect against sysfs twiddling. [!] Note that in and of itself, this series of patches should have no effect on the the size of the kernel or code execution - that is left to a patch in the next series to effect. It does mark annotated kernel parameters with a KERNEL_PARAM_FL_HWPARAM flag in an already existing field" * tag 'hwparam-20170420' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs: (38 commits) Annotate hardware config module parameters in sound/pci/ Annotate hardware config module parameters in sound/oss/ Annotate hardware config module parameters in sound/isa/ Annotate hardware config module parameters in sound/drivers/ Annotate hardware config module parameters in fs/pstore/ Annotate hardware config module parameters in drivers/watchdog/ Annotate hardware config module parameters in drivers/video/ Annotate hardware config module parameters in drivers/tty/ Annotate hardware config module parameters in drivers/staging/vme/ Annotate hardware config module parameters in drivers/staging/speakup/ Annotate hardware config module parameters in drivers/staging/media/ Annotate hardware config module parameters in drivers/scsi/ Annotate hardware config module parameters in drivers/pcmcia/ Annotate hardware config module parameters in drivers/pci/hotplug/ Annotate hardware config module parameters in drivers/parport/ Annotate hardware config module parameters in drivers/net/wireless/ Annotate hardware config module parameters in drivers/net/wan/ Annotate hardware config module parameters in drivers/net/irda/ Annotate hardware config module parameters in drivers/net/hamradio/ Annotate hardware config module parameters in drivers/net/ethernet/ ...
Šī revīzija ir iekļauta:
@@ -55,11 +55,11 @@ module_param_array(id, charp, NULL, 0444);
|
||||
MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard.");
|
||||
module_param_array(enable, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver.");
|
||||
module_param_array(dma1, int, NULL, 0444);
|
||||
module_param_hw_array(dma1, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma1, "DMA1 # for " CRD_NAME " driver.");
|
||||
module_param_array(thinkpad, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(thinkpad, "Enable only for the onboard CS4248 of IBM Thinkpad 360/750/755 series.");
|
||||
|
@@ -27,7 +27,7 @@ module_param_array(id, charp, NULL, 0444);
|
||||
MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard.");
|
||||
module_param_array(enable, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
|
||||
|
||||
static int snd_adlib_match(struct device *dev, unsigned int n)
|
||||
|
@@ -51,18 +51,18 @@ MODULE_PARM_DESC(index, "Index value for CMI8328 soundcard.");
|
||||
module_param_array(id, charp, NULL, 0444);
|
||||
MODULE_PARM_DESC(id, "ID string for CMI8328 soundcard.");
|
||||
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for CMI8328 driver.");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for CMI8328 driver.");
|
||||
module_param_array(dma1, int, NULL, 0444);
|
||||
module_param_hw_array(dma1, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma1, "DMA1 for CMI8328 driver.");
|
||||
module_param_array(dma2, int, NULL, 0444);
|
||||
module_param_hw_array(dma2, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma2, "DMA2 for CMI8328 driver.");
|
||||
|
||||
module_param_array(mpuport, long, NULL, 0444);
|
||||
module_param_hw_array(mpuport, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpuport, "MPU-401 port # for CMI8328 driver.");
|
||||
module_param_array(mpuirq, int, NULL, 0444);
|
||||
module_param_hw_array(mpuirq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpuirq, "IRQ # for CMI8328 MPU-401 port.");
|
||||
#ifdef SUPPORT_JOYSTICK
|
||||
module_param_array(gameport, bool, NULL, 0444);
|
||||
|
@@ -95,27 +95,27 @@ module_param_array(isapnp, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
|
||||
#endif
|
||||
|
||||
module_param_array(sbport, long, NULL, 0444);
|
||||
module_param_hw_array(sbport, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(sbport, "Port # for CMI8330/CMI8329 SB driver.");
|
||||
module_param_array(sbirq, int, NULL, 0444);
|
||||
module_param_hw_array(sbirq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(sbirq, "IRQ # for CMI8330/CMI8329 SB driver.");
|
||||
module_param_array(sbdma8, int, NULL, 0444);
|
||||
module_param_hw_array(sbdma8, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(sbdma8, "DMA8 for CMI8330/CMI8329 SB driver.");
|
||||
module_param_array(sbdma16, int, NULL, 0444);
|
||||
module_param_hw_array(sbdma16, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(sbdma16, "DMA16 for CMI8330/CMI8329 SB driver.");
|
||||
|
||||
module_param_array(wssport, long, NULL, 0444);
|
||||
module_param_hw_array(wssport, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(wssport, "Port # for CMI8330/CMI8329 WSS driver.");
|
||||
module_param_array(wssirq, int, NULL, 0444);
|
||||
module_param_hw_array(wssirq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(wssirq, "IRQ # for CMI8330/CMI8329 WSS driver.");
|
||||
module_param_array(wssdma, int, NULL, 0444);
|
||||
module_param_hw_array(wssdma, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(wssdma, "DMA for CMI8330/CMI8329 WSS driver.");
|
||||
|
||||
module_param_array(fmport, long, NULL, 0444);
|
||||
module_param_hw_array(fmport, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(fmport, "FM port # for CMI8330/CMI8329 driver.");
|
||||
module_param_array(mpuport, long, NULL, 0444);
|
||||
module_param_hw_array(mpuport, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpuport, "MPU-401 port # for CMI8330/CMI8329 driver.");
|
||||
module_param_array(mpuirq, int, NULL, 0444);
|
||||
module_param_hw_array(mpuirq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpuirq, "IRQ # for CMI8330/CMI8329 MPU-401 port.");
|
||||
#ifdef CONFIG_PNP
|
||||
static int isa_registered;
|
||||
|
@@ -55,17 +55,17 @@ module_param_array(id, charp, NULL, 0444);
|
||||
MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard.");
|
||||
module_param_array(enable, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
|
||||
module_param_array(mpu_port, long, NULL, 0444);
|
||||
module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " CRD_NAME " driver.");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver.");
|
||||
module_param_array(mpu_irq, int, NULL, 0444);
|
||||
module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " CRD_NAME " driver.");
|
||||
module_param_array(dma1, int, NULL, 0444);
|
||||
module_param_hw_array(dma1, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma1, "DMA1 # for " CRD_NAME " driver.");
|
||||
module_param_array(dma2, int, NULL, 0444);
|
||||
module_param_hw_array(dma2, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma2, "DMA2 # for " CRD_NAME " driver.");
|
||||
|
||||
static int snd_cs4231_match(struct device *dev, unsigned int n)
|
||||
|
@@ -98,23 +98,23 @@ MODULE_PARM_DESC(enable, "Enable " IDENT " soundcard.");
|
||||
module_param_array(isapnp, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(isapnp, "ISA PnP detection for specified soundcard.");
|
||||
#endif
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for " IDENT " driver.");
|
||||
module_param_array(cport, long, NULL, 0444);
|
||||
module_param_hw_array(cport, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(cport, "Control port # for " IDENT " driver.");
|
||||
module_param_array(mpu_port, long, NULL, 0444);
|
||||
module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " IDENT " driver.");
|
||||
module_param_array(fm_port, long, NULL, 0444);
|
||||
module_param_hw_array(fm_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(fm_port, "FM port # for " IDENT " driver.");
|
||||
module_param_array(sb_port, long, NULL, 0444);
|
||||
module_param_hw_array(sb_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(sb_port, "SB port # for " IDENT " driver (optional).");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for " IDENT " driver.");
|
||||
module_param_array(mpu_irq, int, NULL, 0444);
|
||||
module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " IDENT " driver.");
|
||||
module_param_array(dma1, int, NULL, 0444);
|
||||
module_param_hw_array(dma1, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma1, "DMA1 # for " IDENT " driver.");
|
||||
module_param_array(dma2, int, NULL, 0444);
|
||||
module_param_hw_array(dma2, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma2, "DMA2 # for " IDENT " driver.");
|
||||
|
||||
#ifdef CONFIG_PNP
|
||||
|
@@ -71,17 +71,17 @@ module_param_array(isapnp, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
|
||||
#endif
|
||||
MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
|
||||
module_param_array(mpu_port, long, NULL, 0444);
|
||||
module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " CRD_NAME " driver.");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_array(fm_port, long, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
module_param_hw_array(fm_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(fm_port, "FM port # for ES1688 driver.");
|
||||
MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver.");
|
||||
module_param_array(mpu_irq, int, NULL, 0444);
|
||||
module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " CRD_NAME " driver.");
|
||||
module_param_array(dma8, int, NULL, 0444);
|
||||
module_param_hw_array(dma8, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma8, "8-bit DMA # for " CRD_NAME " driver.");
|
||||
|
||||
#ifdef CONFIG_PNP
|
||||
|
@@ -1999,17 +1999,17 @@ MODULE_PARM_DESC(enable, "Enable ES18xx soundcard.");
|
||||
module_param_array(isapnp, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
|
||||
#endif
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for ES18xx driver.");
|
||||
module_param_array(mpu_port, long, NULL, 0444);
|
||||
module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_port, "MPU-401 port # for ES18xx driver.");
|
||||
module_param_array(fm_port, long, NULL, 0444);
|
||||
module_param_hw_array(fm_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(fm_port, "FM port # for ES18xx driver.");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for ES18xx driver.");
|
||||
module_param_array(dma1, int, NULL, 0444);
|
||||
module_param_hw_array(dma1, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma1, "DMA 1 # for ES18xx driver.");
|
||||
module_param_array(dma2, int, NULL, 0444);
|
||||
module_param_hw_array(dma2, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma2, "DMA 2 # for ES18xx driver.");
|
||||
|
||||
#ifdef CONFIG_PNP
|
||||
|
@@ -53,21 +53,21 @@ static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ;
|
||||
static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;
|
||||
static int dma2[SNDRV_CARDS] = SNDRV_DEFAULT_DMA;
|
||||
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
|
||||
module_param_array(wss_port, long, NULL, 0444);
|
||||
module_param_hw_array(wss_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(wss_port, "WSS port # for " CRD_NAME " driver.");
|
||||
module_param_array(mpu_port, long, NULL, 0444);
|
||||
module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " CRD_NAME " driver.");
|
||||
module_param_array(fm_port, long, NULL, 0444);
|
||||
module_param_hw_array(fm_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(fm_port, "FM port # for " CRD_NAME " driver.");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver.");
|
||||
module_param_array(mpu_irq, int, NULL, 0444);
|
||||
module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " CRD_NAME " driver.");
|
||||
module_param_array(dma1, int, NULL, 0444);
|
||||
module_param_hw_array(dma1, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma1, "Playback DMA # for " CRD_NAME " driver.");
|
||||
module_param_array(dma2, int, NULL, 0444);
|
||||
module_param_hw_array(dma2, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma2, "Capture DMA # for " CRD_NAME " driver.");
|
||||
|
||||
/*
|
||||
|
@@ -58,13 +58,13 @@ module_param_array(id, charp, NULL, 0444);
|
||||
MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard.");
|
||||
module_param_array(enable, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver.");
|
||||
module_param_array(dma1, int, NULL, 0444);
|
||||
module_param_hw_array(dma1, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma1, "DMA1 # for " CRD_NAME " driver.");
|
||||
module_param_array(dma2, int, NULL, 0444);
|
||||
module_param_hw_array(dma2, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma2, "DMA2 # for " CRD_NAME " driver.");
|
||||
module_param_array(joystick_dac, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for " CRD_NAME " driver.");
|
||||
|
@@ -66,21 +66,21 @@ module_param_array(id, charp, NULL, 0444);
|
||||
MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard.");
|
||||
module_param_array(enable, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for " CRD_NAME " driver.");
|
||||
module_param_array(gf1_port, long, NULL, 0444);
|
||||
module_param_hw_array(gf1_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(gf1_port, "GF1 port # for " CRD_NAME " driver (optional).");
|
||||
module_param_array(mpu_port, long, NULL, 0444);
|
||||
module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_port, "MPU-401 port # for " CRD_NAME " driver.");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver.");
|
||||
module_param_array(mpu_irq, int, NULL, 0444);
|
||||
module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " CRD_NAME " driver.");
|
||||
module_param_array(gf1_irq, int, NULL, 0444);
|
||||
module_param_hw_array(gf1_irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(gf1_irq, "GF1 IRQ # for " CRD_NAME " driver.");
|
||||
module_param_array(dma8, int, NULL, 0444);
|
||||
module_param_hw_array(dma8, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma8, "8-bit DMA # for " CRD_NAME " driver.");
|
||||
module_param_array(dma1, int, NULL, 0444);
|
||||
module_param_hw_array(dma1, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma1, "GF1 DMA # for " CRD_NAME " driver.");
|
||||
module_param_array(joystick_dac, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for " CRD_NAME " driver.");
|
||||
|
@@ -56,13 +56,13 @@ module_param_array(id, charp, NULL, 0444);
|
||||
MODULE_PARM_DESC(id, "ID string for GUS MAX soundcard.");
|
||||
module_param_array(enable, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(enable, "Enable GUS MAX soundcard.");
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for GUS MAX driver.");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for GUS MAX driver.");
|
||||
module_param_array(dma1, int, NULL, 0444);
|
||||
module_param_hw_array(dma1, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma1, "DMA1 # for GUS MAX driver.");
|
||||
module_param_array(dma2, int, NULL, 0444);
|
||||
module_param_hw_array(dma2, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma2, "DMA2 # for GUS MAX driver.");
|
||||
module_param_array(joystick_dac, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for GUS MAX driver.");
|
||||
|
@@ -92,17 +92,17 @@ MODULE_PARM_DESC(enable, "Enable InterWave soundcard.");
|
||||
module_param_array(isapnp, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(isapnp, "ISA PnP detection for specified soundcard.");
|
||||
#endif
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for InterWave driver.");
|
||||
#ifdef SNDRV_STB
|
||||
module_param_array(port_tc, long, NULL, 0444);
|
||||
module_param_hw_array(port_tc, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port_tc, "Tone control (TEA6330T - i2c bus) port # for InterWave driver.");
|
||||
#endif
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for InterWave driver.");
|
||||
module_param_array(dma1, int, NULL, 0444);
|
||||
module_param_hw_array(dma1, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma1, "DMA1 # for InterWave driver.");
|
||||
module_param_array(dma2, int, NULL, 0444);
|
||||
module_param_hw_array(dma2, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma2, "DMA2 # for InterWave driver.");
|
||||
module_param_array(joystick_dac, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(joystick_dac, "Joystick DAC level 0.59V-4.52V or 0.389V-2.98V for InterWave driver.");
|
||||
|
@@ -800,22 +800,22 @@ MODULE_LICENSE("GPL");
|
||||
MODULE_FIRMWARE(INITCODEFILE);
|
||||
MODULE_FIRMWARE(PERMCODEFILE);
|
||||
|
||||
module_param_array(io, long, NULL, S_IRUGO);
|
||||
module_param_hw_array(io, long, ioport, NULL, S_IRUGO);
|
||||
MODULE_PARM_DESC(io, "IO port #");
|
||||
module_param_array(irq, int, NULL, S_IRUGO);
|
||||
module_param_array(mem, long, NULL, S_IRUGO);
|
||||
module_param_hw_array(irq, int, irq, NULL, S_IRUGO);
|
||||
module_param_hw_array(mem, long, iomem, NULL, S_IRUGO);
|
||||
module_param_array(write_ndelay, int, NULL, S_IRUGO);
|
||||
module_param(calibrate_signal, int, S_IRUGO);
|
||||
#ifndef MSND_CLASSIC
|
||||
module_param_array(digital, int, NULL, S_IRUGO);
|
||||
module_param_array(cfg, long, NULL, S_IRUGO);
|
||||
module_param_hw_array(cfg, long, ioport, NULL, S_IRUGO);
|
||||
module_param_array(reset, int, 0, S_IRUGO);
|
||||
module_param_array(mpu_io, long, NULL, S_IRUGO);
|
||||
module_param_array(mpu_irq, int, NULL, S_IRUGO);
|
||||
module_param_array(ide_io0, long, NULL, S_IRUGO);
|
||||
module_param_array(ide_io1, long, NULL, S_IRUGO);
|
||||
module_param_array(ide_irq, int, NULL, S_IRUGO);
|
||||
module_param_array(joystick_io, long, NULL, S_IRUGO);
|
||||
module_param_hw_array(mpu_io, long, ioport, NULL, S_IRUGO);
|
||||
module_param_hw_array(mpu_irq, int, irq, NULL, S_IRUGO);
|
||||
module_param_hw_array(ide_io0, long, ioport, NULL, S_IRUGO);
|
||||
module_param_hw_array(ide_io1, long, ioport, NULL, S_IRUGO);
|
||||
module_param_hw_array(ide_irq, int, irq, NULL, S_IRUGO);
|
||||
module_param_hw_array(joystick_io, long, ioport, NULL, S_IRUGO);
|
||||
#endif
|
||||
|
||||
|
||||
|
@@ -69,21 +69,21 @@ MODULE_PARM_DESC(enable, "Enable OPL3-SA soundcard.");
|
||||
module_param_array(isapnp, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
|
||||
#endif
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for OPL3-SA driver.");
|
||||
module_param_array(sb_port, long, NULL, 0444);
|
||||
module_param_hw_array(sb_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(sb_port, "SB port # for OPL3-SA driver.");
|
||||
module_param_array(wss_port, long, NULL, 0444);
|
||||
module_param_hw_array(wss_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(wss_port, "WSS port # for OPL3-SA driver.");
|
||||
module_param_array(fm_port, long, NULL, 0444);
|
||||
module_param_hw_array(fm_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(fm_port, "FM port # for OPL3-SA driver.");
|
||||
module_param_array(midi_port, long, NULL, 0444);
|
||||
module_param_hw_array(midi_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(midi_port, "MIDI port # for OPL3-SA driver.");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for OPL3-SA driver.");
|
||||
module_param_array(dma1, int, NULL, 0444);
|
||||
module_param_hw_array(dma1, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma1, "DMA1 # for OPL3-SA driver.");
|
||||
module_param_array(dma2, int, NULL, 0444);
|
||||
module_param_hw_array(dma2, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma2, "DMA2 # for OPL3-SA driver.");
|
||||
module_param_array(opl3sa3_ymode, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(opl3sa3_ymode, "Speaker size selection for 3D Enhancement mode: Desktop/Large Notebook/Small Notebook/HiFi.");
|
||||
|
@@ -69,19 +69,19 @@ module_param(index, int, 0444);
|
||||
MODULE_PARM_DESC(index, "Index value for miro soundcard.");
|
||||
module_param(id, charp, 0444);
|
||||
MODULE_PARM_DESC(id, "ID string for miro soundcard.");
|
||||
module_param(port, long, 0444);
|
||||
module_param_hw(port, long, ioport, 0444);
|
||||
MODULE_PARM_DESC(port, "WSS port # for miro driver.");
|
||||
module_param(mpu_port, long, 0444);
|
||||
module_param_hw(mpu_port, long, ioport, 0444);
|
||||
MODULE_PARM_DESC(mpu_port, "MPU-401 port # for miro driver.");
|
||||
module_param(fm_port, long, 0444);
|
||||
module_param_hw(fm_port, long, ioport, 0444);
|
||||
MODULE_PARM_DESC(fm_port, "FM Port # for miro driver.");
|
||||
module_param(irq, int, 0444);
|
||||
module_param_hw(irq, int, irq, 0444);
|
||||
MODULE_PARM_DESC(irq, "WSS irq # for miro driver.");
|
||||
module_param(mpu_irq, int, 0444);
|
||||
module_param_hw(mpu_irq, int, irq, 0444);
|
||||
MODULE_PARM_DESC(mpu_irq, "MPU-401 irq # for miro driver.");
|
||||
module_param(dma1, int, 0444);
|
||||
module_param_hw(dma1, int, dma, 0444);
|
||||
MODULE_PARM_DESC(dma1, "1st dma # for miro driver.");
|
||||
module_param(dma2, int, 0444);
|
||||
module_param_hw(dma2, int, dma, 0444);
|
||||
MODULE_PARM_DESC(dma2, "2nd dma # for miro driver.");
|
||||
module_param(wss, int, 0444);
|
||||
MODULE_PARM_DESC(wss, "wss mode");
|
||||
|
@@ -88,20 +88,20 @@ MODULE_PARM_DESC(id, "ID string for opti9xx based soundcard.");
|
||||
module_param(isapnp, bool, 0444);
|
||||
MODULE_PARM_DESC(isapnp, "Enable ISA PnP detection for specified soundcard.");
|
||||
#endif
|
||||
module_param(port, long, 0444);
|
||||
module_param_hw(port, long, ioport, 0444);
|
||||
MODULE_PARM_DESC(port, "WSS port # for opti9xx driver.");
|
||||
module_param(mpu_port, long, 0444);
|
||||
module_param_hw(mpu_port, long, ioport, 0444);
|
||||
MODULE_PARM_DESC(mpu_port, "MPU-401 port # for opti9xx driver.");
|
||||
module_param(fm_port, long, 0444);
|
||||
module_param_hw(fm_port, long, ioport, 0444);
|
||||
MODULE_PARM_DESC(fm_port, "FM port # for opti9xx driver.");
|
||||
module_param(irq, int, 0444);
|
||||
module_param_hw(irq, int, irq, 0444);
|
||||
MODULE_PARM_DESC(irq, "WSS irq # for opti9xx driver.");
|
||||
module_param(mpu_irq, int, 0444);
|
||||
module_param_hw(mpu_irq, int, irq, 0444);
|
||||
MODULE_PARM_DESC(mpu_irq, "MPU-401 irq # for opti9xx driver.");
|
||||
module_param(dma1, int, 0444);
|
||||
module_param_hw(dma1, int, dma, 0444);
|
||||
MODULE_PARM_DESC(dma1, "1st dma # for opti9xx driver.");
|
||||
#if defined(CS4231) || defined(OPTi93X)
|
||||
module_param(dma2, int, 0444);
|
||||
module_param_hw(dma2, int, dma, 0444);
|
||||
MODULE_PARM_DESC(dma2, "2nd dma # for opti9xx driver.");
|
||||
#endif /* CS4231 || OPTi93X */
|
||||
|
||||
|
@@ -50,17 +50,17 @@ module_param_array(id, charp, NULL, 0444);
|
||||
MODULE_PARM_DESC(id, "ID string for Media Vision Jazz16 based soundcard.");
|
||||
module_param_array(enable, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(enable, "Enable Media Vision Jazz16 based soundcard.");
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for jazz16 driver.");
|
||||
module_param_array(mpu_port, long, NULL, 0444);
|
||||
module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_port, "MPU-401 port # for jazz16 driver.");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for jazz16 driver.");
|
||||
module_param_array(mpu_irq, int, NULL, 0444);
|
||||
module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for jazz16 driver.");
|
||||
module_param_array(dma8, int, NULL, 0444);
|
||||
module_param_hw_array(dma8, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma8, "DMA8 # for jazz16 driver.");
|
||||
module_param_array(dma16, int, NULL, 0444);
|
||||
module_param_hw_array(dma16, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma16, "DMA16 # for jazz16 driver.");
|
||||
|
||||
#define SB_JAZZ16_WAKEUP 0xaf
|
||||
|
@@ -99,21 +99,21 @@ MODULE_PARM_DESC(enable, "Enable SoundBlaster 16 soundcard.");
|
||||
module_param_array(isapnp, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(isapnp, "PnP detection for specified soundcard.");
|
||||
#endif
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for SB16 driver.");
|
||||
module_param_array(mpu_port, long, NULL, 0444);
|
||||
module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_port, "MPU-401 port # for SB16 driver.");
|
||||
module_param_array(fm_port, long, NULL, 0444);
|
||||
module_param_hw_array(fm_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(fm_port, "FM port # for SB16 PnP driver.");
|
||||
#ifdef SNDRV_SBAWE_EMU8000
|
||||
module_param_array(awe_port, long, NULL, 0444);
|
||||
module_param_hw_array(awe_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(awe_port, "AWE port # for SB16 PnP driver.");
|
||||
#endif
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for SB16 driver.");
|
||||
module_param_array(dma8, int, NULL, 0444);
|
||||
module_param_hw_array(dma8, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma8, "8-bit DMA # for SB16 driver.");
|
||||
module_param_array(dma16, int, NULL, 0444);
|
||||
module_param_hw_array(dma16, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma16, "16-bit DMA # for SB16 driver.");
|
||||
module_param_array(mic_agc, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(mic_agc, "Mic Auto-Gain-Control switch.");
|
||||
|
@@ -47,11 +47,11 @@ module_param_array(id, charp, NULL, 0444);
|
||||
MODULE_PARM_DESC(id, "ID string for Sound Blaster soundcard.");
|
||||
module_param_array(enable, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(enable, "Enable Sound Blaster soundcard.");
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for SB8 driver.");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for SB8 driver.");
|
||||
module_param_array(dma8, int, NULL, 0444);
|
||||
module_param_hw_array(dma8, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma8, "8-bit DMA # for SB8 driver.");
|
||||
|
||||
struct snd_sb8 {
|
||||
|
@@ -64,17 +64,17 @@ module_param_array(id, charp, NULL, 0444);
|
||||
MODULE_PARM_DESC(id, "ID string for sc-6000 based soundcard.");
|
||||
module_param_array(enable, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(enable, "Enable sc-6000 based soundcard.");
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for sc-6000 driver.");
|
||||
module_param_array(mss_port, long, NULL, 0444);
|
||||
module_param_hw_array(mss_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(mss_port, "MSS Port # for sc-6000 driver.");
|
||||
module_param_array(mpu_port, long, NULL, 0444);
|
||||
module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_port, "MPU-401 port # for sc-6000 driver.");
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for sc-6000 driver.");
|
||||
module_param_array(mpu_irq, int, NULL, 0444);
|
||||
module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for sc-6000 driver.");
|
||||
module_param_array(dma, int, NULL, 0444);
|
||||
module_param_hw_array(dma, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma, "DMA # for sc-6000 driver.");
|
||||
module_param_array(joystick, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(joystick, "Enable gameport.");
|
||||
|
@@ -63,22 +63,22 @@ MODULE_PARM_DESC(index, "Index number for SoundScape soundcard");
|
||||
module_param_array(id, charp, NULL, 0444);
|
||||
MODULE_PARM_DESC(id, "Description for SoundScape card");
|
||||
|
||||
module_param_array(port, long, NULL, 0444);
|
||||
module_param_hw_array(port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(port, "Port # for SoundScape driver.");
|
||||
|
||||
module_param_array(wss_port, long, NULL, 0444);
|
||||
module_param_hw_array(wss_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(wss_port, "WSS Port # for SoundScape driver.");
|
||||
|
||||
module_param_array(irq, int, NULL, 0444);
|
||||
module_param_hw_array(irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(irq, "IRQ # for SoundScape driver.");
|
||||
|
||||
module_param_array(mpu_irq, int, NULL, 0444);
|
||||
module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(mpu_irq, "MPU401 IRQ # for SoundScape driver.");
|
||||
|
||||
module_param_array(dma, int, NULL, 0444);
|
||||
module_param_hw_array(dma, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma, "DMA # for SoundScape driver.");
|
||||
|
||||
module_param_array(dma2, int, NULL, 0444);
|
||||
module_param_hw_array(dma2, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma2, "DMA2 # for SoundScape driver.");
|
||||
|
||||
module_param_array(joystick, bool, NULL, 0444);
|
||||
|
@@ -63,23 +63,23 @@ MODULE_PARM_DESC(enable, "Enable WaveFront soundcard.");
|
||||
module_param_array(isapnp, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(isapnp, "ISA PnP detection for WaveFront soundcards.");
|
||||
#endif
|
||||
module_param_array(cs4232_pcm_port, long, NULL, 0444);
|
||||
module_param_hw_array(cs4232_pcm_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(cs4232_pcm_port, "Port # for CS4232 PCM interface.");
|
||||
module_param_array(cs4232_pcm_irq, int, NULL, 0444);
|
||||
module_param_hw_array(cs4232_pcm_irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(cs4232_pcm_irq, "IRQ # for CS4232 PCM interface.");
|
||||
module_param_array(dma1, int, NULL, 0444);
|
||||
module_param_hw_array(dma1, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma1, "DMA1 # for CS4232 PCM interface.");
|
||||
module_param_array(dma2, int, NULL, 0444);
|
||||
module_param_hw_array(dma2, int, dma, NULL, 0444);
|
||||
MODULE_PARM_DESC(dma2, "DMA2 # for CS4232 PCM interface.");
|
||||
module_param_array(cs4232_mpu_port, long, NULL, 0444);
|
||||
module_param_hw_array(cs4232_mpu_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(cs4232_mpu_port, "port # for CS4232 MPU-401 interface.");
|
||||
module_param_array(cs4232_mpu_irq, int, NULL, 0444);
|
||||
module_param_hw_array(cs4232_mpu_irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(cs4232_mpu_irq, "IRQ # for CS4232 MPU-401 interface.");
|
||||
module_param_array(ics2115_irq, int, NULL, 0444);
|
||||
module_param_hw_array(ics2115_irq, int, irq, NULL, 0444);
|
||||
MODULE_PARM_DESC(ics2115_irq, "IRQ # for ICS2115.");
|
||||
module_param_array(ics2115_port, long, NULL, 0444);
|
||||
module_param_hw_array(ics2115_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(ics2115_port, "Port # for ICS2115.");
|
||||
module_param_array(fm_port, long, NULL, 0444);
|
||||
module_param_hw_array(fm_port, long, ioport, NULL, 0444);
|
||||
MODULE_PARM_DESC(fm_port, "FM port #.");
|
||||
module_param_array(use_cs4232_midi, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(use_cs4232_midi, "Use CS4232 MPU-401 interface (inaccessibly located inside your computer)");
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user