int csa_match(device_t parent, cfdata_t cf, void *aux) { struct podule_attach_args *pa = aux; if (pa->pa_product == PODULE_CUMANA_SCSI1) return 1; /* PowerROM */ if (pa->pa_product == PODULE_ALSYSTEMS_SCSI && podulebus_initloader(pa) == 0 && (podloader_callloader(pa, 0, 0) == PRID_CUMANA_SCSI1_8 || podloader_callloader(pa, 0, 0) == PRID_CUMANA_SCSI1_16)) return 1; return 0; }
void powerrom_attach(struct device *parent, struct device *self, void *aux) { struct podulebus_attach_args *pa = aux; if (podulebus_initloader(pa) == 0) printf(": card id = 0x%x", podloader_callloader(pa, 0, 0)); printf("\n"); }
int hcsc_match(device_t parent, cfdata_t cf, void *aux) { struct podulebus_attach_args *pa = aux; /* Normal ROM */ if (pa->pa_product == PODULE_HCCS_IDESCSI && strncmp(pa->pa_descr, "SCSI", 4) == 0) return 1; /* PowerROM */ if (pa->pa_product == PODULE_ALSYSTEMS_SCSI && podulebus_initloader(pa) == 0 && podloader_callloader(pa, 0, 0) == PRID_HCCS_SCSI1) return 1; return 0; }
int oak_match(struct device *parent, struct cfdata *cf, void *aux) { struct podulebus_attach_args *pa = aux; if (matchpodule(pa, MANUFACTURER_OAK, PODULE_OAK_SCSI, -1)) return 1; /* PowerROM */ if (pa->pa_product == PODULE_ALSYSTEMS_SCSI && podulebus_initloader(pa) == 0 && podloader_callloader(pa, 0, 0) == PRID_OAK_SCSI1) return 1; return 0; }
static int sec_match(device_t parent, cfdata_t cf, void *aux) { struct podulebus_attach_args *pa = aux; /* Standard ROM, skipping the MCS card that used the same ID. */ if (pa->pa_product == PODULE_ACORN_SCSI && strncmp(pa->pa_descr, "MCS", 3) != 0) return 1; /* PowerROM */ if (pa->pa_product == PODULE_ALSYSTEMS_SCSI && podulebus_initloader(pa) == 0 && podloader_callloader(pa, 0, 0) == PRID_ACORN_SCSI1) return 1; return 0; }