Lines Matching defs:sc
87 int aac_enqueue_response(struct aac_softc *sc, int queue,
221 aac_attach(struct aac_softc *sc)
229 mtx_init(&sc->aac_free_mtx, IPL_BIO);
230 aac_initq_free(sc);
231 aac_initq_ready(sc);
232 aac_initq_busy(sc);
233 aac_initq_bio(sc);
236 AAC_MASK_INTERRUPTS(sc);
239 sc->aac_state |= AAC_STATE_SUSPEND;
244 error = aac_check_firmware(sc);
251 AAC_LOCK_INIT(&sc->aac_sync_lock, "AAC sync FIB lock");
252 AAC_LOCK_INIT(&sc->aac_aifq_lock, "AAC AIF lock");
253 AAC_LOCK_INIT(&sc->aac_io_lock, "AAC I/O lock");
254 AAC_LOCK_INIT(&sc->aac_container_lock, "AAC container lock");
255 TAILQ_INIT(&sc->aac_container_tqh);
258 sc->aac_aifq_head = sc->aac_aifq_tail = AAC_AIFQ_LENGTH;
263 error = aac_init(sc);
268 saa.saa_adapter_softc = sc;
273 saa.saa_openings = (sc->total_fibs - 8) /
274 (sc->aac_container_count ? sc->aac_container_count : 1);
275 saa.saa_pool = &sc->aac_iopool;
279 config_found(&sc->aac_dev, &saa, scsiprint);
282 sc->aifthread = 0;
283 sc->aifflags = 0;
284 kthread_create_deferred(aac_create_thread, sc);
292 struct aac_softc *sc = arg;
294 if (kthread_create(aac_command_thread, sc, &sc->aifthread,
295 sc->aac_dev.dv_xname)) {
298 sc->aac_dev.dv_xname);
301 sc->aac_dev.dv_xname));
309 aac_startup(struct aac_softc *sc)
317 aac_alloc_sync_fib(sc, &fib, 0);
320 AAC_DPRINTF(AAC_D_MISC, ("%s: aac startup\n", sc->aac_dev.dv_xname));
322 sc->aac_container_count = 0;
330 if (aac_sync_fib(sc, ContainerCommand, 0, fib,
333 sc->aac_dev.dv_xname, i);
351 sc->aac_dev.dv_xname, i,
357 sc->aac_container_count++;
358 sc->aac_hdr[i].hd_present = 1;
359 sc->aac_hdr[i].hd_size = mir->MntTable[0].Capacity;
364 sc->aac_hdr[i].hd_size &= ~AAC_SECS32;
365 aac_eval_mapping(sc->aac_hdr[i].hd_size, &drv_cyls,
367 sc->aac_hdr[i].hd_heads = drv_hds;
368 sc->aac_hdr[i].hd_secs = drv_secs;
370 sc->aac_hdr[i].hd_size = drv_cyls * drv_hds * drv_secs;
372 sc->aac_hdr[i].hd_devtype = mir->MntTable[0].VolType;
380 aac_release_sync_fib(sc);
383 sc->aac_state &= ~AAC_STATE_SUSPEND;
386 AAC_UNMASK_INTERRUPTS(sc);
395 struct aac_softc *sc = arg;
405 reason = AAC_GET_ISTATUS(sc);
406 AAC_CLEAR_ISTATUS(sc, reason);
407 (void)AAC_GET_ISTATUS(sc);
412 AAC_DPRINTF(AAC_D_INTR, ("%s: intr: sc=%p: reason=%#x\n",
413 sc->aac_dev.dv_xname, sc, reason));
421 if (sc->aifflags & AAC_AIFFLAGS_RUNNING) {
422 sc->aifflags |= AAC_AIFFLAGS_COMPLETE;
424 AAC_LOCK_ACQUIRE(&sc->aac_io_lock);
425 aac_complete(sc);
426 AAC_LOCK_RELEASE(&sc->aac_io_lock);
436 if (sc->aac_common->ac_printf[0] == 0)
437 sc->aac_common->ac_printf[0] = 32;
446 if (sc->aifthread)
447 wakeup(sc->aifthread);
462 aac_startio(struct aac_softc *sc)
466 AAC_DPRINTF(AAC_D_CMD, ("%s: start command", sc->aac_dev.dv_xname));
468 if (sc->flags & AAC_QUEUE_FRZN) {
480 cm = aac_dequeue_ready(sc);
488 aac_bio_command(sc, &cm);
490 sc->aac_dev.dv_xname));
505 sc->aac_dev.dv_xname));
518 struct aac_softc *sc = cm->cm_sc;
528 error = bus_dmamap_load(sc->aac_dmat, cm->cm_datamap,
549 struct aac_softc *sc = arg;
555 sc->aac_dev.dv_xname));
556 AAC_LOCK_ACQUIRE(&sc->aac_io_lock);
557 sc->aifflags = AAC_AIFFLAGS_RUNNING;
559 while ((sc->aifflags & AAC_AIFFLAGS_EXIT) == 0) {
563 sc->aac_dev.dv_xname, sc->aifflags));
566 if ((sc->aifflags & AAC_AIFFLAGS_PENDING) == 0) {
569 sc->aac_dev.dv_xname));
570 AAC_LOCK_RELEASE(&sc->aac_io_lock);
571 retval = tsleep_nsec(sc->aifthread, PRIBIO, "aifthd",
573 AAC_LOCK_ACQUIRE(&sc->aac_io_lock);
576 if ((sc->aifflags & AAC_AIFFLAGS_COMPLETE) != 0) {
577 aac_complete(sc);
578 sc->aifflags &= ~AAC_AIFFLAGS_COMPLETE;
587 aac_timeout(sc);
590 if (sc->aac_common->ac_printf[0] != 0)
591 aac_print_printf(sc);
594 while (aac_dequeue_fib(sc, AAC_HOST_NORM_CMD_QUEUE,
597 AAC_PRINT_FIB(sc, fib);
601 //aac_handle_aif(sc, fib);
605 sc->aac_dev.dv_xname);
630 aac_enqueue_response(sc,
636 sc->aifflags &= ~AAC_AIFFLAGS_RUNNING;
637 AAC_LOCK_RELEASE(&sc->aac_io_lock);
640 sc->aac_dev.dv_xname));
650 struct aac_softc *sc = (struct aac_softc *)context;
655 AAC_DPRINTF(AAC_D_CMD, ("%s: complete", sc->aac_dev.dv_xname));
660 if (aac_dequeue_fib(sc, AAC_HOST_NORM_RESP_QUEUE, &fib_size,
665 cm = sc->aac_commands + fib->Header.SenderData;
667 AAC_PRINT_FIB(sc, fib);
686 sc->flags &= ~AAC_QUEUE_FRZN;
687 aac_startio(sc);
694 aac_bio_command(struct aac_softc *sc, struct aac_command **cmp)
701 AAC_DPRINTF(AAC_D_CMD, ("%s: bio command", sc->aac_dev.dv_xname));
704 if ((cm = aac_dequeue_bio(sc)) == NULL)
731 panic("%s: invalid opcode %#x", sc->aac_dev.dv_xname,
736 if ((sc->flags & AAC_FLAGS_SG_64BIT) == 0) {
844 struct aac_softc *sc = cm->cm_sc;
853 aac_startio(sc);
856 sc->aac_dev.dv_xname));
857 AAC_LOCK_RELEASE(&sc->aac_io_lock);
859 AAC_LOCK_ACQUIRE(&sc->aac_io_lock);
874 struct aac_softc *sc = xsc;
878 mtx_enter(&sc->aac_free_mtx);
879 cm = aac_dequeue_free(sc);
880 mtx_leave(&sc->aac_free_mtx);
904 struct aac_softc *sc = xsc;
908 mtx_enter(&sc->aac_free_mtx);
910 mtx_leave(&sc->aac_free_mtx);
917 aac_alloc_commands(struct aac_softc *sc)
923 if (sc->total_fibs + AAC_FIB_COUNT > sc->aac_max_fibs)
931 if (bus_dmamem_alloc(sc->aac_dmat, AAC_FIBMAP_SIZE, PAGE_SIZE, 0,
933 printf("%s: can't alloc FIBs\n", sc->aac_dev.dv_xname);
938 if (bus_dmamem_map(sc->aac_dmat, &fm->aac_seg, 1,
940 printf("%s: can't map FIB structure\n", sc->aac_dev.dv_xname);
945 if (bus_dmamap_create(sc->aac_dmat, AAC_FIBMAP_SIZE, 1,
947 printf("%s: can't create dma map\n", sc->aac_dev.dv_xname);
952 if (bus_dmamap_load(sc->aac_dmat, fm->aac_fibmap, fm->aac_fibs,
954 printf("%s: can't load dma map\n", sc->aac_dev.dv_xname);
960 AAC_LOCK_ACQUIRE(&sc->aac_io_lock);
962 cm = sc->aac_commands + sc->total_fibs;
964 cm->cm_sc = sc;
968 cm->cm_index = sc->total_fibs;
970 if (bus_dmamap_create(sc->aac_dmat, MAXPHYS, AAC_MAXSGENTRIES,
974 aac_release_command(sc, cm);
975 sc->total_fibs++;
979 TAILQ_INSERT_TAIL(&sc->aac_fibmap_tqh, fm, fm_link);
981 sc->aac_dev.dv_xname,
982 sc->total_fibs));
983 AAC_LOCK_RELEASE(&sc->aac_io_lock);
988 bus_dmamap_destroy(sc->aac_dmat, fm->aac_fibmap);
990 bus_dmamem_unmap(sc->aac_dmat, (caddr_t)fm->aac_fibs, AAC_FIBMAP_SIZE);
992 bus_dmamem_free(sc->aac_dmat, &fm->aac_seg, fm->aac_nsegs);
996 AAC_LOCK_RELEASE(&sc->aac_io_lock);
1004 aac_free_commands(struct aac_softc *sc)
1010 while ((fm = TAILQ_FIRST(&sc->aac_fibmap_tqh)) != NULL) {
1012 TAILQ_REMOVE(&sc->aac_fibmap_tqh, fm, fm_link);
1018 for (i = 0; i < AAC_FIB_COUNT && sc->total_fibs--; i++) {
1020 bus_dmamap_destroy(sc->aac_dmat, cm->cm_datamap);
1023 bus_dmamap_unload(sc->aac_dmat, fm->aac_fibmap);
1024 bus_dmamap_destroy(sc->aac_dmat, fm->aac_fibmap);
1025 bus_dmamem_unmap(sc->aac_dmat, (caddr_t)fm->aac_fibs,
1027 bus_dmamem_free(sc->aac_dmat, &fm->aac_seg, fm->aac_nsegs);
1040 struct aac_softc *sc = cm->cm_sc;
1079 bus_dmamap_sync(sc->aac_dmat, cm->cm_datamap, 0,
1083 bus_dmamap_sync(sc->aac_dmat, cm->cm_datamap, 0,
1089 if (aac_enqueue_fib(sc, cm->cm_queue, cm) == EBUSY) {
1102 struct aac_softc *sc = cm->cm_sc;
1109 bus_dmamap_sync(sc->aac_dmat, cm->cm_datamap, 0,
1113 bus_dmamap_sync(sc->aac_dmat, cm->cm_datamap, 0,
1117 bus_dmamap_unload(sc->aac_dmat, cm->cm_datamap);
1130 aac_check_firmware(struct aac_softc *sc)
1138 if (sc->flags & AAC_FLAGS_PERC2QC) {
1139 if (aac_sync_command(sc, AAC_MONKER_GETKERNVER, 0, 0, 0, 0,
1142 sc->aac_dev.dv_xname);
1147 major = (AAC_GET_MAILBOX(sc, 1) & 0xff) - 0x30;
1148 minor = (AAC_GET_MAILBOX(sc, 2) & 0xff) - 0x30;
1151 sc->aac_dev.dv_xname, major, minor);
1160 if (aac_sync_command(sc, AAC_MONKER_GETINFO, 0, 0, 0, 0, NULL)) {
1162 sc->aac_dev.dv_xname);
1165 options = AAC_GET_MAILBOX(sc, 1);
1166 sc->supported_options = options;
1169 (sc->flags & AAC_FLAGS_NO4GB) == 0)
1170 sc->flags |= AAC_FLAGS_4GB_WINDOW;
1172 sc->flags |= AAC_FLAGS_ENABLE_CAM;
1176 sc->aac_dev.dv_xname);
1177 sc->flags |= AAC_FLAGS_SG_64BIT;
1181 if ((sc->flags & AAC_FLAGS_256FIBS) == 0)
1182 sc->aac_max_fibs = AAC_MAX_FIBS;
1184 sc->aac_max_fibs = 256;
1190 aac_init(struct aac_softc *sc)
1205 code = AAC_GET_FWSTATUS(sc);
1208 sc->aac_dev.dv_xname);
1213 sc->aac_dev.dv_xname);
1222 sc->aac_dev.dv_xname, code);
1232 if (bus_dmamem_alloc(sc->aac_dmat, AAC_COMMON_ALLOCSIZE, PAGE_SIZE, 0,
1235 sc->aac_dev.dv_xname);
1240 if (bus_dmamem_map(sc->aac_dmat, &seg, nsegs, AAC_COMMON_ALLOCSIZE,
1241 (caddr_t *)&sc->aac_common, BUS_DMA_NOWAIT)) {
1243 sc->aac_dev.dv_xname);
1249 if (bus_dmamap_create(sc->aac_dmat, AAC_COMMON_ALLOCSIZE, 1,
1250 AAC_COMMON_ALLOCSIZE, 0, BUS_DMA_NOWAIT, &sc->aac_common_map)) {
1251 printf("%s: can't create dma map\n", sc->aac_dev.dv_xname);
1257 if (bus_dmamap_load(sc->aac_dmat, sc->aac_common_map, sc->aac_common,
1259 printf("%s: can't load dma map\n", sc->aac_dev.dv_xname);
1265 sc->aac_common_busaddr = sc->aac_common_map->dm_segs[0].ds_addr;
1267 if (sc->aac_common_busaddr < 8192) {
1268 sc->aac_common = (struct aac_common *)
1269 ((uint8_t *)sc->aac_common + 8192);
1270 sc->aac_common_busaddr += 8192;
1274 TAILQ_INIT(&sc->aac_fibmap_tqh);
1275 sc->aac_commands = malloc(AAC_MAX_FIBS * sizeof(struct aac_command),
1277 while (sc->total_fibs < AAC_MAX_FIBS) {
1278 if (aac_alloc_commands(sc) != 0)
1281 if (sc->total_fibs == 0) {
1286 scsi_iopool_init(&sc->aac_iopool, sc,
1293 ip = &sc->aac_common->ac_init;
1297 ip->AdapterFibsPhysicalAddress = sc->aac_common_busaddr +
1303 ip->PrintfBufferAddress = sc->aac_common_busaddr +
1314 if (sc->flags & AAC_FLAGS_BROKEN_MEMMAP) {
1338 sc->aac_queues =
1339 (struct aac_queue_table *)((caddr_t)sc->aac_common + qoffset);
1340 ip->CommHeaderAddress = sc->aac_common_busaddr + qoffset;
1342 sc->aac_queues->qt_qindex[AAC_HOST_NORM_CMD_QUEUE][AAC_PRODUCER_INDEX] =
1344 sc->aac_queues->qt_qindex[AAC_HOST_NORM_CMD_QUEUE][AAC_CONSUMER_INDEX] =
1346 sc->aac_queues->qt_qindex[AAC_HOST_HIGH_CMD_QUEUE][AAC_PRODUCER_INDEX] =
1348 sc->aac_queues->qt_qindex[AAC_HOST_HIGH_CMD_QUEUE][AAC_CONSUMER_INDEX] =
1350 sc->aac_queues->qt_qindex[AAC_ADAP_NORM_CMD_QUEUE][AAC_PRODUCER_INDEX] =
1352 sc->aac_queues->qt_qindex[AAC_ADAP_NORM_CMD_QUEUE][AAC_CONSUMER_INDEX] =
1354 sc->aac_queues->qt_qindex[AAC_ADAP_HIGH_CMD_QUEUE][AAC_PRODUCER_INDEX] =
1356 sc->aac_queues->qt_qindex[AAC_ADAP_HIGH_CMD_QUEUE][AAC_CONSUMER_INDEX] =
1358 sc->aac_queues->qt_qindex[AAC_HOST_NORM_RESP_QUEUE][AAC_PRODUCER_INDEX]=
1360 sc->aac_queues->qt_qindex[AAC_HOST_NORM_RESP_QUEUE][AAC_CONSUMER_INDEX]=
1362 sc->aac_queues->qt_qindex[AAC_HOST_HIGH_RESP_QUEUE][AAC_PRODUCER_INDEX]=
1364 sc->aac_queues->qt_qindex[AAC_HOST_HIGH_RESP_QUEUE][AAC_CONSUMER_INDEX]=
1366 sc->aac_queues->qt_qindex[AAC_ADAP_NORM_RESP_QUEUE][AAC_PRODUCER_INDEX]=
1368 sc->aac_queues->qt_qindex[AAC_ADAP_NORM_RESP_QUEUE][AAC_CONSUMER_INDEX]=
1370 sc->aac_queues->qt_qindex[AAC_ADAP_HIGH_RESP_QUEUE][AAC_PRODUCER_INDEX]=
1372 sc->aac_queues->qt_qindex[AAC_ADAP_HIGH_RESP_QUEUE][AAC_CONSUMER_INDEX]=
1374 sc->aac_qentries[AAC_HOST_NORM_CMD_QUEUE] =
1375 &sc->aac_queues->qt_HostNormCmdQueue[0];
1376 sc->aac_qentries[AAC_HOST_HIGH_CMD_QUEUE] =
1377 &sc->aac_queues->qt_HostHighCmdQueue[0];
1378 sc->aac_qentries[AAC_ADAP_NORM_CMD_QUEUE] =
1379 &sc->aac_queues->qt_AdapNormCmdQueue[0];
1380 sc->aac_qentries[AAC_ADAP_HIGH_CMD_QUEUE] =
1381 &sc->aac_queues->qt_AdapHighCmdQueue[0];
1382 sc->aac_qentries[AAC_HOST_NORM_RESP_QUEUE] =
1383 &sc->aac_queues->qt_HostNormRespQueue[0];
1384 sc->aac_qentries[AAC_HOST_HIGH_RESP_QUEUE] =
1385 &sc->aac_queues->qt_HostHighRespQueue[0];
1386 sc->aac_qentries[AAC_ADAP_NORM_RESP_QUEUE] =
1387 &sc->aac_queues->qt_AdapNormRespQueue[0];
1388 sc->aac_qentries[AAC_ADAP_HIGH_RESP_QUEUE] =
1389 &sc->aac_queues->qt_AdapHighRespQueue[0];
1394 switch (sc->aac_hwif) {
1396 AAC_SETREG4(sc, AAC_RX_ODBR, ~0);
1399 AAC_SETREG4(sc, AAC_RKT_ODBR, ~0);
1408 if (aac_sync_command(sc, AAC_MONKER_INITSTRUCT,
1409 sc->aac_common_busaddr +
1413 sc->aac_dev.dv_xname);
1418 aac_describe_controller(sc);
1419 aac_startup(sc);
1425 bus_dmamap_unload(sc->aac_dmat, sc->aac_common_map);
1427 bus_dmamap_destroy(sc->aac_dmat, sc->aac_common_map);
1429 bus_dmamem_unmap(sc->aac_dmat, (caddr_t)sc->aac_common,
1430 sizeof *sc->aac_common);
1432 bus_dmamem_free(sc->aac_dmat, &seg, 1);
1441 aac_sync_command(struct aac_softc *sc, u_int32_t command, u_int32_t arg0,
1450 AAC_SET_MAILBOX(sc, command, arg0, arg1, arg2, arg3);
1453 AAC_CLEAR_ISTATUS(sc, AAC_DB_SYNC_COMMAND);
1456 AAC_QNOTIFY(sc, AAC_DB_SYNC_COMMAND);
1462 reason = AAC_GET_ISTATUS(sc);
1465 reason = AAC_GET_ISTATUS(sc);
1468 reason = AAC_GET_ISTATUS(sc);
1479 AAC_CLEAR_ISTATUS(sc, AAC_DB_SYNC_COMMAND);
1482 status = AAC_GET_MAILBOX(sc, 0);
1494 aac_alloc_sync_fib(struct aac_softc *sc, struct aac_fib **fib, int flags)
1502 AAC_LOCK_ACQUIRE(&sc->aac_sync_lock);
1504 *fib = &sc->aac_common->ac_sync_fib;
1513 aac_release_sync_fib(struct aac_softc *sc)
1515 AAC_LOCK_RELEASE(&sc->aac_sync_lock);
1522 aac_sync_fib(struct aac_softc *sc, u_int32_t command, u_int32_t xferstate,
1544 fib->Header.ReceiverFibAddress = sc->aac_common_busaddr +
1551 if (aac_sync_command(sc, AAC_MONKER_SYNCFIB,
1554 sc->aac_dev.dv_xname));
1592 aac_enqueue_fib(struct aac_softc *sc, int queue, struct aac_command *cm)
1603 pi = sc->aac_queues->qt_qindex[queue][AAC_PRODUCER_INDEX];
1604 ci = sc->aac_queues->qt_qindex[queue][AAC_CONSUMER_INDEX];
1617 (sc->aac_qentries[queue] + pi)->aq_fib_size = fib_size;
1618 (sc->aac_qentries[queue] + pi)->aq_fib_addr = fib_addr;
1621 sc->aac_queues->qt_qindex[queue][AAC_PRODUCER_INDEX] = pi + 1;
1631 AAC_QNOTIFY(sc, aac_qinfo[queue].notify);
1644 aac_dequeue_fib(struct aac_softc *sc, int queue, u_int32_t *fib_size,
1653 pi = sc->aac_queues->qt_qindex[queue][AAC_PRODUCER_INDEX];
1654 ci = sc->aac_queues->qt_qindex[queue][AAC_CONSUMER_INDEX];
1675 *fib_size = (sc->aac_qentries[queue] + ci)->aq_fib_size;
1686 fib_index = (sc->aac_qentries[queue] + ci)->aq_fib_addr /
1688 *fib_addr = &sc->aac_common->ac_fibs[fib_index];
1703 fib_index = (sc->aac_qentries[queue] + ci)->aq_fib_addr;
1704 cm = sc->aac_commands + (fib_index >> 1);
1724 sc->aac_queues->qt_qindex[queue][AAC_CONSUMER_INDEX] = ci + 1;
1728 AAC_QNOTIFY(sc, aac_qinfo[queue].notify);
1739 aac_enqueue_response(struct aac_softc *sc, int queue, struct aac_fib *fib)
1752 pi = sc->aac_queues->qt_qindex[queue][AAC_PRODUCER_INDEX];
1753 ci = sc->aac_queues->qt_qindex[queue][AAC_CONSUMER_INDEX];
1766 (sc->aac_qentries[queue] + pi)->aq_fib_size = fib_size;
1767 (sc->aac_qentries[queue] + pi)->aq_fib_addr = fib_addr;
1770 sc->aac_queues->qt_qindex[queue][AAC_PRODUCER_INDEX] = pi + 1;
1774 AAC_QNOTIFY(sc, aac_qinfo[queue].notify);
1785 struct aac_softc *sc = cm->cm_sc;
1788 sc->aac_dev.dv_xname, cm, cm->cm_flags,
1796 AAC_PRINT_FIB(sc, cm->cm_fib);
1811 aac_timeout(struct aac_softc *sc)
1821 TAILQ_FOREACH(cm, &sc->aac_busy, cm_link) {
1835 aac_sa_get_fwstatus(struct aac_softc *sc)
1837 return (AAC_GETREG4(sc, AAC_SA_FWSTATUS));
1841 aac_rx_get_fwstatus(struct aac_softc *sc)
1843 return (AAC_GETREG4(sc, AAC_RX_FWSTATUS));
1847 aac_fa_get_fwstatus(struct aac_softc *sc)
1849 return (AAC_GETREG4(sc, AAC_FA_FWSTATUS));
1853 aac_rkt_get_fwstatus(struct aac_softc *sc)
1855 return(AAC_GETREG4(sc, AAC_RKT_FWSTATUS));
1863 aac_sa_qnotify(struct aac_softc *sc, int qbit)
1865 AAC_SETREG2(sc, AAC_SA_DOORBELL1_SET, qbit);
1869 aac_rx_qnotify(struct aac_softc *sc, int qbit)
1871 AAC_SETREG4(sc, AAC_RX_IDBR, qbit);
1875 aac_fa_qnotify(struct aac_softc *sc, int qbit)
1877 AAC_SETREG2(sc, AAC_FA_DOORBELL1, qbit);
1878 AAC_FA_HACK(sc);
1882 aac_rkt_qnotify(struct aac_softc *sc, int qbit)
1884 AAC_SETREG4(sc, AAC_RKT_IDBR, qbit);
1891 aac_sa_get_istatus(struct aac_softc *sc)
1893 return (AAC_GETREG2(sc, AAC_SA_DOORBELL0));
1897 aac_rx_get_istatus(struct aac_softc *sc)
1899 return (AAC_GETREG4(sc, AAC_RX_ODBR));
1903 aac_fa_get_istatus(struct aac_softc *sc)
1905 return (AAC_GETREG2(sc, AAC_FA_DOORBELL0));
1909 aac_rkt_get_istatus(struct aac_softc *sc)
1911 return(AAC_GETREG4(sc, AAC_RKT_ODBR));
1918 aac_sa_clear_istatus(struct aac_softc *sc, int mask)
1920 AAC_SETREG2(sc, AAC_SA_DOORBELL0_CLEAR, mask);
1924 aac_rx_clear_istatus(struct aac_softc *sc, int mask)
1926 AAC_SETREG4(sc, AAC_RX_ODBR, mask);
1930 aac_fa_clear_istatus(struct aac_softc *sc, int mask)
1932 AAC_SETREG2(sc, AAC_FA_DOORBELL0_CLEAR, mask);
1933 AAC_FA_HACK(sc);
1937 aac_rkt_clear_istatus(struct aac_softc *sc, int mask)
1939 AAC_SETREG4(sc, AAC_RKT_ODBR, mask);
1946 aac_sa_set_mailbox(struct aac_softc *sc, u_int32_t command, u_int32_t arg0,
1949 AAC_SETREG4(sc, AAC_SA_MAILBOX, command);
1950 AAC_SETREG4(sc, AAC_SA_MAILBOX + 4, arg0);
1951 AAC_SETREG4(sc, AAC_SA_MAILBOX + 8, arg1);
1952 AAC_SETREG4(sc, AAC_SA_MAILBOX + 12, arg2);
1953 AAC_SETREG4(sc, AAC_SA_MAILBOX + 16, arg3);
1957 aac_rx_set_mailbox(struct aac_softc *sc, u_int32_t command, u_int32_t arg0,
1960 AAC_SETREG4(sc, AAC_RX_MAILBOX, command);
1961 AAC_SETREG4(sc, AAC_RX_MAILBOX + 4, arg0);
1962 AAC_SETREG4(sc, AAC_RX_MAILBOX + 8, arg1);
1963 AAC_SETREG4(sc, AAC_RX_MAILBOX + 12, arg2);
1964 AAC_SETREG4(sc, AAC_RX_MAILBOX + 16, arg3);
1968 aac_fa_set_mailbox(struct aac_softc *sc, u_int32_t command, u_int32_t arg0,
1971 AAC_SETREG4(sc, AAC_FA_MAILBOX, command);
1972 AAC_FA_HACK(sc);
1973 AAC_SETREG4(sc, AAC_FA_MAILBOX + 4, arg0);
1974 AAC_FA_HACK(sc);
1975 AAC_SETREG4(sc, AAC_FA_MAILBOX + 8, arg1);
1976 AAC_FA_HACK(sc);
1977 AAC_SETREG4(sc, AAC_FA_MAILBOX + 12, arg2);
1978 AAC_FA_HACK(sc);
1979 AAC_SETREG4(sc, AAC_FA_MAILBOX + 16, arg3);
1980 AAC_FA_HACK(sc);
1984 aac_rkt_set_mailbox(struct aac_softc *sc, u_int32_t command, u_int32_t arg0,
1987 AAC_SETREG4(sc, AAC_RKT_MAILBOX, command);
1988 AAC_SETREG4(sc, AAC_RKT_MAILBOX + 4, arg0);
1989 AAC_SETREG4(sc, AAC_RKT_MAILBOX + 8, arg1);
1990 AAC_SETREG4(sc, AAC_RKT_MAILBOX + 12, arg2);
1991 AAC_SETREG4(sc, AAC_RKT_MAILBOX + 16, arg3);
1998 aac_sa_get_mailbox(struct aac_softc *sc, int mb)
2000 return (AAC_GETREG4(sc, AAC_SA_MAILBOX + (mb * 4)));
2004 aac_rx_get_mailbox(struct aac_softc *sc, int mb)
2006 return (AAC_GETREG4(sc, AAC_RX_MAILBOX + (mb * 4)));
2010 aac_fa_get_mailbox(struct aac_softc *sc, int mb)
2012 return (AAC_GETREG4(sc, AAC_FA_MAILBOX + (mb * 4)));
2016 aac_rkt_get_mailbox(struct aac_softc *sc, int mb)
2018 return(AAC_GETREG4(sc, AAC_RKT_MAILBOX + (mb * 4)));
2025 aac_sa_set_interrupts(struct aac_softc *sc, int enable)
2028 sc->aac_dev.dv_xname, enable ? "en" : "dis"));
2031 AAC_SETREG2((sc), AAC_SA_MASK0_CLEAR, AAC_DB_INTERRUPTS);
2033 AAC_SETREG2((sc), AAC_SA_MASK0_SET, ~0);
2037 aac_rx_set_interrupts(struct aac_softc *sc, int enable)
2040 sc->aac_dev.dv_xname, enable ? "en" : "dis"));
2043 AAC_SETREG4(sc, AAC_RX_OIMR, ~AAC_DB_INTERRUPTS);
2045 AAC_SETREG4(sc, AAC_RX_OIMR, ~0);
2049 aac_fa_set_interrupts(struct aac_softc *sc, int enable)
2052 sc->aac_dev.dv_xname, enable ? "en" : "dis"));
2055 AAC_SETREG2((sc), AAC_FA_MASK0_CLEAR, AAC_DB_INTERRUPTS);
2056 AAC_FA_HACK(sc);
2058 AAC_SETREG2((sc), AAC_FA_MASK0, ~0);
2059 AAC_FA_HACK(sc);
2064 aac_rkt_set_interrupts(struct aac_softc *sc, int enable)
2067 sc->aac_dev.dv_xname, enable ? "en" : "dis"));
2070 AAC_SETREG4(sc, AAC_RKT_OIMR, ~AAC_DB_INTERRUPTS);
2072 AAC_SETREG4(sc, AAC_RKT_OIMR, ~0);
2102 struct aac_softc *sc = link->bus->sb_adapter_softc;
2109 sc->aac_dev.dv_xname));
2134 sc->aac_hdr[target].hd_devtype));
2153 _lto4b(sc->aac_hdr[target].hd_size - 1, rcd.addr);
2173 struct aac_softc *sc = link->bus->sb_adapter_softc;
2185 if (target >= AAC_MAX_CONTAINERS || !sc->aac_hdr[target].hd_present ||
2197 AAC_DPRINTF(AAC_D_CMD, ("%s: aac_scsi_cmd: ", sc->aac_dev.dv_xname));
2259 if (blockno >= sc->aac_hdr[target].hd_size ||
2260 blockno + blockcnt > sc->aac_hdr[target].hd_size) {
2263 sc->aac_dev.dv_xname, blockno,
2264 blockcnt, sc->aac_hdr[target].hd_size);
2290 aac_startio(sc);
2297 sc->aac_dev.dv_xname);
2310 sc->aac_dev.dv_xname));
2321 aac_describe_controller(struct aac_softc *sc)
2326 aac_alloc_sync_fib(sc, &fib, 0);
2329 if (aac_sync_fib(sc, RequestAdapterInfo, 0, fib, 1)) {
2331 sc->aac_dev.dv_xname);
2332 aac_release_sync_fib(sc);
2337 printf("%s: %s %dMHz, %dMB cache memory, %s\n", sc->aac_dev.dv_xname,
2343 sc->aac_revision = info->KernelRevision;
2345 sc->aac_dev.dv_xname,
2352 aac_release_sync_fib(sc);
2375 aac_print_fib(struct aac_softc *sc, struct aac_fib *fib, const char *caller)
2446 aac_print_aif(struct aac_softc *sc, struct aac_aif_command *aif)
2448 printf("%s: print_aif: ", sc->aac_dev.dv_xname);