Commit c09403dc authored by Adrian Knoth's avatar Adrian Knoth Committed by Takashi Iwai

ALSA: hdspm - Enable all firmware ranges for PCI MADI/AES cards

From the Windows INF file, we know the firmware ranges for all RME
cards. For PCIe, a single revision ID per device (RayDAT, MADI, AIO,
AES) is used. Contrary, the older PCI versions use ranges, that is,
one revision ID per firmware version.

Instead of listing all possible revisions individually, match the range.

This commit enables all MADI and AES PCI versions ever shipped.
Signed-off-by: default avatarAdrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent a3466865
...@@ -520,16 +520,9 @@ MODULE_SUPPORTED_DEVICE("{{RME HDSPM-MADI}}"); ...@@ -520,16 +520,9 @@ MODULE_SUPPORTED_DEVICE("{{RME HDSPM-MADI}}");
#define HDSPM_DMA_AREA_BYTES (HDSPM_MAX_CHANNELS * HDSPM_CHANNEL_BUFFER_BYTES) #define HDSPM_DMA_AREA_BYTES (HDSPM_MAX_CHANNELS * HDSPM_CHANNEL_BUFFER_BYTES)
#define HDSPM_DMA_AREA_KILOBYTES (HDSPM_DMA_AREA_BYTES/1024) #define HDSPM_DMA_AREA_KILOBYTES (HDSPM_DMA_AREA_BYTES/1024)
/* revisions >= 230 indicate AES32 card */
#define HDSPM_MADI_ANCIENT_REV 204
#define HDSPM_MADI_OLD_REV 207
#define HDSPM_MADI_REV 210
#define HDSPM_RAYDAT_REV 211 #define HDSPM_RAYDAT_REV 211
#define HDSPM_AIO_REV 212 #define HDSPM_AIO_REV 212
#define HDSPM_MADIFACE_REV 213 #define HDSPM_MADIFACE_REV 213
#define HDSPM_AES_REV 240
#define HDSPM_AES32_REV 234
#define HDSPM_AES32_OLD_REV 233
/* speed factor modes */ /* speed factor modes */
#define HDSPM_SPEED_SINGLE 0 #define HDSPM_SPEED_SINGLE 0
...@@ -6503,13 +6496,6 @@ static int __devinit snd_hdspm_create(struct snd_card *card, ...@@ -6503,13 +6496,6 @@ static int __devinit snd_hdspm_create(struct snd_card *card,
strcpy(card->driver, "HDSPM"); strcpy(card->driver, "HDSPM");
switch (hdspm->firmware_rev) { switch (hdspm->firmware_rev) {
case HDSPM_MADI_REV:
case HDSPM_MADI_OLD_REV:
case HDSPM_MADI_ANCIENT_REV:
hdspm->io_type = MADI;
hdspm->card_name = "RME MADI";
hdspm->midiPorts = 3;
break;
case HDSPM_RAYDAT_REV: case HDSPM_RAYDAT_REV:
hdspm->io_type = RayDAT; hdspm->io_type = RayDAT;
hdspm->card_name = "RME RayDAT"; hdspm->card_name = "RME RayDAT";
...@@ -6525,18 +6511,26 @@ static int __devinit snd_hdspm_create(struct snd_card *card, ...@@ -6525,18 +6511,26 @@ static int __devinit snd_hdspm_create(struct snd_card *card,
hdspm->card_name = "RME MADIface"; hdspm->card_name = "RME MADIface";
hdspm->midiPorts = 1; hdspm->midiPorts = 1;
break; break;
case HDSPM_AES_REV: default:
case HDSPM_AES32_REV: if ((hdspm->firmware_rev == 0xf0) ||
case HDSPM_AES32_OLD_REV: ((hdspm->firmware_rev >= 0xe6) &&
(hdspm->firmware_rev <= 0xea))) {
hdspm->io_type = AES32; hdspm->io_type = AES32;
hdspm->card_name = "RME AES32"; hdspm->card_name = "RME AES32";
hdspm->midiPorts = 2; hdspm->midiPorts = 2;
break; } else if ((hdspm->firmware_rev == 0xd5) ||
default: ((hdspm->firmware_rev >= 0xc8) &&
snd_printk(KERN_ERR "HDSPM: unknown firmware revision %x\n", (hdspm->firmware_rev <= 0xcf))) {
hdspm->io_type = MADI;
hdspm->card_name = "RME MADI";
hdspm->midiPorts = 3;
} else {
snd_printk(KERN_ERR
"HDSPM: unknown firmware revision %x\n",
hdspm->firmware_rev); hdspm->firmware_rev);
return -ENODEV; return -ENODEV;
} }
}
err = pci_enable_device(pci); err = pci_enable_device(pci);
if (err < 0) if (err < 0)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment