@@ -162,6 +162,8 @@ static int snd_emu10k1_init(struct snd_emu10k1 *emu, int enable_ir)
162162 outl (0 , emu -> port + INTE );
163163 snd_emu10k1_ptr_write (emu , CLIEL , 0 , 0 );
164164 snd_emu10k1_ptr_write (emu , CLIEH , 0 , 0 );
165+
166+ /* disable stop on loop end */
165167 snd_emu10k1_ptr_write (emu , SOLEL , 0 , 0 );
166168 snd_emu10k1_ptr_write (emu , SOLEH , 0 , 0 );
167169
@@ -660,13 +662,14 @@ static int snd_emu1010_load_firmware_entry(struct snd_emu10k1 *emu,
660662 return - EIO ;
661663
662664 /* The FPGA is a Xilinx Spartan IIE XC2S50E */
665+ /* On E-MU 0404b it is a Xilinx Spartan III XC3S50 */
663666 /* GPIO7 -> FPGA PGMN
664667 * GPIO6 -> FPGA CCLK
665668 * GPIO5 -> FPGA DIN
666669 * FPGA CONFIG OFF -> FPGA PGMN
667670 */
668671 spin_lock_irqsave (& emu -> emu_lock , flags );
669- outw (0x00 , emu -> port + A_GPIO ); /* Set PGMN low for 1uS . */
672+ outw (0x00 , emu -> port + A_GPIO ); /* Set PGMN low for 100uS . */
670673 write_post = inw (emu -> port + A_GPIO );
671674 udelay (100 );
672675 outw (0x80 , emu -> port + A_GPIO ); /* Leave bit 7 set during netlist setup. */
@@ -782,7 +785,7 @@ static void emu1010_firmware_work(struct work_struct *work)
782785 } else if (!reg && emu -> emu1010 .last_reg ) {
783786 /* Audio Dock removed */
784787 dev_info (emu -> card -> dev , "emu1010: Audio Dock detached\n" );
785- /* Unmute all */
788+ /* The hardware auto-mutes all, so we unmute again */
786789 snd_emu1010_fpga_write (emu , EMU_HANA_UNMUTE , EMU_UNMUTE );
787790 }
788791
@@ -794,29 +797,6 @@ static void emu1010_firmware_work(struct work_struct *work)
794797}
795798
796799/*
797- * EMU-1010 - details found out from this driver, official MS Win drivers,
798- * testing the card:
799- *
800- * Audigy2 (aka Alice2):
801- * ---------------------
802- * * communication over PCI
803- * * conversion of 32-bit data coming over EMU32 links from HANA FPGA
804- * to 2 x 16-bit, using internal DSP instructions
805- * * slave mode, clock supplied by HANA
806- * * linked to HANA using:
807- * 32 x 32-bit serial EMU32 output channels
808- * 16 x EMU32 input channels
809- * (?) x I2S I/O channels (?)
810- *
811- * FPGA (aka HANA):
812- * ---------------
813- * * provides all (?) physical inputs and outputs of the card
814- * (ADC, DAC, SPDIF I/O, ADAT I/O, etc.)
815- * * provides clock signal for the card and Alice2
816- * * two crystals - for 44.1kHz and 48kHz multiples
817- * * provides internal routing of signal sources to signal destinations
818- * * inputs/outputs to Alice2 - see above
819- *
820800 * Current status of the driver:
821801 * ----------------------------
822802 * * only 44.1/48kHz supported (the MS Win driver supports up to 192 kHz)
@@ -884,11 +864,8 @@ static int snd_emu10k1_emu1010_init(struct snd_emu10k1 *emu)
884864 snd_emu1010_fpga_read (emu , EMU_HANA_OPTION_CARDS , & reg );
885865 dev_info (emu -> card -> dev , "emu1010: Card options = 0x%x\n" , reg );
886866 /* Optical -> ADAT I/O */
887- /* 0 : SPDIF
888- * 1 : ADAT
889- */
890867 emu -> emu1010 .optical_in = 1 ; /* IN_ADAT */
891- emu -> emu1010 .optical_out = 1 ; /* IN_ADAT */
868+ emu -> emu1010 .optical_out = 1 ; /* OUT_ADAT */
892869 tmp = (emu -> emu1010 .optical_in ? EMU_HANA_OPTICAL_IN_ADAT : 0 ) |
893870 (emu -> emu1010 .optical_out ? EMU_HANA_OPTICAL_OUT_ADAT : 0 );
894871 snd_emu1010_fpga_write (emu , EMU_HANA_OPTICAL_TYPE , tmp );
@@ -1279,6 +1256,15 @@ static const struct snd_emu_chip_details emu_chip_details[] = {
12791256 * AC97: STAC9750
12801257 * CA0151: None
12811258 */
1259+ /*
1260+ * A_IOCFG Input (GPIO)
1261+ * 0x400 = Front analog jack plugged in. (Green socket)
1262+ * 0x1000 = Rear analog jack plugged in. (Black socket)
1263+ * 0x2000 = Center/LFE analog jack plugged in. (Orange socket)
1264+ * A_IOCFG Output (GPIO)
1265+ * 0x60 = Sound out of front Left.
1266+ * Win sets it to 0xXX61
1267+ */
12821268 {.vendor = 0x1102 , .device = 0x0008 , .subsystem = 0x10011102 ,
12831269 .driver = "Audigy2" , .name = "SB Audigy 2 Value [SB0400]" ,
12841270 .id = "Audigy2" ,
@@ -1327,6 +1313,9 @@ static const struct snd_emu_chip_details emu_chip_details[] = {
13271313 .spi_dac = 1 ,
13281314 .i2c_adc = 1 ,
13291315 .spk71 = 1 } ,
1316+ /* This is MAEM8950 "Mana" */
1317+ /* Attach MicroDock[M] to make it an E-MU 1616[m]. */
1318+ /* Does NOT support sync daughter card (obviously). */
13301319 /* Tested by James@superbug.co.uk 4th Nov 2007. */
13311320 {.vendor = 0x1102 , .device = 0x0008 , .subsystem = 0x42011102 ,
13321321 .driver = "Audigy2" , .name = "E-mu 1010 Notebook [MAEM8950]" ,
@@ -1337,7 +1326,10 @@ static const struct snd_emu_chip_details emu_chip_details[] = {
13371326 .spk71 = 1 ,
13381327 .emu_model = EMU_MODEL_EMU1616 },
13391328 /* Tested by James@superbug.co.uk 4th Nov 2007. */
1340- /* This is MAEM8960, 0202 is MAEM 8980 */
1329+ /* This is MAEM8960 "Hana3", 0202 is MAEM8980 */
1330+ /* Attach 0202 daughter card to make it an E-MU 1212m, OR a
1331+ * MicroDock[M] to make it an E-MU 1616[m]. */
1332+ /* Does NOT support sync daughter card. */
13411333 {.vendor = 0x1102 , .device = 0x0008 , .subsystem = 0x40041102 ,
13421334 .driver = "Audigy2" , .name = "E-mu 1010b PCI [MAEM8960]" ,
13431335 .id = "EMU1010" ,
@@ -1347,6 +1339,11 @@ static const struct snd_emu_chip_details emu_chip_details[] = {
13471339 .emu_model = EMU_MODEL_EMU1010B }, /* EMU 1010 new revision */
13481340 /* Tested by Maxim Kachur <mcdebugger@duganet.ru> 17th Oct 2012. */
13491341 /* This is MAEM8986, 0202 is MAEM8980 */
1342+ /* Attach 0202 daughter card to make it an E-MU 1212m, OR a
1343+ * MicroDockM to make it an E-MU 1616m. The non-m
1344+ * version was never sold with this card, but should
1345+ * still work. */
1346+ /* Does NOT support sync daughter card. */
13501347 {.vendor = 0x1102 , .device = 0x0008 , .subsystem = 0x40071102 ,
13511348 .driver = "Audigy2" , .name = "E-mu 1010 PCIe [MAEM8986]" ,
13521349 .id = "EMU1010" ,
@@ -1355,22 +1352,29 @@ static const struct snd_emu_chip_details emu_chip_details[] = {
13551352 .spk71 = 1 ,
13561353 .emu_model = EMU_MODEL_EMU1010B }, /* EMU 1010 PCIe */
13571354 /* Tested by James@superbug.co.uk 8th July 2005. */
1358- /* This is MAEM8810, 0202 is MAEM8820 */
1355+ /* This is MAEM8810 "Hana", 0202 is MAEM8820 "Hamoa" */
1356+ /* Attach 0202 daughter card to make it an E-MU 1212m, OR an
1357+ * AudioDock[M] to make it an E-MU 1820[m]. */
1358+ /* Supports sync daughter card. */
13591359 {.vendor = 0x1102 , .device = 0x0004 , .subsystem = 0x40011102 ,
13601360 .driver = "Audigy2" , .name = "E-mu 1010 [MAEM8810]" ,
13611361 .id = "EMU1010" ,
13621362 .emu10k2_chip = 1 ,
13631363 .ca0102_chip = 1 ,
13641364 .spk71 = 1 ,
13651365 .emu_model = EMU_MODEL_EMU1010 }, /* EMU 1010 old revision */
1366- /* EMU0404b */
1366+ /* This is MAEM8852 "HanaLiteLite" */
1367+ /* Supports sync daughter card. */
1368+ /* Tested by oswald.buddenhagen@gmx.de Mar 2023. */
13671369 {.vendor = 0x1102 , .device = 0x0008 , .subsystem = 0x40021102 ,
13681370 .driver = "Audigy2" , .name = "E-mu 0404b PCI [MAEM8852]" ,
13691371 .id = "EMU0404" ,
13701372 .emu10k2_chip = 1 ,
13711373 .ca0108_chip = 1 ,
13721374 .spk71 = 1 ,
13731375 .emu_model = EMU_MODEL_EMU0404 }, /* EMU 0404 new revision */
1376+ /* This is MAEM8850 "HanaLite" */
1377+ /* Supports sync daughter card. */
13741378 /* Tested by James@superbug.co.uk 20-3-2007. */
13751379 {.vendor = 0x1102 , .device = 0x0004 , .subsystem = 0x40021102 ,
13761380 .driver = "Audigy2" , .name = "E-mu 0404 [MAEM8850]" ,
@@ -1380,14 +1384,14 @@ static const struct snd_emu_chip_details emu_chip_details[] = {
13801384 .spk71 = 1 ,
13811385 .emu_model = EMU_MODEL_EMU0404 }, /* EMU 0404 */
13821386 /* EMU0404 PCIe */
1387+ /* Does NOT support sync daughter card. */
13831388 {.vendor = 0x1102 , .device = 0x0008 , .subsystem = 0x40051102 ,
13841389 .driver = "Audigy2" , .name = "E-mu 0404 PCIe [MAEM8984]" ,
13851390 .id = "EMU0404" ,
13861391 .emu10k2_chip = 1 ,
13871392 .ca0108_chip = 1 ,
13881393 .spk71 = 1 ,
13891394 .emu_model = EMU_MODEL_EMU0404 }, /* EMU 0404 PCIe ver_03 */
1390- /* Note that all E-mu cards require kernel 2.6 or newer. */
13911395 {.vendor = 0x1102 , .device = 0x0008 ,
13921396 .driver = "Audigy2" , .name = "SB Audigy 2 Value [Unknown]" ,
13931397 .id = "Audigy2" ,
@@ -1468,6 +1472,8 @@ static const struct snd_emu_chip_details emu_chip_details[] = {
14681472 .spdif_bug = 1 ,
14691473 .adc_1361t = 1 , /* 24 bit capture instead of 16bit */
14701474 .ac97_chip = 1 } ,
1475+ /* Audigy 2 Platinum EX */
1476+ /* Win driver sets A_IOCFG output to 0x1c00 */
14711477 {.vendor = 0x1102 , .device = 0x0004 , .subsystem = 0x10051102 ,
14721478 .driver = "Audigy2" , .name = "Audigy 2 Platinum EX [SB0280]" ,
14731479 .id = "Audigy2" ,
@@ -1488,6 +1494,8 @@ static const struct snd_emu_chip_details emu_chip_details[] = {
14881494 .spdif_bug = 1 ,
14891495 .invert_shared_spdif = 1 , /* digital/analog switch swapped */
14901496 .ac97_chip = 1 } ,
1497+ /* Audigy 2 Platinum */
1498+ /* Win driver sets A_IOCFG output to 0xa00 */
14911499 {.vendor = 0x1102 , .device = 0x0004 , .subsystem = 0x10021102 ,
14921500 .driver = "Audigy2" , .name = "SB Audigy 2 Platinum [SB0240P]" ,
14931501 .id = "Audigy2" ,
@@ -1593,6 +1601,9 @@ static const struct snd_emu_chip_details emu_chip_details[] = {
15931601 .emu10k1_chip = 1 ,
15941602 .ac97_chip = 1 ,
15951603 .sblive51 = 1 } ,
1604+ /* SB Live! Platinum */
1605+ /* Win driver sets A_IOCFG output to 0 */
1606+ /* Tested by Jonathan Dowland <jon@dow.land> Apr 2023. */
15961607 {.vendor = 0x1102 , .device = 0x0002 , .subsystem = 0x80401102 ,
15971608 .driver = "EMU10K1" , .name = "SB Live! Platinum [CT4760P]" ,
15981609 .id = "Live" ,
0 commit comments