|
Lines 55-66
Link Here
|
| 55 |
#define DOCK_FILENAME "emu/audio_dock.fw" |
55 |
#define DOCK_FILENAME "emu/audio_dock.fw" |
| 56 |
#define EMU1010B_FILENAME "emu/emu1010b.fw" |
56 |
#define EMU1010B_FILENAME "emu/emu1010b.fw" |
| 57 |
#define MICRO_DOCK_FILENAME "emu/micro_dock.fw" |
57 |
#define MICRO_DOCK_FILENAME "emu/micro_dock.fw" |
|
|
58 |
#define EMU0404_FILENAME "emu/emu0404.fw" |
| 58 |
#define EMU1010_NOTEBOOK_FILENAME "emu/emu1010_notebook.fw" |
59 |
#define EMU1010_NOTEBOOK_FILENAME "emu/emu1010_notebook.fw" |
| 59 |
|
60 |
|
| 60 |
MODULE_FIRMWARE(HANA_FILENAME); |
61 |
MODULE_FIRMWARE(HANA_FILENAME); |
| 61 |
MODULE_FIRMWARE(DOCK_FILENAME); |
62 |
MODULE_FIRMWARE(DOCK_FILENAME); |
| 62 |
MODULE_FIRMWARE(EMU1010B_FILENAME); |
63 |
MODULE_FIRMWARE(EMU1010B_FILENAME); |
| 63 |
MODULE_FIRMWARE(MICRO_DOCK_FILENAME); |
64 |
MODULE_FIRMWARE(MICRO_DOCK_FILENAME); |
|
|
65 |
MODULE_FIRMWARE(EMU0404_FILENAME); |
| 64 |
MODULE_FIRMWARE(EMU1010_NOTEBOOK_FILENAME); |
66 |
MODULE_FIRMWARE(EMU1010_NOTEBOOK_FILENAME); |
| 65 |
|
67 |
|
| 66 |
|
68 |
|
|
Lines 288-294
static int snd_emu10k1_init(struct snd_e
Link Here
|
| 288 |
snd_emu10k1_ptr_write(emu, MAPB, ch, silent_page); |
290 |
snd_emu10k1_ptr_write(emu, MAPB, ch, silent_page); |
| 289 |
} |
291 |
} |
| 290 |
|
292 |
|
| 291 |
if (emu->card_capabilities->emu1010) { |
293 |
if (emu->card_capabilities->emu_model) { |
| 292 |
outl(HCFG_AUTOMUTE_ASYNC | |
294 |
outl(HCFG_AUTOMUTE_ASYNC | |
| 293 |
HCFG_EMU32_SLAVE | |
295 |
HCFG_EMU32_SLAVE | |
| 294 |
HCFG_AUDIOENABLE, emu->port + HCFG); |
296 |
HCFG_AUDIOENABLE, emu->port + HCFG); |
|
Lines 318-324
static int snd_emu10k1_init(struct snd_e
Link Here
|
| 318 |
outl(HCFG_LOCKTANKCACHE_MASK | HCFG_AUTOMUTE | HCFG_JOYENABLE, emu->port + HCFG); |
320 |
outl(HCFG_LOCKTANKCACHE_MASK | HCFG_AUTOMUTE | HCFG_JOYENABLE, emu->port + HCFG); |
| 319 |
|
321 |
|
| 320 |
if (enable_ir) { /* enable IR for SB Live */ |
322 |
if (enable_ir) { /* enable IR for SB Live */ |
| 321 |
if (emu->card_capabilities->emu1010) { |
323 |
if (emu->card_capabilities->emu_model) { |
| 322 |
; /* Disable all access to A_IOCFG for the emu1010 */ |
324 |
; /* Disable all access to A_IOCFG for the emu1010 */ |
| 323 |
} else if (emu->card_capabilities->i2c_adc) { |
325 |
} else if (emu->card_capabilities->i2c_adc) { |
| 324 |
; /* Disable A_IOCFG for Audigy 2 ZS Notebook */ |
326 |
; /* Disable A_IOCFG for Audigy 2 ZS Notebook */ |
|
Lines 339-345
static int snd_emu10k1_init(struct snd_e
Link Here
|
| 339 |
} |
341 |
} |
| 340 |
} |
342 |
} |
| 341 |
|
343 |
|
| 342 |
if (emu->card_capabilities->emu1010) { |
344 |
if (emu->card_capabilities->emu_model) { |
| 343 |
; /* Disable all access to A_IOCFG for the emu1010 */ |
345 |
; /* Disable all access to A_IOCFG for the emu1010 */ |
| 344 |
} else if (emu->card_capabilities->i2c_adc) { |
346 |
} else if (emu->card_capabilities->i2c_adc) { |
| 345 |
; /* Disable A_IOCFG for Audigy 2 ZS Notebook */ |
347 |
; /* Disable A_IOCFG for Audigy 2 ZS Notebook */ |
|
Lines 359-365
static void snd_emu10k1_audio_enable(str
Link Here
|
| 359 |
outl(inl(emu->port + HCFG) | HCFG_AUDIOENABLE, emu->port + HCFG); |
361 |
outl(inl(emu->port + HCFG) | HCFG_AUDIOENABLE, emu->port + HCFG); |
| 360 |
|
362 |
|
| 361 |
/* Enable analog/digital outs on audigy */ |
363 |
/* Enable analog/digital outs on audigy */ |
| 362 |
if (emu->card_capabilities->emu1010) { |
364 |
if (emu->card_capabilities->emu_model) { |
| 363 |
; /* Disable all access to A_IOCFG for the emu1010 */ |
365 |
; /* Disable all access to A_IOCFG for the emu1010 */ |
| 364 |
} else if (emu->card_capabilities->i2c_adc) { |
366 |
} else if (emu->card_capabilities->i2c_adc) { |
| 365 |
; /* Disable A_IOCFG for Audigy 2 ZS Notebook */ |
367 |
; /* Disable A_IOCFG for Audigy 2 ZS Notebook */ |
|
Lines 661-666
static int snd_emu1010_load_firmware(str
Link Here
|
| 661 |
int n, i; |
663 |
int n, i; |
| 662 |
int reg; |
664 |
int reg; |
| 663 |
int value; |
665 |
int value; |
|
|
666 |
unsigned int write_post; |
| 667 |
unsigned long flags; |
| 664 |
const struct firmware *fw_entry; |
668 |
const struct firmware *fw_entry; |
| 665 |
|
669 |
|
| 666 |
if ((err = request_firmware(&fw_entry, filename, &emu->pci->dev)) != 0) { |
670 |
if ((err = request_firmware(&fw_entry, filename, &emu->pci->dev)) != 0) { |
|
Lines 668-679
static int snd_emu1010_load_firmware(str
Link Here
|
| 668 |
return err; |
672 |
return err; |
| 669 |
} |
673 |
} |
| 670 |
snd_printk(KERN_INFO "firmware size=0x%zx\n", fw_entry->size); |
674 |
snd_printk(KERN_INFO "firmware size=0x%zx\n", fw_entry->size); |
| 671 |
#if 0 |
|
|
| 672 |
if (fw_entry->size != 0x133a4) { |
| 673 |
snd_printk(KERN_ERR "firmware: %s wrong size.\n",filename); |
| 674 |
return -EINVAL; |
| 675 |
} |
| 676 |
#endif |
| 677 |
|
675 |
|
| 678 |
/* The FPGA is a Xilinx Spartan IIE XC2S50E */ |
676 |
/* The FPGA is a Xilinx Spartan IIE XC2S50E */ |
| 679 |
/* GPIO7 -> FPGA PGMN |
677 |
/* GPIO7 -> FPGA PGMN |
|
Lines 681-689
static int snd_emu1010_load_firmware(str
Link Here
|
| 681 |
* GPIO5 -> FPGA DIN |
679 |
* GPIO5 -> FPGA DIN |
| 682 |
* FPGA CONFIG OFF -> FPGA PGMN |
680 |
* FPGA CONFIG OFF -> FPGA PGMN |
| 683 |
*/ |
681 |
*/ |
|
|
682 |
spin_lock_irqsave(&emu->emu_lock, flags); |
| 684 |
outl(0x00, emu->port + A_IOCFG); /* Set PGMN low for 1uS. */ |
683 |
outl(0x00, emu->port + A_IOCFG); /* Set PGMN low for 1uS. */ |
| 685 |
udelay(1); |
684 |
write_post = inl(emu->port + A_IOCFG); |
|
|
685 |
udelay(100); |
| 686 |
outl(0x80, emu->port + A_IOCFG); /* Leave bit 7 set during netlist setup. */ |
686 |
outl(0x80, emu->port + A_IOCFG); /* Leave bit 7 set during netlist setup. */ |
|
|
687 |
write_post = inl(emu->port + A_IOCFG); |
| 687 |
udelay(100); /* Allow FPGA memory to clean */ |
688 |
udelay(100); /* Allow FPGA memory to clean */ |
| 688 |
for(n = 0; n < fw_entry->size; n++) { |
689 |
for(n = 0; n < fw_entry->size; n++) { |
| 689 |
value=fw_entry->data[n]; |
690 |
value=fw_entry->data[n]; |
|
Lines 693-704
static int snd_emu1010_load_firmware(str
Link Here
|
| 693 |
reg = reg | 0x20; |
694 |
reg = reg | 0x20; |
| 694 |
value = value >> 1; |
695 |
value = value >> 1; |
| 695 |
outl(reg, emu->port + A_IOCFG); |
696 |
outl(reg, emu->port + A_IOCFG); |
|
|
697 |
write_post = inl(emu->port + A_IOCFG); |
| 696 |
outl(reg | 0x40, emu->port + A_IOCFG); |
698 |
outl(reg | 0x40, emu->port + A_IOCFG); |
|
|
699 |
write_post = inl(emu->port + A_IOCFG); |
| 697 |
} |
700 |
} |
| 698 |
} |
701 |
} |
| 699 |
/* After programming, set GPIO bit 4 high again. */ |
702 |
/* After programming, set GPIO bit 4 high again. */ |
| 700 |
outl(0x10, emu->port + A_IOCFG); |
703 |
outl(0x10, emu->port + A_IOCFG); |
| 701 |
|
704 |
write_post = inl(emu->port + A_IOCFG); |
|
|
705 |
spin_unlock_irqrestore(&emu->emu_lock, flags); |
| 702 |
|
706 |
|
| 703 |
release_firmware(fw_entry); |
707 |
release_firmware(fw_entry); |
| 704 |
return 0; |
708 |
return 0; |
|
Lines 712-718
int emu1010_firmware_thread(void *data)
Link Here
|
| 712 |
|
716 |
|
| 713 |
for (;;) { |
717 |
for (;;) { |
| 714 |
/* Delay to allow Audio Dock to settle */ |
718 |
/* Delay to allow Audio Dock to settle */ |
| 715 |
msleep(1000); |
719 |
msleep_interruptible(1000); |
| 716 |
if (kthread_should_stop()) |
720 |
if (kthread_should_stop()) |
| 717 |
break; |
721 |
break; |
| 718 |
snd_emu1010_fpga_read(emu, EMU_HANA_IRQ_STATUS, &tmp ); /* IRQ Status */ |
722 |
snd_emu1010_fpga_read(emu, EMU_HANA_IRQ_STATUS, &tmp ); /* IRQ Status */ |
|
Lines 722-738
int emu1010_firmware_thread(void *data)
Link Here
|
| 722 |
/* Return to Audio Dock programming mode */ |
726 |
/* Return to Audio Dock programming mode */ |
| 723 |
snd_printk(KERN_INFO "emu1010: Loading Audio Dock Firmware\n"); |
727 |
snd_printk(KERN_INFO "emu1010: Loading Audio Dock Firmware\n"); |
| 724 |
snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG, EMU_HANA_FPGA_CONFIG_AUDIODOCK ); |
728 |
snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG, EMU_HANA_FPGA_CONFIG_AUDIODOCK ); |
| 725 |
if (emu->card_capabilities->emu1010 == 1) { |
729 |
if (emu->card_capabilities->emu_model == 1) { |
| 726 |
if ((err = snd_emu1010_load_firmware(emu, DOCK_FILENAME)) != 0) { |
730 |
if ((err = snd_emu1010_load_firmware(emu, DOCK_FILENAME)) != 0) { |
| 727 |
return err; |
731 |
continue; |
| 728 |
} |
732 |
} |
| 729 |
} else if (emu->card_capabilities->emu1010 == 2) { |
733 |
} else if (emu->card_capabilities->emu_model == 2) { |
| 730 |
if ((err = snd_emu1010_load_firmware(emu, MICRO_DOCK_FILENAME)) != 0) { |
734 |
if ((err = snd_emu1010_load_firmware(emu, MICRO_DOCK_FILENAME)) != 0) { |
| 731 |
return err; |
735 |
continue; |
| 732 |
} |
736 |
} |
| 733 |
} else if (emu->card_capabilities->emu1010 == 3) { |
737 |
} else if (emu->card_capabilities->emu_model == 3) { |
| 734 |
if ((err = snd_emu1010_load_firmware(emu, MICRO_DOCK_FILENAME)) != 0) { |
738 |
if ((err = snd_emu1010_load_firmware(emu, MICRO_DOCK_FILENAME)) != 0) { |
| 735 |
return err; |
739 |
continue; |
| 736 |
} |
740 |
} |
| 737 |
} |
741 |
} |
| 738 |
|
742 |
|
|
Lines 745-752
int emu1010_firmware_thread(void *data)
Link Here
|
| 745 |
if ((reg & 0x1f) != 0x15) { |
749 |
if ((reg & 0x1f) != 0x15) { |
| 746 |
/* FPGA failed to be programmed */ |
750 |
/* FPGA failed to be programmed */ |
| 747 |
snd_printk(KERN_INFO "emu1010: Loading Audio Dock Firmware file failed, reg=0x%x\n", reg); |
751 |
snd_printk(KERN_INFO "emu1010: Loading Audio Dock Firmware file failed, reg=0x%x\n", reg); |
| 748 |
return 0; |
752 |
continue; |
| 749 |
return -ENODEV; |
|
|
| 750 |
} |
753 |
} |
| 751 |
snd_printk(KERN_INFO "emu1010: Audio Dock Firmware loaded\n"); |
754 |
snd_printk(KERN_INFO "emu1010: Audio Dock Firmware loaded\n"); |
| 752 |
snd_emu1010_fpga_read(emu, EMU_DOCK_MAJOR_REV, &tmp ); |
755 |
snd_emu1010_fpga_read(emu, EMU_DOCK_MAJOR_REV, &tmp ); |
|
Lines 757-765
int emu1010_firmware_thread(void *data)
Link Here
|
| 757 |
msleep(10); |
760 |
msleep(10); |
| 758 |
/* Unmute all. Default is muted after a firmware load */ |
761 |
/* Unmute all. Default is muted after a firmware load */ |
| 759 |
snd_emu1010_fpga_write(emu, EMU_HANA_UNMUTE, EMU_UNMUTE ); |
762 |
snd_emu1010_fpga_write(emu, EMU_HANA_UNMUTE, EMU_UNMUTE ); |
| 760 |
break; |
|
|
| 761 |
} |
763 |
} |
| 762 |
} |
764 |
} |
|
|
765 |
snd_printk(KERN_INFO "emu1010: firmware thread stopping\n"); |
| 763 |
return 0; |
766 |
return 0; |
| 764 |
} |
767 |
} |
| 765 |
|
768 |
|
|
Lines 800-805
static int snd_emu10k1_emu1010_init(stru
Link Here
|
| 800 |
int tmp,tmp2; |
803 |
int tmp,tmp2; |
| 801 |
int reg; |
804 |
int reg; |
| 802 |
int err; |
805 |
int err; |
|
|
806 |
const char *filename = NULL; |
| 803 |
|
807 |
|
| 804 |
snd_printk(KERN_INFO "emu1010: Special config.\n"); |
808 |
snd_printk(KERN_INFO "emu1010: Special config.\n"); |
| 805 |
/* AC97 2.1, Any 16Meg of 4Gig address, Auto-Mute, EMU32 Slave, |
809 |
/* AC97 2.1, Any 16Meg of 4Gig address, Auto-Mute, EMU32 Slave, |
|
Lines 841-861
static int snd_emu10k1_emu1010_init(stru
Link Here
|
| 841 |
return -ENODEV; |
845 |
return -ENODEV; |
| 842 |
} |
846 |
} |
| 843 |
snd_printk(KERN_INFO "emu1010: EMU_HANA_ID=0x%x\n",reg); |
847 |
snd_printk(KERN_INFO "emu1010: EMU_HANA_ID=0x%x\n",reg); |
| 844 |
if (emu->card_capabilities->emu1010 == 1) { |
848 |
switch (emu->card_capabilities->emu_model) { |
| 845 |
if ((err = snd_emu1010_load_firmware(emu, HANA_FILENAME)) != 0) { |
849 |
case 1: |
| 846 |
snd_printk(KERN_INFO "emu1010: Loading Hana Firmware file %s failed\n", HANA_FILENAME); |
850 |
filename = HANA_FILENAME; |
| 847 |
return err; |
851 |
break; |
| 848 |
} |
852 |
case 2: |
| 849 |
} else if (emu->card_capabilities->emu1010 == 2) { |
853 |
filename = EMU1010B_FILENAME; |
| 850 |
if ((err = snd_emu1010_load_firmware(emu, EMU1010B_FILENAME)) != 0) { |
854 |
break; |
| 851 |
snd_printk(KERN_INFO "emu1010: Loading Firmware file %s failed\n", EMU1010B_FILENAME); |
855 |
case 3: |
| 852 |
return err; |
856 |
filename = EMU1010_NOTEBOOK_FILENAME; |
| 853 |
} |
857 |
break; |
| 854 |
} else if (emu->card_capabilities->emu1010 == 3) { |
858 |
case 4: |
| 855 |
if ((err = snd_emu1010_load_firmware(emu, EMU1010_NOTEBOOK_FILENAME)) != 0) { |
859 |
filename = EMU0404_FILENAME; |
| 856 |
snd_printk(KERN_INFO "emu1010: Loading Firmware file %s failed\n", EMU1010_NOTEBOOK_FILENAME); |
860 |
break; |
| 857 |
return err; |
861 |
default: |
| 858 |
} |
862 |
filename = NULL; |
|
|
863 |
return -ENODEV; |
| 864 |
break; |
| 865 |
} |
| 866 |
snd_printk(KERN_INFO "emu1010: filename %s testing\n", filename); |
| 867 |
err = snd_emu1010_load_firmware(emu, filename); |
| 868 |
if (err != 0) { |
| 869 |
snd_printk( |
| 870 |
KERN_INFO "emu1010: Loading Firmware file %s failed\n", |
| 871 |
filename); |
| 872 |
return err; |
| 859 |
} |
873 |
} |
| 860 |
|
874 |
|
| 861 |
/* ID, should read & 0x7f = 0x55 when FPGA programmed. */ |
875 |
/* ID, should read & 0x7f = 0x55 when FPGA programmed. */ |
|
Lines 1202-1212
static int snd_emu10k1_free(struct snd_e
Link Here
|
| 1202 |
} |
1216 |
} |
| 1203 |
snd_emu10k1_free_efx(emu); |
1217 |
snd_emu10k1_free_efx(emu); |
| 1204 |
} |
1218 |
} |
| 1205 |
if (emu->card_capabilities->emu1010) { |
1219 |
if (emu->card_capabilities->emu_model == 1) { |
| 1206 |
/* Disable 48Volt power to Audio Dock */ |
1220 |
/* Disable 48Volt power to Audio Dock */ |
| 1207 |
snd_emu1010_fpga_write(emu, EMU_HANA_DOCK_PWR, 0 ); |
1221 |
snd_emu1010_fpga_write(emu, EMU_HANA_DOCK_PWR, 0 ); |
|
|
1222 |
} |
| 1223 |
if (emu->card_capabilities->emu_model) |
| 1208 |
kthread_stop(emu->emu1010.firmware_thread); |
1224 |
kthread_stop(emu->emu1010.firmware_thread); |
| 1209 |
} |
|
|
| 1210 |
if (emu->memhdr) |
1225 |
if (emu->memhdr) |
| 1211 |
snd_util_memhdr_free(emu->memhdr); |
1226 |
snd_util_memhdr_free(emu->memhdr); |
| 1212 |
if (emu->silent_page.area) |
1227 |
if (emu->silent_page.area) |
|
Lines 1338-1343
static struct snd_emu_chip_details emu_c
Link Here
|
| 1338 |
.spi_dac = 1, |
1353 |
.spi_dac = 1, |
| 1339 |
.i2c_adc = 1, |
1354 |
.i2c_adc = 1, |
| 1340 |
.spk71 = 1} , |
1355 |
.spk71 = 1} , |
|
|
1356 |
/* Tested by James@superbug.co.uk 20-3-2007. */ |
| 1357 |
{.vendor = 0x1102, .device = 0x0008, .subsystem = 0x40021102, |
| 1358 |
.driver = "Audigy2", .name = "E-mu 0404 [4002]", |
| 1359 |
.id = "EMU0404", |
| 1360 |
.emu10k2_chip = 1, |
| 1361 |
.ca0102_chip = 1, |
| 1362 |
.spk71 = 1, |
| 1363 |
.emu_model = 4} , /* EMU 0404 */ |
| 1364 |
/* Tested by James@superbug.co.uk 4th Nov 2007. */ |
| 1341 |
{.vendor = 0x1102, .device = 0x0008, .subsystem = 0x42011102, |
1365 |
{.vendor = 0x1102, .device = 0x0008, .subsystem = 0x42011102, |
| 1342 |
.driver = "Audigy2", .name = "E-mu 1010 Notebook [MAEM8950]", |
1366 |
.driver = "Audigy2", .name = "E-mu 1010 Notebook [MAEM8950]", |
| 1343 |
.id = "EMU1010", |
1367 |
.id = "EMU1010", |
|
Lines 1345-1372
static struct snd_emu_chip_details emu_c
Link Here
|
| 1345 |
.ca0108_chip = 1, |
1369 |
.ca0108_chip = 1, |
| 1346 |
.ca_cardbus_chip = 1, |
1370 |
.ca_cardbus_chip = 1, |
| 1347 |
.spk71 = 1 , |
1371 |
.spk71 = 1 , |
| 1348 |
.emu1010 = 3} , |
1372 |
.emu_model = 3} , |
|
|
1373 |
/* Tested by James@superbug.co.uk 4th Nov 2007. */ |
| 1349 |
{.vendor = 0x1102, .device = 0x0008, .subsystem = 0x40041102, |
1374 |
{.vendor = 0x1102, .device = 0x0008, .subsystem = 0x40041102, |
| 1350 |
.driver = "Audigy2", .name = "E-mu 1010b PCI [MAEM????]", |
1375 |
.driver = "Audigy2", .name = "E-mu 1010b PCI [MAEM????]", |
| 1351 |
.id = "EMU1010", |
1376 |
.id = "EMU1010", |
| 1352 |
.emu10k2_chip = 1, |
1377 |
.emu10k2_chip = 1, |
| 1353 |
.ca0108_chip = 1, |
1378 |
.ca0108_chip = 1, |
| 1354 |
.spk71 = 1 , |
1379 |
.spk71 = 1, |
| 1355 |
.emu1010 = 2} , |
1380 |
.emu_model = 2} , |
|
|
1381 |
/* Tested by James@superbug.co.uk 8th July 2005. */ |
| 1382 |
{.vendor = 0x1102, .device = 0x0004, .subsystem = 0x40011102, |
| 1383 |
.driver = "Audigy2", .name = "E-mu 1010 [4001]", |
| 1384 |
.id = "EMU1010", |
| 1385 |
.emu10k2_chip = 1, |
| 1386 |
.ca0102_chip = 1, |
| 1387 |
.spk71 = 1, |
| 1388 |
.emu_model = 1} , /* Emu 1010 */ |
| 1389 |
/* Audigy4 (Not PRO) SB0610 */ |
| 1356 |
{.vendor = 0x1102, .device = 0x0008, |
1390 |
{.vendor = 0x1102, .device = 0x0008, |
| 1357 |
.driver = "Audigy2", .name = "Audigy 2 Value [Unknown]", |
1391 |
.driver = "Audigy2", .name = "Audigy 2 Value [Unknown]", |
| 1358 |
.id = "Audigy2", |
1392 |
.id = "Audigy2", |
| 1359 |
.emu10k2_chip = 1, |
1393 |
.emu10k2_chip = 1, |
| 1360 |
.ca0108_chip = 1, |
1394 |
.ca0108_chip = 1, |
| 1361 |
.ac97_chip = 1} , |
1395 |
.ac97_chip = 1} , |
| 1362 |
/* Tested by James@superbug.co.uk 8th July 2005. No sound available yet. */ |
|
|
| 1363 |
{.vendor = 0x1102, .device = 0x0004, .subsystem = 0x40011102, |
| 1364 |
.driver = "Audigy2", .name = "E-mu 1010 [4001]", |
| 1365 |
.id = "EMU1010", |
| 1366 |
.emu10k2_chip = 1, |
| 1367 |
.ca0102_chip = 1, |
| 1368 |
.spk71 = 1, |
| 1369 |
.emu1010 = 1} , |
| 1370 |
/* Tested by James@superbug.co.uk 3rd July 2005 */ |
1396 |
/* Tested by James@superbug.co.uk 3rd July 2005 */ |
| 1371 |
{.vendor = 0x1102, .device = 0x0004, .subsystem = 0x20071102, |
1397 |
{.vendor = 0x1102, .device = 0x0004, .subsystem = 0x20071102, |
| 1372 |
.driver = "Audigy2", .name = "Audigy 4 PRO [SB0380]", |
1398 |
.driver = "Audigy2", .name = "Audigy 4 PRO [SB0380]", |
|
Lines 1794-1800
int __devinit snd_emu10k1_create(struct
Link Here
|
| 1794 |
if (emu->card_capabilities->ecard) { |
1820 |
if (emu->card_capabilities->ecard) { |
| 1795 |
if ((err = snd_emu10k1_ecard_init(emu)) < 0) |
1821 |
if ((err = snd_emu10k1_ecard_init(emu)) < 0) |
| 1796 |
goto error; |
1822 |
goto error; |
| 1797 |
} else if (emu->card_capabilities->emu1010) { |
1823 |
} else if (emu->card_capabilities->emu_model) { |
| 1798 |
if ((err = snd_emu10k1_emu1010_init(emu)) < 0) { |
1824 |
if ((err = snd_emu10k1_emu1010_init(emu)) < 0) { |
| 1799 |
snd_emu10k1_free(emu); |
1825 |
snd_emu10k1_free(emu); |
| 1800 |
return err; |
1826 |
return err; |
|
Lines 1943-1949
void snd_emu10k1_resume_init(struct snd_
Link Here
|
| 1943 |
snd_emu10k1_cardbus_init(emu); |
1969 |
snd_emu10k1_cardbus_init(emu); |
| 1944 |
if (emu->card_capabilities->ecard) |
1970 |
if (emu->card_capabilities->ecard) |
| 1945 |
snd_emu10k1_ecard_init(emu); |
1971 |
snd_emu10k1_ecard_init(emu); |
| 1946 |
else if (emu->card_capabilities->emu1010) |
1972 |
else if (emu->card_capabilities->emu_model) |
| 1947 |
snd_emu10k1_emu1010_init(emu); |
1973 |
snd_emu10k1_emu1010_init(emu); |
| 1948 |
else |
1974 |
else |
| 1949 |
snd_emu10k1_ptr_write(emu, AC97SLOT, 0, AC97SLOT_CNTR|AC97SLOT_LFE); |
1975 |
snd_emu10k1_ptr_write(emu, AC97SLOT, 0, AC97SLOT_CNTR|AC97SLOT_LFE); |