ALSA: emu10k1: Fix emu1010 dock attach check
authorTakashi Iwai <tiwai@suse.de>
Wed, 2 Nov 2016 15:38:21 +0000 (16:38 +0100)
committerTakashi Iwai <tiwai@suse.de>
Tue, 15 Nov 2016 07:01:14 +0000 (08:01 +0100)
The emu1010_firmware_thread() checks the previous dock status, but a
wrong register is recorded as the last status when the dock is plugged
in.  Usually this isn't a big issue since this value gets overwritten
by the next loop after one second.  But when a dock is unplugged
immediately after plugging, it means essentially missing undock
handling.

This patch addresses it by remembering the correct register value.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/emu10k1/emu10k1_main.c

index 891453451543102994b7912584f00483b2c472f0..c1b603a8922cf16768165c77938adbc4647d0379 100644 (file)
@@ -762,19 +762,19 @@ static int emu1010_firmware_thread(void *data)
                        }
 
                        snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG, 0);
-                       snd_emu1010_fpga_read(emu, EMU_HANA_IRQ_STATUS, &reg);
+                       snd_emu1010_fpga_read(emu, EMU_HANA_IRQ_STATUS, &tmp);
                        dev_info(emu->card->dev,
                                 "emu1010: EMU_HANA+DOCK_IRQ_STATUS = 0x%x\n",
-                                reg);
+                                tmp);
                        /* ID, should read & 0x7f = 0x55 when FPGA programmed. */
-                       snd_emu1010_fpga_read(emu, EMU_HANA_ID, &reg);
+                       snd_emu1010_fpga_read(emu, EMU_HANA_ID, &tmp);
                        dev_info(emu->card->dev,
-                                "emu1010: EMU_HANA+DOCK_ID = 0x%x\n", reg);
-                       if ((reg & 0x1f) != 0x15) {
+                                "emu1010: EMU_HANA+DOCK_ID = 0x%x\n", tmp);
+                       if ((tmp & 0x1f) != 0x15) {
                                /* FPGA failed to be programmed */
                                dev_info(emu->card->dev,
                                         "emu1010: Loading Audio Dock Firmware file failed, reg = 0x%x\n",
-                                        reg);
+                                        tmp);
                                continue;
                        }
                        dev_info(emu->card->dev,