ALSA: sc6000: fix older card initialization
Krzysztof Helt [Thu, 23 Apr 2009 19:46:19 +0000 (21:46 +0200)]
The last patch to handle newer cards like SC7000
broke initialization of the SC6000. Fix this.

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

sound/isa/sc6000.c

index 983ab7e..c803b2e 100644 (file)
@@ -391,7 +391,6 @@ static int __devinit sc6000_init_board(char __iomem *vport,
        int config = mss_config |
                     sc6000_mpu_irq_to_softcfg(mpu_irq[dev]);
        int err;
-       int cfg[2];
        int old = 0;
 
        err = sc6000_dsp_reset(vport);
@@ -421,11 +420,18 @@ static int __devinit sc6000_init_board(char __iomem *vport,
                answer, version[0], version[1]);
 
        /* set configuration */
-       sc6000_hw_cfg_encode(vport, &cfg[0], port[dev], mpu_port[dev],
-                            mss_port[dev]);
-       if (sc6000_hw_cfg_write(vport, cfg) < 0) {
-               snd_printk(KERN_ERR "sc6000_hw_cfg_write: failed!\n");
-               return -EIO;
+       sc6000_write(vport, COMMAND_5C);
+       if (sc6000_read(vport) < 0)
+               old = 1;
+
+       if (!old) {
+               int cfg[2];
+               sc6000_hw_cfg_encode(vport, &cfg[0], port[dev], mpu_port[dev],
+                                    mss_port[dev]);
+               if (sc6000_hw_cfg_write(vport, cfg) < 0) {
+                       snd_printk(KERN_ERR "sc6000_hw_cfg_write: failed!\n");
+                       return -EIO;
+               }
        }
        err = sc6000_setup_board(vport, config);
        if (err < 0) {
@@ -434,10 +440,6 @@ static int __devinit sc6000_init_board(char __iomem *vport,
        }
 
        sc6000_dsp_reset(vport);
-       sc6000_write(vport, COMMAND_5C);
-       if (sc6000_read(vport) < 0)
-               old = 1;
-       sc6000_dsp_reset(vport);
 
        if (!old) {
                sc6000_write(vport, COMMAND_60);