Hi All,

I recently installed an M-Audio Delta 1010, replacing a Delta 44.  This is a newer Rev E board.  I was getting high noise levels on all analog inputs when using a clock > 48kHz.  Particularly bad at 96kHz.

This looks to be the exact same problem that was described about a year ago by Francis Keyes (http://sourceforge.net/mailarchive/message.php?msg_id=24060648), as well as others.

By mucking about a bit in the driver code I was able to fix this problem for myself with a very small change to delta.c.

I'm running a fairly up-to-date gentoo system, on an intel core2 quad, with the 2.6.34-r6 gentoo sources.

here's a diff of my modified sound/pci/ice1712/delta.c against the original

***************
*** 576,588 ****
                break;
        }
 
        /* initialize spdif */
        switch (ice->eeprom.subvendor) {
        case ICE1712_SUBDEVICE_AUDIOPHILE:
        case ICE1712_SUBDEVICE_DELTA410:
-       case ICE1712_SUBDEVICE_DELTA1010E:
        case ICE1712_SUBDEVICE_DELTA1010LT:
        case ICE1712_SUBDEVICE_VX442:
        case ICE1712_SUBDEVICE_DELTA66E:
                if ((err = snd_i2c_bus_create(ice->card, "ICE1712 GPIO 1", NULL, &ice->i2c)) < 0) {
                        snd_printk(KERN_ERR "unable to create I2C bus\n");
--- 576,589 ----
                break;
        }
 
        /* initialize spdif */
        switch (ice->eeprom.subvendor) {
+       case ICE1712_SUBDEVICE_DELTA1010E:
+               ice->gpio.set_pro_rate = delta_1010_set_rate_val;
        case ICE1712_SUBDEVICE_AUDIOPHILE:
        case ICE1712_SUBDEVICE_DELTA410:
        case ICE1712_SUBDEVICE_DELTA1010LT:
        case ICE1712_SUBDEVICE_VX442:
        case ICE1712_SUBDEVICE_DELTA66E:
                if ((err = snd_i2c_bus_create(ice->card, "ICE1712 GPIO 1", NULL, &ice->i2c)) < 0) {
                        snd_printk(KERN_ERR "unable to create I2C bus\n");



I had initially commented out a few lines that were meant to recognize the board as a 1010E, which got rid of the noise, but killed the S/PDIF ports.

With my above changes, I get no noticable noise on the analog ins, and both S/PDIF in and out work.

It would seem that for the 1010E subdevice the DFS bit was not being set for rates above 48kHz, but was taking care of whatever hardware changes were made to the S/PDIF for rev E.  So people who had a rev E board who weren't using digital IO wouldn't have had any problems with the original 1010 driver code, but would have gotten noisy inputs once they went to a kernel after the 1010E changes were added in. (2.6.26 I believe)

I can't claim to fully understand what setting the DFS bit does, and less so what is going on with the i2c bus for enabling the S/PDIF, but I'm quite happy to have this board fully working.  It may have just been the amount of work it took to get there, but I think it sounds much better than my Delta44 and audiophile2496.

I'd be happy to provide any more details as necesary for getting this fixed in the official kernel.


-- Pete