diff --git a/alsa-firmware-loading-3.8.8.patch b/alsa-firmware-loading-3.8.8.patch deleted file mode 100644 index d48ee4b..0000000 --- a/alsa-firmware-loading-3.8.8.patch +++ /dev/null @@ -1,89 +0,0 @@ -diff --git a/include/sound/emu10k1.h b/include/sound/emu10k1.h -index f841ba4..dfb42ca 100644 ---- a/include/sound/emu10k1.h -+++ b/include/sound/emu10k1.h -@@ -1787,6 +1787,7 @@ struct snd_emu10k1 { - unsigned int next_free_voice; - - const struct firmware *firmware; -+ const struct firmware *dock_fw; - - #ifdef CONFIG_PM_SLEEP - unsigned int *saved_ptr; -diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c -index e6b0166..bdd888e 100644 ---- a/sound/pci/emu10k1/emu10k1_main.c -+++ b/sound/pci/emu10k1/emu10k1_main.c -@@ -657,14 +657,14 @@ static int snd_emu10k1_cardbus_init(struct snd_emu10k1 *emu) - return 0; - } - --static int snd_emu1010_load_firmware(struct snd_emu10k1 *emu) -+static int snd_emu1010_load_firmware(struct snd_emu10k1 *emu, -+ const struct firmware *fw_entry) - { - int n, i; - int reg; - int value; - unsigned int write_post; - unsigned long flags; -- const struct firmware *fw_entry = emu->firmware; - - if (!fw_entry) - return -EIO; -@@ -725,9 +725,34 @@ static int emu1010_firmware_thread(void *data) - /* Return to Audio Dock programming mode */ - snd_printk(KERN_INFO "emu1010: Loading Audio Dock Firmware\n"); - snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG, EMU_HANA_FPGA_CONFIG_AUDIODOCK); -- err = snd_emu1010_load_firmware(emu); -- if (err != 0) -- continue; -+ -+ if (!emu->dock_fw) { -+ const char *filename = NULL; -+ switch (emu->card_capabilities->emu_model) { -+ case EMU_MODEL_EMU1010: -+ filename = DOCK_FILENAME; -+ break; -+ case EMU_MODEL_EMU1010B: -+ filename = MICRO_DOCK_FILENAME; -+ break; -+ case EMU_MODEL_EMU1616: -+ filename = MICRO_DOCK_FILENAME; -+ break; -+ } -+ if (filename) { -+ err = request_firmware(&emu->dock_fw, -+ filename, -+ &emu->pci->dev); -+ if (err) -+ continue; -+ } -+ } -+ -+ if (emu->dock_fw) { -+ err = snd_emu1010_load_firmware(emu, emu->dock_fw); -+ if (err) -+ continue; -+ } - - snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG, 0); - snd_emu1010_fpga_read(emu, EMU_HANA_IRQ_STATUS, ®); -@@ -862,7 +887,7 @@ static int snd_emu10k1_emu1010_init(struct snd_emu10k1 *emu) - filename, emu->firmware->size); - } - -- err = snd_emu1010_load_firmware(emu); -+ err = snd_emu1010_load_firmware(emu, emu->firmware); - if (err != 0) { - snd_printk(KERN_INFO "emu1010: Loading Firmware failed\n"); - return err; -@@ -1253,6 +1278,8 @@ static int snd_emu10k1_free(struct snd_emu10k1 *emu) - kthread_stop(emu->emu1010.firmware_thread); - if (emu->firmware) - release_firmware(emu->firmware); -+ if (emu->dock_fw) -+ release_firmware(emu->dock_fw); - if (emu->irq >= 0) - free_irq(emu->irq, emu); - /* remove reserved page */ \ No newline at end of file