···311311 dma_addr_t page_table_bus;312312};313313314314+#define SBP2_ROM_VALUE_WILDCARD ~0 /* match all */315315+#define SBP2_ROM_VALUE_MISSING 0xff000000 /* not present in the unit dir. */316316+314317/*315318 * List of devices with known bugs.316319 *317320 * The firmware_revision field, masked with 0xffff00, is the best318321 * indicator for the type of bridge chip of a device. It yields a few319322 * false positives but this did not break correctly behaving devices320320- * so far. We use ~0 as a wildcard, since the 24 bit values we get321321- * from the config rom can never match that.323323+ * so far.322324 */323325static const struct {324326 u32 firmware_revision;···342340 },343341 /* Initio bridges, actually only needed for some older ones */ {344342 .firmware_revision = 0x000200,345345- .model = ~0,343343+ .model = SBP2_ROM_VALUE_WILDCARD,346344 .workarounds = SBP2_WORKAROUND_INQUIRY_36,347345 },348346 /* PL-3507 bridge with Prolific firmware */ {349347 .firmware_revision = 0x012800,350350- .model = ~0,348348+ .model = SBP2_ROM_VALUE_WILDCARD,351349 .workarounds = SBP2_WORKAROUND_POWER_CONDITION,352350 },353351 /* Symbios bridge */ {354352 .firmware_revision = 0xa0b800,355355- .model = ~0,353353+ .model = SBP2_ROM_VALUE_WILDCARD,356354 .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS,357355 },358356 /* Datafab MD2-FW2 with Symbios/LSILogic SYM13FW500 bridge */ {359357 .firmware_revision = 0x002600,360360- .model = ~0,358358+ .model = SBP2_ROM_VALUE_WILDCARD,361359 .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS,362360 },363361···10951093 continue;1096109410971095 if (sbp2_workarounds_table[i].model != model &&10981098- sbp2_workarounds_table[i].model != ~0)10961096+ sbp2_workarounds_table[i].model != SBP2_ROM_VALUE_WILDCARD)10991097 continue;1100109811011099 w |= sbp2_workarounds_table[i].workarounds;···11451143 fw_device_get(device);11461144 fw_unit_get(unit);1147114511481148- /* Initialize to values that won't match anything in our table. */11491149- firmware_revision = 0xff000000;11501150- model = 0xff000000;11511151-11521146 /* implicit directory ID */11531147 tgt->directory_id = ((unit->directory - device->config_rom) * 411541148 + CSR_CONFIG_ROM) & 0xffffff;11491149+11501150+ firmware_revision = SBP2_ROM_VALUE_MISSING;11511151+ model = SBP2_ROM_VALUE_MISSING;1155115211561153 if (sbp2_scan_unit_dir(tgt, unit->directory, &model,11571154 &firmware_revision) < 0)