- offset = -1;
- if (module[OLDCARD + TC_PATTERN0] == 0x55 && module[OLDCARD + TC_PATTERN1] == 0x00
- && module[OLDCARD + TC_PATTERN2] == 0xaa && module[OLDCARD + TC_PATTERN3] == 0xff)
- offset = OLDCARD;
- if (module[TC_PATTERN0] == 0x55 && module[TC_PATTERN1] == 0x00
- && module[TC_PATTERN2] == 0xaa && module[TC_PATTERN3] == 0xff)
- offset = 0;
-
- if (offset != -1) {
- tc_bus[slot].base_addr = (unsigned long)module;
- for(i = 0; i < 8; i++) {
- tc_bus[slot].firmware[i] = module[TC_FIRM_VER + offset + 4 * i];
- tc_bus[slot].vendor[i] = module[TC_VENDOR + offset + 4 * i];
- tc_bus[slot].name[i] = module[TC_MODULE + offset + 4 * i];
- }
- tc_bus[slot].firmware[8] = 0;
- tc_bus[slot].vendor[8] = 0;
- tc_bus[slot].name[8] = 0;
- /*
- * Looks unneccesary, but we may change
- * TC? in the future
- */
- switch (slot) {
- case 0:
- tc_bus[slot].interrupt = TC0;
- break;
- case 1:
- tc_bus[slot].interrupt = TC1;
- break;
- case 2:
- tc_bus[slot].interrupt = TC2;
- break;
- /*
- * Yuck! DS5000/200 onboard devices
- */
- case 5:
- tc_bus[slot].interrupt = SCSI_INT;
- break;
- case 6:
- tc_bus[slot].interrupt = ETHER;
- break;
- default:
- tc_bus[slot].interrupt = -1;
- break;
- }
+
+ offset = OLDCARD;
+
+ err = 0;
+ err |= get_dbe(pattern[0], module + OLDCARD + TC_PATTERN0);
+ err |= get_dbe(pattern[1], module + OLDCARD + TC_PATTERN1);
+ err |= get_dbe(pattern[2], module + OLDCARD + TC_PATTERN2);
+ err |= get_dbe(pattern[3], module + OLDCARD + TC_PATTERN3);
+ if (err)
+ continue;
+
+ if (pattern[0] != 0x55 || pattern[1] != 0x00 ||
+ pattern[2] != 0xaa || pattern[3] != 0xff) {
+ offset = NEWCARD;
+
+ err = 0;
+ err |= get_dbe(pattern[0], module + TC_PATTERN0);
+ err |= get_dbe(pattern[1], module + TC_PATTERN1);
+ err |= get_dbe(pattern[2], module + TC_PATTERN2);
+ err |= get_dbe(pattern[3], module + TC_PATTERN3);
+ if (err)
+ continue;