[Patch] aic7xxx update.

Doug Ledford (dledford@redhat.com)
Thu, 08 Feb 2001 02:25:18 -0500


This is a multi-part message in MIME format.
--------------6A33B4C30FDEDC5E1C023ADD
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

This is relative to the 5.2.2 driver already in 2.4.1-ac4 and it fixes the
7880 (and similar) problems. Alan, you'll need to make sure the little patch
I sent earlier is not already applied to your tree since it will conflict with
this patch.

This has been tested on a 7850, 7880, 7890, and 7892 chipset. In general,
this covers two of the four classes of aic7xxx controller. The 7890 and 7892
both fall in the class Ultra2 and if one works the other typically does as
well. The 7850 and 7880 both fall in the class of legacy non-Ultra2
controller and if one works the other usually does. The other two classes are
all 7770 based controllers (EISA/VLB controllers, which I don't have any
machines with these cards to test on any more) and 7895 controllers, which are
half way between a legacy controller and an Ultra2 controller and don't fit in
any class except their own.

So, what this driver really needs is someone with a 7895 and someone with a
VLB/EISA controller to test it out. All the other controllers should be
working reliably at this point.

-- 

Doug Ledford <dledford@redhat.com> http://people.redhat.com/dledford Please check my web site for aic7xxx updates/answers before e-mailing me about problems --------------6A33B4C30FDEDC5E1C023ADD Content-Type: text/plain; charset=us-ascii; name="aic7xxx-5.2.2-5.2.3.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="aic7xxx-5.2.2-5.2.3.patch"

