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) |
