diff options
author | Takashi Iwai <tiwai@suse.de> | 2016-11-02 11:38:21 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2016-11-15 02:01:14 -0500 |
commit | e8c44abeab76cc3b1d79242612b9a2d82ab11b6b (patch) | |
tree | 6621a43cee03b6ce0e36da7dff8961416b7fed61 | |
parent | 43e575fabbaa1cc9e25dd0bb31eb6657ac7092ec (diff) |
ALSA: emu10k1: Fix emu1010 dock attach check
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>
-rw-r--r-- | sound/pci/emu10k1/emu10k1_main.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c index 891453451543..c1b603a8922c 100644 --- a/sound/pci/emu10k1/emu10k1_main.c +++ b/sound/pci/emu10k1/emu10k1_main.c | |||
@@ -762,19 +762,19 @@ static int emu1010_firmware_thread(void *data) | |||
762 | } | 762 | } |
763 | 763 | ||
764 | snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG, 0); | 764 | snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG, 0); |
765 | snd_emu1010_fpga_read(emu, EMU_HANA_IRQ_STATUS, ®); | 765 | snd_emu1010_fpga_read(emu, EMU_HANA_IRQ_STATUS, &tmp); |
766 | dev_info(emu->card->dev, | 766 | dev_info(emu->card->dev, |
767 | "emu1010: EMU_HANA+DOCK_IRQ_STATUS = 0x%x\n", | 767 | "emu1010: EMU_HANA+DOCK_IRQ_STATUS = 0x%x\n", |
768 | reg); | 768 | tmp); |
769 | /* ID, should read & 0x7f = 0x55 when FPGA programmed. */ | 769 | /* ID, should read & 0x7f = 0x55 when FPGA programmed. */ |
770 | snd_emu1010_fpga_read(emu, EMU_HANA_ID, ®); | 770 | snd_emu1010_fpga_read(emu, EMU_HANA_ID, &tmp); |
771 | dev_info(emu->card->dev, | 771 | dev_info(emu->card->dev, |
772 | "emu1010: EMU_HANA+DOCK_ID = 0x%x\n", reg); | 772 | "emu1010: EMU_HANA+DOCK_ID = 0x%x\n", tmp); |
773 | if ((reg & 0x1f) != 0x15) { | 773 | if ((tmp & 0x1f) != 0x15) { |
774 | /* FPGA failed to be programmed */ | 774 | /* FPGA failed to be programmed */ |
775 | dev_info(emu->card->dev, | 775 | dev_info(emu->card->dev, |
776 | "emu1010: Loading Audio Dock Firmware file failed, reg = 0x%x\n", | 776 | "emu1010: Loading Audio Dock Firmware file failed, reg = 0x%x\n", |
777 | reg); | 777 | tmp); |
778 | continue; | 778 | continue; |
779 | } | 779 | } |
780 | dev_info(emu->card->dev, | 780 | dev_info(emu->card->dev, |