"Rob W. van Swol" wrote:
> 
> Hi,
> 
> I cannot find an answer to my problem. Sound was always working ok in
> 2.2.x and 2.4.1 kernels. But now the opl3sa2 module won't load anymore.
> First I got the messages:
> 
> opl3sa2: No cards found
> opl3sa2: 0 PnP card(s) found.
> 
> The I added isapnp=0 to the options line in /etc/modules.conf and then I
> get:
> 
> opl3sa2: Control I/O port 0x0 not free
>                           ^^^
> It seems that the io address is not correctly passed to the module?!
> 

I got the same problem and i think there is an error in opl3sa2.c ?
I thinnk the problem is in the init_opl3sa2() function, in this line :

if(!isapnp && io == -1 ) {

If you don't use/have IsaPNP then the cfg[card] struct is not/never
initialized ... ?

I made a quick patch that correct this test ... but I think we should
find a better way to choose between initializing the cfg[card] struct
using opl3sa2_isapnp_probe or using the user suplied module parameters
... no ?

-- 
Jérôme Augé
echo [EMAIL PROTECTED] | tr khplmndvqyc nirtelacufj
--- opl3sa2.c.orig      Wed Feb 28 14:44:03 2001
+++ opl3sa2.c   Wed Feb 28 14:48:07 2001
@@ -914,13 +914,8 @@
 #endif
                /* If a user wants an I/O then assume they meant it */
                
-               if(!isapnp && io == -1 ) {
-                       if(io == -1 || irq == -1 || dma == -1 ||
-                          dma2 == -1 || mss_io == -1) {
-                               printk(KERN_ERR
-                                      "opl3sa2: io, mss_io, irq, dma, and dma2 must 
be set\n");
-                               return -EINVAL;
-                       }
+               if((io != -1) && (irq != -1) && (dma != -1) &&
+                       (dma2 != -1) && (mss_io != -1) && (mpu_io !=-1)) {
 
                        /*
                         * Our own config:
@@ -948,6 +943,9 @@
                        opl3sa2_clear_slots(&cfg[card]);
                        opl3sa2_clear_slots(&cfg_mss[card]);
                        opl3sa2_clear_slots(&cfg_mpu[card]);
+               } else {
+                       printk(KERN_ERR "opl3sa2: io, mss_io, irq, dma, and dma2 must 
+be set\n");
+                       return -EINVAL;
                }
 
                if(!probe_opl3sa2(&cfg[card], card) ||

Reply via email to