• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/scsi/

Lines Matching refs:pCurScb

221 static void tul_select_atn(HCS * pCurHcb, SCB * pCurScb);
222 static void tul_select_atn3(HCS * pCurHcb, SCB * pCurScb);
223 static void tul_select_atn_stop(HCS * pCurHcb, SCB * pCurScb);
867 static void tul_unlink_pend_scb(HCS * pCurHcb, SCB * pCurScb)
872 printk("unlink pend SCB %lx; ", (ULONG) pCurScb);
877 if (pCurScb == pTmpScb) { /* Unlink this SCB */
938 static void tul_unlink_busy_scb(HCS * pCurHcb, SCB * pCurScb)
943 printk("unlink busy SCB %lx; ", (ULONG) pCurScb);
948 if (pCurScb == pTmpScb) { /* Unlink this SCB */
1121 SCB *pCurScb;
1125 if ((pCurScb = pCurHcb->HCS_ActScb) != NULL) {
1126 tul_unlink_busy_scb(pCurHcb, pCurScb);
1127 pCurScb->SCB_HaStat = HOST_BAD_PHAS;
1128 pCurScb->SCB_TaStat = 0;
1129 tul_append_done_scb(pCurHcb, pCurScb);
1140 static void tul_exec_scb(HCS * pCurHcb, SCB * pCurScb)
1144 pCurScb->SCB_Mode = 0;
1146 pCurScb->SCB_SGIdx = 0;
1147 pCurScb->SCB_SGMax = pCurScb->SCB_SGLen;
1151 tul_append_pend_scb(pCurHcb, pCurScb); /* Append this SCB to Pending queue */
1196 SCB *pCurScb;
1202 while ((pCurScb = tul_find_done_scb(pCurHcb)) != NULL) { /* find done entry */
1203 if (pCurScb->SCB_TaStat == INI_QUEUE_FULL) {
1204 pCurHcb->HCS_MaxTags[pCurScb->SCB_Target] =
1205 pCurHcb->HCS_ActTags[pCurScb->SCB_Target] - 1;
1206 pCurScb->SCB_TaStat = 0;
1207 tul_append_pend_scb(pCurHcb, pCurScb);
1210 if (!(pCurScb->SCB_Mode & SCM_RSENS)) { /* not in auto req. sense mode */
1211 if (pCurScb->SCB_TaStat == 2) {
1215 if (pCurScb->SCB_Flags & SCF_SENSE) {
1217 len = pCurScb->SCB_SenseLen;
1220 pCurScb->SCB_BufLen = pCurScb->SCB_SenseLen;
1221 pCurScb->SCB_BufPtr = pCurScb->SCB_SensePtr;
1222 pCurScb->SCB_Flags &= ~(SCF_SG | SCF_DIR); /* for xfer_data_in */
1223 /* pCurScb->SCB_Flags |= SCF_NO_DCHK; */
1226 pCurScb->SCB_Mode = SCM_RSENS;
1227 pCurScb->SCB_Ident &= 0xBF; /* Disable Disconnect */
1228 pCurScb->SCB_TagMsg = 0;
1229 pCurScb->SCB_TaStat = 0;
1230 pCurScb->SCB_CDBLen = 6;
1231 pCurScb->SCB_CDB[0] = SCSICMD_RequestSense;
1232 pCurScb->SCB_CDB[1] = 0;
1233 pCurScb->SCB_CDB[2] = 0;
1234 pCurScb->SCB_CDB[3] = 0;
1235 pCurScb->SCB_CDB[4] = len;
1236 pCurScb->SCB_CDB[5] = 0;
1237 tul_push_pend_scb(pCurHcb, pCurScb);
1243 if (pCurScb->SCB_TaStat == 2) { /* check contition status again after sending
1245 pCurScb->SCB_HaStat = HOST_BAD_PHAS;
1247 pCurScb->SCB_TaStat = 2;
1249 pCurScb->SCB_Flags |= SCF_DONE;
1250 if (pCurScb->SCB_Flags & SCF_POST) {
1251 (*pCurScb->SCB_Post) ((BYTE *) pCurHcb, (BYTE *) pCurScb);
1282 SCB *pCurScb;
1310 if ((pCurScb = pCurHcb->HCS_ActScb) != NULL)
1318 if ((pCurScb = tul_find_first_pend_scb(pCurHcb)) == NULL)
1323 (pCurHcb->HCS_SCSI_ID << 4) | (pCurScb->SCB_Target & 0x0F));
1324 if (pCurScb->SCB_Opcode == ExecSCSI) {
1325 pCurTcb = &pCurHcb->HCS_Tcs[pCurScb->SCB_Target];
1327 if (pCurScb->SCB_TagMsg)
1334 tul_select_atn_stop(pCurHcb, pCurScb);
1337 tul_select_atn_stop(pCurHcb, pCurScb);
1339 if (pCurScb->SCB_TagMsg)
1340 tul_select_atn3(pCurHcb, pCurScb);
1342 tul_select_atn(pCurHcb, pCurScb);
1345 if (pCurScb->SCB_Flags & SCF_POLL) {
1351 } else if (pCurScb->SCB_Opcode == BusDevRst) {
1352 tul_select_atn_stop(pCurHcb, pCurScb);
1353 pCurScb->SCB_NxtStat = 8;
1354 if (pCurScb->SCB_Flags & SCF_POLL) {
1360 } else if (pCurScb->SCB_Opcode == AbortCmd) {
1361 if (tul_abort_srb(pCurHcb, pCurScb->SCB_Srb) != 0) {
1364 tul_unlink_pend_scb(pCurHcb, pCurScb);
1366 tul_release_scb(pCurHcb, pCurScb);
1368 pCurScb->SCB_Opcode = BusDevRst;
1369 tul_select_atn_stop(pCurHcb, pCurScb);
1370 pCurScb->SCB_NxtStat = 8;
1375 tul_unlink_pend_scb(pCurHcb, pCurScb);
1376 pCurScb->SCB_HaStat = 0x16; /* bad command */
1377 tul_append_done_scb(pCurHcb, pCurScb);
1427 SCB *pCurScb = pCurHcb->HCS_ActScb;
1433 tul_unlink_pend_scb(pCurHcb, pCurScb);
1434 tul_append_busy_scb(pCurHcb, pCurScb);
1442 TUL_WR(pCurHcb->HCS_Base + TUL_SFifo, pCurScb->SCB_Ident);
1444 if (pCurScb->SCB_TagMsg) {
1445 TUL_WR(pCurHcb->HCS_Base + TUL_SFifo, pCurScb->SCB_TagMsg);
1446 TUL_WR(pCurHcb->HCS_Base + TUL_SFifo, pCurScb->SCB_TagId);
1481 SCB *pCurScb = pCurHcb->HCS_ActScb;
1487 tul_unlink_pend_scb(pCurHcb, pCurScb);
1488 tul_append_busy_scb(pCurHcb, pCurScb);
1504 SCB *pCurScb = pCurHcb->HCS_ActScb;
1514 for (i = 0; i < (int) pCurScb->SCB_CDBLen; i++)
1515 TUL_WR(pCurHcb->HCS_Base + TUL_SFifo, pCurScb->SCB_CDB[i]);
1525 pCurScb->SCB_NxtStat = 3;
1570 SCB *pCurScb = pCurHcb->HCS_ActScb;
1575 if ((pCurScb->SCB_Flags & SCF_DIR) == SCF_NO_XF) {
1579 if (pCurScb->SCB_BufLen == 0)
1585 if ((pCurScb->SCB_Flags & SCF_DIR) != 0) { /* if direction bit set then report data underrun */
1586 pCurScb->SCB_HaStat = HOST_DO_DU;
1593 pCurScb->SCB_NxtStat = 0x4;
1600 pCurScb->SCB_BufLen = 0;
1601 pCurScb->SCB_HaStat = HOST_DO_DU;
1630 SCB *pCurScb = pCurHcb->HCS_ActScb;
1644 pCurScb->SCB_HaStat = HOST_DO_DU;
1678 pCurScb->SCB_BufLen = 0;
1682 xcnt = (long) pCurScb->SCB_BufLen - cnt; /* xcnt== bytes already xferred */
1683 pCurScb->SCB_BufLen = (U32) cnt; /* cnt == bytes left to be xferred */
1684 if (pCurScb->SCB_Flags & SCF_SG) {
1688 sgp = &pCurScb->SCB_SGList[pCurScb->SCB_SGIdx];
1689 for (i = pCurScb->SCB_SGIdx; i < pCurScb->SCB_SGMax; sgp++, i++) {
1695 pCurScb->SCB_BufPtr += ((U32) (i - pCurScb->SCB_SGIdx) << 3);
1697 pCurScb->SCB_SGLen = (BYTE) (pCurScb->SCB_SGMax - i);
1699 pCurScb->SCB_SGIdx = (WORD) i;
1707 pCurScb->SCB_BufPtr += (U32) xcnt;
1716 SCB *pCurScb = pCurHcb->HCS_ActScb;
1729 pCurScb->SCB_NxtStat = 6;
1779 SCB *pCurScb = pCurHcb->HCS_ActScb;
1781 if ((pCurScb->SCB_Flags & SCF_DIR) == SCF_DOUT) {
1784 TUL_WRLONG(pCurHcb->HCS_Base + TUL_SCnt0, pCurScb->SCB_BufLen);
1788 if (pCurScb->SCB_Flags & SCF_SG) { /* S/G xfer */
1789 TUL_WRLONG(pCurHcb->HCS_Base + TUL_XCntH, ((ULONG) pCurScb->SCB_SGLen) << 3);
1790 TUL_WRLONG(pCurHcb->HCS_Base + TUL_XAddH, pCurScb->SCB_BufPtr);
1793 TUL_WRLONG(pCurHcb->HCS_Base + TUL_XCntH, pCurScb->SCB_BufLen);
1794 TUL_WRLONG(pCurHcb->HCS_Base + TUL_XAddH, pCurScb->SCB_BufPtr);
1797 pCurScb->SCB_NxtStat = 0x5;
1805 SCB *pCurScb = pCurHcb->HCS_ActScb;
1807 if ((pCurScb->SCB_Flags & SCF_DIR) == SCF_DIN) {
1810 TUL_WRLONG(pCurHcb->HCS_Base + TUL_SCnt0, pCurScb->SCB_BufLen);
1813 if (pCurScb->SCB_Flags & SCF_SG) { /* S/G xfer */
1814 TUL_WRLONG(pCurHcb->HCS_Base + TUL_XCntH, ((ULONG) pCurScb->SCB_SGLen) << 3);
1815 TUL_WRLONG(pCurHcb->HCS_Base + TUL_XAddH, pCurScb->SCB_BufPtr);
1818 TUL_WRLONG(pCurHcb->HCS_Base + TUL_XCntH, pCurScb->SCB_BufLen);
1819 TUL_WRLONG(pCurHcb->HCS_Base + TUL_XAddH, pCurScb->SCB_BufPtr);
1823 pCurScb->SCB_NxtStat = 0x5;
1831 SCB *pCurScb = pCurHcb->HCS_ActScb;
1834 if ((pCurScb->SCB_Flags & SCF_DIR) != SCF_NO_DCHK) {
1835 pCurScb->SCB_HaStat = HOST_DO_DU; /* over run */
1857 SCB *pCurScb = pCurHcb->HCS_ActScb;
1860 if ((pCurScb->SCB_Flags & SCF_DIR) != SCF_NO_DCHK) {
1861 pCurScb->SCB_HaStat = HOST_DO_DU; /* over run */
1886 SCB *pCurScb = pCurHcb->HCS_ActScb;
1894 pCurScb->SCB_TaStat = TUL_RD(pCurHcb->HCS_Base, TUL_SFifo);
1918 if ((pCurScb->SCB_TaStat & 0x18) == 0x10) { /* No link support */
1927 if ((pCurScb->SCB_TaStat & 0x18) == 0x10)
1939 SCB *pCurScb = pCurHcb->HCS_ActScb;
1941 if (pCurScb != NULL) {
1942 if (pCurScb->SCB_Status & SCB_SELECT) { /* selection timeout */
1943 tul_unlink_pend_scb(pCurHcb, pCurScb);
1944 pCurScb->SCB_HaStat = HOST_SEL_TOUT;
1945 tul_append_done_scb(pCurHcb, pCurScb);
1947 tul_unlink_busy_scb(pCurHcb, pCurScb);
1948 pCurScb->SCB_HaStat = HOST_BUS_FREE;
1949 tul_append_done_scb(pCurHcb, pCurScb);
1965 SCB *pCurScb;
1976 while ((pCurScb = tul_pop_busy_scb(pCurHcb)) != NULL) {
1977 pCurScb->SCB_HaStat = HOST_BAD_PHAS;
1978 tul_append_done_scb(pCurHcb, pCurScb);
1995 SCB *pCurScb;
2000 if ((pCurScb = pCurHcb->HCS_ActScb) != NULL) {
2001 if (pCurScb->SCB_Status & SCB_SELECT) { /* if waiting for selection complete */
2002 pCurScb->SCB_Status &= ~SCB_SELECT;
2043 pCurScb = pCurHcb->HCS_Scb + tag;
2044 if ((pCurScb->SCB_Target != tar) || (pCurScb->SCB_Lun != lun)) {
2047 if (pCurScb->SCB_Status != SCB_BUSY) { /* 03/24/95 */
2050 pCurHcb->HCS_ActScb = pCurScb;
2055 if ((pCurScb = tul_find_busy_scb(pCurHcb, tar | (lun << 8))) == NULL) {
2058 pCurHcb->HCS_ActScb = pCurScb;
2071 SCB *pCurScb;
2076 while ((pCurScb = tul_pop_busy_scb(pCurHcb)) != NULL) {
2077 pCurScb->SCB_HaStat = HOST_BAD_PHAS;
2078 tul_append_done_scb(pCurHcb, pCurScb);
2386 SCB *pCurScb;
2394 while ((pCurScb = tul_pop_busy_scb(pCurHcb)) != NULL) {
2395 pCurScb->SCB_HaStat = HOST_BAD_PHAS;
2396 tul_append_done_scb(pCurHcb, pCurScb);
2413 void tul_select_atn_stop(HCS * pCurHcb, SCB * pCurScb)
2415 pCurScb->SCB_Status |= SCB_SELECT;
2416 pCurScb->SCB_NxtStat = 0x1;
2417 pCurHcb->HCS_ActScb = pCurScb;
2418 pCurHcb->HCS_ActTcs = &pCurHcb->HCS_Tcs[pCurScb->SCB_Target];
2425 void tul_select_atn(HCS * pCurHcb, SCB * pCurScb)
2429 pCurScb->SCB_Status |= SCB_SELECT;
2430 pCurScb->SCB_NxtStat = 0x2;
2432 TUL_WR(pCurHcb->HCS_Base + TUL_SFifo, pCurScb->SCB_Ident);
2433 for (i = 0; i < (int) pCurScb->SCB_CDBLen; i++)
2434 TUL_WR(pCurHcb->HCS_Base + TUL_SFifo, pCurScb->SCB_CDB[i]);
2435 pCurHcb->HCS_ActTcs = &pCurHcb->HCS_Tcs[pCurScb->SCB_Target];
2436 pCurHcb->HCS_ActScb = pCurScb;
2442 void tul_select_atn3(HCS * pCurHcb, SCB * pCurScb)
2446 pCurScb->SCB_Status |= SCB_SELECT;
2447 pCurScb->SCB_NxtStat = 0x2;
2449 TUL_WR(pCurHcb->HCS_Base + TUL_SFifo, pCurScb->SCB_Ident);
2450 TUL_WR(pCurHcb->HCS_Base + TUL_SFifo, pCurScb->SCB_TagMsg);
2451 TUL_WR(pCurHcb->HCS_Base + TUL_SFifo, pCurScb->SCB_TagId);
2452 for (i = 0; i < (int) pCurScb->SCB_CDBLen; i++)
2453 TUL_WR(pCurHcb->HCS_Base + TUL_SFifo, pCurScb->SCB_CDB[i]);
2454 pCurHcb->HCS_ActTcs = &pCurHcb->HCS_Tcs[pCurScb->SCB_Target];
2455 pCurHcb->HCS_ActScb = pCurScb;
2464 SCB *pCurScb = pCurHcb->HCS_ActScb;
2472 tul_unlink_pend_scb(pCurHcb, pCurScb);
2473 tul_release_scb(pCurHcb, pCurScb);
2476 tar = pCurScb->SCB_Target; /* target */