aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2008-04-25 03:13:45 -0400
committerTakashi Iwai <tiwai@suse.de>2008-04-29 13:01:56 -0400
commitdf7e3fdf83699328d1fdf7000ce0dc852fbb0ad9 (patch)
treedc5ca06bc0754352c8adf201b4f950d7fbf7c0b1
parenta01e035ebb552223c03f2d9138ffc73f2d4d3965 (diff)
[ALSA] Add MPU401_INFO_NO_ACK bitflag
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>
-rw-r--r--include/sound/mpu401.h1
-rw-r--r--sound/drivers/mpu401/mpu401_uart.c2
-rw-r--r--sound/pci/ice1712/ice1724.c1
3 files changed, 3 insertions, 1 deletions
diff --git a/include/sound/mpu401.h b/include/sound/mpu401.h
index 68b634b75068..1f1d53f8830b 100644
--- a/include/sound/mpu401.h
+++ b/include/sound/mpu401.h
@@ -50,6 +50,7 @@
50#define MPU401_INFO_INTEGRATED (1 << 2) /* integrated h/w port */ 50#define MPU401_INFO_INTEGRATED (1 << 2) /* integrated h/w port */
51#define MPU401_INFO_MMIO (1 << 3) /* MMIO access */ 51#define MPU401_INFO_MMIO (1 << 3) /* MMIO access */
52#define MPU401_INFO_TX_IRQ (1 << 4) /* independent TX irq */ 52#define MPU401_INFO_TX_IRQ (1 << 4) /* independent TX irq */
53#define MPU401_INFO_NO_ACK (1 << 6) /* No ACK cmd needed */
53 54
54#define MPU401_MODE_BIT_INPUT 0 55#define MPU401_MODE_BIT_INPUT 0
55#define MPU401_MODE_BIT_OUTPUT 1 56#define MPU401_MODE_BIT_OUTPUT 1
diff --git a/sound/drivers/mpu401/mpu401_uart.c b/sound/drivers/mpu401/mpu401_uart.c
index 18cca2457d44..2af09996a3d0 100644
--- a/sound/drivers/mpu401/mpu401_uart.c
+++ b/sound/drivers/mpu401/mpu401_uart.c
@@ -243,7 +243,7 @@ static int snd_mpu401_uart_cmd(struct snd_mpu401 * mpu, unsigned char cmd,
243#endif 243#endif
244 } 244 }
245 mpu->write(mpu, cmd, MPU401C(mpu)); 245 mpu->write(mpu, cmd, MPU401C(mpu));
246 if (ack) { 246 if (ack && !(mpu->info_flags & MPU401_INFO_NO_ACK)) {
247 ok = 0; 247 ok = 0;
248 timeout = 10000; 248 timeout = 10000;
249 while (!ok && timeout-- > 0) { 249 while (!ok && timeout-- > 0) {
diff --git a/sound/pci/ice1712/ice1724.c b/sound/pci/ice1712/ice1724.c
index 4490422fb930..681fbbd8a5ce 100644
--- a/sound/pci/ice1712/ice1724.c
+++ b/sound/pci/ice1712/ice1724.c
@@ -2429,6 +2429,7 @@ static int __devinit snd_vt1724_probe(struct pci_dev *pci,
2429 if ((err = snd_mpu401_uart_new(card, 0, MPU401_HW_ICE1712, 2429 if ((err = snd_mpu401_uart_new(card, 0, MPU401_HW_ICE1712,
2430 ICEREG1724(ice, MPU_CTRL), 2430 ICEREG1724(ice, MPU_CTRL),
2431 (MPU401_INFO_INTEGRATED | 2431 (MPU401_INFO_INTEGRATED |
2432 MPU401_INFO_NO_ACK |
2432 MPU401_INFO_TX_IRQ), 2433 MPU401_INFO_TX_IRQ),
2433 ice->irq, 0, 2434 ice->irq, 0,
2434 &ice->rmidi[0])) < 0) { 2435 &ice->rmidi[0])) < 0) {