basic support for M-Audio Audiophile 2496 available

Stefan Ehmann shoesoft at
Mon Jun 12 18:28:30 UTC 2006

This is a follow up to the "Status of VIA Envy24 audio controller support in 
FreeBSD" from May.

This is a modification of the driver written by Katsurajima Naoto.

Fixes for compilation on recent FreeBSD versions were provided by Konstantin 
Dimitrov. For the card specific changes, credits also go to him.

pciconf -lv output:
pcm0 at pci0:13:0: class=0x040100 card=0xd6341412 chip=0x17121412 rev=0x02 
    vendor   = 'VIA Technologies Inc (Was: IC Ensemble Inc)'
    device   = 'ICE1712 Envy24 Multichannel Audio Controller'
    class    = multimedia
    subclass = audio

The necessary card specific changes are quite small:

--- envy24.c.orig	Sun Jun 11 14:01:24 2006
+++ envy24.c	Sun Jun 11 13:08:43 2006
@@ -805,12 +805,7 @@
 	gpiodir |= ENVY24_GPIO_AK4524_CDTI | ENVY24_GPIO_AK4524_CCLK | 
ENVY24_GPIO_AK4524_CS0 | ENVY24_GPIO_AK4524_CS1;
 	envy24_gpiosetdir(ptr->parent, gpiodir);
-	envy24_gpiosetmask(ptr->parent, ENVY24_GPIO_CS8414_STATUS);
-	envy24_gpiosetdir(ptr->parent, ~ENVY24_GPIO_CS8414_STATUS);
-	if (ptr->num == 0)
-		ptr->cs = ENVY24_GPIO_AK4524_CS0;
-	else
-		ptr->cs = ENVY24_GPIO_AK4524_CS1;
+	ptr->cs = ENVY24_GPIO_AK4524_CS0;
 	ptr->cclk = ENVY24_GPIO_AK4524_CCLK;
 	ptr->cdti = ENVY24_GPIO_AK4524_CDTI;
 	ak452x_settype(ptr->info, AK452X_TYPE_4524);
--- envy24.h.orig	Sun Jun 11 14:01:30 2006
+++ envy24.h	Sun Jun 11 13:59:02 2006
@@ -465,9 +465,9 @@
 #define ENVY24_GPIO_CS8414_STATUS 0x02
 #define ENVY24_GPIO_CS84X4_CLK    0x04
 #define ENVY24_GPIO_CS84X4_DATA   0x08
-#define ENVY24_GPIO_AK4524_CDTI   0x10 /* this value is duplicated to input 
select */
-#define ENVY24_GPIO_AK4524_CCLK   0x20
-#define ENVY24_GPIO_AK4524_CS0    0x40
+#define ENVY24_GPIO_AK4524_CDTI   0x08 /* this value is duplicated to input 
select */
+#define ENVY24_GPIO_AK4524_CCLK   0x02
+#define ENVY24_GPIO_AK4524_CS0    0x20
 #define ENVY24_GPIO_AK4524_CS1    0x80
 /* M-Audio Delta series S/PDIF(CS84[01]4) control pin values */

Note that this patch breaks support for other cards -- it's mainly a 
proof-of-concept that the driver works. The main difference 
between the Dio card is that there is only one AKM452x codec (apart from pin 

Seems to work quite good so far for me.

I like it much better than the driver from (which has troubles 
with some applications). At the moment, there are some features missing 
compared to the driver though.

If someone wants to test this: Be sure to execute mixer pcm 100 first, because 
the default value of 75 is very quiet. mixer vol doesn't have any effect.

More information about the freebsd-multimedia mailing list