[ALSA] cmipci: check that the legacy MIDI port works
Clemens Ladisch [Mon, 3 Sep 2007 07:56:23 +0000 (09:56 +0200)]
Check that the UART_EN bit actually enabled the MPU-401 port.
Apparently, C-Media thinks that it is a good idea to be paranoid here.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>

sound/pci/cmipci.c

index fdc4615..9149d00 100644 (file)
@@ -3012,6 +3012,13 @@ static int __devinit snd_cmipci_create(struct snd_card *card, struct pci_dev *pc
                        snd_cmipci_write(cm, CM_REG_LEGACY_CTRL, val);
                        /* enable UART */
                        snd_cmipci_set_bit(cm, CM_REG_FUNCTRL1, CM_UART_EN);
+                       if (inb(iomidi + 1) == 0xff) {
+                               snd_printk(KERN_ERR "cannot enable MPU-401 port"
+                                          " at %#lx\n", iomidi);
+                               snd_cmipci_clear_bit(cm, CM_REG_FUNCTRL1,
+                                                    CM_UART_EN);
+                               iomidi = 0;
+                       }
                }
        }