Hi,
Please consider applying. There are more cases of check_region usage in
the sound drivers, as well as some drivers not using request_region at all for
some areas, I'll be sending more patches if you don't see any problems with
doing this now (well, this is one of the things on Ted's list for 2.4, so...)
BTW, I've tested some of the drivers in my machine (sb, etc)
- Arnaldo
diff -ur linux-2.4.0-test9-7/drivers/sound/cs4232.c linux-2.4.0-test9-7.acme/drivers/sound/cs4232.c
--- linux-2.4.0-test9-7/drivers/sound/cs4232.c Thu Aug 24 07:40:05 2000
+++ linux-2.4.0-test9-7.acme/drivers/sound/cs4232.c Mon Sep 25 23:40:37 2000
@@ -39,6 +39,7 @@
* Tropez+ (WaveFront) support
* Christoph Hellwig Adapted to module_init/module_exit,
* simple cleanups
+ * Arnaldo C. de Melo got rid of attach_uart401
*/
#include <linux/config.h>
@@ -255,10 +256,9 @@
hw_config2.driver_use_2 = 0;
hw_config2.card_subtype = 0;
- if (probe_uart401(&hw_config2))
+ if (probe_uart401(&hw_config2, THIS_MODULE))
{
mpu_detected = 1;
- attach_uart401(&hw_config2, THIS_MODULE);
}
else
{
diff -ur linux-2.4.0-test9-7/drivers/sound/mad16.c linux-2.4.0-test9-7.acme/drivers/sound/mad16.c
--- linux-2.4.0-test9-7/drivers/sound/mad16.c Thu Aug 24 07:40:06 2000
+++ linux-2.4.0-test9-7.acme/drivers/sound/mad16.c Mon Sep 25 23:40:37 2000
@@ -66,6 +66,7 @@
* Paul Grayson Added support for Midi on later Mozart cards.
* 25-Nov-1999
* Christoph Hellwig Adapted to module_init/module_exit.
+ * Arnaldo C. de Melo got rid of attach_uart401 21-Sep-2000
*/
#include <linux/config.h>
@@ -714,28 +715,6 @@
request_region(hw_config->io_base, 4, "MAD16 WSS config");
}
-static void __init attach_mad16_mpu(struct address_info *hw_config)
-{
-#ifdef CONFIG_MAD16_OLDCARD
-
- if (mad_read(MC1_PORT) & 0x20)
- hw_config->io_base = 0x240;
- else
- hw_config->io_base = 0x220;
-
- hw_config->name = "Mad16/Mozart";
- sb_dsp_init(hw_config, THIS_MODULE);
- return;
-#endif
-
- if (!already_initialized)
- return;
-
- hw_config->driver_use_1 = SB_MIDI_ONLY;
- hw_config->name = "Mad16/Mozart";
- attach_uart401(hw_config, THIS_MODULE);
-}
-
static int __init probe_mad16_mpu(struct address_info *hw_config)
{
static int mpu_attached = 0;
@@ -791,7 +770,17 @@
mad_write(MC3_PORT, tmp | 0x04);
hw_config->driver_use_1 = SB_MIDI_ONLY;
- return sb_dsp_detect(hw_config, 0, 0, NULL);
+ if (!sb_dsp_detect(hw_config, 0, 0, NULL))
+ return 0;
+
+ if (mad_read(MC1_PORT) & 0x20)
+ hw_config->io_base = 0x240;
+ else
+ hw_config->io_base = 0x220;
+
+ hw_config->name = "Mad16/Mozart";
+ sb_dsp_init(hw_config, THIS_MODULE);
+ return 1;
#else
/* assuming all later Mozart cards are identified as
* either 82C928 or Mozart. If so, following code attempts
@@ -845,8 +834,7 @@
}
mad_write(MC8_PORT, tmp); /* write MPU port parameters */
-
- return probe_uart401(hw_config);
+ goto probe_401;
#endif
}
tmp = mad_read(MC6_PORT) & 0x83;
@@ -888,8 +876,12 @@
}
}
mad_write(MC6_PORT, tmp); /* Write MPU401 config */
-
- return probe_uart401(hw_config);
+#ifndef CONFIG_MAD16_OLDCARD
+probe_401:
+#endif
+ hw_config->driver_use_1 = SB_MIDI_ONLY;
+ hw_config->name = "Mad16/Mozart";
+ return probe_uart401(hw_config, THIS_MODULE);
}
static void __exit unload_mad16(struct address_info *hw_config)
@@ -1090,10 +1082,6 @@
attach_mad16(&cfg);
found_mpu = probe_mad16_mpu(&cfg_mpu);
-
- if (found_mpu)
- attach_mad16_mpu(&cfg_mpu);
-
return 0;
}
diff -ur linux-2.4.0-test9-7/drivers/sound/mpu401.h linux-2.4.0-test9-7.acme/drivers/sound/mpu401.h
--- linux-2.4.0-test9-7/drivers/sound/mpu401.h Thu Aug 24 07:40:07 2000
+++ linux-2.4.0-test9-7.acme/drivers/sound/mpu401.h Mon Sep 25 23:40:37 2000
@@ -6,8 +6,7 @@
*/
/* From uart401.c */
-int probe_uart401 (struct address_info *hw_config);
-void attach_uart401 (struct address_info *hw_config, struct module *owner);
+int probe_uart401 (struct address_info *hw_config, struct module *owner);
void unload_uart401 (struct address_info *hw_config);
void uart401intr (int irq, void *dev_id, struct pt_regs * dummy);
diff -ur linux-2.4.0-test9-7/drivers/sound/opl3sa.c linux-2.4.0-test9-7.acme/drivers/sound/opl3sa.c
--- linux-2.4.0-test9-7/drivers/sound/opl3sa.c Thu Aug 24 07:40:07 2000
+++ linux-2.4.0-test9-7.acme/drivers/sound/opl3sa.c Mon Sep 25 23:40:37 2000
@@ -14,6 +14,7 @@
* Changes:
* Alan Cox Modularisation
* Christoph Hellwig Adapted to module_init/module_exit
+ * Arnaldo C. de Melo got rid of attach_uart401
*
* FIXME:
* Check for install of mpu etc is wrong, should check result of the mss stuff
@@ -176,12 +177,6 @@
}
-static void __init attach_opl3sa_mpu(struct address_info *hw_config)
-{
- hw_config->name = "OPL3-SA (MPU401)";
- attach_uart401(hw_config, THIS_MODULE);
-}
-
static int __init probe_opl3sa_mpu(struct address_info *hw_config)
{
unsigned char conf;
@@ -197,11 +192,6 @@
DDB(printk("OPL3-SA: MPU mode already initialized\n"));
return 0;
}
- if (check_region(hw_config->io_base, 4))
- {
- printk(KERN_ERR "OPL3-SA: MPU I/O port conflict (%x)\n", hw_config->io_base);
- return 0;
- }
if (hw_config->irq > 10)
{
printk(KERN_ERR "OPL3-SA: Bad MPU IRQ %d\n", hw_config->irq);
@@ -236,8 +226,9 @@
opl3sa_write(0x03, conf);
mpu_initialized = 1;
+ hw_config->name = "OPL3-SA (MPU401)";
- return probe_uart401(hw_config);
+ return probe_uart401(hw_config, THIS_MODULE);
}
static void __exit unload_opl3sa_wss(struct address_info *hw_config)
@@ -310,9 +301,6 @@
found_mpu=probe_opl3sa_mpu(&cfg_mpu);
attach_opl3sa_wss(&cfg);
- if(found_mpu)
- attach_opl3sa_mpu(&cfg_mpu);
-
return 0;
}
diff -ur linux-2.4.0-test9-7/drivers/sound/sb.h linux-2.4.0-test9-7.acme/drivers/sound/sb.h
--- linux-2.4.0-test9-7/drivers/sound/sb.h Thu Aug 24 07:40:07 2000
+++ linux-2.4.0-test9-7.acme/drivers/sound/sb.h Mon Sep 25 23:40:37 2000
@@ -178,8 +178,7 @@
/* From sb_common.c */
void sb_dsp_disable_midi(int port);
void sb_dsp_disable_recording(int port);
-void attach_sbmpu (struct address_info *hw_config, struct module *owner);
-int probe_sbmpu (struct address_info *hw_config);
+int probe_sbmpu (struct address_info *hw_config, struct module *owner);
void unload_sbmpu (struct address_info *hw_config);
void unload_sb16(struct address_info *hw_info);
diff -ur linux-2.4.0-test9-7/drivers/sound/sb_card.c linux-2.4.0-test9-7.acme/drivers/sound/sb_card.c
--- linux-2.4.0-test9-7/drivers/sound/sb_card.c Thu Aug 24 07:40:07 2000
+++ linux-2.4.0-test9-7.acme/drivers/sound/sb_card.c Mon Sep 25 23:40:37 2000
@@ -47,6 +47,9 @@
*
* 12-08-2000 Added Creative SB32 PnP (CTL009F).
* Kasatenko Ivan Alex. <skywriter@rnc.ru>
+ *
+ * 21-09-2000 Got rid of attach_sbmpu
+ * Arnaldo Carvalho de Melo <acme@conectiva.com.br>
*/
#include <linux/config.h>
@@ -683,10 +686,8 @@
if (!isapnp)
cfg_mpu[card].io_base = mpu_io;
- if (probe_sbmpu(&cfg_mpu[card]))
+ if (probe_sbmpu(&cfg_mpu[card], THIS_MODULE))
sbmpu[card] = 1;
- if (sbmpu[card])
- attach_sbmpu(&cfg_mpu[card], THIS_MODULE);
}
if(isapnp)
diff -ur linux-2.4.0-test9-7/drivers/sound/sb_common.c linux-2.4.0-test9-7.acme/drivers/sound/sb_common.c
--- linux-2.4.0-test9-7/drivers/sound/sb_common.c Thu Aug 24 07:40:07 2000
+++ linux-2.4.0-test9-7.acme/drivers/sound/sb_common.c Mon Sep 25 23:40:37 2000
@@ -19,6 +19,8 @@
* 2000/01/18 - separated sb_card and sb_common -
* Jeff Garzik <jgarzik@mandrakesoft.com>
*
+ * 2000/09/18 - got rid of attach_uart401
+ * Arnaldo Carvalho de Melo <acme@conectiva.com.br>
*/
#include <linux/config.h>
@@ -1190,24 +1192,10 @@
return 1;
}
-void attach_sbmpu(struct address_info *hw_config, struct module *owner)
-{
- if (last_sb->model == MDL_ESS) {
-#if defined(CONFIG_SOUND_MPU401)
- attach_mpu401(hw_config, owner);
- if (last_sb->irq == -hw_config->irq) {
- last_sb->midi_irq_cookie=(void *)hw_config->slots[1];
- }
-#endif
- return;
- }
- attach_uart401(hw_config, THIS_MODULE);
- last_sb->midi_irq_cookie=midi_devs[hw_config->slots[4]]->devc;
-}
-
-int probe_sbmpu(struct address_info *hw_config)
+int probe_sbmpu(struct address_info *hw_config, struct module *owner)
{
sb_devc *devc = last_devc;
+ int ret;
if (last_devc == NULL)
return 0;
@@ -1239,15 +1227,15 @@
return 0;
hw_config->name = "ESS1xxx MPU";
devc->midi_irq_cookie = -1;
- return probe_mpu401(hw_config);
+ if (!probe_mpu401(hw_config))
+ return 0;
+ attach_mpu401(hw_config, owner);
+ if (last_sb->irq == -hw_config->irq)
+ last_sb->midi_irq_cookie=(void *)hw_config->slots[1];
+ return 1;
}
#endif
- if (check_region(hw_config->io_base, 4))
- {
- printk(KERN_ERR "sbmpu: I/O port conflict (%x)\n", hw_config->io_base);
- return 0;
- }
switch (devc->model)
{
case MDL_SB16:
@@ -1277,7 +1265,11 @@
default:
return 0;
}
- return probe_uart401(hw_config);
+
+ ret = probe_uart401(hw_config, owner);
+ if (ret)
+ last_sb->midi_irq_cookie=midi_devs[hw_config->slots[4]]->devc;
+ return ret;
}
void unload_sbmpu(struct address_info *hw_config)
@@ -1296,7 +1288,6 @@
EXPORT_SYMBOL(sb_dsp_unload);
EXPORT_SYMBOL(sb_dsp_disable_midi);
EXPORT_SYMBOL(sb_be_quiet);
-EXPORT_SYMBOL(attach_sbmpu);
EXPORT_SYMBOL(probe_sbmpu);
EXPORT_SYMBOL(unload_sbmpu);
EXPORT_SYMBOL(smw_free);
diff -ur linux-2.4.0-test9-7/drivers/sound/trix.c linux-2.4.0-test9-7.acme/drivers/sound/trix.c
--- linux-2.4.0-test9-7/drivers/sound/trix.c Thu Aug 24 07:40:07 2000
+++ linux-2.4.0-test9-7.acme/drivers/sound/trix.c Mon Sep 25 23:40:37 2000
@@ -14,6 +14,7 @@
* Changes
* Alan Cox Modularisation, cleanup.
* Christoph Hellwig Adapted to module_init/module_exit
+ * Arnaldo C. de Melo Got rid of attach_uart401
*/
#include <linux/config.h>
@@ -337,12 +338,6 @@
sb_be_quiet = old_quiet;
}
-static void __init attach_trix_mpu(struct address_info *hw_config)
-{
- hw_config->name = "AudioTrix Pro";
- attach_uart401(hw_config, THIS_MODULE);
-}
-
static int __init probe_trix_mpu(struct address_info *hw_config)
{
unsigned char conf;
@@ -365,11 +360,6 @@
DDB(printk("Trix: MPU mode already initialized\n"));
return 0;
}
- if (check_region(hw_config->io_base, 4))
- {
- printk(KERN_ERR "AudioTrix: MPU I/O port conflict (%x)\n", hw_config->io_base);
- return 0;
- }
if (hw_config->irq > 9)
{
printk(KERN_ERR "AudioTrix: Bad MPU IRQ %d\n", hw_config->irq);
@@ -401,7 +391,8 @@
conf |= irq_bits[hw_config->irq] << 4;
trix_write(0x19, (trix_read(0x19) & 0x83) | conf);
mpu_initialized = 1;
- return probe_uart401(hw_config);
+ hw_config->name = "AudioTrix Pro";
+ return probe_uart401(hw_config, THIS_MODULE);
}
static void __exit unload_trix_wss(struct address_info *hw_config)
@@ -510,11 +501,8 @@
attach_trix_sb(&cfg2);
}
- if (cfg_mpu.io_base != -1) {
+ if (cfg_mpu.io_base != -1)
mpu = probe_trix_mpu(&cfg_mpu);
- if (mpu)
- attach_trix_mpu(&cfg_mpu);
- }
return 0;
}
diff -ur linux-2.4.0-test9-7/drivers/sound/uart401.c linux-2.4.0-test9-7.acme/drivers/sound/uart401.c
--- linux-2.4.0-test9-7/drivers/sound/uart401.c Mon Sep 25 23:31:34 2000
+++ linux-2.4.0-test9-7.acme/drivers/sound/uart401.c Mon Sep 25 23:40:37 2000
@@ -15,6 +15,7 @@
* interrupt allocation. Protect against bogus unload
* Fixed to allow IRQ > 15
* Christoph Hellwig Adapted to module_init/module_exit
+ * Arnaldo C. de Melo got rid of check_region
*
* Status:
* Untested
@@ -40,8 +41,6 @@
}
uart401_devc;
-static uart401_devc *detected_devc = NULL;
-
#define DATAPORT (devc->base)
#define COMDPORT (devc->base+1)
#define STATPORT (devc->base+1)
@@ -241,95 +240,6 @@
restore_flags(flags);
}
-void attach_uart401(struct address_info *hw_config, struct module *owner)
-{
- uart401_devc *devc;
- char *name = "MPU-401 (UART) MIDI";
-
-
- if (hw_config->name)
- name = hw_config->name;
-
- if (detected_devc == NULL)
- return;
-
-
- devc = (uart401_devc *) kmalloc(sizeof(uart401_devc), GFP_KERNEL);
- if (devc == NULL)
- {
- printk(KERN_WARNING "uart401: Can't allocate memory\n");
- return;
- }
- memcpy((char *) devc, (char *) detected_devc, sizeof(uart401_devc));
- detected_devc = NULL;
-
- devc->irq = hw_config->irq;
- if (devc->irq < 0)
- {
- devc->share_irq = 1;
- devc->irq *= -1;
- }
- else
- devc->share_irq = 0;
-
- if (!devc->share_irq)
- {
- if (request_irq(devc->irq, uart401intr, 0, "MPU-401 UART", devc) < 0)
- {
- printk(KERN_WARNING "uart401: Failed to allocate IRQ%d\n", devc->irq);
- devc->share_irq = 1;
- }
- }
- devc->my_dev = sound_alloc_mididev();
-
- request_region(hw_config->io_base, 4, "MPU-401 UART");
- enter_uart_mode(devc);
-
- if (devc->my_dev == -1)
- {
- printk(KERN_INFO "uart401: Too many midi devices detected\n");
- kfree(devc);
- return;
- }
- conf_printf(name, hw_config);
-
- std_midi_synth.midi_dev = devc->my_dev;
- midi_devs[devc->my_dev] = (struct midi_operations *)kmalloc(sizeof(struct midi_operations), GFP_KERNEL);
- if (midi_devs[devc->my_dev] == NULL)
- {
- printk(KERN_ERR "uart401: Failed to allocate memory\n");
- sound_unload_mididev(devc->my_dev);
- kfree(devc);
- devc=NULL;
- return;
- }
- memcpy((char *) midi_devs[devc->my_dev], (char *) &uart401_operations,
- sizeof(struct midi_operations));
-
- if (owner)
- midi_devs[devc->my_dev]->owner = owner;
-
- midi_devs[devc->my_dev]->devc = devc;
- midi_devs[devc->my_dev]->converter = (struct synth_operations *)kmalloc(sizeof(struct synth_operations), GFP_KERNEL);
- if (midi_devs[devc->my_dev]->converter == NULL)
- {
- printk(KERN_WARNING "uart401: Failed to allocate memory\n");
- kfree(midi_devs[devc->my_dev]);
- sound_unload_mididev(devc->my_dev);
- kfree(devc);
- devc=NULL;
- return;
- }
- memcpy((char *) midi_devs[devc->my_dev]->converter, (char *) &std_midi_synth,
- sizeof(struct synth_operations));
-
- strcpy(midi_devs[devc->my_dev]->info.name, name);
- midi_devs[devc->my_dev]->converter->id = "UART401";
- hw_config->slots[4] = devc->my_dev;
- sequencer_init();
- devc->opened = 0;
-}
-
static int reset_uart401(uart401_devc * devc)
{
int ok, timeout, n;
@@ -379,21 +289,28 @@
return ok;
}
-int probe_uart401(struct address_info *hw_config)
+int probe_uart401(struct address_info *hw_config, struct module *owner)
{
+ uart401_devc *devc;
+ char *name = "MPU-401 (UART) MIDI";
int ok = 0;
unsigned long flags;
- static uart401_devc hw_info;
- uart401_devc *devc = &hw_info;
DDB(printk("Entered probe_uart401()\n"));
/* Default to "not found" */
hw_config->slots[4] = -1;
- detected_devc = NULL;
- if (check_region(hw_config->io_base, 4))
+ if (!request_region(hw_config->io_base, 4, "MPU-401 UART")) {
+ printk(KERN_INFO "uart401: could not request_region(%d, 4)\n", hw_config->io_base);
return 0;
+ }
+
+ devc = kmalloc(sizeof(uart401_devc), GFP_KERNEL);
+ if (!devc) {
+ printk(KERN_WARNING "uart401: Can't allocate memory\n");
+ goto cleanup_region;
+ }
devc->base = hw_config->io_base;
devc->irq = hw_config->irq;
@@ -409,10 +326,67 @@
ok = reset_uart401(devc);
restore_flags(flags);
- if (ok)
- detected_devc = devc;
+ if (!ok)
+ goto cleanup_devc;
- return ok;
+ if (hw_config->name)
+ name = hw_config->name;
+
+ if (devc->irq < 0) {
+ devc->share_irq = 1;
+ devc->irq *= -1;
+ } else
+ devc->share_irq = 0;
+
+ if (!devc->share_irq)
+ if (request_irq(devc->irq, uart401intr, 0, "MPU-401 UART", devc) < 0) {
+ printk(KERN_WARNING "uart401: Failed to allocate IRQ%d\n", devc->irq);
+ devc->share_irq = 1;
+ }
+ devc->my_dev = sound_alloc_mididev();
+ enter_uart_mode(devc);
+
+ if (devc->my_dev == -1) {
+ printk(KERN_INFO "uart401: Too many midi devices detected\n");
+ goto cleanup_irq;
+ }
+ conf_printf(name, hw_config);
+ std_midi_synth.midi_dev = devc->my_dev;
+ midi_devs[devc->my_dev] = kmalloc(sizeof(struct midi_operations), GFP_KERNEL);
+ if (!midi_devs[devc->my_dev]) {
+ printk(KERN_ERR "uart401: Failed to allocate memory\n");
+ goto cleanup_unload_mididev;
+ }
+ memcpy(midi_devs[devc->my_dev], &uart401_operations, sizeof(struct midi_operations));
+
+ if (owner)
+ midi_devs[devc->my_dev]->owner = owner;
+
+ midi_devs[devc->my_dev]->devc = devc;
+ midi_devs[devc->my_dev]->converter = kmalloc(sizeof(struct synth_operations), GFP_KERNEL);
+ if (!midi_devs[devc->my_dev]->converter) {
+ printk(KERN_WARNING "uart401: Failed to allocate memory\n");
+ goto cleanup_midi_devs;
+ }
+ memcpy(midi_devs[devc->my_dev]->converter, &std_midi_synth, sizeof(struct synth_operations));
+ strcpy(midi_devs[devc->my_dev]->info.name, name);
+ midi_devs[devc->my_dev]->converter->id = "UART401";
+ hw_config->slots[4] = devc->my_dev;
+ sequencer_init();
+ devc->opened = 0;
+ return 1;
+cleanup_midi_devs:
+ kfree(midi_devs[devc->my_dev]);
+cleanup_unload_mididev:
+ sound_unload_mididev(devc->my_dev);
+cleanup_irq:
+ if (!devc->share_irq)
+ free_irq(devc->irq, devc);
+cleanup_devc:
+ kfree(devc);
+cleanup_region:
+ release_region(hw_config->io_base, 4);
+ return 0;
}
void unload_uart401(struct address_info *hw_config)
@@ -446,7 +420,6 @@
sound_unload_mididev(hw_config->slots[4]);
}
-EXPORT_SYMBOL(attach_uart401);
EXPORT_SYMBOL(probe_uart401);
EXPORT_SYMBOL(unload_uart401);
EXPORT_SYMBOL(uart401intr);
@@ -469,9 +442,8 @@
to others */
if (cfg_mpu.io_base != -1 && cfg_mpu.irq != -1) {
printk(KERN_INFO "MPU-401 UART driver Copyright (C) Hannu Savolainen 1993-1997");
- if (probe_uart401(&cfg_mpu) == 0)
+ if (!probe_uart401(&cfg_mpu, THIS_MODULE))
return -ENODEV;
- attach_uart401(&cfg_mpu, THIS_MODULE);
}
return 0;
diff -ur linux-2.4.0-test9-7/drivers/sound/ymf_sb.c linux-2.4.0-test9-7.acme/drivers/sound/ymf_sb.c
--- linux-2.4.0-test9-7/drivers/sound/ymf_sb.c Thu Aug 24 07:40:08 2000
+++ linux-2.4.0-test9-7.acme/drivers/sound/ymf_sb.c Mon Sep 25 23:40:37 2000
@@ -40,6 +40,9 @@
in 724hwmcode.h.
* fixed wrong legacy_io setting on YMF744/YMF754 .
+ Thu Sep 21 05:32:51 BRT 2000 0.0.5
+ * got rid of attach_uart401 and attach_sbmpu
+ Arnaldo Carvalho de Melo <acme@conectiva.com.br>
*/
#include <linux/module.h>
@@ -217,17 +220,15 @@
#define PFX "ymf_sb: "
-#define YMFSB_VERSION "0.0.4"
+#define YMFSB_VERSION "0.0.5"
#define YMFSB_CARD_NAME "YMF7xx Legacy Audio driver " YMFSB_VERSION
#ifdef SUPPORT_UART401_MIDI
#if 0
# define ymf7xxsb_probe_midi probe_uart401
-# define ymf7xxsb_attach_midi attach_uart401
# define ymf7xxsb_unload_midi unload_uart401
#else
# define ymf7xxsb_probe_midi probe_sbmpu
-# define ymf7xxsb_attach_midi attach_sbmpu
# define ymf7xxsb_unload_midi unload_sbmpu
#endif
#endif
@@ -771,14 +772,13 @@
/* register legacy MIDI */
if ( mpu_io > 0 && 0)
{
- if (!ymf7xxsb_probe_midi (&mpu_data[cards])) {
+ if (!ymf7xxsb_probe_midi (&mpu_data[cards], THIS_MODULE)) {
printk (KERN_ERR PFX
"MIDI probe @ 0x%X failed, aborting\n",
mpu_io);
ymf7xxsb_unload_sb (&sb_data[cards], 0);
return -ENODEV;
}
- ymf7xxsb_attach_midi (&mpu_data[cards], THIS_MODULE);
}
#endif
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Sat Sep 30 2000 - 21:00:18 EST