i added rev 3 of ct5880 as to have an spdiff_out in ens1370.c, cause i know this works with my soundcard. i did 'ensoniq->rev == CT5880REV_C T5880_D' cause i dont know how it works with later releases. maybe it could be aplied in the driver.
for details see patch. i also tried to enable line-in as a second line-out for pcm0, as it could made with ens1370, but this does not work with ens1370 settings. its not documented in the ens1371 specs but i know that it works with the windows-drivers, the current setting i aplied doesnt cause an error but should removed cause its probably wrong for ens1371. maybe someone nows the right bit which has to be set, for enabling line-in as second line-out, or has the current specs for the CT5880 REV 3. would be a nice feature for this driver. regards joy
--- ens1370_orig.c Tue Mar 26 13:36:56 2002 +++ ens1370.c Tue Mar 26 13:36:42 2002 @@ -1303,7 +1303,7 @@ ac97.private_free = snd_ensoniq_mixer_free_ac97; if ((err = snd_ac97_mixer(card, &ac97, &ensoniq->u.es1371.ac97)) < 0) return err; - if (ensoniq->rev >= ES1371REV_ES1373_A) + if ((ensoniq->rev >= ES1371REV_ES1373_A) || (ensoniq->rev == +CT5880REV_CT5880_D)) snd_ctl_add(card, snd_ctl_new1(&snd_es1371_mixer_spdif, ensoniq)); return 0; } @@ -1398,11 +1398,17 @@ * General Switches... */ -static snd_kcontrol_new_t snd_ensoniq_control_joystick __devinitdata = +static snd_kcontrol_new_t snd_ensoniq_control_joystick __devinitdata = ENSONIQ_CONTROL("Joystick Enable", ES_JYSTK_EN); #ifdef CHIP1371 +/* hack for enabling linein as second lineout */ +static snd_kcontrol_new_t snd_ensoniq_control_linein __devinitdata = +ENSONIQ_CONTROL("Enable Linein as second Out", ES_1370_XCTL0); + +/* snd_ctl_add(card, snd_ctl_new1(&snd_ensoniq_control_linein, ensoniq)); */ + #define ES1371_JOYSTICK_ADDR(xname) \ { iface: SNDRV_CTL_ELEM_IFACE_CARD, name: xname, info: snd_es1371_joystick_addr_info, \ get: snd_es1371_joystick_addr_get, put: snd_es1371_joystick_addr_put } @@ -1471,6 +1477,7 @@ snd_iprintf(buffer, "Line In to AOUT : %s\n", ensoniq->ctrl & ES_1370_XCTL0 ? "on" : "off"); #else snd_iprintf(buffer, "Joystick port : 0x%x\n", (ES_1371_JOY_ASELI(ensoniq->ctrl) * 8) + 0x200); + snd_iprintf(buffer, "Line In to AOUT : %s\n", ensoniq->ctrl & ES_1370_XCTL0 ? +"on" : "off"); #endif } @@ -1703,6 +1710,7 @@ snd_ctl_add(card, snd_ctl_new1(&snd_ensoniq_control_joystick, ensoniq)); #ifdef CHIP1371 snd_ctl_add(card, snd_ctl_new1(&snd_es1371_joystick_addr, ensoniq)); + snd_ctl_add(card, snd_ctl_new1(&snd_ensoniq_control_linein, ensoniq)); #endif synchronize_irq();