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>
This commit is contained in:
parent
43e575fabb
commit
e8c44abeab
|
@ -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, ®);
|
||||
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, ®);
|
||||
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,
|
||||
|
|
Loading…
Reference in New Issue