diff options
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx.reg | 29 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx.seq | 143 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_core.c | 260 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_inline.h | 7 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.h | 2 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm_pci.c | 17 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_reg.h_shipped | 27 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped | 21 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_seq.h_shipped | 881 |
9 files changed, 834 insertions, 553 deletions
diff --git a/drivers/scsi/aic7xxx/aic79xx.reg b/drivers/scsi/aic7xxx/aic79xx.reg index 3a3204703b15..be14e2ecb8f7 100644 --- a/drivers/scsi/aic7xxx/aic79xx.reg +++ b/drivers/scsi/aic7xxx/aic79xx.reg | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Aic79xx register and scratch ram definitions. | 2 | * Aic79xx register and scratch ram definitions. |
3 | * | 3 | * |
4 | * Copyright (c) 1994-2001 Justin T. Gibbs. | 4 | * Copyright (c) 1994-2001, 2004 Justin T. Gibbs. |
5 | * Copyright (c) 2000-2002 Adaptec Inc. | 5 | * Copyright (c) 2000-2002 Adaptec Inc. |
6 | * All rights reserved. | 6 | * All rights reserved. |
7 | * | 7 | * |
@@ -39,7 +39,7 @@ | |||
39 | * | 39 | * |
40 | * $FreeBSD$ | 40 | * $FreeBSD$ |
41 | */ | 41 | */ |
42 | VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#76 $" | 42 | VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#77 $" |
43 | 43 | ||
44 | /* | 44 | /* |
45 | * This file is processed by the aic7xxx_asm utility for use in assembling | 45 | * This file is processed by the aic7xxx_asm utility for use in assembling |
@@ -3715,8 +3715,9 @@ scratch_ram { | |||
3715 | 3715 | ||
3716 | SEQ_FLAGS2 { | 3716 | SEQ_FLAGS2 { |
3717 | size 1 | 3717 | size 1 |
3718 | field TARGET_MSG_PENDING 0x02 | 3718 | field PENDING_MK_MESSAGE 0x01 |
3719 | field SELECTOUT_QFROZEN 0x04 | 3719 | field TARGET_MSG_PENDING 0x02 |
3720 | field SELECTOUT_QFROZEN 0x04 | ||
3720 | } | 3721 | } |
3721 | 3722 | ||
3722 | ALLOCFIFO_SCBPTR { | 3723 | ALLOCFIFO_SCBPTR { |
@@ -3777,6 +3778,26 @@ scratch_ram { | |||
3777 | CMDSIZE_TABLE { | 3778 | CMDSIZE_TABLE { |
3778 | size 8 | 3779 | size 8 |
3779 | } | 3780 | } |
3781 | /* | ||
3782 | * When an SCB with the MK_MESSAGE flag is | ||
3783 | * queued to the controller, it cannot enter | ||
3784 | * the waiting for selection list until the | ||
3785 | * selections for any previously queued | ||
3786 | * commands to that target complete. During | ||
3787 | * the wait, the MK_MESSAGE SCB is queued | ||
3788 | * here. | ||
3789 | */ | ||
3790 | MK_MESSAGE_SCB { | ||
3791 | size 2 | ||
3792 | } | ||
3793 | /* | ||
3794 | * Saved SCSIID of MK_MESSAGE_SCB to avoid | ||
3795 | * an extra SCBPTR operation when deciding | ||
3796 | * if the MK_MESSAGE_SCB can be run. | ||
3797 | */ | ||
3798 | MK_MESSAGE_SCSIID { | ||
3799 | size 1 | ||
3800 | } | ||
3780 | } | 3801 | } |
3781 | 3802 | ||
3782 | /************************* Hardware SCB Definition ****************************/ | 3803 | /************************* Hardware SCB Definition ****************************/ |
diff --git a/drivers/scsi/aic7xxx/aic79xx.seq b/drivers/scsi/aic7xxx/aic79xx.seq index bef1f9d369b6..58bc17591b54 100644 --- a/drivers/scsi/aic7xxx/aic79xx.seq +++ b/drivers/scsi/aic7xxx/aic79xx.seq | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Adaptec U320 device driver firmware for Linux and FreeBSD. | 2 | * Adaptec U320 device driver firmware for Linux and FreeBSD. |
3 | * | 3 | * |
4 | * Copyright (c) 1994-2001 Justin T. Gibbs. | 4 | * Copyright (c) 1994-2001, 2004 Justin T. Gibbs. |
5 | * Copyright (c) 2000-2002 Adaptec Inc. | 5 | * Copyright (c) 2000-2002 Adaptec Inc. |
6 | * All rights reserved. | 6 | * All rights reserved. |
7 | * | 7 | * |
@@ -40,7 +40,7 @@ | |||
40 | * $FreeBSD$ | 40 | * $FreeBSD$ |
41 | */ | 41 | */ |
42 | 42 | ||
43 | VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#119 $" | 43 | VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#120 $" |
44 | PATCH_ARG_LIST = "struct ahd_softc *ahd" | 44 | PATCH_ARG_LIST = "struct ahd_softc *ahd" |
45 | PREFIX = "ahd_" | 45 | PREFIX = "ahd_" |
46 | 46 | ||
@@ -110,10 +110,8 @@ check_waiting_list: | |||
110 | * one last time. | 110 | * one last time. |
111 | */ | 111 | */ |
112 | test SSTAT0, SELDO jnz select_out; | 112 | test SSTAT0, SELDO jnz select_out; |
113 | END_CRITICAL; | ||
114 | call start_selection; | 113 | call start_selection; |
115 | idle_loop_checkbus: | 114 | idle_loop_checkbus: |
116 | BEGIN_CRITICAL; | ||
117 | test SSTAT0, SELDO jnz select_out; | 115 | test SSTAT0, SELDO jnz select_out; |
118 | END_CRITICAL; | 116 | END_CRITICAL; |
119 | test SSTAT0, SELDI jnz select_in; | 117 | test SSTAT0, SELDI jnz select_in; |
@@ -294,7 +292,6 @@ fetch_new_scb_inprog: | |||
294 | test CCSCBCTL, ARRDONE jz return; | 292 | test CCSCBCTL, ARRDONE jz return; |
295 | fetch_new_scb_done: | 293 | fetch_new_scb_done: |
296 | and CCSCBCTL, ~(CCARREN|CCSCBEN); | 294 | and CCSCBCTL, ~(CCARREN|CCSCBEN); |
297 | bmov REG0, SCBPTR, 2; | ||
298 | clr A; | 295 | clr A; |
299 | add CMDS_PENDING, 1; | 296 | add CMDS_PENDING, 1; |
300 | adc CMDS_PENDING[1], A; | 297 | adc CMDS_PENDING[1], A; |
@@ -316,43 +313,117 @@ fetch_new_scb_done: | |||
316 | clr SCB_FIFO_USE_COUNT; | 313 | clr SCB_FIFO_USE_COUNT; |
317 | /* Update the next SCB address to download. */ | 314 | /* Update the next SCB address to download. */ |
318 | bmov NEXT_QUEUED_SCB_ADDR, SCB_NEXT_SCB_BUSADDR, 4; | 315 | bmov NEXT_QUEUED_SCB_ADDR, SCB_NEXT_SCB_BUSADDR, 4; |
316 | /* | ||
317 | * NULL out the SCB links since these fields | ||
318 | * occupy the same location as SCB_NEXT_SCB_BUSADDR. | ||
319 | */ | ||
319 | mvi SCB_NEXT[1], SCB_LIST_NULL; | 320 | mvi SCB_NEXT[1], SCB_LIST_NULL; |
320 | mvi SCB_NEXT2[1], SCB_LIST_NULL; | 321 | mvi SCB_NEXT2[1], SCB_LIST_NULL; |
321 | /* Increment our position in the QINFIFO. */ | 322 | /* Increment our position in the QINFIFO. */ |
322 | mov NONE, SNSCB_QOFF; | 323 | mov NONE, SNSCB_QOFF; |
324 | |||
323 | /* | 325 | /* |
324 | * SCBs that want to send messages are always | 326 | * Save SCBID of this SCB in REG0 since |
325 | * queued independently. This ensures that they | 327 | * SCBPTR will be clobbered during target |
326 | * are at the head of the SCB list to select out | 328 | * list updates. We also record the SCB's |
327 | * to a target and we will see the MK_MESSAGE flag. | 329 | * flags so that we can refer to them even |
330 | * after SCBPTR has been changed. | ||
331 | */ | ||
332 | bmov REG0, SCBPTR, 2; | ||
333 | mov A, SCB_CONTROL; | ||
334 | |||
335 | /* | ||
336 | * Find the tail SCB of the execution queue | ||
337 | * for this target. | ||
328 | */ | 338 | */ |
329 | test SCB_CONTROL, MK_MESSAGE jnz first_new_target_scb; | ||
330 | shr SINDEX, 3, SCB_SCSIID; | 339 | shr SINDEX, 3, SCB_SCSIID; |
331 | and SINDEX, ~0x1; | 340 | and SINDEX, ~0x1; |
332 | mvi SINDEX[1], (WAITING_SCB_TAILS >> 8); | 341 | mvi SINDEX[1], (WAITING_SCB_TAILS >> 8); |
333 | bmov DINDEX, SINDEX, 2; | 342 | bmov DINDEX, SINDEX, 2; |
334 | bmov SCBPTR, SINDIR, 2; | 343 | bmov SCBPTR, SINDIR, 2; |
344 | |||
345 | /* | ||
346 | * Update the tail to point to the new SCB. | ||
347 | */ | ||
335 | bmov DINDIR, REG0, 2; | 348 | bmov DINDIR, REG0, 2; |
349 | |||
350 | /* | ||
351 | * If the queue was empty, queue this SCB as | ||
352 | * the first for this target. | ||
353 | */ | ||
336 | cmp SCBPTR[1], SCB_LIST_NULL je first_new_target_scb; | 354 | cmp SCBPTR[1], SCB_LIST_NULL je first_new_target_scb; |
355 | |||
356 | /* | ||
357 | * SCBs that want to send messages must always be | ||
358 | * at the head of their per-target queue so that | ||
359 | * ATN can be asserted even if the current | ||
360 | * negotiation agreement is packetized. If the | ||
361 | * target queue is empty, the SCB can be queued | ||
362 | * immediately. If the queue is not empty, we must | ||
363 | * wait for it to empty before entering this SCB | ||
364 | * into the waiting for selection queue. Otherwise | ||
365 | * our batching and round-robin selection scheme | ||
366 | * could allow commands to be queued out of order. | ||
367 | * To simplify the implementation, we stop pulling | ||
368 | * new commands from the host until the MK_MESSAGE | ||
369 | * SCB can be queued to the waiting for selection | ||
370 | * list. | ||
371 | */ | ||
372 | test A, MK_MESSAGE jz batch_scb; | ||
373 | |||
374 | /* | ||
375 | * If the last SCB is also a MK_MESSAGE SCB, then | ||
376 | * order is preserved even if we batch. | ||
377 | */ | ||
378 | test SCB_CONTROL, MK_MESSAGE jz batch_scb; | ||
379 | |||
380 | /* | ||
381 | * Defer this SCB and stop fetching new SCBs until | ||
382 | * it can be queued. Since the SCB_SCSIID of the | ||
383 | * tail SCB must be the same as that of the newly | ||
384 | * queued SCB, there is no need to restore the SCBID | ||
385 | * here. | ||
386 | */ | ||
387 | or SEQ_FLAGS2, PENDING_MK_MESSAGE; | ||
388 | bmov MK_MESSAGE_SCB, REG0, 2; | ||
389 | mov MK_MESSAGE_SCSIID, SCB_SCSIID ret; | ||
390 | |||
391 | batch_scb: | ||
392 | /* | ||
393 | * Otherwise just update the previous tail SCB to | ||
394 | * point to the new tail. | ||
395 | */ | ||
337 | bmov SCB_NEXT, REG0, 2 ret; | 396 | bmov SCB_NEXT, REG0, 2 ret; |
397 | |||
338 | first_new_target_scb: | 398 | first_new_target_scb: |
399 | /* | ||
400 | * Append SCB to the tail of the waiting for | ||
401 | * selection list. | ||
402 | */ | ||
339 | cmp WAITING_TID_HEAD[1], SCB_LIST_NULL je first_new_scb; | 403 | cmp WAITING_TID_HEAD[1], SCB_LIST_NULL je first_new_scb; |
340 | bmov SCBPTR, WAITING_TID_TAIL, 2; | 404 | bmov SCBPTR, WAITING_TID_TAIL, 2; |
341 | bmov SCB_NEXT2, REG0, 2; | 405 | bmov SCB_NEXT2, REG0, 2; |
342 | bmov WAITING_TID_TAIL, REG0, 2 ret; | 406 | bmov WAITING_TID_TAIL, REG0, 2 ret; |
343 | first_new_scb: | 407 | first_new_scb: |
408 | /* | ||
409 | * Whole list is empty, so the head of | ||
410 | * the list must be initialized too. | ||
411 | */ | ||
344 | bmov WAITING_TID_HEAD, REG0, 2; | 412 | bmov WAITING_TID_HEAD, REG0, 2; |
345 | bmov WAITING_TID_TAIL, REG0, 2 ret; | 413 | bmov WAITING_TID_TAIL, REG0, 2 ret; |
346 | END_CRITICAL; | 414 | END_CRITICAL; |
347 | 415 | ||
348 | scbdma_idle: | 416 | scbdma_idle: |
349 | /* | 417 | /* |
350 | * Give precedence to downloading new SCBs to execute | 418 | * Don't bother downloading new SCBs to execute |
351 | * unless select-outs are currently frozen. | 419 | * if select-outs are currently frozen or we have |
420 | * a MK_MESSAGE SCB waiting to enter the queue. | ||
352 | */ | 421 | */ |
353 | test SEQ_FLAGS2, SELECTOUT_QFROZEN jnz . + 2; | 422 | test SEQ_FLAGS2, SELECTOUT_QFROZEN|PENDING_MK_MESSAGE |
423 | jnz scbdma_no_new_scbs; | ||
354 | BEGIN_CRITICAL; | 424 | BEGIN_CRITICAL; |
355 | test QOFF_CTLSTA, NEW_SCB_AVAIL jnz fetch_new_scb; | 425 | test QOFF_CTLSTA, NEW_SCB_AVAIL jnz fetch_new_scb; |
426 | scbdma_no_new_scbs: | ||
356 | cmp COMPLETE_DMA_SCB_HEAD[1], SCB_LIST_NULL jne dma_complete_scb; | 427 | cmp COMPLETE_DMA_SCB_HEAD[1], SCB_LIST_NULL jne dma_complete_scb; |
357 | cmp COMPLETE_SCB_HEAD[1], SCB_LIST_NULL je return; | 428 | cmp COMPLETE_SCB_HEAD[1], SCB_LIST_NULL je return; |
358 | /* FALLTHROUGH */ | 429 | /* FALLTHROUGH */ |
@@ -671,27 +742,41 @@ curscb_ww_done: | |||
671 | } | 742 | } |
672 | 743 | ||
673 | /* | 744 | /* |
674 | * Requeue any SCBs not sent, to the tail of the waiting Q. | 745 | * The whole list made it. Clear our tail pointer to indicate |
746 | * that the per-target selection queue is now empty. | ||
675 | */ | 747 | */ |
676 | cmp SCB_NEXT[1], SCB_LIST_NULL je select_out_list_done; | 748 | cmp SCB_NEXT[1], SCB_LIST_NULL je select_out_clear_tail; |
677 | 749 | ||
678 | /* | 750 | /* |
751 | * Requeue any SCBs not sent, to the tail of the waiting Q. | ||
679 | * We know that neither the per-TID list nor the list of | 752 | * We know that neither the per-TID list nor the list of |
680 | * TIDs is empty. Use this knowledge to our advantage. | 753 | * TIDs is empty. Use this knowledge to our advantage and |
754 | * queue the remainder to the tail of the global execution | ||
755 | * queue. | ||
681 | */ | 756 | */ |
682 | bmov REG0, SCB_NEXT, 2; | 757 | bmov REG0, SCB_NEXT, 2; |
758 | select_out_queue_remainder: | ||
683 | bmov SCBPTR, WAITING_TID_TAIL, 2; | 759 | bmov SCBPTR, WAITING_TID_TAIL, 2; |
684 | bmov SCB_NEXT2, REG0, 2; | 760 | bmov SCB_NEXT2, REG0, 2; |
685 | bmov WAITING_TID_TAIL, REG0, 2; | 761 | bmov WAITING_TID_TAIL, REG0, 2; |
686 | jmp select_out_inc_tid_q; | 762 | jmp select_out_inc_tid_q; |
687 | 763 | ||
688 | select_out_list_done: | 764 | select_out_clear_tail: |
765 | /* | ||
766 | * Queue any pending MK_MESSAGE SCB for this target now | ||
767 | * that the queue is empty. | ||
768 | */ | ||
769 | test SEQ_FLAGS2, PENDING_MK_MESSAGE jz select_out_no_mk_message_scb; | ||
770 | mov A, MK_MESSAGE_SCSIID; | ||
771 | cmp SCB_SCSIID, A jne select_out_no_mk_message_scb; | ||
772 | and SEQ_FLAGS2, ~PENDING_MK_MESSAGE; | ||
773 | bmov REG0, MK_MESSAGE_SCB, 2; | ||
774 | jmp select_out_queue_remainder; | ||
775 | |||
776 | select_out_no_mk_message_scb: | ||
689 | /* | 777 | /* |
690 | * The whole list made it. Just clear our TID's tail pointer | 778 | * Clear this target's execution tail and increment the queue. |
691 | * unless we were queued independently due to our need to | ||
692 | * send a message. | ||
693 | */ | 779 | */ |
694 | test SCB_CONTROL, MK_MESSAGE jnz select_out_inc_tid_q; | ||
695 | shr DINDEX, 3, SCB_SCSIID; | 780 | shr DINDEX, 3, SCB_SCSIID; |
696 | or DINDEX, 1; /* Want only the second byte */ | 781 | or DINDEX, 1; /* Want only the second byte */ |
697 | mvi DINDEX[1], ((WAITING_SCB_TAILS) >> 8); | 782 | mvi DINDEX[1], ((WAITING_SCB_TAILS) >> 8); |
@@ -703,8 +788,8 @@ select_out_inc_tid_q: | |||
703 | mvi WAITING_TID_TAIL[1], SCB_LIST_NULL; | 788 | mvi WAITING_TID_TAIL[1], SCB_LIST_NULL; |
704 | bmov SCBPTR, CURRSCB, 2; | 789 | bmov SCBPTR, CURRSCB, 2; |
705 | mvi CLRSINT0, CLRSELDO; | 790 | mvi CLRSINT0, CLRSELDO; |
706 | test LQOSTAT2, LQOPHACHGOUTPKT jnz unexpected_nonpkt_phase; | 791 | test LQOSTAT2, LQOPHACHGOUTPKT jnz unexpected_nonpkt_mode_cleared; |
707 | test LQOSTAT1, LQOPHACHGINPKT jnz unexpected_nonpkt_phase; | 792 | test LQOSTAT1, LQOPHACHGINPKT jnz unexpected_nonpkt_mode_cleared; |
708 | 793 | ||
709 | /* | 794 | /* |
710 | * If this is a packetized connection, return to our | 795 | * If this is a packetized connection, return to our |
@@ -2127,6 +2212,18 @@ SET_DST_MODE M_DFF0; | |||
2127 | mvi DFFSXFRCTL, CLRCHN; | 2212 | mvi DFFSXFRCTL, CLRCHN; |
2128 | unexpected_nonpkt_mode_cleared: | 2213 | unexpected_nonpkt_mode_cleared: |
2129 | mvi CLRSINT2, CLRNONPACKREQ; | 2214 | mvi CLRSINT2, CLRNONPACKREQ; |
2215 | if ((ahd->bugs & AHD_BUSFREEREV_BUG) != 0) { | ||
2216 | /* | ||
2217 | * Test to ensure that the bus has not | ||
2218 | * already gone free prior to clearing | ||
2219 | * any stale busfree status. This avoids | ||
2220 | * a window whereby a busfree just after | ||
2221 | * a selection could be missed. | ||
2222 | */ | ||
2223 | test SCSISIGI, BSYI jz . + 2; | ||
2224 | mvi CLRSINT1,CLRBUSFREE; | ||
2225 | or SIMODE1, ENBUSFREE; | ||
2226 | } | ||
2130 | test SCSIPHASE, ~(MSG_IN_PHASE|MSG_OUT_PHASE) jnz illegal_phase; | 2227 | test SCSIPHASE, ~(MSG_IN_PHASE|MSG_OUT_PHASE) jnz illegal_phase; |
2131 | SET_SEQINTCODE(ENTERING_NONPACK) | 2228 | SET_SEQINTCODE(ENTERING_NONPACK) |
2132 | jmp ITloop; | 2229 | jmp ITloop; |
diff --git a/drivers/scsi/aic7xxx/aic79xx_core.c b/drivers/scsi/aic7xxx/aic79xx_core.c index db8f5ce99ee3..dfd4cc93c05c 100644 --- a/drivers/scsi/aic7xxx/aic79xx_core.c +++ b/drivers/scsi/aic7xxx/aic79xx_core.c | |||
@@ -37,7 +37,7 @@ | |||
37 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 37 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
38 | * POSSIBILITY OF SUCH DAMAGES. | 38 | * POSSIBILITY OF SUCH DAMAGES. |
39 | * | 39 | * |
40 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#247 $ | 40 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#250 $ |
41 | */ | 41 | */ |
42 | 42 | ||
43 | #ifdef __linux__ | 43 | #ifdef __linux__ |
@@ -197,7 +197,8 @@ static int ahd_search_scb_list(struct ahd_softc *ahd, int target, | |||
197 | char channel, int lun, u_int tag, | 197 | char channel, int lun, u_int tag, |
198 | role_t role, uint32_t status, | 198 | role_t role, uint32_t status, |
199 | ahd_search_action action, | 199 | ahd_search_action action, |
200 | u_int *list_head, u_int tid); | 200 | u_int *list_head, u_int *list_tail, |
201 | u_int tid); | ||
201 | static void ahd_stitch_tid_list(struct ahd_softc *ahd, | 202 | static void ahd_stitch_tid_list(struct ahd_softc *ahd, |
202 | u_int tid_prev, u_int tid_cur, | 203 | u_int tid_prev, u_int tid_cur, |
203 | u_int tid_next); | 204 | u_int tid_next); |
@@ -1660,7 +1661,8 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | |||
1660 | * so just clear the error. | 1661 | * so just clear the error. |
1661 | */ | 1662 | */ |
1662 | ahd_outb(ahd, CLRLQIINT1, CLRLQICRCI_NLQ); | 1663 | ahd_outb(ahd, CLRLQIINT1, CLRLQICRCI_NLQ); |
1663 | } else if ((status & BUSFREE) != 0) { | 1664 | } else if ((status & BUSFREE) != 0 |
1665 | || (lqistat1 & LQOBUSFREE) != 0) { | ||
1664 | u_int lqostat1; | 1666 | u_int lqostat1; |
1665 | int restart; | 1667 | int restart; |
1666 | int clear_fifo; | 1668 | int clear_fifo; |
@@ -2025,10 +2027,6 @@ ahd_handle_pkt_busfree(struct ahd_softc *ahd, u_int busfreetime) | |||
2025 | u_int waiting_t; | 2027 | u_int waiting_t; |
2026 | u_int next; | 2028 | u_int next; |
2027 | 2029 | ||
2028 | if ((busfreetime & BUSFREE_LQO) == 0) | ||
2029 | printf("%s: Warning, BUSFREE time is 0x%x. " | ||
2030 | "Expected BUSFREE_LQO.\n", | ||
2031 | ahd_name(ahd), busfreetime); | ||
2032 | /* | 2030 | /* |
2033 | * The LQO manager detected an unexpected busfree | 2031 | * The LQO manager detected an unexpected busfree |
2034 | * either: | 2032 | * either: |
@@ -2251,8 +2249,14 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd) | |||
2251 | struct ahd_tmode_tstate *tstate; | 2249 | struct ahd_tmode_tstate *tstate; |
2252 | 2250 | ||
2253 | /* | 2251 | /* |
2254 | * PPR Rejected. Try non-ppr negotiation | 2252 | * PPR Rejected. |
2255 | * and retry command. | 2253 | * |
2254 | * If the previous negotiation was packetized, | ||
2255 | * this could be because the device has been | ||
2256 | * reset without our knowledge. Force our | ||
2257 | * current negotiation to async and retry the | ||
2258 | * negotiation. Otherwise retry the command | ||
2259 | * with non-ppr negotiation. | ||
2256 | */ | 2260 | */ |
2257 | #ifdef AHD_DEBUG | 2261 | #ifdef AHD_DEBUG |
2258 | if ((ahd_debug & AHD_SHOW_MESSAGES) != 0) | 2262 | if ((ahd_debug & AHD_SHOW_MESSAGES) != 0) |
@@ -2261,11 +2265,34 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd) | |||
2261 | tinfo = ahd_fetch_transinfo(ahd, devinfo.channel, | 2265 | tinfo = ahd_fetch_transinfo(ahd, devinfo.channel, |
2262 | devinfo.our_scsiid, | 2266 | devinfo.our_scsiid, |
2263 | devinfo.target, &tstate); | 2267 | devinfo.target, &tstate); |
2264 | tinfo->curr.transport_version = 2; | 2268 | if ((tinfo->curr.ppr_options & MSG_EXT_PPR_IU_REQ)!=0) { |
2265 | tinfo->goal.transport_version = 2; | 2269 | ahd_set_width(ahd, &devinfo, |
2266 | tinfo->goal.ppr_options = 0; | 2270 | MSG_EXT_WDTR_BUS_8_BIT, |
2267 | ahd_qinfifo_requeue_tail(ahd, scb); | 2271 | AHD_TRANS_CUR, |
2268 | printerror = 0; | 2272 | /*paused*/TRUE); |
2273 | ahd_set_syncrate(ahd, &devinfo, | ||
2274 | /*period*/0, /*offset*/0, | ||
2275 | /*ppr_options*/0, | ||
2276 | AHD_TRANS_CUR, | ||
2277 | /*paused*/TRUE); | ||
2278 | /* | ||
2279 | * The expect PPR busfree handler below | ||
2280 | * will effect the retry and necessary | ||
2281 | * abort. | ||
2282 | */ | ||
2283 | } else { | ||
2284 | tinfo->curr.transport_version = 2; | ||
2285 | tinfo->goal.transport_version = 2; | ||
2286 | tinfo->goal.ppr_options = 0; | ||
2287 | /* | ||
2288 | * Remove any SCBs in the waiting for selection | ||
2289 | * queue that may also be for this target so | ||
2290 | * that command ordering is preserved. | ||
2291 | */ | ||
2292 | ahd_freeze_devq(ahd, scb); | ||
2293 | ahd_qinfifo_requeue_tail(ahd, scb); | ||
2294 | printerror = 0; | ||
2295 | } | ||
2269 | } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_WDTR, FALSE) | 2296 | } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_WDTR, FALSE) |
2270 | && ppr_busfree == 0) { | 2297 | && ppr_busfree == 0) { |
2271 | /* | 2298 | /* |
@@ -2280,6 +2307,12 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd) | |||
2280 | MSG_EXT_WDTR_BUS_8_BIT, | 2307 | MSG_EXT_WDTR_BUS_8_BIT, |
2281 | AHD_TRANS_CUR|AHD_TRANS_GOAL, | 2308 | AHD_TRANS_CUR|AHD_TRANS_GOAL, |
2282 | /*paused*/TRUE); | 2309 | /*paused*/TRUE); |
2310 | /* | ||
2311 | * Remove any SCBs in the waiting for selection | ||
2312 | * queue that may also be for this target so that | ||
2313 | * command ordering is preserved. | ||
2314 | */ | ||
2315 | ahd_freeze_devq(ahd, scb); | ||
2283 | ahd_qinfifo_requeue_tail(ahd, scb); | 2316 | ahd_qinfifo_requeue_tail(ahd, scb); |
2284 | printerror = 0; | 2317 | printerror = 0; |
2285 | } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_SDTR, FALSE) | 2318 | } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_SDTR, FALSE) |
@@ -2297,6 +2330,12 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd) | |||
2297 | /*ppr_options*/0, | 2330 | /*ppr_options*/0, |
2298 | AHD_TRANS_CUR|AHD_TRANS_GOAL, | 2331 | AHD_TRANS_CUR|AHD_TRANS_GOAL, |
2299 | /*paused*/TRUE); | 2332 | /*paused*/TRUE); |
2333 | /* | ||
2334 | * Remove any SCBs in the waiting for selection | ||
2335 | * queue that may also be for this target so that | ||
2336 | * command ordering is preserved. | ||
2337 | */ | ||
2338 | ahd_freeze_devq(ahd, scb); | ||
2300 | ahd_qinfifo_requeue_tail(ahd, scb); | 2339 | ahd_qinfifo_requeue_tail(ahd, scb); |
2301 | printerror = 0; | 2340 | printerror = 0; |
2302 | } else if ((ahd->msg_flags & MSG_FLAG_EXPECT_IDE_BUSFREE) != 0 | 2341 | } else if ((ahd->msg_flags & MSG_FLAG_EXPECT_IDE_BUSFREE) != 0 |
@@ -2369,14 +2408,14 @@ ahd_handle_nonpkt_busfree(struct ahd_softc *ahd) | |||
2369 | */ | 2408 | */ |
2370 | printf("%s: ", ahd_name(ahd)); | 2409 | printf("%s: ", ahd_name(ahd)); |
2371 | } | 2410 | } |
2372 | if (lastphase != P_BUSFREE) | ||
2373 | ahd_force_renegotiation(ahd, &devinfo); | ||
2374 | printf("Unexpected busfree %s, %d SCBs aborted, " | 2411 | printf("Unexpected busfree %s, %d SCBs aborted, " |
2375 | "PRGMCNT == 0x%x\n", | 2412 | "PRGMCNT == 0x%x\n", |
2376 | ahd_lookup_phase_entry(lastphase)->phasemsg, | 2413 | ahd_lookup_phase_entry(lastphase)->phasemsg, |
2377 | aborted, | 2414 | aborted, |
2378 | ahd_inw(ahd, PRGMCNT)); | 2415 | ahd_inw(ahd, PRGMCNT)); |
2379 | ahd_dump_card_state(ahd); | 2416 | ahd_dump_card_state(ahd); |
2417 | if (lastphase != P_BUSFREE) | ||
2418 | ahd_force_renegotiation(ahd, &devinfo); | ||
2380 | } | 2419 | } |
2381 | /* Always restart the sequencer. */ | 2420 | /* Always restart the sequencer. */ |
2382 | return (1); | 2421 | return (1); |
@@ -3315,7 +3354,6 @@ ahd_update_pending_scbs(struct ahd_softc *ahd) | |||
3315 | { | 3354 | { |
3316 | struct scb *pending_scb; | 3355 | struct scb *pending_scb; |
3317 | int pending_scb_count; | 3356 | int pending_scb_count; |
3318 | u_int scb_tag; | ||
3319 | int paused; | 3357 | int paused; |
3320 | u_int saved_scbptr; | 3358 | u_int saved_scbptr; |
3321 | ahd_mode_state saved_modes; | 3359 | ahd_mode_state saved_modes; |
@@ -3333,7 +3371,6 @@ ahd_update_pending_scbs(struct ahd_softc *ahd) | |||
3333 | pending_scb_count = 0; | 3371 | pending_scb_count = 0; |
3334 | LIST_FOREACH(pending_scb, &ahd->pending_scbs, pending_links) { | 3372 | LIST_FOREACH(pending_scb, &ahd->pending_scbs, pending_links) { |
3335 | struct ahd_devinfo devinfo; | 3373 | struct ahd_devinfo devinfo; |
3336 | struct hardware_scb *pending_hscb; | ||
3337 | struct ahd_initiator_tinfo *tinfo; | 3374 | struct ahd_initiator_tinfo *tinfo; |
3338 | struct ahd_tmode_tstate *tstate; | 3375 | struct ahd_tmode_tstate *tstate; |
3339 | 3376 | ||
@@ -3341,11 +3378,10 @@ ahd_update_pending_scbs(struct ahd_softc *ahd) | |||
3341 | tinfo = ahd_fetch_transinfo(ahd, devinfo.channel, | 3378 | tinfo = ahd_fetch_transinfo(ahd, devinfo.channel, |
3342 | devinfo.our_scsiid, | 3379 | devinfo.our_scsiid, |
3343 | devinfo.target, &tstate); | 3380 | devinfo.target, &tstate); |
3344 | pending_hscb = pending_scb->hscb; | ||
3345 | if ((tstate->auto_negotiate & devinfo.target_mask) == 0 | 3381 | if ((tstate->auto_negotiate & devinfo.target_mask) == 0 |
3346 | && (pending_scb->flags & SCB_AUTO_NEGOTIATE) != 0) { | 3382 | && (pending_scb->flags & SCB_AUTO_NEGOTIATE) != 0) { |
3347 | pending_scb->flags &= ~SCB_AUTO_NEGOTIATE; | 3383 | pending_scb->flags &= ~SCB_AUTO_NEGOTIATE; |
3348 | pending_hscb->control &= ~MK_MESSAGE; | 3384 | pending_scb->hscb->control &= ~MK_MESSAGE; |
3349 | } | 3385 | } |
3350 | ahd_sync_scb(ahd, pending_scb, | 3386 | ahd_sync_scb(ahd, pending_scb, |
3351 | BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); | 3387 | BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); |
@@ -3377,18 +3413,15 @@ ahd_update_pending_scbs(struct ahd_softc *ahd) | |||
3377 | ahd_outb(ahd, SCSISEQ0, ahd_inb(ahd, SCSISEQ0) & ~ENSELO); | 3413 | ahd_outb(ahd, SCSISEQ0, ahd_inb(ahd, SCSISEQ0) & ~ENSELO); |
3378 | saved_scbptr = ahd_get_scbptr(ahd); | 3414 | saved_scbptr = ahd_get_scbptr(ahd); |
3379 | /* Ensure that the hscbs down on the card match the new information */ | 3415 | /* Ensure that the hscbs down on the card match the new information */ |
3380 | for (scb_tag = 0; scb_tag < ahd->scb_data.maxhscbs; scb_tag++) { | 3416 | LIST_FOREACH(pending_scb, &ahd->pending_scbs, pending_links) { |
3381 | struct hardware_scb *pending_hscb; | 3417 | u_int scb_tag; |
3382 | u_int control; | 3418 | u_int control; |
3383 | 3419 | ||
3384 | pending_scb = ahd_lookup_scb(ahd, scb_tag); | 3420 | scb_tag = SCB_GET_TAG(pending_scb); |
3385 | if (pending_scb == NULL) | ||
3386 | continue; | ||
3387 | ahd_set_scbptr(ahd, scb_tag); | 3421 | ahd_set_scbptr(ahd, scb_tag); |
3388 | pending_hscb = pending_scb->hscb; | ||
3389 | control = ahd_inb_scbram(ahd, SCB_CONTROL); | 3422 | control = ahd_inb_scbram(ahd, SCB_CONTROL); |
3390 | control &= ~MK_MESSAGE; | 3423 | control &= ~MK_MESSAGE; |
3391 | control |= pending_hscb->control & MK_MESSAGE; | 3424 | control |= pending_scb->hscb->control & MK_MESSAGE; |
3392 | ahd_outb(ahd, SCB_CONTROL, control); | 3425 | ahd_outb(ahd, SCB_CONTROL, control); |
3393 | } | 3426 | } |
3394 | ahd_set_scbptr(ahd, saved_scbptr); | 3427 | ahd_set_scbptr(ahd, saved_scbptr); |
@@ -6500,13 +6533,14 @@ ahd_chip_init(struct ahd_softc *ahd) | |||
6500 | | ENLQIOVERI_LQ|ENLQIOVERI_NLQ); | 6533 | | ENLQIOVERI_LQ|ENLQIOVERI_NLQ); |
6501 | ahd_outb(ahd, LQOMODE0, ENLQOATNLQ|ENLQOATNPKT|ENLQOTCRC); | 6534 | ahd_outb(ahd, LQOMODE0, ENLQOATNLQ|ENLQOATNPKT|ENLQOTCRC); |
6502 | /* | 6535 | /* |
6503 | * An interrupt from LQOBUSFREE is made redundant by the | 6536 | * We choose to have the sequencer catch LQOPHCHGINPKT errors |
6504 | * BUSFREE interrupt. We choose to have the sequencer catch | 6537 | * manually for the command phase at the start of a packetized |
6505 | * LQOPHCHGINPKT errors manually for the command phase at the | 6538 | * selection case. ENLQOBUSFREE should be made redundant by |
6506 | * start of a packetized selection case. | 6539 | * the BUSFREE interrupt, but it seems that some LQOBUSFREE |
6507 | ahd_outb(ahd, LQOMODE1, ENLQOBUSFREE|ENLQOPHACHGINPKT); | 6540 | * events fail to assert the BUSFREE interrupt so we must |
6541 | * also enable LQOBUSFREE interrupts. | ||
6508 | */ | 6542 | */ |
6509 | ahd_outb(ahd, LQOMODE1, 0); | 6543 | ahd_outb(ahd, LQOMODE1, ENLQOBUSFREE); |
6510 | 6544 | ||
6511 | /* | 6545 | /* |
6512 | * Setup sequencer interrupt handlers. | 6546 | * Setup sequencer interrupt handlers. |
@@ -6617,6 +6651,8 @@ ahd_chip_init(struct ahd_softc *ahd) | |||
6617 | /* We don't have any waiting selections */ | 6651 | /* We don't have any waiting selections */ |
6618 | ahd_outw(ahd, WAITING_TID_HEAD, SCB_LIST_NULL); | 6652 | ahd_outw(ahd, WAITING_TID_HEAD, SCB_LIST_NULL); |
6619 | ahd_outw(ahd, WAITING_TID_TAIL, SCB_LIST_NULL); | 6653 | ahd_outw(ahd, WAITING_TID_TAIL, SCB_LIST_NULL); |
6654 | ahd_outw(ahd, MK_MESSAGE_SCB, SCB_LIST_NULL); | ||
6655 | ahd_outw(ahd, MK_MESSAGE_SCSIID, 0xFF); | ||
6620 | for (i = 0; i < AHD_NUM_TARGETS; i++) | 6656 | for (i = 0; i < AHD_NUM_TARGETS; i++) |
6621 | ahd_outw(ahd, WAITING_SCB_TAILS + (2 * i), SCB_LIST_NULL); | 6657 | ahd_outw(ahd, WAITING_SCB_TAILS + (2 * i), SCB_LIST_NULL); |
6622 | 6658 | ||
@@ -7260,12 +7296,28 @@ ahd_reset_cmds_pending(struct ahd_softc *ahd) | |||
7260 | ahd->flags &= ~AHD_UPDATE_PEND_CMDS; | 7296 | ahd->flags &= ~AHD_UPDATE_PEND_CMDS; |
7261 | } | 7297 | } |
7262 | 7298 | ||
7299 | void | ||
7300 | ahd_done_with_status(struct ahd_softc *ahd, struct scb *scb, uint32_t status) | ||
7301 | { | ||
7302 | cam_status ostat; | ||
7303 | cam_status cstat; | ||
7304 | |||
7305 | ostat = ahd_get_transaction_status(scb); | ||
7306 | if (ostat == CAM_REQ_INPROG) | ||
7307 | ahd_set_transaction_status(scb, status); | ||
7308 | cstat = ahd_get_transaction_status(scb); | ||
7309 | if (cstat != CAM_REQ_CMP) | ||
7310 | ahd_freeze_scb(scb); | ||
7311 | ahd_done(ahd, scb); | ||
7312 | } | ||
7313 | |||
7263 | int | 7314 | int |
7264 | ahd_search_qinfifo(struct ahd_softc *ahd, int target, char channel, | 7315 | ahd_search_qinfifo(struct ahd_softc *ahd, int target, char channel, |
7265 | int lun, u_int tag, role_t role, uint32_t status, | 7316 | int lun, u_int tag, role_t role, uint32_t status, |
7266 | ahd_search_action action) | 7317 | ahd_search_action action) |
7267 | { | 7318 | { |
7268 | struct scb *scb; | 7319 | struct scb *scb; |
7320 | struct scb *mk_msg_scb; | ||
7269 | struct scb *prev_scb; | 7321 | struct scb *prev_scb; |
7270 | ahd_mode_state saved_modes; | 7322 | ahd_mode_state saved_modes; |
7271 | u_int qinstart; | 7323 | u_int qinstart; |
@@ -7274,6 +7326,7 @@ ahd_search_qinfifo(struct ahd_softc *ahd, int target, char channel, | |||
7274 | u_int tid_next; | 7326 | u_int tid_next; |
7275 | u_int tid_prev; | 7327 | u_int tid_prev; |
7276 | u_int scbid; | 7328 | u_int scbid; |
7329 | u_int seq_flags2; | ||
7277 | u_int savedscbptr; | 7330 | u_int savedscbptr; |
7278 | uint32_t busaddr; | 7331 | uint32_t busaddr; |
7279 | int found; | 7332 | int found; |
@@ -7329,23 +7382,10 @@ ahd_search_qinfifo(struct ahd_softc *ahd, int target, char channel, | |||
7329 | found++; | 7382 | found++; |
7330 | switch (action) { | 7383 | switch (action) { |
7331 | case SEARCH_COMPLETE: | 7384 | case SEARCH_COMPLETE: |
7332 | { | ||
7333 | cam_status ostat; | ||
7334 | cam_status cstat; | ||
7335 | |||
7336 | ostat = ahd_get_transaction_status(scb); | ||
7337 | if (ostat == CAM_REQ_INPROG) | ||
7338 | ahd_set_transaction_status(scb, | ||
7339 | status); | ||
7340 | cstat = ahd_get_transaction_status(scb); | ||
7341 | if (cstat != CAM_REQ_CMP) | ||
7342 | ahd_freeze_scb(scb); | ||
7343 | if ((scb->flags & SCB_ACTIVE) == 0) | 7385 | if ((scb->flags & SCB_ACTIVE) == 0) |
7344 | printf("Inactive SCB in qinfifo\n"); | 7386 | printf("Inactive SCB in qinfifo\n"); |
7345 | ahd_done(ahd, scb); | 7387 | ahd_done_with_status(ahd, scb, status); |
7346 | |||
7347 | /* FALLTHROUGH */ | 7388 | /* FALLTHROUGH */ |
7348 | } | ||
7349 | case SEARCH_REMOVE: | 7389 | case SEARCH_REMOVE: |
7350 | break; | 7390 | break; |
7351 | case SEARCH_PRINT: | 7391 | case SEARCH_PRINT: |
@@ -7375,21 +7415,24 @@ ahd_search_qinfifo(struct ahd_softc *ahd, int target, char channel, | |||
7375 | * looking for matches. | 7415 | * looking for matches. |
7376 | */ | 7416 | */ |
7377 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); | 7417 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); |
7418 | seq_flags2 = ahd_inb(ahd, SEQ_FLAGS2); | ||
7419 | if ((seq_flags2 & PENDING_MK_MESSAGE) != 0) { | ||
7420 | scbid = ahd_inw(ahd, MK_MESSAGE_SCB); | ||
7421 | mk_msg_scb = ahd_lookup_scb(ahd, scbid); | ||
7422 | } else | ||
7423 | mk_msg_scb = NULL; | ||
7378 | savedscbptr = ahd_get_scbptr(ahd); | 7424 | savedscbptr = ahd_get_scbptr(ahd); |
7379 | tid_next = ahd_inw(ahd, WAITING_TID_HEAD); | 7425 | tid_next = ahd_inw(ahd, WAITING_TID_HEAD); |
7380 | tid_prev = SCB_LIST_NULL; | 7426 | tid_prev = SCB_LIST_NULL; |
7381 | targets = 0; | 7427 | targets = 0; |
7382 | for (scbid = tid_next; !SCBID_IS_NULL(scbid); scbid = tid_next) { | 7428 | for (scbid = tid_next; !SCBID_IS_NULL(scbid); scbid = tid_next) { |
7383 | u_int tid_head; | 7429 | u_int tid_head; |
7430 | u_int tid_tail; | ||
7384 | 7431 | ||
7385 | /* | ||
7386 | * We limit based on the number of SCBs since | ||
7387 | * MK_MESSAGE SCBs are not in the per-tid lists. | ||
7388 | */ | ||
7389 | targets++; | 7432 | targets++; |
7390 | if (targets > AHD_SCB_MAX) { | 7433 | if (targets > AHD_NUM_TARGETS) |
7391 | panic("TID LIST LOOP"); | 7434 | panic("TID LIST LOOP"); |
7392 | } | 7435 | |
7393 | if (scbid >= ahd->scb_data.numscbs) { | 7436 | if (scbid >= ahd->scb_data.numscbs) { |
7394 | printf("%s: Waiting TID List inconsistency. " | 7437 | printf("%s: Waiting TID List inconsistency. " |
7395 | "SCB index == 0x%x, yet numscbs == 0x%x.", | 7438 | "SCB index == 0x%x, yet numscbs == 0x%x.", |
@@ -7419,8 +7462,71 @@ ahd_search_qinfifo(struct ahd_softc *ahd, int target, char channel, | |||
7419 | tid_head = scbid; | 7462 | tid_head = scbid; |
7420 | found += ahd_search_scb_list(ahd, target, channel, | 7463 | found += ahd_search_scb_list(ahd, target, channel, |
7421 | lun, tag, role, status, | 7464 | lun, tag, role, status, |
7422 | action, &tid_head, | 7465 | action, &tid_head, &tid_tail, |
7423 | SCB_GET_TARGET(ahd, scb)); | 7466 | SCB_GET_TARGET(ahd, scb)); |
7467 | /* | ||
7468 | * Check any MK_MESSAGE SCB that is still waiting to | ||
7469 | * enter this target's waiting for selection queue. | ||
7470 | */ | ||
7471 | if (mk_msg_scb != NULL | ||
7472 | && ahd_match_scb(ahd, mk_msg_scb, target, channel, | ||
7473 | lun, tag, role)) { | ||
7474 | |||
7475 | /* | ||
7476 | * We found an scb that needs to be acted on. | ||
7477 | */ | ||
7478 | found++; | ||
7479 | switch (action) { | ||
7480 | case SEARCH_COMPLETE: | ||
7481 | if ((mk_msg_scb->flags & SCB_ACTIVE) == 0) | ||
7482 | printf("Inactive SCB pending MK_MSG\n"); | ||
7483 | ahd_done_with_status(ahd, mk_msg_scb, status); | ||
7484 | /* FALLTHROUGH */ | ||
7485 | case SEARCH_REMOVE: | ||
7486 | { | ||
7487 | u_int tail_offset; | ||
7488 | |||
7489 | printf("Removing MK_MSG scb\n"); | ||
7490 | |||
7491 | /* | ||
7492 | * Reset our tail to the tail of the | ||
7493 | * main per-target list. | ||
7494 | */ | ||
7495 | tail_offset = WAITING_SCB_TAILS | ||
7496 | + (2 * SCB_GET_TARGET(ahd, mk_msg_scb)); | ||
7497 | ahd_outw(ahd, tail_offset, tid_tail); | ||
7498 | |||
7499 | seq_flags2 &= ~PENDING_MK_MESSAGE; | ||
7500 | ahd_outb(ahd, SEQ_FLAGS2, seq_flags2); | ||
7501 | ahd_outw(ahd, CMDS_PENDING, | ||
7502 | ahd_inw(ahd, CMDS_PENDING)-1); | ||
7503 | mk_msg_scb = NULL; | ||
7504 | break; | ||
7505 | } | ||
7506 | case SEARCH_PRINT: | ||
7507 | printf(" 0x%x", SCB_GET_TAG(scb)); | ||
7508 | /* FALLTHROUGH */ | ||
7509 | case SEARCH_COUNT: | ||
7510 | break; | ||
7511 | } | ||
7512 | } | ||
7513 | |||
7514 | if (mk_msg_scb != NULL | ||
7515 | && SCBID_IS_NULL(tid_head) | ||
7516 | && ahd_match_scb(ahd, scb, target, channel, CAM_LUN_WILDCARD, | ||
7517 | SCB_LIST_NULL, ROLE_UNKNOWN)) { | ||
7518 | |||
7519 | /* | ||
7520 | * When removing the last SCB for a target | ||
7521 | * queue with a pending MK_MESSAGE scb, we | ||
7522 | * must queue the MK_MESSAGE scb. | ||
7523 | */ | ||
7524 | printf("Queueing mk_msg_scb\n"); | ||
7525 | tid_head = ahd_inw(ahd, MK_MESSAGE_SCB); | ||
7526 | seq_flags2 &= ~PENDING_MK_MESSAGE; | ||
7527 | ahd_outb(ahd, SEQ_FLAGS2, seq_flags2); | ||
7528 | mk_msg_scb = NULL; | ||
7529 | } | ||
7424 | if (tid_head != scbid) | 7530 | if (tid_head != scbid) |
7425 | ahd_stitch_tid_list(ahd, tid_prev, tid_head, tid_next); | 7531 | ahd_stitch_tid_list(ahd, tid_prev, tid_head, tid_next); |
7426 | if (!SCBID_IS_NULL(tid_head)) | 7532 | if (!SCBID_IS_NULL(tid_head)) |
@@ -7428,6 +7534,8 @@ ahd_search_qinfifo(struct ahd_softc *ahd, int target, char channel, | |||
7428 | if (action == SEARCH_PRINT) | 7534 | if (action == SEARCH_PRINT) |
7429 | printf(")\n"); | 7535 | printf(")\n"); |
7430 | } | 7536 | } |
7537 | |||
7538 | /* Restore saved state. */ | ||
7431 | ahd_set_scbptr(ahd, savedscbptr); | 7539 | ahd_set_scbptr(ahd, savedscbptr); |
7432 | ahd_restore_modes(ahd, saved_modes); | 7540 | ahd_restore_modes(ahd, saved_modes); |
7433 | return (found); | 7541 | return (found); |
@@ -7436,7 +7544,8 @@ ahd_search_qinfifo(struct ahd_softc *ahd, int target, char channel, | |||
7436 | static int | 7544 | static int |
7437 | ahd_search_scb_list(struct ahd_softc *ahd, int target, char channel, | 7545 | ahd_search_scb_list(struct ahd_softc *ahd, int target, char channel, |
7438 | int lun, u_int tag, role_t role, uint32_t status, | 7546 | int lun, u_int tag, role_t role, uint32_t status, |
7439 | ahd_search_action action, u_int *list_head, u_int tid) | 7547 | ahd_search_action action, u_int *list_head, |
7548 | u_int *list_tail, u_int tid) | ||
7440 | { | 7549 | { |
7441 | struct scb *scb; | 7550 | struct scb *scb; |
7442 | u_int scbid; | 7551 | u_int scbid; |
@@ -7448,6 +7557,7 @@ ahd_search_scb_list(struct ahd_softc *ahd, int target, char channel, | |||
7448 | found = 0; | 7557 | found = 0; |
7449 | prev = SCB_LIST_NULL; | 7558 | prev = SCB_LIST_NULL; |
7450 | next = *list_head; | 7559 | next = *list_head; |
7560 | *list_tail = SCB_LIST_NULL; | ||
7451 | for (scbid = next; !SCBID_IS_NULL(scbid); scbid = next) { | 7561 | for (scbid = next; !SCBID_IS_NULL(scbid); scbid = next) { |
7452 | if (scbid >= ahd->scb_data.numscbs) { | 7562 | if (scbid >= ahd->scb_data.numscbs) { |
7453 | printf("%s:SCB List inconsistency. " | 7563 | printf("%s:SCB List inconsistency. " |
@@ -7463,6 +7573,7 @@ ahd_search_scb_list(struct ahd_softc *ahd, int target, char channel, | |||
7463 | panic("Waiting List traversal\n"); | 7573 | panic("Waiting List traversal\n"); |
7464 | } | 7574 | } |
7465 | ahd_set_scbptr(ahd, scbid); | 7575 | ahd_set_scbptr(ahd, scbid); |
7576 | *list_tail = scbid; | ||
7466 | next = ahd_inw_scbram(ahd, SCB_NEXT); | 7577 | next = ahd_inw_scbram(ahd, SCB_NEXT); |
7467 | if (ahd_match_scb(ahd, scb, target, channel, | 7578 | if (ahd_match_scb(ahd, scb, target, channel, |
7468 | lun, SCB_LIST_NULL, role) == 0) { | 7579 | lun, SCB_LIST_NULL, role) == 0) { |
@@ -7472,24 +7583,14 @@ ahd_search_scb_list(struct ahd_softc *ahd, int target, char channel, | |||
7472 | found++; | 7583 | found++; |
7473 | switch (action) { | 7584 | switch (action) { |
7474 | case SEARCH_COMPLETE: | 7585 | case SEARCH_COMPLETE: |
7475 | { | ||
7476 | cam_status ostat; | ||
7477 | cam_status cstat; | ||
7478 | |||
7479 | ostat = ahd_get_transaction_status(scb); | ||
7480 | if (ostat == CAM_REQ_INPROG) | ||
7481 | ahd_set_transaction_status(scb, status); | ||
7482 | cstat = ahd_get_transaction_status(scb); | ||
7483 | if (cstat != CAM_REQ_CMP) | ||
7484 | ahd_freeze_scb(scb); | ||
7485 | if ((scb->flags & SCB_ACTIVE) == 0) | 7586 | if ((scb->flags & SCB_ACTIVE) == 0) |
7486 | printf("Inactive SCB in Waiting List\n"); | 7587 | printf("Inactive SCB in Waiting List\n"); |
7487 | ahd_done(ahd, scb); | 7588 | ahd_done_with_status(ahd, scb, status); |
7488 | /* FALLTHROUGH */ | 7589 | /* FALLTHROUGH */ |
7489 | } | ||
7490 | case SEARCH_REMOVE: | 7590 | case SEARCH_REMOVE: |
7491 | ahd_rem_wscb(ahd, scbid, prev, next, tid); | 7591 | ahd_rem_wscb(ahd, scbid, prev, next, tid); |
7492 | if (prev == SCB_LIST_NULL) | 7592 | *list_tail = prev; |
7593 | if (SCBID_IS_NULL(prev)) | ||
7493 | *list_head = next; | 7594 | *list_head = next; |
7494 | break; | 7595 | break; |
7495 | case SEARCH_PRINT: | 7596 | case SEARCH_PRINT: |
@@ -7558,14 +7659,17 @@ ahd_rem_wscb(struct ahd_softc *ahd, u_int scbid, | |||
7558 | } | 7659 | } |
7559 | 7660 | ||
7560 | /* | 7661 | /* |
7561 | * SCBs that had MK_MESSAGE set in them will not | 7662 | * SCBs that have MK_MESSAGE set in them may |
7562 | * be queued to the per-target lists, so don't | 7663 | * cause the tail pointer to be updated without |
7563 | * blindly clear the tail pointer. | 7664 | * setting the next pointer of the previous tail. |
7665 | * Only clear the tail if the removed SCB was | ||
7666 | * the tail. | ||
7564 | */ | 7667 | */ |
7565 | tail_offset = WAITING_SCB_TAILS + (2 * tid); | 7668 | tail_offset = WAITING_SCB_TAILS + (2 * tid); |
7566 | if (SCBID_IS_NULL(next) | 7669 | if (SCBID_IS_NULL(next) |
7567 | && ahd_inw(ahd, tail_offset) == scbid) | 7670 | && ahd_inw(ahd, tail_offset) == scbid) |
7568 | ahd_outw(ahd, tail_offset, prev); | 7671 | ahd_outw(ahd, tail_offset, prev); |
7672 | |||
7569 | ahd_add_scb_to_free_list(ahd, scbid); | 7673 | ahd_add_scb_to_free_list(ahd, scbid); |
7570 | return (next); | 7674 | return (next); |
7571 | } | 7675 | } |
@@ -8793,6 +8897,9 @@ ahd_dump_card_state(struct ahd_softc *ahd) | |||
8793 | * Mode independent registers. | 8897 | * Mode independent registers. |
8794 | */ | 8898 | */ |
8795 | cur_col = 0; | 8899 | cur_col = 0; |
8900 | ahd_intstat_print(ahd_inb(ahd, INTSTAT), &cur_col, 50); | ||
8901 | ahd_seloid_print(ahd_inb(ahd, SELOID), &cur_col, 50); | ||
8902 | ahd_selid_print(ahd_inb(ahd, SELID), &cur_col, 50); | ||
8796 | ahd_hs_mailbox_print(ahd_inb(ahd, LOCAL_HS_MAILBOX), &cur_col, 50); | 8903 | ahd_hs_mailbox_print(ahd_inb(ahd, LOCAL_HS_MAILBOX), &cur_col, 50); |
8797 | ahd_intctl_print(ahd_inb(ahd, INTCTL), &cur_col, 50); | 8904 | ahd_intctl_print(ahd_inb(ahd, INTCTL), &cur_col, 50); |
8798 | ahd_seqintstat_print(ahd_inb(ahd, SEQINTSTAT), &cur_col, 50); | 8905 | ahd_seqintstat_print(ahd_inb(ahd, SEQINTSTAT), &cur_col, 50); |
@@ -8808,6 +8915,12 @@ ahd_dump_card_state(struct ahd_softc *ahd) | |||
8808 | ahd_seqintctl_print(ahd_inb(ahd, SEQINTCTL), &cur_col, 50); | 8915 | ahd_seqintctl_print(ahd_inb(ahd, SEQINTCTL), &cur_col, 50); |
8809 | ahd_seq_flags_print(ahd_inb(ahd, SEQ_FLAGS), &cur_col, 50); | 8916 | ahd_seq_flags_print(ahd_inb(ahd, SEQ_FLAGS), &cur_col, 50); |
8810 | ahd_seq_flags2_print(ahd_inb(ahd, SEQ_FLAGS2), &cur_col, 50); | 8917 | ahd_seq_flags2_print(ahd_inb(ahd, SEQ_FLAGS2), &cur_col, 50); |
8918 | ahd_qfreeze_count_print(ahd_inw(ahd, QFREEZE_COUNT), &cur_col, 50); | ||
8919 | ahd_kernel_qfreeze_count_print(ahd_inw(ahd, KERNEL_QFREEZE_COUNT), | ||
8920 | &cur_col, 50); | ||
8921 | ahd_mk_message_scb_print(ahd_inw(ahd, MK_MESSAGE_SCB), &cur_col, 50); | ||
8922 | ahd_mk_message_scsiid_print(ahd_inb(ahd, MK_MESSAGE_SCSIID), | ||
8923 | &cur_col, 50); | ||
8811 | ahd_sstat0_print(ahd_inb(ahd, SSTAT0), &cur_col, 50); | 8924 | ahd_sstat0_print(ahd_inb(ahd, SSTAT0), &cur_col, 50); |
8812 | ahd_sstat1_print(ahd_inb(ahd, SSTAT1), &cur_col, 50); | 8925 | ahd_sstat1_print(ahd_inb(ahd, SSTAT1), &cur_col, 50); |
8813 | ahd_sstat2_print(ahd_inb(ahd, SSTAT2), &cur_col, 50); | 8926 | ahd_sstat2_print(ahd_inb(ahd, SSTAT2), &cur_col, 50); |
@@ -8915,7 +9028,7 @@ ahd_dump_card_state(struct ahd_softc *ahd) | |||
8915 | 9028 | ||
8916 | ahd_set_modes(ahd, AHD_MODE_DFF0 + i, AHD_MODE_DFF0 + i); | 9029 | ahd_set_modes(ahd, AHD_MODE_DFF0 + i, AHD_MODE_DFF0 + i); |
8917 | fifo_scbptr = ahd_get_scbptr(ahd); | 9030 | fifo_scbptr = ahd_get_scbptr(ahd); |
8918 | printf("\n%s: FIFO%d %s, LONGJMP == 0x%x, SCB 0x%x\n", | 9031 | printf("\n\n%s: FIFO%d %s, LONGJMP == 0x%x, SCB 0x%x\n", |
8919 | ahd_name(ahd), i, | 9032 | ahd_name(ahd), i, |
8920 | (dffstat & (FIFO0FREE << i)) ? "Free" : "Active", | 9033 | (dffstat & (FIFO0FREE << i)) ? "Free" : "Active", |
8921 | ahd_inw(ahd, LONGJMP_ADDR), fifo_scbptr); | 9034 | ahd_inw(ahd, LONGJMP_ADDR), fifo_scbptr); |
@@ -8970,6 +9083,9 @@ ahd_dump_card_state(struct ahd_softc *ahd) | |||
8970 | printf("%s: OS_SPACE_CNT = 0x%x MAXCMDCNT = 0x%x\n", | 9083 | printf("%s: OS_SPACE_CNT = 0x%x MAXCMDCNT = 0x%x\n", |
8971 | ahd_name(ahd), ahd_inb(ahd, OS_SPACE_CNT), | 9084 | ahd_name(ahd), ahd_inb(ahd, OS_SPACE_CNT), |
8972 | ahd_inb(ahd, MAXCMDCNT)); | 9085 | ahd_inb(ahd, MAXCMDCNT)); |
9086 | printf("%s: SAVED_SCSIID = 0x%x SAVED_LUN = 0x%x\n", | ||
9087 | ahd_name(ahd), ahd_inb(ahd, SAVED_SCSIID), | ||
9088 | ahd_inb(ahd, SAVED_LUN)); | ||
8973 | ahd_simode0_print(ahd_inb(ahd, SIMODE0), &cur_col, 50); | 9089 | ahd_simode0_print(ahd_inb(ahd, SIMODE0), &cur_col, 50); |
8974 | printf("\n"); | 9090 | printf("\n"); |
8975 | ahd_set_modes(ahd, AHD_MODE_CCHAN, AHD_MODE_CCHAN); | 9091 | ahd_set_modes(ahd, AHD_MODE_CCHAN, AHD_MODE_CCHAN); |
diff --git a/drivers/scsi/aic7xxx/aic79xx_inline.h b/drivers/scsi/aic7xxx/aic79xx_inline.h index 91c4f7f484b1..8ad3ce945b9e 100644 --- a/drivers/scsi/aic7xxx/aic79xx_inline.h +++ b/drivers/scsi/aic7xxx/aic79xx_inline.h | |||
@@ -37,7 +37,7 @@ | |||
37 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 37 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
38 | * POSSIBILITY OF SUCH DAMAGES. | 38 | * POSSIBILITY OF SUCH DAMAGES. |
39 | * | 39 | * |
40 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx_inline.h#58 $ | 40 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx_inline.h#59 $ |
41 | * | 41 | * |
42 | * $FreeBSD$ | 42 | * $FreeBSD$ |
43 | */ | 43 | */ |
@@ -804,9 +804,10 @@ ahd_queue_scb(struct ahd_softc *ahd, struct scb *scb) | |||
804 | uint64_t host_dataptr; | 804 | uint64_t host_dataptr; |
805 | 805 | ||
806 | host_dataptr = ahd_le64toh(scb->hscb->dataptr); | 806 | host_dataptr = ahd_le64toh(scb->hscb->dataptr); |
807 | printf("%s: Queueing SCB 0x%x bus addr 0x%x - 0x%x%x/0x%x\n", | 807 | printf("%s: Queueing SCB %d:0x%x bus addr 0x%x - 0x%x%x/0x%x\n", |
808 | ahd_name(ahd), | 808 | ahd_name(ahd), |
809 | SCB_GET_TAG(scb), ahd_le32toh(scb->hscb->hscb_busaddr), | 809 | SCB_GET_TAG(scb), scb->hscb->scsiid, |
810 | ahd_le32toh(scb->hscb->hscb_busaddr), | ||
810 | (u_int)((host_dataptr >> 32) & 0xFFFFFFFF), | 811 | (u_int)((host_dataptr >> 32) & 0xFFFFFFFF), |
811 | (u_int)(host_dataptr & 0xFFFFFFFF), | 812 | (u_int)(host_dataptr & 0xFFFFFFFF), |
812 | ahd_le32toh(scb->hscb->datacnt)); | 813 | ahd_le32toh(scb->hscb->datacnt)); |
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.h b/drivers/scsi/aic7xxx/aic79xx_osm.h index cb74fccc8100..854fc57c304c 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.h +++ b/drivers/scsi/aic7xxx/aic79xx_osm.h | |||
@@ -36,7 +36,7 @@ | |||
36 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 36 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
37 | * POSSIBILITY OF SUCH DAMAGES. | 37 | * POSSIBILITY OF SUCH DAMAGES. |
38 | * | 38 | * |
39 | * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#137 $ | 39 | * $Id: //depot/aic7xxx/linux/drivers/scsi/aic7xxx/aic79xx_osm.h#166 $ |
40 | * | 40 | * |
41 | */ | 41 | */ |
42 | #ifndef _AIC79XX_LINUX_H_ | 42 | #ifndef _AIC79XX_LINUX_H_ |
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm_pci.c b/drivers/scsi/aic7xxx/aic79xx_osm_pci.c index bf360ae021ab..ebbf7e4ff4cc 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm_pci.c +++ b/drivers/scsi/aic7xxx/aic79xx_osm_pci.c | |||
@@ -220,10 +220,10 @@ ahd_linux_pci_reserve_io_regions(struct ahd_softc *ahd, u_long *base, | |||
220 | *base2 = pci_resource_start(ahd->dev_softc, 3); | 220 | *base2 = pci_resource_start(ahd->dev_softc, 3); |
221 | if (*base == 0 || *base2 == 0) | 221 | if (*base == 0 || *base2 == 0) |
222 | return (ENOMEM); | 222 | return (ENOMEM); |
223 | if (request_region(*base, 256, "aic79xx") == 0) | 223 | if (!request_region(*base, 256, "aic79xx")) |
224 | return (ENOMEM); | 224 | return (ENOMEM); |
225 | if (request_region(*base2, 256, "aic79xx") == 0) { | 225 | if (!request_region(*base2, 256, "aic79xx")) { |
226 | release_region(*base2, 256); | 226 | release_region(*base, 256); |
227 | return (ENOMEM); | 227 | return (ENOMEM); |
228 | } | 228 | } |
229 | return (0); | 229 | return (0); |
@@ -237,7 +237,7 @@ ahd_linux_pci_reserve_mem_region(struct ahd_softc *ahd, | |||
237 | u_long start; | 237 | u_long start; |
238 | u_long base_page; | 238 | u_long base_page; |
239 | u_long base_offset; | 239 | u_long base_offset; |
240 | int error; | 240 | int error = 0; |
241 | 241 | ||
242 | if (aic79xx_allow_memio == 0) | 242 | if (aic79xx_allow_memio == 0) |
243 | return (ENOMEM); | 243 | return (ENOMEM); |
@@ -245,16 +245,15 @@ ahd_linux_pci_reserve_mem_region(struct ahd_softc *ahd, | |||
245 | if ((ahd->bugs & AHD_PCIX_MMAPIO_BUG) != 0) | 245 | if ((ahd->bugs & AHD_PCIX_MMAPIO_BUG) != 0) |
246 | return (ENOMEM); | 246 | return (ENOMEM); |
247 | 247 | ||
248 | error = 0; | ||
249 | start = pci_resource_start(ahd->dev_softc, 1); | 248 | start = pci_resource_start(ahd->dev_softc, 1); |
250 | base_page = start & PAGE_MASK; | 249 | base_page = start & PAGE_MASK; |
251 | base_offset = start - base_page; | 250 | base_offset = start - base_page; |
252 | if (start != 0) { | 251 | if (start != 0) { |
253 | *bus_addr = start; | 252 | *bus_addr = start; |
254 | if (request_mem_region(start, 0x1000, "aic79xx") == 0) | 253 | if (!request_mem_region(start, 0x1000, "aic79xx")) |
255 | error = ENOMEM; | 254 | error = ENOMEM; |
256 | if (error == 0) { | 255 | if (!error) { |
257 | *maddr = ioremap_nocache(base_page, base_offset + 256); | 256 | *maddr = ioremap_nocache(base_page, base_offset + 512); |
258 | if (*maddr == NULL) { | 257 | if (*maddr == NULL) { |
259 | error = ENOMEM; | 258 | error = ENOMEM; |
260 | release_mem_region(start, 0x1000); | 259 | release_mem_region(start, 0x1000); |
@@ -344,7 +343,7 @@ ahd_pci_map_int(struct ahd_softc *ahd) | |||
344 | 343 | ||
345 | error = request_irq(ahd->dev_softc->irq, ahd_linux_isr, | 344 | error = request_irq(ahd->dev_softc->irq, ahd_linux_isr, |
346 | SA_SHIRQ, "aic79xx", ahd); | 345 | SA_SHIRQ, "aic79xx", ahd); |
347 | if (error == 0) | 346 | if (!error) |
348 | ahd->platform_data->irq = ahd->dev_softc->irq; | 347 | ahd->platform_data->irq = ahd->dev_softc->irq; |
349 | 348 | ||
350 | return (-error); | 349 | return (-error); |
diff --git a/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped b/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped index 8763b158856b..2068e00d2c75 100644 --- a/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped +++ b/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped | |||
@@ -2,8 +2,8 @@ | |||
2 | * DO NOT EDIT - This file is automatically generated | 2 | * DO NOT EDIT - This file is automatically generated |
3 | * from the following source files: | 3 | * from the following source files: |
4 | * | 4 | * |
5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#119 $ | 5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#120 $ |
6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#76 $ | 6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#77 $ |
7 | */ | 7 | */ |
8 | typedef int (ahd_reg_print_t)(u_int, u_int *, u_int); | 8 | typedef int (ahd_reg_print_t)(u_int, u_int *, u_int); |
9 | typedef struct ahd_reg_parse_entry { | 9 | typedef struct ahd_reg_parse_entry { |
@@ -2204,6 +2204,20 @@ ahd_reg_print_t ahd_cmdsize_table_print; | |||
2204 | #endif | 2204 | #endif |
2205 | 2205 | ||
2206 | #if AIC_DEBUG_REGISTERS | 2206 | #if AIC_DEBUG_REGISTERS |
2207 | ahd_reg_print_t ahd_mk_message_scb_print; | ||
2208 | #else | ||
2209 | #define ahd_mk_message_scb_print(regvalue, cur_col, wrap) \ | ||
2210 | ahd_print_register(NULL, 0, "MK_MESSAGE_SCB", 0x160, regvalue, cur_col, wrap) | ||
2211 | #endif | ||
2212 | |||
2213 | #if AIC_DEBUG_REGISTERS | ||
2214 | ahd_reg_print_t ahd_mk_message_scsiid_print; | ||
2215 | #else | ||
2216 | #define ahd_mk_message_scsiid_print(regvalue, cur_col, wrap) \ | ||
2217 | ahd_print_register(NULL, 0, "MK_MESSAGE_SCSIID", 0x162, regvalue, cur_col, wrap) | ||
2218 | #endif | ||
2219 | |||
2220 | #if AIC_DEBUG_REGISTERS | ||
2207 | ahd_reg_print_t ahd_scb_base_print; | 2221 | ahd_reg_print_t ahd_scb_base_print; |
2208 | #else | 2222 | #else |
2209 | #define ahd_scb_base_print(regvalue, cur_col, wrap) \ | 2223 | #define ahd_scb_base_print(regvalue, cur_col, wrap) \ |
@@ -3638,6 +3652,7 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3638 | #define SEQ_FLAGS2 0x14d | 3652 | #define SEQ_FLAGS2 0x14d |
3639 | #define SELECTOUT_QFROZEN 0x04 | 3653 | #define SELECTOUT_QFROZEN 0x04 |
3640 | #define TARGET_MSG_PENDING 0x02 | 3654 | #define TARGET_MSG_PENDING 0x02 |
3655 | #define PENDING_MK_MESSAGE 0x01 | ||
3641 | 3656 | ||
3642 | #define ALLOCFIFO_SCBPTR 0x14e | 3657 | #define ALLOCFIFO_SCBPTR 0x14e |
3643 | 3658 | ||
@@ -3655,6 +3670,10 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3655 | 3670 | ||
3656 | #define CMDSIZE_TABLE 0x158 | 3671 | #define CMDSIZE_TABLE 0x158 |
3657 | 3672 | ||
3673 | #define MK_MESSAGE_SCB 0x160 | ||
3674 | |||
3675 | #define MK_MESSAGE_SCSIID 0x162 | ||
3676 | |||
3658 | #define SCB_BASE 0x180 | 3677 | #define SCB_BASE 0x180 |
3659 | 3678 | ||
3660 | #define SCB_RESIDUAL_DATACNT 0x180 | 3679 | #define SCB_RESIDUAL_DATACNT 0x180 |
@@ -3800,5 +3819,5 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3800 | 3819 | ||
3801 | 3820 | ||
3802 | /* Exported Labels */ | 3821 | /* Exported Labels */ |
3803 | #define LABEL_seq_isr 0x285 | 3822 | #define LABEL_seq_isr 0x28f |
3804 | #define LABEL_timer_isr 0x281 | 3823 | #define LABEL_timer_isr 0x28b |
diff --git a/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped b/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped index a4137c985376..db38a61a8cb4 100644 --- a/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped +++ b/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped | |||
@@ -2,8 +2,8 @@ | |||
2 | * DO NOT EDIT - This file is automatically generated | 2 | * DO NOT EDIT - This file is automatically generated |
3 | * from the following source files: | 3 | * from the following source files: |
4 | * | 4 | * |
5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#118 $ | 5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#120 $ |
6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#75 $ | 6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#77 $ |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include "aic79xx_osm.h" | 9 | #include "aic79xx_osm.h" |
@@ -3382,6 +3382,7 @@ ahd_initiator_tag_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
3382 | } | 3382 | } |
3383 | 3383 | ||
3384 | static ahd_reg_parse_entry_t SEQ_FLAGS2_parse_table[] = { | 3384 | static ahd_reg_parse_entry_t SEQ_FLAGS2_parse_table[] = { |
3385 | { "PENDING_MK_MESSAGE", 0x01, 0x01 }, | ||
3385 | { "TARGET_MSG_PENDING", 0x02, 0x02 }, | 3386 | { "TARGET_MSG_PENDING", 0x02, 0x02 }, |
3386 | { "SELECTOUT_QFROZEN", 0x04, 0x04 } | 3387 | { "SELECTOUT_QFROZEN", 0x04, 0x04 } |
3387 | }; | 3388 | }; |
@@ -3389,7 +3390,7 @@ static ahd_reg_parse_entry_t SEQ_FLAGS2_parse_table[] = { | |||
3389 | int | 3390 | int |
3390 | ahd_seq_flags2_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3391 | ahd_seq_flags2_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3391 | { | 3392 | { |
3392 | return (ahd_print_register(SEQ_FLAGS2_parse_table, 2, "SEQ_FLAGS2", | 3393 | return (ahd_print_register(SEQ_FLAGS2_parse_table, 3, "SEQ_FLAGS2", |
3393 | 0x14d, regvalue, cur_col, wrap)); | 3394 | 0x14d, regvalue, cur_col, wrap)); |
3394 | } | 3395 | } |
3395 | 3396 | ||
@@ -3450,6 +3451,20 @@ ahd_cmdsize_table_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
3450 | } | 3451 | } |
3451 | 3452 | ||
3452 | int | 3453 | int |
3454 | ahd_mk_message_scb_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
3455 | { | ||
3456 | return (ahd_print_register(NULL, 0, "MK_MESSAGE_SCB", | ||
3457 | 0x160, regvalue, cur_col, wrap)); | ||
3458 | } | ||
3459 | |||
3460 | int | ||
3461 | ahd_mk_message_scsiid_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
3462 | { | ||
3463 | return (ahd_print_register(NULL, 0, "MK_MESSAGE_SCSIID", | ||
3464 | 0x162, regvalue, cur_col, wrap)); | ||
3465 | } | ||
3466 | |||
3467 | int | ||
3453 | ahd_scb_base_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3468 | ahd_scb_base_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3454 | { | 3469 | { |
3455 | return (ahd_print_register(NULL, 0, "SCB_BASE", | 3470 | return (ahd_print_register(NULL, 0, "SCB_BASE", |
diff --git a/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped b/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped index b1e5365be230..11bed07e90b7 100644 --- a/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped +++ b/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped | |||
@@ -2,17 +2,17 @@ | |||
2 | * DO NOT EDIT - This file is automatically generated | 2 | * DO NOT EDIT - This file is automatically generated |
3 | * from the following source files: | 3 | * from the following source files: |
4 | * | 4 | * |
5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#119 $ | 5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#120 $ |
6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#76 $ | 6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#77 $ |
7 | */ | 7 | */ |
8 | static uint8_t seqprog[] = { | 8 | static uint8_t seqprog[] = { |
9 | 0xff, 0x02, 0x06, 0x78, | 9 | 0xff, 0x02, 0x06, 0x78, |
10 | 0x00, 0xea, 0x64, 0x59, | 10 | 0x00, 0xea, 0x6e, 0x59, |
11 | 0x01, 0xea, 0x04, 0x30, | 11 | 0x01, 0xea, 0x04, 0x30, |
12 | 0xff, 0x04, 0x0c, 0x78, | 12 | 0xff, 0x04, 0x0c, 0x78, |
13 | 0x19, 0xea, 0x64, 0x59, | 13 | 0x19, 0xea, 0x6e, 0x59, |
14 | 0x19, 0xea, 0x04, 0x00, | 14 | 0x19, 0xea, 0x04, 0x00, |
15 | 0x33, 0xea, 0x5e, 0x59, | 15 | 0x33, 0xea, 0x68, 0x59, |
16 | 0x33, 0xea, 0x00, 0x00, | 16 | 0x33, 0xea, 0x00, 0x00, |
17 | 0x60, 0x3a, 0x3a, 0x68, | 17 | 0x60, 0x3a, 0x3a, 0x68, |
18 | 0x04, 0x4d, 0x35, 0x78, | 18 | 0x04, 0x4d, 0x35, 0x78, |
@@ -33,15 +33,15 @@ static uint8_t seqprog[] = { | |||
33 | 0xff, 0xea, 0x62, 0x02, | 33 | 0xff, 0xea, 0x62, 0x02, |
34 | 0x00, 0xe2, 0x3a, 0x40, | 34 | 0x00, 0xe2, 0x3a, 0x40, |
35 | 0xff, 0x21, 0x3b, 0x70, | 35 | 0xff, 0x21, 0x3b, 0x70, |
36 | 0x40, 0x4b, 0xaa, 0x69, | 36 | 0x40, 0x4b, 0xb4, 0x69, |
37 | 0x00, 0xe2, 0x68, 0x59, | 37 | 0x00, 0xe2, 0x72, 0x59, |
38 | 0x40, 0x4b, 0xaa, 0x69, | 38 | 0x40, 0x4b, 0xb4, 0x69, |
39 | 0x20, 0x4b, 0x96, 0x69, | 39 | 0x20, 0x4b, 0xa0, 0x69, |
40 | 0xfc, 0x42, 0x44, 0x78, | 40 | 0xfc, 0x42, 0x44, 0x78, |
41 | 0x10, 0x40, 0x44, 0x78, | 41 | 0x10, 0x40, 0x44, 0x78, |
42 | 0x00, 0xe2, 0xfc, 0x5d, | 42 | 0x00, 0xe2, 0x10, 0x5e, |
43 | 0x20, 0x4d, 0x48, 0x78, | 43 | 0x20, 0x4d, 0x48, 0x78, |
44 | 0x00, 0xe2, 0xfc, 0x5d, | 44 | 0x00, 0xe2, 0x10, 0x5e, |
45 | 0x30, 0x3f, 0xc0, 0x09, | 45 | 0x30, 0x3f, 0xc0, 0x09, |
46 | 0x30, 0xe0, 0x50, 0x60, | 46 | 0x30, 0xe0, 0x50, 0x60, |
47 | 0x7f, 0x4a, 0x94, 0x08, | 47 | 0x7f, 0x4a, 0x94, 0x08, |
@@ -51,7 +51,7 @@ static uint8_t seqprog[] = { | |||
51 | 0x00, 0xe2, 0x76, 0x58, | 51 | 0x00, 0xe2, 0x76, 0x58, |
52 | 0x00, 0xe2, 0x86, 0x58, | 52 | 0x00, 0xe2, 0x86, 0x58, |
53 | 0x00, 0xe2, 0x06, 0x40, | 53 | 0x00, 0xe2, 0x06, 0x40, |
54 | 0x33, 0xea, 0x5e, 0x59, | 54 | 0x33, 0xea, 0x68, 0x59, |
55 | 0x33, 0xea, 0x00, 0x00, | 55 | 0x33, 0xea, 0x00, 0x00, |
56 | 0x01, 0x52, 0x84, 0x78, | 56 | 0x01, 0x52, 0x84, 0x78, |
57 | 0x02, 0x58, 0x50, 0x31, | 57 | 0x02, 0x58, 0x50, 0x31, |
@@ -59,26 +59,26 @@ static uint8_t seqprog[] = { | |||
59 | 0xff, 0x97, 0x6f, 0x78, | 59 | 0xff, 0x97, 0x6f, 0x78, |
60 | 0x50, 0x4b, 0x6a, 0x68, | 60 | 0x50, 0x4b, 0x6a, 0x68, |
61 | 0xbf, 0x3a, 0x74, 0x08, | 61 | 0xbf, 0x3a, 0x74, 0x08, |
62 | 0x14, 0xea, 0x64, 0x59, | 62 | 0x14, 0xea, 0x6e, 0x59, |
63 | 0x14, 0xea, 0x04, 0x00, | 63 | 0x14, 0xea, 0x04, 0x00, |
64 | 0x08, 0x92, 0x25, 0x03, | 64 | 0x08, 0x92, 0x25, 0x03, |
65 | 0xff, 0x90, 0x5f, 0x68, | 65 | 0xff, 0x90, 0x5f, 0x68, |
66 | 0x00, 0xe2, 0x76, 0x5b, | 66 | 0x00, 0xe2, 0x8a, 0x5b, |
67 | 0x00, 0xe2, 0x5e, 0x40, | 67 | 0x00, 0xe2, 0x5e, 0x40, |
68 | 0x00, 0xea, 0x5e, 0x59, | 68 | 0x00, 0xea, 0x68, 0x59, |
69 | 0x01, 0xea, 0x00, 0x30, | 69 | 0x01, 0xea, 0x00, 0x30, |
70 | 0x80, 0xf9, 0x7e, 0x68, | 70 | 0x80, 0xf9, 0x7e, 0x68, |
71 | 0x00, 0xe2, 0x5c, 0x59, | 71 | 0x00, 0xe2, 0x66, 0x59, |
72 | 0x11, 0xea, 0x5e, 0x59, | 72 | 0x11, 0xea, 0x68, 0x59, |
73 | 0x11, 0xea, 0x00, 0x00, | 73 | 0x11, 0xea, 0x00, 0x00, |
74 | 0x80, 0xf9, 0x5c, 0x79, | 74 | 0x80, 0xf9, 0x66, 0x79, |
75 | 0xff, 0xea, 0xd4, 0x0d, | 75 | 0xff, 0xea, 0xd4, 0x0d, |
76 | 0x22, 0xea, 0x5e, 0x59, | 76 | 0x22, 0xea, 0x68, 0x59, |
77 | 0x22, 0xea, 0x00, 0x00, | 77 | 0x22, 0xea, 0x00, 0x00, |
78 | 0x10, 0x16, 0x90, 0x78, | 78 | 0x10, 0x16, 0x90, 0x78, |
79 | 0x10, 0x16, 0x2c, 0x00, | 79 | 0x10, 0x16, 0x2c, 0x00, |
80 | 0x01, 0x0b, 0xae, 0x32, | 80 | 0x01, 0x0b, 0xae, 0x32, |
81 | 0x18, 0xad, 0x12, 0x79, | 81 | 0x18, 0xad, 0x1c, 0x79, |
82 | 0x04, 0xad, 0xdc, 0x68, | 82 | 0x04, 0xad, 0xdc, 0x68, |
83 | 0x80, 0xad, 0x84, 0x78, | 83 | 0x80, 0xad, 0x84, 0x78, |
84 | 0x10, 0xad, 0xaa, 0x78, | 84 | 0x10, 0xad, 0xaa, 0x78, |
@@ -118,7 +118,6 @@ static uint8_t seqprog[] = { | |||
118 | 0x80, 0x18, 0x30, 0x04, | 118 | 0x80, 0x18, 0x30, 0x04, |
119 | 0x40, 0xad, 0x84, 0x78, | 119 | 0x40, 0xad, 0x84, 0x78, |
120 | 0xe7, 0xad, 0x5a, 0x09, | 120 | 0xe7, 0xad, 0x5a, 0x09, |
121 | 0x02, 0xa8, 0x40, 0x31, | ||
122 | 0xff, 0xea, 0xc0, 0x09, | 121 | 0xff, 0xea, 0xc0, 0x09, |
123 | 0x01, 0x54, 0xa9, 0x1a, | 122 | 0x01, 0x54, 0xa9, 0x1a, |
124 | 0x00, 0x55, 0xab, 0x22, | 123 | 0x00, 0x55, 0xab, 0x22, |
@@ -128,24 +127,30 @@ static uint8_t seqprog[] = { | |||
128 | 0xff, 0xea, 0x5a, 0x03, | 127 | 0xff, 0xea, 0x5a, 0x03, |
129 | 0xff, 0xea, 0x5e, 0x03, | 128 | 0xff, 0xea, 0x5e, 0x03, |
130 | 0x01, 0x10, 0xd4, 0x31, | 129 | 0x01, 0x10, 0xd4, 0x31, |
131 | 0x10, 0x92, 0x07, 0x69, | 130 | 0x02, 0xa8, 0x40, 0x31, |
131 | 0x01, 0x92, 0xc1, 0x31, | ||
132 | 0x3d, 0x93, 0xc5, 0x29, | 132 | 0x3d, 0x93, 0xc5, 0x29, |
133 | 0xfe, 0xe2, 0xc4, 0x09, | 133 | 0xfe, 0xe2, 0xc4, 0x09, |
134 | 0x01, 0xea, 0xc6, 0x01, | 134 | 0x01, 0xea, 0xc6, 0x01, |
135 | 0x02, 0xe2, 0xc8, 0x31, | 135 | 0x02, 0xe2, 0xc8, 0x31, |
136 | 0x02, 0xec, 0x50, 0x31, | 136 | 0x02, 0xec, 0x50, 0x31, |
137 | 0x02, 0xa0, 0xda, 0x31, | 137 | 0x02, 0xa0, 0xda, 0x31, |
138 | 0xff, 0xa9, 0x06, 0x71, | 138 | 0xff, 0xa9, 0x10, 0x71, |
139 | 0x10, 0xe0, 0x0e, 0x79, | ||
140 | 0x10, 0x92, 0x0f, 0x79, | ||
141 | 0x01, 0x4d, 0x9b, 0x02, | ||
142 | 0x02, 0xa0, 0xc0, 0x32, | ||
143 | 0x01, 0x93, 0xc5, 0x36, | ||
139 | 0x02, 0xa0, 0x58, 0x37, | 144 | 0x02, 0xa0, 0x58, 0x37, |
140 | 0xff, 0x21, 0x0f, 0x71, | 145 | 0xff, 0x21, 0x19, 0x71, |
141 | 0x02, 0x22, 0x51, 0x31, | 146 | 0x02, 0x22, 0x51, 0x31, |
142 | 0x02, 0xa0, 0x5c, 0x33, | 147 | 0x02, 0xa0, 0x5c, 0x33, |
143 | 0x02, 0xa0, 0x44, 0x36, | 148 | 0x02, 0xa0, 0x44, 0x36, |
144 | 0x02, 0xa0, 0x40, 0x32, | 149 | 0x02, 0xa0, 0x40, 0x32, |
145 | 0x02, 0xa0, 0x44, 0x36, | 150 | 0x02, 0xa0, 0x44, 0x36, |
146 | 0x04, 0x4d, 0x17, 0x69, | 151 | 0x05, 0x4d, 0x21, 0x69, |
147 | 0x40, 0x16, 0x48, 0x69, | 152 | 0x40, 0x16, 0x52, 0x69, |
148 | 0xff, 0x2d, 0x4d, 0x61, | 153 | 0xff, 0x2d, 0x57, 0x61, |
149 | 0xff, 0x29, 0x85, 0x70, | 154 | 0xff, 0x29, 0x85, 0x70, |
150 | 0x02, 0x28, 0x55, 0x32, | 155 | 0x02, 0x28, 0x55, 0x32, |
151 | 0x01, 0xea, 0x5a, 0x01, | 156 | 0x01, 0xea, 0x5a, 0x01, |
@@ -159,22 +164,22 @@ static uint8_t seqprog[] = { | |||
159 | 0x01, 0x56, 0xad, 0x1a, | 164 | 0x01, 0x56, 0xad, 0x1a, |
160 | 0xff, 0x54, 0xa9, 0x1a, | 165 | 0xff, 0x54, 0xa9, 0x1a, |
161 | 0xff, 0x55, 0xab, 0x22, | 166 | 0xff, 0x55, 0xab, 0x22, |
162 | 0xff, 0x8d, 0x41, 0x71, | 167 | 0xff, 0x8d, 0x4b, 0x71, |
163 | 0x80, 0xac, 0x40, 0x71, | 168 | 0x80, 0xac, 0x4a, 0x71, |
164 | 0x20, 0x16, 0x40, 0x69, | 169 | 0x20, 0x16, 0x4a, 0x69, |
165 | 0x00, 0xac, 0xc4, 0x19, | 170 | 0x00, 0xac, 0xc4, 0x19, |
166 | 0x07, 0xe2, 0x40, 0xf9, | 171 | 0x07, 0xe2, 0x4a, 0xf9, |
167 | 0x02, 0x8c, 0x51, 0x31, | 172 | 0x02, 0x8c, 0x51, 0x31, |
168 | 0x00, 0xe2, 0x24, 0x41, | 173 | 0x00, 0xe2, 0x2e, 0x41, |
169 | 0x01, 0xac, 0x08, 0x31, | 174 | 0x01, 0xac, 0x08, 0x31, |
170 | 0x09, 0xea, 0x5a, 0x01, | 175 | 0x09, 0xea, 0x5a, 0x01, |
171 | 0x02, 0x8c, 0x51, 0x32, | 176 | 0x02, 0x8c, 0x51, 0x32, |
172 | 0xff, 0xea, 0x1a, 0x07, | 177 | 0xff, 0xea, 0x1a, 0x07, |
173 | 0x04, 0x24, 0xf9, 0x30, | 178 | 0x04, 0x24, 0xf9, 0x30, |
174 | 0x1d, 0xea, 0x52, 0x41, | 179 | 0x1d, 0xea, 0x5c, 0x41, |
175 | 0x02, 0x2c, 0x51, 0x31, | 180 | 0x02, 0x2c, 0x51, 0x31, |
176 | 0x04, 0xa8, 0xf9, 0x30, | 181 | 0x04, 0xa8, 0xf9, 0x30, |
177 | 0x19, 0xea, 0x52, 0x41, | 182 | 0x19, 0xea, 0x5c, 0x41, |
178 | 0x06, 0xea, 0x08, 0x81, | 183 | 0x06, 0xea, 0x08, 0x81, |
179 | 0x01, 0xe2, 0x5a, 0x35, | 184 | 0x01, 0xe2, 0x5a, 0x35, |
180 | 0x02, 0xf2, 0xf0, 0x31, | 185 | 0x02, 0xf2, 0xf0, 0x31, |
@@ -190,27 +195,27 @@ static uint8_t seqprog[] = { | |||
190 | 0x02, 0x20, 0xb9, 0x30, | 195 | 0x02, 0x20, 0xb9, 0x30, |
191 | 0x02, 0x20, 0x51, 0x31, | 196 | 0x02, 0x20, 0x51, 0x31, |
192 | 0x4c, 0x93, 0xd7, 0x28, | 197 | 0x4c, 0x93, 0xd7, 0x28, |
193 | 0x10, 0x92, 0x77, 0x79, | 198 | 0x10, 0x92, 0x81, 0x79, |
194 | 0x01, 0x6b, 0xc0, 0x30, | 199 | 0x01, 0x6b, 0xc0, 0x30, |
195 | 0x02, 0x64, 0xc8, 0x00, | 200 | 0x02, 0x64, 0xc8, 0x00, |
196 | 0x40, 0x3a, 0x74, 0x04, | 201 | 0x40, 0x3a, 0x74, 0x04, |
197 | 0x00, 0xe2, 0x76, 0x58, | 202 | 0x00, 0xe2, 0x76, 0x58, |
198 | 0x33, 0xea, 0x5e, 0x59, | 203 | 0x33, 0xea, 0x68, 0x59, |
199 | 0x33, 0xea, 0x00, 0x00, | 204 | 0x33, 0xea, 0x00, 0x00, |
200 | 0x30, 0x3f, 0xc0, 0x09, | 205 | 0x30, 0x3f, 0xc0, 0x09, |
201 | 0x30, 0xe0, 0x78, 0x61, | 206 | 0x30, 0xe0, 0x82, 0x61, |
202 | 0x20, 0x3f, 0x8e, 0x69, | 207 | 0x20, 0x3f, 0x98, 0x69, |
203 | 0x10, 0x3f, 0x78, 0x79, | 208 | 0x10, 0x3f, 0x82, 0x79, |
204 | 0x02, 0xea, 0x7e, 0x00, | 209 | 0x02, 0xea, 0x7e, 0x00, |
205 | 0x00, 0xea, 0x5e, 0x59, | 210 | 0x00, 0xea, 0x68, 0x59, |
206 | 0x01, 0xea, 0x00, 0x30, | 211 | 0x01, 0xea, 0x00, 0x30, |
207 | 0x02, 0x4e, 0x51, 0x35, | 212 | 0x02, 0x4e, 0x51, 0x35, |
208 | 0x01, 0xea, 0x7e, 0x00, | 213 | 0x01, 0xea, 0x7e, 0x00, |
209 | 0x11, 0xea, 0x5e, 0x59, | 214 | 0x11, 0xea, 0x68, 0x59, |
210 | 0x11, 0xea, 0x00, 0x00, | 215 | 0x11, 0xea, 0x00, 0x00, |
211 | 0x02, 0x4e, 0x51, 0x35, | 216 | 0x02, 0x4e, 0x51, 0x35, |
212 | 0xc0, 0x4a, 0x94, 0x00, | 217 | 0xc0, 0x4a, 0x94, 0x00, |
213 | 0x04, 0x41, 0x9c, 0x79, | 218 | 0x04, 0x41, 0xa6, 0x79, |
214 | 0x08, 0xea, 0x98, 0x00, | 219 | 0x08, 0xea, 0x98, 0x00, |
215 | 0x08, 0x57, 0xae, 0x00, | 220 | 0x08, 0x57, 0xae, 0x00, |
216 | 0x08, 0x3c, 0x78, 0x00, | 221 | 0x08, 0x3c, 0x78, 0x00, |
@@ -218,12 +223,12 @@ static uint8_t seqprog[] = { | |||
218 | 0x0f, 0x67, 0xc0, 0x09, | 223 | 0x0f, 0x67, 0xc0, 0x09, |
219 | 0x00, 0x3a, 0x75, 0x02, | 224 | 0x00, 0x3a, 0x75, 0x02, |
220 | 0x20, 0xea, 0x96, 0x00, | 225 | 0x20, 0xea, 0x96, 0x00, |
221 | 0x00, 0xe2, 0x14, 0x42, | 226 | 0x00, 0xe2, 0x28, 0x42, |
222 | 0xc0, 0x4a, 0x94, 0x00, | 227 | 0xc0, 0x4a, 0x94, 0x00, |
223 | 0x40, 0x3a, 0xc8, 0x69, | 228 | 0x40, 0x3a, 0xd2, 0x69, |
224 | 0x02, 0x55, 0x06, 0x68, | 229 | 0x02, 0x55, 0x06, 0x68, |
225 | 0x02, 0x56, 0xc8, 0x69, | 230 | 0x02, 0x56, 0xd2, 0x69, |
226 | 0xff, 0x5b, 0xc8, 0x61, | 231 | 0xff, 0x5b, 0xd2, 0x61, |
227 | 0x02, 0x20, 0x51, 0x31, | 232 | 0x02, 0x20, 0x51, 0x31, |
228 | 0x80, 0xea, 0xb2, 0x01, | 233 | 0x80, 0xea, 0xb2, 0x01, |
229 | 0x44, 0xea, 0x00, 0x00, | 234 | 0x44, 0xea, 0x00, 0x00, |
@@ -231,40 +236,45 @@ static uint8_t seqprog[] = { | |||
231 | 0x33, 0xea, 0x00, 0x00, | 236 | 0x33, 0xea, 0x00, 0x00, |
232 | 0xff, 0xea, 0xb2, 0x09, | 237 | 0xff, 0xea, 0xb2, 0x09, |
233 | 0xff, 0xe0, 0xc0, 0x19, | 238 | 0xff, 0xe0, 0xc0, 0x19, |
234 | 0xff, 0xe0, 0xca, 0x79, | 239 | 0xff, 0xe0, 0xd4, 0x79, |
235 | 0x02, 0xac, 0x51, 0x31, | 240 | 0x02, 0xac, 0x51, 0x31, |
236 | 0x00, 0xe2, 0xc0, 0x41, | 241 | 0x00, 0xe2, 0xca, 0x41, |
237 | 0x02, 0x5e, 0x50, 0x31, | 242 | 0x02, 0x5e, 0x50, 0x31, |
238 | 0x02, 0xa8, 0xb8, 0x30, | 243 | 0x02, 0xa8, 0xb8, 0x30, |
239 | 0x02, 0x5c, 0x50, 0x31, | 244 | 0x02, 0x5c, 0x50, 0x31, |
240 | 0xff, 0xad, 0xdb, 0x71, | 245 | 0xff, 0xad, 0xe5, 0x71, |
241 | 0x02, 0xac, 0x41, 0x31, | 246 | 0x02, 0xac, 0x41, 0x31, |
242 | 0x02, 0x22, 0x51, 0x31, | 247 | 0x02, 0x22, 0x51, 0x31, |
243 | 0x02, 0xa0, 0x5c, 0x33, | 248 | 0x02, 0xa0, 0x5c, 0x33, |
244 | 0x02, 0xa0, 0x44, 0x32, | 249 | 0x02, 0xa0, 0x44, 0x32, |
245 | 0x00, 0xe2, 0xe4, 0x41, | 250 | 0x00, 0xe2, 0xf8, 0x41, |
246 | 0x10, 0x92, 0xe5, 0x69, | 251 | 0x01, 0x4d, 0xf1, 0x79, |
252 | 0x01, 0x62, 0xc1, 0x31, | ||
253 | 0x00, 0x93, 0xf1, 0x61, | ||
254 | 0xfe, 0x4d, 0x9b, 0x0a, | ||
255 | 0x02, 0x60, 0x41, 0x31, | ||
256 | 0x00, 0xe2, 0xdc, 0x41, | ||
247 | 0x3d, 0x93, 0xc9, 0x29, | 257 | 0x3d, 0x93, 0xc9, 0x29, |
248 | 0x01, 0xe4, 0xc8, 0x01, | 258 | 0x01, 0xe4, 0xc8, 0x01, |
249 | 0x01, 0xea, 0xca, 0x01, | 259 | 0x01, 0xea, 0xca, 0x01, |
250 | 0xff, 0xea, 0xda, 0x01, | 260 | 0xff, 0xea, 0xda, 0x01, |
251 | 0x02, 0x20, 0x51, 0x31, | 261 | 0x02, 0x20, 0x51, 0x31, |
252 | 0x02, 0xae, 0x41, 0x32, | 262 | 0x02, 0xae, 0x41, 0x32, |
253 | 0xff, 0x21, 0xed, 0x61, | 263 | 0xff, 0x21, 0x01, 0x62, |
254 | 0xff, 0xea, 0x46, 0x02, | 264 | 0xff, 0xea, 0x46, 0x02, |
255 | 0x02, 0x5c, 0x50, 0x31, | 265 | 0x02, 0x5c, 0x50, 0x31, |
256 | 0x40, 0xea, 0x96, 0x00, | 266 | 0x40, 0xea, 0x96, 0x00, |
257 | 0x02, 0x56, 0x04, 0x6e, | 267 | 0x02, 0x56, 0x20, 0x6e, |
258 | 0x01, 0x55, 0x04, 0x6e, | 268 | 0x01, 0x55, 0x20, 0x6e, |
259 | 0x10, 0x92, 0xf9, 0x79, | 269 | 0x10, 0x92, 0x0d, 0x7a, |
260 | 0x10, 0x40, 0x02, 0x6a, | 270 | 0x10, 0x40, 0x16, 0x6a, |
261 | 0x01, 0x56, 0x02, 0x7a, | 271 | 0x01, 0x56, 0x16, 0x7a, |
262 | 0xff, 0x97, 0x07, 0x78, | 272 | 0xff, 0x97, 0x07, 0x78, |
263 | 0x13, 0xea, 0x64, 0x59, | 273 | 0x13, 0xea, 0x6e, 0x59, |
264 | 0x13, 0xea, 0x04, 0x00, | 274 | 0x13, 0xea, 0x04, 0x00, |
265 | 0x00, 0xe2, 0x06, 0x40, | 275 | 0x00, 0xe2, 0x06, 0x40, |
266 | 0xbf, 0x3a, 0x74, 0x08, | 276 | 0xbf, 0x3a, 0x74, 0x08, |
267 | 0x04, 0x41, 0x08, 0x7a, | 277 | 0x04, 0x41, 0x1c, 0x7a, |
268 | 0x08, 0xea, 0x98, 0x00, | 278 | 0x08, 0xea, 0x98, 0x00, |
269 | 0x08, 0x57, 0xae, 0x00, | 279 | 0x08, 0x57, 0xae, 0x00, |
270 | 0x01, 0x93, 0x75, 0x32, | 280 | 0x01, 0x93, 0x75, 0x32, |
@@ -272,108 +282,108 @@ static uint8_t seqprog[] = { | |||
272 | 0x40, 0xea, 0x72, 0x02, | 282 | 0x40, 0xea, 0x72, 0x02, |
273 | 0x08, 0x3c, 0x78, 0x00, | 283 | 0x08, 0x3c, 0x78, 0x00, |
274 | 0x80, 0xea, 0x6e, 0x02, | 284 | 0x80, 0xea, 0x6e, 0x02, |
275 | 0x00, 0xe2, 0xe2, 0x5b, | 285 | 0x00, 0xe2, 0xf6, 0x5b, |
276 | 0x01, 0x3c, 0xc1, 0x31, | 286 | 0x01, 0x3c, 0xc1, 0x31, |
277 | 0x9f, 0xe0, 0x84, 0x7c, | 287 | 0x9f, 0xe0, 0x98, 0x7c, |
278 | 0x80, 0xe0, 0x28, 0x72, | 288 | 0x80, 0xe0, 0x3c, 0x72, |
279 | 0xa0, 0xe0, 0x64, 0x72, | 289 | 0xa0, 0xe0, 0x78, 0x72, |
280 | 0xc0, 0xe0, 0x5a, 0x72, | 290 | 0xc0, 0xe0, 0x6e, 0x72, |
281 | 0xe0, 0xe0, 0x94, 0x72, | 291 | 0xe0, 0xe0, 0xa8, 0x72, |
282 | 0x01, 0xea, 0x64, 0x59, | 292 | 0x01, 0xea, 0x6e, 0x59, |
283 | 0x01, 0xea, 0x04, 0x00, | 293 | 0x01, 0xea, 0x04, 0x00, |
284 | 0x00, 0xe2, 0x14, 0x42, | 294 | 0x00, 0xe2, 0x28, 0x42, |
285 | 0x80, 0x39, 0x2f, 0x7a, | 295 | 0x80, 0x39, 0x43, 0x7a, |
286 | 0x03, 0xea, 0x64, 0x59, | 296 | 0x03, 0xea, 0x6e, 0x59, |
287 | 0x03, 0xea, 0x04, 0x00, | 297 | 0x03, 0xea, 0x04, 0x00, |
288 | 0xee, 0x00, 0x36, 0x6a, | 298 | 0xee, 0x00, 0x4a, 0x6a, |
289 | 0x05, 0xea, 0xb4, 0x00, | 299 | 0x05, 0xea, 0xb4, 0x00, |
290 | 0x33, 0xea, 0x5e, 0x59, | 300 | 0x33, 0xea, 0x68, 0x59, |
291 | 0x33, 0xea, 0x00, 0x00, | 301 | 0x33, 0xea, 0x00, 0x00, |
292 | 0x02, 0xa8, 0x9c, 0x32, | 302 | 0x02, 0xa8, 0x9c, 0x32, |
293 | 0x00, 0xe2, 0x7e, 0x59, | 303 | 0x00, 0xe2, 0x88, 0x59, |
294 | 0xef, 0x96, 0xd5, 0x19, | 304 | 0xef, 0x96, 0xd5, 0x19, |
295 | 0x00, 0xe2, 0x46, 0x52, | 305 | 0x00, 0xe2, 0x5a, 0x52, |
296 | 0x09, 0x80, 0xe1, 0x30, | 306 | 0x09, 0x80, 0xe1, 0x30, |
297 | 0x02, 0xea, 0x36, 0x00, | 307 | 0x02, 0xea, 0x36, 0x00, |
298 | 0xa8, 0xea, 0x32, 0x00, | 308 | 0xa8, 0xea, 0x32, 0x00, |
299 | 0x00, 0xe2, 0x4c, 0x42, | 309 | 0x00, 0xe2, 0x60, 0x42, |
300 | 0x01, 0x96, 0xd1, 0x30, | 310 | 0x01, 0x96, 0xd1, 0x30, |
301 | 0x10, 0x80, 0x89, 0x31, | 311 | 0x10, 0x80, 0x89, 0x31, |
302 | 0x20, 0xea, 0x32, 0x00, | 312 | 0x20, 0xea, 0x32, 0x00, |
303 | 0xbf, 0x39, 0x73, 0x0a, | 313 | 0xbf, 0x39, 0x73, 0x0a, |
304 | 0x10, 0x4c, 0x56, 0x6a, | 314 | 0x10, 0x4c, 0x6a, 0x6a, |
305 | 0x20, 0x19, 0x4e, 0x6a, | 315 | 0x20, 0x19, 0x62, 0x6a, |
306 | 0x20, 0x19, 0x52, 0x6a, | 316 | 0x20, 0x19, 0x66, 0x6a, |
307 | 0x02, 0x4d, 0x14, 0x6a, | 317 | 0x02, 0x4d, 0x28, 0x6a, |
308 | 0x40, 0x39, 0x73, 0x02, | 318 | 0x40, 0x39, 0x73, 0x02, |
309 | 0x00, 0xe2, 0x14, 0x42, | 319 | 0x00, 0xe2, 0x28, 0x42, |
310 | 0x80, 0x39, 0xd5, 0x6a, | 320 | 0x80, 0x39, 0xe9, 0x6a, |
311 | 0x01, 0x44, 0x10, 0x33, | 321 | 0x01, 0x44, 0x10, 0x33, |
312 | 0x08, 0x92, 0x25, 0x03, | 322 | 0x08, 0x92, 0x25, 0x03, |
313 | 0x00, 0xe2, 0x14, 0x42, | 323 | 0x00, 0xe2, 0x28, 0x42, |
314 | 0x10, 0xea, 0x80, 0x00, | 324 | 0x10, 0xea, 0x80, 0x00, |
315 | 0x01, 0x37, 0xc5, 0x31, | 325 | 0x01, 0x37, 0xc5, 0x31, |
316 | 0x80, 0xe2, 0x80, 0x62, | 326 | 0x80, 0xe2, 0x94, 0x62, |
317 | 0x10, 0x92, 0xa5, 0x6a, | 327 | 0x10, 0x92, 0xb9, 0x6a, |
318 | 0xc0, 0x94, 0xc5, 0x01, | 328 | 0xc0, 0x94, 0xc5, 0x01, |
319 | 0x40, 0x92, 0x71, 0x6a, | 329 | 0x40, 0x92, 0x85, 0x6a, |
320 | 0xbf, 0xe2, 0xc4, 0x09, | 330 | 0xbf, 0xe2, 0xc4, 0x09, |
321 | 0x20, 0x92, 0x85, 0x7a, | 331 | 0x20, 0x92, 0x99, 0x7a, |
322 | 0x01, 0xe2, 0x88, 0x30, | 332 | 0x01, 0xe2, 0x88, 0x30, |
323 | 0x00, 0xe2, 0xe2, 0x5b, | 333 | 0x00, 0xe2, 0xf6, 0x5b, |
324 | 0xa0, 0x3c, 0x8d, 0x62, | 334 | 0xa0, 0x3c, 0xa1, 0x62, |
325 | 0x23, 0x92, 0x89, 0x08, | 335 | 0x23, 0x92, 0x89, 0x08, |
326 | 0x00, 0xe2, 0xe2, 0x5b, | 336 | 0x00, 0xe2, 0xf6, 0x5b, |
327 | 0xa0, 0x3c, 0x8d, 0x62, | 337 | 0xa0, 0x3c, 0xa1, 0x62, |
328 | 0x00, 0xa8, 0x84, 0x42, | 338 | 0x00, 0xa8, 0x98, 0x42, |
329 | 0xff, 0xe2, 0x84, 0x62, | 339 | 0xff, 0xe2, 0x98, 0x62, |
330 | 0x00, 0xe2, 0xa4, 0x42, | 340 | 0x00, 0xe2, 0xb8, 0x42, |
331 | 0x40, 0xea, 0x98, 0x00, | 341 | 0x40, 0xea, 0x98, 0x00, |
332 | 0x01, 0xe2, 0x88, 0x30, | 342 | 0x01, 0xe2, 0x88, 0x30, |
333 | 0x00, 0xe2, 0xe2, 0x5b, | 343 | 0x00, 0xe2, 0xf6, 0x5b, |
334 | 0xa0, 0x3c, 0x63, 0x72, | 344 | 0xa0, 0x3c, 0x77, 0x72, |
335 | 0x40, 0xea, 0x98, 0x00, | 345 | 0x40, 0xea, 0x98, 0x00, |
336 | 0x01, 0x37, 0x95, 0x32, | 346 | 0x01, 0x37, 0x95, 0x32, |
337 | 0x08, 0xea, 0x6e, 0x02, | 347 | 0x08, 0xea, 0x6e, 0x02, |
338 | 0x00, 0xe2, 0x14, 0x42, | 348 | 0x00, 0xe2, 0x28, 0x42, |
339 | 0xe0, 0xea, 0xfe, 0x5b, | 349 | 0xe0, 0xea, 0x12, 0x5c, |
340 | 0x80, 0xe0, 0xe0, 0x6a, | 350 | 0x80, 0xe0, 0xf4, 0x6a, |
341 | 0x04, 0xe0, 0x92, 0x73, | 351 | 0x04, 0xe0, 0xa6, 0x73, |
342 | 0x02, 0xe0, 0xc4, 0x73, | 352 | 0x02, 0xe0, 0xd8, 0x73, |
343 | 0x00, 0xea, 0x3e, 0x73, | 353 | 0x00, 0xea, 0x52, 0x73, |
344 | 0x03, 0xe0, 0xd4, 0x73, | 354 | 0x03, 0xe0, 0xe8, 0x73, |
345 | 0x23, 0xe0, 0xb6, 0x72, | 355 | 0x23, 0xe0, 0xca, 0x72, |
346 | 0x08, 0xe0, 0xdc, 0x72, | 356 | 0x08, 0xe0, 0xf0, 0x72, |
347 | 0x00, 0xe2, 0xe2, 0x5b, | 357 | 0x00, 0xe2, 0xf6, 0x5b, |
348 | 0x07, 0xea, 0x64, 0x59, | 358 | 0x07, 0xea, 0x6e, 0x59, |
349 | 0x07, 0xea, 0x04, 0x00, | 359 | 0x07, 0xea, 0x04, 0x00, |
350 | 0x08, 0x48, 0x15, 0x72, | 360 | 0x08, 0x48, 0x29, 0x72, |
351 | 0x04, 0x48, 0xb3, 0x62, | 361 | 0x04, 0x48, 0xc7, 0x62, |
352 | 0x01, 0x49, 0x89, 0x30, | 362 | 0x01, 0x49, 0x89, 0x30, |
353 | 0x00, 0xe2, 0xa4, 0x42, | 363 | 0x00, 0xe2, 0xb8, 0x42, |
354 | 0x01, 0x44, 0xd4, 0x31, | 364 | 0x01, 0x44, 0xd4, 0x31, |
355 | 0x00, 0xe2, 0xa4, 0x42, | 365 | 0x00, 0xe2, 0xb8, 0x42, |
356 | 0x01, 0x00, 0x6c, 0x32, | 366 | 0x01, 0x00, 0x6c, 0x32, |
357 | 0x33, 0xea, 0x5e, 0x59, | 367 | 0x33, 0xea, 0x68, 0x59, |
358 | 0x33, 0xea, 0x00, 0x00, | 368 | 0x33, 0xea, 0x00, 0x00, |
359 | 0x4c, 0x3a, 0xc1, 0x28, | 369 | 0x4c, 0x3a, 0xc1, 0x28, |
360 | 0x01, 0x64, 0xc0, 0x31, | 370 | 0x01, 0x64, 0xc0, 0x31, |
361 | 0x00, 0x36, 0x5f, 0x59, | 371 | 0x00, 0x36, 0x69, 0x59, |
362 | 0x01, 0x36, 0x01, 0x30, | 372 | 0x01, 0x36, 0x01, 0x30, |
363 | 0x01, 0xe0, 0xda, 0x7a, | 373 | 0x01, 0xe0, 0xee, 0x7a, |
364 | 0xa0, 0xea, 0xf4, 0x5b, | 374 | 0xa0, 0xea, 0x08, 0x5c, |
365 | 0x01, 0xa0, 0xda, 0x62, | 375 | 0x01, 0xa0, 0xee, 0x62, |
366 | 0x01, 0x84, 0xcf, 0x7a, | 376 | 0x01, 0x84, 0xe3, 0x7a, |
367 | 0x01, 0x95, 0xdd, 0x6a, | 377 | 0x01, 0x95, 0xf1, 0x6a, |
368 | 0x05, 0xea, 0x64, 0x59, | 378 | 0x05, 0xea, 0x6e, 0x59, |
369 | 0x05, 0xea, 0x04, 0x00, | 379 | 0x05, 0xea, 0x04, 0x00, |
370 | 0x00, 0xe2, 0xdc, 0x42, | 380 | 0x00, 0xe2, 0xf0, 0x42, |
371 | 0x03, 0xea, 0x64, 0x59, | 381 | 0x03, 0xea, 0x6e, 0x59, |
372 | 0x03, 0xea, 0x04, 0x00, | 382 | 0x03, 0xea, 0x04, 0x00, |
373 | 0x00, 0xe2, 0xdc, 0x42, | 383 | 0x00, 0xe2, 0xf0, 0x42, |
374 | 0x07, 0xea, 0x06, 0x5c, | 384 | 0x07, 0xea, 0x1a, 0x5c, |
375 | 0x01, 0x44, 0xd4, 0x31, | 385 | 0x01, 0x44, 0xd4, 0x31, |
376 | 0x00, 0xe2, 0x14, 0x42, | 386 | 0x00, 0xe2, 0x28, 0x42, |
377 | 0x3f, 0xe0, 0x76, 0x0a, | 387 | 0x3f, 0xe0, 0x76, 0x0a, |
378 | 0xc0, 0x3a, 0xc1, 0x09, | 388 | 0xc0, 0x3a, 0xc1, 0x09, |
379 | 0x00, 0x3b, 0x51, 0x01, | 389 | 0x00, 0x3b, 0x51, 0x01, |
@@ -384,54 +394,54 @@ static uint8_t seqprog[] = { | |||
384 | 0x01, 0xea, 0xc6, 0x01, | 394 | 0x01, 0xea, 0xc6, 0x01, |
385 | 0x02, 0xe2, 0xc8, 0x31, | 395 | 0x02, 0xe2, 0xc8, 0x31, |
386 | 0x02, 0xec, 0x40, 0x31, | 396 | 0x02, 0xec, 0x40, 0x31, |
387 | 0xff, 0xa1, 0xfc, 0x72, | 397 | 0xff, 0xa1, 0x10, 0x73, |
388 | 0x02, 0xe8, 0xda, 0x31, | 398 | 0x02, 0xe8, 0xda, 0x31, |
389 | 0x02, 0xa0, 0x50, 0x31, | 399 | 0x02, 0xa0, 0x50, 0x31, |
390 | 0x00, 0xe2, 0x1e, 0x43, | 400 | 0x00, 0xe2, 0x32, 0x43, |
391 | 0x80, 0x39, 0x73, 0x02, | 401 | 0x80, 0x39, 0x73, 0x02, |
392 | 0x01, 0x44, 0xd4, 0x31, | 402 | 0x01, 0x44, 0xd4, 0x31, |
393 | 0x00, 0xe2, 0xe2, 0x5b, | 403 | 0x00, 0xe2, 0xf6, 0x5b, |
394 | 0x01, 0x39, 0x73, 0x02, | 404 | 0x01, 0x39, 0x73, 0x02, |
395 | 0xe0, 0x3c, 0x39, 0x63, | 405 | 0xe0, 0x3c, 0x4d, 0x63, |
396 | 0x02, 0x39, 0x73, 0x02, | 406 | 0x02, 0x39, 0x73, 0x02, |
397 | 0x20, 0x46, 0x32, 0x63, | 407 | 0x20, 0x46, 0x46, 0x63, |
398 | 0xff, 0xea, 0x52, 0x09, | 408 | 0xff, 0xea, 0x52, 0x09, |
399 | 0xa8, 0xea, 0xf4, 0x5b, | 409 | 0xa8, 0xea, 0x08, 0x5c, |
400 | 0x04, 0x92, 0x19, 0x7b, | 410 | 0x04, 0x92, 0x2d, 0x7b, |
401 | 0x01, 0x3a, 0xc1, 0x31, | 411 | 0x01, 0x3a, 0xc1, 0x31, |
402 | 0x00, 0x93, 0x19, 0x63, | 412 | 0x00, 0x93, 0x2d, 0x63, |
403 | 0x01, 0x3b, 0xc1, 0x31, | 413 | 0x01, 0x3b, 0xc1, 0x31, |
404 | 0x00, 0x94, 0x23, 0x73, | 414 | 0x00, 0x94, 0x37, 0x73, |
405 | 0x01, 0xa9, 0x52, 0x11, | 415 | 0x01, 0xa9, 0x52, 0x11, |
406 | 0xff, 0xa9, 0x0e, 0x6b, | 416 | 0xff, 0xa9, 0x22, 0x6b, |
407 | 0x00, 0xe2, 0x32, 0x43, | 417 | 0x00, 0xe2, 0x46, 0x43, |
408 | 0x10, 0x39, 0x73, 0x02, | 418 | 0x10, 0x39, 0x73, 0x02, |
409 | 0x04, 0x92, 0x33, 0x7b, | 419 | 0x04, 0x92, 0x47, 0x7b, |
410 | 0xfb, 0x92, 0x25, 0x0b, | 420 | 0xfb, 0x92, 0x25, 0x0b, |
411 | 0xff, 0xea, 0x72, 0x0a, | 421 | 0xff, 0xea, 0x72, 0x0a, |
412 | 0x01, 0xa4, 0x2d, 0x6b, | 422 | 0x01, 0xa4, 0x41, 0x6b, |
413 | 0x02, 0xa8, 0x9c, 0x32, | 423 | 0x02, 0xa8, 0x9c, 0x32, |
414 | 0x00, 0xe2, 0x7e, 0x59, | 424 | 0x00, 0xe2, 0x88, 0x59, |
415 | 0x10, 0x92, 0xdd, 0x7a, | 425 | 0x10, 0x92, 0xf1, 0x7a, |
416 | 0xff, 0xea, 0x06, 0x5c, | 426 | 0xff, 0xea, 0x1a, 0x5c, |
417 | 0x00, 0xe2, 0xdc, 0x42, | 427 | 0x00, 0xe2, 0xf0, 0x42, |
418 | 0x04, 0xea, 0x64, 0x59, | 428 | 0x04, 0xea, 0x6e, 0x59, |
419 | 0x04, 0xea, 0x04, 0x00, | 429 | 0x04, 0xea, 0x04, 0x00, |
420 | 0x00, 0xe2, 0xdc, 0x42, | 430 | 0x00, 0xe2, 0xf0, 0x42, |
421 | 0x04, 0xea, 0x64, 0x59, | 431 | 0x04, 0xea, 0x6e, 0x59, |
422 | 0x04, 0xea, 0x04, 0x00, | 432 | 0x04, 0xea, 0x04, 0x00, |
423 | 0x00, 0xe2, 0x14, 0x42, | 433 | 0x00, 0xe2, 0x28, 0x42, |
424 | 0x08, 0x92, 0xd5, 0x7a, | 434 | 0x08, 0x92, 0xe9, 0x7a, |
425 | 0xc0, 0x39, 0x49, 0x7b, | 435 | 0xc0, 0x39, 0x5d, 0x7b, |
426 | 0x80, 0x39, 0xd5, 0x6a, | 436 | 0x80, 0x39, 0xe9, 0x6a, |
427 | 0xff, 0x88, 0x49, 0x6b, | 437 | 0xff, 0x88, 0x5d, 0x6b, |
428 | 0x40, 0x39, 0xd5, 0x6a, | 438 | 0x40, 0x39, 0xe9, 0x6a, |
429 | 0x10, 0x92, 0x4f, 0x7b, | 439 | 0x10, 0x92, 0x63, 0x7b, |
430 | 0x0a, 0xea, 0x64, 0x59, | 440 | 0x0a, 0xea, 0x6e, 0x59, |
431 | 0x0a, 0xea, 0x04, 0x00, | 441 | 0x0a, 0xea, 0x04, 0x00, |
432 | 0x00, 0xe2, 0x6e, 0x5b, | 442 | 0x00, 0xe2, 0x82, 0x5b, |
433 | 0x00, 0xe2, 0xae, 0x43, | 443 | 0x00, 0xe2, 0xc2, 0x43, |
434 | 0x50, 0x4b, 0x56, 0x6b, | 444 | 0x50, 0x4b, 0x6a, 0x6b, |
435 | 0xbf, 0x3a, 0x74, 0x08, | 445 | 0xbf, 0x3a, 0x74, 0x08, |
436 | 0x01, 0xe0, 0xf4, 0x31, | 446 | 0x01, 0xe0, 0xf4, 0x31, |
437 | 0xff, 0xea, 0xc0, 0x09, | 447 | 0xff, 0xea, 0xc0, 0x09, |
@@ -441,31 +451,31 @@ static uint8_t seqprog[] = { | |||
441 | 0x01, 0xfa, 0xc0, 0x35, | 451 | 0x01, 0xfa, 0xc0, 0x35, |
442 | 0x02, 0xa8, 0x90, 0x32, | 452 | 0x02, 0xa8, 0x90, 0x32, |
443 | 0x02, 0xea, 0xb4, 0x00, | 453 | 0x02, 0xea, 0xb4, 0x00, |
444 | 0x33, 0xea, 0x5e, 0x59, | 454 | 0x33, 0xea, 0x68, 0x59, |
445 | 0x33, 0xea, 0x00, 0x00, | 455 | 0x33, 0xea, 0x00, 0x00, |
446 | 0x02, 0x48, 0x51, 0x31, | 456 | 0x02, 0x48, 0x51, 0x31, |
447 | 0xff, 0x90, 0x85, 0x68, | 457 | 0xff, 0x90, 0x85, 0x68, |
448 | 0xff, 0x88, 0x7b, 0x6b, | 458 | 0xff, 0x88, 0x8f, 0x6b, |
449 | 0x01, 0xa4, 0x77, 0x6b, | 459 | 0x01, 0xa4, 0x8b, 0x6b, |
450 | 0x02, 0xa4, 0x7f, 0x6b, | 460 | 0x02, 0xa4, 0x93, 0x6b, |
451 | 0x01, 0x84, 0x7f, 0x7b, | 461 | 0x01, 0x84, 0x93, 0x7b, |
452 | 0x02, 0x28, 0x19, 0x33, | 462 | 0x02, 0x28, 0x19, 0x33, |
453 | 0x02, 0xa8, 0x50, 0x36, | 463 | 0x02, 0xa8, 0x50, 0x36, |
454 | 0xff, 0x88, 0x7f, 0x73, | 464 | 0xff, 0x88, 0x93, 0x73, |
455 | 0x00, 0xe2, 0x52, 0x5b, | 465 | 0x00, 0xe2, 0x66, 0x5b, |
456 | 0x02, 0xa8, 0x20, 0x33, | 466 | 0x02, 0xa8, 0x20, 0x33, |
457 | 0x04, 0xa4, 0x49, 0x03, | 467 | 0x04, 0xa4, 0x49, 0x03, |
458 | 0xff, 0xea, 0x1a, 0x03, | 468 | 0xff, 0xea, 0x1a, 0x03, |
459 | 0xff, 0x2d, 0x8b, 0x63, | 469 | 0xff, 0x2d, 0x9f, 0x63, |
460 | 0x02, 0xa8, 0x58, 0x32, | 470 | 0x02, 0xa8, 0x58, 0x32, |
461 | 0x02, 0xa8, 0x5c, 0x36, | 471 | 0x02, 0xa8, 0x5c, 0x36, |
462 | 0x02, 0xa8, 0x40, 0x31, | 472 | 0x02, 0xa8, 0x40, 0x31, |
463 | 0x02, 0x2e, 0x51, 0x31, | 473 | 0x02, 0x2e, 0x51, 0x31, |
464 | 0x02, 0xa0, 0x18, 0x33, | 474 | 0x02, 0xa0, 0x18, 0x33, |
465 | 0x02, 0xa0, 0x5c, 0x36, | 475 | 0x02, 0xa0, 0x5c, 0x36, |
466 | 0xc0, 0x39, 0xd5, 0x6a, | 476 | 0xc0, 0x39, 0xe9, 0x6a, |
467 | 0x04, 0x92, 0x25, 0x03, | 477 | 0x04, 0x92, 0x25, 0x03, |
468 | 0x20, 0x92, 0xaf, 0x6b, | 478 | 0x20, 0x92, 0xc3, 0x6b, |
469 | 0x02, 0xa8, 0x40, 0x31, | 479 | 0x02, 0xa8, 0x40, 0x31, |
470 | 0xc0, 0x3a, 0xc1, 0x09, | 480 | 0xc0, 0x3a, 0xc1, 0x09, |
471 | 0x00, 0x3b, 0x51, 0x01, | 481 | 0x00, 0x3b, 0x51, 0x01, |
@@ -480,60 +490,60 @@ static uint8_t seqprog[] = { | |||
480 | 0xf7, 0x57, 0xae, 0x08, | 490 | 0xf7, 0x57, 0xae, 0x08, |
481 | 0x08, 0xea, 0x98, 0x00, | 491 | 0x08, 0xea, 0x98, 0x00, |
482 | 0x01, 0x44, 0xd4, 0x31, | 492 | 0x01, 0x44, 0xd4, 0x31, |
483 | 0xee, 0x00, 0xb8, 0x6b, | 493 | 0xee, 0x00, 0xcc, 0x6b, |
484 | 0x02, 0xea, 0xb4, 0x00, | 494 | 0x02, 0xea, 0xb4, 0x00, |
485 | 0xc0, 0xea, 0x72, 0x02, | 495 | 0xc0, 0xea, 0x72, 0x02, |
486 | 0x09, 0x4c, 0xba, 0x7b, | 496 | 0x09, 0x4c, 0xce, 0x7b, |
487 | 0x01, 0xea, 0x78, 0x02, | 497 | 0x01, 0xea, 0x78, 0x02, |
488 | 0x08, 0x4c, 0x06, 0x68, | 498 | 0x08, 0x4c, 0x06, 0x68, |
489 | 0x0b, 0xea, 0x64, 0x59, | 499 | 0x0b, 0xea, 0x6e, 0x59, |
490 | 0x0b, 0xea, 0x04, 0x00, | 500 | 0x0b, 0xea, 0x04, 0x00, |
491 | 0x01, 0x44, 0xd4, 0x31, | 501 | 0x01, 0x44, 0xd4, 0x31, |
492 | 0x20, 0x39, 0x15, 0x7a, | 502 | 0x20, 0x39, 0x29, 0x7a, |
493 | 0x00, 0xe2, 0xcc, 0x5b, | 503 | 0x00, 0xe2, 0xe0, 0x5b, |
494 | 0x00, 0xe2, 0x14, 0x42, | 504 | 0x00, 0xe2, 0x28, 0x42, |
495 | 0x01, 0x84, 0xd1, 0x7b, | 505 | 0x01, 0x84, 0xe5, 0x7b, |
496 | 0x01, 0xa4, 0x49, 0x07, | 506 | 0x01, 0xa4, 0x49, 0x07, |
497 | 0x08, 0x60, 0x30, 0x33, | 507 | 0x08, 0x60, 0x30, 0x33, |
498 | 0x08, 0x80, 0x41, 0x37, | 508 | 0x08, 0x80, 0x41, 0x37, |
499 | 0xdf, 0x39, 0x73, 0x0a, | 509 | 0xdf, 0x39, 0x73, 0x0a, |
500 | 0xee, 0x00, 0xde, 0x6b, | 510 | 0xee, 0x00, 0xf2, 0x6b, |
501 | 0x05, 0xea, 0xb4, 0x00, | 511 | 0x05, 0xea, 0xb4, 0x00, |
502 | 0x33, 0xea, 0x5e, 0x59, | 512 | 0x33, 0xea, 0x68, 0x59, |
503 | 0x33, 0xea, 0x00, 0x00, | 513 | 0x33, 0xea, 0x00, 0x00, |
504 | 0x00, 0xe2, 0x7e, 0x59, | 514 | 0x00, 0xe2, 0x88, 0x59, |
505 | 0x00, 0xe2, 0xdc, 0x42, | 515 | 0x00, 0xe2, 0xf0, 0x42, |
506 | 0xff, 0x42, 0xee, 0x6b, | 516 | 0xff, 0x42, 0x02, 0x6c, |
507 | 0x01, 0x41, 0xe2, 0x6b, | 517 | 0x01, 0x41, 0xf6, 0x6b, |
508 | 0x02, 0x41, 0xe2, 0x7b, | 518 | 0x02, 0x41, 0xf6, 0x7b, |
509 | 0xff, 0x42, 0xee, 0x6b, | 519 | 0xff, 0x42, 0x02, 0x6c, |
510 | 0x01, 0x41, 0xe2, 0x6b, | 520 | 0x01, 0x41, 0xf6, 0x6b, |
511 | 0x02, 0x41, 0xe2, 0x7b, | 521 | 0x02, 0x41, 0xf6, 0x7b, |
512 | 0xff, 0x42, 0xee, 0x7b, | 522 | 0xff, 0x42, 0x02, 0x7c, |
513 | 0x04, 0x4c, 0xe2, 0x6b, | 523 | 0x04, 0x4c, 0xf6, 0x6b, |
514 | 0xe0, 0x41, 0x78, 0x0e, | 524 | 0xe0, 0x41, 0x78, 0x0e, |
515 | 0x01, 0x44, 0xd4, 0x31, | 525 | 0x01, 0x44, 0xd4, 0x31, |
516 | 0xff, 0x42, 0xf6, 0x7b, | 526 | 0xff, 0x42, 0x0a, 0x7c, |
517 | 0x04, 0x4c, 0xf6, 0x6b, | 527 | 0x04, 0x4c, 0x0a, 0x6c, |
518 | 0xe0, 0x41, 0x78, 0x0a, | 528 | 0xe0, 0x41, 0x78, 0x0a, |
519 | 0xe0, 0x3c, 0x15, 0x62, | 529 | 0xe0, 0x3c, 0x29, 0x62, |
520 | 0xff, 0xea, 0xca, 0x09, | 530 | 0xff, 0xea, 0xca, 0x09, |
521 | 0x01, 0xe2, 0xc8, 0x31, | 531 | 0x01, 0xe2, 0xc8, 0x31, |
522 | 0x01, 0x46, 0xda, 0x35, | 532 | 0x01, 0x46, 0xda, 0x35, |
523 | 0x01, 0x44, 0xd4, 0x35, | 533 | 0x01, 0x44, 0xd4, 0x35, |
524 | 0x10, 0xea, 0x80, 0x00, | 534 | 0x10, 0xea, 0x80, 0x00, |
525 | 0x01, 0xe2, 0x6e, 0x36, | 535 | 0x01, 0xe2, 0x6e, 0x36, |
526 | 0x04, 0xa6, 0x0e, 0x7c, | 536 | 0x04, 0xa6, 0x22, 0x7c, |
527 | 0xff, 0xea, 0x5a, 0x09, | 537 | 0xff, 0xea, 0x5a, 0x09, |
528 | 0xff, 0xea, 0x4c, 0x0d, | 538 | 0xff, 0xea, 0x4c, 0x0d, |
529 | 0x01, 0xa6, 0x3a, 0x6c, | 539 | 0x01, 0xa6, 0x4e, 0x6c, |
530 | 0x10, 0xad, 0x84, 0x78, | 540 | 0x10, 0xad, 0x84, 0x78, |
531 | 0x80, 0xad, 0x32, 0x6c, | 541 | 0x80, 0xad, 0x46, 0x6c, |
532 | 0x08, 0xad, 0x84, 0x68, | 542 | 0x08, 0xad, 0x84, 0x68, |
533 | 0x20, 0x19, 0x26, 0x7c, | 543 | 0x20, 0x19, 0x3a, 0x7c, |
534 | 0x80, 0xea, 0xb2, 0x01, | 544 | 0x80, 0xea, 0xb2, 0x01, |
535 | 0x11, 0x00, 0x00, 0x10, | 545 | 0x11, 0x00, 0x00, 0x10, |
536 | 0x02, 0xa6, 0x22, 0x7c, | 546 | 0x02, 0xa6, 0x36, 0x7c, |
537 | 0xff, 0xea, 0xb2, 0x0d, | 547 | 0xff, 0xea, 0xb2, 0x0d, |
538 | 0x11, 0x00, 0x00, 0x10, | 548 | 0x11, 0x00, 0x00, 0x10, |
539 | 0xff, 0xea, 0xb2, 0x09, | 549 | 0xff, 0xea, 0xb2, 0x09, |
@@ -561,7 +571,7 @@ static uint8_t seqprog[] = { | |||
561 | 0x00, 0x86, 0x0d, 0x23, | 571 | 0x00, 0x86, 0x0d, 0x23, |
562 | 0x00, 0x87, 0x0f, 0x23, | 572 | 0x00, 0x87, 0x0f, 0x23, |
563 | 0x01, 0x84, 0xc5, 0x31, | 573 | 0x01, 0x84, 0xc5, 0x31, |
564 | 0x80, 0x83, 0x5d, 0x7c, | 574 | 0x80, 0x83, 0x71, 0x7c, |
565 | 0x02, 0xe2, 0xc4, 0x01, | 575 | 0x02, 0xe2, 0xc4, 0x01, |
566 | 0xff, 0xea, 0x4c, 0x09, | 576 | 0xff, 0xea, 0x4c, 0x09, |
567 | 0x01, 0xe2, 0x36, 0x30, | 577 | 0x01, 0xe2, 0x36, 0x30, |
@@ -572,75 +582,75 @@ static uint8_t seqprog[] = { | |||
572 | 0xfe, 0xa6, 0x4c, 0x0d, | 582 | 0xfe, 0xa6, 0x4c, 0x0d, |
573 | 0x0b, 0x98, 0xe1, 0x30, | 583 | 0x0b, 0x98, 0xe1, 0x30, |
574 | 0xfd, 0xa4, 0x49, 0x09, | 584 | 0xfd, 0xa4, 0x49, 0x09, |
575 | 0x80, 0xa3, 0x71, 0x7c, | 585 | 0x80, 0xa3, 0x85, 0x7c, |
576 | 0x02, 0xa4, 0x48, 0x01, | 586 | 0x02, 0xa4, 0x48, 0x01, |
577 | 0x01, 0xa4, 0x36, 0x30, | 587 | 0x01, 0xa4, 0x36, 0x30, |
578 | 0xa8, 0xea, 0x32, 0x00, | 588 | 0xa8, 0xea, 0x32, 0x00, |
579 | 0xfd, 0xa4, 0x49, 0x0b, | 589 | 0xfd, 0xa4, 0x49, 0x0b, |
580 | 0x05, 0xa3, 0x07, 0x33, | 590 | 0x05, 0xa3, 0x07, 0x33, |
581 | 0x80, 0x83, 0x7d, 0x6c, | 591 | 0x80, 0x83, 0x91, 0x6c, |
582 | 0x02, 0xea, 0x4c, 0x05, | 592 | 0x02, 0xea, 0x4c, 0x05, |
583 | 0xff, 0xea, 0x4c, 0x0d, | 593 | 0xff, 0xea, 0x4c, 0x0d, |
584 | 0x00, 0xe2, 0x56, 0x59, | 594 | 0x00, 0xe2, 0x60, 0x59, |
585 | 0x02, 0xa6, 0x10, 0x6c, | 595 | 0x02, 0xa6, 0x24, 0x6c, |
586 | 0x80, 0xf9, 0xf2, 0x05, | 596 | 0x80, 0xf9, 0xf2, 0x05, |
587 | 0xc0, 0x39, 0x8b, 0x7c, | 597 | 0xc0, 0x39, 0x9f, 0x7c, |
588 | 0x03, 0xea, 0x64, 0x59, | 598 | 0x03, 0xea, 0x6e, 0x59, |
589 | 0x03, 0xea, 0x04, 0x00, | 599 | 0x03, 0xea, 0x04, 0x00, |
590 | 0x20, 0x39, 0xaf, 0x7c, | 600 | 0x20, 0x39, 0xc3, 0x7c, |
591 | 0x01, 0x84, 0x95, 0x6c, | 601 | 0x01, 0x84, 0xa9, 0x6c, |
592 | 0x06, 0xea, 0x64, 0x59, | 602 | 0x06, 0xea, 0x6e, 0x59, |
593 | 0x06, 0xea, 0x04, 0x00, | 603 | 0x06, 0xea, 0x04, 0x00, |
594 | 0x00, 0xe2, 0xb2, 0x44, | 604 | 0x00, 0xe2, 0xc6, 0x44, |
595 | 0x01, 0x00, 0x6c, 0x32, | 605 | 0x01, 0x00, 0x6c, 0x32, |
596 | 0xee, 0x00, 0x9e, 0x6c, | 606 | 0xee, 0x00, 0xb2, 0x6c, |
597 | 0x05, 0xea, 0xb4, 0x00, | 607 | 0x05, 0xea, 0xb4, 0x00, |
598 | 0x33, 0xea, 0x5e, 0x59, | 608 | 0x33, 0xea, 0x68, 0x59, |
599 | 0x33, 0xea, 0x00, 0x00, | 609 | 0x33, 0xea, 0x00, 0x00, |
600 | 0x80, 0x3d, 0x7a, 0x00, | 610 | 0x80, 0x3d, 0x7a, 0x00, |
601 | 0xfc, 0x42, 0xa0, 0x7c, | 611 | 0xfc, 0x42, 0xb4, 0x7c, |
602 | 0x7f, 0x3d, 0x7a, 0x08, | 612 | 0x7f, 0x3d, 0x7a, 0x08, |
603 | 0x00, 0x36, 0x5f, 0x59, | 613 | 0x00, 0x36, 0x69, 0x59, |
604 | 0x01, 0x36, 0x01, 0x30, | 614 | 0x01, 0x36, 0x01, 0x30, |
605 | 0x09, 0xea, 0x64, 0x59, | 615 | 0x09, 0xea, 0x6e, 0x59, |
606 | 0x09, 0xea, 0x04, 0x00, | 616 | 0x09, 0xea, 0x04, 0x00, |
607 | 0x00, 0xe2, 0x14, 0x42, | 617 | 0x00, 0xe2, 0x28, 0x42, |
608 | 0x01, 0xa4, 0x95, 0x6c, | 618 | 0x01, 0xa4, 0xa9, 0x6c, |
609 | 0x00, 0xe2, 0x68, 0x5c, | 619 | 0x00, 0xe2, 0x7c, 0x5c, |
610 | 0x20, 0x39, 0x73, 0x02, | 620 | 0x20, 0x39, 0x73, 0x02, |
611 | 0x01, 0x00, 0x6c, 0x32, | 621 | 0x01, 0x00, 0x6c, 0x32, |
612 | 0x02, 0xa6, 0xba, 0x7c, | 622 | 0x02, 0xa6, 0xce, 0x7c, |
613 | 0x00, 0xe2, 0x7e, 0x5c, | 623 | 0x00, 0xe2, 0x92, 0x5c, |
614 | 0x00, 0xe2, 0x76, 0x58, | 624 | 0x00, 0xe2, 0x76, 0x58, |
615 | 0x00, 0xe2, 0x86, 0x58, | 625 | 0x00, 0xe2, 0x86, 0x58, |
616 | 0x00, 0xe2, 0x5a, 0x58, | 626 | 0x00, 0xe2, 0x5a, 0x58, |
617 | 0x00, 0x36, 0x5f, 0x59, | 627 | 0x00, 0x36, 0x69, 0x59, |
618 | 0x01, 0x36, 0x01, 0x30, | 628 | 0x01, 0x36, 0x01, 0x30, |
619 | 0x20, 0x19, 0xba, 0x6c, | 629 | 0x20, 0x19, 0xce, 0x6c, |
620 | 0x00, 0xe2, 0xea, 0x5c, | 630 | 0x00, 0xe2, 0xfe, 0x5c, |
621 | 0x04, 0x19, 0xd4, 0x6c, | 631 | 0x04, 0x19, 0xe8, 0x6c, |
622 | 0x02, 0x19, 0x32, 0x00, | 632 | 0x02, 0x19, 0x32, 0x00, |
623 | 0x01, 0x84, 0xd5, 0x7c, | 633 | 0x01, 0x84, 0xe9, 0x7c, |
624 | 0x01, 0x1b, 0xce, 0x7c, | 634 | 0x01, 0x1b, 0xe2, 0x7c, |
625 | 0x01, 0x1a, 0xd4, 0x6c, | 635 | 0x01, 0x1a, 0xe8, 0x6c, |
626 | 0x00, 0xe2, 0x84, 0x44, | 636 | 0x00, 0xe2, 0x98, 0x44, |
627 | 0x80, 0x4b, 0xda, 0x6c, | 637 | 0x80, 0x4b, 0xee, 0x6c, |
628 | 0x01, 0x4c, 0xd6, 0x7c, | 638 | 0x01, 0x4c, 0xea, 0x7c, |
629 | 0x03, 0x42, 0x84, 0x6c, | 639 | 0x03, 0x42, 0x98, 0x6c, |
630 | 0x00, 0xe2, 0x0a, 0x5c, | 640 | 0x00, 0xe2, 0x1e, 0x5c, |
631 | 0x80, 0xf9, 0xf2, 0x01, | 641 | 0x80, 0xf9, 0xf2, 0x01, |
632 | 0x04, 0x39, 0x15, 0x7a, | 642 | 0x04, 0x39, 0x29, 0x7a, |
633 | 0x00, 0xe2, 0x14, 0x42, | 643 | 0x00, 0xe2, 0x28, 0x42, |
634 | 0x08, 0x5d, 0xf2, 0x6c, | 644 | 0x08, 0x5d, 0x06, 0x6d, |
635 | 0x00, 0xe2, 0x76, 0x58, | 645 | 0x00, 0xe2, 0x76, 0x58, |
636 | 0x00, 0x36, 0x5f, 0x59, | 646 | 0x00, 0x36, 0x69, 0x59, |
637 | 0x01, 0x36, 0x01, 0x30, | 647 | 0x01, 0x36, 0x01, 0x30, |
638 | 0x02, 0x1b, 0xe2, 0x7c, | 648 | 0x02, 0x1b, 0xf6, 0x7c, |
639 | 0x08, 0x5d, 0xf0, 0x7c, | 649 | 0x08, 0x5d, 0x04, 0x7d, |
640 | 0x03, 0x68, 0x00, 0x37, | 650 | 0x03, 0x68, 0x00, 0x37, |
641 | 0x01, 0x84, 0x09, 0x07, | 651 | 0x01, 0x84, 0x09, 0x07, |
642 | 0x80, 0x1b, 0xfc, 0x7c, | 652 | 0x80, 0x1b, 0x10, 0x7d, |
643 | 0x80, 0x84, 0xfd, 0x6c, | 653 | 0x80, 0x84, 0x11, 0x6d, |
644 | 0xff, 0x85, 0x0b, 0x1b, | 654 | 0xff, 0x85, 0x0b, 0x1b, |
645 | 0xff, 0x86, 0x0d, 0x23, | 655 | 0xff, 0x86, 0x0d, 0x23, |
646 | 0xff, 0x87, 0x0f, 0x23, | 656 | 0xff, 0x87, 0x0f, 0x23, |
@@ -652,161 +662,164 @@ static uint8_t seqprog[] = { | |||
652 | 0xf9, 0xd9, 0xb2, 0x0d, | 662 | 0xf9, 0xd9, 0xb2, 0x0d, |
653 | 0x01, 0xd9, 0xb2, 0x05, | 663 | 0x01, 0xd9, 0xb2, 0x05, |
654 | 0x01, 0x52, 0x48, 0x31, | 664 | 0x01, 0x52, 0x48, 0x31, |
655 | 0x20, 0xa4, 0x26, 0x7d, | 665 | 0x20, 0xa4, 0x3a, 0x7d, |
656 | 0x20, 0x5b, 0x26, 0x7d, | 666 | 0x20, 0x5b, 0x3a, 0x7d, |
657 | 0x80, 0xf9, 0x34, 0x7d, | 667 | 0x80, 0xf9, 0x48, 0x7d, |
658 | 0x02, 0xea, 0xb4, 0x00, | 668 | 0x02, 0xea, 0xb4, 0x00, |
659 | 0x11, 0x00, 0x00, 0x10, | 669 | 0x11, 0x00, 0x00, 0x10, |
660 | 0x04, 0x19, 0x40, 0x7d, | 670 | 0x04, 0x19, 0x54, 0x7d, |
661 | 0xdf, 0x19, 0x32, 0x08, | 671 | 0xdf, 0x19, 0x32, 0x08, |
662 | 0x60, 0x5b, 0x40, 0x6d, | 672 | 0x60, 0x5b, 0x54, 0x6d, |
663 | 0x01, 0x4c, 0x1a, 0x7d, | 673 | 0x01, 0x4c, 0x2e, 0x7d, |
664 | 0x20, 0x19, 0x32, 0x00, | 674 | 0x20, 0x19, 0x32, 0x00, |
665 | 0x01, 0xd9, 0xb2, 0x05, | 675 | 0x01, 0xd9, 0xb2, 0x05, |
666 | 0x02, 0xea, 0xb4, 0x00, | 676 | 0x02, 0xea, 0xb4, 0x00, |
667 | 0x01, 0xd9, 0xb2, 0x05, | 677 | 0x01, 0xd9, 0xb2, 0x05, |
668 | 0x10, 0x5b, 0x38, 0x6d, | 678 | 0x10, 0x5b, 0x4c, 0x6d, |
669 | 0x08, 0x5b, 0x42, 0x6d, | 679 | 0x08, 0x5b, 0x56, 0x6d, |
670 | 0x20, 0x5b, 0x32, 0x6d, | 680 | 0x20, 0x5b, 0x46, 0x6d, |
671 | 0x02, 0x5b, 0x62, 0x6d, | 681 | 0x02, 0x5b, 0x76, 0x6d, |
672 | 0x0e, 0xea, 0x64, 0x59, | 682 | 0x0e, 0xea, 0x6e, 0x59, |
673 | 0x0e, 0xea, 0x04, 0x00, | 683 | 0x0e, 0xea, 0x04, 0x00, |
674 | 0x80, 0xf9, 0x22, 0x6d, | 684 | 0x80, 0xf9, 0x36, 0x6d, |
675 | 0xdf, 0x5c, 0xb8, 0x08, | 685 | 0xdf, 0x5c, 0xb8, 0x08, |
676 | 0x01, 0xd9, 0xb2, 0x05, | 686 | 0x01, 0xd9, 0xb2, 0x05, |
677 | 0x01, 0xa4, 0x1d, 0x6e, | 687 | 0x01, 0xa4, 0x37, 0x6e, |
678 | 0x00, 0xe2, 0x68, 0x5c, | 688 | 0x00, 0xe2, 0x7c, 0x5c, |
679 | 0x00, 0xe2, 0x6c, 0x5d, | 689 | 0x00, 0xe2, 0x80, 0x5d, |
680 | 0x01, 0x90, 0x21, 0x1b, | 690 | 0x01, 0x90, 0x21, 0x1b, |
681 | 0x01, 0xd9, 0xb2, 0x05, | 691 | 0x01, 0xd9, 0xb2, 0x05, |
682 | 0x00, 0xe2, 0x52, 0x5b, | 692 | 0x00, 0xe2, 0x66, 0x5b, |
683 | 0xf3, 0x96, 0xd5, 0x19, | 693 | 0xf3, 0x96, 0xd5, 0x19, |
684 | 0x00, 0xe2, 0x50, 0x55, | 694 | 0x00, 0xe2, 0x64, 0x55, |
685 | 0x80, 0x96, 0x51, 0x6d, | 695 | 0x80, 0x96, 0x65, 0x6d, |
686 | 0x0f, 0xea, 0x64, 0x59, | 696 | 0x0f, 0xea, 0x6e, 0x59, |
687 | 0x0f, 0xea, 0x04, 0x00, | 697 | 0x0f, 0xea, 0x04, 0x00, |
688 | 0x00, 0xe2, 0x58, 0x45, | 698 | 0x00, 0xe2, 0x6c, 0x45, |
689 | 0x04, 0x8c, 0xe1, 0x30, | 699 | 0x04, 0x8c, 0xe1, 0x30, |
690 | 0x01, 0xea, 0xf2, 0x00, | 700 | 0x01, 0xea, 0xf2, 0x00, |
691 | 0x02, 0xea, 0x36, 0x00, | 701 | 0x02, 0xea, 0x36, 0x00, |
692 | 0xa8, 0xea, 0x32, 0x00, | 702 | 0xa8, 0xea, 0x32, 0x00, |
693 | 0xff, 0x97, 0x5f, 0x7d, | 703 | 0xff, 0x97, 0x73, 0x7d, |
694 | 0x14, 0xea, 0x64, 0x59, | 704 | 0x14, 0xea, 0x6e, 0x59, |
695 | 0x14, 0xea, 0x04, 0x00, | 705 | 0x14, 0xea, 0x04, 0x00, |
696 | 0x00, 0xe2, 0xce, 0x5d, | 706 | 0x00, 0xe2, 0xe2, 0x5d, |
697 | 0x01, 0xd9, 0xb2, 0x05, | 707 | 0x01, 0xd9, 0xb2, 0x05, |
698 | 0x09, 0x80, 0xe1, 0x30, | 708 | 0x09, 0x80, 0xe1, 0x30, |
699 | 0x02, 0xea, 0x36, 0x00, | 709 | 0x02, 0xea, 0x36, 0x00, |
700 | 0xa8, 0xea, 0x32, 0x00, | 710 | 0xa8, 0xea, 0x32, 0x00, |
701 | 0x00, 0xe2, 0xc6, 0x5d, | 711 | 0x00, 0xe2, 0xda, 0x5d, |
702 | 0x01, 0xd9, 0xb2, 0x05, | 712 | 0x01, 0xd9, 0xb2, 0x05, |
703 | 0x02, 0xa6, 0x7c, 0x7d, | 713 | 0x02, 0xa6, 0x90, 0x7d, |
704 | 0x00, 0xe2, 0x56, 0x59, | 714 | 0x00, 0xe2, 0x60, 0x59, |
705 | 0x20, 0x5b, 0x8a, 0x6d, | 715 | 0x20, 0x5b, 0x9e, 0x6d, |
706 | 0xfc, 0x42, 0x76, 0x7d, | 716 | 0xfc, 0x42, 0x8a, 0x7d, |
707 | 0x10, 0x40, 0x78, 0x6d, | 717 | 0x10, 0x40, 0x8c, 0x6d, |
708 | 0x20, 0x4d, 0x7a, 0x7d, | 718 | 0x20, 0x4d, 0x8e, 0x7d, |
709 | 0x08, 0x5d, 0x8a, 0x6d, | 719 | 0x08, 0x5d, 0x9e, 0x6d, |
710 | 0x02, 0xa6, 0x10, 0x6c, | 720 | 0x02, 0xa6, 0x24, 0x6c, |
711 | 0x00, 0xe2, 0x56, 0x59, | 721 | 0x00, 0xe2, 0x60, 0x59, |
712 | 0x20, 0x5b, 0x8a, 0x6d, | 722 | 0x20, 0x5b, 0x9e, 0x6d, |
713 | 0x01, 0x1b, 0xaa, 0x6d, | 723 | 0x01, 0x1b, 0xbe, 0x6d, |
714 | 0xfc, 0x42, 0x86, 0x7d, | 724 | 0xfc, 0x42, 0x9a, 0x7d, |
715 | 0x10, 0x40, 0x88, 0x6d, | 725 | 0x10, 0x40, 0x9c, 0x6d, |
716 | 0x20, 0x4d, 0x84, 0x78, | 726 | 0x20, 0x4d, 0x84, 0x78, |
717 | 0x08, 0x5d, 0x84, 0x78, | 727 | 0x08, 0x5d, 0x84, 0x78, |
718 | 0x02, 0x19, 0x32, 0x00, | 728 | 0x02, 0x19, 0x32, 0x00, |
719 | 0x01, 0x5b, 0x40, 0x31, | 729 | 0x01, 0x5b, 0x40, 0x31, |
720 | 0x00, 0xe2, 0xea, 0x5c, | 730 | 0x00, 0xe2, 0xfe, 0x5c, |
721 | 0x00, 0xe2, 0xcc, 0x5b, | 731 | 0x00, 0xe2, 0xe0, 0x5b, |
722 | 0x20, 0xea, 0xb6, 0x00, | 732 | 0x20, 0xea, 0xb6, 0x00, |
723 | 0x00, 0xe2, 0x0a, 0x5c, | 733 | 0x00, 0xe2, 0x1e, 0x5c, |
724 | 0x20, 0x5c, 0xb8, 0x00, | 734 | 0x20, 0x5c, 0xb8, 0x00, |
725 | 0x04, 0x19, 0xa0, 0x6d, | 735 | 0x04, 0x19, 0xb4, 0x6d, |
726 | 0x01, 0x1a, 0xa0, 0x6d, | 736 | 0x01, 0x1a, 0xb4, 0x6d, |
727 | 0x00, 0xe2, 0x56, 0x59, | 737 | 0x00, 0xe2, 0x60, 0x59, |
728 | 0x01, 0x1a, 0x84, 0x78, | 738 | 0x01, 0x1a, 0x84, 0x78, |
729 | 0x80, 0xf9, 0xf2, 0x01, | 739 | 0x80, 0xf9, 0xf2, 0x01, |
730 | 0x20, 0xa0, 0x04, 0x7e, | 740 | 0x20, 0xa0, 0x18, 0x7e, |
731 | 0xff, 0x90, 0x21, 0x1b, | 741 | 0xff, 0x90, 0x21, 0x1b, |
732 | 0x08, 0x92, 0x63, 0x6b, | 742 | 0x08, 0x92, 0x77, 0x6b, |
733 | 0x02, 0xea, 0xb4, 0x04, | 743 | 0x02, 0xea, 0xb4, 0x04, |
734 | 0x01, 0xa4, 0x49, 0x03, | 744 | 0x01, 0xa4, 0x49, 0x03, |
735 | 0x40, 0x5b, 0xba, 0x6d, | 745 | 0x40, 0x5b, 0xce, 0x6d, |
736 | 0x00, 0xe2, 0x56, 0x59, | 746 | 0x00, 0xe2, 0x60, 0x59, |
737 | 0x40, 0x5b, 0xba, 0x6d, | 747 | 0x40, 0x5b, 0xce, 0x6d, |
738 | 0x04, 0x5d, 0x1e, 0x7e, | 748 | 0x04, 0x5d, 0x38, 0x7e, |
739 | 0x01, 0x1a, 0x1e, 0x7e, | 749 | 0x01, 0x1a, 0x38, 0x7e, |
740 | 0x20, 0x4d, 0x84, 0x78, | 750 | 0x20, 0x4d, 0x84, 0x78, |
741 | 0x40, 0x5b, 0x04, 0x7e, | 751 | 0x40, 0x5b, 0x18, 0x7e, |
742 | 0x04, 0x5d, 0x1e, 0x7e, | 752 | 0x04, 0x5d, 0x38, 0x7e, |
743 | 0x01, 0x1a, 0x1e, 0x7e, | 753 | 0x01, 0x1a, 0x38, 0x7e, |
744 | 0x80, 0xf9, 0xf2, 0x01, | 754 | 0x80, 0xf9, 0xf2, 0x01, |
745 | 0xff, 0x90, 0x21, 0x1b, | 755 | 0xff, 0x90, 0x21, 0x1b, |
746 | 0x08, 0x92, 0x63, 0x6b, | 756 | 0x08, 0x92, 0x77, 0x6b, |
747 | 0x02, 0xea, 0xb4, 0x04, | 757 | 0x02, 0xea, 0xb4, 0x04, |
748 | 0x00, 0xe2, 0x56, 0x59, | 758 | 0x00, 0xe2, 0x60, 0x59, |
749 | 0x01, 0x1b, 0x84, 0x78, | 759 | 0x01, 0x1b, 0x84, 0x78, |
750 | 0x80, 0xf9, 0xf2, 0x01, | 760 | 0x80, 0xf9, 0xf2, 0x01, |
751 | 0x02, 0xea, 0xb4, 0x04, | 761 | 0x02, 0xea, 0xb4, 0x04, |
752 | 0x00, 0xe2, 0x56, 0x59, | 762 | 0x00, 0xe2, 0x60, 0x59, |
753 | 0x01, 0x1b, 0xe2, 0x6d, | 763 | 0x01, 0x1b, 0xf6, 0x6d, |
754 | 0x40, 0x5b, 0xf0, 0x7d, | 764 | 0x40, 0x5b, 0x04, 0x7e, |
755 | 0x01, 0x1b, 0xe2, 0x6d, | 765 | 0x01, 0x1b, 0xf6, 0x6d, |
756 | 0x02, 0x19, 0x32, 0x00, | 766 | 0x02, 0x19, 0x32, 0x00, |
757 | 0x01, 0x1a, 0x84, 0x78, | 767 | 0x01, 0x1a, 0x84, 0x78, |
758 | 0x80, 0xf9, 0xf2, 0x01, | 768 | 0x80, 0xf9, 0xf2, 0x01, |
759 | 0xff, 0xea, 0x10, 0x03, | 769 | 0xff, 0xea, 0x10, 0x03, |
760 | 0x08, 0x92, 0x25, 0x03, | 770 | 0x08, 0x92, 0x25, 0x03, |
761 | 0x00, 0xe2, 0x62, 0x43, | 771 | 0x00, 0xe2, 0x76, 0x43, |
762 | 0x01, 0x1a, 0xec, 0x7d, | 772 | 0x01, 0x1a, 0x00, 0x7e, |
763 | 0x40, 0x5b, 0xe8, 0x7d, | 773 | 0x40, 0x5b, 0xfc, 0x7d, |
764 | 0x01, 0x1a, 0xd6, 0x6d, | 774 | 0x01, 0x1a, 0xea, 0x6d, |
765 | 0xfc, 0x42, 0x84, 0x78, | 775 | 0xfc, 0x42, 0x84, 0x78, |
766 | 0x01, 0x1a, 0xf0, 0x6d, | 776 | 0x01, 0x1a, 0x04, 0x6e, |
767 | 0x10, 0xea, 0x64, 0x59, | 777 | 0x10, 0xea, 0x6e, 0x59, |
768 | 0x10, 0xea, 0x04, 0x00, | 778 | 0x10, 0xea, 0x04, 0x00, |
769 | 0xfc, 0x42, 0x84, 0x78, | 779 | 0xfc, 0x42, 0x84, 0x78, |
770 | 0x10, 0x40, 0xf6, 0x6d, | 780 | 0x10, 0x40, 0x0a, 0x6e, |
771 | 0x20, 0x4d, 0x84, 0x78, | 781 | 0x20, 0x4d, 0x84, 0x78, |
772 | 0x40, 0x5b, 0xd6, 0x6d, | 782 | 0x40, 0x5b, 0xea, 0x6d, |
773 | 0x01, 0x1a, 0x84, 0x78, | 783 | 0x01, 0x1a, 0x84, 0x78, |
774 | 0x01, 0x90, 0x21, 0x1b, | 784 | 0x01, 0x90, 0x21, 0x1b, |
775 | 0x30, 0x3f, 0xc0, 0x09, | 785 | 0x30, 0x3f, 0xc0, 0x09, |
776 | 0x30, 0xe0, 0x84, 0x60, | 786 | 0x30, 0xe0, 0x84, 0x60, |
777 | 0x40, 0x4b, 0x84, 0x68, | 787 | 0x40, 0x4b, 0x84, 0x68, |
778 | 0xff, 0xea, 0x52, 0x01, | 788 | 0xff, 0xea, 0x52, 0x01, |
779 | 0xee, 0x00, 0x0c, 0x6e, | 789 | 0xee, 0x00, 0x20, 0x6e, |
780 | 0x80, 0xf9, 0xf2, 0x01, | 790 | 0x80, 0xf9, 0xf2, 0x01, |
781 | 0xff, 0x90, 0x21, 0x1b, | 791 | 0xff, 0x90, 0x21, 0x1b, |
782 | 0x02, 0xea, 0xb4, 0x00, | 792 | 0x02, 0xea, 0xb4, 0x00, |
783 | 0x20, 0xea, 0x9a, 0x00, | 793 | 0x20, 0xea, 0x9a, 0x00, |
784 | 0xf3, 0x42, 0x16, 0x6e, | 794 | 0x04, 0x41, 0x26, 0x7e, |
785 | 0x12, 0xea, 0x64, 0x59, | 795 | 0x08, 0xea, 0x98, 0x00, |
796 | 0x08, 0x57, 0xae, 0x00, | ||
797 | 0xf3, 0x42, 0x30, 0x6e, | ||
798 | 0x12, 0xea, 0x6e, 0x59, | ||
786 | 0x12, 0xea, 0x04, 0x00, | 799 | 0x12, 0xea, 0x04, 0x00, |
787 | 0x00, 0xe2, 0x14, 0x42, | 800 | 0x00, 0xe2, 0x28, 0x42, |
788 | 0x0d, 0xea, 0x64, 0x59, | 801 | 0x0d, 0xea, 0x6e, 0x59, |
789 | 0x0d, 0xea, 0x04, 0x00, | 802 | 0x0d, 0xea, 0x04, 0x00, |
790 | 0x00, 0xe2, 0x14, 0x42, | 803 | 0x00, 0xe2, 0x28, 0x42, |
791 | 0x01, 0x90, 0x21, 0x1b, | 804 | 0x01, 0x90, 0x21, 0x1b, |
792 | 0x11, 0xea, 0x64, 0x59, | 805 | 0x11, 0xea, 0x6e, 0x59, |
793 | 0x11, 0xea, 0x04, 0x00, | 806 | 0x11, 0xea, 0x04, 0x00, |
794 | 0x00, 0xe2, 0x52, 0x5b, | 807 | 0x00, 0xe2, 0x66, 0x5b, |
795 | 0x08, 0x5a, 0xb4, 0x00, | 808 | 0x08, 0x5a, 0xb4, 0x00, |
796 | 0x00, 0xe2, 0x44, 0x5e, | 809 | 0x00, 0xe2, 0x5e, 0x5e, |
797 | 0xa8, 0xea, 0x32, 0x00, | 810 | 0xa8, 0xea, 0x32, 0x00, |
798 | 0x00, 0xe2, 0x56, 0x59, | 811 | 0x00, 0xe2, 0x60, 0x59, |
799 | 0x80, 0x1a, 0x32, 0x7e, | 812 | 0x80, 0x1a, 0x4c, 0x7e, |
800 | 0x00, 0xe2, 0x44, 0x5e, | 813 | 0x00, 0xe2, 0x5e, 0x5e, |
801 | 0x80, 0x19, 0x32, 0x00, | 814 | 0x80, 0x19, 0x32, 0x00, |
802 | 0x40, 0x5b, 0x38, 0x6e, | 815 | 0x40, 0x5b, 0x52, 0x6e, |
803 | 0x08, 0x5a, 0x38, 0x7e, | 816 | 0x08, 0x5a, 0x52, 0x7e, |
804 | 0x20, 0x4d, 0x84, 0x78, | 817 | 0x20, 0x4d, 0x84, 0x78, |
805 | 0x02, 0x84, 0x09, 0x03, | 818 | 0x02, 0x84, 0x09, 0x03, |
806 | 0x40, 0x5b, 0x04, 0x7e, | 819 | 0x40, 0x5b, 0x18, 0x7e, |
807 | 0xff, 0x90, 0x21, 0x1b, | 820 | 0xff, 0x90, 0x21, 0x1b, |
808 | 0x80, 0xf9, 0xf2, 0x01, | 821 | 0x80, 0xf9, 0xf2, 0x01, |
809 | 0x08, 0x92, 0x63, 0x6b, | 822 | 0x08, 0x92, 0x77, 0x6b, |
810 | 0x02, 0xea, 0xb4, 0x04, | 823 | 0x02, 0xea, 0xb4, 0x04, |
811 | 0x01, 0x40, 0xe1, 0x30, | 824 | 0x01, 0x40, 0xe1, 0x30, |
812 | 0x05, 0x41, 0xe3, 0x98, | 825 | 0x05, 0x41, 0xe3, 0x98, |
@@ -1039,138 +1052,138 @@ static struct patch { | |||
1039 | { ahd_patch0_func, 64, 1, 1 }, | 1052 | { ahd_patch0_func, 64, 1, 1 }, |
1040 | { ahd_patch2_func, 67, 1, 2 }, | 1053 | { ahd_patch2_func, 67, 1, 2 }, |
1041 | { ahd_patch0_func, 68, 1, 1 }, | 1054 | { ahd_patch0_func, 68, 1, 1 }, |
1042 | { ahd_patch4_func, 116, 1, 1 }, | 1055 | { ahd_patch4_func, 115, 1, 1 }, |
1043 | { ahd_patch2_func, 175, 3, 1 }, | 1056 | { ahd_patch2_func, 180, 3, 1 }, |
1044 | { ahd_patch1_func, 178, 2, 1 }, | 1057 | { ahd_patch1_func, 183, 2, 1 }, |
1045 | { ahd_patch5_func, 180, 1, 1 }, | 1058 | { ahd_patch5_func, 185, 1, 1 }, |
1046 | { ahd_patch2_func, 189, 1, 2 }, | 1059 | { ahd_patch2_func, 194, 1, 2 }, |
1047 | { ahd_patch0_func, 190, 1, 1 }, | 1060 | { ahd_patch0_func, 195, 1, 1 }, |
1048 | { ahd_patch6_func, 191, 2, 2 }, | 1061 | { ahd_patch6_func, 196, 2, 2 }, |
1049 | { ahd_patch0_func, 193, 6, 3 }, | 1062 | { ahd_patch0_func, 198, 6, 3 }, |
1050 | { ahd_patch2_func, 196, 1, 2 }, | 1063 | { ahd_patch2_func, 201, 1, 2 }, |
1051 | { ahd_patch0_func, 197, 1, 1 }, | 1064 | { ahd_patch0_func, 202, 1, 1 }, |
1052 | { ahd_patch2_func, 200, 1, 2 }, | 1065 | { ahd_patch2_func, 205, 1, 2 }, |
1053 | { ahd_patch0_func, 201, 1, 1 }, | 1066 | { ahd_patch0_func, 206, 1, 1 }, |
1054 | { ahd_patch3_func, 203, 1, 1 }, | 1067 | { ahd_patch3_func, 208, 1, 1 }, |
1055 | { ahd_patch7_func, 204, 3, 1 }, | 1068 | { ahd_patch7_func, 209, 3, 1 }, |
1056 | { ahd_patch3_func, 213, 1, 1 }, | 1069 | { ahd_patch3_func, 218, 1, 1 }, |
1057 | { ahd_patch5_func, 214, 16, 2 }, | 1070 | { ahd_patch5_func, 219, 16, 2 }, |
1058 | { ahd_patch0_func, 230, 1, 1 }, | 1071 | { ahd_patch0_func, 235, 1, 1 }, |
1059 | { ahd_patch8_func, 250, 2, 1 }, | 1072 | { ahd_patch8_func, 260, 2, 1 }, |
1060 | { ahd_patch1_func, 254, 1, 2 }, | 1073 | { ahd_patch1_func, 264, 1, 2 }, |
1061 | { ahd_patch0_func, 255, 1, 1 }, | 1074 | { ahd_patch0_func, 265, 1, 1 }, |
1062 | { ahd_patch7_func, 258, 3, 1 }, | 1075 | { ahd_patch7_func, 268, 3, 1 }, |
1063 | { ahd_patch1_func, 273, 1, 2 }, | 1076 | { ahd_patch1_func, 283, 1, 2 }, |
1064 | { ahd_patch0_func, 274, 1, 1 }, | 1077 | { ahd_patch0_func, 284, 1, 1 }, |
1065 | { ahd_patch1_func, 277, 1, 2 }, | 1078 | { ahd_patch1_func, 287, 1, 2 }, |
1066 | { ahd_patch0_func, 278, 1, 1 }, | 1079 | { ahd_patch0_func, 288, 1, 1 }, |
1067 | { ahd_patch2_func, 281, 1, 2 }, | 1080 | { ahd_patch2_func, 291, 1, 2 }, |
1068 | { ahd_patch0_func, 282, 1, 1 }, | 1081 | { ahd_patch0_func, 292, 1, 1 }, |
1069 | { ahd_patch9_func, 295, 2, 2 }, | 1082 | { ahd_patch9_func, 305, 2, 2 }, |
1070 | { ahd_patch0_func, 297, 1, 1 }, | 1083 | { ahd_patch0_func, 307, 1, 1 }, |
1071 | { ahd_patch1_func, 339, 1, 2 }, | 1084 | { ahd_patch1_func, 349, 1, 2 }, |
1072 | { ahd_patch0_func, 340, 1, 1 }, | 1085 | { ahd_patch0_func, 350, 1, 1 }, |
1073 | { ahd_patch2_func, 348, 1, 2 }, | 1086 | { ahd_patch2_func, 358, 1, 2 }, |
1074 | { ahd_patch0_func, 349, 1, 1 }, | 1087 | { ahd_patch0_func, 359, 1, 1 }, |
1075 | { ahd_patch2_func, 352, 1, 2 }, | 1088 | { ahd_patch2_func, 362, 1, 2 }, |
1076 | { ahd_patch0_func, 353, 1, 1 }, | ||
1077 | { ahd_patch1_func, 359, 1, 2 }, | ||
1078 | { ahd_patch0_func, 360, 1, 1 }, | ||
1079 | { ahd_patch1_func, 362, 1, 2 }, | ||
1080 | { ahd_patch0_func, 363, 1, 1 }, | 1089 | { ahd_patch0_func, 363, 1, 1 }, |
1081 | { ahd_patch10_func, 382, 1, 1 }, | 1090 | { ahd_patch1_func, 369, 1, 2 }, |
1082 | { ahd_patch10_func, 385, 1, 1 }, | 1091 | { ahd_patch0_func, 370, 1, 1 }, |
1083 | { ahd_patch10_func, 387, 1, 1 }, | 1092 | { ahd_patch1_func, 372, 1, 2 }, |
1084 | { ahd_patch10_func, 399, 1, 1 }, | 1093 | { ahd_patch0_func, 373, 1, 1 }, |
1085 | { ahd_patch1_func, 409, 1, 2 }, | 1094 | { ahd_patch10_func, 392, 1, 1 }, |
1086 | { ahd_patch0_func, 410, 1, 1 }, | 1095 | { ahd_patch10_func, 395, 1, 1 }, |
1087 | { ahd_patch1_func, 412, 1, 2 }, | 1096 | { ahd_patch10_func, 397, 1, 1 }, |
1088 | { ahd_patch0_func, 413, 1, 1 }, | 1097 | { ahd_patch10_func, 409, 1, 1 }, |
1089 | { ahd_patch1_func, 421, 1, 2 }, | 1098 | { ahd_patch1_func, 419, 1, 2 }, |
1090 | { ahd_patch0_func, 422, 1, 1 }, | 1099 | { ahd_patch0_func, 420, 1, 1 }, |
1091 | { ahd_patch2_func, 435, 1, 2 }, | 1100 | { ahd_patch1_func, 422, 1, 2 }, |
1092 | { ahd_patch0_func, 436, 1, 1 }, | 1101 | { ahd_patch0_func, 423, 1, 1 }, |
1093 | { ahd_patch11_func, 472, 1, 1 }, | 1102 | { ahd_patch1_func, 431, 1, 2 }, |
1094 | { ahd_patch1_func, 480, 1, 2 }, | 1103 | { ahd_patch0_func, 432, 1, 1 }, |
1095 | { ahd_patch0_func, 481, 1, 1 }, | 1104 | { ahd_patch2_func, 445, 1, 2 }, |
1096 | { ahd_patch2_func, 493, 1, 2 }, | 1105 | { ahd_patch0_func, 446, 1, 1 }, |
1097 | { ahd_patch0_func, 494, 1, 1 }, | 1106 | { ahd_patch11_func, 482, 1, 1 }, |
1098 | { ahd_patch12_func, 497, 6, 2 }, | 1107 | { ahd_patch1_func, 490, 1, 2 }, |
1099 | { ahd_patch0_func, 503, 1, 1 }, | 1108 | { ahd_patch0_func, 491, 1, 1 }, |
1100 | { ahd_patch13_func, 524, 7, 1 }, | 1109 | { ahd_patch2_func, 503, 1, 2 }, |
1101 | { ahd_patch14_func, 533, 1, 1 }, | 1110 | { ahd_patch0_func, 504, 1, 1 }, |
1102 | { ahd_patch15_func, 542, 1, 1 }, | 1111 | { ahd_patch12_func, 507, 6, 2 }, |
1103 | { ahd_patch16_func, 543, 1, 2 }, | 1112 | { ahd_patch0_func, 513, 1, 1 }, |
1104 | { ahd_patch0_func, 544, 1, 1 }, | 1113 | { ahd_patch13_func, 534, 7, 1 }, |
1105 | { ahd_patch17_func, 547, 1, 1 }, | 1114 | { ahd_patch14_func, 543, 1, 1 }, |
1106 | { ahd_patch16_func, 548, 1, 1 }, | 1115 | { ahd_patch15_func, 552, 1, 1 }, |
1107 | { ahd_patch18_func, 559, 1, 2 }, | 1116 | { ahd_patch16_func, 553, 1, 2 }, |
1108 | { ahd_patch0_func, 560, 1, 1 }, | 1117 | { ahd_patch0_func, 554, 1, 1 }, |
1109 | { ahd_patch1_func, 579, 1, 2 }, | 1118 | { ahd_patch17_func, 557, 1, 1 }, |
1110 | { ahd_patch0_func, 580, 1, 1 }, | 1119 | { ahd_patch16_func, 558, 1, 1 }, |
1111 | { ahd_patch1_func, 583, 1, 2 }, | 1120 | { ahd_patch18_func, 569, 1, 2 }, |
1112 | { ahd_patch0_func, 584, 1, 1 }, | 1121 | { ahd_patch0_func, 570, 1, 1 }, |
1113 | { ahd_patch2_func, 589, 1, 2 }, | 1122 | { ahd_patch1_func, 589, 1, 2 }, |
1114 | { ahd_patch0_func, 590, 1, 1 }, | 1123 | { ahd_patch0_func, 590, 1, 1 }, |
1115 | { ahd_patch2_func, 594, 1, 2 }, | 1124 | { ahd_patch1_func, 593, 1, 2 }, |
1116 | { ahd_patch0_func, 595, 1, 1 }, | 1125 | { ahd_patch0_func, 594, 1, 1 }, |
1117 | { ahd_patch1_func, 596, 1, 2 }, | 1126 | { ahd_patch2_func, 599, 1, 2 }, |
1118 | { ahd_patch0_func, 597, 1, 1 }, | 1127 | { ahd_patch0_func, 600, 1, 1 }, |
1119 | { ahd_patch2_func, 608, 1, 2 }, | 1128 | { ahd_patch2_func, 604, 1, 2 }, |
1120 | { ahd_patch0_func, 609, 1, 1 }, | 1129 | { ahd_patch0_func, 605, 1, 1 }, |
1121 | { ahd_patch19_func, 613, 1, 1 }, | 1130 | { ahd_patch1_func, 606, 1, 2 }, |
1122 | { ahd_patch20_func, 618, 1, 1 }, | 1131 | { ahd_patch0_func, 607, 1, 1 }, |
1123 | { ahd_patch21_func, 619, 2, 1 }, | 1132 | { ahd_patch2_func, 618, 1, 2 }, |
1124 | { ahd_patch20_func, 623, 1, 2 }, | 1133 | { ahd_patch0_func, 619, 1, 1 }, |
1125 | { ahd_patch0_func, 624, 1, 1 }, | 1134 | { ahd_patch19_func, 623, 1, 1 }, |
1126 | { ahd_patch2_func, 627, 1, 2 }, | 1135 | { ahd_patch20_func, 628, 1, 1 }, |
1127 | { ahd_patch0_func, 628, 1, 1 }, | 1136 | { ahd_patch21_func, 629, 2, 1 }, |
1128 | { ahd_patch2_func, 643, 1, 2 }, | 1137 | { ahd_patch20_func, 633, 1, 2 }, |
1129 | { ahd_patch0_func, 644, 1, 1 }, | 1138 | { ahd_patch0_func, 634, 1, 1 }, |
1130 | { ahd_patch13_func, 645, 14, 1 }, | 1139 | { ahd_patch2_func, 637, 1, 2 }, |
1131 | { ahd_patch1_func, 663, 1, 2 }, | 1140 | { ahd_patch0_func, 638, 1, 1 }, |
1132 | { ahd_patch0_func, 664, 1, 1 }, | 1141 | { ahd_patch2_func, 653, 1, 2 }, |
1133 | { ahd_patch13_func, 665, 1, 1 }, | 1142 | { ahd_patch0_func, 654, 1, 1 }, |
1134 | { ahd_patch1_func, 677, 1, 2 }, | 1143 | { ahd_patch13_func, 655, 14, 1 }, |
1135 | { ahd_patch0_func, 678, 1, 1 }, | 1144 | { ahd_patch1_func, 673, 1, 2 }, |
1136 | { ahd_patch1_func, 685, 1, 2 }, | 1145 | { ahd_patch0_func, 674, 1, 1 }, |
1137 | { ahd_patch0_func, 686, 1, 1 }, | 1146 | { ahd_patch13_func, 675, 1, 1 }, |
1138 | { ahd_patch19_func, 709, 1, 1 }, | 1147 | { ahd_patch1_func, 687, 1, 2 }, |
1139 | { ahd_patch19_func, 747, 1, 1 }, | 1148 | { ahd_patch0_func, 688, 1, 1 }, |
1140 | { ahd_patch1_func, 758, 1, 2 }, | 1149 | { ahd_patch1_func, 695, 1, 2 }, |
1141 | { ahd_patch0_func, 759, 1, 1 }, | 1150 | { ahd_patch0_func, 696, 1, 1 }, |
1142 | { ahd_patch1_func, 776, 1, 2 }, | 1151 | { ahd_patch19_func, 719, 1, 1 }, |
1143 | { ahd_patch0_func, 777, 1, 1 }, | 1152 | { ahd_patch19_func, 757, 1, 1 }, |
1144 | { ahd_patch1_func, 779, 1, 2 }, | 1153 | { ahd_patch1_func, 768, 1, 2 }, |
1145 | { ahd_patch0_func, 780, 1, 1 }, | 1154 | { ahd_patch0_func, 769, 1, 1 }, |
1146 | { ahd_patch1_func, 783, 1, 2 }, | 1155 | { ahd_patch7_func, 785, 3, 1 }, |
1147 | { ahd_patch0_func, 784, 1, 1 }, | 1156 | { ahd_patch1_func, 789, 1, 2 }, |
1148 | { ahd_patch22_func, 786, 1, 2 }, | 1157 | { ahd_patch0_func, 790, 1, 1 }, |
1149 | { ahd_patch0_func, 787, 2, 1 }, | 1158 | { ahd_patch1_func, 792, 1, 2 }, |
1150 | { ahd_patch23_func, 790, 4, 2 }, | 1159 | { ahd_patch0_func, 793, 1, 1 }, |
1151 | { ahd_patch0_func, 794, 1, 1 }, | 1160 | { ahd_patch1_func, 796, 1, 2 }, |
1152 | { ahd_patch23_func, 802, 11, 1 } | 1161 | { ahd_patch0_func, 797, 1, 1 }, |
1162 | { ahd_patch22_func, 799, 1, 2 }, | ||
1163 | { ahd_patch0_func, 800, 2, 1 }, | ||
1164 | { ahd_patch23_func, 803, 4, 2 }, | ||
1165 | { ahd_patch0_func, 807, 1, 1 }, | ||
1166 | { ahd_patch23_func, 815, 11, 1 } | ||
1153 | }; | 1167 | }; |
1154 | 1168 | ||
1155 | static struct cs { | 1169 | static struct cs { |
1156 | uint16_t begin; | 1170 | uint16_t begin; |
1157 | uint16_t end; | 1171 | uint16_t end; |
1158 | } critical_sections[] = { | 1172 | } critical_sections[] = { |
1159 | { 17, 28 }, | 1173 | { 17, 30 }, |
1160 | { 29, 30 }, | ||
1161 | { 47, 58 }, | 1174 | { 47, 58 }, |
1162 | { 61, 63 }, | 1175 | { 61, 63 }, |
1163 | { 65, 66 }, | 1176 | { 65, 66 }, |
1164 | { 72, 92 }, | 1177 | { 72, 92 }, |
1165 | { 110, 137 }, | 1178 | { 110, 142 }, |
1166 | { 138, 175 }, | 1179 | { 143, 180 }, |
1167 | { 180, 188 }, | 1180 | { 185, 193 }, |
1168 | { 213, 264 }, | 1181 | { 218, 274 }, |
1169 | { 425, 433 }, | 1182 | { 435, 443 }, |
1170 | { 443, 445 }, | 1183 | { 453, 455 }, |
1171 | { 448, 457 }, | 1184 | { 458, 467 }, |
1172 | { 709, 739 }, | 1185 | { 719, 749 }, |
1173 | { 749, 753 } | 1186 | { 759, 763 } |
1174 | }; | 1187 | }; |
1175 | 1188 | ||
1176 | static const int num_critical_sections = sizeof(critical_sections) | 1189 | static const int num_critical_sections = sizeof(critical_sections) |