Hi Adrian,
thanks for the latest patches. While doing some testing, I noticed that one PCI ID (d2) was missing, so the module didn't load.
$ grep 'hdsp_madi,' hdsp.inf | sort | uniq
%DeviceDescMadi% = hdsp_madi, PCI\VEN_10EE&DEV_3FC6&REV_C8 %DeviceDescMadi% = hdsp_madi, PCI\VEN_10EE&DEV_3FC6&REV_C9 %DeviceDescMadi% = hdsp_madi, PCI\VEN_10EE&DEV_3FC6&REV_CA %DeviceDescMadi% = hdsp_madi, PCI\VEN_10EE&DEV_3FC6&REV_CB %DeviceDescMadi% = hdsp_madi, PCI\VEN_10EE&DEV_3FC6&REV_CC %DeviceDescMadi% = hdsp_madi, PCI\VEN_10EE&DEV_3FC6&REV_CD %DeviceDescMadi% = hdsp_madi, PCI\VEN_10EE&DEV_3FC6&REV_CE %DeviceDescMadi% = hdsp_madi, PCI\VEN_10EE&DEV_3FC6&REV_CF %DeviceDescMadi% = hdsp_madi, PCI\VEN_10EE&DEV_3FC6&REV_D2 %DeviceDescMadi% = hdsp_madi, PCI\VEN_10EE&DEV_3FC6&REV_D5
Trivial patch below, that should be all then. Tested on CentOS 6.0, vanilla kernel 3.0.7 with RT-20 and latest hdspm.c from GitHub.
Cheers, Andre
diff -up hdspm.c.orig hdspm.c --- hdspm.c.orig 2011-11-18 11:12:36.549938179 +0100 +++ hdspm.c 2011-11-18 11:12:47.351937890 +0100 @@ -6518,8 +6518,9 @@ static int __devinit snd_hdspm_create(st hdspm->io_type = AES32; hdspm->card_name = "RME AES32"; hdspm->midiPorts = 2; - } else if ((hdspm->firmware_rev == 0xd5) || - ((hdspm->firmware_rev >= 0xc8) && + } else if ((hdspm->firmware_rev == 0xd2) || // D2 = PCIe MADI + (hdspm->firmware_rev == 0xd5) || // D5 = PCIe MADIface + ((hdspm->firmware_rev >= 0xc8) && // C8 - CF = PCI MADI (hdspm->firmware_rev <= 0xcf))) { hdspm->io_type = MADI; hdspm->card_name = "RME MADI";