pScb 217 dev/ic/iha.c iha_setup_sg_list(sc, pScb) pScb 219 dev/ic/iha.c struct iha_scb *pScb; pScb 221 dev/ic/iha.c bus_dma_segment_t *segs = pScb->SCB_DataDma->dm_segs; pScb 222 dev/ic/iha.c int i, error, nseg = pScb->SCB_DataDma->dm_nsegs; pScb 225 dev/ic/iha.c error = bus_dmamap_load(sc->sc_dmat, pScb->SCB_SGDma, pScb 226 dev/ic/iha.c pScb->SCB_SGList, sizeof(pScb->SCB_SGList), NULL, pScb 227 dev/ic/iha.c (pScb->SCB_Flags & SCSI_NOSLEEP) ? pScb 230 dev/ic/iha.c sc_print_addr(pScb->SCB_Xs->sc_link); pScb 239 dev/ic/iha.c pScb->SCB_Flags |= FLAG_SG; pScb 240 dev/ic/iha.c bzero(pScb->SCB_SGList, sizeof(pScb->SCB_SGList)); pScb 242 dev/ic/iha.c pScb->SCB_SGIdx = 0; pScb 243 dev/ic/iha.c pScb->SCB_SGCount = nseg; pScb 246 dev/ic/iha.c pScb->SCB_SGList[i].SG_Len = segs[i].ds_len; pScb 247 dev/ic/iha.c pScb->SCB_SGList[i].SG_Addr = segs[i].ds_addr; pScb 250 dev/ic/iha.c bus_dmamap_sync(sc->sc_dmat, pScb->SCB_SGDma, pScb 251 dev/ic/iha.c 0, sizeof(pScb->SCB_SGList), BUS_DMASYNC_PREWRITE); pScb 266 dev/ic/iha.c struct iha_scb *pScb; pScb 276 dev/ic/iha.c pScb = iha_pop_free_scb(sc); pScb 277 dev/ic/iha.c if (pScb == NULL) { pScb 283 dev/ic/iha.c pScb->SCB_Target = sc_link->target; pScb 284 dev/ic/iha.c pScb->SCB_Lun = sc_link->lun; pScb 285 dev/ic/iha.c pScb->SCB_Tcs = &sc->HCS_Tcs[pScb->SCB_Target]; pScb 286 dev/ic/iha.c pScb->SCB_Flags = xs->flags; pScb 287 dev/ic/iha.c pScb->SCB_Ident = MSG_IDENTIFYFLAG | pScb 288 dev/ic/iha.c (pScb->SCB_Lun & MSG_IDENTIFY_LUNMASK); pScb 291 dev/ic/iha.c && ((pScb->SCB_Flags & SCSI_POLL) == 0)) pScb 292 dev/ic/iha.c pScb->SCB_Ident |= MSG_IDENTIFY_DISCFLAG; pScb 294 dev/ic/iha.c pScb->SCB_Xs = xs; pScb 295 dev/ic/iha.c pScb->SCB_CDBLen = xs->cmdlen; pScb 296 dev/ic/iha.c bcopy(xs->cmd, &pScb->SCB_CDB, xs->cmdlen); pScb 298 dev/ic/iha.c pScb->SCB_BufCharsLeft = pScb->SCB_BufChars = xs->datalen; pScb 300 dev/ic/iha.c if ((pScb->SCB_Flags & (SCSI_DATA_IN | SCSI_DATA_OUT)) != 0) { pScb 302 dev/ic/iha.c if (pScb->SCB_Flags & SCSI_DATA_UIO) pScb 304 dev/ic/iha.c pScb->SCB_DataDma, (struct uio *)xs->data, pScb 305 dev/ic/iha.c (pScb->SCB_Flags & SCSI_NOSLEEP) ? pScb 309 dev/ic/iha.c error = bus_dmamap_load(sc->sc_dmat, pScb->SCB_DataDma, pScb 310 dev/ic/iha.c xs->data, pScb->SCB_BufChars, NULL, pScb 311 dev/ic/iha.c (pScb->SCB_Flags & SCSI_NOSLEEP) ? pScb 323 dev/ic/iha.c iha_append_free_scb(sc, pScb); pScb 328 dev/ic/iha.c bus_dmamap_sync(sc->sc_dmat, pScb->SCB_DataDma, pScb 329 dev/ic/iha.c 0, pScb->SCB_BufChars, pScb 330 dev/ic/iha.c (pScb->SCB_Flags & SCSI_DATA_IN) ? pScb 333 dev/ic/iha.c error = iha_setup_sg_list(sc, pScb); pScb 335 dev/ic/iha.c bus_dmamap_unload(sc->sc_dmat, pScb->SCB_DataDma); pScb 347 dev/ic/iha.c timeout_set(&xs->stimeout, iha_timeout, pScb); pScb 348 dev/ic/iha.c if ((pScb->SCB_Flags & SCSI_POLL) == 0) pScb 351 dev/ic/iha.c iha_exec_scb(sc, pScb); pScb 367 dev/ic/iha.c struct iha_scb *pScb; pScb 406 dev/ic/iha.c for (i = 0, pScb = sc->HCS_Scb; i < IHA_MAX_SCB; i++, pScb++) { pScb 407 dev/ic/iha.c pScb->SCB_TagId = i; pScb 412 dev/ic/iha.c BUS_DMA_NOWAIT | BUS_DMA_ALLOCNOW, &pScb->SCB_DataDma); pScb 421 dev/ic/iha.c sizeof(pScb->SCB_SGList), 1, pScb 422 dev/ic/iha.c sizeof(pScb->SCB_SGList), 0, pScb 424 dev/ic/iha.c &pScb->SCB_SGDma); pScb 431 dev/ic/iha.c TAILQ_INSERT_TAIL(&sc->HCS_FreeScb, pScb, SCB_ScbList); pScb 519 dev/ic/iha.c struct iha_scb *pScb; pScb 524 dev/ic/iha.c pScb = TAILQ_FIRST(&sc->HCS_FreeScb); pScb 526 dev/ic/iha.c if (pScb != NULL) { pScb 527 dev/ic/iha.c pScb->SCB_Status = STATUS_RENT; pScb 528 dev/ic/iha.c TAILQ_REMOVE(&sc->HCS_FreeScb, pScb, SCB_ScbList); pScb 533 dev/ic/iha.c return (pScb); pScb 542 dev/ic/iha.c iha_append_free_scb(sc, pScb) pScb 544 dev/ic/iha.c struct iha_scb *pScb; pScb 550 dev/ic/iha.c if (pScb == sc->HCS_ActScb) pScb 553 dev/ic/iha.c pScb->SCB_Status = STATUS_QUEUED; pScb 554 dev/ic/iha.c pScb->SCB_HaStat = HOST_OK; pScb 555 dev/ic/iha.c pScb->SCB_TaStat = SCSI_OK; pScb 557 dev/ic/iha.c pScb->SCB_NxtStat = 0; pScb 558 dev/ic/iha.c pScb->SCB_Flags = 0; pScb 559 dev/ic/iha.c pScb->SCB_Target = 0; pScb 560 dev/ic/iha.c pScb->SCB_Lun = 0; pScb 561 dev/ic/iha.c pScb->SCB_CDBLen = 0; pScb 562 dev/ic/iha.c pScb->SCB_Ident = 0; pScb 563 dev/ic/iha.c pScb->SCB_TagMsg = 0; pScb 565 dev/ic/iha.c pScb->SCB_BufChars = 0; pScb 566 dev/ic/iha.c pScb->SCB_BufCharsLeft = 0; pScb 568 dev/ic/iha.c pScb->SCB_Xs = NULL; pScb 569 dev/ic/iha.c pScb->SCB_Tcs = NULL; pScb 571 dev/ic/iha.c bzero(pScb->SCB_CDB, sizeof(pScb->SCB_CDB)); pScb 577 dev/ic/iha.c TAILQ_INSERT_TAIL(&sc->HCS_FreeScb, pScb, SCB_ScbList); pScb 583 dev/ic/iha.c iha_append_pend_scb(sc, pScb) pScb 585 dev/ic/iha.c struct iha_scb *pScb; pScb 589 dev/ic/iha.c if (pScb == sc->HCS_ActScb) pScb 592 dev/ic/iha.c pScb->SCB_Status = STATUS_QUEUED; pScb 594 dev/ic/iha.c TAILQ_INSERT_TAIL(&sc->HCS_PendScb, pScb, SCB_ScbList); pScb 598 dev/ic/iha.c iha_push_pend_scb(sc, pScb) pScb 600 dev/ic/iha.c struct iha_scb *pScb; pScb 606 dev/ic/iha.c if (pScb == sc->HCS_ActScb) pScb 609 dev/ic/iha.c pScb->SCB_Status = STATUS_QUEUED; pScb 611 dev/ic/iha.c TAILQ_INSERT_HEAD(&sc->HCS_PendScb, pScb, SCB_ScbList); pScb 626 dev/ic/iha.c struct iha_scb *pScb; pScb 633 dev/ic/iha.c pScb = NULL; pScb 636 dev/ic/iha.c TAILQ_FOREACH(pScb, &sc->HCS_PendScb, SCB_ScbList) { pScb 637 dev/ic/iha.c if ((pScb->SCB_Flags & SCSI_RESET) != 0) pScb 641 dev/ic/iha.c pTcs = pScb->SCB_Tcs; pScb 643 dev/ic/iha.c if ((pScb->SCB_TagMsg) != 0) { pScb 652 dev/ic/iha.c } else if (pScb->SCB_CDB[0] == REQUEST_SENSE) { pScb 674 dev/ic/iha.c return (pScb); pScb 678 dev/ic/iha.c iha_mark_busy_scb(pScb) pScb 679 dev/ic/iha.c struct iha_scb *pScb; pScb 685 dev/ic/iha.c pScb->SCB_Status = STATUS_BUSY; pScb 687 dev/ic/iha.c if (pScb->SCB_TagMsg == 0) pScb 688 dev/ic/iha.c pScb->SCB_Tcs->TCS_NonTagScb = pScb; pScb 690 dev/ic/iha.c pScb->SCB_Tcs->TCS_TagCnt++; pScb 696 dev/ic/iha.c iha_append_done_scb(sc, pScb, hastat) pScb 698 dev/ic/iha.c struct iha_scb *pScb; pScb 706 dev/ic/iha.c if (pScb->SCB_Xs != NULL) pScb 707 dev/ic/iha.c timeout_del(&pScb->SCB_Xs->stimeout); pScb 709 dev/ic/iha.c if (pScb == sc->HCS_ActScb) pScb 712 dev/ic/iha.c pTcs = pScb->SCB_Tcs; pScb 714 dev/ic/iha.c if (pScb->SCB_TagMsg != 0) { pScb 717 dev/ic/iha.c } else if (pTcs->TCS_NonTagScb == pScb) pScb 720 dev/ic/iha.c pScb->SCB_Status = STATUS_QUEUED; pScb 721 dev/ic/iha.c pScb->SCB_HaStat = hastat; pScb 723 dev/ic/iha.c TAILQ_INSERT_TAIL(&sc->HCS_DoneScb, pScb, SCB_ScbList); pScb 732 dev/ic/iha.c struct iha_scb *pScb; pScb 737 dev/ic/iha.c pScb = TAILQ_FIRST(&sc->HCS_DoneScb); pScb 739 dev/ic/iha.c if (pScb != NULL) { pScb 740 dev/ic/iha.c pScb->SCB_Status = STATUS_RENT; pScb 741 dev/ic/iha.c TAILQ_REMOVE(&sc->HCS_DoneScb, pScb, SCB_ScbList); pScb 746 dev/ic/iha.c return (pScb); pScb 760 dev/ic/iha.c struct iha_scb *pScb, *next; pScb 767 dev/ic/iha.c for (pScb = TAILQ_FIRST(&sc->HCS_PendScb); pScb != NULL; pScb = next) { pScb 768 dev/ic/iha.c next = TAILQ_NEXT(pScb, SCB_ScbList); pScb 769 dev/ic/iha.c if (pScb->SCB_Xs == xs) { pScb 770 dev/ic/iha.c TAILQ_REMOVE(&sc->HCS_PendScb, pScb, SCB_ScbList); pScb 771 dev/ic/iha.c iha_append_done_scb(sc, pScb, hastat); pScb 782 dev/ic/iha.c for (i = 0, pScb = sc->HCS_Scb; i < IHA_MAX_SCB; i++, pScb++) pScb 783 dev/ic/iha.c switch (pScb->SCB_Status) { pScb 786 dev/ic/iha.c if (pScb->SCB_Xs == xs) { pScb 787 dev/ic/iha.c iha_append_done_scb(sc, pScb, hastat); pScb 807 dev/ic/iha.c struct iha_scb *pScb = sc->HCS_ActScb; pScb 809 dev/ic/iha.c if (pScb != NULL) pScb 810 dev/ic/iha.c iha_append_done_scb(sc, pScb, HOST_BAD_PHAS); pScb 822 dev/ic/iha.c iha_push_sense_request(sc, pScb) pScb 824 dev/ic/iha.c struct iha_scb *pScb; pScb 830 dev/ic/iha.c if ((pScb->SCB_Flags & (SCSI_DATA_IN | SCSI_DATA_OUT)) != 0) { pScb 831 dev/ic/iha.c bus_dmamap_sync(sc->sc_dmat, pScb->SCB_DataDma, pScb 832 dev/ic/iha.c 0, pScb->SCB_BufChars, pScb 833 dev/ic/iha.c ((pScb->SCB_Flags & SCSI_DATA_IN) ? pScb 835 dev/ic/iha.c bus_dmamap_unload(sc->sc_dmat, pScb->SCB_DataDma); pScb 837 dev/ic/iha.c pScb->SCB_Flags &= ~(SCSI_DATA_IN | SCSI_DATA_OUT); pScb 839 dev/ic/iha.c if ((pScb->SCB_Flags & FLAG_SG) != 0) { pScb 840 dev/ic/iha.c bus_dmamap_sync(sc->sc_dmat, pScb->SCB_SGDma, pScb 841 dev/ic/iha.c 0, sizeof(pScb->SCB_SGList), pScb 843 dev/ic/iha.c bus_dmamap_unload(sc->sc_dmat, pScb->SCB_SGDma); pScb 845 dev/ic/iha.c pScb->SCB_Flags &= ~FLAG_SG; pScb 848 dev/ic/iha.c pScb->SCB_BufChars = sizeof(pScb->SCB_ScsiSenseData); pScb 849 dev/ic/iha.c pScb->SCB_BufCharsLeft = sizeof(pScb->SCB_ScsiSenseData); pScb 850 dev/ic/iha.c bzero(&pScb->SCB_ScsiSenseData, sizeof(pScb->SCB_ScsiSenseData)); pScb 852 dev/ic/iha.c error = bus_dmamap_load(sc->sc_dmat, pScb->SCB_DataDma, pScb 853 dev/ic/iha.c &pScb->SCB_ScsiSenseData, pScb 854 dev/ic/iha.c sizeof(pScb->SCB_ScsiSenseData), NULL, pScb 855 dev/ic/iha.c (pScb->SCB_Flags & SCSI_NOSLEEP) ? pScb 858 dev/ic/iha.c sc_print_addr(pScb->SCB_Xs->sc_link); pScb 863 dev/ic/iha.c bus_dmamap_sync(sc->sc_dmat, pScb->SCB_DataDma, pScb 864 dev/ic/iha.c 0, pScb->SCB_BufChars, BUS_DMASYNC_PREREAD); pScb 867 dev/ic/iha.c pScb->SCB_Flags &= SCSI_POLL | SCSI_NOSLEEP; pScb 868 dev/ic/iha.c pScb->SCB_Flags |= FLAG_RSENS | SCSI_DATA_IN; pScb 870 dev/ic/iha.c error = iha_setup_sg_list(sc, pScb); pScb 874 dev/ic/iha.c pScb->SCB_Ident &= ~MSG_IDENTIFY_DISCFLAG; pScb 876 dev/ic/iha.c pScb->SCB_TagMsg = 0; pScb 877 dev/ic/iha.c pScb->SCB_TaStat = SCSI_OK; pScb 879 dev/ic/iha.c bzero(pScb->SCB_CDB, sizeof(pScb->SCB_CDB)); pScb 881 dev/ic/iha.c sensecmd = (struct scsi_sense *)pScb->SCB_CDB; pScb 882 dev/ic/iha.c pScb->SCB_CDBLen = sizeof(*sensecmd); pScb 884 dev/ic/iha.c sensecmd->byte2 = pScb->SCB_Xs->sc_link->lun << 5; pScb 885 dev/ic/iha.c sensecmd->length = sizeof(pScb->SCB_ScsiSenseData); pScb 887 dev/ic/iha.c if ((pScb->SCB_Flags & SCSI_POLL) == 0) pScb 888 dev/ic/iha.c timeout_add(&pScb->SCB_Xs->stimeout, pScb 889 dev/ic/iha.c (pScb->SCB_Xs->timeout/1000) * hz); pScb 891 dev/ic/iha.c iha_push_pend_scb(sc, pScb); pScb 908 dev/ic/iha.c struct iha_scb *pScb; pScb 914 dev/ic/iha.c while ((pScb = iha_pop_done_scb(sc)) != NULL) { pScb 916 dev/ic/iha.c switch (pScb->SCB_TaStat) { pScb 920 dev/ic/iha.c pScb->SCB_Tcs->TCS_Flags &= pScb 923 dev/ic/iha.c if ((pScb->SCB_Flags & FLAG_RSENS) != 0) pScb 925 dev/ic/iha.c pScb->SCB_HaStat = HOST_BAD_PHAS; pScb 926 dev/ic/iha.c else if (iha_push_sense_request(sc, pScb) != 0) pScb 928 dev/ic/iha.c pScb->SCB_HaStat = HOST_BAD_PHAS; pScb 935 dev/ic/iha.c if ((pScb->SCB_Flags & FLAG_RSENS) != 0) pScb 941 dev/ic/iha.c pScb->SCB_TaStat = SCSI_CHECK; pScb 945 dev/ic/iha.c iha_done_scb(sc, pScb); pScb 970 dev/ic/iha.c struct iha_scb *pScb; pScb 1013 dev/ic/iha.c if ((pScb = iha_find_pend_scb(sc)) == NULL) pScb 1016 dev/ic/iha.c pTcs = pScb->SCB_Tcs; pScb 1020 dev/ic/iha.c (sc->sc_link.adapter_target << 4) | pScb->SCB_Target); pScb 1022 dev/ic/iha.c if ((pScb->SCB_Flags & SCSI_RESET) == 0) { pScb 1028 dev/ic/iha.c iha_select(sc, iot, ioh, pScb, SELATNSTOP); pScb 1030 dev/ic/iha.c else if (pScb->SCB_TagMsg != 0) pScb 1031 dev/ic/iha.c iha_select(sc, iot, ioh, pScb, SEL_ATN3); pScb 1034 dev/ic/iha.c iha_select(sc, iot, ioh, pScb, SEL_ATN); pScb 1037 dev/ic/iha.c iha_select(sc, iot, ioh, pScb, SELATNSTOP); pScb 1038 dev/ic/iha.c pScb->SCB_NxtStat = 8; pScb 1041 dev/ic/iha.c if ((pScb->SCB_Flags & SCSI_POLL) != 0) { pScb 1042 dev/ic/iha.c for (i = pScb->SCB_Xs->timeout; i > 0; i--) { pScb 1058 dev/ic/iha.c iha_timeout(pScb); pScb 1060 dev/ic/iha.c else if ((pScb->SCB_CDB[0] == INQUIRY) pScb 1061 dev/ic/iha.c && (pScb->SCB_Lun == 0) pScb 1062 dev/ic/iha.c && (pScb->SCB_HaStat == HOST_OK) pScb 1063 dev/ic/iha.c && (pScb->SCB_TaStat == SCSI_OK)) pScb 1064 dev/ic/iha.c iha_print_info(sc, pScb->SCB_Target); pScb 1079 dev/ic/iha.c iha_data_over_run(pScb) pScb 1080 dev/ic/iha.c struct iha_scb *pScb; pScb 1082 dev/ic/iha.c switch (pScb->SCB_CDB[0]) { pScb 1213 dev/ic/iha.c struct iha_scb *pScb = sc->HCS_ActScb; pScb 1217 dev/ic/iha.c iha_mark_busy_scb(pScb); pScb 1219 dev/ic/iha.c pTcs = pScb->SCB_Tcs; pScb 1236 dev/ic/iha.c bus_space_write_1(iot, ioh, TUL_SFIFO, pScb->SCB_Ident); pScb 1238 dev/ic/iha.c if (pScb->SCB_TagMsg != 0) { pScb 1240 dev/ic/iha.c pScb->SCB_TagMsg); pScb 1242 dev/ic/iha.c pScb->SCB_TagId); pScb 1274 dev/ic/iha.c struct iha_scb *pScb = sc->HCS_ActScb; pScb 1276 dev/ic/iha.c iha_mark_busy_scb(pScb); pScb 1278 dev/ic/iha.c bus_space_write_1(iot, ioh, TUL_SCONFIG0, pScb->SCB_Tcs->TCS_SConfig0); pScb 1301 dev/ic/iha.c struct iha_scb *pScb = sc->HCS_ActScb; pScb 1308 dev/ic/iha.c pScb->SCB_CDB, pScb->SCB_CDBLen); pScb 1318 dev/ic/iha.c pScb->SCB_NxtStat = 3; pScb 1329 dev/ic/iha.c flags = pScb->SCB_Tcs->TCS_Flags; pScb 1339 dev/ic/iha.c sc_print_addr(pScb->SCB_Xs->sc_link); pScb 1360 dev/ic/iha.c struct iha_scb *pScb = sc->HCS_ActScb; pScb 1362 dev/ic/iha.c if ((pScb->SCB_Flags & FLAG_DIR) == FLAG_DIR) pScb 1366 dev/ic/iha.c if (pScb->SCB_BufCharsLeft == 0) pScb 1371 dev/ic/iha.c if ((pScb->SCB_Flags & FLAG_DIR) != 0) pScb 1372 dev/ic/iha.c pScb->SCB_HaStat = iha_data_over_run(pScb); pScb 1378 dev/ic/iha.c pScb->SCB_NxtStat = 4; pScb 1385 dev/ic/iha.c pScb->SCB_BufCharsLeft = 0; pScb 1386 dev/ic/iha.c pScb->SCB_HaStat = HOST_SPERR; pScb 1399 dev/ic/iha.c return (iha_xfer_data(pScb, iot, ioh, SCSI_DATA_IN)); pScb 1402 dev/ic/iha.c return (iha_xfer_data(pScb, iot, ioh, SCSI_DATA_OUT)); pScb 1423 dev/ic/iha.c struct iha_scb *pScb = sc->HCS_ActScb; pScb 1439 dev/ic/iha.c pScb->SCB_HaStat = HOST_SPERR; pScb 1451 dev/ic/iha.c period = pScb->SCB_Tcs->TCS_JS_Period; pScb 1477 dev/ic/iha.c pScb->SCB_BufCharsLeft = 0; pScb 1483 dev/ic/iha.c xcnt = pScb->SCB_BufCharsLeft - cnt; /* xcnt == bytes xferred */ pScb 1484 dev/ic/iha.c pScb->SCB_BufCharsLeft = cnt; /* cnt == bytes left */ pScb 1486 dev/ic/iha.c bus_dmamap_sync(sc->sc_dmat, pScb->SCB_SGDma, pScb 1487 dev/ic/iha.c 0, sizeof(pScb->SCB_SGList), BUS_DMASYNC_POSTWRITE); pScb 1489 dev/ic/iha.c if ((pScb->SCB_Flags & FLAG_SG) != 0) { pScb 1490 dev/ic/iha.c pSg = &pScb->SCB_SGList[pScb->SCB_SGIdx]; pScb 1491 dev/ic/iha.c for (; pScb->SCB_SGIdx < pScb->SCB_SGCount; pSg++, pScb->SCB_SGIdx++) { pScb 1499 dev/ic/iha.c bus_dmamap_sync(sc->sc_dmat, pScb->SCB_SGDma, pScb 1500 dev/ic/iha.c 0, sizeof(pScb->SCB_SGList), pScb 1567 dev/ic/iha.c struct iha_scb *pScb; pScb 1574 dev/ic/iha.c pScb = sc->HCS_ActScb; pScb 1577 dev/ic/iha.c iha_append_done_scb(sc, pScb, HOST_OK); pScb 1579 dev/ic/iha.c iha_reset_tcs(pScb->SCB_Tcs, sc->HCS_SConf1); pScb 1581 dev/ic/iha.c tar = pScb->SCB_Target; pScb 1582 dev/ic/iha.c for (i = 0, pScb = sc->HCS_Scb; i < IHA_MAX_SCB; i++, pScb++) pScb 1583 dev/ic/iha.c if (pScb->SCB_Target == tar) pScb 1584 dev/ic/iha.c switch (pScb->SCB_Status) { pScb 1587 dev/ic/iha.c pScb, HOST_DEV_RST); pScb 1591 dev/ic/iha.c iha_push_pend_scb(sc, pScb); pScb 1612 dev/ic/iha.c iha_xfer_data(pScb, iot, ioh, direction) pScb 1613 dev/ic/iha.c struct iha_scb *pScb; pScb 1621 dev/ic/iha.c if ((pScb->SCB_Flags & FLAG_DIR) != direction) pScb 1624 dev/ic/iha.c bus_space_write_4(iot, ioh, TUL_STCNT0, pScb->SCB_BufCharsLeft); pScb 1626 dev/ic/iha.c if ((pScb->SCB_Flags & FLAG_SG) == 0) { pScb 1627 dev/ic/iha.c xferaddr = pScb->SCB_DataDma->dm_segs[0].ds_addr pScb 1628 dev/ic/iha.c + (pScb->SCB_BufChars - pScb->SCB_BufCharsLeft); pScb 1629 dev/ic/iha.c xferlen = pScb->SCB_BufCharsLeft; pScb 1633 dev/ic/iha.c xferaddr = pScb->SCB_SGDma->dm_segs[0].ds_addr pScb 1634 dev/ic/iha.c + (pScb->SCB_SGIdx * sizeof(struct iha_sg_element)); pScb 1635 dev/ic/iha.c xferlen = (pScb->SCB_SGCount - pScb->SCB_SGIdx) pScb 1647 dev/ic/iha.c pScb->SCB_NxtStat = 5; pScb 1658 dev/ic/iha.c struct iha_scb *pScb = sc->HCS_ActScb; pScb 1660 dev/ic/iha.c if ((pScb->SCB_Flags & FLAG_DIR) != 0) pScb 1661 dev/ic/iha.c pScb->SCB_HaStat = HOST_DO_DU; pScb 1664 dev/ic/iha.c if ((pScb->SCB_Tcs->TCS_JS_Period & PERIOD_WIDE_SCSI) != 0) pScb 1690 dev/ic/iha.c struct iha_scb *pScb = sc->HCS_ActScb; pScb 1692 dev/ic/iha.c if ((pScb->SCB_Flags & FLAG_DIR) != 0) pScb 1693 dev/ic/iha.c pScb->SCB_HaStat = HOST_DO_DU; pScb 1696 dev/ic/iha.c if ((pScb->SCB_Tcs->TCS_JS_Period & PERIOD_WIDE_SCSI) != 0) pScb 1725 dev/ic/iha.c struct iha_scb *pScb; pScb 1732 dev/ic/iha.c pScb = sc->HCS_ActScb; pScb 1734 dev/ic/iha.c pScb->SCB_TaStat = bus_space_read_1(iot, ioh, TUL_SFIFO); pScb 1763 dev/ic/iha.c if ((pScb->SCB_TaStat pScb 1775 dev/ic/iha.c if ((pScb->SCB_TaStat pScb 1798 dev/ic/iha.c struct iha_scb *pScb; pScb 1804 dev/ic/iha.c pScb = sc->HCS_ActScb; pScb 1806 dev/ic/iha.c if (pScb != NULL) { pScb 1807 dev/ic/iha.c if (pScb->SCB_Status == STATUS_SELECT) pScb 1809 dev/ic/iha.c iha_append_done_scb(sc, pScb, HOST_SEL_TOUT); pScb 1812 dev/ic/iha.c iha_append_done_scb(sc, pScb, HOST_BAD_PHAS); pScb 1821 dev/ic/iha.c struct iha_scb *pScb; pScb 1829 dev/ic/iha.c for (i = 0, pScb = sc->HCS_Scb; i < IHA_MAX_SCB; i++, pScb++) pScb 1830 dev/ic/iha.c switch (pScb->SCB_Status) { pScb 1832 dev/ic/iha.c iha_append_done_scb(sc, pScb, HOST_SCSI_RST); pScb 1836 dev/ic/iha.c iha_push_pend_scb(sc, pScb); pScb 1858 dev/ic/iha.c struct iha_scb *pScb; pScb 1880 dev/ic/iha.c pScb = pTcs->TCS_NonTagScb; pScb 1920 dev/ic/iha.c pScb = &sc->HCS_Scb[tag]; pScb 1925 dev/ic/iha.c if ((pScb->SCB_Target != target) pScb 1926 dev/ic/iha.c || (pScb->SCB_Lun != lun) pScb 1927 dev/ic/iha.c || (pScb->SCB_Status != STATUS_BUSY)) { pScb 1933 dev/ic/iha.c sc->HCS_ActScb = pScb; pScb 2350 dev/ic/iha.c iha_select(sc, iot, ioh, pScb, select_type) pScb 2354 dev/ic/iha.c struct iha_scb *pScb; pScb 2361 dev/ic/iha.c bus_space_write_1(iot, ioh, TUL_SFIFO, pScb->SCB_Ident); pScb 2363 dev/ic/iha.c pScb->SCB_CDB, pScb->SCB_CDBLen); pScb 2365 dev/ic/iha.c pScb->SCB_NxtStat = 2; pScb 2369 dev/ic/iha.c pScb->SCB_NxtStat = 1; pScb 2373 dev/ic/iha.c bus_space_write_1(iot, ioh, TUL_SFIFO, pScb->SCB_Ident); pScb 2374 dev/ic/iha.c bus_space_write_1(iot, ioh, TUL_SFIFO, pScb->SCB_TagMsg); pScb 2375 dev/ic/iha.c bus_space_write_1(iot, ioh, TUL_SFIFO, pScb->SCB_TagId); pScb 2377 dev/ic/iha.c bus_space_write_multi_1(iot, ioh, TUL_SFIFO, pScb->SCB_CDB, pScb 2378 dev/ic/iha.c pScb->SCB_CDBLen); pScb 2380 dev/ic/iha.c pScb->SCB_NxtStat = 2; pScb 2385 dev/ic/iha.c sc_print_addr(pScb->SCB_Xs->sc_link); pScb 2393 dev/ic/iha.c TAILQ_REMOVE(&sc->HCS_PendScb, pScb, SCB_ScbList); pScb 2396 dev/ic/iha.c pScb->SCB_Status = STATUS_SELECT; pScb 2398 dev/ic/iha.c sc->HCS_ActScb = pScb; pScb 2479 dev/ic/iha.c iha_done_scb(sc, pScb) pScb 2481 dev/ic/iha.c struct iha_scb *pScb; pScb 2484 dev/ic/iha.c struct scsi_xfer *xs = pScb->SCB_Xs; pScb 2489 dev/ic/iha.c xs->status = pScb->SCB_TaStat; pScb 2491 dev/ic/iha.c if ((pScb->SCB_Flags & (SCSI_DATA_IN | SCSI_DATA_OUT)) != 0) { pScb 2492 dev/ic/iha.c bus_dmamap_sync(sc->sc_dmat, pScb->SCB_DataDma, pScb 2493 dev/ic/iha.c 0, pScb->SCB_BufChars, pScb 2494 dev/ic/iha.c ((pScb->SCB_Flags & SCSI_DATA_IN) ? pScb 2496 dev/ic/iha.c bus_dmamap_unload(sc->sc_dmat, pScb->SCB_DataDma); pScb 2498 dev/ic/iha.c if ((pScb->SCB_Flags & FLAG_SG) != 0) { pScb 2499 dev/ic/iha.c bus_dmamap_sync(sc->sc_dmat, pScb->SCB_SGDma, pScb 2500 dev/ic/iha.c 0, sizeof(pScb->SCB_SGList), pScb 2502 dev/ic/iha.c bus_dmamap_unload(sc->sc_dmat, pScb->SCB_SGDma); pScb 2505 dev/ic/iha.c switch (pScb->SCB_HaStat) { pScb 2507 dev/ic/iha.c switch (pScb->SCB_TaStat) { pScb 2512 dev/ic/iha.c xs->resid = pScb->SCB_BufCharsLeft; pScb 2525 dev/ic/iha.c s1 = &pScb->SCB_ScsiSenseData; pScb 2568 dev/ic/iha.c iha_append_free_scb(sc, pScb); pScb 2575 dev/ic/iha.c struct iha_scb *pScb = (struct iha_scb *)arg; pScb 2576 dev/ic/iha.c struct scsi_xfer *xs = pScb->SCB_Xs; pScb 2586 dev/ic/iha.c iha_exec_scb(sc, pScb) pScb 2588 dev/ic/iha.c struct iha_scb *pScb; pScb 2596 dev/ic/iha.c if (((pScb->SCB_Flags & SCSI_RESET) != 0) pScb 2597 dev/ic/iha.c || (pScb->SCB_CDB[0] == REQUEST_SENSE)) pScb 2598 dev/ic/iha.c iha_push_pend_scb(sc, pScb); /* Insert SCB at head of Pend */ pScb 2600 dev/ic/iha.c iha_append_pend_scb(sc, pScb); /* Append SCB to tail of Pend */