Lines Matching defs:pDCB
311 struct trm_dcb *pDCB;
345 pDCB = sc->pDCB[target][lun];
346 if (pDCB == NULL) {
375 * BuildSRB(pSRB,pDCB);
416 pSRB->pSRBDCB = pDCB;
466 if (target == sc->sc_AdaptSCSIID || sc->pDCB[target][0] == NULL)
469 if ((sc->pDCB[target][0]->DCBFlag & TRM_QUIRKS_VALID) == 0)
471 else if (sc->pDCB[target][0]->sc_link != NULL)
472 quirks = sc->pDCB[target][0]->sc_link->quirks;
474 trm_ResetDevParam(sc, sc->pDCB[target][0], quirks);
486 trm_ResetDevParam(struct trm_softc *sc, struct trm_dcb *pDCB, u_int8_t quirks)
490 const int target = pDCB->target;
492 pDCB->DCBFlag &= TRM_QUIRKS_VALID;
493 pDCB->DCBFlag |= (TRM_WIDE_NEGO_ENABLE | TRM_SYNC_NEGO_ENABLE);
495 pDCB->SyncPeriod = 0;
496 pDCB->SyncOffset = 0;
497 pDCB->MaxNegoPeriod = 0;
499 pDCB->DevMode = pEEpromBuf->NvramTarget[target].NvmTarCfg0;
501 pDCB->IdentifyMsg = MSG_IDENTIFY(pDCB->lun, ((pDCB->DevMode & TRM_DISCONNECT) != 0));
504 (pDCB->DevMode & TRM_WIDE) &&
506 pDCB->DCBFlag |= TRM_WIDE_NEGO_16BIT;
509 ((pDCB->DevMode & TRM_SYNC) != 0)) {
511 pDCB->MaxNegoPeriod = trm_clock_period[PeriodIndex];
515 ((pDCB->DevMode & TRM_TAG_QUEUING) != 0) &&
516 ((pDCB->DevMode & TRM_DISCONNECT) != 0))
518 pDCB->DCBFlag |= TRM_USE_TAG_QUEUING;
520 trm_SetXferParams(sc, pDCB, 0);
651 struct trm_dcb *pDCB = pSRB->pSRBDCB;
656 printf("%s: trm_StartSRB. sc = %p, pDCB = %p, pSRB = %p\n",
657 sc->sc_device.dv_xname, sc, pDCB, pSRB);
663 if ((pDCB->DCBFlag & TRM_QUEUE_FULL) || (bus_space_read_2(iot, ioh,
668 bus_space_write_1(iot, ioh, TRM_S1040_SCSI_TARGETID, pDCB->target);
669 bus_space_write_1(iot, ioh, TRM_S1040_SCSI_SYNC, pDCB->SyncPeriod);
670 bus_space_write_1(iot, ioh, TRM_S1040_SCSI_OFFSET, pDCB->SyncOffset);
672 if ((sc->pDCB[pDCB->target][0]->sc_link != NULL) &&
673 ((sc->pDCB[pDCB->target][0]->DCBFlag & TRM_QUIRKS_VALID) == 0)) {
674 sc->pDCB[pDCB->target][0]->DCBFlag |= TRM_QUIRKS_VALID;
675 trm_ResetDevParam(sc, sc->pDCB[pDCB->target][0], sc->pDCB[pDCB->target][0]->sc_link->quirks);
684 sc->MsgBuf[0] = pDCB->IdentifyMsg;
692 if ((pDCB->DCBFlag & (TRM_WIDE_NEGO_ENABLE | TRM_SYNC_NEGO_ENABLE)) != 0) {
696 } else if ((pDCB->DCBFlag & TRM_USE_TAG_QUEUING) == 0) {
697 pDCB->DCBFlag |= TRM_QUEUE_FULL;
702 if ((tag_mask & pDCB->TagMask) == 0) {
703 pDCB->TagMask |= tag_mask;
709 pDCB->DCBFlag |= TRM_QUEUE_FULL;
724 sc->pActiveDCB = pDCB;
725 pDCB->pActiveSRB = pSRB;
865 struct trm_dcb *pDCB = sc->pActiveDCB;
869 if ((pDCB->DCBFlag & TRM_WIDE_NEGO_ENABLE) != 0) {
873 pDCB->DCBFlag &= ~TRM_WIDE_NEGO_ENABLE;
874 pDCB->DCBFlag |= TRM_DOING_WIDE_NEGO;
876 sc->MsgBuf[0] = pDCB->IdentifyMsg & ~MSG_IDENTIFY_DISCFLAG;
881 if ((pDCB->DCBFlag & TRM_WIDE_NEGO_16BIT) == 0)
888 } else if ((pDCB->DCBFlag & TRM_SYNC_NEGO_ENABLE) != 0) {
890 pDCB->DCBFlag &= ~TRM_SYNC_NEGO_ENABLE;
891 pDCB->DCBFlag |= TRM_DOING_SYNC_NEGO;
895 if ((pDCB->DCBFlag & TRM_WIDE_NEGO_DONE) == 0)
896 sc->MsgBuf[sc->MsgCnt++] = pDCB->IdentifyMsg & ~MSG_IDENTIFY_DISCFLAG;
901 sc->MsgBuf[sc->MsgCnt++] = pDCB->MaxNegoPeriod;
903 if (pDCB->MaxNegoPeriod > 0)
966 struct trm_dcb *pDCB;
973 pDCB = pSRB->pSRBDCB;
986 if (pDCB->SyncPeriod & WIDE_SYNC) {
1203 struct trm_dcb *pDCB = pSRB->pSRBDCB;
1246 if (pDCB->SyncPeriod & WIDE_SYNC) {
1378 struct trm_dcb *pDCB;
1381 pDCB = sc->pActiveDCB;
1411 if ((pDCB->DCBFlag & TRM_DOING_WIDE_NEGO) != 0) {
1415 pDCB = pSRB->pSRBDCB;
1417 pDCB->DCBFlag &= ~TRM_DOING_WIDE_NEGO;
1418 pDCB->DCBFlag |= TRM_WIDE_NEGO_DONE;
1420 if ((pDCB->DCBFlag & TRM_SYNC_NEGO_ENABLE) != 0) {
1435 } else if ((pDCB->DCBFlag & TRM_DOING_SYNC_NEGO) != 0) {
1439 pDCB = pSRB->pSRBDCB;
1441 pDCB->DCBFlag &= ~TRM_DOING_SYNC_NEGO;
1443 pDCB->SyncPeriod = 0;
1444 pDCB->SyncOffset = 0;
1481 if ((pSRB->pSRBDCB == pDCB) && (pSRB->TagNumber == message_in_tag_id))
1485 pDCB->pActiveSRB = pSRB;
1495 pDCB->pActiveSRB = pSRB;
1515 pDCB->DCBFlag &= ~(TRM_WIDE_NEGO_ENABLE | TRM_DOING_WIDE_NEGO);
1522 if ((pDCB->DCBFlag & TRM_WIDE_NEGO_16BIT) == 0)
1529 if ((pDCB->DCBFlag & TRM_WIDE_NEGO_16BIT) == 0) {
1533 pDCB->SyncPeriod |= WIDE_SYNC;
1538 pDCB->DCBFlag |= (TRM_SYNC_NEGO_ENABLE | TRM_WIDE_NEGO_DONE);
1540 if (pDCB->MaxNegoPeriod == 0) {
1541 pDCB->SyncPeriod = 0;
1542 pDCB->SyncOffset = 0;
1548 pDCB->DCBFlag &= ~TRM_WIDE_NEGO_ENABLE;
1549 pDCB->DCBFlag |= TRM_WIDE_NEGO_DONE;
1572 pDCB->DCBFlag &= ~(TRM_SYNC_NEGO_ENABLE | TRM_DOING_SYNC_NEGO);
1581 pDCB->SyncPeriod = 0;
1582 pDCB->SyncOffset = 0;
1591 pDCB->SyncOffset = sc->MsgBuf[4];
1597 pDCB->SyncPeriod |= (bIndex | ALT_SYNC);
1603 bus_space_write_1(iot, ioh, TRM_S1040_SCSI_SYNC, pDCB->SyncPeriod);
1604 bus_space_write_1(iot, ioh, TRM_S1040_SCSI_OFFSET, pDCB->SyncOffset);
1606 trm_SetXferParams(sc, pDCB, (pDCB->DCBFlag & TRM_QUIRKS_VALID));
1676 trm_SetXferParams(struct trm_softc *sc, struct trm_dcb *pDCB, int print_info)
1688 target = pDCB->target;
1690 pDCBTemp = sc->pDCB[target][lun];
1692 pDCBTemp->DevMode = pDCB->DevMode;
1693 pDCBTemp->MaxNegoPeriod = pDCB->MaxNegoPeriod;
1694 pDCBTemp->SyncPeriod = pDCB->SyncPeriod;
1695 pDCBTemp->SyncOffset = pDCB->SyncOffset;
1696 pDCBTemp->DCBFlag = pDCB->DCBFlag;
1701 trm_print_info(sc, pDCB);
1727 struct trm_dcb *pDCB;
1734 pDCB = sc->pActiveDCB;
1735 if (pDCB == NULL) {
1744 pSRB = pDCB->pActiveSRB;
1757 trm_GoingSRB_Done(sc, pDCB);
1779 pDCB->pActiveSRB = NULL;
1803 struct trm_dcb *pDCB;
1811 pDCB = sc->pActiveDCB;
1812 if (pDCB != NULL) {
1816 pSRB = pDCB->pActiveSRB;
1834 pDCB = sc->pDCB[target][lun];
1836 pDCB = NULL;
1838 if (pDCB == NULL)
1842 sc->pActiveDCB = pDCB;
1844 /* TODO XXXX: This will crash if pDCB is ever NULL */
1845 if ((pDCB->DCBFlag & TRM_USE_TAG_QUEUING) != 0) {
1847 pDCB->pActiveSRB = pSRB;
1849 pSRB = pDCB->pActiveSRB;
1856 pDCB->pActiveSRB = pSRB;
1868 bus_space_write_1(iot, ioh, TRM_S1040_SCSI_SYNC, pDCB->SyncPeriod);
1869 bus_space_write_1(iot, ioh, TRM_S1040_SCSI_OFFSET, pDCB->SyncOffset);
1897 struct trm_dcb *pDCB = pSRB->pSRBDCB;
1904 pDCB->DCBFlag &= ~TRM_QUEUE_FULL;
2005 pDCB->DCBFlag |= TRM_QUEUE_FULL;
2039 if (xs->cmd.opcode == INQUIRY && pDCB->sc_link == NULL) {
2049 free(pDCB, M_DEVBUF, 0);
2050 sc->pDCB[target][lun] = NULL;
2051 pDCB = NULL;
2054 pDCB->sc_link = xs->sc_link;
2134 trm_GoingSRB_Done(struct trm_softc *sc, struct trm_dcb *pDCB)
2149 if (pDCB == NULL || pSRB->pSRBDCB == pDCB) {
2349 struct trm_dcb *pDCB;
2387 pDCB = (struct trm_dcb *)malloc(sizeof(struct trm_dcb),
2389 sc->pDCB[target][lun] = pDCB;
2391 if (pDCB == NULL)
2394 pDCB->target = target;
2395 pDCB->lun = lun;
2396 pDCB->pActiveSRB = NULL;
2883 trm_print_info(struct trm_softc *sc, struct trm_dcb *pDCB)
2887 index = pDCB->SyncPeriod & ~(WIDE_SYNC | ALT_SYNC);
2889 printf("%s: target %d using ", sc->sc_device.dv_xname, pDCB->target);
2890 if ((pDCB->SyncPeriod & WIDE_SYNC) != 0)
2895 if (pDCB->SyncOffset == 0)
2900 syncXfer / 100, syncXfer % 100, pDCB->SyncOffset);
2904 if ((pDCB->DCBFlag & TRM_USE_TAG_QUEUING) != 0)