[ALSA] Add MPU401_INFO_NO_ACK bitflag
Takashi Iwai [Fri, 25 Apr 2008 07:13:45 +0000 (09:13 +0200)]
Added MPU401_INFO_NO_ACK bitflag to ignore the ACK check for UART
commands.  VT172x doesn't handle ACK commands, for example.

Tested-by: Pavel Hofman <pavel.hofman@insite.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

include/sound/mpu401.h
sound/drivers/mpu401/mpu401_uart.c
sound/pci/ice1712/ice1724.c

index 68b634b..1f1d53f 100644 (file)
@@ -50,6 +50,7 @@
 #define MPU401_INFO_INTEGRATED (1 << 2)        /* integrated h/w port */
 #define MPU401_INFO_MMIO       (1 << 3)        /* MMIO access */
 #define MPU401_INFO_TX_IRQ     (1 << 4)        /* independent TX irq */
+#define MPU401_INFO_NO_ACK     (1 << 6)        /* No ACK cmd needed */
 
 #define MPU401_MODE_BIT_INPUT          0
 #define MPU401_MODE_BIT_OUTPUT         1
index 18cca24..2af0999 100644 (file)
@@ -243,7 +243,7 @@ static int snd_mpu401_uart_cmd(struct snd_mpu401 * mpu, unsigned char cmd,
 #endif
        }
        mpu->write(mpu, cmd, MPU401C(mpu));
-       if (ack) {
+       if (ack && !(mpu->info_flags & MPU401_INFO_NO_ACK)) {
                ok = 0;
                timeout = 10000;
                while (!ok && timeout-- > 0) {
index 4490422..681fbbd 100644 (file)
@@ -2429,6 +2429,7 @@ static int __devinit snd_vt1724_probe(struct pci_dev *pci,
                        if ((err = snd_mpu401_uart_new(card, 0, MPU401_HW_ICE1712,
                                                       ICEREG1724(ice, MPU_CTRL),
                                                       (MPU401_INFO_INTEGRATED |
+                                                       MPU401_INFO_NO_ACK |
                                                        MPU401_INFO_TX_IRQ),
                                                       ice->irq, 0,
                                                       &ice->rmidi[0])) < 0) {