diff -U3 -rN scsi.save/aic7xxx/aic7xxx.seq scsi/aic7xxx/aic7xxx.seq --- scsi.save/aic7xxx/aic7xxx.seq Wed Feb 7 15:07:28 2001 +++ scsi/aic7xxx/aic7xxx.seq Thu Feb 8 01:52:38 2001 @@ -291,11 +291,7 @@ mov A, LASTPHASE; - if ((p->features & AHC_ULTRA2) != 0) { - test A, ~P_DATAIN jz u2_p_data; - } else { - test A, ~P_DATAIN jz p_data; - } + test A, ~P_DATAIN jz p_data; cmp A,P_COMMAND je p_command; cmp A,P_MESGOUT je p_mesgout; cmp A,P_STATUS je p_status; @@ -336,73 +332,130 @@ /* clear target specific flags */ clr SEQ_FLAGS ret; - if ((p->features & AHC_ULTRA2) != 0) { - - -u2_data_phase_reinit: +data_phase_reinit: /* * If we re-enter the data phase after going through another phase, the * STCNT may have been cleared, so restore it from the residual field. * On Ultra2, we have to put it into the HCNT field because we have to * drop the data down into the shadow layer via the preload ability. */ + if ((p->features & AHC_ULTRA2) != 0) { bmov HADDR, SHADDR, 4; bmov HCNT, SCB_RESID_DCNT, 3; - jmp u2_data_phase_loop; -u2_p_data: + } + if ((p->chip & AHC_CHIPID_MASK) == AHC_AIC7895) { + bmov STCNT, SCB_RESID_DCNT, 3; + } + if ((p->features & AHC_CMD_CHAN) == 0) { + mvi DINDEX, STCNT; + mvi SCB_RESID_DCNT call bcopy_3; + } + jmp data_phase_loop; +p_data: + if ((p->features & AHC_ULTRA2) != 0) { mvi DMAPARAMS, PRELOADEN|SCSIEN|HDMAEN; - test LASTPHASE, IOI jnz . + 2; - or DMAPARAMS, DIRECTION; - call assert; /* - * Ensure entering a data - * phase is okay - seen identify, etc. - */ + } else { + mvi DMAPARAMS, WIDEODD|SCSIEN|SDMAEN|HDMAEN|FIFORESET; + } + test LASTPHASE, IOI jnz . + 2; + or DMAPARAMS, DIRECTION; + call assert; /* + * Ensure entering a data + * phase is okay - seen identify, etc. + */ + if ((p->features & AHC_CMD_CHAN) != 0) { mvi CCSGADDR, CCSGADDR_MAX; - test SEQ_FLAGS, DPHASE jnz u2_data_phase_reinit; - or SEQ_FLAGS, DPHASE; /* we've seen a data phase */ - /* - * Initialize the DMA address and counter from the SCB. - * Also set SG_COUNT and SG_NEXT in memory since we cannot - * modify the values in the SCB itself until we see a - * save data pointers message. - */ + } + + test SEQ_FLAGS, DPHASE jnz data_phase_reinit; + or SEQ_FLAGS, DPHASE; /* we've seen a data phase */ + /* + * Initialize the DMA address and counter from the SCB. + * Also set SG_COUNT and SG_NEXT in memory since we cannot + * modify the values in the SCB itself until we see a + * save data pointers message. + */ + if ((p->features & AHC_CMD_CHAN) != 0) { bmov HADDR, SCB_DATAPTR, 7; bmov SG_COUNT, SCB_SGCOUNT, 5; -u2_data_phase_loop: - /* Guard against overruns */ - test SG_COUNT, 0xff jnz u2_data_phase_inbounds; + if ((p->features & AHC_ULTRA2) == 0) { + bmov STCNT, HCNT, 3; + } + } else { + mvi DINDEX, HADDR; + mvi SCB_DATAPTR call bcopy_7; + call set_stcnt_from_hcnt; + mvi DINDEX, SG_COUNT; + mvi SCB_SGCOUNT call bcopy_5; + } +data_phase_loop: + /* Guard against overruns */ + test SG_COUNT, 0xff jnz data_phase_inbounds; /* * Turn on 'Bit Bucket' mode, set the transfer count to * 16meg and let the target run until it changes phase. * When the transfer completes, notify the host that we * had an overrun. */ - or SXFRCTL1,BITBUCKET; - and DMAPARAMS, DIRECTION; + or SXFRCTL1,BITBUCKET; + and DMAPARAMS, ~(HDMAEN|SDMAEN); + if ((p->features & AHC_ULTRA2) != 0) { bmov HCNT, ALLONES, 3; -u2_data_phase_inbounds: + } + if ((p->chip & AHC_CHIPID_MASK) == AHC_AIC7895) { + bmov STCNT, ALLONES, 3; + } + if ((p->features & AHC_CMD_CHAN) == 0) { + mvi STCNT[0], 0xFF; + mvi STCNT[1], 0xFF; + mvi STCNT[2], 0xFF; + } + +data_phase_inbounds: /* If we are the last SG block, tell the hardware. */ + if ((p->features & AHC_ULTRA2) != 0) { shl A, 2, SG_COUNT; - cmp SG_COUNT,0x01 jne u2_data_phase_lastseg; + cmp SG_COUNT,0x01 jne data_phase_wideodd; or A, LAST_SEG; -u2_data_phase_lastseg: + } else { + cmp SG_COUNT,0x01 jne data_phase_wideodd; + and DMAPARAMS, ~WIDEODD; + } +data_phase_wideodd: + if ((p->features & AHC_ULTRA2) != 0) { mov SG_CACHEPTR, A; mov DFCNTRL, DMAPARAMS; /* start the operation */ - test SXFRCTL1, BITBUCKET jnz u2_data_phase_overrun; + test SXFRCTL1, BITBUCKET jnz data_phase_overrun; u2_preload_wait: test SSTAT1, PHASEMIS jnz u2_phasemis; test DFSTATUS, PRELOAD_AVAIL jz u2_preload_wait; + } else { + mov DMAPARAMS call dma; +data_phase_dma_done: +/* Go tell the host about any overruns */ + test SXFRCTL1,BITBUCKET jnz data_phase_overrun; + +/* Exit if we had an underrun. dma clears SINDEX in this case. */ + test SINDEX,0xff jz data_phase_finish; + } /* * Advance the scatter-gather pointers */ -u2_sg_advance: +sg_advance: + if ((p->features & AHC_ULTRA2) != 0) { cmp SG_COUNT, 0x01 je u2_data_phase_finish; + } else { + dec SG_COUNT; + test SG_COUNT, 0xff jz data_phase_finish; + } + + if ((p->features & AHC_CMD_CHAN) != 0) { /* * Do we have any prefetch left??? */ - cmp CCSGADDR, CCSGADDR_MAX jne u2_prefetch_avail; + cmp CCSGADDR, CCSGADDR_MAX jne prefetch_avail; /* * Fetch MIN(CCSGADDR_MAX, (SG_COUNT * 8)) bytes. @@ -418,18 +471,48 @@ and CCSGCTL, ~CCSGEN; test CCSGCTL, CCSGEN jnz .; mvi CCSGCTL, CCSGRESET; -u2_prefetch_avail: - /* Test for a phasemis before we drop the stuff into the - * host regs. We might have actually missed the phasemis - * while doing the dma of the sg segs. - */ - test SSTAT1, PHASEMIS jnz u2_phasemis; - dec SG_COUNT; /* one less segment to go */ - bmov HADDR, CCSGRAM, 8; /* drop the address in place */ - clr A; /* Advance the SG pointer by */ - add SG_NEXT[0],SG_SIZEOF; /* adding SG_SIZEOF to addr0 */ - adc SG_NEXT[1],A; /* and adding any carry to */ - jmp u2_data_phase_loop; /* addr1 */ +prefetch_avail: + bmov HADDR, CCSGRAM, 8; + if ((p->features & AHC_ULTRA2) == 0) { + bmov STCNT, HCNT, 3; + } else { + dec SG_COUNT; + } + } else { + mvi DINDEX, HADDR; + mvi SG_NEXT call bcopy_4; + + mvi HCNT[0],SG_SIZEOF; + clr HCNT[1]; + clr HCNT[2]; + + or DFCNTRL, HDMAEN|DIRECTION|FIFORESET; + + call dma_finish; + +/* + * Copy data from FIFO into SCB data pointer and data count. + * This assumes that the SG segments are of the form: + * struct ahc_dma_seg { + * u_int32_t addr; four bytes, little-endian order + * u_int32_t len; four bytes, little endian order + * }; + */ + mvi DINDEX, HADDR; + call dfdat_in_7; + call set_stcnt_from_hcnt; + } +/* Advance the SG pointer */ + clr A; /* add sizeof(struct scatter) */ + add SG_NEXT[0],SG_SIZEOF; + adc SG_NEXT[1],A; + + if ((p->features & AHC_ULTRA2) != 0) { + jmp data_phase_loop; + } else { + test SSTAT1, REQINIT jz .; + test SSTAT1,PHASEMIS jz data_phase_loop; + } /* @@ -438,23 +521,24 @@ * we'll get a phasemis if we do finish, all we really need to do is wait * for a phasemis then check if we did actually complete all the segments. */ + if ((p->features & AHC_ULTRA2) != 0) { u2_data_phase_finish: test SSTAT1, PHASEMIS jnz u2_phasemis; test SG_CACHEPTR, LAST_SEG_DONE jz u2_data_phase_finish; clr SG_COUNT; test SSTAT1, REQINIT jz .; - test SSTAT1, PHASEMIS jz u2_data_phase_loop; + test SSTAT1, PHASEMIS jz data_phase_loop; u2_phasemis: call ultra2_dmafinish; - test SG_CACHEPTR, LAST_SEG_DONE jnz u2_phasemis_end; + test SG_CACHEPTR, LAST_SEG_DONE jnz data_phase_finish; test SSTAT2, SHVALID jnz u2_fixup_residual; mvi INTSTAT, SEQ_SG_FIXUP; - jmp u2_phasemis_end; + jmp data_phase_finish; u2_fixup_residual: shr ARG_1, 2, SG_CACHEPTR; u2_phasemis_loop: and A, 0x3f, SG_COUNT; - cmp ARG_1, A je u2_phasemis_end; + cmp ARG_1, A je data_phase_finish; /* * Subtract SG_SIZEOF from the SG_NEXT pointer and add 1 to the SG_COUNT */ @@ -463,11 +547,44 @@ adc SG_NEXT[1], 0xff; inc SG_COUNT; jmp u2_phasemis_loop; -u2_phasemis_end: - bmov SCB_RESID_DCNT, STCNT, 3; + } + +data_phase_finish: +/* + * After a DMA finishes, save the SG and STCNT residuals back into the SCB + * We use STCNT instead of HCNT, since it's a reflection of how many bytes + * were transferred on the SCSI (as opposed to the host) bus. + */ + if ((p->features & AHC_CMD_CHAN) != 0) { + bmov SCB_RESID_DCNT, STCNT, 3; mov SCB_RESID_SGCNT, SG_COUNT; - or SXFRCTL0, CLRSTCNT|CLRCHN; - jmp ITloop; + if ((p->features & AHC_ULTRA2) != 0) { + or SXFRCTL0, CLRSTCNT|CLRCHN; + } + } else { + mov SCB_RESID_DCNT[0],STCNT[0]; + mov SCB_RESID_DCNT[1],STCNT[1]; + mov SCB_RESID_DCNT[2],STCNT[2]; + mov SCB_RESID_SGCNT, SG_COUNT; + } + + jmp ITloop; + +data_phase_overrun: +/* + * Turn off BITBUCKET mode and notify the host + */ + if ((p->features & AHC_ULTRA2) != 0) { +/* + * Wait for the target to quit transferring data on the SCSI bus + */ + test SSTAT1, PHASEMIS jz .; + call ultra2_dmafinish; + } + and SXFRCTL1, ~BITBUCKET; + mvi INTSTAT,DATA_OVERRUN; + jmp ITloop; + @@ -478,6 +595,7 @@ * brought into the data phase again (or are still in it after our last * segment) that we will properly signal an overrun to the kernel. */ + if ((p->features & AHC_ULTRA2) != 0) { ultra2_dmafinish: test DFCNTRL, DIRECTION jnz ultra2_dmahalt; and DFCNTRL, ~SCSIEN; @@ -515,196 +633,6 @@ and DFCNTRL, ~(HDMAEN|SCSIEN); test DFCNTRL, (HDMAEN|SCSIEN) jnz .; ret; - -u2_data_phase_overrun: -/* - * Wait for the target to quit transferring data on the SCSI bus - */ - test SSTAT1, PHASEMIS jz .; - call ultra2_dmafinish; -/* - * Turn off BITBUCKET mode and notify the host - */ - and SXFRCTL1, ~BITBUCKET; - mvi INTSTAT,DATA_OVERRUN; - jmp ITloop; - - - - } else { /* NOT Ultra2 */ - - - -data_phase_reinit: -/* - * If we re-enter the data phase after going through another phase, the - * STCNT may have been cleared, so restore it from the residual field. - */ - if ((p->features & AHC_CMD_CHAN) != 0) { - bmov STCNT, SCB_RESID_DCNT, 3; - } else { - mvi DINDEX, STCNT; - mvi SCB_RESID_DCNT call bcopy_3; - } - jmp data_phase_loop; -p_data: - mvi DMAPARAMS, WIDEODD|SCSIEN|SDMAEN|HDMAEN|FIFORESET; - test LASTPHASE, IOI jnz . + 2; - or DMAPARAMS, DIRECTION; - call assert; /* - * Ensure entering a data - * phase is okay - seen identify, etc. - */ - if ((p->features & AHC_CMD_CHAN) != 0) { - mvi CCSGADDR, CCSGADDR_MAX; - } - test SEQ_FLAGS, DPHASE jnz data_phase_reinit; - or SEQ_FLAGS, DPHASE; /* we've seen a data phase */ - /* - * Initialize the DMA address and counter from the SCB. - * Also set SG_COUNT and SG_NEXT in memory since we cannot - * modify the values in the SCB itself until we see a - * save data pointers message. - */ - if ((p->features & AHC_CMD_CHAN) != 0) { - bmov HADDR, SCB_DATAPTR, 7; - bmov STCNT, HCNT, 3; - bmov SG_COUNT, SCB_SGCOUNT, 5; - } else { - mvi DINDEX, HADDR; - mvi SCB_DATAPTR call bcopy_7; - call set_stcnt_from_hcnt; - mvi DINDEX, SG_COUNT; - mvi SCB_SGCOUNT call bcopy_5; - } -data_phase_loop: - /* Guard against overruns */ - test SG_COUNT, 0xff jnz data_phase_inbounds; -/* - * Turn on 'Bit Bucket' mode, set the transfer count to - * 16meg and let the target run until it changes phase. - * When the transfer completes, notify the host that we - * had an overrun. - */ - or SXFRCTL1,BITBUCKET; - and DMAPARAMS, ~(HDMAEN|SDMAEN); - if ((p->features & AHC_CMD_CHAN) != 0) { - bmov STCNT, ALLONES, 3; - } else { - mvi STCNT[0], 0xFF; - mvi STCNT[1], 0xFF; - mvi STCNT[2], 0xFF; - } - -data_phase_inbounds: -/* If we are the last SG block, tell the hardware. */ - cmp SG_COUNT,0x01 jne data_phase_wideodd; - and DMAPARAMS, ~WIDEODD; -data_phase_wideodd: - mov DMAPARAMS call dma; -data_phase_dma_done: -/* Go tell the host about any overruns */ - test SXFRCTL1,BITBUCKET jnz data_phase_overrun; - -/* Exit if we had an underrun. dma clears SINDEX in this case. */ - test SINDEX,0xff jz data_phase_finish; -/* - * Advance the scatter-gather pointers if needed - */ -sg_advance: - cmp SG_COUNT, 0x01 je data_phase_finish; /* Are we done? */ - dec SG_COUNT; /* one less segment to go */ -/* - * Load a struct scatter and set up the data address and length. - * If the working value of the SG count is nonzero, then - * we need to load a new set of values. - * - * This, like all DMA's, assumes little-endian host data storage. - */ -sg_load: - if ((p->features & AHC_CMD_CHAN) != 0) { - /* - * Do we have any prefetch left??? - */ - cmp CCSGADDR, CCSGADDR_MAX jne prefetch_avail; - - /* - * Fetch MIN(CCSGADDR_MAX, (SG_COUNT * 8)) bytes. - */ - add A, -(CCSGRAM_MAXSEGS + 1), SG_COUNT; - mvi A, CCSGADDR_MAX; - jc . + 2; - shl A, 3, SG_COUNT; - mov CCHCNT, A; - bmov CCHADDR, SG_NEXT, 4; - mvi CCSGCTL, CCSGEN|CCSGRESET; - test CCSGCTL, CCSGDONE jz .; - and CCSGCTL, ~CCSGEN; - test CCSGCTL, CCSGEN jnz .; - mvi CCSGCTL, CCSGRESET; -prefetch_avail: - bmov HADDR, CCSGRAM, 8; - bmov STCNT, HCNT, 3; - } else { - mvi DINDEX, HADDR; - mvi SG_NEXT call bcopy_4; - - mvi HCNT[0],SG_SIZEOF; - clr HCNT[1]; - clr HCNT[2]; - - or DFCNTRL, HDMAEN|DIRECTION|FIFORESET; - - call dma_finish; - -/* - * Copy data from FIFO into SCB data pointer and data count. - * This assumes that the SG segments are of the form: - * struct ahc_dma_seg { - * u_int32_t addr; four bytes, little-endian order - * u_int32_t len; four bytes, little endian order - * }; - */ - mvi HADDR call dfdat_in_7; - call set_stcnt_from_hcnt; - } -/* Advance the SG pointer */ - clr A; /* add sizeof(struct scatter) */ - add SG_NEXT[0],SG_SIZEOF; - adc SG_NEXT[1],A; - - test SSTAT1, REQINIT jz .; - test SSTAT1,PHASEMIS jz data_phase_loop; - -data_phase_finish: -/* - * After a DMA finishes, save the SG and STCNT residuals back into the SCB - * We use STCNT instead of HCNT, since it's a reflection of how many bytes - * were transferred on the SCSI (as opposed to the host) bus. - */ - clr SG_COUNT; - if ((p->features & AHC_CMD_CHAN) != 0) { - bmov SCB_RESID_DCNT, STCNT, 3; - mov SCB_RESID_SGCNT, SG_COUNT; - } else { - mov SCB_RESID_DCNT[0],STCNT[0]; - mov SCB_RESID_DCNT[1],STCNT[1]; - mov SCB_RESID_DCNT[2],STCNT[2]; - mov SCB_RESID_SGCNT, SG_COUNT; - } - - jmp ITloop; - -data_phase_overrun: -/* - * Turn off BITBUCKET mode and notify the host - */ - and SXFRCTL1, ~BITBUCKET; - mvi INTSTAT,DATA_OVERRUN; - jmp ITloop; - - - } /* @@ -1437,21 +1365,25 @@ bmov CCSCBRAM, SCB_CONTROL, 32; or CCSCBCTL, CCSCBEN|CCSCBRESET; test CCSCBCTL, CCSCBDONE jz .; - } else if ((p->bugs & AHC_BUG_SCBCHAN_UPLOAD) != 0) { - mvi CCSCBCTL, CCARREN|CCSCBRESET; - cmp CCSCBCTL, ARRDONE|CCARREN jne .; - mvi CCHCNT, 32; - mvi CCSCBCTL, CCSCBEN|CCSCBRESET; - cmp CCSCBCTL, CCSCBDONE|CCSCBEN jne .; - } else { - mvi CCSCBCTL, CCARREN|CCSCBEN|CCSCBRESET; - cmp CCSCBCTL, CCSCBDONE|ARRDONE|CCARREN|CCSCBEN jne .; + } + if ((p->features & AHC_ULTRA2) != 0) { + if ((p->bugs & AHC_BUG_SCBCHAN_UPLOAD) != 0) { + mvi CCSCBCTL, CCARREN|CCSCBRESET; + cmp CCSCBCTL, ARRDONE|CCARREN jne .; + mvi CCHCNT, 32; + mvi CCSCBCTL, CCSCBEN|CCSCBRESET; + cmp CCSCBCTL, CCSCBDONE|CCSCBEN jne .; + } else { + mvi CCSCBCTL, CCARREN|CCSCBEN|CCSCBRESET; + cmp CCSCBCTL, CCSCBDONE|ARRDONE|CCARREN|CCSCBEN jne .; + } } dma_scb_finish: clr CCSCBCTL; test CCSCBCTL, CCARREN|CCSCBEN jnz .; ret; - } else { + } + if ((p->features & AHC_CMD_CHAN) == 0) { mvi DINDEX, HADDR; mvi HSCB_ADDR call set_32byte_addr; mvi HCNT[0], 32; diff -U3 -rN scsi.save/aic7xxx/aic7xxx_seq.c scsi/aic7xxx/aic7xxx_seq.c --- scsi.save/aic7xxx/aic7xxx_seq.c Wed Feb 7 15:07:28 2001 +++ scsi/aic7xxx/aic7xxx_seq.c Thu Feb 8 01:52:38 2001 @@ -7,7 +7,7 @@ 0x12, 0x6a, 0x00, 0x00, 0xff, 0x6a, 0xd6, 0x09, 0xff, 0x6a, 0xdc, 0x09, - 0x00, 0x65, 0xcc, 0x58, + 0x00, 0x65, 0xca, 0x58, 0xf7, 0x01, 0x02, 0x08, 0xff, 0x4e, 0xc8, 0x08, 0xbf, 0x60, 0xc0, 0x08, @@ -25,12 +25,12 @@ 0x00, 0x4d, 0x10, 0x70, 0x01, 0x4e, 0x9c, 0x18, 0xbf, 0x60, 0xc0, 0x08, - 0x00, 0x6a, 0xce, 0x5c, + 0x00, 0x6a, 0x86, 0x5c, 0xff, 0x4e, 0xc8, 0x18, - 0x02, 0x6a, 0xb8, 0x5b, + 0x02, 0x6a, 0x70, 0x5b, 0xff, 0x52, 0x20, 0x09, 0x0d, 0x6a, 0x6a, 0x00, - 0x00, 0x52, 0x2e, 0x5c, + 0x00, 0x52, 0xe6, 0x5b, 0x03, 0xb0, 0x52, 0x31, 0xff, 0xb0, 0x52, 0x09, 0xff, 0xb1, 0x54, 0x09, @@ -87,21 +87,20 @@ 0x08, 0x6a, 0x66, 0x58, 0x80, 0x6a, 0x68, 0x00, 0x80, 0x36, 0x6c, 0x00, - 0x00, 0x65, 0x02, 0x5c, + 0x00, 0x65, 0xba, 0x5b, 0xff, 0x3d, 0xc8, 0x08, - 0xbf, 0x64, 0xde, 0x78, - 0xbf, 0x64, 0x88, 0x79, - 0x80, 0x64, 0x10, 0x72, - 0xa0, 0x64, 0x40, 0x72, - 0xc0, 0x64, 0x38, 0x72, - 0xe0, 0x64, 0x80, 0x72, + 0xbf, 0x64, 0xe2, 0x78, + 0x80, 0x64, 0xc8, 0x71, + 0xa0, 0x64, 0xf8, 0x71, + 0xc0, 0x64, 0xf0, 0x71, + 0xe0, 0x64, 0x38, 0x72, 0x01, 0x6a, 0x22, 0x01, 0x00, 0x65, 0xaa, 0x40, 0xf7, 0x11, 0x22, 0x08, - 0x00, 0x65, 0xcc, 0x58, + 0x00, 0x65, 0xca, 0x58, 0xff, 0x06, 0xd4, 0x08, 0xf7, 0x01, 0x02, 0x08, - 0x09, 0x0c, 0xc6, 0x78, + 0x09, 0x0c, 0xc4, 0x78, 0x08, 0x0c, 0x0c, 0x68, 0x01, 0x6a, 0x22, 0x01, 0xff, 0x6a, 0x26, 0x09, @@ -112,411 +111,376 @@ 0xff, 0x6a, 0x6c, 0x0c, 0x04, 0x14, 0x10, 0x31, 0x03, 0xa9, 0x18, 0x31, - 0x00, 0x65, 0xf0, 0x40, - 0xa8, 0x6a, 0x6a, 0x00, - 0x40, 0x3d, 0xe4, 0x68, - 0x04, 0x35, 0x6a, 0x00, - 0x00, 0x65, 0x72, 0x5b, - 0x80, 0x6a, 0xd4, 0x01, - 0x10, 0x36, 0xd8, 0x68, - 0x10, 0x36, 0x6c, 0x00, - 0x07, 0xac, 0x10, 0x31, - 0x05, 0xa3, 0x70, 0x30, - 0xff, 0x38, 0xf8, 0x68, - 0x80, 0x02, 0x04, 0x00, - 0x04, 0x35, 0x6a, 0x08, - 0x03, 0x69, 0x18, 0x31, - 0x22, 0x38, 0xc8, 0x28, - 0x01, 0x38, 0xfe, 0x60, - 0x02, 0x64, 0xc8, 0x00, - 0xff, 0x64, 0xf8, 0x09, - 0xff, 0x35, 0x26, 0x09, - 0x80, 0x02, 0x76, 0x69, - 0x10, 0x0c, 0x3a, 0x69, - 0x80, 0x94, 0x04, 0x79, - 0x01, 0x38, 0x30, 0x71, - 0x80, 0xea, 0x22, 0x61, - 0xef, 0x38, 0xc8, 0x18, - 0x80, 0x6a, 0xc8, 0x00, - 0x00, 0x65, 0x14, 0x49, - 0x33, 0x38, 0xc8, 0x28, - 0xff, 0x64, 0xd0, 0x09, - 0x04, 0x39, 0xc0, 0x31, - 0x09, 0x6a, 0xd6, 0x01, - 0x80, 0xeb, 0x1a, 0x79, - 0xf7, 0xeb, 0xd6, 0x09, - 0x08, 0xeb, 0x1e, 0x69, - 0x01, 0x6a, 0xd6, 0x01, - 0x10, 0x0c, 0x3a, 0x69, - 0xff, 0x38, 0x70, 0x18, - 0x08, 0xe9, 0x10, 0x31, - 0xff, 0x6a, 0xc8, 0x08, - 0x08, 0x39, 0x72, 0x18, - 0x00, 0x3a, 0x74, 0x20, - 0x00, 0x65, 0xf0, 0x40, - 0x10, 0x0c, 0x3a, 0x69, - 0x01, 0xfc, 0x30, 0x79, - 0xff, 0x6a, 0x70, 0x08, - 0x01, 0x0c, 0x36, 0x79, - 0x10, 0x0c, 0xf0, 0x78, - 0x00, 0x65, 0x5c, 0x59, - 0x01, 0xfc, 0x54, 0x69, - 0x40, 0x0d, 0x44, 0x69, - 0xb1, 0x6a, 0x22, 0x01, - 0x00, 0x65, 0x54, 0x41, - 0x2e, 0xfc, 0xa2, 0x28, - 0x3f, 0x38, 0xc8, 0x08, - 0x00, 0x51, 0x54, 0x71, - 0xff, 0x6a, 0xc8, 0x08, - 0xf8, 0x39, 0x72, 0x18, - 0xff, 0x3a, 0x74, 0x20, - 0x01, 0x38, 0x70, 0x18, - 0x00, 0x65, 0x46, 0x41, - 0x03, 0x08, 0x52, 0x31, - 0xff, 0x38, 0x50, 0x09, - 0x12, 0x01, 0x02, 0x00, - 0x00, 0x65, 0xaa, 0x40, - 0x04, 0x93, 0x70, 0x69, - 0xdf, 0x93, 0x26, 0x09, - 0x20, 0x93, 0x60, 0x69, - 0x02, 0x93, 0x26, 0x01, - 0x01, 0x94, 0x64, 0x79, - 0x01, 0x94, 0x64, 0x79, - 0x01, 0x94, 0x64, 0x79, - 0x01, 0x94, 0x64, 0x79, - 0x01, 0x94, 0x64, 0x79, - 0x10, 0x94, 0x6e, 0x69, - 0xd7, 0x93, 0x26, 0x09, - 0x28, 0x93, 0x72, 0x69, - 0xff, 0x6a, 0xd4, 0x0c, - 0x10, 0x0c, 0x76, 0x79, - 0x00, 0x65, 0x5c, 0x59, - 0x7f, 0x02, 0x04, 0x08, - 0xe1, 0x6a, 0x22, 0x01, - 0x00, 0x65, 0xaa, 0x40, 0x03, 0xa9, 0x10, 0x30, 0x08, 0x6a, 0xcc, 0x00, - 0xa9, 0x6a, 0x18, 0x5c, - 0x00, 0x65, 0xa6, 0x41, + 0xa9, 0x6a, 0xd0, 0x5b, + 0x00, 0x65, 0x02, 0x41, + 0xa8, 0x6a, 0x6a, 0x00, 0x79, 0x6a, 0x6a, 0x00, - 0x40, 0x3d, 0x8e, 0x69, + 0x40, 0x3d, 0xea, 0x68, 0x04, 0x35, 0x6a, 0x00, - 0x00, 0x65, 0x72, 0x5b, + 0x00, 0x65, 0x2a, 0x5b, 0x80, 0x6a, 0xd4, 0x01, - 0x10, 0x36, 0x80, 0x69, + 0x10, 0x36, 0xd6, 0x68, 0x10, 0x36, 0x6c, 0x00, 0x07, 0xac, 0x10, 0x31, - 0x03, 0x8c, 0x10, 0x30, 0x05, 0xa3, 0x70, 0x30, + 0x03, 0x8c, 0x10, 0x30, 0x88, 0x6a, 0xcc, 0x00, - 0xac, 0x6a, 0x10, 0x5c, - 0x00, 0x65, 0x0a, 0x5c, + 0xac, 0x6a, 0xc8, 0x5b, + 0x00, 0x65, 0xc2, 0x5b, 0x38, 0x6a, 0xcc, 0x00, - 0xa3, 0x6a, 0x14, 0x5c, - 0xff, 0x38, 0xb4, 0x69, + 0xa3, 0x6a, 0xcc, 0x5b, + 0xff, 0x38, 0x12, 0x69, 0x80, 0x02, 0x04, 0x00, 0xe7, 0x35, 0x6a, 0x08, + 0x03, 0x69, 0x18, 0x31, 0x03, 0x69, 0x10, 0x30, 0xff, 0x6a, 0x10, 0x00, 0xff, 0x6a, 0x12, 0x00, 0xff, 0x6a, 0x14, 0x00, - 0x01, 0x38, 0xb8, 0x61, + 0x22, 0x38, 0xc8, 0x28, + 0x01, 0x38, 0x1c, 0x61, + 0x02, 0x64, 0xc8, 0x00, + 0x01, 0x38, 0x1c, 0x61, 0xbf, 0x35, 0x6a, 0x08, - 0x00, 0x35, 0x52, 0x5b, - 0x80, 0x02, 0x0a, 0x6a, - 0xff, 0x65, 0xfa, 0x79, - 0x01, 0x38, 0xfa, 0x71, + 0xff, 0x64, 0xf8, 0x09, + 0xff, 0x35, 0x26, 0x09, + 0x80, 0x02, 0xa4, 0x69, + 0x10, 0x0c, 0x7a, 0x69, + 0x80, 0x94, 0x22, 0x79, + 0x00, 0x35, 0x0a, 0x5b, + 0x80, 0x02, 0xa4, 0x69, + 0xff, 0x65, 0x94, 0x79, + 0x01, 0x38, 0x70, 0x71, 0xff, 0x38, 0x70, 0x18, - 0x80, 0xea, 0xda, 0x61, + 0xff, 0x38, 0x94, 0x79, + 0x80, 0xea, 0x4a, 0x61, 0xef, 0x38, 0xc8, 0x18, 0x80, 0x6a, 0xc8, 0x00, - 0x00, 0x65, 0xcc, 0x49, + 0x00, 0x65, 0x3c, 0x49, 0x33, 0x38, 0xc8, 0x28, 0xff, 0x64, 0xd0, 0x09, 0x04, 0x39, 0xc0, 0x31, 0x09, 0x6a, 0xd6, 0x01, - 0x80, 0xeb, 0xd2, 0x79, + 0x80, 0xeb, 0x42, 0x79, 0xf7, 0xeb, 0xd6, 0x09, - 0x08, 0xeb, 0xd6, 0x69, + 0x08, 0xeb, 0x46, 0x69, 0x01, 0x6a, 0xd6, 0x01, 0x08, 0xe9, 0x10, 0x31, 0x03, 0x8c, 0x10, 0x30, + 0xff, 0x38, 0x70, 0x18, 0x88, 0x6a, 0xcc, 0x00, - 0x39, 0x6a, 0x16, 0x5c, + 0x39, 0x6a, 0xce, 0x5b, 0x08, 0x6a, 0x18, 0x01, 0xff, 0x6a, 0x1a, 0x09, 0xff, 0x6a, 0x1c, 0x09, 0x0d, 0x93, 0x26, 0x01, - 0x00, 0x65, 0xc0, 0x5c, - 0x88, 0x6a, 0xb2, 0x5c, - 0x00, 0x65, 0x0a, 0x5c, + 0x00, 0x65, 0x78, 0x5c, + 0x88, 0x6a, 0xcc, 0x00, + 0x00, 0x65, 0x6a, 0x5c, + 0x00, 0x65, 0xc2, 0x5b, 0xff, 0x6a, 0xc8, 0x08, 0x08, 0x39, 0x72, 0x18, 0x00, 0x3a, 0x74, 0x20, - 0x01, 0x0c, 0xf6, 0x79, - 0x10, 0x0c, 0xa6, 0x79, + 0x00, 0x65, 0x02, 0x41, + 0x01, 0x0c, 0x6c, 0x79, + 0x10, 0x0c, 0x02, 0x79, + 0x10, 0x0c, 0x7a, 0x69, + 0x01, 0xfc, 0x70, 0x79, 0xff, 0x6a, 0x70, 0x08, + 0x01, 0x0c, 0x76, 0x79, + 0x10, 0x0c, 0x02, 0x79, + 0x00, 0x65, 0xae, 0x59, + 0x01, 0xfc, 0x94, 0x69, + 0x40, 0x0d, 0x84, 0x69, + 0xb1, 0x6a, 0x22, 0x01, + 0x00, 0x65, 0x94, 0x41, + 0x2e, 0xfc, 0xa2, 0x28, + 0x3f, 0x38, 0xc8, 0x08, + 0x00, 0x51, 0x94, 0x71, + 0xff, 0x6a, 0xc8, 0x08, + 0xf8, 0x39, 0x72, 0x18, + 0xff, 0x3a, 0x74, 0x20, + 0x01, 0x38, 0x70, 0x18, + 0x00, 0x65, 0x86, 0x41, 0x03, 0x08, 0x52, 0x31, 0xff, 0x38, 0x50, 0x09, + 0x12, 0x01, 0x02, 0x00, 0xff, 0x08, 0x52, 0x09, 0xff, 0x09, 0x54, 0x09, 0xff, 0x0a, 0x56, 0x09, 0xff, 0x38, 0x50, 0x09, 0x00, 0x65, 0xaa, 0x40, + 0x10, 0x0c, 0xa4, 0x79, + 0x00, 0x65, 0xae, 0x59, 0x7f, 0x02, 0x04, 0x08, 0xe1, 0x6a, 0x22, 0x01, 0x00, 0x65, 0xaa, 0x40, - 0x00, 0x65, 0x72, 0x5b, + 0x04, 0x93, 0xc2, 0x69, + 0xdf, 0x93, 0x26, 0x09, + 0x20, 0x93, 0xb2, 0x69, + 0x02, 0x93, 0x26, 0x01, + 0x01, 0x94, 0xb6, 0x79, + 0x01, 0x94, 0xb6, 0x79, + 0x01, 0x94, 0xb6, 0x79, + 0x01, 0x94, 0xb6, 0x79, + 0x01, 0x94, 0xb6, 0x79, + 0x10, 0x94, 0xc0, 0x69, + 0xd7, 0x93, 0x26, 0x09, + 0x28, 0x93, 0xc4, 0x69, + 0xff, 0x6a, 0xd4, 0x0c, + 0x00, 0x65, 0x2a, 0x5b, 0x05, 0xb4, 0x10, 0x31, 0x02, 0x6a, 0x1a, 0x31, 0x03, 0x8c, 0x10, 0x30, 0x88, 0x6a, 0xcc, 0x00, - 0xb4, 0x6a, 0x14, 0x5c, + 0xb4, 0x6a, 0xcc, 0x5b, 0xff, 0x6a, 0x1a, 0x09, 0xff, 0x6a, 0x1c, 0x09, - 0x00, 0x65, 0x0a, 0x5c, - 0x3d, 0x6a, 0x52, 0x5b, + 0x00, 0x65, 0xc2, 0x5b, + 0x3d, 0x6a, 0x0a, 0x5b, 0xac, 0x6a, 0x26, 0x01, - 0x04, 0x0b, 0x26, 0x6a, - 0x04, 0x0b, 0x2c, 0x6a, - 0x10, 0x0c, 0x28, 0x7a, - 0x02, 0x03, 0x30, 0x7a, - 0x11, 0x0c, 0x2c, 0x7a, + 0x04, 0x0b, 0xde, 0x69, + 0x04, 0x0b, 0xe4, 0x69, + 0x10, 0x0c, 0xe0, 0x79, + 0x02, 0x03, 0xe8, 0x79, + 0x11, 0x0c, 0xe4, 0x79, 0xd7, 0x93, 0x26, 0x09, - 0x28, 0x93, 0x32, 0x6a, + 0x28, 0x93, 0xea, 0x69, 0x12, 0x01, 0x02, 0x00, 0x00, 0x65, 0xaa, 0x40, - 0x00, 0x65, 0x72, 0x5b, + 0x00, 0x65, 0x2a, 0x5b, 0xff, 0x06, 0x44, 0x09, 0x00, 0x65, 0xaa, 0x40, 0x10, 0x3d, 0x06, 0x00, 0xff, 0x34, 0xca, 0x08, - 0x80, 0x65, 0x64, 0x62, + 0x80, 0x65, 0x1c, 0x62, 0x0f, 0xa1, 0xca, 0x08, 0x07, 0xa1, 0xca, 0x08, 0x40, 0xa0, 0xc8, 0x08, 0x00, 0x65, 0xca, 0x00, 0x80, 0x65, 0xca, 0x00, - 0x80, 0xa0, 0x54, 0x7a, + 0x80, 0xa0, 0x0c, 0x7a, 0xff, 0x65, 0x0c, 0x08, - 0x00, 0x65, 0x66, 0x42, - 0x20, 0xa0, 0x6c, 0x7a, + 0x00, 0x65, 0x1e, 0x42, + 0x20, 0xa0, 0x24, 0x7a, 0xff, 0x65, 0x0c, 0x08, - 0x00, 0x65, 0x02, 0x5c, - 0xa0, 0x3d, 0x74, 0x62, + 0x00, 0x65, 0xba, 0x5b, + 0xa0, 0x3d, 0x2c, 0x62, 0x23, 0xa0, 0x0c, 0x08, - 0x00, 0x65, 0x02, 0x5c, - 0xa0, 0x3d, 0x74, 0x62, - 0x00, 0xb9, 0x6c, 0x42, - 0xff, 0x65, 0x6c, 0x62, + 0x00, 0x65, 0xba, 0x5b, + 0xa0, 0x3d, 0x2c, 0x62, + 0x00, 0xb9, 0x24, 0x42, + 0xff, 0x65, 0x24, 0x62, 0xa1, 0x6a, 0x22, 0x01, 0xff, 0x6a, 0xd4, 0x08, - 0x10, 0x51, 0x74, 0x72, + 0x10, 0x51, 0x2c, 0x72, 0x40, 0x6a, 0x18, 0x00, 0xff, 0x65, 0x0c, 0x08, - 0x00, 0x65, 0x02, 0x5c, - 0xa0, 0x3d, 0x3e, 0x72, + 0x00, 0x65, 0xba, 0x5b, + 0xa0, 0x3d, 0xf6, 0x71, 0x40, 0x6a, 0x18, 0x00, 0xff, 0x34, 0xa6, 0x08, - 0x80, 0x34, 0x7c, 0x62, + 0x80, 0x34, 0x34, 0x62, 0x7f, 0xa0, 0x40, 0x09, 0x08, 0x6a, 0x68, 0x00, 0x00, 0x65, 0xaa, 0x40, - 0x64, 0x6a, 0x48, 0x5b, - 0x80, 0x64, 0xf2, 0x6a, - 0x04, 0x64, 0xd4, 0x72, - 0x02, 0x64, 0xda, 0x72, - 0x00, 0x6a, 0x9c, 0x72, - 0x03, 0x64, 0xee, 0x72, - 0x01, 0x64, 0xd0, 0x72, - 0x07, 0x64, 0x30, 0x73, - 0x08, 0x64, 0x98, 0x72, - 0x23, 0x64, 0x34, 0x73, + 0x64, 0x6a, 0x00, 0x5b, + 0x80, 0x64, 0xaa, 0x6a, + 0x04, 0x64, 0x8c, 0x72, + 0x02, 0x64, 0x92, 0x72, + 0x00, 0x6a, 0x54, 0x72, + 0x03, 0x64, 0xa6, 0x72, + 0x01, 0x64, 0x88, 0x72, + 0x07, 0x64, 0xe8, 0x72, + 0x08, 0x64, 0x50, 0x72, + 0x23, 0x64, 0xec, 0x72, 0x11, 0x6a, 0x22, 0x01, - 0x07, 0x6a, 0x3a, 0x5b, + 0x07, 0x6a, 0xf2, 0x5a, 0xff, 0x06, 0xd4, 0x08, 0x00, 0x65, 0xaa, 0x40, - 0xff, 0xa8, 0xa0, 0x6a, - 0xff, 0xa2, 0xb8, 0x7a, + 0xff, 0xa8, 0x58, 0x6a, + 0xff, 0xa2, 0x70, 0x7a, 0x01, 0x6a, 0x6a, 0x00, - 0x00, 0xb9, 0x2e, 0x5c, - 0xff, 0xa2, 0xb8, 0x7a, + 0x00, 0xb9, 0xe6, 0x5b, + 0xff, 0xa2, 0x70, 0x7a, 0x71, 0x6a, 0x22, 0x01, 0xff, 0x6a, 0xd4, 0x08, - 0x40, 0x51, 0xb8, 0x62, + 0x40, 0x51, 0x70, 0x62, 0x0d, 0x6a, 0x6a, 0x00, - 0x00, 0xb9, 0x2e, 0x5c, + 0x00, 0xb9, 0xe6, 0x5b, 0xff, 0x3e, 0x74, 0x09, 0xff, 0x90, 0x7c, 0x08, 0x00, 0x65, 0x4e, 0x58, - 0x00, 0x65, 0xbe, 0x40, - 0x20, 0xa0, 0xc0, 0x6a, + 0x00, 0x65, 0xbc, 0x40, + 0x20, 0xa0, 0x78, 0x6a, 0xff, 0x37, 0xc8, 0x08, - 0x00, 0x6a, 0xd8, 0x5b, - 0xff, 0x6a, 0xee, 0x5b, + 0x00, 0x6a, 0x90, 0x5b, + 0xff, 0x6a, 0xa6, 0x5b, 0xff, 0xf8, 0xc8, 0x08, 0xff, 0x4f, 0xc8, 0x08, - 0x01, 0x6a, 0xd8, 0x5b, - 0x00, 0xb9, 0xee, 0x5b, + 0x01, 0x6a, 0x90, 0x5b, + 0x00, 0xb9, 0xa6, 0x5b, 0x01, 0x4f, 0x9e, 0x18, 0x02, 0x6a, 0x22, 0x01, - 0x00, 0x65, 0xc8, 0x5c, - 0x00, 0x65, 0xbe, 0x40, + 0x00, 0x65, 0x80, 0x5c, + 0x00, 0x65, 0xbc, 0x40, 0x41, 0x6a, 0x22, 0x01, 0x00, 0x65, 0xaa, 0x40, 0x04, 0xa0, 0x40, 0x01, - 0x00, 0x65, 0xe0, 0x5c, - 0x00, 0x65, 0xbe, 0x40, - 0x10, 0x36, 0x98, 0x7a, + 0x00, 0x65, 0x98, 0x5c, + 0x00, 0x65, 0xbc, 0x40, + 0x10, 0x36, 0x50, 0x7a, 0x05, 0x38, 0x46, 0x31, 0x04, 0x14, 0x58, 0x31, 0x03, 0xa9, 0x60, 0x31, 0xa3, 0x6a, 0xcc, 0x00, - 0x38, 0x6a, 0x14, 0x5c, + 0x38, 0x6a, 0xcc, 0x5b, 0xac, 0x6a, 0xcc, 0x00, - 0x14, 0x6a, 0x16, 0x5c, - 0xa9, 0x6a, 0x18, 0x5c, - 0x00, 0x65, 0x98, 0x42, + 0x14, 0x6a, 0xce, 0x5b, + 0xa9, 0x6a, 0xd0, 0x5b, + 0x00, 0x65, 0x50, 0x42, 0xef, 0x36, 0x6c, 0x08, - 0x00, 0x65, 0x98, 0x42, + 0x00, 0x65, 0x50, 0x42, 0x0f, 0x64, 0xc8, 0x08, 0x07, 0x64, 0xc8, 0x08, 0x00, 0x37, 0x6e, 0x00, 0xff, 0x6a, 0xa4, 0x00, - 0x00, 0x65, 0xa8, 0x5b, - 0xff, 0x51, 0x04, 0x73, - 0x20, 0x36, 0x0e, 0x7b, - 0x00, 0x90, 0x96, 0x5b, - 0x00, 0x65, 0x10, 0x43, + 0x00, 0x65, 0x60, 0x5b, + 0xff, 0x51, 0xbc, 0x72, + 0x20, 0x36, 0xc6, 0x7a, + 0x00, 0x90, 0x4e, 0x5b, + 0x00, 0x65, 0xc8, 0x42, 0xff, 0x06, 0xd4, 0x08, - 0x00, 0x65, 0x02, 0x5c, - 0xe0, 0x3d, 0x2a, 0x63, - 0x20, 0x12, 0x2a, 0x63, - 0x51, 0x6a, 0x3e, 0x5b, - 0x00, 0x65, 0x90, 0x5b, + 0x00, 0x65, 0xba, 0x5b, + 0xe0, 0x3d, 0xe2, 0x62, + 0x20, 0x12, 0xe2, 0x62, + 0x51, 0x6a, 0xf6, 0x5a, + 0x00, 0x65, 0x48, 0x5b, 0xff, 0x37, 0xc8, 0x08, - 0x00, 0xa1, 0x22, 0x63, - 0x04, 0xa0, 0x22, 0x7b, + 0x00, 0xa1, 0xda, 0x62, + 0x04, 0xa0, 0xda, 0x7a, 0xfb, 0xa0, 0x40, 0x09, 0x80, 0x36, 0x6c, 0x00, - 0x80, 0xa0, 0x98, 0x7a, + 0x80, 0xa0, 0x50, 0x7a, 0x7f, 0xa0, 0x40, 0x09, - 0xff, 0x6a, 0x3a, 0x5b, - 0x00, 0x65, 0x98, 0x42, - 0x04, 0xa0, 0x28, 0x7b, - 0x00, 0x65, 0xe0, 0x5c, - 0x00, 0x65, 0x2a, 0x43, - 0x00, 0x65, 0xc8, 0x5c, + 0xff, 0x6a, 0xf2, 0x5a, + 0x00, 0x65, 0x50, 0x42, + 0x04, 0xa0, 0xe0, 0x7a, + 0x00, 0x65, 0x98, 0x5c, + 0x00, 0x65, 0xe2, 0x42, + 0x00, 0x65, 0x80, 0x5c, 0x31, 0x6a, 0x22, 0x01, - 0x0c, 0x6a, 0x3a, 0x5b, - 0x00, 0x65, 0x98, 0x42, + 0x0c, 0x6a, 0xf2, 0x5a, + 0x00, 0x65, 0x50, 0x42, 0x61, 0x6a, 0x22, 0x01, - 0x00, 0x65, 0x98, 0x42, - 0x51, 0x6a, 0x3e, 0x5b, + 0x00, 0x65, 0x50, 0x42, + 0x51, 0x6a, 0xf6, 0x5a, 0x51, 0x6a, 0x22, 0x01, - 0x00, 0x65, 0x98, 0x42, + 0x00, 0x65, 0x50, 0x42, 0x10, 0x3d, 0x06, 0x00, 0xff, 0x65, 0x68, 0x0c, 0xff, 0x06, 0xd4, 0x08, - 0x01, 0x0c, 0x40, 0x7b, - 0x04, 0x0c, 0x42, 0x6b, + 0x01, 0x0c, 0xf8, 0x7a, + 0x04, 0x0c, 0xfa, 0x6a, 0xe0, 0x03, 0x7a, 0x08, - 0xe0, 0x3d, 0x4e, 0x63, + 0xe0, 0x3d, 0x06, 0x63, 0xff, 0x65, 0xcc, 0x08, 0xff, 0x12, 0xda, 0x0c, 0xff, 0x06, 0xd4, 0x0c, 0xd1, 0x6a, 0x22, 0x01, 0x00, 0x65, 0xaa, 0x40, 0xff, 0x65, 0x26, 0x09, - 0x01, 0x0b, 0x62, 0x6b, - 0x10, 0x0c, 0x54, 0x7b, - 0x04, 0x0b, 0x5c, 0x6b, + 0x01, 0x0b, 0x1a, 0x6b, + 0x10, 0x0c, 0x0c, 0x7b, + 0x04, 0x0b, 0x14, 0x6b, 0xff, 0x6a, 0xca, 0x08, - 0x04, 0x93, 0x60, 0x6b, - 0x01, 0x94, 0x5e, 0x7b, - 0x10, 0x94, 0x60, 0x6b, - 0x80, 0x3d, 0x66, 0x73, - 0x0f, 0x04, 0x6a, 0x6b, - 0x02, 0x03, 0x6a, 0x7b, - 0x11, 0x0c, 0x66, 0x7b, + 0x04, 0x93, 0x18, 0x6b, + 0x01, 0x94, 0x16, 0x7b, + 0x10, 0x94, 0x18, 0x6b, + 0x80, 0x3d, 0x1e, 0x73, + 0x0f, 0x04, 0x22, 0x6b, + 0x02, 0x03, 0x22, 0x7b, + 0x11, 0x0c, 0x1e, 0x7b, 0xc7, 0x93, 0x26, 0x09, 0xff, 0x99, 0xd4, 0x08, - 0x38, 0x93, 0x6c, 0x6b, + 0x38, 0x93, 0x24, 0x6b, 0xff, 0x6a, 0xd4, 0x0c, - 0x80, 0x36, 0x70, 0x6b, + 0x80, 0x36, 0x28, 0x6b, 0x21, 0x6a, 0x22, 0x05, 0xff, 0x65, 0x20, 0x09, - 0xff, 0x51, 0x7e, 0x63, + 0xff, 0x51, 0x36, 0x63, 0xff, 0x37, 0xc8, 0x08, - 0xa1, 0x6a, 0x8a, 0x43, + 0xa1, 0x6a, 0x42, 0x43, 0xff, 0x51, 0xc8, 0x08, - 0xb9, 0x6a, 0x8a, 0x43, + 0xb9, 0x6a, 0x42, 0x43, 0xff, 0x90, 0xa4, 0x08, - 0xff, 0xba, 0x8e, 0x73, + 0xff, 0xba, 0x46, 0x73, 0xff, 0xba, 0x20, 0x09, 0xff, 0x65, 0xca, 0x18, - 0x00, 0x6c, 0x82, 0x63, + 0x00, 0x6c, 0x3a, 0x63, 0xff, 0x90, 0xca, 0x0c, 0xff, 0x6a, 0xca, 0x04, - 0x20, 0x36, 0xa2, 0x7b, - 0x00, 0x90, 0x76, 0x5b, - 0xff, 0x65, 0xa2, 0x73, - 0xff, 0x52, 0xa0, 0x73, + 0x20, 0x36, 0x5a, 0x7b, + 0x00, 0x90, 0x2e, 0x5b, + 0xff, 0x65, 0x5a, 0x73, + 0xff, 0x52, 0x58, 0x73, 0xff, 0xba, 0xcc, 0x08, 0xff, 0x52, 0x20, 0x09, 0xff, 0x66, 0x74, 0x09, 0xff, 0x65, 0x20, 0x0d, 0xff, 0xba, 0x7e, 0x0c, - 0x00, 0x6a, 0xce, 0x5c, + 0x00, 0x6a, 0x86, 0x5c, 0x0d, 0x6a, 0x6a, 0x00, - 0x00, 0x51, 0x2e, 0x44, - 0xff, 0x3f, 0xfc, 0x73, + 0x00, 0x51, 0xe6, 0x43, + 0xff, 0x3f, 0xb4, 0x73, 0xff, 0x6a, 0xa2, 0x00, - 0x00, 0x3f, 0x76, 0x5b, - 0xff, 0x65, 0xfc, 0x73, + 0x00, 0x3f, 0x2e, 0x5b, + 0xff, 0x65, 0xb4, 0x73, 0x20, 0x36, 0x6c, 0x00, - 0x20, 0xa0, 0xb6, 0x6b, + 0x20, 0xa0, 0x6e, 0x6b, 0xff, 0xb9, 0xa2, 0x0c, 0xff, 0x6a, 0xa2, 0x04, 0xff, 0x65, 0xa4, 0x08, 0xe0, 0x6a, 0xcc, 0x00, - 0x45, 0x6a, 0x22, 0x5c, + 0x45, 0x6a, 0xda, 0x5b, 0x01, 0x6a, 0xd0, 0x01, 0x09, 0x6a, 0xd6, 0x01, - 0x80, 0xeb, 0xc2, 0x7b, + 0x80, 0xeb, 0x7a, 0x7b, 0x01, 0x6a, 0xd6, 0x01, 0x01, 0xe9, 0xa4, 0x34, 0x88, 0x6a, 0xcc, 0x00, - 0x45, 0x6a, 0x22, 0x5c, + 0x45, 0x6a, 0xda, 0x5b, 0x01, 0x6a, 0x18, 0x01, 0xff, 0x6a, 0x1a, 0x09, 0xff, 0x6a, 0x1c, 0x09, 0x0d, 0x6a, 0x26, 0x01, - 0x00, 0x65, 0xc0, 0x5c, + 0x00, 0x65, 0x78, 0x5c, 0xff, 0x99, 0xa4, 0x0c, 0xff, 0x65, 0xa4, 0x08, 0xe0, 0x6a, 0xcc, 0x00, - 0x45, 0x6a, 0x22, 0x5c, + 0x45, 0x6a, 0xda, 0x5b, 0x01, 0x6a, 0xd0, 0x01, 0x01, 0x6a, 0xdc, 0x05, 0x88, 0x6a, 0xcc, 0x00, - 0x45, 0x6a, 0x22, 0x5c, + 0x45, 0x6a, 0xda, 0x5b, 0x01, 0x6a, 0x18, 0x01, 0xff, 0x6a, 0x1a, 0x09, 0xff, 0x6a, 0x1c, 0x09, 0x01, 0x6a, 0x26, 0x05, 0x01, 0x65, 0xd8, 0x31, 0x09, 0xee, 0xdc, 0x01, - 0x80, 0xee, 0xf2, 0x7b, + 0x80, 0xee, 0xaa, 0x7b, 0xff, 0x6a, 0xdc, 0x0d, 0xff, 0x65, 0x32, 0x09, 0x0a, 0x93, 0x26, 0x01, - 0x00, 0x65, 0xc0, 0x44, + 0x00, 0x65, 0x78, 0x44, 0xff, 0x37, 0xc8, 0x08, - 0x00, 0x6a, 0xb8, 0x5b, + 0x00, 0x6a, 0x70, 0x5b, 0xff, 0x52, 0xa2, 0x0c, - 0x01, 0x0c, 0x02, 0x7c, - 0x04, 0x0c, 0x02, 0x6c, + 0x01, 0x0c, 0xba, 0x7b, + 0x04, 0x0c, 0xba, 0x6b, 0xe0, 0x03, 0x06, 0x08, 0xe0, 0x03, 0x7a, 0x0c, 0xff, 0x8c, 0x10, 0x08, @@ -539,34 +503,34 @@ 0x00, 0x6c, 0xda, 0x24, 0xff, 0x65, 0xc8, 0x08, 0xe0, 0x6a, 0xcc, 0x00, - 0x41, 0x6a, 0x1e, 0x5c, + 0x41, 0x6a, 0xd6, 0x5b, 0xff, 0x90, 0xe2, 0x09, 0x20, 0x6a, 0xd0, 0x01, - 0x04, 0x35, 0x40, 0x7c, + 0x04, 0x35, 0xf8, 0x7b, 0x1d, 0x6a, 0xdc, 0x01, - 0xdc, 0xee, 0x3c, 0x64, - 0x00, 0x65, 0x56, 0x44, + 0xdc, 0xee, 0xf4, 0x63, + 0x00, 0x65, 0x0e, 0x44, 0x01, 0x6a, 0xdc, 0x01, 0x20, 0xa0, 0xd8, 0x31, 0x09, 0xee, 0xdc, 0x01, - 0x80, 0xee, 0x46, 0x7c, + 0x80, 0xee, 0xfe, 0x7b, 0x11, 0x6a, 0xdc, 0x01, - 0x50, 0xee, 0x4a, 0x64, + 0x50, 0xee, 0x02, 0x64, 0x20, 0x6a, 0xd0, 0x01, 0x09, 0x6a, 0xdc, 0x01, - 0x88, 0xee, 0x50, 0x64, + 0x88, 0xee, 0x08, 0x64, 0x19, 0x6a, 0xdc, 0x01, - 0xd8, 0xee, 0x54, 0x64, + 0xd8, 0xee, 0x0c, 0x64, 0xff, 0x6a, 0xdc, 0x09, - 0x18, 0xee, 0x58, 0x6c, + 0x18, 0xee, 0x10, 0x6c, 0xff, 0x6a, 0xd4, 0x0c, 0x88, 0x6a, 0xcc, 0x00, - 0x41, 0x6a, 0x1e, 0x5c, + 0x41, 0x6a, 0xd6, 0x5b, 0x20, 0x6a, 0x18, 0x01, 0xff, 0x6a, 0x1a, 0x09, 0xff, 0x6a, 0x1c, 0x09, 0xff, 0x35, 0x26, 0x09, - 0x04, 0x35, 0x84, 0x6c, + 0x04, 0x35, 0x3c, 0x6c, 0xa0, 0x6a, 0xca, 0x00, 0x20, 0x65, 0xc8, 0x18, 0xff, 0x6c, 0x32, 0x09, @@ -577,31 +541,31 @@ 0xff, 0x6c, 0x32, 0x09, 0xff, 0x6c, 0x32, 0x09, 0xff, 0x6c, 0x32, 0x09, - 0x00, 0x65, 0x6e, 0x64, + 0x00, 0x65, 0x26, 0x64, 0x0a, 0x93, 0x26, 0x01, - 0x00, 0x65, 0xc0, 0x44, + 0x00, 0x65, 0x78, 0x44, 0xa0, 0x6a, 0xcc, 0x00, 0xe8, 0x6a, 0xc8, 0x00, - 0x01, 0x94, 0x88, 0x6c, - 0x10, 0x94, 0x8a, 0x6c, - 0x08, 0x94, 0x9c, 0x6c, - 0x08, 0x94, 0x9c, 0x6c, - 0x08, 0x94, 0x9c, 0x6c, - 0x00, 0x65, 0xb0, 0x5c, + 0x01, 0x94, 0x40, 0x6c, + 0x10, 0x94, 0x42, 0x6c, + 0x08, 0x94, 0x54, 0x6c, + 0x08, 0x94, 0x54, 0x6c, + 0x08, 0x94, 0x54, 0x6c, + 0x00, 0x65, 0x68, 0x5c, 0x08, 0x64, 0xc8, 0x18, 0x00, 0x8c, 0xca, 0x18, - 0x00, 0x65, 0x92, 0x4c, - 0x00, 0x65, 0x88, 0x44, + 0x00, 0x65, 0x4a, 0x4c, + 0x00, 0x65, 0x40, 0x44, 0xf7, 0x93, 0x26, 0x09, - 0x08, 0x93, 0x9e, 0x6c, - 0x00, 0x65, 0xb0, 0x5c, + 0x08, 0x93, 0x56, 0x6c, + 0x00, 0x65, 0x68, 0x5c, 0x08, 0x64, 0xc8, 0x18, - 0x08, 0x64, 0xa0, 0x64, + 0x08, 0x64, 0x58, 0x64, 0xff, 0x6a, 0xd4, 0x0c, - 0x00, 0x65, 0xc0, 0x5c, - 0x00, 0x65, 0xb0, 0x5c, - 0x00, 0x65, 0xb0, 0x5c, - 0x00, 0x65, 0xb0, 0x5c, + 0x00, 0x65, 0x78, 0x5c, + 0x00, 0x65, 0x68, 0x5c, + 0x00, 0x65, 0x68, 0x5c, + 0x00, 0x65, 0x68, 0x5c, 0xff, 0x99, 0xda, 0x08, 0xff, 0x99, 0xda, 0x08, 0xff, 0x99, 0xda, 0x08, @@ -610,19 +574,19 @@ 0xff, 0x99, 0xda, 0x08, 0xff, 0x99, 0xda, 0x08, 0xff, 0x99, 0xda, 0x0c, - 0x08, 0x94, 0xc0, 0x7c, + 0x08, 0x94, 0x78, 0x7c, 0xf7, 0x93, 0x26, 0x09, - 0x08, 0x93, 0xc4, 0x6c, + 0x08, 0x93, 0x7c, 0x6c, 0xff, 0x6a, 0xd4, 0x0c, 0xff, 0x40, 0x74, 0x09, 0xff, 0x90, 0x80, 0x08, 0xff, 0x6a, 0x72, 0x05, - 0xff, 0x40, 0xdc, 0x64, - 0xff, 0x3f, 0xd4, 0x64, + 0xff, 0x40, 0x94, 0x64, + 0xff, 0x3f, 0x8c, 0x64, 0xff, 0x6a, 0xca, 0x04, 0xff, 0x3f, 0x20, 0x09, 0x01, 0x6a, 0x6a, 0x00, - 0x00, 0xb9, 0x2e, 0x5c, + 0x00, 0xb9, 0xe6, 0x5b, 0xff, 0xba, 0x7e, 0x0c, 0xff, 0x40, 0x20, 0x09, 0xff, 0xba, 0x80, 0x0c, @@ -630,12 +594,20 @@ 0xff, 0x90, 0x7e, 0x0c, }; +static int aic7xxx_patch15_func(struct aic7xxx_host *p); + +static int +aic7xxx_patch15_func(struct aic7xxx_host *p) +{ + return ((p->bugs & AHC_BUG_SCBCHAN_UPLOAD) != 0); +} + static int aic7xxx_patch14_func(struct aic7xxx_host *p); static int aic7xxx_patch14_func(struct aic7xxx_host *p) { - return ((p->bugs & AHC_BUG_SCBCHAN_UPLOAD) != 0); + return ((p->bugs & AHC_BUG_PCI_2_1_RETRY) != 0); } static int aic7xxx_patch13_func(struct aic7xxx_host *p); @@ -643,7 +615,7 @@ static int aic7xxx_patch13_func(struct aic7xxx_host *p) { - return ((p->features & AHC_CMD_CHAN) == 0); + return ((p->features & AHC_WIDE) != 0); } static int aic7xxx_patch12_func(struct aic7xxx_host *p); @@ -651,7 +623,7 @@ static int aic7xxx_patch12_func(struct aic7xxx_host *p) { - return ((p->bugs & AHC_BUG_PCI_2_1_RETRY) != 0); + return ((p->bugs & AHC_BUG_AUTOFLUSH) != 0); } static int aic7xxx_patch11_func(struct aic7xxx_host *p); @@ -659,7 +631,7 @@ static int aic7xxx_patch11_func(struct aic7xxx_host *p) { - return ((p->features & AHC_WIDE) != 0); + return ((p->features & AHC_ULTRA2) == 0); } static int aic7xxx_patch10_func(struct aic7xxx_host *p); @@ -667,7 +639,7 @@ static int aic7xxx_patch10_func(struct aic7xxx_host *p) { - return ((p->features & AHC_ULTRA2) == 0); + return ((p->features & AHC_CMD_CHAN) == 0); } static int aic7xxx_patch9_func(struct aic7xxx_host *p); @@ -675,7 +647,7 @@ static int aic7xxx_patch9_func(struct aic7xxx_host *p) { - return ((p->bugs & AHC_BUG_AUTOFLUSH) != 0); + return ((p->chip & AHC_CHIPID_MASK) == AHC_AIC7895); } static int aic7xxx_patch8_func(struct aic7xxx_host *p); @@ -772,59 +744,74 @@ { aic7xxx_patch8_func, 52, 7, 1 }, { aic7xxx_patch3_func, 60, 3, 1 }, { aic7xxx_patch7_func, 63, 2, 1 }, - { aic7xxx_patch7_func, 87, 1, 2 }, - { aic7xxx_patch0_func, 88, 1, 1 }, - { aic7xxx_patch7_func, 103, 1, 2 }, - { aic7xxx_patch0_func, 104, 2, 1 }, - { aic7xxx_patch7_func, 108, 84, 15 }, - { aic7xxx_patch9_func, 177, 1, 1 }, - { aic7xxx_patch9_func, 178, 4, 1 }, - { aic7xxx_patch0_func, 192, 72, 12 }, - { aic7xxx_patch1_func, 192, 1, 2 }, - { aic7xxx_patch0_func, 193, 2, 1 }, - { aic7xxx_patch1_func, 200, 1, 1 }, - { aic7xxx_patch1_func, 203, 3, 2 }, - { aic7xxx_patch0_func, 206, 5, 1 }, - { aic7xxx_patch1_func, 214, 1, 2 }, - { aic7xxx_patch0_func, 215, 3, 1 }, - { aic7xxx_patch1_func, 225, 14, 2 }, - { aic7xxx_patch0_func, 239, 9, 1 }, - { aic7xxx_patch1_func, 254, 2, 2 }, - { aic7xxx_patch0_func, 256, 4, 1 }, - { aic7xxx_patch1_func, 265, 3, 3 }, - { aic7xxx_patch10_func, 267, 1, 1 }, - { aic7xxx_patch0_func, 268, 5, 1 }, - { aic7xxx_patch10_func, 273, 1, 2 }, - { aic7xxx_patch0_func, 274, 9, 1 }, - { aic7xxx_patch11_func, 290, 1, 2 }, - { aic7xxx_patch0_func, 291, 1, 1 }, - { aic7xxx_patch4_func, 352, 1, 2 }, - { aic7xxx_patch0_func, 353, 1, 1 }, - { aic7xxx_patch2_func, 356, 1, 1 }, - { aic7xxx_patch1_func, 366, 3, 2 }, - { aic7xxx_patch0_func, 369, 5, 1 }, - { aic7xxx_patch11_func, 377, 1, 2 }, - { aic7xxx_patch0_func, 378, 1, 1 }, - { aic7xxx_patch5_func, 383, 1, 1 }, - { aic7xxx_patch10_func, 425, 15, 2 }, - { aic7xxx_patch12_func, 438, 1, 1 }, - { aic7xxx_patch1_func, 477, 7, 2 }, - { aic7xxx_patch0_func, 484, 8, 1 }, - { aic7xxx_patch1_func, 493, 4, 2 }, - { aic7xxx_patch0_func, 497, 6, 1 }, - { aic7xxx_patch1_func, 503, 4, 2 }, - { aic7xxx_patch0_func, 507, 3, 1 }, - { aic7xxx_patch13_func, 517, 10, 1 }, - { aic7xxx_patch1_func, 536, 22, 8 }, - { aic7xxx_patch10_func, 544, 4, 4 }, - { aic7xxx_patch0_func, 548, 7, 3 }, - { aic7xxx_patch14_func, 548, 5, 2 }, - { aic7xxx_patch0_func, 553, 2, 1 }, - { aic7xxx_patch0_func, 558, 50, 3 }, - { aic7xxx_patch12_func, 579, 17, 2 }, - { aic7xxx_patch0_func, 596, 4, 1 }, - { aic7xxx_patch13_func, 608, 4, 1 }, - { aic7xxx_patch5_func, 612, 2, 1 }, - { aic7xxx_patch5_func, 615, 9, 1 }, + { aic7xxx_patch7_func, 102, 1, 2 }, + { aic7xxx_patch0_func, 103, 2, 1 }, + { aic7xxx_patch7_func, 107, 2, 1 }, + { aic7xxx_patch9_func, 109, 1, 1 }, + { aic7xxx_patch10_func, 110, 2, 1 }, + { aic7xxx_patch7_func, 113, 1, 2 }, + { aic7xxx_patch0_func, 114, 1, 1 }, + { aic7xxx_patch1_func, 118, 1, 1 }, + { aic7xxx_patch1_func, 121, 3, 3 }, + { aic7xxx_patch11_func, 123, 1, 1 }, + { aic7xxx_patch0_func, 124, 5, 1 }, + { aic7xxx_patch7_func, 132, 1, 1 }, + { aic7xxx_patch9_func, 133, 1, 1 }, + { aic7xxx_patch10_func, 134, 3, 1 }, + { aic7xxx_patch7_func, 137, 3, 2 }, + { aic7xxx_patch0_func, 140, 2, 1 }, + { aic7xxx_patch7_func, 142, 5, 2 }, + { aic7xxx_patch0_func, 147, 3, 1 }, + { aic7xxx_patch7_func, 150, 1, 2 }, + { aic7xxx_patch0_func, 151, 2, 1 }, + { aic7xxx_patch1_func, 153, 15, 4 }, + { aic7xxx_patch11_func, 166, 1, 2 }, + { aic7xxx_patch0_func, 167, 1, 1 }, + { aic7xxx_patch0_func, 168, 10, 1 }, + { aic7xxx_patch7_func, 181, 1, 2 }, + { aic7xxx_patch0_func, 182, 2, 1 }, + { aic7xxx_patch7_func, 184, 18, 1 }, + { aic7xxx_patch1_func, 202, 3, 3 }, + { aic7xxx_patch7_func, 204, 1, 1 }, + { aic7xxx_patch0_func, 205, 4, 1 }, + { aic7xxx_patch7_func, 210, 2, 1 }, + { aic7xxx_patch7_func, 215, 13, 3 }, + { aic7xxx_patch12_func, 218, 1, 1 }, + { aic7xxx_patch12_func, 219, 4, 1 }, + { aic7xxx_patch1_func, 229, 3, 3 }, + { aic7xxx_patch11_func, 231, 1, 1 }, + { aic7xxx_patch0_func, 232, 5, 1 }, + { aic7xxx_patch11_func, 237, 1, 2 }, + { aic7xxx_patch0_func, 238, 9, 1 }, + { aic7xxx_patch13_func, 254, 1, 2 }, + { aic7xxx_patch0_func, 255, 1, 1 }, + { aic7xxx_patch4_func, 316, 1, 2 }, + { aic7xxx_patch0_func, 317, 1, 1 }, + { aic7xxx_patch2_func, 320, 1, 1 }, + { aic7xxx_patch1_func, 330, 3, 2 }, + { aic7xxx_patch0_func, 333, 5, 1 }, + { aic7xxx_patch13_func, 341, 1, 2 }, + { aic7xxx_patch0_func, 342, 1, 1 }, + { aic7xxx_patch5_func, 347, 1, 1 }, + { aic7xxx_patch11_func, 389, 15, 2 }, + { aic7xxx_patch14_func, 402, 1, 1 }, + { aic7xxx_patch1_func, 441, 7, 2 }, + { aic7xxx_patch0_func, 448, 8, 1 }, + { aic7xxx_patch1_func, 457, 4, 2 }, + { aic7xxx_patch0_func, 461, 6, 1 }, + { aic7xxx_patch1_func, 467, 4, 2 }, + { aic7xxx_patch0_func, 471, 3, 1 }, + { aic7xxx_patch10_func, 481, 10, 1 }, + { aic7xxx_patch1_func, 500, 22, 5 }, + { aic7xxx_patch11_func, 508, 4, 1 }, + { aic7xxx_patch7_func, 512, 7, 3 }, + { aic7xxx_patch15_func, 512, 5, 2 }, + { aic7xxx_patch0_func, 517, 2, 1 }, + { aic7xxx_patch10_func, 522, 50, 3 }, + { aic7xxx_patch14_func, 543, 17, 2 }, + { aic7xxx_patch0_func, 560, 4, 1 }, + { aic7xxx_patch10_func, 572, 4, 1 }, + { aic7xxx_patch5_func, 576, 2, 1 }, + { aic7xxx_patch5_func, 579, 9, 1 }, }; diff -U3 -rN scsi.save/aic7xxx.c scsi/aic7xxx.c --- scsi.save/aic7xxx.c Wed Feb 7 15:07:22 2001 +++ scsi/aic7xxx.c Wed Feb 7 23:18:29 2001 @@ -270,7 +270,7 @@ 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; -#define AIC7XXX_C_VERSION "5.2.2" +#define AIC7XXX_C_VERSION "5.2.3" #define NUMBER(arr) (sizeof(arr) / sizeof(arr[0])) #define MIN(a,b) (((a) < (b)) ? (a) : (b))

--------------6A33B4C30FDEDC5E1C023ADD--

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/