aic7xxx.seq (109590) | aic7xxx.seq (115333) |
---|---|
1/* 2 * Adaptec 274x/284x/294x device driver firmware for Linux and FreeBSD. 3 * 4 * Copyright (c) 1994-2001 Justin T. Gibbs. 5 * Copyright (c) 2000-2001 Adaptec Inc. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 23 unchanged lines hidden (view full) --- 32 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 36 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 37 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 38 * POSSIBILITY OF SUCH DAMAGES. 39 * | 1/* 2 * Adaptec 274x/284x/294x device driver firmware for Linux and FreeBSD. 3 * 4 * Copyright (c) 1994-2001 Justin T. Gibbs. 5 * Copyright (c) 2000-2001 Adaptec Inc. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 23 unchanged lines hidden (view full) --- 32 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 36 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 37 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 38 * POSSIBILITY OF SUCH DAMAGES. 39 * |
40 * $FreeBSD: head/sys/dev/aic7xxx/aic7xxx.seq 109590 2003-01-20 20:44:55Z gibbs $ | 40 * $FreeBSD: head/sys/dev/aic7xxx/aic7xxx.seq 115333 2003-05-26 21:24:01Z gibbs $ |
41 */ 42 | 41 */ 42 |
43VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#54 $" | 43VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic7xxx.seq#55 $" |
44PATCH_ARG_LIST = "struct ahc_softc *ahc" 45PREFIX = "ahc_" 46 47#include "aic7xxx.reg" 48#include "scsi_message.h" 49 50/* 51 * A few words on the waiting SCB list: --- 380 unchanged lines hidden (view full) --- 432 * SCB is used, so don't bother with it now. 433 */ 434select_out: 435 /* Turn off the selection hardware */ 436 and SCSISEQ, TEMODE|ENSELI|ENRSELI|ENAUTOATNP, SCSISEQ; 437 mov SCBPTR, WAITING_SCBH; 438 mov WAITING_SCBH,SCB_NEXT; 439 mov SAVED_SCSIID, SCB_SCSIID; | 44PATCH_ARG_LIST = "struct ahc_softc *ahc" 45PREFIX = "ahc_" 46 47#include "aic7xxx.reg" 48#include "scsi_message.h" 49 50/* 51 * A few words on the waiting SCB list: --- 380 unchanged lines hidden (view full) --- 432 * SCB is used, so don't bother with it now. 433 */ 434select_out: 435 /* Turn off the selection hardware */ 436 and SCSISEQ, TEMODE|ENSELI|ENRSELI|ENAUTOATNP, SCSISEQ; 437 mov SCBPTR, WAITING_SCBH; 438 mov WAITING_SCBH,SCB_NEXT; 439 mov SAVED_SCSIID, SCB_SCSIID; |
440 mov SAVED_LUN, SCB_LUN; | 440 and SAVED_LUN, LID, SCB_LUN; |
441 call set_transfer_settings; 442 if ((ahc->flags & AHC_TARGETROLE) != 0) { 443 test SSTAT0, TARGET jz initiator_select; 444 445 or SXFRCTL0, CLRSTCNT|CLRCHN; 446 447 /* 448 * Put tag in connonical location since not --- 7 unchanged lines hidden (view full) --- 456 * sending our identify messages. 457 */ 458 mvi P_MESGIN|BSYO call change_phase; 459 mvi CLRSINT0, CLRSELDO; 460 461 /* 462 * Start out with a simple identify message. 463 */ | 441 call set_transfer_settings; 442 if ((ahc->flags & AHC_TARGETROLE) != 0) { 443 test SSTAT0, TARGET jz initiator_select; 444 445 or SXFRCTL0, CLRSTCNT|CLRCHN; 446 447 /* 448 * Put tag in connonical location since not --- 7 unchanged lines hidden (view full) --- 456 * sending our identify messages. 457 */ 458 mvi P_MESGIN|BSYO call change_phase; 459 mvi CLRSINT0, CLRSELDO; 460 461 /* 462 * Start out with a simple identify message. 463 */ |
464 or SCB_LUN, MSG_IDENTIFYFLAG call target_outb; | 464 or SAVED_LUN, MSG_IDENTIFYFLAG call target_outb; |
465 466 /* 467 * If we are the result of a tagged command, send 468 * a simple Q tag and the tag id. 469 */ 470 test SCB_CONTROL, TAG_ENB jz . + 3; 471 mvi MSG_SIMPLE_Q_TAG call target_outb; 472 mov SCB_TARGET_ITAG call target_outb; --- 290 unchanged lines hidden (view full) --- 763idle_sgfetch_complete: 764 call disable_ccsgen_fetch_done; 765 and CCSGADDR, SG_PREFETCH_ADDR_MASK, SCB_RESIDUAL_SGPTR; 766idle_sg_avail: 767 if ((ahc->features & AHC_ULTRA2) != 0) { 768 /* Does the hardware have space for another SG entry? */ 769 test DFSTATUS, PRELOAD_AVAIL jz return; 770 bmov HADDR, CCSGRAM, 7; | 465 466 /* 467 * If we are the result of a tagged command, send 468 * a simple Q tag and the tag id. 469 */ 470 test SCB_CONTROL, TAG_ENB jz . + 3; 471 mvi MSG_SIMPLE_Q_TAG call target_outb; 472 mov SCB_TARGET_ITAG call target_outb; --- 290 unchanged lines hidden (view full) --- 763idle_sgfetch_complete: 764 call disable_ccsgen_fetch_done; 765 and CCSGADDR, SG_PREFETCH_ADDR_MASK, SCB_RESIDUAL_SGPTR; 766idle_sg_avail: 767 if ((ahc->features & AHC_ULTRA2) != 0) { 768 /* Does the hardware have space for another SG entry? */ 769 test DFSTATUS, PRELOAD_AVAIL jz return; 770 bmov HADDR, CCSGRAM, 7; |
771 test HCNT[0], 0x1 jz . + 2; 772 xor DATA_COUNT_ODD, 0x1; | |
773 bmov SCB_RESIDUAL_DATACNT[3], CCSGRAM, 1; 774 if ((ahc->flags & AHC_39BIT_ADDRESSING) != 0) { 775 mov SCB_RESIDUAL_DATACNT[3] call set_hhaddr; 776 } 777 call sg_advance; 778 mov SINDEX, SCB_RESIDUAL_SGPTR[0]; | 771 bmov SCB_RESIDUAL_DATACNT[3], CCSGRAM, 1; 772 if ((ahc->flags & AHC_39BIT_ADDRESSING) != 0) { 773 mov SCB_RESIDUAL_DATACNT[3] call set_hhaddr; 774 } 775 call sg_advance; 776 mov SINDEX, SCB_RESIDUAL_SGPTR[0]; |
779 test DATA_COUNT_ODD, 0x1 jz . + 2; 780 or SINDEX, ODD_SEG; | |
781 test SCB_RESIDUAL_DATACNT[3], SG_LAST_SEG jz . + 2; 782 or SINDEX, LAST_SEG; 783 mov SG_CACHE_PRE, SINDEX; 784 /* Load the segment */ 785 or DFCNTRL, PRELOADEN; 786 } 787 ret; 788} --- 81 unchanged lines hidden (view full) --- 870 mvi SCB_DATAPTR call bcopy_7; 871 mvi DINDEX, SCB_RESIDUAL_DATACNT + 3; 872 mvi SCB_DATACNT + 3 call bcopy_5; 873 } 874 if ((ahc->bugs & AHC_PCI_MWI_BUG) != 0 && ahc->pci_cachesize != 0) { 875 call calc_mwi_residual; 876 } 877 and SCB_RESIDUAL_SGPTR[0], ~SG_FULL_RESID; | 777 test SCB_RESIDUAL_DATACNT[3], SG_LAST_SEG jz . + 2; 778 or SINDEX, LAST_SEG; 779 mov SG_CACHE_PRE, SINDEX; 780 /* Load the segment */ 781 or DFCNTRL, PRELOADEN; 782 } 783 ret; 784} --- 81 unchanged lines hidden (view full) --- 866 mvi SCB_DATAPTR call bcopy_7; 867 mvi DINDEX, SCB_RESIDUAL_DATACNT + 3; 868 mvi SCB_DATACNT + 3 call bcopy_5; 869 } 870 if ((ahc->bugs & AHC_PCI_MWI_BUG) != 0 && ahc->pci_cachesize != 0) { 871 call calc_mwi_residual; 872 } 873 and SCB_RESIDUAL_SGPTR[0], ~SG_FULL_RESID; |
878 and DATA_COUNT_ODD, 0x1, HCNT[0]; | |
879 880 if ((ahc->features & AHC_ULTRA2) == 0) { 881 if ((ahc->features & AHC_CMD_CHAN) != 0) { 882 bmov STCNT, HCNT, 3; 883 } else { 884 call set_stcnt_from_hcnt; 885 } 886 } --- 18 unchanged lines hidden (view full) --- 905 mvi DATA_OVERRUN call set_seqint; 906 jmp ITloop; 907 908data_phase_inbounds: 909 if ((ahc->features & AHC_ULTRA2) != 0) { 910 mov SINDEX, SCB_RESIDUAL_SGPTR[0]; 911 test SCB_RESIDUAL_DATACNT[3], SG_LAST_SEG jz . + 2; 912 or SINDEX, LAST_SEG; | 874 875 if ((ahc->features & AHC_ULTRA2) == 0) { 876 if ((ahc->features & AHC_CMD_CHAN) != 0) { 877 bmov STCNT, HCNT, 3; 878 } else { 879 call set_stcnt_from_hcnt; 880 } 881 } --- 18 unchanged lines hidden (view full) --- 900 mvi DATA_OVERRUN call set_seqint; 901 jmp ITloop; 902 903data_phase_inbounds: 904 if ((ahc->features & AHC_ULTRA2) != 0) { 905 mov SINDEX, SCB_RESIDUAL_SGPTR[0]; 906 test SCB_RESIDUAL_DATACNT[3], SG_LAST_SEG jz . + 2; 907 or SINDEX, LAST_SEG; |
913 test DATA_COUNT_ODD, 0x1 jz . + 2; 914 or SINDEX, ODD_SEG; | |
915 mov SG_CACHE_PRE, SINDEX; 916 mov DFCNTRL, DMAPARAMS; 917ultra2_dma_loop: 918 call idle_loop; 919 /* 920 * The transfer is complete if either the last segment 921 * completes or the target changes phase. 922 */ --- 78 unchanged lines hidden (view full) --- 1001 */ 1002 test SG_CACHE_SHADOW, 0x80 jz sgptr_fixup_done; 1003 test SCB_RESIDUAL_SGPTR[0], 0x80 jnz sgptr_fixup_done; 1004 add SCB_RESIDUAL_SGPTR[1], -1; 1005 adc SCB_RESIDUAL_SGPTR[2], -1; 1006 adc SCB_RESIDUAL_SGPTR[3], -1; 1007sgptr_fixup_done: 1008 and SCB_RESIDUAL_SGPTR[0], SG_ADDR_MASK, SG_CACHE_SHADOW; | 908 mov SG_CACHE_PRE, SINDEX; 909 mov DFCNTRL, DMAPARAMS; 910ultra2_dma_loop: 911 call idle_loop; 912 /* 913 * The transfer is complete if either the last segment 914 * completes or the target changes phase. 915 */ --- 78 unchanged lines hidden (view full) --- 994 */ 995 test SG_CACHE_SHADOW, 0x80 jz sgptr_fixup_done; 996 test SCB_RESIDUAL_SGPTR[0], 0x80 jnz sgptr_fixup_done; 997 add SCB_RESIDUAL_SGPTR[1], -1; 998 adc SCB_RESIDUAL_SGPTR[2], -1; 999 adc SCB_RESIDUAL_SGPTR[3], -1; 1000sgptr_fixup_done: 1001 and SCB_RESIDUAL_SGPTR[0], SG_ADDR_MASK, SG_CACHE_SHADOW; |
1009 clr DATA_COUNT_ODD; 1010 test SG_CACHE_SHADOW, ODD_SEG jz . + 2; 1011 or DATA_COUNT_ODD, 0x1; 1012 clr SCB_RESIDUAL_DATACNT[3]; /* We are not the last seg */ | 1002 /* We are not the last seg */ 1003 and SCB_RESIDUAL_DATACNT[3], ~SG_LAST_SEG; |
1013residuals_correct: 1014 /* 1015 * Go ahead and shut down the DMA engine now. 1016 * In the future, we'll want to handle end of 1017 * transfer messages prior to doing this, but this 1018 * requires similar restructuring for pre-ULTRA2 1019 * controllers. 1020 */ --- 220 unchanged lines hidden (view full) --- 1241 call sg_advance; 1242 1243sg_load_done: 1244 if ((ahc->features & AHC_CMD_CHAN) != 0) { 1245 bmov STCNT, HCNT, 3; 1246 } else { 1247 call set_stcnt_from_hcnt; 1248 } | 1004residuals_correct: 1005 /* 1006 * Go ahead and shut down the DMA engine now. 1007 * In the future, we'll want to handle end of 1008 * transfer messages prior to doing this, but this 1009 * requires similar restructuring for pre-ULTRA2 1010 * controllers. 1011 */ --- 220 unchanged lines hidden (view full) --- 1232 call sg_advance; 1233 1234sg_load_done: 1235 if ((ahc->features & AHC_CMD_CHAN) != 0) { 1236 bmov STCNT, HCNT, 3; 1237 } else { 1238 call set_stcnt_from_hcnt; 1239 } |
1249 /* Track odd'ness */ 1250 test HCNT[0], 0x1 jz . + 2; 1251 xor DATA_COUNT_ODD, 0x1; | |
1252 1253 if ((ahc->flags & AHC_TARGETROLE) != 0) { 1254 test SSTAT0, TARGET jnz data_phase_loop; 1255 } 1256 } 1257data_phase_finish: 1258 /* 1259 * If the target has left us in data phase, loop through --- 85 unchanged lines hidden (view full) --- 1345 and SEQ_FLAGS, ~DPHASE_PENDING; 1346 /* 1347 * For data-in phases, wait for any pending acks from the 1348 * initiator before changing phase. We only need to 1349 * send Ignore Wide Residue messages for data-in phases. 1350 */ 1351 test DFCNTRL, DIRECTION jz target_ITloop; 1352 test SSTAT1, REQINIT jnz .; | 1240 1241 if ((ahc->flags & AHC_TARGETROLE) != 0) { 1242 test SSTAT0, TARGET jnz data_phase_loop; 1243 } 1244 } 1245data_phase_finish: 1246 /* 1247 * If the target has left us in data phase, loop through --- 85 unchanged lines hidden (view full) --- 1333 and SEQ_FLAGS, ~DPHASE_PENDING; 1334 /* 1335 * For data-in phases, wait for any pending acks from the 1336 * initiator before changing phase. We only need to 1337 * send Ignore Wide Residue messages for data-in phases. 1338 */ 1339 test DFCNTRL, DIRECTION jz target_ITloop; 1340 test SSTAT1, REQINIT jnz .; |
1353 test DATA_COUNT_ODD, 0x1 jz target_ITloop; | 1341 test SCB_LUN, SCB_XFERLEN_ODD jz target_ITloop; |
1354 test SCSIRATE, WIDEXFER jz target_ITloop; 1355 /* 1356 * Issue an Ignore Wide Residue Message. 1357 */ 1358 mvi P_MESGIN|BSYO call change_phase; 1359 mvi MSG_IGN_WIDE_RESIDUE call target_outb; 1360 mvi 1 call target_outb; 1361 jmp target_ITloop; --- 143 unchanged lines hidden (view full) --- 1505 } else { 1506 mvi SCSISIGO, ATNO; 1507 } 1508p_mesgout: 1509 mov SINDEX, MSG_OUT; 1510 cmp SINDEX, MSG_IDENTIFYFLAG jne p_mesgout_from_host; 1511 test SCB_CONTROL,MK_MESSAGE jnz host_message_loop; 1512p_mesgout_identify: | 1342 test SCSIRATE, WIDEXFER jz target_ITloop; 1343 /* 1344 * Issue an Ignore Wide Residue Message. 1345 */ 1346 mvi P_MESGIN|BSYO call change_phase; 1347 mvi MSG_IGN_WIDE_RESIDUE call target_outb; 1348 mvi 1 call target_outb; 1349 jmp target_ITloop; --- 143 unchanged lines hidden (view full) --- 1493 } else { 1494 mvi SCSISIGO, ATNO; 1495 } 1496p_mesgout: 1497 mov SINDEX, MSG_OUT; 1498 cmp SINDEX, MSG_IDENTIFYFLAG jne p_mesgout_from_host; 1499 test SCB_CONTROL,MK_MESSAGE jnz host_message_loop; 1500p_mesgout_identify: |
1513 or SINDEX, MSG_IDENTIFYFLAG|DISCENB, SCB_LUN; | 1501 or SINDEX, MSG_IDENTIFYFLAG|DISCENB, SAVED_LUN; |
1514 test SCB_CONTROL, DISCENB jnz . + 2; 1515 and SINDEX, ~DISCENB; 1516/* 1517 * Send a tag message if TAG_ENB is set in the SCB control block. 1518 * Use SCB_TAG (the position in the kernel's SCB array) as the tag value. 1519 */ 1520p_mesgout_tag: 1521 test SCB_CONTROL,TAG_ENB jz p_mesgout_onebyte; --- 60 unchanged lines hidden (view full) --- 1582 1583mesgin_ign_wide_residue: 1584if ((ahc->features & AHC_WIDE) != 0) { 1585 test SCSIRATE, WIDEXFER jz mesgin_reject; 1586 /* Pull the residue byte */ 1587 mvi ARG_1 call inb_next; 1588 cmp ARG_1, 0x01 jne mesgin_reject; 1589 test SCB_RESIDUAL_SGPTR[0], SG_LIST_NULL jz . + 2; | 1502 test SCB_CONTROL, DISCENB jnz . + 2; 1503 and SINDEX, ~DISCENB; 1504/* 1505 * Send a tag message if TAG_ENB is set in the SCB control block. 1506 * Use SCB_TAG (the position in the kernel's SCB array) as the tag value. 1507 */ 1508p_mesgout_tag: 1509 test SCB_CONTROL,TAG_ENB jz p_mesgout_onebyte; --- 60 unchanged lines hidden (view full) --- 1570 1571mesgin_ign_wide_residue: 1572if ((ahc->features & AHC_WIDE) != 0) { 1573 test SCSIRATE, WIDEXFER jz mesgin_reject; 1574 /* Pull the residue byte */ 1575 mvi ARG_1 call inb_next; 1576 cmp ARG_1, 0x01 jne mesgin_reject; 1577 test SCB_RESIDUAL_SGPTR[0], SG_LIST_NULL jz . + 2; |
1590 test DATA_COUNT_ODD, 0x1 jz mesgin_done; | 1578 test SCB_LUN, SCB_XFERLEN_ODD jnz mesgin_done; |
1591 mvi IGN_WIDE_RES call set_seqint; 1592 jmp mesgin_done; 1593} 1594 1595mesgin_proto_violation: 1596 mvi PROTO_VIOLATION call set_seqint; 1597 jmp mesgin_done; 1598mesgin_reject: --- 112 unchanged lines hidden (view full) --- 1711 test SEQ_FLAGS, NOT_IDENTIFIED|NO_CDB_SENT 1712 jnz mesgin_proto_violation; 1713 or SCB_CONTROL,DISCONNECTED; 1714 if ((ahc->flags & AHC_PAGESCBS) != 0) { 1715 call add_scb_to_disc_list; 1716 } 1717 test SCB_CONTROL, TAG_ENB jnz await_busfree; 1718 mov ARG_1, SCB_TAG; | 1579 mvi IGN_WIDE_RES call set_seqint; 1580 jmp mesgin_done; 1581} 1582 1583mesgin_proto_violation: 1584 mvi PROTO_VIOLATION call set_seqint; 1585 jmp mesgin_done; 1586mesgin_reject: --- 112 unchanged lines hidden (view full) --- 1699 test SEQ_FLAGS, NOT_IDENTIFIED|NO_CDB_SENT 1700 jnz mesgin_proto_violation; 1701 or SCB_CONTROL,DISCONNECTED; 1702 if ((ahc->flags & AHC_PAGESCBS) != 0) { 1703 call add_scb_to_disc_list; 1704 } 1705 test SCB_CONTROL, TAG_ENB jnz await_busfree; 1706 mov ARG_1, SCB_TAG; |
1719 mov SAVED_LUN, SCB_LUN; | 1707 and SAVED_LUN, LID, SCB_LUN; |
1720 mov SCB_SCSIID call set_busy_target; 1721 jmp await_busfree; 1722 1723/* 1724 * Save data pointers message: 1725 * Copying RAM values back to SCB, for Save Data Pointers message, but 1726 * only if we've actually been into a data phase to change them. This 1727 * protects against bogus data in scratch ram and the residual counts --- 126 unchanged lines hidden (view full) --- 1854 if ((ahc->flags & AHC_SCB_BTT) != 0) { 1855 jmp setup_SCB_id_lun_okay; 1856 } else { 1857 /* 1858 * We only allow one untagged command per-target 1859 * at a time. So, if the lun doesn't match, look 1860 * for a tag message. 1861 */ | 1708 mov SCB_SCSIID call set_busy_target; 1709 jmp await_busfree; 1710 1711/* 1712 * Save data pointers message: 1713 * Copying RAM values back to SCB, for Save Data Pointers message, but 1714 * only if we've actually been into a data phase to change them. This 1715 * protects against bogus data in scratch ram and the residual counts --- 126 unchanged lines hidden (view full) --- 1842 if ((ahc->flags & AHC_SCB_BTT) != 0) { 1843 jmp setup_SCB_id_lun_okay; 1844 } else { 1845 /* 1846 * We only allow one untagged command per-target 1847 * at a time. So, if the lun doesn't match, look 1848 * for a tag message. 1849 */ |
1862 mov A, SCB_LUN; | 1850 and A, LID, SCB_LUN; |
1863 cmp SAVED_LUN, A je setup_SCB_id_lun_okay; 1864 if ((ahc->flags & AHC_PAGESCBS) != 0) { 1865 /* 1866 * findSCB removes the SCB from the 1867 * disconnected list, so we must replace 1868 * it there should this SCB be for another 1869 * lun. 1870 */ --- 41 unchanged lines hidden (view full) --- 1912 or SEQ_FLAGS, 0x4; 1913 } 1914 mov A, SCB_SCSIID; 1915 cmp SAVED_SCSIID, A jne not_found_cleanup_scb; 1916 if ((ahc->flags & AHC_SEQUENCER_DEBUG) != 0) { 1917 or SEQ_FLAGS, 0x8; 1918 } 1919setup_SCB_id_okay: | 1851 cmp SAVED_LUN, A je setup_SCB_id_lun_okay; 1852 if ((ahc->flags & AHC_PAGESCBS) != 0) { 1853 /* 1854 * findSCB removes the SCB from the 1855 * disconnected list, so we must replace 1856 * it there should this SCB be for another 1857 * lun. 1858 */ --- 41 unchanged lines hidden (view full) --- 1900 or SEQ_FLAGS, 0x4; 1901 } 1902 mov A, SCB_SCSIID; 1903 cmp SAVED_SCSIID, A jne not_found_cleanup_scb; 1904 if ((ahc->flags & AHC_SEQUENCER_DEBUG) != 0) { 1905 or SEQ_FLAGS, 0x8; 1906 } 1907setup_SCB_id_okay: |
1920 mov A, SCB_LUN; | 1908 and A, LID, SCB_LUN; |
1921 cmp SAVED_LUN, A jne not_found_cleanup_scb; 1922setup_SCB_id_lun_okay: 1923 if ((ahc->flags & AHC_SEQUENCER_DEBUG) != 0) { 1924 or SEQ_FLAGS, 0x10; 1925 } 1926 test SCB_CONTROL,DISCONNECTED jz not_found_cleanup_scb; 1927 and SCB_CONTROL,~DISCONNECTED; 1928 test SCB_CONTROL, TAG_ENB jnz setup_SCB_tagged; --- 474 unchanged lines hidden --- | 1909 cmp SAVED_LUN, A jne not_found_cleanup_scb; 1910setup_SCB_id_lun_okay: 1911 if ((ahc->flags & AHC_SEQUENCER_DEBUG) != 0) { 1912 or SEQ_FLAGS, 0x10; 1913 } 1914 test SCB_CONTROL,DISCONNECTED jz not_found_cleanup_scb; 1915 and SCB_CONTROL,~DISCONNECTED; 1916 test SCB_CONTROL, TAG_ENB jnz setup_SCB_tagged; --- 474 unchanged lines hidden --- |