diff --git a/sound/firewire/dice.c b/sound/firewire/dice.c index 208ca0a..a2bef4e 100644 --- a/sound/firewire/dice.c +++ b/sound/firewire/dice.c @@ -1113,6 +1113,9 @@ static void dice_card_free(struct snd_card *card) #define DICE_CATEGORY_ID 0x04 +#define DICE_VENDOR_ID_WEISS 0x1C6A +#define DICE_CATEGORY_ID_WEISS 0x00 + static int __devinit dice_interface_check(struct fw_unit *unit) { static const int min_values[10] __devinitconst = { @@ -1146,9 +1149,18 @@ static int __devinit dice_interface_check(struct fw_unit *unit) break; } } - if (device->config_rom[3] != ((vendor << 8) | DICE_CATEGORY_ID) || - device->config_rom[4] >> 22 != model) - return -ENODEV; + switch (vendor) { + case DICE_VENDOR_ID_WEISS: + if (device->config_rom[3] != ((vendor << 8) | DICE_CATEGORY_ID_WEISS) || + device->config_rom[4] >> 22 != model) + return -ENODEV; + break; + default: + if (device->config_rom[3] != ((vendor << 8) | DICE_CATEGORY_ID) || + device->config_rom[4] >> 22 != model) + return -ENODEV; + break; + } /* * Check that the sub address spaces exist and are located inside the