aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/emu10k1/emu10k1_main.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c
index 4887299011ef..54079f5d5673 100644
--- a/sound/pci/emu10k1/emu10k1_main.c
+++ b/sound/pci/emu10k1/emu10k1_main.c
@@ -707,6 +707,7 @@ static int emu1010_firmware_thread(void *data)
707{ 707{
708 struct snd_emu10k1 *emu = data; 708 struct snd_emu10k1 *emu = data;
709 u32 tmp, tmp2, reg; 709 u32 tmp, tmp2, reg;
710 u32 last_reg = 0;
710 int err; 711 int err;
711 712
712 for (;;) { 713 for (;;) {
@@ -782,7 +783,15 @@ static int emu1010_firmware_thread(void *data)
782 msleep(10); 783 msleep(10);
783 /* Unmute all. Default is muted after a firmware load */ 784 /* Unmute all. Default is muted after a firmware load */
784 snd_emu1010_fpga_write(emu, EMU_HANA_UNMUTE, EMU_UNMUTE); 785 snd_emu1010_fpga_write(emu, EMU_HANA_UNMUTE, EMU_UNMUTE);
786 } else if (!reg && last_reg) {
787 /* Audio Dock removed */
788 dev_info(emu->card->dev,
789 "emu1010: Audio Dock detached\n");
790 /* Unmute all */
791 snd_emu1010_fpga_write(emu, EMU_HANA_UNMUTE, EMU_UNMUTE);
785 } 792 }
793
794 last_reg = reg;
786 } 795 }
787 dev_info(emu->card->dev, "emu1010: firmware thread stopping\n"); 796 dev_info(emu->card->dev, "emu1010: firmware thread stopping\n");
788 return 0; 797 return 0;