diff options
author | Hannes Reinecke <hare@suse.de> | 2006-01-12 06:08:06 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2006-01-12 13:03:50 -0500 |
commit | 11668bb673c41ec169a85d0b52c538a1c11d29e1 (patch) | |
tree | 423c30e22eea305d5c059c6463bdd226c1734bf4 /drivers/scsi/aic7xxx | |
parent | ba62cd2d01e401faa5d5a25fa8e990d0b1a1996a (diff) |
[SCSI] aic79xx: Sequencer update
Update sequencer code to Adaptec version 2.0.12-6.3.9.
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/aic7xxx')
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx.h | 12 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx.reg | 60 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx.seq | 241 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_core.c | 665 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_inline.h | 6 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.c | 62 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_reg.h_shipped | 646 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped | 507 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_seq.h_shipped | 1250 |
9 files changed, 1911 insertions, 1538 deletions
diff --git a/drivers/scsi/aic7xxx/aic79xx.h b/drivers/scsi/aic7xxx/aic79xx.h index ac3d07a2a286..2cfdbef447db 100644 --- a/drivers/scsi/aic7xxx/aic79xx.h +++ b/drivers/scsi/aic7xxx/aic79xx.h | |||
@@ -75,8 +75,7 @@ struct scb_platform_data; | |||
75 | #define INITIATOR_WILDCARD (~0) | 75 | #define INITIATOR_WILDCARD (~0) |
76 | #define SCB_LIST_NULL 0xFF00 | 76 | #define SCB_LIST_NULL 0xFF00 |
77 | #define SCB_LIST_NULL_LE (ahd_htole16(SCB_LIST_NULL)) | 77 | #define SCB_LIST_NULL_LE (ahd_htole16(SCB_LIST_NULL)) |
78 | #define QOUTFIFO_ENTRY_VALID 0x8000 | 78 | #define QOUTFIFO_ENTRY_VALID 0x80 |
79 | #define QOUTFIFO_ENTRY_VALID_LE (ahd_htole16(0x8000)) | ||
80 | #define SCBID_IS_NULL(scbid) (((scbid) & 0xFF00 ) == SCB_LIST_NULL) | 79 | #define SCBID_IS_NULL(scbid) (((scbid) & 0xFF00 ) == SCB_LIST_NULL) |
81 | 80 | ||
82 | #define SCSIID_TARGET(ahd, scsiid) \ | 81 | #define SCSIID_TARGET(ahd, scsiid) \ |
@@ -1053,6 +1052,13 @@ typedef uint8_t ahd_mode_state; | |||
1053 | 1052 | ||
1054 | typedef void ahd_callback_t (void *); | 1053 | typedef void ahd_callback_t (void *); |
1055 | 1054 | ||
1055 | struct ahd_completion | ||
1056 | { | ||
1057 | uint16_t tag; | ||
1058 | uint8_t sg_status; | ||
1059 | uint8_t valid_tag; | ||
1060 | }; | ||
1061 | |||
1056 | struct ahd_softc { | 1062 | struct ahd_softc { |
1057 | bus_space_tag_t tags[2]; | 1063 | bus_space_tag_t tags[2]; |
1058 | bus_space_handle_t bshs[2]; | 1064 | bus_space_handle_t bshs[2]; |
@@ -1142,11 +1148,11 @@ struct ahd_softc { | |||
1142 | struct seeprom_config *seep_config; | 1148 | struct seeprom_config *seep_config; |
1143 | 1149 | ||
1144 | /* Command Queues */ | 1150 | /* Command Queues */ |
1151 | struct ahd_completion *qoutfifo; | ||
1145 | uint16_t qoutfifonext; | 1152 | uint16_t qoutfifonext; |
1146 | uint16_t qoutfifonext_valid_tag; | 1153 | uint16_t qoutfifonext_valid_tag; |
1147 | uint16_t qinfifonext; | 1154 | uint16_t qinfifonext; |
1148 | uint16_t qinfifo[AHD_SCB_MAX]; | 1155 | uint16_t qinfifo[AHD_SCB_MAX]; |
1149 | uint16_t *qoutfifo; | ||
1150 | 1156 | ||
1151 | /* | 1157 | /* |
1152 | * Our qfreeze count. The sequencer compares | 1158 | * Our qfreeze count. The sequencer compares |
diff --git a/drivers/scsi/aic7xxx/aic79xx.reg b/drivers/scsi/aic7xxx/aic79xx.reg index cca58edc8648..3a3204703b15 100644 --- a/drivers/scsi/aic7xxx/aic79xx.reg +++ b/drivers/scsi/aic7xxx/aic79xx.reg | |||
@@ -39,7 +39,7 @@ | |||
39 | * | 39 | * |
40 | * $FreeBSD$ | 40 | * $FreeBSD$ |
41 | */ | 41 | */ |
42 | VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $" | 42 | VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#76 $" |
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 |
@@ -65,13 +65,6 @@ VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $" | |||
65 | mvi MODE_PTR, MK_MODE(src, dst); \ | 65 | mvi MODE_PTR, MK_MODE(src, dst); \ |
66 | } | 66 | } |
67 | 67 | ||
68 | #define TOGGLE_DFF_MODE \ | ||
69 | if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \ | ||
70 | call toggle_dff_mode_work_around; \ | ||
71 | } else { \ | ||
72 | xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1); \ | ||
73 | } | ||
74 | |||
75 | #define RESTORE_MODE(mode) \ | 68 | #define RESTORE_MODE(mode) \ |
76 | if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \ | 69 | if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \ |
77 | mov mode call set_mode_work_around; \ | 70 | mov mode call set_mode_work_around; \ |
@@ -1199,7 +1192,7 @@ register TARGPCISTAT { | |||
1199 | 1192 | ||
1200 | /* | 1193 | /* |
1201 | * LQ Packet In | 1194 | * LQ Packet In |
1202 | * The last LQ Packet received | 1195 | * The last LQ Packet recieved |
1203 | */ | 1196 | */ |
1204 | register LQIN { | 1197 | register LQIN { |
1205 | address 0x020 | 1198 | address 0x020 |
@@ -3542,10 +3535,34 @@ scratch_ram { | |||
3542 | COMPLETE_DMA_SCB_HEAD { | 3535 | COMPLETE_DMA_SCB_HEAD { |
3543 | size 2 | 3536 | size 2 |
3544 | } | 3537 | } |
3545 | /* Counting semaphore to prevent new select-outs */ | 3538 | /* |
3539 | * tail of list of SCBs that have | ||
3540 | * completed but need to be uploaded | ||
3541 | * to the host prior to being completed. | ||
3542 | */ | ||
3543 | COMPLETE_DMA_SCB_TAIL { | ||
3544 | size 2 | ||
3545 | } | ||
3546 | /* | ||
3547 | * head of list of SCBs that have | ||
3548 | * been uploaded to the host, but cannot | ||
3549 | * be completed until the QFREEZE is in | ||
3550 | * full effect (i.e. no selections pending). | ||
3551 | */ | ||
3552 | COMPLETE_ON_QFREEZE_HEAD { | ||
3553 | size 2 | ||
3554 | } | ||
3555 | /* | ||
3556 | * Counting semaphore to prevent new select-outs | ||
3557 | * The queue is frozen so long as the sequencer | ||
3558 | * and kernel freeze counts differ. | ||
3559 | */ | ||
3546 | QFREEZE_COUNT { | 3560 | QFREEZE_COUNT { |
3547 | size 2 | 3561 | size 2 |
3548 | } | 3562 | } |
3563 | KERNEL_QFREEZE_COUNT { | ||
3564 | size 2 | ||
3565 | } | ||
3549 | /* | 3566 | /* |
3550 | * Mode to restore on legacy idle loop exit. | 3567 | * Mode to restore on legacy idle loop exit. |
3551 | */ | 3568 | */ |
@@ -3625,6 +3642,17 @@ scratch_ram { | |||
3625 | size 1 | 3642 | size 1 |
3626 | } | 3643 | } |
3627 | /* | 3644 | /* |
3645 | * Kernel and sequencer offsets into the queue of | ||
3646 | * incoming target mode command descriptors. The | ||
3647 | * queue is full when the KERNEL_TQINPOS == TQINPOS. | ||
3648 | */ | ||
3649 | KERNEL_TQINPOS { | ||
3650 | size 1 | ||
3651 | } | ||
3652 | TQINPOS { | ||
3653 | size 1 | ||
3654 | } | ||
3655 | /* | ||
3628 | * Base address of our shared data with the kernel driver in host | 3656 | * Base address of our shared data with the kernel driver in host |
3629 | * memory. This includes the qoutfifo and target mode | 3657 | * memory. This includes the qoutfifo and target mode |
3630 | * incoming command queue. | 3658 | * incoming command queue. |
@@ -3639,17 +3667,6 @@ scratch_ram { | |||
3639 | QOUTFIFO_NEXT_ADDR { | 3667 | QOUTFIFO_NEXT_ADDR { |
3640 | size 4 | 3668 | size 4 |
3641 | } | 3669 | } |
3642 | /* | ||
3643 | * Kernel and sequencer offsets into the queue of | ||
3644 | * incoming target mode command descriptors. The | ||
3645 | * queue is full when the KERNEL_TQINPOS == TQINPOS. | ||
3646 | */ | ||
3647 | KERNEL_TQINPOS { | ||
3648 | size 1 | ||
3649 | } | ||
3650 | TQINPOS { | ||
3651 | size 1 | ||
3652 | } | ||
3653 | ARG_1 { | 3670 | ARG_1 { |
3654 | size 1 | 3671 | size 1 |
3655 | mask SEND_MSG 0x80 | 3672 | mask SEND_MSG 0x80 |
@@ -3951,6 +3968,7 @@ const SG_PREFETCH_ADDR_MASK download | |||
3951 | const SG_SIZEOF download | 3968 | const SG_SIZEOF download |
3952 | const PKT_OVERRUN_BUFOFFSET download | 3969 | const PKT_OVERRUN_BUFOFFSET download |
3953 | const SCB_TRANSFER_SIZE download | 3970 | const SCB_TRANSFER_SIZE download |
3971 | const CACHELINE_MASK download | ||
3954 | 3972 | ||
3955 | /* | 3973 | /* |
3956 | * BIOS SCB offsets | 3974 | * BIOS SCB offsets |
diff --git a/drivers/scsi/aic7xxx/aic79xx.seq b/drivers/scsi/aic7xxx/aic79xx.seq index 65339bc1ca99..bef1f9d369b6 100644 --- a/drivers/scsi/aic7xxx/aic79xx.seq +++ b/drivers/scsi/aic7xxx/aic79xx.seq | |||
@@ -40,7 +40,7 @@ | |||
40 | * $FreeBSD$ | 40 | * $FreeBSD$ |
41 | */ | 41 | */ |
42 | 42 | ||
43 | VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#99 $" | 43 | VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#119 $" |
44 | PATCH_ARG_LIST = "struct ahd_softc *ahd" | 44 | PATCH_ARG_LIST = "struct ahd_softc *ahd" |
45 | PREFIX = "ahd_" | 45 | PREFIX = "ahd_" |
46 | 46 | ||
@@ -68,13 +68,47 @@ no_error_set: | |||
68 | } | 68 | } |
69 | SET_MODE(M_SCSI, M_SCSI) | 69 | SET_MODE(M_SCSI, M_SCSI) |
70 | test SCSISEQ0, ENSELO|ENARBO jnz idle_loop_checkbus; | 70 | test SCSISEQ0, ENSELO|ENARBO jnz idle_loop_checkbus; |
71 | test SEQ_FLAGS2, SELECTOUT_QFROZEN jnz idle_loop_checkbus; | 71 | test SEQ_FLAGS2, SELECTOUT_QFROZEN jz check_waiting_list; |
72 | /* | ||
73 | * If the kernel has caught up with us, thaw the queue. | ||
74 | */ | ||
75 | mov A, KERNEL_QFREEZE_COUNT; | ||
76 | cmp QFREEZE_COUNT, A jne check_frozen_completions; | ||
77 | mov A, KERNEL_QFREEZE_COUNT[1]; | ||
78 | cmp QFREEZE_COUNT[1], A jne check_frozen_completions; | ||
79 | and SEQ_FLAGS2, ~SELECTOUT_QFROZEN; | ||
80 | jmp check_waiting_list; | ||
81 | check_frozen_completions: | ||
82 | test SSTAT0, SELDO|SELINGO jnz idle_loop_checkbus; | ||
83 | BEGIN_CRITICAL; | ||
84 | /* | ||
85 | * If we have completions stalled waiting for the qfreeze | ||
86 | * to take effect, move them over to the complete_scb list | ||
87 | * now that no selections are pending. | ||
88 | */ | ||
89 | cmp COMPLETE_ON_QFREEZE_HEAD[1],SCB_LIST_NULL je idle_loop_checkbus; | ||
90 | /* | ||
91 | * Find the end of the qfreeze list. The first element has | ||
92 | * to be treated specially. | ||
93 | */ | ||
94 | bmov SCBPTR, COMPLETE_ON_QFREEZE_HEAD, 2; | ||
95 | cmp SCB_NEXT_COMPLETE[1], SCB_LIST_NULL je join_lists; | ||
96 | /* | ||
97 | * Now the normal loop. | ||
98 | */ | ||
99 | bmov SCBPTR, SCB_NEXT_COMPLETE, 2; | ||
100 | cmp SCB_NEXT_COMPLETE[1], SCB_LIST_NULL jne . - 1; | ||
101 | join_lists: | ||
102 | bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2; | ||
103 | bmov COMPLETE_SCB_HEAD, COMPLETE_ON_QFREEZE_HEAD, 2; | ||
104 | mvi COMPLETE_ON_QFREEZE_HEAD[1], SCB_LIST_NULL; | ||
105 | jmp idle_loop_checkbus; | ||
106 | check_waiting_list: | ||
72 | cmp WAITING_TID_HEAD[1], SCB_LIST_NULL je idle_loop_checkbus; | 107 | cmp WAITING_TID_HEAD[1], SCB_LIST_NULL je idle_loop_checkbus; |
73 | /* | 108 | /* |
74 | * ENSELO is cleared by a SELDO, so we must test for SELDO | 109 | * ENSELO is cleared by a SELDO, so we must test for SELDO |
75 | * one last time. | 110 | * one last time. |
76 | */ | 111 | */ |
77 | BEGIN_CRITICAL; | ||
78 | test SSTAT0, SELDO jnz select_out; | 112 | test SSTAT0, SELDO jnz select_out; |
79 | END_CRITICAL; | 113 | END_CRITICAL; |
80 | call start_selection; | 114 | call start_selection; |
@@ -90,6 +124,13 @@ idle_loop_check_nonpackreq: | |||
90 | test SSTAT2, NONPACKREQ jz . + 2; | 124 | test SSTAT2, NONPACKREQ jz . + 2; |
91 | call unexpected_nonpkt_phase_find_ctxt; | 125 | call unexpected_nonpkt_phase_find_ctxt; |
92 | if ((ahd->bugs & AHD_FAINT_LED_BUG) != 0) { | 126 | if ((ahd->bugs & AHD_FAINT_LED_BUG) != 0) { |
127 | /* | ||
128 | * On Rev A. hardware, the busy LED is only | ||
129 | * turned on automaically during selections | ||
130 | * and re-selections. Make the LED status | ||
131 | * more useful by forcing it to be on so | ||
132 | * long as one of our data FIFOs is active. | ||
133 | */ | ||
93 | and A, FIFO0FREE|FIFO1FREE, DFFSTAT; | 134 | and A, FIFO0FREE|FIFO1FREE, DFFSTAT; |
94 | cmp A, FIFO0FREE|FIFO1FREE jne . + 3; | 135 | cmp A, FIFO0FREE|FIFO1FREE jne . + 3; |
95 | and SBLKCTL, ~DIAGLEDEN|DIAGLEDON; | 136 | and SBLKCTL, ~DIAGLEDEN|DIAGLEDON; |
@@ -101,9 +142,9 @@ idle_loop_check_nonpackreq: | |||
101 | call idle_loop_cchan; | 142 | call idle_loop_cchan; |
102 | jmp idle_loop; | 143 | jmp idle_loop; |
103 | 144 | ||
104 | BEGIN_CRITICAL; | ||
105 | idle_loop_gsfifo: | 145 | idle_loop_gsfifo: |
106 | SET_MODE(M_SCSI, M_SCSI) | 146 | SET_MODE(M_SCSI, M_SCSI) |
147 | BEGIN_CRITICAL; | ||
107 | idle_loop_gsfifo_in_scsi_mode: | 148 | idle_loop_gsfifo_in_scsi_mode: |
108 | test LQISTAT2, LQIGSAVAIL jz return; | 149 | test LQISTAT2, LQIGSAVAIL jz return; |
109 | /* | 150 | /* |
@@ -152,11 +193,15 @@ END_CRITICAL; | |||
152 | 193 | ||
153 | idle_loop_service_fifos: | 194 | idle_loop_service_fifos: |
154 | SET_MODE(M_DFF0, M_DFF0) | 195 | SET_MODE(M_DFF0, M_DFF0) |
196 | BEGIN_CRITICAL; | ||
155 | test LONGJMP_ADDR[1], INVALID_ADDR jnz idle_loop_next_fifo; | 197 | test LONGJMP_ADDR[1], INVALID_ADDR jnz idle_loop_next_fifo; |
156 | call longjmp; | 198 | call longjmp; |
199 | END_CRITICAL; | ||
157 | idle_loop_next_fifo: | 200 | idle_loop_next_fifo: |
158 | SET_MODE(M_DFF1, M_DFF1) | 201 | SET_MODE(M_DFF1, M_DFF1) |
202 | BEGIN_CRITICAL; | ||
159 | test LONGJMP_ADDR[1], INVALID_ADDR jz longjmp; | 203 | test LONGJMP_ADDR[1], INVALID_ADDR jz longjmp; |
204 | END_CRITICAL; | ||
160 | return: | 205 | return: |
161 | ret; | 206 | ret; |
162 | 207 | ||
@@ -170,7 +215,6 @@ BEGIN_CRITICAL; | |||
170 | test CCSCBCTL, CCARREN|CCSCBEN jz scbdma_idle; | 215 | test CCSCBCTL, CCARREN|CCSCBEN jz scbdma_idle; |
171 | test CCSCBCTL, CCSCBDIR jnz fetch_new_scb_inprog; | 216 | test CCSCBCTL, CCSCBDIR jnz fetch_new_scb_inprog; |
172 | test CCSCBCTL, CCSCBDONE jz return; | 217 | test CCSCBCTL, CCSCBDONE jz return; |
173 | END_CRITICAL; | ||
174 | /* FALLTHROUGH */ | 218 | /* FALLTHROUGH */ |
175 | scbdma_tohost_done: | 219 | scbdma_tohost_done: |
176 | test CCSCBCTL, CCARREN jz fill_qoutfifo_dmadone; | 220 | test CCSCBCTL, CCARREN jz fill_qoutfifo_dmadone; |
@@ -180,26 +224,18 @@ scbdma_tohost_done: | |||
180 | * bad SCSI status (currently only for underruns), we | 224 | * bad SCSI status (currently only for underruns), we |
181 | * queue the SCB for normal completion. Otherwise, we | 225 | * queue the SCB for normal completion. Otherwise, we |
182 | * wait until any select-out activity has halted, and | 226 | * wait until any select-out activity has halted, and |
183 | * then notify the host so that the transaction can be | 227 | * then queue the completion. |
184 | * dealt with. | ||
185 | */ | 228 | */ |
186 | test SCB_SCSI_STATUS, 0xff jnz scbdma_notify_host; | ||
187 | and CCSCBCTL, ~(CCARREN|CCSCBEN); | 229 | and CCSCBCTL, ~(CCARREN|CCSCBEN); |
188 | bmov COMPLETE_DMA_SCB_HEAD, SCB_NEXT_COMPLETE, 2; | 230 | bmov COMPLETE_DMA_SCB_HEAD, SCB_NEXT_COMPLETE, 2; |
231 | cmp SCB_NEXT_COMPLETE[1], SCB_LIST_NULL jne . + 2; | ||
232 | mvi COMPLETE_DMA_SCB_TAIL[1], SCB_LIST_NULL; | ||
233 | test SCB_SCSI_STATUS, 0xff jz scbdma_queue_completion; | ||
234 | bmov SCB_NEXT_COMPLETE, COMPLETE_ON_QFREEZE_HEAD, 2; | ||
235 | bmov COMPLETE_ON_QFREEZE_HEAD, SCBPTR, 2 ret; | ||
236 | scbdma_queue_completion: | ||
189 | bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2; | 237 | bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2; |
190 | bmov COMPLETE_SCB_HEAD, SCBPTR, 2 ret; | 238 | bmov COMPLETE_SCB_HEAD, SCBPTR, 2 ret; |
191 | scbdma_notify_host: | ||
192 | SET_MODE(M_SCSI, M_SCSI) | ||
193 | test SCSISEQ0, ENSELO jnz return; | ||
194 | test SSTAT0, (SELDO|SELINGO) jnz return; | ||
195 | SET_MODE(M_CCHAN, M_CCHAN) | ||
196 | /* | ||
197 | * Remove SCB and notify host. | ||
198 | */ | ||
199 | and CCSCBCTL, ~(CCARREN|CCSCBEN); | ||
200 | bmov COMPLETE_DMA_SCB_HEAD, SCB_NEXT_COMPLETE, 2; | ||
201 | SET_SEQINTCODE(BAD_SCB_STATUS) | ||
202 | ret; | ||
203 | fill_qoutfifo_dmadone: | 239 | fill_qoutfifo_dmadone: |
204 | and CCSCBCTL, ~(CCARREN|CCSCBEN); | 240 | and CCSCBCTL, ~(CCARREN|CCSCBEN); |
205 | call qoutfifo_updated; | 241 | call qoutfifo_updated; |
@@ -208,6 +244,7 @@ fill_qoutfifo_dmadone: | |||
208 | test QOFF_CTLSTA, SDSCB_ROLLOVR jz return; | 244 | test QOFF_CTLSTA, SDSCB_ROLLOVR jz return; |
209 | bmov QOUTFIFO_NEXT_ADDR, SHARED_DATA_ADDR, 4; | 245 | bmov QOUTFIFO_NEXT_ADDR, SHARED_DATA_ADDR, 4; |
210 | xor QOUTFIFO_ENTRY_VALID_TAG, QOUTFIFO_ENTRY_VALID_TOGGLE ret; | 246 | xor QOUTFIFO_ENTRY_VALID_TAG, QOUTFIFO_ENTRY_VALID_TOGGLE ret; |
247 | END_CRITICAL; | ||
211 | 248 | ||
212 | qoutfifo_updated: | 249 | qoutfifo_updated: |
213 | /* | 250 | /* |
@@ -324,14 +361,15 @@ fill_qoutfifo: | |||
324 | * Keep track of the SCBs we are dmaing just | 361 | * Keep track of the SCBs we are dmaing just |
325 | * in case the DMA fails or is aborted. | 362 | * in case the DMA fails or is aborted. |
326 | */ | 363 | */ |
327 | mov A, QOUTFIFO_ENTRY_VALID_TAG; | ||
328 | bmov COMPLETE_SCB_DMAINPROG_HEAD, COMPLETE_SCB_HEAD, 2; | 364 | bmov COMPLETE_SCB_DMAINPROG_HEAD, COMPLETE_SCB_HEAD, 2; |
329 | mvi CCSCBCTL, CCSCBRESET; | 365 | mvi CCSCBCTL, CCSCBRESET; |
330 | bmov SCBHADDR, QOUTFIFO_NEXT_ADDR, 4; | 366 | bmov SCBHADDR, QOUTFIFO_NEXT_ADDR, 4; |
367 | mov A, QOUTFIFO_NEXT_ADDR; | ||
331 | bmov SCBPTR, COMPLETE_SCB_HEAD, 2; | 368 | bmov SCBPTR, COMPLETE_SCB_HEAD, 2; |
332 | fill_qoutfifo_loop: | 369 | fill_qoutfifo_loop: |
333 | mov CCSCBRAM, SCBPTR; | 370 | bmov CCSCBRAM, SCBPTR, 2; |
334 | or CCSCBRAM, A, SCBPTR[1]; | 371 | mov CCSCBRAM, SCB_SGPTR[0]; |
372 | mov CCSCBRAM, QOUTFIFO_ENTRY_VALID_TAG; | ||
335 | mov NONE, SDSCB_QOFF; | 373 | mov NONE, SDSCB_QOFF; |
336 | inc INT_COALESCING_CMDCOUNT; | 374 | inc INT_COALESCING_CMDCOUNT; |
337 | add CMDS_PENDING, -1; | 375 | add CMDS_PENDING, -1; |
@@ -339,6 +377,18 @@ fill_qoutfifo_loop: | |||
339 | cmp SCB_NEXT_COMPLETE[1], SCB_LIST_NULL je fill_qoutfifo_done; | 377 | cmp SCB_NEXT_COMPLETE[1], SCB_LIST_NULL je fill_qoutfifo_done; |
340 | cmp CCSCBADDR, CCSCBADDR_MAX je fill_qoutfifo_done; | 378 | cmp CCSCBADDR, CCSCBADDR_MAX je fill_qoutfifo_done; |
341 | test QOFF_CTLSTA, SDSCB_ROLLOVR jnz fill_qoutfifo_done; | 379 | test QOFF_CTLSTA, SDSCB_ROLLOVR jnz fill_qoutfifo_done; |
380 | /* | ||
381 | * Don't cross an ADB or Cachline boundary when DMA'ing | ||
382 | * completion entries. In PCI mode, at least in 32/33 | ||
383 | * configurations, the SCB DMA engine may lose its place | ||
384 | * in the data-stream should the target force a retry on | ||
385 | * something other than an 8byte aligned boundary. In | ||
386 | * PCI-X mode, we do this to avoid split transactions since | ||
387 | * many chipsets seem to be unable to format proper split | ||
388 | * completions to continue the data transfer. | ||
389 | */ | ||
390 | add SINDEX, A, CCSCBADDR; | ||
391 | test SINDEX, CACHELINE_MASK jz fill_qoutfifo_done; | ||
342 | bmov SCBPTR, SCB_NEXT_COMPLETE, 2; | 392 | bmov SCBPTR, SCB_NEXT_COMPLETE, 2; |
343 | jmp fill_qoutfifo_loop; | 393 | jmp fill_qoutfifo_loop; |
344 | fill_qoutfifo_done: | 394 | fill_qoutfifo_done: |
@@ -354,7 +404,6 @@ dma_complete_scb: | |||
354 | bmov SCBPTR, COMPLETE_DMA_SCB_HEAD, 2; | 404 | bmov SCBPTR, COMPLETE_DMA_SCB_HEAD, 2; |
355 | bmov SCBHADDR, SCB_BUSADDR, 4; | 405 | bmov SCBHADDR, SCB_BUSADDR, 4; |
356 | mvi CCARREN|CCSCBEN|CCSCBRESET jmp dma_scb; | 406 | mvi CCARREN|CCSCBEN|CCSCBRESET jmp dma_scb; |
357 | END_CRITICAL; | ||
358 | 407 | ||
359 | /* | 408 | /* |
360 | * Either post or fetch an SCB from host memory. The caller | 409 | * Either post or fetch an SCB from host memory. The caller |
@@ -371,9 +420,19 @@ dma_scb: | |||
371 | mvi SCBHCNT, SCB_TRANSFER_SIZE; | 420 | mvi SCBHCNT, SCB_TRANSFER_SIZE; |
372 | mov CCSCBCTL, SINDEX ret; | 421 | mov CCSCBCTL, SINDEX ret; |
373 | 422 | ||
374 | BEGIN_CRITICAL; | ||
375 | setjmp: | 423 | setjmp: |
376 | bmov LONGJMP_ADDR, STACK, 2 ret; | 424 | /* |
425 | * At least on the A, a return in the same | ||
426 | * instruction as the bmov results in a return | ||
427 | * to the caller, not to the new address at the | ||
428 | * top of the stack. Since we want the latter | ||
429 | * (we use setjmp to register a handler from an | ||
430 | * interrupt context but not invoke that handler | ||
431 | * until we return to our idle loop), use a | ||
432 | * separate ret instruction. | ||
433 | */ | ||
434 | bmov LONGJMP_ADDR, STACK, 2; | ||
435 | ret; | ||
377 | setjmp_inline: | 436 | setjmp_inline: |
378 | bmov LONGJMP_ADDR, STACK, 2; | 437 | bmov LONGJMP_ADDR, STACK, 2; |
379 | longjmp: | 438 | longjmp: |
@@ -392,11 +451,6 @@ set_mode_work_around: | |||
392 | mvi SEQINTCTL, INTVEC1DSL; | 451 | mvi SEQINTCTL, INTVEC1DSL; |
393 | mov MODE_PTR, SINDEX; | 452 | mov MODE_PTR, SINDEX; |
394 | clr SEQINTCTL ret; | 453 | clr SEQINTCTL ret; |
395 | |||
396 | toggle_dff_mode_work_around: | ||
397 | mvi SEQINTCTL, INTVEC1DSL; | ||
398 | xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1); | ||
399 | clr SEQINTCTL ret; | ||
400 | } | 454 | } |
401 | 455 | ||
402 | 456 | ||
@@ -490,6 +544,21 @@ allocate_fifo1: | |||
490 | SET_SRC_MODE M_SCSI; | 544 | SET_SRC_MODE M_SCSI; |
491 | SET_DST_MODE M_SCSI; | 545 | SET_DST_MODE M_SCSI; |
492 | select_in: | 546 | select_in: |
547 | if ((ahd->bugs & AHD_FAINT_LED_BUG) != 0) { | ||
548 | /* | ||
549 | * On Rev A. hardware, the busy LED is only | ||
550 | * turned on automaically during selections | ||
551 | * and re-selections. Make the LED status | ||
552 | * more useful by forcing it to be on from | ||
553 | * the point of selection until our idle | ||
554 | * loop determines that neither of our FIFOs | ||
555 | * are busy. This handles the non-packetized | ||
556 | * case nicely as we will not return to the | ||
557 | * idle loop until the busfree at the end of | ||
558 | * each transaction. | ||
559 | */ | ||
560 | or SBLKCTL, DIAGLEDEN|DIAGLEDON; | ||
561 | } | ||
493 | if ((ahd->bugs & AHD_BUSFREEREV_BUG) != 0) { | 562 | if ((ahd->bugs & AHD_BUSFREEREV_BUG) != 0) { |
494 | /* | 563 | /* |
495 | * Test to ensure that the bus has not | 564 | * Test to ensure that the bus has not |
@@ -528,6 +597,21 @@ SET_SRC_MODE M_SCSI; | |||
528 | SET_DST_MODE M_SCSI; | 597 | SET_DST_MODE M_SCSI; |
529 | select_out: | 598 | select_out: |
530 | BEGIN_CRITICAL; | 599 | BEGIN_CRITICAL; |
600 | if ((ahd->bugs & AHD_FAINT_LED_BUG) != 0) { | ||
601 | /* | ||
602 | * On Rev A. hardware, the busy LED is only | ||
603 | * turned on automaically during selections | ||
604 | * and re-selections. Make the LED status | ||
605 | * more useful by forcing it to be on from | ||
606 | * the point of re-selection until our idle | ||
607 | * loop determines that neither of our FIFOs | ||
608 | * are busy. This handles the non-packetized | ||
609 | * case nicely as we will not return to the | ||
610 | * idle loop until the busfree at the end of | ||
611 | * each transaction. | ||
612 | */ | ||
613 | or SBLKCTL, DIAGLEDEN|DIAGLEDON; | ||
614 | } | ||
531 | /* Clear out all SCBs that have been successfully sent. */ | 615 | /* Clear out all SCBs that have been successfully sent. */ |
532 | if ((ahd->bugs & AHD_SENT_SCB_UPDATE_BUG) != 0) { | 616 | if ((ahd->bugs & AHD_SENT_SCB_UPDATE_BUG) != 0) { |
533 | /* | 617 | /* |
@@ -1000,15 +1084,9 @@ not_found_ITloop: | |||
1000 | /* | 1084 | /* |
1001 | * We received a "command complete" message. Put the SCB on the complete | 1085 | * We received a "command complete" message. Put the SCB on the complete |
1002 | * queue and trigger a completion interrupt via the idle loop. Before doing | 1086 | * queue and trigger a completion interrupt via the idle loop. Before doing |
1003 | * so, check to see if there | 1087 | * so, check to see if there is a residual or the status byte is something |
1004 | * is a residual or the status byte is something other than STATUS_GOOD (0). | 1088 | * other than STATUS_GOOD (0). In either of these conditions, we upload the |
1005 | * In either of these conditions, we upload the SCB back to the host so it can | 1089 | * SCB back to the host so it can process this information. |
1006 | * process this information. In the case of a non zero status byte, we | ||
1007 | * additionally interrupt the kernel driver synchronously, allowing it to | ||
1008 | * decide if sense should be retrieved. If the kernel driver wishes to request | ||
1009 | * sense, it will fill the kernel SCB with a request sense command, requeue | ||
1010 | * it to the QINFIFO and tell us not to post to the QOUTFIFO by setting | ||
1011 | * RETURN_1 to SEND_SENSE. | ||
1012 | */ | 1090 | */ |
1013 | mesgin_complete: | 1091 | mesgin_complete: |
1014 | 1092 | ||
@@ -1053,6 +1131,7 @@ complete_nomsg: | |||
1053 | call queue_scb_completion; | 1131 | call queue_scb_completion; |
1054 | jmp await_busfree; | 1132 | jmp await_busfree; |
1055 | 1133 | ||
1134 | BEGIN_CRITICAL; | ||
1056 | freeze_queue: | 1135 | freeze_queue: |
1057 | /* Cancel any pending select-out. */ | 1136 | /* Cancel any pending select-out. */ |
1058 | test SSTAT0, SELDO|SELINGO jnz . + 2; | 1137 | test SSTAT0, SELDO|SELINGO jnz . + 2; |
@@ -1063,6 +1142,7 @@ freeze_queue: | |||
1063 | adc QFREEZE_COUNT[1], A; | 1142 | adc QFREEZE_COUNT[1], A; |
1064 | or SEQ_FLAGS2, SELECTOUT_QFROZEN; | 1143 | or SEQ_FLAGS2, SELECTOUT_QFROZEN; |
1065 | mov A, ACCUM_SAVE ret; | 1144 | mov A, ACCUM_SAVE ret; |
1145 | END_CRITICAL; | ||
1066 | 1146 | ||
1067 | /* | 1147 | /* |
1068 | * Complete the current FIFO's SCB if data for this same | 1148 | * Complete the current FIFO's SCB if data for this same |
@@ -1085,8 +1165,10 @@ queue_scb_completion: | |||
1085 | test SCB_SGPTR, SG_FULL_RESID jnz upload_scb;/* Never xfered */ | 1165 | test SCB_SGPTR, SG_FULL_RESID jnz upload_scb;/* Never xfered */ |
1086 | test SCB_RESIDUAL_SGPTR, SG_LIST_NULL jz upload_scb; | 1166 | test SCB_RESIDUAL_SGPTR, SG_LIST_NULL jz upload_scb; |
1087 | complete: | 1167 | complete: |
1168 | BEGIN_CRITICAL; | ||
1088 | bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2; | 1169 | bmov SCB_NEXT_COMPLETE, COMPLETE_SCB_HEAD, 2; |
1089 | bmov COMPLETE_SCB_HEAD, SCBPTR, 2 ret; | 1170 | bmov COMPLETE_SCB_HEAD, SCBPTR, 2 ret; |
1171 | END_CRITICAL; | ||
1090 | bad_status: | 1172 | bad_status: |
1091 | cmp SCB_SCSI_STATUS, STATUS_PKT_SENSE je upload_scb; | 1173 | cmp SCB_SCSI_STATUS, STATUS_PKT_SENSE je upload_scb; |
1092 | call freeze_queue; | 1174 | call freeze_queue; |
@@ -1097,9 +1179,18 @@ upload_scb: | |||
1097 | * it on the host. | 1179 | * it on the host. |
1098 | */ | 1180 | */ |
1099 | bmov SCB_TAG, SCBPTR, 2; | 1181 | bmov SCB_TAG, SCBPTR, 2; |
1100 | bmov SCB_NEXT_COMPLETE, COMPLETE_DMA_SCB_HEAD, 2; | 1182 | BEGIN_CRITICAL; |
1183 | or SCB_SGPTR, SG_STATUS_VALID; | ||
1184 | mvi SCB_NEXT_COMPLETE[1], SCB_LIST_NULL; | ||
1185 | cmp COMPLETE_DMA_SCB_HEAD[1], SCB_LIST_NULL jne add_dma_scb_tail; | ||
1101 | bmov COMPLETE_DMA_SCB_HEAD, SCBPTR, 2; | 1186 | bmov COMPLETE_DMA_SCB_HEAD, SCBPTR, 2; |
1102 | or SCB_SGPTR, SG_STATUS_VALID ret; | 1187 | bmov COMPLETE_DMA_SCB_TAIL, SCBPTR, 2 ret; |
1188 | add_dma_scb_tail: | ||
1189 | bmov REG0, SCBPTR, 2; | ||
1190 | bmov SCBPTR, COMPLETE_DMA_SCB_TAIL, 2; | ||
1191 | bmov SCB_NEXT_COMPLETE, REG0, 2; | ||
1192 | bmov COMPLETE_DMA_SCB_TAIL, REG0, 2 ret; | ||
1193 | END_CRITICAL; | ||
1103 | 1194 | ||
1104 | /* | 1195 | /* |
1105 | * Is it a disconnect message? Set a flag in the SCB to remind us | 1196 | * Is it a disconnect message? Set a flag in the SCB to remind us |
@@ -1146,8 +1237,18 @@ SET_DST_MODE M_DFF1; | |||
1146 | await_busfree_clrchn: | 1237 | await_busfree_clrchn: |
1147 | mvi DFFSXFRCTL, CLRCHN; | 1238 | mvi DFFSXFRCTL, CLRCHN; |
1148 | await_busfree_not_m_dff: | 1239 | await_busfree_not_m_dff: |
1149 | call clear_target_state; | 1240 | /* clear target specific flags */ |
1241 | mvi SEQ_FLAGS, NOT_IDENTIFIED|NO_CDB_SENT; | ||
1150 | test SSTAT1,REQINIT|BUSFREE jz .; | 1242 | test SSTAT1,REQINIT|BUSFREE jz .; |
1243 | /* | ||
1244 | * We only set BUSFREE status once either a new | ||
1245 | * phase has been detected or we are really | ||
1246 | * BUSFREE. This allows the driver to know | ||
1247 | * that we are active on the bus even though | ||
1248 | * no identified transaction exists should a | ||
1249 | * timeout occur while awaiting busfree. | ||
1250 | */ | ||
1251 | mvi LASTPHASE, P_BUSFREE; | ||
1151 | test SSTAT1, BUSFREE jnz idle_loop; | 1252 | test SSTAT1, BUSFREE jnz idle_loop; |
1152 | SET_SEQINTCODE(MISSED_BUSFREE) | 1253 | SET_SEQINTCODE(MISSED_BUSFREE) |
1153 | 1254 | ||
@@ -1202,11 +1303,6 @@ msgin_rdptrs_get_fifo: | |||
1202 | call allocate_fifo; | 1303 | call allocate_fifo; |
1203 | jmp mesgin_done; | 1304 | jmp mesgin_done; |
1204 | 1305 | ||
1205 | clear_target_state: | ||
1206 | mvi LASTPHASE, P_BUSFREE; | ||
1207 | /* clear target specific flags */ | ||
1208 | mvi SEQ_FLAGS, NOT_IDENTIFIED|NO_CDB_SENT ret; | ||
1209 | |||
1210 | phase_lock: | 1306 | phase_lock: |
1211 | if ((ahd->bugs & AHD_EARLY_REQ_BUG) != 0) { | 1307 | if ((ahd->bugs & AHD_EARLY_REQ_BUG) != 0) { |
1212 | /* | 1308 | /* |
@@ -1298,6 +1394,47 @@ service_fifo: | |||
1298 | test CCSGCTL, CCSGENACK jnz return; | 1394 | test CCSGCTL, CCSGENACK jnz return; |
1299 | 1395 | ||
1300 | /* | 1396 | /* |
1397 | * Should the other FIFO get the S/G cache first? If | ||
1398 | * both FIFOs have been allocated since we last checked | ||
1399 | * any FIFO, it is important that we service a FIFO | ||
1400 | * that is not actively on the bus first. This guarantees | ||
1401 | * that a FIFO will be freed to handle snapshot requests for | ||
1402 | * any FIFO that is still on the bus. Chips with RTI do not | ||
1403 | * perform snapshots, so don't bother with this test there. | ||
1404 | */ | ||
1405 | if ((ahd->features & AHD_RTI) == 0) { | ||
1406 | /* | ||
1407 | * If we're not still receiving SCSI data, | ||
1408 | * it is safe to allocate the S/G cache to | ||
1409 | * this FIFO. | ||
1410 | */ | ||
1411 | test DFCNTRL, SCSIEN jz idle_sgfetch_start; | ||
1412 | |||
1413 | /* | ||
1414 | * Switch to the other FIFO. Non-RTI chips | ||
1415 | * also have the "set mode" bug, so we must | ||
1416 | * disable interrupts during the switch. | ||
1417 | */ | ||
1418 | mvi SEQINTCTL, INTVEC1DSL; | ||
1419 | xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1); | ||
1420 | |||
1421 | /* | ||
1422 | * If the other FIFO needs loading, then it | ||
1423 | * must not have claimed the S/G cache yet | ||
1424 | * (SG_CACHE_AVAIL would have been cleared in | ||
1425 | * the orginal FIFO mode and we test this above). | ||
1426 | * Return to the idle loop so we can process the | ||
1427 | * FIFO not currently on the bus first. | ||
1428 | */ | ||
1429 | test SG_STATE, LOADING_NEEDED jz idle_sgfetch_okay; | ||
1430 | clr SEQINTCTL ret; | ||
1431 | idle_sgfetch_okay: | ||
1432 | xor MODE_PTR, MK_MODE(M_DFF1, M_DFF1); | ||
1433 | clr SEQINTCTL; | ||
1434 | } | ||
1435 | |||
1436 | idle_sgfetch_start: | ||
1437 | /* | ||
1301 | * We fetch a "cacheline aligned" and sized amount of data | 1438 | * We fetch a "cacheline aligned" and sized amount of data |
1302 | * so we don't end up referencing a non-existant page. | 1439 | * so we don't end up referencing a non-existant page. |
1303 | * Cacheline aligned is in quotes because the kernel will | 1440 | * Cacheline aligned is in quotes because the kernel will |
@@ -1308,7 +1445,7 @@ service_fifo: | |||
1308 | mvi SGHCNT, SG_PREFETCH_CNT; | 1445 | mvi SGHCNT, SG_PREFETCH_CNT; |
1309 | if ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0) { | 1446 | if ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0) { |
1310 | /* | 1447 | /* |
1311 | * Need two instruction between "touches" of SGHADDR. | 1448 | * Need two instructions between "touches" of SGHADDR. |
1312 | */ | 1449 | */ |
1313 | nop; | 1450 | nop; |
1314 | } | 1451 | } |
@@ -1658,7 +1795,7 @@ export seq_isr: | |||
1658 | * savepointer in the current FIFO. We do this so that | 1795 | * savepointer in the current FIFO. We do this so that |
1659 | * a pending CTXTDONE or SAVEPTR is visible in the active | 1796 | * a pending CTXTDONE or SAVEPTR is visible in the active |
1660 | * FIFO. This status is the only way we can detect if we | 1797 | * FIFO. This status is the only way we can detect if we |
1661 | * have lost the race (e.g. host paused us) and our attepts | 1798 | * have lost the race (e.g. host paused us) and our attempts |
1662 | * to disable the channel occurred after all REQs were | 1799 | * to disable the channel occurred after all REQs were |
1663 | * already seen and acked (REQINIT never comes true). | 1800 | * already seen and acked (REQINIT never comes true). |
1664 | */ | 1801 | */ |
@@ -1667,7 +1804,7 @@ export seq_isr: | |||
1667 | test DFCNTRL, DIRECTION jz interrupt_return; | 1804 | test DFCNTRL, DIRECTION jz interrupt_return; |
1668 | and DFCNTRL, ~SCSIEN; | 1805 | and DFCNTRL, ~SCSIEN; |
1669 | snapshot_wait_data_valid: | 1806 | snapshot_wait_data_valid: |
1670 | test SEQINTSRC, (CTXTDONE|SAVEPTRS) jnz snapshot_data_valid; | 1807 | test SEQINTSRC, (CTXTDONE|SAVEPTRS) jnz interrupt_return; |
1671 | test SSTAT1, REQINIT jz snapshot_wait_data_valid; | 1808 | test SSTAT1, REQINIT jz snapshot_wait_data_valid; |
1672 | snapshot_data_valid: | 1809 | snapshot_data_valid: |
1673 | or DFCNTRL, SCSIEN; | 1810 | or DFCNTRL, SCSIEN; |
@@ -1834,7 +1971,6 @@ pkt_saveptrs_check_status: | |||
1834 | dec SCB_FIFO_USE_COUNT; | 1971 | dec SCB_FIFO_USE_COUNT; |
1835 | test SCB_CONTROL, STATUS_RCVD jnz pkt_complete_scb_if_fifos_idle; | 1972 | test SCB_CONTROL, STATUS_RCVD jnz pkt_complete_scb_if_fifos_idle; |
1836 | mvi DFFSXFRCTL, CLRCHN ret; | 1973 | mvi DFFSXFRCTL, CLRCHN ret; |
1837 | END_CRITICAL; | ||
1838 | 1974 | ||
1839 | /* | 1975 | /* |
1840 | * LAST_SEG_DONE status has been seen in the current FIFO. | 1976 | * LAST_SEG_DONE status has been seen in the current FIFO. |
@@ -1843,7 +1979,6 @@ END_CRITICAL; | |||
1843 | * Check for overrun and see if we can complete this command. | 1979 | * Check for overrun and see if we can complete this command. |
1844 | */ | 1980 | */ |
1845 | pkt_last_seg_done: | 1981 | pkt_last_seg_done: |
1846 | BEGIN_CRITICAL; | ||
1847 | /* | 1982 | /* |
1848 | * Mark transfer as completed. | 1983 | * Mark transfer as completed. |
1849 | */ | 1984 | */ |
diff --git a/drivers/scsi/aic7xxx/aic79xx_core.c b/drivers/scsi/aic7xxx/aic79xx_core.c index 35b51e1979f5..db8f5ce99ee3 100644 --- a/drivers/scsi/aic7xxx/aic79xx_core.c +++ b/drivers/scsi/aic7xxx/aic79xx_core.c | |||
@@ -37,9 +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#202 $ | 40 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#247 $ |
41 | * | ||
42 | * $FreeBSD$ | ||
43 | */ | 41 | */ |
44 | 42 | ||
45 | #ifdef __linux__ | 43 | #ifdef __linux__ |
@@ -332,6 +330,14 @@ ahd_restart(struct ahd_softc *ahd) | |||
332 | ahd_outb(ahd, SCSISEQ1, | 330 | ahd_outb(ahd, SCSISEQ1, |
333 | ahd_inb(ahd, SCSISEQ_TEMPLATE) & (ENSELI|ENRSELI|ENAUTOATNP)); | 331 | ahd_inb(ahd, SCSISEQ_TEMPLATE) & (ENSELI|ENRSELI|ENAUTOATNP)); |
334 | ahd_set_modes(ahd, AHD_MODE_CCHAN, AHD_MODE_CCHAN); | 332 | ahd_set_modes(ahd, AHD_MODE_CCHAN, AHD_MODE_CCHAN); |
333 | |||
334 | /* | ||
335 | * Clear any pending sequencer interrupt. It is no | ||
336 | * longer relevant since we're resetting the Program | ||
337 | * Counter. | ||
338 | */ | ||
339 | ahd_outb(ahd, CLRINT, CLRSEQINT); | ||
340 | |||
335 | ahd_outb(ahd, SEQCTL0, FASTMODE|SEQRESET); | 341 | ahd_outb(ahd, SEQCTL0, FASTMODE|SEQRESET); |
336 | ahd_unpause(ahd); | 342 | ahd_unpause(ahd); |
337 | } | 343 | } |
@@ -373,13 +379,7 @@ ahd_flush_qoutfifo(struct ahd_softc *ahd) | |||
373 | saved_modes = ahd_save_modes(ahd); | 379 | saved_modes = ahd_save_modes(ahd); |
374 | 380 | ||
375 | /* | 381 | /* |
376 | * Complete any SCBs that just finished being | 382 | * Flush the good status FIFO for completed packetized commands. |
377 | * DMA'ed into the qoutfifo. | ||
378 | */ | ||
379 | ahd_run_qoutfifo(ahd); | ||
380 | |||
381 | /* | ||
382 | * Flush the good status FIFO for compelted packetized commands. | ||
383 | */ | 383 | */ |
384 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); | 384 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); |
385 | saved_scbptr = ahd_get_scbptr(ahd); | 385 | saved_scbptr = ahd_get_scbptr(ahd); |
@@ -400,22 +400,33 @@ ahd_flush_qoutfifo(struct ahd_softc *ahd) | |||
400 | * the host before completing the command. | 400 | * the host before completing the command. |
401 | */ | 401 | */ |
402 | fifo_mode = 0; | 402 | fifo_mode = 0; |
403 | rescan_fifos: | ||
403 | for (i = 0; i < 2; i++) { | 404 | for (i = 0; i < 2; i++) { |
404 | /* Toggle to the other mode. */ | 405 | /* Toggle to the other mode. */ |
405 | fifo_mode ^= 1; | 406 | fifo_mode ^= 1; |
406 | ahd_set_modes(ahd, fifo_mode, fifo_mode); | 407 | ahd_set_modes(ahd, fifo_mode, fifo_mode); |
408 | |||
407 | if (ahd_scb_active_in_fifo(ahd, scb) == 0) | 409 | if (ahd_scb_active_in_fifo(ahd, scb) == 0) |
408 | continue; | 410 | continue; |
409 | 411 | ||
410 | ahd_run_data_fifo(ahd, scb); | 412 | ahd_run_data_fifo(ahd, scb); |
411 | 413 | ||
412 | /* | 414 | /* |
413 | * Clearing this transaction in this FIFO may | 415 | * Running this FIFO may cause a CFG4DATA for |
414 | * cause a CFG4DATA for this same transaction | 416 | * this same transaction to assert in the other |
415 | * to assert in the other FIFO. Make sure we | 417 | * FIFO or a new snapshot SAVEPTRS interrupt |
416 | * loop one more time and check the other FIFO. | 418 | * in this FIFO. Even running a FIFO may not |
419 | * clear the transaction if we are still waiting | ||
420 | * for data to drain to the host. We must loop | ||
421 | * until the transaction is not active in either | ||
422 | * FIFO just to be sure. Reset our loop counter | ||
423 | * so we will visit both FIFOs again before | ||
424 | * declaring this transaction finished. We | ||
425 | * also delay a bit so that status has a chance | ||
426 | * to change before we look at this FIFO again. | ||
417 | */ | 427 | */ |
418 | i = 0; | 428 | ahd_delay(200); |
429 | goto rescan_fifos; | ||
419 | } | 430 | } |
420 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); | 431 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); |
421 | ahd_set_scbptr(ahd, scbid); | 432 | ahd_set_scbptr(ahd, scbid); |
@@ -428,19 +439,28 @@ ahd_flush_qoutfifo(struct ahd_softc *ahd) | |||
428 | /* | 439 | /* |
429 | * The transfer completed with a residual. | 440 | * The transfer completed with a residual. |
430 | * Place this SCB on the complete DMA list | 441 | * Place this SCB on the complete DMA list |
431 | * so that we Update our in-core copy of the | 442 | * so that we update our in-core copy of the |
432 | * SCB before completing the command. | 443 | * SCB before completing the command. |
433 | */ | 444 | */ |
434 | ahd_outb(ahd, SCB_SCSI_STATUS, 0); | 445 | ahd_outb(ahd, SCB_SCSI_STATUS, 0); |
435 | ahd_outb(ahd, SCB_SGPTR, | 446 | ahd_outb(ahd, SCB_SGPTR, |
436 | ahd_inb_scbram(ahd, SCB_SGPTR) | 447 | ahd_inb_scbram(ahd, SCB_SGPTR) |
437 | | SG_STATUS_VALID); | 448 | | SG_STATUS_VALID); |
438 | ahd_outw(ahd, SCB_TAG, SCB_GET_TAG(scb)); | 449 | ahd_outw(ahd, SCB_TAG, scbid); |
450 | ahd_outw(ahd, SCB_NEXT_COMPLETE, SCB_LIST_NULL); | ||
439 | comp_head = ahd_inw(ahd, COMPLETE_DMA_SCB_HEAD); | 451 | comp_head = ahd_inw(ahd, COMPLETE_DMA_SCB_HEAD); |
440 | ahd_outw(ahd, SCB_NEXT_COMPLETE, comp_head); | 452 | if (SCBID_IS_NULL(comp_head)) { |
441 | if (SCBID_IS_NULL(comp_head)) | 453 | ahd_outw(ahd, COMPLETE_DMA_SCB_HEAD, scbid); |
442 | ahd_outw(ahd, COMPLETE_DMA_SCB_HEAD, | 454 | ahd_outw(ahd, COMPLETE_DMA_SCB_TAIL, scbid); |
443 | SCB_GET_TAG(scb)); | 455 | } else { |
456 | u_int tail; | ||
457 | |||
458 | tail = ahd_inw(ahd, COMPLETE_DMA_SCB_TAIL); | ||
459 | ahd_set_scbptr(ahd, tail); | ||
460 | ahd_outw(ahd, SCB_NEXT_COMPLETE, scbid); | ||
461 | ahd_outw(ahd, COMPLETE_DMA_SCB_TAIL, scbid); | ||
462 | ahd_set_scbptr(ahd, scbid); | ||
463 | } | ||
444 | } else | 464 | } else |
445 | ahd_complete_scb(ahd, scb); | 465 | ahd_complete_scb(ahd, scb); |
446 | } | 466 | } |
@@ -464,9 +484,22 @@ ahd_flush_qoutfifo(struct ahd_softc *ahd) | |||
464 | break; | 484 | break; |
465 | ahd_delay(200); | 485 | ahd_delay(200); |
466 | } | 486 | } |
467 | if ((ccscbctl & CCSCBDIR) != 0) | 487 | /* |
488 | * We leave the sequencer to cleanup in the case of DMA's to | ||
489 | * update the qoutfifo. In all other cases (DMA's to the | ||
490 | * chip or a push of an SCB from the COMPLETE_DMA_SCB list), | ||
491 | * we disable the DMA engine so that the sequencer will not | ||
492 | * attempt to handle the DMA completion. | ||
493 | */ | ||
494 | if ((ccscbctl & CCSCBDIR) != 0 || (ccscbctl & ARRDONE) != 0) | ||
468 | ahd_outb(ahd, CCSCBCTL, ccscbctl & ~(CCARREN|CCSCBEN)); | 495 | ahd_outb(ahd, CCSCBCTL, ccscbctl & ~(CCARREN|CCSCBEN)); |
469 | 496 | ||
497 | /* | ||
498 | * Complete any SCBs that just finished | ||
499 | * being DMA'ed into the qoutfifo. | ||
500 | */ | ||
501 | ahd_run_qoutfifo(ahd); | ||
502 | |||
470 | saved_scbptr = ahd_get_scbptr(ahd); | 503 | saved_scbptr = ahd_get_scbptr(ahd); |
471 | /* | 504 | /* |
472 | * Manually update/complete any completed SCBs that are waiting to be | 505 | * Manually update/complete any completed SCBs that are waiting to be |
@@ -493,6 +526,24 @@ ahd_flush_qoutfifo(struct ahd_softc *ahd) | |||
493 | scbid = next_scbid; | 526 | scbid = next_scbid; |
494 | } | 527 | } |
495 | ahd_outw(ahd, COMPLETE_DMA_SCB_HEAD, SCB_LIST_NULL); | 528 | ahd_outw(ahd, COMPLETE_DMA_SCB_HEAD, SCB_LIST_NULL); |
529 | ahd_outw(ahd, COMPLETE_DMA_SCB_TAIL, SCB_LIST_NULL); | ||
530 | |||
531 | scbid = ahd_inw(ahd, COMPLETE_ON_QFREEZE_HEAD); | ||
532 | while (!SCBID_IS_NULL(scbid)) { | ||
533 | |||
534 | ahd_set_scbptr(ahd, scbid); | ||
535 | next_scbid = ahd_inw_scbram(ahd, SCB_NEXT_COMPLETE); | ||
536 | scb = ahd_lookup_scb(ahd, scbid); | ||
537 | if (scb == NULL) { | ||
538 | printf("%s: Warning - Complete Qfrz SCB %d invalid\n", | ||
539 | ahd_name(ahd), scbid); | ||
540 | continue; | ||
541 | } | ||
542 | |||
543 | ahd_complete_scb(ahd, scb); | ||
544 | scbid = next_scbid; | ||
545 | } | ||
546 | ahd_outw(ahd, COMPLETE_ON_QFREEZE_HEAD, SCB_LIST_NULL); | ||
496 | 547 | ||
497 | scbid = ahd_inw(ahd, COMPLETE_SCB_HEAD); | 548 | scbid = ahd_inw(ahd, COMPLETE_SCB_HEAD); |
498 | while (!SCBID_IS_NULL(scbid)) { | 549 | while (!SCBID_IS_NULL(scbid)) { |
@@ -557,150 +608,146 @@ ahd_run_data_fifo(struct ahd_softc *ahd, struct scb *scb) | |||
557 | { | 608 | { |
558 | u_int seqintsrc; | 609 | u_int seqintsrc; |
559 | 610 | ||
560 | while (1) { | 611 | seqintsrc = ahd_inb(ahd, SEQINTSRC); |
561 | seqintsrc = ahd_inb(ahd, SEQINTSRC); | 612 | if ((seqintsrc & CFG4DATA) != 0) { |
562 | if ((seqintsrc & CFG4DATA) != 0) { | 613 | uint32_t datacnt; |
563 | uint32_t datacnt; | 614 | uint32_t sgptr; |
564 | uint32_t sgptr; | ||
565 | |||
566 | /* | ||
567 | * Clear full residual flag. | ||
568 | */ | ||
569 | sgptr = ahd_inl_scbram(ahd, SCB_SGPTR) & ~SG_FULL_RESID; | ||
570 | ahd_outb(ahd, SCB_SGPTR, sgptr); | ||
571 | 615 | ||
572 | /* | 616 | /* |
573 | * Load datacnt and address. | 617 | * Clear full residual flag. |
574 | */ | 618 | */ |
575 | datacnt = ahd_inl_scbram(ahd, SCB_DATACNT); | 619 | sgptr = ahd_inl_scbram(ahd, SCB_SGPTR) & ~SG_FULL_RESID; |
576 | if ((datacnt & AHD_DMA_LAST_SEG) != 0) { | 620 | ahd_outb(ahd, SCB_SGPTR, sgptr); |
577 | sgptr |= LAST_SEG; | ||
578 | ahd_outb(ahd, SG_STATE, 0); | ||
579 | } else | ||
580 | ahd_outb(ahd, SG_STATE, LOADING_NEEDED); | ||
581 | ahd_outq(ahd, HADDR, ahd_inq_scbram(ahd, SCB_DATAPTR)); | ||
582 | ahd_outl(ahd, HCNT, datacnt & AHD_SG_LEN_MASK); | ||
583 | ahd_outb(ahd, SG_CACHE_PRE, sgptr); | ||
584 | ahd_outb(ahd, DFCNTRL, PRELOADEN|SCSIEN|HDMAEN); | ||
585 | 621 | ||
586 | /* | 622 | /* |
587 | * Initialize Residual Fields. | 623 | * Load datacnt and address. |
588 | */ | 624 | */ |
589 | ahd_outb(ahd, SCB_RESIDUAL_DATACNT+3, datacnt >> 24); | 625 | datacnt = ahd_inl_scbram(ahd, SCB_DATACNT); |
590 | ahd_outl(ahd, SCB_RESIDUAL_SGPTR, sgptr & SG_PTR_MASK); | 626 | if ((datacnt & AHD_DMA_LAST_SEG) != 0) { |
627 | sgptr |= LAST_SEG; | ||
628 | ahd_outb(ahd, SG_STATE, 0); | ||
629 | } else | ||
630 | ahd_outb(ahd, SG_STATE, LOADING_NEEDED); | ||
631 | ahd_outq(ahd, HADDR, ahd_inq_scbram(ahd, SCB_DATAPTR)); | ||
632 | ahd_outl(ahd, HCNT, datacnt & AHD_SG_LEN_MASK); | ||
633 | ahd_outb(ahd, SG_CACHE_PRE, sgptr); | ||
634 | ahd_outb(ahd, DFCNTRL, PRELOADEN|SCSIEN|HDMAEN); | ||
591 | 635 | ||
592 | /* | 636 | /* |
593 | * Mark the SCB as having a FIFO in use. | 637 | * Initialize Residual Fields. |
594 | */ | 638 | */ |
595 | ahd_outb(ahd, SCB_FIFO_USE_COUNT, | 639 | ahd_outb(ahd, SCB_RESIDUAL_DATACNT+3, datacnt >> 24); |
596 | ahd_inb_scbram(ahd, SCB_FIFO_USE_COUNT) + 1); | 640 | ahd_outl(ahd, SCB_RESIDUAL_SGPTR, sgptr & SG_PTR_MASK); |
597 | 641 | ||
598 | /* | 642 | /* |
599 | * Install a "fake" handler for this FIFO. | 643 | * Mark the SCB as having a FIFO in use. |
600 | */ | 644 | */ |
601 | ahd_outw(ahd, LONGJMP_ADDR, 0); | 645 | ahd_outb(ahd, SCB_FIFO_USE_COUNT, |
646 | ahd_inb_scbram(ahd, SCB_FIFO_USE_COUNT) + 1); | ||
602 | 647 | ||
603 | /* | 648 | /* |
604 | * Notify the hardware that we have satisfied | 649 | * Install a "fake" handler for this FIFO. |
605 | * this sequencer interrupt. | 650 | */ |
606 | */ | 651 | ahd_outw(ahd, LONGJMP_ADDR, 0); |
607 | ahd_outb(ahd, CLRSEQINTSRC, CLRCFG4DATA); | ||
608 | } else if ((seqintsrc & SAVEPTRS) != 0) { | ||
609 | uint32_t sgptr; | ||
610 | uint32_t resid; | ||
611 | 652 | ||
612 | if ((ahd_inb(ahd, LONGJMP_ADDR+1)&INVALID_ADDR) != 0) { | 653 | /* |
613 | /* | 654 | * Notify the hardware that we have satisfied |
614 | * Snapshot Save Pointers. Clear | 655 | * this sequencer interrupt. |
615 | * the snapshot and continue. | 656 | */ |
616 | */ | 657 | ahd_outb(ahd, CLRSEQINTSRC, CLRCFG4DATA); |
617 | ahd_outb(ahd, DFFSXFRCTL, CLRCHN); | 658 | } else if ((seqintsrc & SAVEPTRS) != 0) { |
618 | continue; | 659 | uint32_t sgptr; |
619 | } | 660 | uint32_t resid; |
620 | 661 | ||
662 | if ((ahd_inb(ahd, LONGJMP_ADDR+1)&INVALID_ADDR) != 0) { | ||
621 | /* | 663 | /* |
622 | * Disable S/G fetch so the DMA engine | 664 | * Snapshot Save Pointers. All that |
623 | * is available to future users. | 665 | * is necessary to clear the snapshot |
666 | * is a CLRCHN. | ||
624 | */ | 667 | */ |
625 | if ((ahd_inb(ahd, SG_STATE) & FETCH_INPROG) != 0) | 668 | goto clrchn; |
626 | ahd_outb(ahd, CCSGCTL, 0); | 669 | } |
627 | ahd_outb(ahd, SG_STATE, 0); | ||
628 | 670 | ||
629 | /* | 671 | /* |
630 | * Flush the data FIFO. Strickly only | 672 | * Disable S/G fetch so the DMA engine |
631 | * necessary for Rev A parts. | 673 | * is available to future users. |
632 | */ | 674 | */ |
633 | ahd_outb(ahd, DFCNTRL, | 675 | if ((ahd_inb(ahd, SG_STATE) & FETCH_INPROG) != 0) |
634 | ahd_inb(ahd, DFCNTRL) | FIFOFLUSH); | 676 | ahd_outb(ahd, CCSGCTL, 0); |
677 | ahd_outb(ahd, SG_STATE, 0); | ||
635 | 678 | ||
636 | /* | 679 | /* |
637 | * Calculate residual. | 680 | * Flush the data FIFO. Strickly only |
638 | */ | 681 | * necessary for Rev A parts. |
639 | sgptr = ahd_inl_scbram(ahd, SCB_RESIDUAL_SGPTR); | 682 | */ |
640 | resid = ahd_inl(ahd, SHCNT); | 683 | ahd_outb(ahd, DFCNTRL, ahd_inb(ahd, DFCNTRL) | FIFOFLUSH); |
641 | resid |= | ||
642 | ahd_inb_scbram(ahd, SCB_RESIDUAL_DATACNT+3) << 24; | ||
643 | ahd_outl(ahd, SCB_RESIDUAL_DATACNT, resid); | ||
644 | if ((ahd_inb(ahd, SG_CACHE_SHADOW) & LAST_SEG) == 0) { | ||
645 | /* | ||
646 | * Must back up to the correct S/G element. | ||
647 | * Typically this just means resetting our | ||
648 | * low byte to the offset in the SG_CACHE, | ||
649 | * but if we wrapped, we have to correct | ||
650 | * the other bytes of the sgptr too. | ||
651 | */ | ||
652 | if ((ahd_inb(ahd, SG_CACHE_SHADOW) & 0x80) != 0 | ||
653 | && (sgptr & 0x80) == 0) | ||
654 | sgptr -= 0x100; | ||
655 | sgptr &= ~0xFF; | ||
656 | sgptr |= ahd_inb(ahd, SG_CACHE_SHADOW) | ||
657 | & SG_ADDR_MASK; | ||
658 | ahd_outl(ahd, SCB_RESIDUAL_SGPTR, sgptr); | ||
659 | ahd_outb(ahd, SCB_RESIDUAL_DATACNT + 3, 0); | ||
660 | } else if ((resid & AHD_SG_LEN_MASK) == 0) { | ||
661 | ahd_outb(ahd, SCB_RESIDUAL_SGPTR, | ||
662 | sgptr | SG_LIST_NULL); | ||
663 | } | ||
664 | /* | ||
665 | * Save Pointers. | ||
666 | */ | ||
667 | ahd_outq(ahd, SCB_DATAPTR, ahd_inq(ahd, SHADDR)); | ||
668 | ahd_outl(ahd, SCB_DATACNT, resid); | ||
669 | ahd_outl(ahd, SCB_SGPTR, sgptr); | ||
670 | ahd_outb(ahd, CLRSEQINTSRC, CLRSAVEPTRS); | ||
671 | ahd_outb(ahd, SEQIMODE, | ||
672 | ahd_inb(ahd, SEQIMODE) | ENSAVEPTRS); | ||
673 | /* | ||
674 | * If the data is to the SCSI bus, we are | ||
675 | * done, otherwise wait for FIFOEMP. | ||
676 | */ | ||
677 | if ((ahd_inb(ahd, DFCNTRL) & DIRECTION) != 0) | ||
678 | break; | ||
679 | } else if ((ahd_inb(ahd, SG_STATE) & LOADING_NEEDED) != 0) { | ||
680 | uint32_t sgptr; | ||
681 | uint64_t data_addr; | ||
682 | uint32_t data_len; | ||
683 | u_int dfcntrl; | ||
684 | 684 | ||
685 | /* | ||
686 | * Calculate residual. | ||
687 | */ | ||
688 | sgptr = ahd_inl_scbram(ahd, SCB_RESIDUAL_SGPTR); | ||
689 | resid = ahd_inl(ahd, SHCNT); | ||
690 | resid |= ahd_inb_scbram(ahd, SCB_RESIDUAL_DATACNT+3) << 24; | ||
691 | ahd_outl(ahd, SCB_RESIDUAL_DATACNT, resid); | ||
692 | if ((ahd_inb(ahd, SG_CACHE_SHADOW) & LAST_SEG) == 0) { | ||
685 | /* | 693 | /* |
686 | * Disable S/G fetch so the DMA engine | 694 | * Must back up to the correct S/G element. |
687 | * is available to future users. | 695 | * Typically this just means resetting our |
696 | * low byte to the offset in the SG_CACHE, | ||
697 | * but if we wrapped, we have to correct | ||
698 | * the other bytes of the sgptr too. | ||
688 | */ | 699 | */ |
689 | if ((ahd_inb(ahd, SG_STATE) & FETCH_INPROG) != 0) { | 700 | if ((ahd_inb(ahd, SG_CACHE_SHADOW) & 0x80) != 0 |
690 | ahd_outb(ahd, CCSGCTL, 0); | 701 | && (sgptr & 0x80) == 0) |
691 | ahd_outb(ahd, SG_STATE, LOADING_NEEDED); | 702 | sgptr -= 0x100; |
692 | } | 703 | sgptr &= ~0xFF; |
704 | sgptr |= ahd_inb(ahd, SG_CACHE_SHADOW) | ||
705 | & SG_ADDR_MASK; | ||
706 | ahd_outl(ahd, SCB_RESIDUAL_SGPTR, sgptr); | ||
707 | ahd_outb(ahd, SCB_RESIDUAL_DATACNT + 3, 0); | ||
708 | } else if ((resid & AHD_SG_LEN_MASK) == 0) { | ||
709 | ahd_outb(ahd, SCB_RESIDUAL_SGPTR, | ||
710 | sgptr | SG_LIST_NULL); | ||
711 | } | ||
712 | /* | ||
713 | * Save Pointers. | ||
714 | */ | ||
715 | ahd_outq(ahd, SCB_DATAPTR, ahd_inq(ahd, SHADDR)); | ||
716 | ahd_outl(ahd, SCB_DATACNT, resid); | ||
717 | ahd_outl(ahd, SCB_SGPTR, sgptr); | ||
718 | ahd_outb(ahd, CLRSEQINTSRC, CLRSAVEPTRS); | ||
719 | ahd_outb(ahd, SEQIMODE, | ||
720 | ahd_inb(ahd, SEQIMODE) | ENSAVEPTRS); | ||
721 | /* | ||
722 | * If the data is to the SCSI bus, we are | ||
723 | * done, otherwise wait for FIFOEMP. | ||
724 | */ | ||
725 | if ((ahd_inb(ahd, DFCNTRL) & DIRECTION) != 0) | ||
726 | goto clrchn; | ||
727 | } else if ((ahd_inb(ahd, SG_STATE) & LOADING_NEEDED) != 0) { | ||
728 | uint32_t sgptr; | ||
729 | uint64_t data_addr; | ||
730 | uint32_t data_len; | ||
731 | u_int dfcntrl; | ||
693 | 732 | ||
694 | /* | 733 | /* |
695 | * Wait for the DMA engine to notice that the | 734 | * Disable S/G fetch so the DMA engine |
696 | * host transfer is enabled and that there is | 735 | * is available to future users. We won't |
697 | * space in the S/G FIFO for new segments before | 736 | * be using the DMA engine to load segments. |
698 | * loading more segments. | 737 | */ |
699 | */ | 738 | if ((ahd_inb(ahd, SG_STATE) & FETCH_INPROG) != 0) { |
700 | if ((ahd_inb(ahd, DFSTATUS) & PRELOAD_AVAIL) == 0) | 739 | ahd_outb(ahd, CCSGCTL, 0); |
701 | continue; | 740 | ahd_outb(ahd, SG_STATE, LOADING_NEEDED); |
702 | if ((ahd_inb(ahd, DFCNTRL) & HDMAENACK) == 0) | 741 | } |
703 | continue; | 742 | |
743 | /* | ||
744 | * Wait for the DMA engine to notice that the | ||
745 | * host transfer is enabled and that there is | ||
746 | * space in the S/G FIFO for new segments before | ||
747 | * loading more segments. | ||
748 | */ | ||
749 | if ((ahd_inb(ahd, DFSTATUS) & PRELOAD_AVAIL) != 0 | ||
750 | && (ahd_inb(ahd, DFCNTRL) & HDMAENACK) != 0) { | ||
704 | 751 | ||
705 | /* | 752 | /* |
706 | * Determine the offset of the next S/G | 753 | * Determine the offset of the next S/G |
@@ -756,35 +803,44 @@ ahd_run_data_fifo(struct ahd_softc *ahd, struct scb *scb) | |||
756 | dfcntrl |= SCSIENWRDIS; | 803 | dfcntrl |= SCSIENWRDIS; |
757 | } | 804 | } |
758 | ahd_outb(ahd, DFCNTRL, dfcntrl); | 805 | ahd_outb(ahd, DFCNTRL, dfcntrl); |
759 | } else if ((ahd_inb(ahd, SG_CACHE_SHADOW) | ||
760 | & LAST_SEG_DONE) != 0) { | ||
761 | |||
762 | /* | ||
763 | * Transfer completed to the end of SG list | ||
764 | * and has flushed to the host. | ||
765 | */ | ||
766 | ahd_outb(ahd, SCB_SGPTR, | ||
767 | ahd_inb_scbram(ahd, SCB_SGPTR) | SG_LIST_NULL); | ||
768 | break; | ||
769 | } else if ((ahd_inb(ahd, DFSTATUS) & FIFOEMP) != 0) { | ||
770 | break; | ||
771 | } | 806 | } |
772 | ahd_delay(200); | 807 | } else if ((ahd_inb(ahd, SG_CACHE_SHADOW) & LAST_SEG_DONE) != 0) { |
808 | |||
809 | /* | ||
810 | * Transfer completed to the end of SG list | ||
811 | * and has flushed to the host. | ||
812 | */ | ||
813 | ahd_outb(ahd, SCB_SGPTR, | ||
814 | ahd_inb_scbram(ahd, SCB_SGPTR) | SG_LIST_NULL); | ||
815 | goto clrchn; | ||
816 | } else if ((ahd_inb(ahd, DFSTATUS) & FIFOEMP) != 0) { | ||
817 | clrchn: | ||
818 | /* | ||
819 | * Clear any handler for this FIFO, decrement | ||
820 | * the FIFO use count for the SCB, and release | ||
821 | * the FIFO. | ||
822 | */ | ||
823 | ahd_outb(ahd, LONGJMP_ADDR + 1, INVALID_ADDR); | ||
824 | ahd_outb(ahd, SCB_FIFO_USE_COUNT, | ||
825 | ahd_inb_scbram(ahd, SCB_FIFO_USE_COUNT) - 1); | ||
826 | ahd_outb(ahd, DFFSXFRCTL, CLRCHN); | ||
773 | } | 827 | } |
774 | /* | ||
775 | * Clear any handler for this FIFO, decrement | ||
776 | * the FIFO use count for the SCB, and release | ||
777 | * the FIFO. | ||
778 | */ | ||
779 | ahd_outb(ahd, LONGJMP_ADDR + 1, INVALID_ADDR); | ||
780 | ahd_outb(ahd, SCB_FIFO_USE_COUNT, | ||
781 | ahd_inb_scbram(ahd, SCB_FIFO_USE_COUNT) - 1); | ||
782 | ahd_outb(ahd, DFFSXFRCTL, CLRCHN); | ||
783 | } | 828 | } |
784 | 829 | ||
830 | /* | ||
831 | * Look for entries in the QoutFIFO that have completed. | ||
832 | * The valid_tag completion field indicates the validity | ||
833 | * of the entry - the valid value toggles each time through | ||
834 | * the queue. We use the sg_status field in the completion | ||
835 | * entry to avoid referencing the hscb if the completion | ||
836 | * occurred with no errors and no residual. sg_status is | ||
837 | * a copy of the first byte (little endian) of the sgptr | ||
838 | * hscb field. | ||
839 | */ | ||
785 | void | 840 | void |
786 | ahd_run_qoutfifo(struct ahd_softc *ahd) | 841 | ahd_run_qoutfifo(struct ahd_softc *ahd) |
787 | { | 842 | { |
843 | struct ahd_completion *completion; | ||
788 | struct scb *scb; | 844 | struct scb *scb; |
789 | u_int scb_index; | 845 | u_int scb_index; |
790 | 846 | ||
@@ -792,11 +848,13 @@ ahd_run_qoutfifo(struct ahd_softc *ahd) | |||
792 | panic("ahd_run_qoutfifo recursion"); | 848 | panic("ahd_run_qoutfifo recursion"); |
793 | ahd->flags |= AHD_RUNNING_QOUTFIFO; | 849 | ahd->flags |= AHD_RUNNING_QOUTFIFO; |
794 | ahd_sync_qoutfifo(ahd, BUS_DMASYNC_POSTREAD); | 850 | ahd_sync_qoutfifo(ahd, BUS_DMASYNC_POSTREAD); |
795 | while ((ahd->qoutfifo[ahd->qoutfifonext] | 851 | for (;;) { |
796 | & QOUTFIFO_ENTRY_VALID_LE) == ahd->qoutfifonext_valid_tag) { | 852 | completion = &ahd->qoutfifo[ahd->qoutfifonext]; |
853 | |||
854 | if (completion->valid_tag != ahd->qoutfifonext_valid_tag) | ||
855 | break; | ||
797 | 856 | ||
798 | scb_index = ahd_le16toh(ahd->qoutfifo[ahd->qoutfifonext] | 857 | scb_index = ahd_le16toh(completion->tag); |
799 | & ~QOUTFIFO_ENTRY_VALID_LE); | ||
800 | scb = ahd_lookup_scb(ahd, scb_index); | 858 | scb = ahd_lookup_scb(ahd, scb_index); |
801 | if (scb == NULL) { | 859 | if (scb == NULL) { |
802 | printf("%s: WARNING no command for scb %d " | 860 | printf("%s: WARNING no command for scb %d " |
@@ -804,12 +862,15 @@ ahd_run_qoutfifo(struct ahd_softc *ahd) | |||
804 | ahd_name(ahd), scb_index, | 862 | ahd_name(ahd), scb_index, |
805 | ahd->qoutfifonext); | 863 | ahd->qoutfifonext); |
806 | ahd_dump_card_state(ahd); | 864 | ahd_dump_card_state(ahd); |
807 | } else | 865 | } else if ((completion->sg_status & SG_STATUS_VALID) != 0) { |
808 | ahd_complete_scb(ahd, scb); | 866 | ahd_handle_scb_status(ahd, scb); |
867 | } else { | ||
868 | ahd_done(ahd, scb); | ||
869 | } | ||
809 | 870 | ||
810 | ahd->qoutfifonext = (ahd->qoutfifonext+1) & (AHD_QOUT_SIZE-1); | 871 | ahd->qoutfifonext = (ahd->qoutfifonext+1) & (AHD_QOUT_SIZE-1); |
811 | if (ahd->qoutfifonext == 0) | 872 | if (ahd->qoutfifonext == 0) |
812 | ahd->qoutfifonext_valid_tag ^= QOUTFIFO_ENTRY_VALID_LE; | 873 | ahd->qoutfifonext_valid_tag ^= QOUTFIFO_ENTRY_VALID; |
813 | } | 874 | } |
814 | ahd->flags &= ~AHD_RUNNING_QOUTFIFO; | 875 | ahd->flags &= ~AHD_RUNNING_QOUTFIFO; |
815 | } | 876 | } |
@@ -875,26 +936,6 @@ ahd_handle_seqint(struct ahd_softc *ahd, u_int intstat) | |||
875 | ahd_name(ahd), seqintcode); | 936 | ahd_name(ahd), seqintcode); |
876 | #endif | 937 | #endif |
877 | switch (seqintcode) { | 938 | switch (seqintcode) { |
878 | case BAD_SCB_STATUS: | ||
879 | { | ||
880 | struct scb *scb; | ||
881 | u_int scbid; | ||
882 | int cmds_pending; | ||
883 | |||
884 | scbid = ahd_get_scbptr(ahd); | ||
885 | scb = ahd_lookup_scb(ahd, scbid); | ||
886 | if (scb != NULL) { | ||
887 | ahd_complete_scb(ahd, scb); | ||
888 | } else { | ||
889 | printf("%s: WARNING no command for scb %d " | ||
890 | "(bad status)\n", ahd_name(ahd), scbid); | ||
891 | ahd_dump_card_state(ahd); | ||
892 | } | ||
893 | cmds_pending = ahd_inw(ahd, CMDS_PENDING); | ||
894 | if (cmds_pending > 0) | ||
895 | ahd_outw(ahd, CMDS_PENDING, cmds_pending - 1); | ||
896 | break; | ||
897 | } | ||
898 | case ENTERING_NONPACK: | 939 | case ENTERING_NONPACK: |
899 | { | 940 | { |
900 | struct scb *scb; | 941 | struct scb *scb; |
@@ -1502,9 +1543,6 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | |||
1502 | && (ahd_inb(ahd, SEQ_FLAGS) & NOT_IDENTIFIED) != 0) | 1543 | && (ahd_inb(ahd, SEQ_FLAGS) & NOT_IDENTIFIED) != 0) |
1503 | scb = NULL; | 1544 | scb = NULL; |
1504 | 1545 | ||
1505 | /* Make sure the sequencer is in a safe location. */ | ||
1506 | ahd_clear_critical_section(ahd); | ||
1507 | |||
1508 | if ((status0 & IOERR) != 0) { | 1546 | if ((status0 & IOERR) != 0) { |
1509 | u_int now_lvd; | 1547 | u_int now_lvd; |
1510 | 1548 | ||
@@ -1520,26 +1558,35 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | |||
1520 | ahd_setup_iocell_workaround(ahd); | 1558 | ahd_setup_iocell_workaround(ahd); |
1521 | ahd_unpause(ahd); | 1559 | ahd_unpause(ahd); |
1522 | } else if ((status0 & OVERRUN) != 0) { | 1560 | } else if ((status0 & OVERRUN) != 0) { |
1561 | |||
1523 | printf("%s: SCSI offset overrun detected. Resetting bus.\n", | 1562 | printf("%s: SCSI offset overrun detected. Resetting bus.\n", |
1524 | ahd_name(ahd)); | 1563 | ahd_name(ahd)); |
1525 | ahd_reset_channel(ahd, 'A', /*Initiate Reset*/TRUE); | 1564 | ahd_reset_channel(ahd, 'A', /*Initiate Reset*/TRUE); |
1526 | } else if ((status & SCSIRSTI) != 0) { | 1565 | } else if ((status & SCSIRSTI) != 0) { |
1566 | |||
1527 | printf("%s: Someone reset channel A\n", ahd_name(ahd)); | 1567 | printf("%s: Someone reset channel A\n", ahd_name(ahd)); |
1528 | ahd_reset_channel(ahd, 'A', /*Initiate Reset*/FALSE); | 1568 | ahd_reset_channel(ahd, 'A', /*Initiate Reset*/FALSE); |
1529 | } else if ((status & SCSIPERR) != 0) { | 1569 | } else if ((status & SCSIPERR) != 0) { |
1570 | |||
1571 | /* Make sure the sequencer is in a safe location. */ | ||
1572 | ahd_clear_critical_section(ahd); | ||
1573 | |||
1530 | ahd_handle_transmission_error(ahd); | 1574 | ahd_handle_transmission_error(ahd); |
1531 | } else if (lqostat0 != 0) { | 1575 | } else if (lqostat0 != 0) { |
1576 | |||
1532 | printf("%s: lqostat0 == 0x%x!\n", ahd_name(ahd), lqostat0); | 1577 | printf("%s: lqostat0 == 0x%x!\n", ahd_name(ahd), lqostat0); |
1533 | ahd_outb(ahd, CLRLQOINT0, lqostat0); | 1578 | ahd_outb(ahd, CLRLQOINT0, lqostat0); |
1534 | if ((ahd->bugs & AHD_CLRLQO_AUTOCLR_BUG) != 0) { | 1579 | if ((ahd->bugs & AHD_CLRLQO_AUTOCLR_BUG) != 0) |
1535 | ahd_outb(ahd, CLRLQOINT1, 0); | 1580 | ahd_outb(ahd, CLRLQOINT1, 0); |
1536 | } | ||
1537 | } else if ((status & SELTO) != 0) { | 1581 | } else if ((status & SELTO) != 0) { |
1538 | u_int scbid; | 1582 | u_int scbid; |
1539 | 1583 | ||
1540 | /* Stop the selection */ | 1584 | /* Stop the selection */ |
1541 | ahd_outb(ahd, SCSISEQ0, 0); | 1585 | ahd_outb(ahd, SCSISEQ0, 0); |
1542 | 1586 | ||
1587 | /* Make sure the sequencer is in a safe location. */ | ||
1588 | ahd_clear_critical_section(ahd); | ||
1589 | |||
1543 | /* No more pending messages */ | 1590 | /* No more pending messages */ |
1544 | ahd_clear_msg_state(ahd); | 1591 | ahd_clear_msg_state(ahd); |
1545 | 1592 | ||
@@ -1572,24 +1619,27 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | |||
1572 | scbid); | 1619 | scbid); |
1573 | } | 1620 | } |
1574 | #endif | 1621 | #endif |
1575 | /* | ||
1576 | * Force a renegotiation with this target just in | ||
1577 | * case the cable was pulled and will later be | ||
1578 | * re-attached. The target may forget its negotiation | ||
1579 | * settings with us should it attempt to reselect | ||
1580 | * during the interruption. The target will not issue | ||
1581 | * a unit attention in this case, so we must always | ||
1582 | * renegotiate. | ||
1583 | */ | ||
1584 | ahd_scb_devinfo(ahd, &devinfo, scb); | 1622 | ahd_scb_devinfo(ahd, &devinfo, scb); |
1585 | ahd_force_renegotiation(ahd, &devinfo); | ||
1586 | ahd_set_transaction_status(scb, CAM_SEL_TIMEOUT); | 1623 | ahd_set_transaction_status(scb, CAM_SEL_TIMEOUT); |
1587 | ahd_freeze_devq(ahd, scb); | 1624 | ahd_freeze_devq(ahd, scb); |
1625 | |||
1626 | /* | ||
1627 | * Cancel any pending transactions on the device | ||
1628 | * now that it seems to be missing. This will | ||
1629 | * also revert us to async/narrow transfers until | ||
1630 | * we can renegotiate with the device. | ||
1631 | */ | ||
1632 | ahd_handle_devreset(ahd, &devinfo, | ||
1633 | CAM_LUN_WILDCARD, | ||
1634 | CAM_SEL_TIMEOUT, | ||
1635 | "Selection Timeout", | ||
1636 | /*verbose_level*/1); | ||
1588 | } | 1637 | } |
1589 | ahd_outb(ahd, CLRINT, CLRSCSIINT); | 1638 | ahd_outb(ahd, CLRINT, CLRSCSIINT); |
1590 | ahd_iocell_first_selection(ahd); | 1639 | ahd_iocell_first_selection(ahd); |
1591 | ahd_unpause(ahd); | 1640 | ahd_unpause(ahd); |
1592 | } else if ((status0 & (SELDI|SELDO)) != 0) { | 1641 | } else if ((status0 & (SELDI|SELDO)) != 0) { |
1642 | |||
1593 | ahd_iocell_first_selection(ahd); | 1643 | ahd_iocell_first_selection(ahd); |
1594 | ahd_unpause(ahd); | 1644 | ahd_unpause(ahd); |
1595 | } else if (status3 != 0) { | 1645 | } else if (status3 != 0) { |
@@ -1597,6 +1647,10 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | |||
1597 | ahd_name(ahd), status3); | 1647 | ahd_name(ahd), status3); |
1598 | ahd_outb(ahd, CLRSINT3, status3); | 1648 | ahd_outb(ahd, CLRSINT3, status3); |
1599 | } else if ((lqistat1 & (LQIPHASE_LQ|LQIPHASE_NLQ)) != 0) { | 1649 | } else if ((lqistat1 & (LQIPHASE_LQ|LQIPHASE_NLQ)) != 0) { |
1650 | |||
1651 | /* Make sure the sequencer is in a safe location. */ | ||
1652 | ahd_clear_critical_section(ahd); | ||
1653 | |||
1600 | ahd_handle_lqiphase_error(ahd, lqistat1); | 1654 | ahd_handle_lqiphase_error(ahd, lqistat1); |
1601 | } else if ((lqistat1 & LQICRCI_NLQ) != 0) { | 1655 | } else if ((lqistat1 & LQICRCI_NLQ) != 0) { |
1602 | /* | 1656 | /* |
@@ -1621,6 +1675,9 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | |||
1621 | */ | 1675 | */ |
1622 | ahd_outb(ahd, SCSISEQ0, 0); | 1676 | ahd_outb(ahd, SCSISEQ0, 0); |
1623 | 1677 | ||
1678 | /* Make sure the sequencer is in a safe location. */ | ||
1679 | ahd_clear_critical_section(ahd); | ||
1680 | |||
1624 | /* | 1681 | /* |
1625 | * Determine what we were up to at the time of | 1682 | * Determine what we were up to at the time of |
1626 | * the busfree. | 1683 | * the busfree. |
@@ -1658,7 +1715,16 @@ ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | |||
1658 | clear_fifo = 0; | 1715 | clear_fifo = 0; |
1659 | packetized = (lqostat1 & LQOBUSFREE) != 0; | 1716 | packetized = (lqostat1 & LQOBUSFREE) != 0; |
1660 | if (!packetized | 1717 | if (!packetized |
1661 | && ahd_inb(ahd, LASTPHASE) == P_BUSFREE) | 1718 | && ahd_inb(ahd, LASTPHASE) == P_BUSFREE |
1719 | && (ahd_inb(ahd, SSTAT0) & SELDI) == 0 | ||
1720 | && ((ahd_inb(ahd, SSTAT0) & SELDO) == 0 | ||
1721 | || (ahd_inb(ahd, SCSISEQ0) & ENSELO) == 0)) | ||
1722 | /* | ||
1723 | * Assume packetized if we are not | ||
1724 | * on the bus in a non-packetized | ||
1725 | * capacity and any pending selection | ||
1726 | * was a packetized selection. | ||
1727 | */ | ||
1662 | packetized = 1; | 1728 | packetized = 1; |
1663 | break; | 1729 | break; |
1664 | } | 1730 | } |
@@ -3193,14 +3259,25 @@ ahd_update_neg_table(struct ahd_softc *ahd, struct ahd_devinfo *devinfo, | |||
3193 | iocell_opts[AHD_PRECOMP_SLEW_INDEX] &= ~AHD_PRECOMP_MASK; | 3259 | iocell_opts[AHD_PRECOMP_SLEW_INDEX] &= ~AHD_PRECOMP_MASK; |
3194 | 3260 | ||
3195 | if ((ahd->features & AHD_NEW_IOCELL_OPTS) != 0 | 3261 | if ((ahd->features & AHD_NEW_IOCELL_OPTS) != 0 |
3196 | && (ppr_opts & MSG_EXT_PPR_DT_REQ) != 0) { | 3262 | && (ppr_opts & MSG_EXT_PPR_DT_REQ) != 0 |
3263 | && (ppr_opts & MSG_EXT_PPR_IU_REQ) == 0) { | ||
3197 | /* | 3264 | /* |
3198 | * Slow down our CRC interval to be | 3265 | * Slow down our CRC interval to be |
3199 | * compatible with devices that can't | 3266 | * compatible with non-packetized |
3200 | * handle a CRC at full speed. | 3267 | * U160 devices that can't handle a |
3268 | * CRC at full speed. | ||
3201 | */ | 3269 | */ |
3202 | con_opts |= ENSLOWCRC; | 3270 | con_opts |= ENSLOWCRC; |
3203 | } | 3271 | } |
3272 | |||
3273 | if ((ahd->bugs & AHD_PACED_NEGTABLE_BUG) != 0) { | ||
3274 | /* | ||
3275 | * On H2A4, revert to a slower slewrate | ||
3276 | * on non-paced transfers. | ||
3277 | */ | ||
3278 | iocell_opts[AHD_PRECOMP_SLEW_INDEX] &= | ||
3279 | ~AHD_SLEWRATE_MASK; | ||
3280 | } | ||
3204 | } | 3281 | } |
3205 | 3282 | ||
3206 | ahd_outb(ahd, ANNEXCOL, AHD_ANNEXCOL_PRECOMP_SLEW); | 3283 | ahd_outb(ahd, ANNEXCOL, AHD_ANNEXCOL_PRECOMP_SLEW); |
@@ -3289,11 +3366,15 @@ ahd_update_pending_scbs(struct ahd_softc *ahd) | |||
3289 | * Force the sequencer to reinitialize the selection for | 3366 | * Force the sequencer to reinitialize the selection for |
3290 | * the command at the head of the execution queue if it | 3367 | * the command at the head of the execution queue if it |
3291 | * has already been setup. The negotiation changes may | 3368 | * has already been setup. The negotiation changes may |
3292 | * effect whether we select-out with ATN. | 3369 | * effect whether we select-out with ATN. It is only |
3370 | * safe to clear ENSELO when the bus is not free and no | ||
3371 | * selection is in progres or completed. | ||
3293 | */ | 3372 | */ |
3294 | saved_modes = ahd_save_modes(ahd); | 3373 | saved_modes = ahd_save_modes(ahd); |
3295 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); | 3374 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); |
3296 | ahd_outb(ahd, SCSISEQ0, ahd_inb(ahd, SCSISEQ0) & ~ENSELO); | 3375 | if ((ahd_inb(ahd, SCSISIGI) & BSYI) != 0 |
3376 | && (ahd_inb(ahd, SSTAT0) & (SELDO|SELINGO)) == 0) | ||
3377 | ahd_outb(ahd, SCSISEQ0, ahd_inb(ahd, SCSISEQ0) & ~ENSELO); | ||
3297 | saved_scbptr = ahd_get_scbptr(ahd); | 3378 | saved_scbptr = ahd_get_scbptr(ahd); |
3298 | /* Ensure that the hscbs down on the card match the new information */ | 3379 | /* Ensure that the hscbs down on the card match the new information */ |
3299 | for (scb_tag = 0; scb_tag < ahd->scb_data.maxhscbs; scb_tag++) { | 3380 | for (scb_tag = 0; scb_tag < ahd->scb_data.maxhscbs; scb_tag++) { |
@@ -4999,13 +5080,14 @@ ahd_handle_devreset(struct ahd_softc *ahd, struct ahd_devinfo *devinfo, | |||
4999 | ahd_set_width(ahd, devinfo, MSG_EXT_WDTR_BUS_8_BIT, | 5080 | ahd_set_width(ahd, devinfo, MSG_EXT_WDTR_BUS_8_BIT, |
5000 | AHD_TRANS_CUR, /*paused*/TRUE); | 5081 | AHD_TRANS_CUR, /*paused*/TRUE); |
5001 | ahd_set_syncrate(ahd, devinfo, /*period*/0, /*offset*/0, | 5082 | ahd_set_syncrate(ahd, devinfo, /*period*/0, /*offset*/0, |
5002 | /*ppr_options*/0, AHD_TRANS_CUR, /*paused*/TRUE); | 5083 | /*ppr_options*/0, AHD_TRANS_CUR, |
5084 | /*paused*/TRUE); | ||
5003 | 5085 | ||
5004 | ahd_send_async(ahd, devinfo->channel, devinfo->target, | 5086 | if (status != CAM_SEL_TIMEOUT) |
5005 | lun, AC_SENT_BDR, NULL); | 5087 | ahd_send_async(ahd, devinfo->channel, devinfo->target, |
5088 | CAM_LUN_WILDCARD, AC_SENT_BDR, NULL); | ||
5006 | 5089 | ||
5007 | if (message != NULL | 5090 | if (message != NULL && bootverbose) |
5008 | && (verbose_level <= bootverbose)) | ||
5009 | printf("%s: %s on %c:%d. %d SCBs aborted\n", ahd_name(ahd), | 5091 | printf("%s: %s on %c:%d. %d SCBs aborted\n", ahd_name(ahd), |
5010 | message, devinfo->channel, devinfo->target, found); | 5092 | message, devinfo->channel, devinfo->target, found); |
5011 | } | 5093 | } |
@@ -5963,16 +6045,13 @@ ahd_alloc_scbs(struct ahd_softc *ahd) | |||
5963 | newcount = MIN(scb_data->sense_left, scb_data->scbs_left); | 6045 | newcount = MIN(scb_data->sense_left, scb_data->scbs_left); |
5964 | newcount = MIN(newcount, scb_data->sgs_left); | 6046 | newcount = MIN(newcount, scb_data->sgs_left); |
5965 | newcount = MIN(newcount, (AHD_SCB_MAX_ALLOC - scb_data->numscbs)); | 6047 | newcount = MIN(newcount, (AHD_SCB_MAX_ALLOC - scb_data->numscbs)); |
5966 | scb_data->sense_left -= newcount; | ||
5967 | scb_data->scbs_left -= newcount; | ||
5968 | scb_data->sgs_left -= newcount; | ||
5969 | for (i = 0; i < newcount; i++) { | 6048 | for (i = 0; i < newcount; i++) { |
5970 | u_int col_tag; | ||
5971 | |||
5972 | struct scb_platform_data *pdata; | 6049 | struct scb_platform_data *pdata; |
6050 | u_int col_tag; | ||
5973 | #ifndef __linux__ | 6051 | #ifndef __linux__ |
5974 | int error; | 6052 | int error; |
5975 | #endif | 6053 | #endif |
6054 | |||
5976 | next_scb = (struct scb *)malloc(sizeof(*next_scb), | 6055 | next_scb = (struct scb *)malloc(sizeof(*next_scb), |
5977 | M_DEVBUF, M_NOWAIT); | 6056 | M_DEVBUF, M_NOWAIT); |
5978 | if (next_scb == NULL) | 6057 | if (next_scb == NULL) |
@@ -6029,6 +6108,9 @@ ahd_alloc_scbs(struct ahd_softc *ahd) | |||
6029 | sense_data += AHD_SENSE_BUFSIZE; | 6108 | sense_data += AHD_SENSE_BUFSIZE; |
6030 | sense_busaddr += AHD_SENSE_BUFSIZE; | 6109 | sense_busaddr += AHD_SENSE_BUFSIZE; |
6031 | scb_data->numscbs++; | 6110 | scb_data->numscbs++; |
6111 | scb_data->sense_left--; | ||
6112 | scb_data->scbs_left--; | ||
6113 | scb_data->sgs_left--; | ||
6032 | } | 6114 | } |
6033 | } | 6115 | } |
6034 | 6116 | ||
@@ -6143,7 +6225,7 @@ ahd_init(struct ahd_softc *ahd) | |||
6143 | * for the target mode role, we must additionally provide space for | 6225 | * for the target mode role, we must additionally provide space for |
6144 | * the incoming target command fifo. | 6226 | * the incoming target command fifo. |
6145 | */ | 6227 | */ |
6146 | driver_data_size = AHD_SCB_MAX * sizeof(uint16_t) | 6228 | driver_data_size = AHD_SCB_MAX * sizeof(*ahd->qoutfifo) |
6147 | + sizeof(struct hardware_scb); | 6229 | + sizeof(struct hardware_scb); |
6148 | if ((ahd->features & AHD_TARGETMODE) != 0) | 6230 | if ((ahd->features & AHD_TARGETMODE) != 0) |
6149 | driver_data_size += AHD_TMODE_CMDS * sizeof(struct target_cmd); | 6231 | driver_data_size += AHD_TMODE_CMDS * sizeof(struct target_cmd); |
@@ -6178,10 +6260,10 @@ ahd_init(struct ahd_softc *ahd) | |||
6178 | ahd->shared_data_map.vaddr, driver_data_size, | 6260 | ahd->shared_data_map.vaddr, driver_data_size, |
6179 | ahd_dmamap_cb, &ahd->shared_data_map.physaddr, | 6261 | ahd_dmamap_cb, &ahd->shared_data_map.physaddr, |
6180 | /*flags*/0); | 6262 | /*flags*/0); |
6181 | ahd->qoutfifo = (uint16_t *)ahd->shared_data_map.vaddr; | 6263 | ahd->qoutfifo = (struct ahd_completion *)ahd->shared_data_map.vaddr; |
6182 | next_vaddr = (uint8_t *)&ahd->qoutfifo[AHD_QOUT_SIZE]; | 6264 | next_vaddr = (uint8_t *)&ahd->qoutfifo[AHD_QOUT_SIZE]; |
6183 | next_baddr = ahd->shared_data_map.physaddr | 6265 | next_baddr = ahd->shared_data_map.physaddr |
6184 | + AHD_QOUT_SIZE*sizeof(uint16_t); | 6266 | + AHD_QOUT_SIZE*sizeof(struct ahd_completion); |
6185 | if ((ahd->features & AHD_TARGETMODE) != 0) { | 6267 | if ((ahd->features & AHD_TARGETMODE) != 0) { |
6186 | ahd->targetcmds = (struct target_cmd *)next_vaddr; | 6268 | ahd->targetcmds = (struct target_cmd *)next_vaddr; |
6187 | next_vaddr += AHD_TMODE_CMDS * sizeof(struct target_cmd); | 6269 | next_vaddr += AHD_TMODE_CMDS * sizeof(struct target_cmd); |
@@ -6508,10 +6590,10 @@ ahd_chip_init(struct ahd_softc *ahd) | |||
6508 | 6590 | ||
6509 | /* All of our queues are empty */ | 6591 | /* All of our queues are empty */ |
6510 | ahd->qoutfifonext = 0; | 6592 | ahd->qoutfifonext = 0; |
6511 | ahd->qoutfifonext_valid_tag = QOUTFIFO_ENTRY_VALID_LE; | 6593 | ahd->qoutfifonext_valid_tag = QOUTFIFO_ENTRY_VALID; |
6512 | ahd_outb(ahd, QOUTFIFO_ENTRY_VALID_TAG, QOUTFIFO_ENTRY_VALID >> 8); | 6594 | ahd_outb(ahd, QOUTFIFO_ENTRY_VALID_TAG, QOUTFIFO_ENTRY_VALID); |
6513 | for (i = 0; i < AHD_QOUT_SIZE; i++) | 6595 | for (i = 0; i < AHD_QOUT_SIZE; i++) |
6514 | ahd->qoutfifo[i] = 0; | 6596 | ahd->qoutfifo[i].valid_tag = 0; |
6515 | ahd_sync_qoutfifo(ahd, BUS_DMASYNC_PREREAD); | 6597 | ahd_sync_qoutfifo(ahd, BUS_DMASYNC_PREREAD); |
6516 | 6598 | ||
6517 | ahd->qinfifonext = 0; | 6599 | ahd->qinfifonext = 0; |
@@ -6544,12 +6626,15 @@ ahd_chip_init(struct ahd_softc *ahd) | |||
6544 | ahd_outw(ahd, COMPLETE_SCB_HEAD, SCB_LIST_NULL); | 6626 | ahd_outw(ahd, COMPLETE_SCB_HEAD, SCB_LIST_NULL); |
6545 | ahd_outw(ahd, COMPLETE_SCB_DMAINPROG_HEAD, SCB_LIST_NULL); | 6627 | ahd_outw(ahd, COMPLETE_SCB_DMAINPROG_HEAD, SCB_LIST_NULL); |
6546 | ahd_outw(ahd, COMPLETE_DMA_SCB_HEAD, SCB_LIST_NULL); | 6628 | ahd_outw(ahd, COMPLETE_DMA_SCB_HEAD, SCB_LIST_NULL); |
6629 | ahd_outw(ahd, COMPLETE_DMA_SCB_TAIL, SCB_LIST_NULL); | ||
6630 | ahd_outw(ahd, COMPLETE_ON_QFREEZE_HEAD, SCB_LIST_NULL); | ||
6547 | 6631 | ||
6548 | /* | 6632 | /* |
6549 | * The Freeze Count is 0. | 6633 | * The Freeze Count is 0. |
6550 | */ | 6634 | */ |
6551 | ahd->qfreeze_cnt = 0; | 6635 | ahd->qfreeze_cnt = 0; |
6552 | ahd_outw(ahd, QFREEZE_COUNT, 0); | 6636 | ahd_outw(ahd, QFREEZE_COUNT, 0); |
6637 | ahd_outw(ahd, KERNEL_QFREEZE_COUNT, 0); | ||
6553 | 6638 | ||
6554 | /* | 6639 | /* |
6555 | * Tell the sequencer where it can find our arrays in memory. | 6640 | * Tell the sequencer where it can find our arrays in memory. |
@@ -6909,43 +6994,34 @@ ahd_pause_and_flushwork(struct ahd_softc *ahd) | |||
6909 | { | 6994 | { |
6910 | u_int intstat; | 6995 | u_int intstat; |
6911 | u_int maxloops; | 6996 | u_int maxloops; |
6912 | u_int qfreeze_cnt; | ||
6913 | 6997 | ||
6914 | maxloops = 1000; | 6998 | maxloops = 1000; |
6915 | ahd->flags |= AHD_ALL_INTERRUPTS; | 6999 | ahd->flags |= AHD_ALL_INTERRUPTS; |
6916 | ahd_pause(ahd); | 7000 | ahd_pause(ahd); |
6917 | /* | 7001 | /* |
6918 | * Increment the QFreeze Count so that the sequencer | 7002 | * Freeze the outgoing selections. We do this only |
6919 | * will not start new selections. We do this only | ||
6920 | * until we are safely paused without further selections | 7003 | * until we are safely paused without further selections |
6921 | * pending. | 7004 | * pending. |
6922 | */ | 7005 | */ |
6923 | ahd_outw(ahd, QFREEZE_COUNT, ahd_inw(ahd, QFREEZE_COUNT) + 1); | 7006 | ahd->qfreeze_cnt--; |
7007 | ahd_outw(ahd, KERNEL_QFREEZE_COUNT, ahd->qfreeze_cnt); | ||
6924 | ahd_outb(ahd, SEQ_FLAGS2, ahd_inb(ahd, SEQ_FLAGS2) | SELECTOUT_QFROZEN); | 7008 | ahd_outb(ahd, SEQ_FLAGS2, ahd_inb(ahd, SEQ_FLAGS2) | SELECTOUT_QFROZEN); |
6925 | do { | 7009 | do { |
6926 | struct scb *waiting_scb; | ||
6927 | 7010 | ||
6928 | ahd_unpause(ahd); | 7011 | ahd_unpause(ahd); |
7012 | /* | ||
7013 | * Give the sequencer some time to service | ||
7014 | * any active selections. | ||
7015 | */ | ||
7016 | ahd_delay(500); | ||
7017 | |||
6929 | ahd_intr(ahd); | 7018 | ahd_intr(ahd); |
6930 | ahd_pause(ahd); | 7019 | ahd_pause(ahd); |
6931 | ahd_clear_critical_section(ahd); | ||
6932 | intstat = ahd_inb(ahd, INTSTAT); | 7020 | intstat = ahd_inb(ahd, INTSTAT); |
6933 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); | 7021 | if ((intstat & INT_PEND) == 0) { |
6934 | if ((ahd_inb(ahd, SSTAT0) & (SELDO|SELINGO)) == 0) | 7022 | ahd_clear_critical_section(ahd); |
6935 | ahd_outb(ahd, SCSISEQ0, | 7023 | intstat = ahd_inb(ahd, INTSTAT); |
6936 | ahd_inb(ahd, SCSISEQ0) & ~ENSELO); | 7024 | } |
6937 | /* | ||
6938 | * In the non-packetized case, the sequencer (for Rev A), | ||
6939 | * relies on ENSELO remaining set after SELDO. The hardware | ||
6940 | * auto-clears ENSELO in the packetized case. | ||
6941 | */ | ||
6942 | waiting_scb = ahd_lookup_scb(ahd, | ||
6943 | ahd_inw(ahd, WAITING_TID_HEAD)); | ||
6944 | if (waiting_scb != NULL | ||
6945 | && (waiting_scb->flags & SCB_PACKETIZED) == 0 | ||
6946 | && (ahd_inb(ahd, SSTAT0) & (SELDO|SELINGO)) != 0) | ||
6947 | ahd_outb(ahd, SCSISEQ0, | ||
6948 | ahd_inb(ahd, SCSISEQ0) | ENSELO); | ||
6949 | } while (--maxloops | 7025 | } while (--maxloops |
6950 | && (intstat != 0xFF || (ahd->features & AHD_REMOVABLE) == 0) | 7026 | && (intstat != 0xFF || (ahd->features & AHD_REMOVABLE) == 0) |
6951 | && ((intstat & INT_PEND) != 0 | 7027 | && ((intstat & INT_PEND) != 0 |
@@ -6956,17 +7032,8 @@ ahd_pause_and_flushwork(struct ahd_softc *ahd) | |||
6956 | printf("Infinite interrupt loop, INTSTAT = %x", | 7032 | printf("Infinite interrupt loop, INTSTAT = %x", |
6957 | ahd_inb(ahd, INTSTAT)); | 7033 | ahd_inb(ahd, INTSTAT)); |
6958 | } | 7034 | } |
6959 | qfreeze_cnt = ahd_inw(ahd, QFREEZE_COUNT); | 7035 | ahd->qfreeze_cnt++; |
6960 | if (qfreeze_cnt == 0) { | 7036 | ahd_outw(ahd, KERNEL_QFREEZE_COUNT, ahd->qfreeze_cnt); |
6961 | printf("%s: ahd_pause_and_flushwork with 0 qfreeze count!\n", | ||
6962 | ahd_name(ahd)); | ||
6963 | } else { | ||
6964 | qfreeze_cnt--; | ||
6965 | } | ||
6966 | ahd_outw(ahd, QFREEZE_COUNT, qfreeze_cnt); | ||
6967 | if (qfreeze_cnt == 0) | ||
6968 | ahd_outb(ahd, SEQ_FLAGS2, | ||
6969 | ahd_inb(ahd, SEQ_FLAGS2) & ~SELECTOUT_QFROZEN); | ||
6970 | 7037 | ||
6971 | ahd_flush_qoutfifo(ahd); | 7038 | ahd_flush_qoutfifo(ahd); |
6972 | 7039 | ||
@@ -7307,6 +7374,7 @@ ahd_search_qinfifo(struct ahd_softc *ahd, int target, char channel, | |||
7307 | * appropriate, traverse the SCBs of each "their id" | 7374 | * appropriate, traverse the SCBs of each "their id" |
7308 | * looking for matches. | 7375 | * looking for matches. |
7309 | */ | 7376 | */ |
7377 | ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); | ||
7310 | savedscbptr = ahd_get_scbptr(ahd); | 7378 | savedscbptr = ahd_get_scbptr(ahd); |
7311 | tid_next = ahd_inw(ahd, WAITING_TID_HEAD); | 7379 | tid_next = ahd_inw(ahd, WAITING_TID_HEAD); |
7312 | tid_prev = SCB_LIST_NULL; | 7380 | tid_prev = SCB_LIST_NULL; |
@@ -7376,7 +7444,7 @@ ahd_search_scb_list(struct ahd_softc *ahd, int target, char channel, | |||
7376 | u_int prev; | 7444 | u_int prev; |
7377 | int found; | 7445 | int found; |
7378 | 7446 | ||
7379 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); | 7447 | AHD_ASSERT_MODES(ahd, AHD_MODE_SCSI_MSK, AHD_MODE_SCSI_MSK); |
7380 | found = 0; | 7448 | found = 0; |
7381 | prev = SCB_LIST_NULL; | 7449 | prev = SCB_LIST_NULL; |
7382 | next = *list_head; | 7450 | next = *list_head; |
@@ -7443,7 +7511,7 @@ static void | |||
7443 | ahd_stitch_tid_list(struct ahd_softc *ahd, u_int tid_prev, | 7511 | ahd_stitch_tid_list(struct ahd_softc *ahd, u_int tid_prev, |
7444 | u_int tid_cur, u_int tid_next) | 7512 | u_int tid_cur, u_int tid_next) |
7445 | { | 7513 | { |
7446 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); | 7514 | AHD_ASSERT_MODES(ahd, AHD_MODE_SCSI_MSK, AHD_MODE_SCSI_MSK); |
7447 | 7515 | ||
7448 | if (SCBID_IS_NULL(tid_cur)) { | 7516 | if (SCBID_IS_NULL(tid_cur)) { |
7449 | 7517 | ||
@@ -7483,7 +7551,7 @@ ahd_rem_wscb(struct ahd_softc *ahd, u_int scbid, | |||
7483 | { | 7551 | { |
7484 | u_int tail_offset; | 7552 | u_int tail_offset; |
7485 | 7553 | ||
7486 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); | 7554 | AHD_ASSERT_MODES(ahd, AHD_MODE_SCSI_MSK, AHD_MODE_SCSI_MSK); |
7487 | if (!SCBID_IS_NULL(prev)) { | 7555 | if (!SCBID_IS_NULL(prev)) { |
7488 | ahd_set_scbptr(ahd, prev); | 7556 | ahd_set_scbptr(ahd, prev); |
7489 | ahd_outw(ahd, SCB_NEXT, next); | 7557 | ahd_outw(ahd, SCB_NEXT, next); |
@@ -7887,30 +7955,35 @@ ahd_handle_scb_status(struct ahd_softc *ahd, struct scb *scb) | |||
7887 | void | 7955 | void |
7888 | ahd_handle_scsi_status(struct ahd_softc *ahd, struct scb *scb) | 7956 | ahd_handle_scsi_status(struct ahd_softc *ahd, struct scb *scb) |
7889 | { | 7957 | { |
7890 | struct hardware_scb *hscb; | 7958 | struct hardware_scb *hscb; |
7891 | u_int qfreeze_cnt; | 7959 | int paused; |
7892 | 7960 | ||
7893 | /* | 7961 | /* |
7894 | * The sequencer freezes its select-out queue | 7962 | * The sequencer freezes its select-out queue |
7895 | * anytime a SCSI status error occurs. We must | 7963 | * anytime a SCSI status error occurs. We must |
7896 | * handle the error and decrement the QFREEZE count | 7964 | * handle the error and increment our qfreeze count |
7897 | * to allow the sequencer to continue. | 7965 | * to allow the sequencer to continue. We don't |
7966 | * bother clearing critical sections here since all | ||
7967 | * operations are on data structures that the sequencer | ||
7968 | * is not touching once the queue is frozen. | ||
7898 | */ | 7969 | */ |
7899 | hscb = scb->hscb; | 7970 | hscb = scb->hscb; |
7900 | 7971 | ||
7972 | if (ahd_is_paused(ahd)) { | ||
7973 | paused = 1; | ||
7974 | } else { | ||
7975 | paused = 0; | ||
7976 | ahd_pause(ahd); | ||
7977 | } | ||
7978 | |||
7901 | /* Freeze the queue until the client sees the error. */ | 7979 | /* Freeze the queue until the client sees the error. */ |
7902 | ahd_freeze_devq(ahd, scb); | 7980 | ahd_freeze_devq(ahd, scb); |
7903 | ahd_freeze_scb(scb); | 7981 | ahd_freeze_scb(scb); |
7904 | qfreeze_cnt = ahd_inw(ahd, QFREEZE_COUNT); | 7982 | ahd->qfreeze_cnt++; |
7905 | if (qfreeze_cnt == 0) { | 7983 | ahd_outw(ahd, KERNEL_QFREEZE_COUNT, ahd->qfreeze_cnt); |
7906 | printf("%s: Bad status with 0 qfreeze count!\n", ahd_name(ahd)); | 7984 | |
7907 | } else { | 7985 | if (paused == 0) |
7908 | qfreeze_cnt--; | 7986 | ahd_unpause(ahd); |
7909 | ahd_outw(ahd, QFREEZE_COUNT, qfreeze_cnt); | ||
7910 | } | ||
7911 | if (qfreeze_cnt == 0) | ||
7912 | ahd_outb(ahd, SEQ_FLAGS2, | ||
7913 | ahd_inb(ahd, SEQ_FLAGS2) & ~SELECTOUT_QFROZEN); | ||
7914 | 7987 | ||
7915 | /* Don't want to clobber the original sense code */ | 7988 | /* Don't want to clobber the original sense code */ |
7916 | if ((scb->flags & SCB_SENSE) != 0) { | 7989 | if ((scb->flags & SCB_SENSE) != 0) { |
@@ -8323,13 +8396,14 @@ ahd_loadseq(struct ahd_softc *ahd) | |||
8323 | u_int sg_prefetch_cnt_limit; | 8396 | u_int sg_prefetch_cnt_limit; |
8324 | u_int sg_prefetch_align; | 8397 | u_int sg_prefetch_align; |
8325 | u_int sg_size; | 8398 | u_int sg_size; |
8399 | u_int cacheline_mask; | ||
8326 | uint8_t download_consts[DOWNLOAD_CONST_COUNT]; | 8400 | uint8_t download_consts[DOWNLOAD_CONST_COUNT]; |
8327 | 8401 | ||
8328 | if (bootverbose) | 8402 | if (bootverbose) |
8329 | printf("%s: Downloading Sequencer Program...", | 8403 | printf("%s: Downloading Sequencer Program...", |
8330 | ahd_name(ahd)); | 8404 | ahd_name(ahd)); |
8331 | 8405 | ||
8332 | #if DOWNLOAD_CONST_COUNT != 7 | 8406 | #if DOWNLOAD_CONST_COUNT != 8 |
8333 | #error "Download Const Mismatch" | 8407 | #error "Download Const Mismatch" |
8334 | #endif | 8408 | #endif |
8335 | /* | 8409 | /* |
@@ -8365,6 +8439,9 @@ ahd_loadseq(struct ahd_softc *ahd) | |||
8365 | /* Round down to the nearest power of 2. */ | 8439 | /* Round down to the nearest power of 2. */ |
8366 | while (powerof2(sg_prefetch_align) == 0) | 8440 | while (powerof2(sg_prefetch_align) == 0) |
8367 | sg_prefetch_align--; | 8441 | sg_prefetch_align--; |
8442 | |||
8443 | cacheline_mask = sg_prefetch_align - 1; | ||
8444 | |||
8368 | /* | 8445 | /* |
8369 | * If the cacheline boundary is greater than half our prefetch RAM | 8446 | * If the cacheline boundary is greater than half our prefetch RAM |
8370 | * we risk not being able to fetch even a single complete S/G | 8447 | * we risk not being able to fetch even a single complete S/G |
@@ -8405,6 +8482,7 @@ ahd_loadseq(struct ahd_softc *ahd) | |||
8405 | download_consts[PKT_OVERRUN_BUFOFFSET] = | 8482 | download_consts[PKT_OVERRUN_BUFOFFSET] = |
8406 | (ahd->overrun_buf - (uint8_t *)ahd->qoutfifo) / 256; | 8483 | (ahd->overrun_buf - (uint8_t *)ahd->qoutfifo) / 256; |
8407 | download_consts[SCB_TRANSFER_SIZE] = SCB_TRANSFER_SIZE_1BYTE_LUN; | 8484 | download_consts[SCB_TRANSFER_SIZE] = SCB_TRANSFER_SIZE_1BYTE_LUN; |
8485 | download_consts[CACHELINE_MASK] = cacheline_mask; | ||
8408 | cur_patch = patches; | 8486 | cur_patch = patches; |
8409 | downloaded = 0; | 8487 | downloaded = 0; |
8410 | skip_addr = 0; | 8488 | skip_addr = 0; |
@@ -8818,6 +8896,15 @@ ahd_dump_card_state(struct ahd_softc *ahd) | |||
8818 | scb_index = ahd_inw_scbram(ahd, SCB_NEXT_COMPLETE); | 8896 | scb_index = ahd_inw_scbram(ahd, SCB_NEXT_COMPLETE); |
8819 | } | 8897 | } |
8820 | printf("\n"); | 8898 | printf("\n"); |
8899 | printf("Sequencer On QFreeze and Complete list: "); | ||
8900 | scb_index = ahd_inw(ahd, COMPLETE_ON_QFREEZE_HEAD); | ||
8901 | i = 0; | ||
8902 | while (!SCBID_IS_NULL(scb_index) && i++ < AHD_SCB_MAX) { | ||
8903 | ahd_set_scbptr(ahd, scb_index); | ||
8904 | printf("%d ", scb_index); | ||
8905 | scb_index = ahd_inw_scbram(ahd, SCB_NEXT_COMPLETE); | ||
8906 | } | ||
8907 | printf("\n"); | ||
8821 | ahd_set_scbptr(ahd, saved_scb_index); | 8908 | ahd_set_scbptr(ahd, saved_scb_index); |
8822 | dffstat = ahd_inb(ahd, DFFSTAT); | 8909 | dffstat = ahd_inb(ahd, DFFSTAT); |
8823 | for (i = 0; i < 2; i++) { | 8910 | for (i = 0; i < 2; i++) { |
@@ -9052,7 +9139,7 @@ ahd_wait_seeprom(struct ahd_softc *ahd) | |||
9052 | { | 9139 | { |
9053 | int cnt; | 9140 | int cnt; |
9054 | 9141 | ||
9055 | cnt = 20; | 9142 | cnt = 5000; |
9056 | while ((ahd_inb(ahd, SEESTAT) & (SEEARBACK|SEEBUSY)) != 0 && --cnt) | 9143 | while ((ahd_inb(ahd, SEESTAT) & (SEEARBACK|SEEBUSY)) != 0 && --cnt) |
9057 | ahd_delay(5); | 9144 | ahd_delay(5); |
9058 | 9145 | ||
diff --git a/drivers/scsi/aic7xxx/aic79xx_inline.h b/drivers/scsi/aic7xxx/aic79xx_inline.h index 2b7ff989f3d1..91c4f7f484b1 100644 --- a/drivers/scsi/aic7xxx/aic79xx_inline.h +++ b/drivers/scsi/aic7xxx/aic79xx_inline.h | |||
@@ -839,7 +839,7 @@ ahd_sync_qoutfifo(struct ahd_softc *ahd, int op) | |||
839 | { | 839 | { |
840 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, ahd->shared_data_map.dmamap, | 840 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, ahd->shared_data_map.dmamap, |
841 | /*offset*/0, | 841 | /*offset*/0, |
842 | /*len*/AHD_SCB_MAX * sizeof(uint16_t), op); | 842 | /*len*/AHD_SCB_MAX * sizeof(struct ahd_completion), op); |
843 | } | 843 | } |
844 | 844 | ||
845 | static __inline void | 845 | static __inline void |
@@ -871,8 +871,8 @@ ahd_check_cmdcmpltqueues(struct ahd_softc *ahd) | |||
871 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, ahd->shared_data_map.dmamap, | 871 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, ahd->shared_data_map.dmamap, |
872 | /*offset*/ahd->qoutfifonext * sizeof(*ahd->qoutfifo), | 872 | /*offset*/ahd->qoutfifonext * sizeof(*ahd->qoutfifo), |
873 | /*len*/sizeof(*ahd->qoutfifo), BUS_DMASYNC_POSTREAD); | 873 | /*len*/sizeof(*ahd->qoutfifo), BUS_DMASYNC_POSTREAD); |
874 | if ((ahd->qoutfifo[ahd->qoutfifonext] | 874 | if (ahd->qoutfifo[ahd->qoutfifonext].valid_tag |
875 | & QOUTFIFO_ENTRY_VALID_LE) == ahd->qoutfifonext_valid_tag) | 875 | == ahd->qoutfifonext_valid_tag) |
876 | retval |= AHD_RUN_QOUTFIFO; | 876 | retval |= AHD_RUN_QOUTFIFO; |
877 | #ifdef AHD_TARGET_MODE | 877 | #ifdef AHD_TARGET_MODE |
878 | if ((ahd->flags & AHD_TARGETROLE) != 0 | 878 | if ((ahd->flags & AHD_TARGETROLE) != 0 |
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c index 1c8f872e2dd4..2567e29960bd 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.c +++ b/drivers/scsi/aic7xxx/aic79xx_osm.c | |||
@@ -1468,6 +1468,30 @@ ahd_linux_run_command(struct ahd_softc *ahd, struct ahd_linux_device *dev, | |||
1468 | if ((tstate->auto_negotiate & mask) != 0) { | 1468 | if ((tstate->auto_negotiate & mask) != 0) { |
1469 | scb->flags |= SCB_AUTO_NEGOTIATE; | 1469 | scb->flags |= SCB_AUTO_NEGOTIATE; |
1470 | scb->hscb->control |= MK_MESSAGE; | 1470 | scb->hscb->control |= MK_MESSAGE; |
1471 | } else if (cmd->cmnd[0] == INQUIRY | ||
1472 | && (tinfo->curr.offset != 0 | ||
1473 | || tinfo->curr.width != MSG_EXT_WDTR_BUS_8_BIT | ||
1474 | || tinfo->curr.ppr_options != 0) | ||
1475 | && (tinfo->curr.ppr_options & MSG_EXT_PPR_IU_REQ)==0) { | ||
1476 | /* | ||
1477 | * The SCSI spec requires inquiry | ||
1478 | * commands to complete without | ||
1479 | * reporting unit attention conditions. | ||
1480 | * Because of this, an inquiry command | ||
1481 | * that occurs just after a device is | ||
1482 | * reset will result in a data phase | ||
1483 | * with mismatched negotiated rates. | ||
1484 | * The core already forces a renegotiation | ||
1485 | * for reset events that are visible to | ||
1486 | * our controller or that we initiate, | ||
1487 | * but a third party device reset or a | ||
1488 | * hot-plug insertion can still cause this | ||
1489 | * issue. Therefore, we force a re-negotiation | ||
1490 | * for every inquiry command unless we | ||
1491 | * are async. | ||
1492 | */ | ||
1493 | scb->flags |= SCB_NEGOTIATE; | ||
1494 | scb->hscb->control |= MK_MESSAGE; | ||
1471 | } | 1495 | } |
1472 | 1496 | ||
1473 | if ((dev->flags & (AHD_DEV_Q_TAGGED|AHD_DEV_Q_BASIC)) != 0) { | 1497 | if ((dev->flags & (AHD_DEV_Q_TAGGED|AHD_DEV_Q_BASIC)) != 0) { |
@@ -2058,6 +2082,7 @@ ahd_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag) | |||
2058 | int paused; | 2082 | int paused; |
2059 | int wait; | 2083 | int wait; |
2060 | int disconnected; | 2084 | int disconnected; |
2085 | int found; | ||
2061 | ahd_mode_state saved_modes; | 2086 | ahd_mode_state saved_modes; |
2062 | unsigned long flags; | 2087 | unsigned long flags; |
2063 | 2088 | ||
@@ -2176,7 +2201,8 @@ ahd_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag) | |||
2176 | last_phase = ahd_inb(ahd, LASTPHASE); | 2201 | last_phase = ahd_inb(ahd, LASTPHASE); |
2177 | saved_scbptr = ahd_get_scbptr(ahd); | 2202 | saved_scbptr = ahd_get_scbptr(ahd); |
2178 | active_scbptr = saved_scbptr; | 2203 | active_scbptr = saved_scbptr; |
2179 | if (disconnected && (ahd_inb(ahd, SEQ_FLAGS) & NOT_IDENTIFIED) == 0) { | 2204 | if (disconnected && ((last_phase != P_BUSFREE) || |
2205 | (ahd_inb(ahd, SEQ_FLAGS) & NOT_IDENTIFIED) == 0)) { | ||
2180 | struct scb *bus_scb; | 2206 | struct scb *bus_scb; |
2181 | 2207 | ||
2182 | bus_scb = ahd_lookup_scb(ahd, active_scbptr); | 2208 | bus_scb = ahd_lookup_scb(ahd, active_scbptr); |
@@ -2194,28 +2220,41 @@ ahd_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag) | |||
2194 | * bus or is in the disconnected state. | 2220 | * bus or is in the disconnected state. |
2195 | */ | 2221 | */ |
2196 | saved_scsiid = ahd_inb(ahd, SAVED_SCSIID); | 2222 | saved_scsiid = ahd_inb(ahd, SAVED_SCSIID); |
2197 | if (last_phase != P_BUSFREE | 2223 | if (SCB_GET_TAG(pending_scb) == active_scbptr |
2198 | && (SCB_GET_TAG(pending_scb) == active_scbptr | ||
2199 | || (flag == SCB_DEVICE_RESET | 2224 | || (flag == SCB_DEVICE_RESET |
2200 | && SCSIID_TARGET(ahd, saved_scsiid) == scmd_id(cmd)))) { | 2225 | && SCSIID_TARGET(ahd, saved_scsiid) == scmd_id(cmd))) { |
2201 | 2226 | ||
2202 | /* | 2227 | /* |
2203 | * We're active on the bus, so assert ATN | 2228 | * We're active on the bus, so assert ATN |
2204 | * and hope that the target responds. | 2229 | * and hope that the target responds. |
2205 | */ | 2230 | */ |
2206 | pending_scb = ahd_lookup_scb(ahd, active_scbptr); | 2231 | pending_scb = ahd_lookup_scb(ahd, active_scbptr); |
2207 | pending_scb->flags |= SCB_RECOVERY_SCB|flag; | 2232 | pending_scb->flags |= SCB_RECOVERY_SCB|SCB_DEVICE_RESET; |
2208 | ahd_outb(ahd, MSG_OUT, HOST_MSG); | 2233 | ahd_outb(ahd, MSG_OUT, HOST_MSG); |
2209 | ahd_outb(ahd, SCSISIGO, last_phase|ATNO); | 2234 | ahd_outb(ahd, SCSISIGO, last_phase|ATNO); |
2210 | scmd_printk(KERN_INFO, cmd, "Device is active, asserting ATN\n"); | 2235 | scmd_printk(KERN_INFO, cmd, "BDR message in message buffer\n"); |
2211 | wait = TRUE; | 2236 | wait = TRUE; |
2237 | } else if (last_phase != P_BUSFREE | ||
2238 | && ahd_inb(ahd, SCSIPHASE) == 0) { | ||
2239 | /* | ||
2240 | * SCB is not identified, there | ||
2241 | * is no pending REQ, and the sequencer | ||
2242 | * has not seen a busfree. Looks like | ||
2243 | * a stuck connection waiting to | ||
2244 | * go busfree. Reset the bus. | ||
2245 | */ | ||
2246 | found = ahd_reset_channel(ahd, cmd->device->channel + 'A', | ||
2247 | /*Initiate Reset*/TRUE); | ||
2248 | printf("%s: Issued Channel %c Bus Reset. " | ||
2249 | "%d SCBs aborted\n", ahd_name(ahd), | ||
2250 | cmd->device->channel + 'A', found); | ||
2212 | } else if (disconnected) { | 2251 | } else if (disconnected) { |
2213 | 2252 | ||
2214 | /* | 2253 | /* |
2215 | * Actually re-queue this SCB in an attempt | 2254 | * Actually re-queue this SCB in an attempt |
2216 | * to select the device before it reconnects. | 2255 | * to select the device before it reconnects. |
2217 | */ | 2256 | */ |
2218 | pending_scb->flags |= SCB_RECOVERY_SCB|SCB_ABORT; | 2257 | pending_scb->flags |= SCB_RECOVERY_SCB|flag; |
2219 | ahd_set_scbptr(ahd, SCB_GET_TAG(pending_scb)); | 2258 | ahd_set_scbptr(ahd, SCB_GET_TAG(pending_scb)); |
2220 | pending_scb->hscb->cdb_len = 0; | 2259 | pending_scb->hscb->cdb_len = 0; |
2221 | pending_scb->hscb->task_attribute = 0; | 2260 | pending_scb->hscb->task_attribute = 0; |
@@ -2296,16 +2335,17 @@ done: | |||
2296 | timer.expires = jiffies + (5 * HZ); | 2335 | timer.expires = jiffies + (5 * HZ); |
2297 | timer.function = ahd_linux_sem_timeout; | 2336 | timer.function = ahd_linux_sem_timeout; |
2298 | add_timer(&timer); | 2337 | add_timer(&timer); |
2299 | printf("Recovery code sleeping\n"); | 2338 | printf("%s: Recovery code sleeping\n", ahd_name(ahd)); |
2300 | down(&ahd->platform_data->eh_sem); | 2339 | down(&ahd->platform_data->eh_sem); |
2301 | printf("Recovery code awake\n"); | 2340 | printf("%s: Recovery code awake\n", ahd_name(ahd)); |
2302 | ret = del_timer_sync(&timer); | 2341 | ret = del_timer_sync(&timer); |
2303 | if (ret == 0) { | 2342 | if (ret == 0) { |
2304 | printf("Timer Expired\n"); | 2343 | printf("%s: Timer Expired (active %d)\n", |
2344 | ahd_name(ahd), dev->active); | ||
2305 | retval = FAILED; | 2345 | retval = FAILED; |
2306 | } | 2346 | } |
2307 | } | 2347 | } |
2308 | ahd_unlock(ahd, &flags); | 2348 | ahd_unlock(ahd, &flags); |
2309 | return (retval); | 2349 | return (retval); |
2310 | } | 2350 | } |
2311 | 2351 | ||
diff --git a/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped b/drivers/scsi/aic7xxx/aic79xx_reg.h_shipped index c01ac39090d9..8763b158856b 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#94 $ | 5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#119 $ |
6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $ | 6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#76 $ |
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 { |
@@ -83,17 +83,17 @@ ahd_reg_print_t ahd_hs_mailbox_print; | |||
83 | #endif | 83 | #endif |
84 | 84 | ||
85 | #if AIC_DEBUG_REGISTERS | 85 | #if AIC_DEBUG_REGISTERS |
86 | ahd_reg_print_t ahd_clrseqintstat_print; | 86 | ahd_reg_print_t ahd_seqintstat_print; |
87 | #else | 87 | #else |
88 | #define ahd_clrseqintstat_print(regvalue, cur_col, wrap) \ | 88 | #define ahd_seqintstat_print(regvalue, cur_col, wrap) \ |
89 | ahd_print_register(NULL, 0, "CLRSEQINTSTAT", 0x0c, regvalue, cur_col, wrap) | 89 | ahd_print_register(NULL, 0, "SEQINTSTAT", 0x0c, regvalue, cur_col, wrap) |
90 | #endif | 90 | #endif |
91 | 91 | ||
92 | #if AIC_DEBUG_REGISTERS | 92 | #if AIC_DEBUG_REGISTERS |
93 | ahd_reg_print_t ahd_seqintstat_print; | 93 | ahd_reg_print_t ahd_clrseqintstat_print; |
94 | #else | 94 | #else |
95 | #define ahd_seqintstat_print(regvalue, cur_col, wrap) \ | 95 | #define ahd_clrseqintstat_print(regvalue, cur_col, wrap) \ |
96 | ahd_print_register(NULL, 0, "SEQINTSTAT", 0x0c, regvalue, cur_col, wrap) | 96 | ahd_print_register(NULL, 0, "CLRSEQINTSTAT", 0x0c, regvalue, cur_col, wrap) |
97 | #endif | 97 | #endif |
98 | 98 | ||
99 | #if AIC_DEBUG_REGISTERS | 99 | #if AIC_DEBUG_REGISTERS |
@@ -412,17 +412,17 @@ ahd_reg_print_t ahd_sxfrctl0_print; | |||
412 | #endif | 412 | #endif |
413 | 413 | ||
414 | #if AIC_DEBUG_REGISTERS | 414 | #if AIC_DEBUG_REGISTERS |
415 | ahd_reg_print_t ahd_businitid_print; | 415 | ahd_reg_print_t ahd_dlcount_print; |
416 | #else | 416 | #else |
417 | #define ahd_businitid_print(regvalue, cur_col, wrap) \ | 417 | #define ahd_dlcount_print(regvalue, cur_col, wrap) \ |
418 | ahd_print_register(NULL, 0, "BUSINITID", 0x3c, regvalue, cur_col, wrap) | 418 | ahd_print_register(NULL, 0, "DLCOUNT", 0x3c, regvalue, cur_col, wrap) |
419 | #endif | 419 | #endif |
420 | 420 | ||
421 | #if AIC_DEBUG_REGISTERS | 421 | #if AIC_DEBUG_REGISTERS |
422 | ahd_reg_print_t ahd_dlcount_print; | 422 | ahd_reg_print_t ahd_businitid_print; |
423 | #else | 423 | #else |
424 | #define ahd_dlcount_print(regvalue, cur_col, wrap) \ | 424 | #define ahd_businitid_print(regvalue, cur_col, wrap) \ |
425 | ahd_print_register(NULL, 0, "DLCOUNT", 0x3c, regvalue, cur_col, wrap) | 425 | ahd_print_register(NULL, 0, "BUSINITID", 0x3c, regvalue, cur_col, wrap) |
426 | #endif | 426 | #endif |
427 | 427 | ||
428 | #if AIC_DEBUG_REGISTERS | 428 | #if AIC_DEBUG_REGISTERS |
@@ -517,13 +517,6 @@ ahd_reg_print_t ahd_selid_print; | |||
517 | #endif | 517 | #endif |
518 | 518 | ||
519 | #if AIC_DEBUG_REGISTERS | 519 | #if AIC_DEBUG_REGISTERS |
520 | ahd_reg_print_t ahd_sblkctl_print; | ||
521 | #else | ||
522 | #define ahd_sblkctl_print(regvalue, cur_col, wrap) \ | ||
523 | ahd_print_register(NULL, 0, "SBLKCTL", 0x4a, regvalue, cur_col, wrap) | ||
524 | #endif | ||
525 | |||
526 | #if AIC_DEBUG_REGISTERS | ||
527 | ahd_reg_print_t ahd_optionmode_print; | 520 | ahd_reg_print_t ahd_optionmode_print; |
528 | #else | 521 | #else |
529 | #define ahd_optionmode_print(regvalue, cur_col, wrap) \ | 522 | #define ahd_optionmode_print(regvalue, cur_col, wrap) \ |
@@ -531,10 +524,10 @@ ahd_reg_print_t ahd_optionmode_print; | |||
531 | #endif | 524 | #endif |
532 | 525 | ||
533 | #if AIC_DEBUG_REGISTERS | 526 | #if AIC_DEBUG_REGISTERS |
534 | ahd_reg_print_t ahd_sstat0_print; | 527 | ahd_reg_print_t ahd_sblkctl_print; |
535 | #else | 528 | #else |
536 | #define ahd_sstat0_print(regvalue, cur_col, wrap) \ | 529 | #define ahd_sblkctl_print(regvalue, cur_col, wrap) \ |
537 | ahd_print_register(NULL, 0, "SSTAT0", 0x4b, regvalue, cur_col, wrap) | 530 | ahd_print_register(NULL, 0, "SBLKCTL", 0x4a, regvalue, cur_col, wrap) |
538 | #endif | 531 | #endif |
539 | 532 | ||
540 | #if AIC_DEBUG_REGISTERS | 533 | #if AIC_DEBUG_REGISTERS |
@@ -545,6 +538,13 @@ ahd_reg_print_t ahd_clrsint0_print; | |||
545 | #endif | 538 | #endif |
546 | 539 | ||
547 | #if AIC_DEBUG_REGISTERS | 540 | #if AIC_DEBUG_REGISTERS |
541 | ahd_reg_print_t ahd_sstat0_print; | ||
542 | #else | ||
543 | #define ahd_sstat0_print(regvalue, cur_col, wrap) \ | ||
544 | ahd_print_register(NULL, 0, "SSTAT0", 0x4b, regvalue, cur_col, wrap) | ||
545 | #endif | ||
546 | |||
547 | #if AIC_DEBUG_REGISTERS | ||
548 | ahd_reg_print_t ahd_simode0_print; | 548 | ahd_reg_print_t ahd_simode0_print; |
549 | #else | 549 | #else |
550 | #define ahd_simode0_print(regvalue, cur_col, wrap) \ | 550 | #define ahd_simode0_print(regvalue, cur_col, wrap) \ |
@@ -573,17 +573,17 @@ ahd_reg_print_t ahd_sstat2_print; | |||
573 | #endif | 573 | #endif |
574 | 574 | ||
575 | #if AIC_DEBUG_REGISTERS | 575 | #if AIC_DEBUG_REGISTERS |
576 | ahd_reg_print_t ahd_clrsint2_print; | 576 | ahd_reg_print_t ahd_simode2_print; |
577 | #else | 577 | #else |
578 | #define ahd_clrsint2_print(regvalue, cur_col, wrap) \ | 578 | #define ahd_simode2_print(regvalue, cur_col, wrap) \ |
579 | ahd_print_register(NULL, 0, "CLRSINT2", 0x4d, regvalue, cur_col, wrap) | 579 | ahd_print_register(NULL, 0, "SIMODE2", 0x4d, regvalue, cur_col, wrap) |
580 | #endif | 580 | #endif |
581 | 581 | ||
582 | #if AIC_DEBUG_REGISTERS | 582 | #if AIC_DEBUG_REGISTERS |
583 | ahd_reg_print_t ahd_simode2_print; | 583 | ahd_reg_print_t ahd_clrsint2_print; |
584 | #else | 584 | #else |
585 | #define ahd_simode2_print(regvalue, cur_col, wrap) \ | 585 | #define ahd_clrsint2_print(regvalue, cur_col, wrap) \ |
586 | ahd_print_register(NULL, 0, "SIMODE2", 0x4d, regvalue, cur_col, wrap) | 586 | ahd_print_register(NULL, 0, "CLRSINT2", 0x4d, regvalue, cur_col, wrap) |
587 | #endif | 587 | #endif |
588 | 588 | ||
589 | #if AIC_DEBUG_REGISTERS | 589 | #if AIC_DEBUG_REGISTERS |
@@ -685,13 +685,6 @@ ahd_reg_print_t ahd_clrsint3_print; | |||
685 | #endif | 685 | #endif |
686 | 686 | ||
687 | #if AIC_DEBUG_REGISTERS | 687 | #if AIC_DEBUG_REGISTERS |
688 | ahd_reg_print_t ahd_lqomode0_print; | ||
689 | #else | ||
690 | #define ahd_lqomode0_print(regvalue, cur_col, wrap) \ | ||
691 | ahd_print_register(NULL, 0, "LQOMODE0", 0x54, regvalue, cur_col, wrap) | ||
692 | #endif | ||
693 | |||
694 | #if AIC_DEBUG_REGISTERS | ||
695 | ahd_reg_print_t ahd_lqostat0_print; | 688 | ahd_reg_print_t ahd_lqostat0_print; |
696 | #else | 689 | #else |
697 | #define ahd_lqostat0_print(regvalue, cur_col, wrap) \ | 690 | #define ahd_lqostat0_print(regvalue, cur_col, wrap) \ |
@@ -706,6 +699,20 @@ ahd_reg_print_t ahd_clrlqoint0_print; | |||
706 | #endif | 699 | #endif |
707 | 700 | ||
708 | #if AIC_DEBUG_REGISTERS | 701 | #if AIC_DEBUG_REGISTERS |
702 | ahd_reg_print_t ahd_lqomode0_print; | ||
703 | #else | ||
704 | #define ahd_lqomode0_print(regvalue, cur_col, wrap) \ | ||
705 | ahd_print_register(NULL, 0, "LQOMODE0", 0x54, regvalue, cur_col, wrap) | ||
706 | #endif | ||
707 | |||
708 | #if AIC_DEBUG_REGISTERS | ||
709 | ahd_reg_print_t ahd_lqomode1_print; | ||
710 | #else | ||
711 | #define ahd_lqomode1_print(regvalue, cur_col, wrap) \ | ||
712 | ahd_print_register(NULL, 0, "LQOMODE1", 0x55, regvalue, cur_col, wrap) | ||
713 | #endif | ||
714 | |||
715 | #if AIC_DEBUG_REGISTERS | ||
709 | ahd_reg_print_t ahd_lqostat1_print; | 716 | ahd_reg_print_t ahd_lqostat1_print; |
710 | #else | 717 | #else |
711 | #define ahd_lqostat1_print(regvalue, cur_col, wrap) \ | 718 | #define ahd_lqostat1_print(regvalue, cur_col, wrap) \ |
@@ -720,13 +727,6 @@ ahd_reg_print_t ahd_clrlqoint1_print; | |||
720 | #endif | 727 | #endif |
721 | 728 | ||
722 | #if AIC_DEBUG_REGISTERS | 729 | #if AIC_DEBUG_REGISTERS |
723 | ahd_reg_print_t ahd_lqomode1_print; | ||
724 | #else | ||
725 | #define ahd_lqomode1_print(regvalue, cur_col, wrap) \ | ||
726 | ahd_print_register(NULL, 0, "LQOMODE1", 0x55, regvalue, cur_col, wrap) | ||
727 | #endif | ||
728 | |||
729 | #if AIC_DEBUG_REGISTERS | ||
730 | ahd_reg_print_t ahd_lqostat2_print; | 730 | ahd_reg_print_t ahd_lqostat2_print; |
731 | #else | 731 | #else |
732 | #define ahd_lqostat2_print(regvalue, cur_col, wrap) \ | 732 | #define ahd_lqostat2_print(regvalue, cur_col, wrap) \ |
@@ -909,17 +909,17 @@ ahd_reg_print_t ahd_annexcol_print; | |||
909 | #endif | 909 | #endif |
910 | 910 | ||
911 | #if AIC_DEBUG_REGISTERS | 911 | #if AIC_DEBUG_REGISTERS |
912 | ahd_reg_print_t ahd_scschkn_print; | 912 | ahd_reg_print_t ahd_annexdat_print; |
913 | #else | 913 | #else |
914 | #define ahd_scschkn_print(regvalue, cur_col, wrap) \ | 914 | #define ahd_annexdat_print(regvalue, cur_col, wrap) \ |
915 | ahd_print_register(NULL, 0, "SCSCHKN", 0x66, regvalue, cur_col, wrap) | 915 | ahd_print_register(NULL, 0, "ANNEXDAT", 0x66, regvalue, cur_col, wrap) |
916 | #endif | 916 | #endif |
917 | 917 | ||
918 | #if AIC_DEBUG_REGISTERS | 918 | #if AIC_DEBUG_REGISTERS |
919 | ahd_reg_print_t ahd_annexdat_print; | 919 | ahd_reg_print_t ahd_scschkn_print; |
920 | #else | 920 | #else |
921 | #define ahd_annexdat_print(regvalue, cur_col, wrap) \ | 921 | #define ahd_scschkn_print(regvalue, cur_col, wrap) \ |
922 | ahd_print_register(NULL, 0, "ANNEXDAT", 0x66, regvalue, cur_col, wrap) | 922 | ahd_print_register(NULL, 0, "SCSCHKN", 0x66, regvalue, cur_col, wrap) |
923 | #endif | 923 | #endif |
924 | 924 | ||
925 | #if AIC_DEBUG_REGISTERS | 925 | #if AIC_DEBUG_REGISTERS |
@@ -1000,17 +1000,17 @@ ahd_reg_print_t ahd_pll400ctl1_print; | |||
1000 | #endif | 1000 | #endif |
1001 | 1001 | ||
1002 | #if AIC_DEBUG_REGISTERS | 1002 | #if AIC_DEBUG_REGISTERS |
1003 | ahd_reg_print_t ahd_pll400cnt0_print; | 1003 | ahd_reg_print_t ahd_unfairness_print; |
1004 | #else | 1004 | #else |
1005 | #define ahd_pll400cnt0_print(regvalue, cur_col, wrap) \ | 1005 | #define ahd_unfairness_print(regvalue, cur_col, wrap) \ |
1006 | ahd_print_register(NULL, 0, "PLL400CNT0", 0x6e, regvalue, cur_col, wrap) | 1006 | ahd_print_register(NULL, 0, "UNFAIRNESS", 0x6e, regvalue, cur_col, wrap) |
1007 | #endif | 1007 | #endif |
1008 | 1008 | ||
1009 | #if AIC_DEBUG_REGISTERS | 1009 | #if AIC_DEBUG_REGISTERS |
1010 | ahd_reg_print_t ahd_unfairness_print; | 1010 | ahd_reg_print_t ahd_pll400cnt0_print; |
1011 | #else | 1011 | #else |
1012 | #define ahd_unfairness_print(regvalue, cur_col, wrap) \ | 1012 | #define ahd_pll400cnt0_print(regvalue, cur_col, wrap) \ |
1013 | ahd_print_register(NULL, 0, "UNFAIRNESS", 0x6e, regvalue, cur_col, wrap) | 1013 | ahd_print_register(NULL, 0, "PLL400CNT0", 0x6e, regvalue, cur_col, wrap) |
1014 | #endif | 1014 | #endif |
1015 | 1015 | ||
1016 | #if AIC_DEBUG_REGISTERS | 1016 | #if AIC_DEBUG_REGISTERS |
@@ -1056,13 +1056,6 @@ ahd_reg_print_t ahd_hodmaen_print; | |||
1056 | #endif | 1056 | #endif |
1057 | 1057 | ||
1058 | #if AIC_DEBUG_REGISTERS | 1058 | #if AIC_DEBUG_REGISTERS |
1059 | ahd_reg_print_t ahd_sghaddr_print; | ||
1060 | #else | ||
1061 | #define ahd_sghaddr_print(regvalue, cur_col, wrap) \ | ||
1062 | ahd_print_register(NULL, 0, "SGHADDR", 0x7c, regvalue, cur_col, wrap) | ||
1063 | #endif | ||
1064 | |||
1065 | #if AIC_DEBUG_REGISTERS | ||
1066 | ahd_reg_print_t ahd_scbhaddr_print; | 1059 | ahd_reg_print_t ahd_scbhaddr_print; |
1067 | #else | 1060 | #else |
1068 | #define ahd_scbhaddr_print(regvalue, cur_col, wrap) \ | 1061 | #define ahd_scbhaddr_print(regvalue, cur_col, wrap) \ |
@@ -1070,10 +1063,10 @@ ahd_reg_print_t ahd_scbhaddr_print; | |||
1070 | #endif | 1063 | #endif |
1071 | 1064 | ||
1072 | #if AIC_DEBUG_REGISTERS | 1065 | #if AIC_DEBUG_REGISTERS |
1073 | ahd_reg_print_t ahd_sghcnt_print; | 1066 | ahd_reg_print_t ahd_sghaddr_print; |
1074 | #else | 1067 | #else |
1075 | #define ahd_sghcnt_print(regvalue, cur_col, wrap) \ | 1068 | #define ahd_sghaddr_print(regvalue, cur_col, wrap) \ |
1076 | ahd_print_register(NULL, 0, "SGHCNT", 0x84, regvalue, cur_col, wrap) | 1069 | ahd_print_register(NULL, 0, "SGHADDR", 0x7c, regvalue, cur_col, wrap) |
1077 | #endif | 1070 | #endif |
1078 | 1071 | ||
1079 | #if AIC_DEBUG_REGISTERS | 1072 | #if AIC_DEBUG_REGISTERS |
@@ -1084,6 +1077,13 @@ ahd_reg_print_t ahd_scbhcnt_print; | |||
1084 | #endif | 1077 | #endif |
1085 | 1078 | ||
1086 | #if AIC_DEBUG_REGISTERS | 1079 | #if AIC_DEBUG_REGISTERS |
1080 | ahd_reg_print_t ahd_sghcnt_print; | ||
1081 | #else | ||
1082 | #define ahd_sghcnt_print(regvalue, cur_col, wrap) \ | ||
1083 | ahd_print_register(NULL, 0, "SGHCNT", 0x84, regvalue, cur_col, wrap) | ||
1084 | #endif | ||
1085 | |||
1086 | #if AIC_DEBUG_REGISTERS | ||
1087 | ahd_reg_print_t ahd_dff_thrsh_print; | 1087 | ahd_reg_print_t ahd_dff_thrsh_print; |
1088 | #else | 1088 | #else |
1089 | #define ahd_dff_thrsh_print(regvalue, cur_col, wrap) \ | 1089 | #define ahd_dff_thrsh_print(regvalue, cur_col, wrap) \ |
@@ -1154,13 +1154,6 @@ ahd_reg_print_t ahd_nsenable_print; | |||
1154 | #endif | 1154 | #endif |
1155 | 1155 | ||
1156 | #if AIC_DEBUG_REGISTERS | 1156 | #if AIC_DEBUG_REGISTERS |
1157 | ahd_reg_print_t ahd_dchrxmsg1_print; | ||
1158 | #else | ||
1159 | #define ahd_dchrxmsg1_print(regvalue, cur_col, wrap) \ | ||
1160 | ahd_print_register(NULL, 0, "DCHRXMSG1", 0x91, regvalue, cur_col, wrap) | ||
1161 | #endif | ||
1162 | |||
1163 | #if AIC_DEBUG_REGISTERS | ||
1164 | ahd_reg_print_t ahd_cmcrxmsg1_print; | 1157 | ahd_reg_print_t ahd_cmcrxmsg1_print; |
1165 | #else | 1158 | #else |
1166 | #define ahd_cmcrxmsg1_print(regvalue, cur_col, wrap) \ | 1159 | #define ahd_cmcrxmsg1_print(regvalue, cur_col, wrap) \ |
@@ -1168,17 +1161,17 @@ ahd_reg_print_t ahd_cmcrxmsg1_print; | |||
1168 | #endif | 1161 | #endif |
1169 | 1162 | ||
1170 | #if AIC_DEBUG_REGISTERS | 1163 | #if AIC_DEBUG_REGISTERS |
1171 | ahd_reg_print_t ahd_dchrxmsg2_print; | 1164 | ahd_reg_print_t ahd_dchrxmsg1_print; |
1172 | #else | 1165 | #else |
1173 | #define ahd_dchrxmsg2_print(regvalue, cur_col, wrap) \ | 1166 | #define ahd_dchrxmsg1_print(regvalue, cur_col, wrap) \ |
1174 | ahd_print_register(NULL, 0, "DCHRXMSG2", 0x92, regvalue, cur_col, wrap) | 1167 | ahd_print_register(NULL, 0, "DCHRXMSG1", 0x91, regvalue, cur_col, wrap) |
1175 | #endif | 1168 | #endif |
1176 | 1169 | ||
1177 | #if AIC_DEBUG_REGISTERS | 1170 | #if AIC_DEBUG_REGISTERS |
1178 | ahd_reg_print_t ahd_ovlyrxmsg2_print; | 1171 | ahd_reg_print_t ahd_dchrxmsg2_print; |
1179 | #else | 1172 | #else |
1180 | #define ahd_ovlyrxmsg2_print(regvalue, cur_col, wrap) \ | 1173 | #define ahd_dchrxmsg2_print(regvalue, cur_col, wrap) \ |
1181 | ahd_print_register(NULL, 0, "OVLYRXMSG2", 0x92, regvalue, cur_col, wrap) | 1174 | ahd_print_register(NULL, 0, "DCHRXMSG2", 0x92, regvalue, cur_col, wrap) |
1182 | #endif | 1175 | #endif |
1183 | 1176 | ||
1184 | #if AIC_DEBUG_REGISTERS | 1177 | #if AIC_DEBUG_REGISTERS |
@@ -1196,6 +1189,13 @@ ahd_reg_print_t ahd_ost_print; | |||
1196 | #endif | 1189 | #endif |
1197 | 1190 | ||
1198 | #if AIC_DEBUG_REGISTERS | 1191 | #if AIC_DEBUG_REGISTERS |
1192 | ahd_reg_print_t ahd_ovlyrxmsg2_print; | ||
1193 | #else | ||
1194 | #define ahd_ovlyrxmsg2_print(regvalue, cur_col, wrap) \ | ||
1195 | ahd_print_register(NULL, 0, "OVLYRXMSG2", 0x92, regvalue, cur_col, wrap) | ||
1196 | #endif | ||
1197 | |||
1198 | #if AIC_DEBUG_REGISTERS | ||
1199 | ahd_reg_print_t ahd_dchrxmsg3_print; | 1199 | ahd_reg_print_t ahd_dchrxmsg3_print; |
1200 | #else | 1200 | #else |
1201 | #define ahd_dchrxmsg3_print(regvalue, cur_col, wrap) \ | 1201 | #define ahd_dchrxmsg3_print(regvalue, cur_col, wrap) \ |
@@ -1203,6 +1203,13 @@ ahd_reg_print_t ahd_dchrxmsg3_print; | |||
1203 | #endif | 1203 | #endif |
1204 | 1204 | ||
1205 | #if AIC_DEBUG_REGISTERS | 1205 | #if AIC_DEBUG_REGISTERS |
1206 | ahd_reg_print_t ahd_ovlyrxmsg3_print; | ||
1207 | #else | ||
1208 | #define ahd_ovlyrxmsg3_print(regvalue, cur_col, wrap) \ | ||
1209 | ahd_print_register(NULL, 0, "OVLYRXMSG3", 0x93, regvalue, cur_col, wrap) | ||
1210 | #endif | ||
1211 | |||
1212 | #if AIC_DEBUG_REGISTERS | ||
1206 | ahd_reg_print_t ahd_cmcrxmsg3_print; | 1213 | ahd_reg_print_t ahd_cmcrxmsg3_print; |
1207 | #else | 1214 | #else |
1208 | #define ahd_cmcrxmsg3_print(regvalue, cur_col, wrap) \ | 1215 | #define ahd_cmcrxmsg3_print(regvalue, cur_col, wrap) \ |
@@ -1217,13 +1224,6 @@ ahd_reg_print_t ahd_pcixctl_print; | |||
1217 | #endif | 1224 | #endif |
1218 | 1225 | ||
1219 | #if AIC_DEBUG_REGISTERS | 1226 | #if AIC_DEBUG_REGISTERS |
1220 | ahd_reg_print_t ahd_ovlyrxmsg3_print; | ||
1221 | #else | ||
1222 | #define ahd_ovlyrxmsg3_print(regvalue, cur_col, wrap) \ | ||
1223 | ahd_print_register(NULL, 0, "OVLYRXMSG3", 0x93, regvalue, cur_col, wrap) | ||
1224 | #endif | ||
1225 | |||
1226 | #if AIC_DEBUG_REGISTERS | ||
1227 | ahd_reg_print_t ahd_ovlyseqbcnt_print; | 1227 | ahd_reg_print_t ahd_ovlyseqbcnt_print; |
1228 | #else | 1228 | #else |
1229 | #define ahd_ovlyseqbcnt_print(regvalue, cur_col, wrap) \ | 1229 | #define ahd_ovlyseqbcnt_print(regvalue, cur_col, wrap) \ |
@@ -1231,13 +1231,6 @@ ahd_reg_print_t ahd_ovlyseqbcnt_print; | |||
1231 | #endif | 1231 | #endif |
1232 | 1232 | ||
1233 | #if AIC_DEBUG_REGISTERS | 1233 | #if AIC_DEBUG_REGISTERS |
1234 | ahd_reg_print_t ahd_cmcseqbcnt_print; | ||
1235 | #else | ||
1236 | #define ahd_cmcseqbcnt_print(regvalue, cur_col, wrap) \ | ||
1237 | ahd_print_register(NULL, 0, "CMCSEQBCNT", 0x94, regvalue, cur_col, wrap) | ||
1238 | #endif | ||
1239 | |||
1240 | #if AIC_DEBUG_REGISTERS | ||
1241 | ahd_reg_print_t ahd_dchseqbcnt_print; | 1234 | ahd_reg_print_t ahd_dchseqbcnt_print; |
1242 | #else | 1235 | #else |
1243 | #define ahd_dchseqbcnt_print(regvalue, cur_col, wrap) \ | 1236 | #define ahd_dchseqbcnt_print(regvalue, cur_col, wrap) \ |
@@ -1245,17 +1238,17 @@ ahd_reg_print_t ahd_dchseqbcnt_print; | |||
1245 | #endif | 1238 | #endif |
1246 | 1239 | ||
1247 | #if AIC_DEBUG_REGISTERS | 1240 | #if AIC_DEBUG_REGISTERS |
1248 | ahd_reg_print_t ahd_cmcspltstat0_print; | 1241 | ahd_reg_print_t ahd_cmcseqbcnt_print; |
1249 | #else | 1242 | #else |
1250 | #define ahd_cmcspltstat0_print(regvalue, cur_col, wrap) \ | 1243 | #define ahd_cmcseqbcnt_print(regvalue, cur_col, wrap) \ |
1251 | ahd_print_register(NULL, 0, "CMCSPLTSTAT0", 0x96, regvalue, cur_col, wrap) | 1244 | ahd_print_register(NULL, 0, "CMCSEQBCNT", 0x94, regvalue, cur_col, wrap) |
1252 | #endif | 1245 | #endif |
1253 | 1246 | ||
1254 | #if AIC_DEBUG_REGISTERS | 1247 | #if AIC_DEBUG_REGISTERS |
1255 | ahd_reg_print_t ahd_ovlyspltstat0_print; | 1248 | ahd_reg_print_t ahd_cmcspltstat0_print; |
1256 | #else | 1249 | #else |
1257 | #define ahd_ovlyspltstat0_print(regvalue, cur_col, wrap) \ | 1250 | #define ahd_cmcspltstat0_print(regvalue, cur_col, wrap) \ |
1258 | ahd_print_register(NULL, 0, "OVLYSPLTSTAT0", 0x96, regvalue, cur_col, wrap) | 1251 | ahd_print_register(NULL, 0, "CMCSPLTSTAT0", 0x96, regvalue, cur_col, wrap) |
1259 | #endif | 1252 | #endif |
1260 | 1253 | ||
1261 | #if AIC_DEBUG_REGISTERS | 1254 | #if AIC_DEBUG_REGISTERS |
@@ -1266,10 +1259,10 @@ ahd_reg_print_t ahd_dchspltstat0_print; | |||
1266 | #endif | 1259 | #endif |
1267 | 1260 | ||
1268 | #if AIC_DEBUG_REGISTERS | 1261 | #if AIC_DEBUG_REGISTERS |
1269 | ahd_reg_print_t ahd_dchspltstat1_print; | 1262 | ahd_reg_print_t ahd_ovlyspltstat0_print; |
1270 | #else | 1263 | #else |
1271 | #define ahd_dchspltstat1_print(regvalue, cur_col, wrap) \ | 1264 | #define ahd_ovlyspltstat0_print(regvalue, cur_col, wrap) \ |
1272 | ahd_print_register(NULL, 0, "DCHSPLTSTAT1", 0x97, regvalue, cur_col, wrap) | 1265 | ahd_print_register(NULL, 0, "OVLYSPLTSTAT0", 0x96, regvalue, cur_col, wrap) |
1273 | #endif | 1266 | #endif |
1274 | 1267 | ||
1275 | #if AIC_DEBUG_REGISTERS | 1268 | #if AIC_DEBUG_REGISTERS |
@@ -1287,6 +1280,13 @@ ahd_reg_print_t ahd_ovlyspltstat1_print; | |||
1287 | #endif | 1280 | #endif |
1288 | 1281 | ||
1289 | #if AIC_DEBUG_REGISTERS | 1282 | #if AIC_DEBUG_REGISTERS |
1283 | ahd_reg_print_t ahd_dchspltstat1_print; | ||
1284 | #else | ||
1285 | #define ahd_dchspltstat1_print(regvalue, cur_col, wrap) \ | ||
1286 | ahd_print_register(NULL, 0, "DCHSPLTSTAT1", 0x97, regvalue, cur_col, wrap) | ||
1287 | #endif | ||
1288 | |||
1289 | #if AIC_DEBUG_REGISTERS | ||
1290 | ahd_reg_print_t ahd_sgrxmsg0_print; | 1290 | ahd_reg_print_t ahd_sgrxmsg0_print; |
1291 | #else | 1291 | #else |
1292 | #define ahd_sgrxmsg0_print(regvalue, cur_col, wrap) \ | 1292 | #define ahd_sgrxmsg0_print(regvalue, cur_col, wrap) \ |
@@ -1378,17 +1378,17 @@ ahd_reg_print_t ahd_sgspltstat0_print; | |||
1378 | #endif | 1378 | #endif |
1379 | 1379 | ||
1380 | #if AIC_DEBUG_REGISTERS | 1380 | #if AIC_DEBUG_REGISTERS |
1381 | ahd_reg_print_t ahd_sfunct_print; | 1381 | ahd_reg_print_t ahd_sgspltstat1_print; |
1382 | #else | 1382 | #else |
1383 | #define ahd_sfunct_print(regvalue, cur_col, wrap) \ | 1383 | #define ahd_sgspltstat1_print(regvalue, cur_col, wrap) \ |
1384 | ahd_print_register(NULL, 0, "SFUNCT", 0x9f, regvalue, cur_col, wrap) | 1384 | ahd_print_register(NULL, 0, "SGSPLTSTAT1", 0x9f, regvalue, cur_col, wrap) |
1385 | #endif | 1385 | #endif |
1386 | 1386 | ||
1387 | #if AIC_DEBUG_REGISTERS | 1387 | #if AIC_DEBUG_REGISTERS |
1388 | ahd_reg_print_t ahd_sgspltstat1_print; | 1388 | ahd_reg_print_t ahd_sfunct_print; |
1389 | #else | 1389 | #else |
1390 | #define ahd_sgspltstat1_print(regvalue, cur_col, wrap) \ | 1390 | #define ahd_sfunct_print(regvalue, cur_col, wrap) \ |
1391 | ahd_print_register(NULL, 0, "SGSPLTSTAT1", 0x9f, regvalue, cur_col, wrap) | 1391 | ahd_print_register(NULL, 0, "SFUNCT", 0x9f, regvalue, cur_col, wrap) |
1392 | #endif | 1392 | #endif |
1393 | 1393 | ||
1394 | #if AIC_DEBUG_REGISTERS | 1394 | #if AIC_DEBUG_REGISTERS |
@@ -1504,17 +1504,17 @@ ahd_reg_print_t ahd_ccsgaddr_print; | |||
1504 | #endif | 1504 | #endif |
1505 | 1505 | ||
1506 | #if AIC_DEBUG_REGISTERS | 1506 | #if AIC_DEBUG_REGISTERS |
1507 | ahd_reg_print_t ahd_ccscbaddr_print; | 1507 | ahd_reg_print_t ahd_ccscbadr_bk_print; |
1508 | #else | 1508 | #else |
1509 | #define ahd_ccscbaddr_print(regvalue, cur_col, wrap) \ | 1509 | #define ahd_ccscbadr_bk_print(regvalue, cur_col, wrap) \ |
1510 | ahd_print_register(NULL, 0, "CCSCBADDR", 0xac, regvalue, cur_col, wrap) | 1510 | ahd_print_register(NULL, 0, "CCSCBADR_BK", 0xac, regvalue, cur_col, wrap) |
1511 | #endif | 1511 | #endif |
1512 | 1512 | ||
1513 | #if AIC_DEBUG_REGISTERS | 1513 | #if AIC_DEBUG_REGISTERS |
1514 | ahd_reg_print_t ahd_ccscbadr_bk_print; | 1514 | ahd_reg_print_t ahd_ccscbaddr_print; |
1515 | #else | 1515 | #else |
1516 | #define ahd_ccscbadr_bk_print(regvalue, cur_col, wrap) \ | 1516 | #define ahd_ccscbaddr_print(regvalue, cur_col, wrap) \ |
1517 | ahd_print_register(NULL, 0, "CCSCBADR_BK", 0xac, regvalue, cur_col, wrap) | 1517 | ahd_print_register(NULL, 0, "CCSCBADDR", 0xac, regvalue, cur_col, wrap) |
1518 | #endif | 1518 | #endif |
1519 | 1519 | ||
1520 | #if AIC_DEBUG_REGISTERS | 1520 | #if AIC_DEBUG_REGISTERS |
@@ -1525,17 +1525,17 @@ ahd_reg_print_t ahd_cmc_rambist_print; | |||
1525 | #endif | 1525 | #endif |
1526 | 1526 | ||
1527 | #if AIC_DEBUG_REGISTERS | 1527 | #if AIC_DEBUG_REGISTERS |
1528 | ahd_reg_print_t ahd_ccsgctl_print; | 1528 | ahd_reg_print_t ahd_ccscbctl_print; |
1529 | #else | 1529 | #else |
1530 | #define ahd_ccsgctl_print(regvalue, cur_col, wrap) \ | 1530 | #define ahd_ccscbctl_print(regvalue, cur_col, wrap) \ |
1531 | ahd_print_register(NULL, 0, "CCSGCTL", 0xad, regvalue, cur_col, wrap) | 1531 | ahd_print_register(NULL, 0, "CCSCBCTL", 0xad, regvalue, cur_col, wrap) |
1532 | #endif | 1532 | #endif |
1533 | 1533 | ||
1534 | #if AIC_DEBUG_REGISTERS | 1534 | #if AIC_DEBUG_REGISTERS |
1535 | ahd_reg_print_t ahd_ccscbctl_print; | 1535 | ahd_reg_print_t ahd_ccsgctl_print; |
1536 | #else | 1536 | #else |
1537 | #define ahd_ccscbctl_print(regvalue, cur_col, wrap) \ | 1537 | #define ahd_ccsgctl_print(regvalue, cur_col, wrap) \ |
1538 | ahd_print_register(NULL, 0, "CCSCBCTL", 0xad, regvalue, cur_col, wrap) | 1538 | ahd_print_register(NULL, 0, "CCSGCTL", 0xad, regvalue, cur_col, wrap) |
1539 | #endif | 1539 | #endif |
1540 | 1540 | ||
1541 | #if AIC_DEBUG_REGISTERS | 1541 | #if AIC_DEBUG_REGISTERS |
@@ -1707,13 +1707,6 @@ ahd_reg_print_t ahd_wrtbiascalc_print; | |||
1707 | #endif | 1707 | #endif |
1708 | 1708 | ||
1709 | #if AIC_DEBUG_REGISTERS | 1709 | #if AIC_DEBUG_REGISTERS |
1710 | ahd_reg_print_t ahd_dfptrs_print; | ||
1711 | #else | ||
1712 | #define ahd_dfptrs_print(regvalue, cur_col, wrap) \ | ||
1713 | ahd_print_register(NULL, 0, "DFPTRS", 0xc8, regvalue, cur_col, wrap) | ||
1714 | #endif | ||
1715 | |||
1716 | #if AIC_DEBUG_REGISTERS | ||
1717 | ahd_reg_print_t ahd_rcvrbiascalc_print; | 1710 | ahd_reg_print_t ahd_rcvrbiascalc_print; |
1718 | #else | 1711 | #else |
1719 | #define ahd_rcvrbiascalc_print(regvalue, cur_col, wrap) \ | 1712 | #define ahd_rcvrbiascalc_print(regvalue, cur_col, wrap) \ |
@@ -1721,10 +1714,10 @@ ahd_reg_print_t ahd_rcvrbiascalc_print; | |||
1721 | #endif | 1714 | #endif |
1722 | 1715 | ||
1723 | #if AIC_DEBUG_REGISTERS | 1716 | #if AIC_DEBUG_REGISTERS |
1724 | ahd_reg_print_t ahd_dfbkptr_print; | 1717 | ahd_reg_print_t ahd_dfptrs_print; |
1725 | #else | 1718 | #else |
1726 | #define ahd_dfbkptr_print(regvalue, cur_col, wrap) \ | 1719 | #define ahd_dfptrs_print(regvalue, cur_col, wrap) \ |
1727 | ahd_print_register(NULL, 0, "DFBKPTR", 0xc9, regvalue, cur_col, wrap) | 1720 | ahd_print_register(NULL, 0, "DFPTRS", 0xc8, regvalue, cur_col, wrap) |
1728 | #endif | 1721 | #endif |
1729 | 1722 | ||
1730 | #if AIC_DEBUG_REGISTERS | 1723 | #if AIC_DEBUG_REGISTERS |
@@ -1735,6 +1728,13 @@ ahd_reg_print_t ahd_skewcalc_print; | |||
1735 | #endif | 1728 | #endif |
1736 | 1729 | ||
1737 | #if AIC_DEBUG_REGISTERS | 1730 | #if AIC_DEBUG_REGISTERS |
1731 | ahd_reg_print_t ahd_dfbkptr_print; | ||
1732 | #else | ||
1733 | #define ahd_dfbkptr_print(regvalue, cur_col, wrap) \ | ||
1734 | ahd_print_register(NULL, 0, "DFBKPTR", 0xc9, regvalue, cur_col, wrap) | ||
1735 | #endif | ||
1736 | |||
1737 | #if AIC_DEBUG_REGISTERS | ||
1738 | ahd_reg_print_t ahd_dfdbctl_print; | 1738 | ahd_reg_print_t ahd_dfdbctl_print; |
1739 | #else | 1739 | #else |
1740 | #define ahd_dfdbctl_print(regvalue, cur_col, wrap) \ | 1740 | #define ahd_dfdbctl_print(regvalue, cur_col, wrap) \ |
@@ -1826,17 +1826,17 @@ ahd_reg_print_t ahd_dindex_print; | |||
1826 | #endif | 1826 | #endif |
1827 | 1827 | ||
1828 | #if AIC_DEBUG_REGISTERS | 1828 | #if AIC_DEBUG_REGISTERS |
1829 | ahd_reg_print_t ahd_brkaddr1_print; | 1829 | ahd_reg_print_t ahd_brkaddr0_print; |
1830 | #else | 1830 | #else |
1831 | #define ahd_brkaddr1_print(regvalue, cur_col, wrap) \ | 1831 | #define ahd_brkaddr0_print(regvalue, cur_col, wrap) \ |
1832 | ahd_print_register(NULL, 0, "BRKADDR1", 0xe6, regvalue, cur_col, wrap) | 1832 | ahd_print_register(NULL, 0, "BRKADDR0", 0xe6, regvalue, cur_col, wrap) |
1833 | #endif | 1833 | #endif |
1834 | 1834 | ||
1835 | #if AIC_DEBUG_REGISTERS | 1835 | #if AIC_DEBUG_REGISTERS |
1836 | ahd_reg_print_t ahd_brkaddr0_print; | 1836 | ahd_reg_print_t ahd_brkaddr1_print; |
1837 | #else | 1837 | #else |
1838 | #define ahd_brkaddr0_print(regvalue, cur_col, wrap) \ | 1838 | #define ahd_brkaddr1_print(regvalue, cur_col, wrap) \ |
1839 | ahd_print_register(NULL, 0, "BRKADDR0", 0xe6, regvalue, cur_col, wrap) | 1839 | ahd_print_register(NULL, 0, "BRKADDR1", 0xe6, regvalue, cur_col, wrap) |
1840 | #endif | 1840 | #endif |
1841 | 1841 | ||
1842 | #if AIC_DEBUG_REGISTERS | 1842 | #if AIC_DEBUG_REGISTERS |
@@ -1889,13 +1889,6 @@ ahd_reg_print_t ahd_stack_print; | |||
1889 | #endif | 1889 | #endif |
1890 | 1890 | ||
1891 | #if AIC_DEBUG_REGISTERS | 1891 | #if AIC_DEBUG_REGISTERS |
1892 | ahd_reg_print_t ahd_curaddr_print; | ||
1893 | #else | ||
1894 | #define ahd_curaddr_print(regvalue, cur_col, wrap) \ | ||
1895 | ahd_print_register(NULL, 0, "CURADDR", 0xf4, regvalue, cur_col, wrap) | ||
1896 | #endif | ||
1897 | |||
1898 | #if AIC_DEBUG_REGISTERS | ||
1899 | ahd_reg_print_t ahd_intvec1_addr_print; | 1892 | ahd_reg_print_t ahd_intvec1_addr_print; |
1900 | #else | 1893 | #else |
1901 | #define ahd_intvec1_addr_print(regvalue, cur_col, wrap) \ | 1894 | #define ahd_intvec1_addr_print(regvalue, cur_col, wrap) \ |
@@ -1903,10 +1896,10 @@ ahd_reg_print_t ahd_intvec1_addr_print; | |||
1903 | #endif | 1896 | #endif |
1904 | 1897 | ||
1905 | #if AIC_DEBUG_REGISTERS | 1898 | #if AIC_DEBUG_REGISTERS |
1906 | ahd_reg_print_t ahd_intvec2_addr_print; | 1899 | ahd_reg_print_t ahd_curaddr_print; |
1907 | #else | 1900 | #else |
1908 | #define ahd_intvec2_addr_print(regvalue, cur_col, wrap) \ | 1901 | #define ahd_curaddr_print(regvalue, cur_col, wrap) \ |
1909 | ahd_print_register(NULL, 0, "INTVEC2_ADDR", 0xf6, regvalue, cur_col, wrap) | 1902 | ahd_print_register(NULL, 0, "CURADDR", 0xf4, regvalue, cur_col, wrap) |
1910 | #endif | 1903 | #endif |
1911 | 1904 | ||
1912 | #if AIC_DEBUG_REGISTERS | 1905 | #if AIC_DEBUG_REGISTERS |
@@ -1917,6 +1910,13 @@ ahd_reg_print_t ahd_lastaddr_print; | |||
1917 | #endif | 1910 | #endif |
1918 | 1911 | ||
1919 | #if AIC_DEBUG_REGISTERS | 1912 | #if AIC_DEBUG_REGISTERS |
1913 | ahd_reg_print_t ahd_intvec2_addr_print; | ||
1914 | #else | ||
1915 | #define ahd_intvec2_addr_print(regvalue, cur_col, wrap) \ | ||
1916 | ahd_print_register(NULL, 0, "INTVEC2_ADDR", 0xf6, regvalue, cur_col, wrap) | ||
1917 | #endif | ||
1918 | |||
1919 | #if AIC_DEBUG_REGISTERS | ||
1920 | ahd_reg_print_t ahd_longjmp_addr_print; | 1920 | ahd_reg_print_t ahd_longjmp_addr_print; |
1921 | #else | 1921 | #else |
1922 | #define ahd_longjmp_addr_print(regvalue, cur_col, wrap) \ | 1922 | #define ahd_longjmp_addr_print(regvalue, cur_col, wrap) \ |
@@ -1994,192 +1994,213 @@ ahd_reg_print_t ahd_complete_dma_scb_head_print; | |||
1994 | #endif | 1994 | #endif |
1995 | 1995 | ||
1996 | #if AIC_DEBUG_REGISTERS | 1996 | #if AIC_DEBUG_REGISTERS |
1997 | ahd_reg_print_t ahd_complete_dma_scb_tail_print; | ||
1998 | #else | ||
1999 | #define ahd_complete_dma_scb_tail_print(regvalue, cur_col, wrap) \ | ||
2000 | ahd_print_register(NULL, 0, "COMPLETE_DMA_SCB_TAIL", 0x12e, regvalue, cur_col, wrap) | ||
2001 | #endif | ||
2002 | |||
2003 | #if AIC_DEBUG_REGISTERS | ||
2004 | ahd_reg_print_t ahd_complete_on_qfreeze_head_print; | ||
2005 | #else | ||
2006 | #define ahd_complete_on_qfreeze_head_print(regvalue, cur_col, wrap) \ | ||
2007 | ahd_print_register(NULL, 0, "COMPLETE_ON_QFREEZE_HEAD", 0x130, regvalue, cur_col, wrap) | ||
2008 | #endif | ||
2009 | |||
2010 | #if AIC_DEBUG_REGISTERS | ||
1997 | ahd_reg_print_t ahd_qfreeze_count_print; | 2011 | ahd_reg_print_t ahd_qfreeze_count_print; |
1998 | #else | 2012 | #else |
1999 | #define ahd_qfreeze_count_print(regvalue, cur_col, wrap) \ | 2013 | #define ahd_qfreeze_count_print(regvalue, cur_col, wrap) \ |
2000 | ahd_print_register(NULL, 0, "QFREEZE_COUNT", 0x12e, regvalue, cur_col, wrap) | 2014 | ahd_print_register(NULL, 0, "QFREEZE_COUNT", 0x132, regvalue, cur_col, wrap) |
2015 | #endif | ||
2016 | |||
2017 | #if AIC_DEBUG_REGISTERS | ||
2018 | ahd_reg_print_t ahd_kernel_qfreeze_count_print; | ||
2019 | #else | ||
2020 | #define ahd_kernel_qfreeze_count_print(regvalue, cur_col, wrap) \ | ||
2021 | ahd_print_register(NULL, 0, "KERNEL_QFREEZE_COUNT", 0x134, regvalue, cur_col, wrap) | ||
2001 | #endif | 2022 | #endif |
2002 | 2023 | ||
2003 | #if AIC_DEBUG_REGISTERS | 2024 | #if AIC_DEBUG_REGISTERS |
2004 | ahd_reg_print_t ahd_saved_mode_print; | 2025 | ahd_reg_print_t ahd_saved_mode_print; |
2005 | #else | 2026 | #else |
2006 | #define ahd_saved_mode_print(regvalue, cur_col, wrap) \ | 2027 | #define ahd_saved_mode_print(regvalue, cur_col, wrap) \ |
2007 | ahd_print_register(NULL, 0, "SAVED_MODE", 0x130, regvalue, cur_col, wrap) | 2028 | ahd_print_register(NULL, 0, "SAVED_MODE", 0x136, regvalue, cur_col, wrap) |
2008 | #endif | 2029 | #endif |
2009 | 2030 | ||
2010 | #if AIC_DEBUG_REGISTERS | 2031 | #if AIC_DEBUG_REGISTERS |
2011 | ahd_reg_print_t ahd_msg_out_print; | 2032 | ahd_reg_print_t ahd_msg_out_print; |
2012 | #else | 2033 | #else |
2013 | #define ahd_msg_out_print(regvalue, cur_col, wrap) \ | 2034 | #define ahd_msg_out_print(regvalue, cur_col, wrap) \ |
2014 | ahd_print_register(NULL, 0, "MSG_OUT", 0x131, regvalue, cur_col, wrap) | 2035 | ahd_print_register(NULL, 0, "MSG_OUT", 0x137, regvalue, cur_col, wrap) |
2015 | #endif | 2036 | #endif |
2016 | 2037 | ||
2017 | #if AIC_DEBUG_REGISTERS | 2038 | #if AIC_DEBUG_REGISTERS |
2018 | ahd_reg_print_t ahd_dmaparams_print; | 2039 | ahd_reg_print_t ahd_dmaparams_print; |
2019 | #else | 2040 | #else |
2020 | #define ahd_dmaparams_print(regvalue, cur_col, wrap) \ | 2041 | #define ahd_dmaparams_print(regvalue, cur_col, wrap) \ |
2021 | ahd_print_register(NULL, 0, "DMAPARAMS", 0x132, regvalue, cur_col, wrap) | 2042 | ahd_print_register(NULL, 0, "DMAPARAMS", 0x138, regvalue, cur_col, wrap) |
2022 | #endif | 2043 | #endif |
2023 | 2044 | ||
2024 | #if AIC_DEBUG_REGISTERS | 2045 | #if AIC_DEBUG_REGISTERS |
2025 | ahd_reg_print_t ahd_seq_flags_print; | 2046 | ahd_reg_print_t ahd_seq_flags_print; |
2026 | #else | 2047 | #else |
2027 | #define ahd_seq_flags_print(regvalue, cur_col, wrap) \ | 2048 | #define ahd_seq_flags_print(regvalue, cur_col, wrap) \ |
2028 | ahd_print_register(NULL, 0, "SEQ_FLAGS", 0x133, regvalue, cur_col, wrap) | 2049 | ahd_print_register(NULL, 0, "SEQ_FLAGS", 0x139, regvalue, cur_col, wrap) |
2029 | #endif | 2050 | #endif |
2030 | 2051 | ||
2031 | #if AIC_DEBUG_REGISTERS | 2052 | #if AIC_DEBUG_REGISTERS |
2032 | ahd_reg_print_t ahd_saved_scsiid_print; | 2053 | ahd_reg_print_t ahd_saved_scsiid_print; |
2033 | #else | 2054 | #else |
2034 | #define ahd_saved_scsiid_print(regvalue, cur_col, wrap) \ | 2055 | #define ahd_saved_scsiid_print(regvalue, cur_col, wrap) \ |
2035 | ahd_print_register(NULL, 0, "SAVED_SCSIID", 0x134, regvalue, cur_col, wrap) | 2056 | ahd_print_register(NULL, 0, "SAVED_SCSIID", 0x13a, regvalue, cur_col, wrap) |
2036 | #endif | 2057 | #endif |
2037 | 2058 | ||
2038 | #if AIC_DEBUG_REGISTERS | 2059 | #if AIC_DEBUG_REGISTERS |
2039 | ahd_reg_print_t ahd_saved_lun_print; | 2060 | ahd_reg_print_t ahd_saved_lun_print; |
2040 | #else | 2061 | #else |
2041 | #define ahd_saved_lun_print(regvalue, cur_col, wrap) \ | 2062 | #define ahd_saved_lun_print(regvalue, cur_col, wrap) \ |
2042 | ahd_print_register(NULL, 0, "SAVED_LUN", 0x135, regvalue, cur_col, wrap) | 2063 | ahd_print_register(NULL, 0, "SAVED_LUN", 0x13b, regvalue, cur_col, wrap) |
2043 | #endif | 2064 | #endif |
2044 | 2065 | ||
2045 | #if AIC_DEBUG_REGISTERS | 2066 | #if AIC_DEBUG_REGISTERS |
2046 | ahd_reg_print_t ahd_lastphase_print; | 2067 | ahd_reg_print_t ahd_lastphase_print; |
2047 | #else | 2068 | #else |
2048 | #define ahd_lastphase_print(regvalue, cur_col, wrap) \ | 2069 | #define ahd_lastphase_print(regvalue, cur_col, wrap) \ |
2049 | ahd_print_register(NULL, 0, "LASTPHASE", 0x136, regvalue, cur_col, wrap) | 2070 | ahd_print_register(NULL, 0, "LASTPHASE", 0x13c, regvalue, cur_col, wrap) |
2050 | #endif | 2071 | #endif |
2051 | 2072 | ||
2052 | #if AIC_DEBUG_REGISTERS | 2073 | #if AIC_DEBUG_REGISTERS |
2053 | ahd_reg_print_t ahd_qoutfifo_entry_valid_tag_print; | 2074 | ahd_reg_print_t ahd_qoutfifo_entry_valid_tag_print; |
2054 | #else | 2075 | #else |
2055 | #define ahd_qoutfifo_entry_valid_tag_print(regvalue, cur_col, wrap) \ | 2076 | #define ahd_qoutfifo_entry_valid_tag_print(regvalue, cur_col, wrap) \ |
2056 | ahd_print_register(NULL, 0, "QOUTFIFO_ENTRY_VALID_TAG", 0x137, regvalue, cur_col, wrap) | 2077 | ahd_print_register(NULL, 0, "QOUTFIFO_ENTRY_VALID_TAG", 0x13d, regvalue, cur_col, wrap) |
2057 | #endif | 2078 | #endif |
2058 | 2079 | ||
2059 | #if AIC_DEBUG_REGISTERS | 2080 | #if AIC_DEBUG_REGISTERS |
2060 | ahd_reg_print_t ahd_shared_data_addr_print; | 2081 | ahd_reg_print_t ahd_kernel_tqinpos_print; |
2061 | #else | 2082 | #else |
2062 | #define ahd_shared_data_addr_print(regvalue, cur_col, wrap) \ | 2083 | #define ahd_kernel_tqinpos_print(regvalue, cur_col, wrap) \ |
2063 | ahd_print_register(NULL, 0, "SHARED_DATA_ADDR", 0x138, regvalue, cur_col, wrap) | 2084 | ahd_print_register(NULL, 0, "KERNEL_TQINPOS", 0x13e, regvalue, cur_col, wrap) |
2064 | #endif | 2085 | #endif |
2065 | 2086 | ||
2066 | #if AIC_DEBUG_REGISTERS | 2087 | #if AIC_DEBUG_REGISTERS |
2067 | ahd_reg_print_t ahd_qoutfifo_next_addr_print; | 2088 | ahd_reg_print_t ahd_tqinpos_print; |
2068 | #else | 2089 | #else |
2069 | #define ahd_qoutfifo_next_addr_print(regvalue, cur_col, wrap) \ | 2090 | #define ahd_tqinpos_print(regvalue, cur_col, wrap) \ |
2070 | ahd_print_register(NULL, 0, "QOUTFIFO_NEXT_ADDR", 0x13c, regvalue, cur_col, wrap) | 2091 | ahd_print_register(NULL, 0, "TQINPOS", 0x13f, regvalue, cur_col, wrap) |
2071 | #endif | 2092 | #endif |
2072 | 2093 | ||
2073 | #if AIC_DEBUG_REGISTERS | 2094 | #if AIC_DEBUG_REGISTERS |
2074 | ahd_reg_print_t ahd_kernel_tqinpos_print; | 2095 | ahd_reg_print_t ahd_shared_data_addr_print; |
2075 | #else | 2096 | #else |
2076 | #define ahd_kernel_tqinpos_print(regvalue, cur_col, wrap) \ | 2097 | #define ahd_shared_data_addr_print(regvalue, cur_col, wrap) \ |
2077 | ahd_print_register(NULL, 0, "KERNEL_TQINPOS", 0x140, regvalue, cur_col, wrap) | 2098 | ahd_print_register(NULL, 0, "SHARED_DATA_ADDR", 0x140, regvalue, cur_col, wrap) |
2078 | #endif | 2099 | #endif |
2079 | 2100 | ||
2080 | #if AIC_DEBUG_REGISTERS | 2101 | #if AIC_DEBUG_REGISTERS |
2081 | ahd_reg_print_t ahd_tqinpos_print; | 2102 | ahd_reg_print_t ahd_qoutfifo_next_addr_print; |
2082 | #else | 2103 | #else |
2083 | #define ahd_tqinpos_print(regvalue, cur_col, wrap) \ | 2104 | #define ahd_qoutfifo_next_addr_print(regvalue, cur_col, wrap) \ |
2084 | ahd_print_register(NULL, 0, "TQINPOS", 0x141, regvalue, cur_col, wrap) | 2105 | ahd_print_register(NULL, 0, "QOUTFIFO_NEXT_ADDR", 0x144, regvalue, cur_col, wrap) |
2085 | #endif | 2106 | #endif |
2086 | 2107 | ||
2087 | #if AIC_DEBUG_REGISTERS | 2108 | #if AIC_DEBUG_REGISTERS |
2088 | ahd_reg_print_t ahd_arg_1_print; | 2109 | ahd_reg_print_t ahd_arg_1_print; |
2089 | #else | 2110 | #else |
2090 | #define ahd_arg_1_print(regvalue, cur_col, wrap) \ | 2111 | #define ahd_arg_1_print(regvalue, cur_col, wrap) \ |
2091 | ahd_print_register(NULL, 0, "ARG_1", 0x142, regvalue, cur_col, wrap) | 2112 | ahd_print_register(NULL, 0, "ARG_1", 0x148, regvalue, cur_col, wrap) |
2092 | #endif | 2113 | #endif |
2093 | 2114 | ||
2094 | #if AIC_DEBUG_REGISTERS | 2115 | #if AIC_DEBUG_REGISTERS |
2095 | ahd_reg_print_t ahd_arg_2_print; | 2116 | ahd_reg_print_t ahd_arg_2_print; |
2096 | #else | 2117 | #else |
2097 | #define ahd_arg_2_print(regvalue, cur_col, wrap) \ | 2118 | #define ahd_arg_2_print(regvalue, cur_col, wrap) \ |
2098 | ahd_print_register(NULL, 0, "ARG_2", 0x143, regvalue, cur_col, wrap) | 2119 | ahd_print_register(NULL, 0, "ARG_2", 0x149, regvalue, cur_col, wrap) |
2099 | #endif | 2120 | #endif |
2100 | 2121 | ||
2101 | #if AIC_DEBUG_REGISTERS | 2122 | #if AIC_DEBUG_REGISTERS |
2102 | ahd_reg_print_t ahd_last_msg_print; | 2123 | ahd_reg_print_t ahd_last_msg_print; |
2103 | #else | 2124 | #else |
2104 | #define ahd_last_msg_print(regvalue, cur_col, wrap) \ | 2125 | #define ahd_last_msg_print(regvalue, cur_col, wrap) \ |
2105 | ahd_print_register(NULL, 0, "LAST_MSG", 0x144, regvalue, cur_col, wrap) | 2126 | ahd_print_register(NULL, 0, "LAST_MSG", 0x14a, regvalue, cur_col, wrap) |
2106 | #endif | 2127 | #endif |
2107 | 2128 | ||
2108 | #if AIC_DEBUG_REGISTERS | 2129 | #if AIC_DEBUG_REGISTERS |
2109 | ahd_reg_print_t ahd_scsiseq_template_print; | 2130 | ahd_reg_print_t ahd_scsiseq_template_print; |
2110 | #else | 2131 | #else |
2111 | #define ahd_scsiseq_template_print(regvalue, cur_col, wrap) \ | 2132 | #define ahd_scsiseq_template_print(regvalue, cur_col, wrap) \ |
2112 | ahd_print_register(NULL, 0, "SCSISEQ_TEMPLATE", 0x145, regvalue, cur_col, wrap) | 2133 | ahd_print_register(NULL, 0, "SCSISEQ_TEMPLATE", 0x14b, regvalue, cur_col, wrap) |
2113 | #endif | 2134 | #endif |
2114 | 2135 | ||
2115 | #if AIC_DEBUG_REGISTERS | 2136 | #if AIC_DEBUG_REGISTERS |
2116 | ahd_reg_print_t ahd_initiator_tag_print; | 2137 | ahd_reg_print_t ahd_initiator_tag_print; |
2117 | #else | 2138 | #else |
2118 | #define ahd_initiator_tag_print(regvalue, cur_col, wrap) \ | 2139 | #define ahd_initiator_tag_print(regvalue, cur_col, wrap) \ |
2119 | ahd_print_register(NULL, 0, "INITIATOR_TAG", 0x146, regvalue, cur_col, wrap) | 2140 | ahd_print_register(NULL, 0, "INITIATOR_TAG", 0x14c, regvalue, cur_col, wrap) |
2120 | #endif | 2141 | #endif |
2121 | 2142 | ||
2122 | #if AIC_DEBUG_REGISTERS | 2143 | #if AIC_DEBUG_REGISTERS |
2123 | ahd_reg_print_t ahd_seq_flags2_print; | 2144 | ahd_reg_print_t ahd_seq_flags2_print; |
2124 | #else | 2145 | #else |
2125 | #define ahd_seq_flags2_print(regvalue, cur_col, wrap) \ | 2146 | #define ahd_seq_flags2_print(regvalue, cur_col, wrap) \ |
2126 | ahd_print_register(NULL, 0, "SEQ_FLAGS2", 0x147, regvalue, cur_col, wrap) | 2147 | ahd_print_register(NULL, 0, "SEQ_FLAGS2", 0x14d, regvalue, cur_col, wrap) |
2127 | #endif | 2148 | #endif |
2128 | 2149 | ||
2129 | #if AIC_DEBUG_REGISTERS | 2150 | #if AIC_DEBUG_REGISTERS |
2130 | ahd_reg_print_t ahd_allocfifo_scbptr_print; | 2151 | ahd_reg_print_t ahd_allocfifo_scbptr_print; |
2131 | #else | 2152 | #else |
2132 | #define ahd_allocfifo_scbptr_print(regvalue, cur_col, wrap) \ | 2153 | #define ahd_allocfifo_scbptr_print(regvalue, cur_col, wrap) \ |
2133 | ahd_print_register(NULL, 0, "ALLOCFIFO_SCBPTR", 0x148, regvalue, cur_col, wrap) | 2154 | ahd_print_register(NULL, 0, "ALLOCFIFO_SCBPTR", 0x14e, regvalue, cur_col, wrap) |
2134 | #endif | 2155 | #endif |
2135 | 2156 | ||
2136 | #if AIC_DEBUG_REGISTERS | 2157 | #if AIC_DEBUG_REGISTERS |
2137 | ahd_reg_print_t ahd_int_coalescing_timer_print; | 2158 | ahd_reg_print_t ahd_int_coalescing_timer_print; |
2138 | #else | 2159 | #else |
2139 | #define ahd_int_coalescing_timer_print(regvalue, cur_col, wrap) \ | 2160 | #define ahd_int_coalescing_timer_print(regvalue, cur_col, wrap) \ |
2140 | ahd_print_register(NULL, 0, "INT_COALESCING_TIMER", 0x14a, regvalue, cur_col, wrap) | 2161 | ahd_print_register(NULL, 0, "INT_COALESCING_TIMER", 0x150, regvalue, cur_col, wrap) |
2141 | #endif | 2162 | #endif |
2142 | 2163 | ||
2143 | #if AIC_DEBUG_REGISTERS | 2164 | #if AIC_DEBUG_REGISTERS |
2144 | ahd_reg_print_t ahd_int_coalescing_maxcmds_print; | 2165 | ahd_reg_print_t ahd_int_coalescing_maxcmds_print; |
2145 | #else | 2166 | #else |
2146 | #define ahd_int_coalescing_maxcmds_print(regvalue, cur_col, wrap) \ | 2167 | #define ahd_int_coalescing_maxcmds_print(regvalue, cur_col, wrap) \ |
2147 | ahd_print_register(NULL, 0, "INT_COALESCING_MAXCMDS", 0x14c, regvalue, cur_col, wrap) | 2168 | ahd_print_register(NULL, 0, "INT_COALESCING_MAXCMDS", 0x152, regvalue, cur_col, wrap) |
2148 | #endif | 2169 | #endif |
2149 | 2170 | ||
2150 | #if AIC_DEBUG_REGISTERS | 2171 | #if AIC_DEBUG_REGISTERS |
2151 | ahd_reg_print_t ahd_int_coalescing_mincmds_print; | 2172 | ahd_reg_print_t ahd_int_coalescing_mincmds_print; |
2152 | #else | 2173 | #else |
2153 | #define ahd_int_coalescing_mincmds_print(regvalue, cur_col, wrap) \ | 2174 | #define ahd_int_coalescing_mincmds_print(regvalue, cur_col, wrap) \ |
2154 | ahd_print_register(NULL, 0, "INT_COALESCING_MINCMDS", 0x14d, regvalue, cur_col, wrap) | 2175 | ahd_print_register(NULL, 0, "INT_COALESCING_MINCMDS", 0x153, regvalue, cur_col, wrap) |
2155 | #endif | 2176 | #endif |
2156 | 2177 | ||
2157 | #if AIC_DEBUG_REGISTERS | 2178 | #if AIC_DEBUG_REGISTERS |
2158 | ahd_reg_print_t ahd_cmds_pending_print; | 2179 | ahd_reg_print_t ahd_cmds_pending_print; |
2159 | #else | 2180 | #else |
2160 | #define ahd_cmds_pending_print(regvalue, cur_col, wrap) \ | 2181 | #define ahd_cmds_pending_print(regvalue, cur_col, wrap) \ |
2161 | ahd_print_register(NULL, 0, "CMDS_PENDING", 0x14e, regvalue, cur_col, wrap) | 2182 | ahd_print_register(NULL, 0, "CMDS_PENDING", 0x154, regvalue, cur_col, wrap) |
2162 | #endif | 2183 | #endif |
2163 | 2184 | ||
2164 | #if AIC_DEBUG_REGISTERS | 2185 | #if AIC_DEBUG_REGISTERS |
2165 | ahd_reg_print_t ahd_int_coalescing_cmdcount_print; | 2186 | ahd_reg_print_t ahd_int_coalescing_cmdcount_print; |
2166 | #else | 2187 | #else |
2167 | #define ahd_int_coalescing_cmdcount_print(regvalue, cur_col, wrap) \ | 2188 | #define ahd_int_coalescing_cmdcount_print(regvalue, cur_col, wrap) \ |
2168 | ahd_print_register(NULL, 0, "INT_COALESCING_CMDCOUNT", 0x150, regvalue, cur_col, wrap) | 2189 | ahd_print_register(NULL, 0, "INT_COALESCING_CMDCOUNT", 0x156, regvalue, cur_col, wrap) |
2169 | #endif | 2190 | #endif |
2170 | 2191 | ||
2171 | #if AIC_DEBUG_REGISTERS | 2192 | #if AIC_DEBUG_REGISTERS |
2172 | ahd_reg_print_t ahd_local_hs_mailbox_print; | 2193 | ahd_reg_print_t ahd_local_hs_mailbox_print; |
2173 | #else | 2194 | #else |
2174 | #define ahd_local_hs_mailbox_print(regvalue, cur_col, wrap) \ | 2195 | #define ahd_local_hs_mailbox_print(regvalue, cur_col, wrap) \ |
2175 | ahd_print_register(NULL, 0, "LOCAL_HS_MAILBOX", 0x151, regvalue, cur_col, wrap) | 2196 | ahd_print_register(NULL, 0, "LOCAL_HS_MAILBOX", 0x157, regvalue, cur_col, wrap) |
2176 | #endif | 2197 | #endif |
2177 | 2198 | ||
2178 | #if AIC_DEBUG_REGISTERS | 2199 | #if AIC_DEBUG_REGISTERS |
2179 | ahd_reg_print_t ahd_cmdsize_table_print; | 2200 | ahd_reg_print_t ahd_cmdsize_table_print; |
2180 | #else | 2201 | #else |
2181 | #define ahd_cmdsize_table_print(regvalue, cur_col, wrap) \ | 2202 | #define ahd_cmdsize_table_print(regvalue, cur_col, wrap) \ |
2182 | ahd_print_register(NULL, 0, "CMDSIZE_TABLE", 0x152, regvalue, cur_col, wrap) | 2203 | ahd_print_register(NULL, 0, "CMDSIZE_TABLE", 0x158, regvalue, cur_col, wrap) |
2183 | #endif | 2204 | #endif |
2184 | 2205 | ||
2185 | #if AIC_DEBUG_REGISTERS | 2206 | #if AIC_DEBUG_REGISTERS |
@@ -2434,13 +2455,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2434 | #define HOST_TQINPOS 0x80 | 2455 | #define HOST_TQINPOS 0x80 |
2435 | #define ENINT_COALESCE 0x40 | 2456 | #define ENINT_COALESCE 0x40 |
2436 | 2457 | ||
2437 | #define CLRSEQINTSTAT 0x0c | ||
2438 | #define CLRSEQ_SWTMRTO 0x10 | ||
2439 | #define CLRSEQ_SEQINT 0x08 | ||
2440 | #define CLRSEQ_SCSIINT 0x04 | ||
2441 | #define CLRSEQ_PCIINT 0x02 | ||
2442 | #define CLRSEQ_SPLTINT 0x01 | ||
2443 | |||
2444 | #define SEQINTSTAT 0x0c | 2458 | #define SEQINTSTAT 0x0c |
2445 | #define SEQ_SWTMRTO 0x10 | 2459 | #define SEQ_SWTMRTO 0x10 |
2446 | #define SEQ_SEQINT 0x08 | 2460 | #define SEQ_SEQINT 0x08 |
@@ -2448,6 +2462,13 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2448 | #define SEQ_PCIINT 0x02 | 2462 | #define SEQ_PCIINT 0x02 |
2449 | #define SEQ_SPLTINT 0x01 | 2463 | #define SEQ_SPLTINT 0x01 |
2450 | 2464 | ||
2465 | #define CLRSEQINTSTAT 0x0c | ||
2466 | #define CLRSEQ_SWTMRTO 0x10 | ||
2467 | #define CLRSEQ_SEQINT 0x08 | ||
2468 | #define CLRSEQ_SCSIINT 0x04 | ||
2469 | #define CLRSEQ_PCIINT 0x02 | ||
2470 | #define CLRSEQ_SPLTINT 0x01 | ||
2471 | |||
2451 | #define SWTIMER 0x0e | 2472 | #define SWTIMER 0x0e |
2452 | 2473 | ||
2453 | #define SNSCB_QOFF 0x10 | 2474 | #define SNSCB_QOFF 0x10 |
@@ -2623,10 +2644,10 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2623 | #define BIOSCANCELEN 0x10 | 2644 | #define BIOSCANCELEN 0x10 |
2624 | #define SPIOEN 0x08 | 2645 | #define SPIOEN 0x08 |
2625 | 2646 | ||
2626 | #define BUSINITID 0x3c | ||
2627 | |||
2628 | #define DLCOUNT 0x3c | 2647 | #define DLCOUNT 0x3c |
2629 | 2648 | ||
2649 | #define BUSINITID 0x3c | ||
2650 | |||
2630 | #define SXFRCTL1 0x3d | 2651 | #define SXFRCTL1 0x3d |
2631 | #define BITBUCKET 0x80 | 2652 | #define BITBUCKET 0x80 |
2632 | #define ENSACHK 0x40 | 2653 | #define ENSACHK 0x40 |
@@ -2693,13 +2714,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2693 | #define SELID_MASK 0xf0 | 2714 | #define SELID_MASK 0xf0 |
2694 | #define ONEBIT 0x08 | 2715 | #define ONEBIT 0x08 |
2695 | 2716 | ||
2696 | #define SBLKCTL 0x4a | ||
2697 | #define DIAGLEDEN 0x80 | ||
2698 | #define DIAGLEDON 0x40 | ||
2699 | #define ENAB40 0x08 | ||
2700 | #define ENAB20 0x04 | ||
2701 | #define SELWIDE 0x02 | ||
2702 | |||
2703 | #define OPTIONMODE 0x4a | 2717 | #define OPTIONMODE 0x4a |
2704 | #define OPTIONMODE_DEFAULTS 0x02 | 2718 | #define OPTIONMODE_DEFAULTS 0x02 |
2705 | #define BIOSCANCTL 0x80 | 2719 | #define BIOSCANCTL 0x80 |
@@ -2709,15 +2723,12 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2709 | #define ENDGFORMCHK 0x04 | 2723 | #define ENDGFORMCHK 0x04 |
2710 | #define AUTO_MSGOUT_DE 0x02 | 2724 | #define AUTO_MSGOUT_DE 0x02 |
2711 | 2725 | ||
2712 | #define SSTAT0 0x4b | 2726 | #define SBLKCTL 0x4a |
2713 | #define TARGET 0x80 | 2727 | #define DIAGLEDEN 0x80 |
2714 | #define SELDO 0x40 | 2728 | #define DIAGLEDON 0x40 |
2715 | #define SELDI 0x20 | 2729 | #define ENAB40 0x08 |
2716 | #define SELINGO 0x10 | 2730 | #define ENAB20 0x04 |
2717 | #define IOERR 0x08 | 2731 | #define SELWIDE 0x02 |
2718 | #define OVERRUN 0x04 | ||
2719 | #define SPIORDY 0x02 | ||
2720 | #define ARBDO 0x01 | ||
2721 | 2732 | ||
2722 | #define CLRSINT0 0x4b | 2733 | #define CLRSINT0 0x4b |
2723 | #define CLRSELDO 0x40 | 2734 | #define CLRSELDO 0x40 |
@@ -2728,6 +2739,16 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2728 | #define CLRSPIORDY 0x02 | 2739 | #define CLRSPIORDY 0x02 |
2729 | #define CLRARBDO 0x01 | 2740 | #define CLRARBDO 0x01 |
2730 | 2741 | ||
2742 | #define SSTAT0 0x4b | ||
2743 | #define TARGET 0x80 | ||
2744 | #define SELDO 0x40 | ||
2745 | #define SELDI 0x20 | ||
2746 | #define SELINGO 0x10 | ||
2747 | #define IOERR 0x08 | ||
2748 | #define OVERRUN 0x04 | ||
2749 | #define SPIORDY 0x02 | ||
2750 | #define ARBDO 0x01 | ||
2751 | |||
2731 | #define SIMODE0 0x4b | 2752 | #define SIMODE0 0x4b |
2732 | #define ENSELDO 0x40 | 2753 | #define ENSELDO 0x40 |
2733 | #define ENSELDI 0x20 | 2754 | #define ENSELDI 0x20 |
@@ -2768,17 +2789,17 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2768 | #define BUSFREE_DFF0 0x80 | 2789 | #define BUSFREE_DFF0 0x80 |
2769 | #define BUSFREE_LQO 0x40 | 2790 | #define BUSFREE_LQO 0x40 |
2770 | 2791 | ||
2792 | #define SIMODE2 0x4d | ||
2793 | #define ENWIDE_RES 0x04 | ||
2794 | #define ENSDONE 0x02 | ||
2795 | #define ENDMADONE 0x01 | ||
2796 | |||
2771 | #define CLRSINT2 0x4d | 2797 | #define CLRSINT2 0x4d |
2772 | #define CLRNONPACKREQ 0x20 | 2798 | #define CLRNONPACKREQ 0x20 |
2773 | #define CLRWIDE_RES 0x04 | 2799 | #define CLRWIDE_RES 0x04 |
2774 | #define CLRSDONE 0x02 | 2800 | #define CLRSDONE 0x02 |
2775 | #define CLRDMADONE 0x01 | 2801 | #define CLRDMADONE 0x01 |
2776 | 2802 | ||
2777 | #define SIMODE2 0x4d | ||
2778 | #define ENWIDE_RES 0x04 | ||
2779 | #define ENSDONE 0x02 | ||
2780 | #define ENDMADONE 0x01 | ||
2781 | |||
2782 | #define PERRDIAG 0x4e | 2803 | #define PERRDIAG 0x4e |
2783 | #define HIZERO 0x80 | 2804 | #define HIZERO 0x80 |
2784 | #define HIPERR 0x40 | 2805 | #define HIPERR 0x40 |
@@ -2871,13 +2892,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2871 | #define CLRNTRAMPERR 0x02 | 2892 | #define CLRNTRAMPERR 0x02 |
2872 | #define CLROSRAMPERR 0x01 | 2893 | #define CLROSRAMPERR 0x01 |
2873 | 2894 | ||
2874 | #define LQOMODE0 0x54 | ||
2875 | #define ENLQOTARGSCBPERR 0x10 | ||
2876 | #define ENLQOSTOPT2 0x08 | ||
2877 | #define ENLQOATNLQ 0x04 | ||
2878 | #define ENLQOATNPKT 0x02 | ||
2879 | #define ENLQOTCRC 0x01 | ||
2880 | |||
2881 | #define LQOSTAT0 0x54 | 2895 | #define LQOSTAT0 0x54 |
2882 | #define LQOTARGSCBPERR 0x10 | 2896 | #define LQOTARGSCBPERR 0x10 |
2883 | #define LQOSTOPT2 0x08 | 2897 | #define LQOSTOPT2 0x08 |
@@ -2892,6 +2906,20 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2892 | #define CLRLQOATNPKT 0x02 | 2906 | #define CLRLQOATNPKT 0x02 |
2893 | #define CLRLQOTCRC 0x01 | 2907 | #define CLRLQOTCRC 0x01 |
2894 | 2908 | ||
2909 | #define LQOMODE0 0x54 | ||
2910 | #define ENLQOTARGSCBPERR 0x10 | ||
2911 | #define ENLQOSTOPT2 0x08 | ||
2912 | #define ENLQOATNLQ 0x04 | ||
2913 | #define ENLQOATNPKT 0x02 | ||
2914 | #define ENLQOTCRC 0x01 | ||
2915 | |||
2916 | #define LQOMODE1 0x55 | ||
2917 | #define ENLQOINITSCBPERR 0x10 | ||
2918 | #define ENLQOSTOPI2 0x08 | ||
2919 | #define ENLQOBADQAS 0x04 | ||
2920 | #define ENLQOBUSFREE 0x02 | ||
2921 | #define ENLQOPHACHGINPKT 0x01 | ||
2922 | |||
2895 | #define LQOSTAT1 0x55 | 2923 | #define LQOSTAT1 0x55 |
2896 | #define LQOINITSCBPERR 0x10 | 2924 | #define LQOINITSCBPERR 0x10 |
2897 | #define LQOSTOPI2 0x08 | 2925 | #define LQOSTOPI2 0x08 |
@@ -2906,13 +2934,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
2906 | #define CLRLQOBUSFREE 0x02 | 2934 | #define CLRLQOBUSFREE 0x02 |
2907 | #define CLRLQOPHACHGINPKT 0x01 | 2935 | #define CLRLQOPHACHGINPKT 0x01 |
2908 | 2936 | ||
2909 | #define LQOMODE1 0x55 | ||
2910 | #define ENLQOINITSCBPERR 0x10 | ||
2911 | #define ENLQOSTOPI2 0x08 | ||
2912 | #define ENLQOBADQAS 0x04 | ||
2913 | #define ENLQOBUSFREE 0x02 | ||
2914 | #define ENLQOPHACHGINPKT 0x01 | ||
2915 | |||
2916 | #define LQOSTAT2 0x56 | 2937 | #define LQOSTAT2 0x56 |
2917 | #define LQOPKT 0xe0 | 2938 | #define LQOPKT 0xe0 |
2918 | #define LQOWAITFIFO 0x10 | 2939 | #define LQOWAITFIFO 0x10 |
@@ -3028,6 +3049,8 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3028 | 3049 | ||
3029 | #define ANNEXCOL 0x65 | 3050 | #define ANNEXCOL 0x65 |
3030 | 3051 | ||
3052 | #define ANNEXDAT 0x66 | ||
3053 | |||
3031 | #define SCSCHKN 0x66 | 3054 | #define SCSCHKN 0x66 |
3032 | #define STSELSKIDDIS 0x40 | 3055 | #define STSELSKIDDIS 0x40 |
3033 | #define CURRFIFODEF 0x20 | 3056 | #define CURRFIFODEF 0x20 |
@@ -3037,8 +3060,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3037 | #define SHVALIDSTDIS 0x02 | 3060 | #define SHVALIDSTDIS 0x02 |
3038 | #define LSTSGCLRDIS 0x01 | 3061 | #define LSTSGCLRDIS 0x01 |
3039 | 3062 | ||
3040 | #define ANNEXDAT 0x66 | ||
3041 | |||
3042 | #define IOWNID 0x67 | 3063 | #define IOWNID 0x67 |
3043 | 3064 | ||
3044 | #define PLL960CTL0 0x68 | 3065 | #define PLL960CTL0 0x68 |
@@ -3071,10 +3092,10 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3071 | #define PLL_CNTCLR 0x40 | 3092 | #define PLL_CNTCLR 0x40 |
3072 | #define PLL_RST 0x01 | 3093 | #define PLL_RST 0x01 |
3073 | 3094 | ||
3074 | #define PLL400CNT0 0x6e | ||
3075 | |||
3076 | #define UNFAIRNESS 0x6e | 3095 | #define UNFAIRNESS 0x6e |
3077 | 3096 | ||
3097 | #define PLL400CNT0 0x6e | ||
3098 | |||
3078 | #define HADDR 0x70 | 3099 | #define HADDR 0x70 |
3079 | 3100 | ||
3080 | #define PLLDELAY 0x70 | 3101 | #define PLLDELAY 0x70 |
@@ -3088,14 +3109,14 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3088 | 3109 | ||
3089 | #define HODMAEN 0x7a | 3110 | #define HODMAEN 0x7a |
3090 | 3111 | ||
3091 | #define SGHADDR 0x7c | ||
3092 | |||
3093 | #define SCBHADDR 0x7c | 3112 | #define SCBHADDR 0x7c |
3094 | 3113 | ||
3095 | #define SGHCNT 0x84 | 3114 | #define SGHADDR 0x7c |
3096 | 3115 | ||
3097 | #define SCBHCNT 0x84 | 3116 | #define SCBHCNT 0x84 |
3098 | 3117 | ||
3118 | #define SGHCNT 0x84 | ||
3119 | |||
3099 | #define DFF_THRSH 0x88 | 3120 | #define DFF_THRSH 0x88 |
3100 | #define WR_DFTHRSH 0x70 | 3121 | #define WR_DFTHRSH 0x70 |
3101 | #define RD_DFTHRSH 0x07 | 3122 | #define RD_DFTHRSH 0x07 |
@@ -3113,8 +3134,8 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3113 | #define RD_DFTHRSH_63 0x03 | 3134 | #define RD_DFTHRSH_63 0x03 |
3114 | #define RD_DFTHRSH_50 0x02 | 3135 | #define RD_DFTHRSH_50 0x02 |
3115 | #define RD_DFTHRSH_25 0x01 | 3136 | #define RD_DFTHRSH_25 0x01 |
3116 | #define WR_DFTHRSH_MIN 0x00 | ||
3117 | #define RD_DFTHRSH_MIN 0x00 | 3137 | #define RD_DFTHRSH_MIN 0x00 |
3138 | #define WR_DFTHRSH_MIN 0x00 | ||
3118 | 3139 | ||
3119 | #define ROMADDR 0x8a | 3140 | #define ROMADDR 0x8a |
3120 | 3141 | ||
@@ -3150,20 +3171,22 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3150 | #define DCH1NSEN 0x02 | 3171 | #define DCH1NSEN 0x02 |
3151 | #define DCH0NSEN 0x01 | 3172 | #define DCH0NSEN 0x01 |
3152 | 3173 | ||
3153 | #define DCHRXMSG1 0x91 | ||
3154 | |||
3155 | #define CMCRXMSG1 0x91 | 3174 | #define CMCRXMSG1 0x91 |
3156 | 3175 | ||
3157 | #define DCHRXMSG2 0x92 | 3176 | #define DCHRXMSG1 0x91 |
3158 | 3177 | ||
3159 | #define OVLYRXMSG2 0x92 | 3178 | #define DCHRXMSG2 0x92 |
3160 | 3179 | ||
3161 | #define CMCRXMSG2 0x92 | 3180 | #define CMCRXMSG2 0x92 |
3162 | 3181 | ||
3163 | #define OST 0x92 | 3182 | #define OST 0x92 |
3164 | 3183 | ||
3184 | #define OVLYRXMSG2 0x92 | ||
3185 | |||
3165 | #define DCHRXMSG3 0x93 | 3186 | #define DCHRXMSG3 0x93 |
3166 | 3187 | ||
3188 | #define OVLYRXMSG3 0x93 | ||
3189 | |||
3167 | #define CMCRXMSG3 0x93 | 3190 | #define CMCRXMSG3 0x93 |
3168 | 3191 | ||
3169 | #define PCIXCTL 0x93 | 3192 | #define PCIXCTL 0x93 |
@@ -3175,26 +3198,24 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3175 | #define TSCSERREN 0x02 | 3198 | #define TSCSERREN 0x02 |
3176 | #define CMPABCDIS 0x01 | 3199 | #define CMPABCDIS 0x01 |
3177 | 3200 | ||
3178 | #define OVLYRXMSG3 0x93 | ||
3179 | |||
3180 | #define OVLYSEQBCNT 0x94 | 3201 | #define OVLYSEQBCNT 0x94 |
3181 | 3202 | ||
3182 | #define CMCSEQBCNT 0x94 | ||
3183 | |||
3184 | #define DCHSEQBCNT 0x94 | 3203 | #define DCHSEQBCNT 0x94 |
3185 | 3204 | ||
3186 | #define CMCSPLTSTAT0 0x96 | 3205 | #define CMCSEQBCNT 0x94 |
3187 | 3206 | ||
3188 | #define OVLYSPLTSTAT0 0x96 | 3207 | #define CMCSPLTSTAT0 0x96 |
3189 | 3208 | ||
3190 | #define DCHSPLTSTAT0 0x96 | 3209 | #define DCHSPLTSTAT0 0x96 |
3191 | 3210 | ||
3192 | #define DCHSPLTSTAT1 0x97 | 3211 | #define OVLYSPLTSTAT0 0x96 |
3193 | 3212 | ||
3194 | #define CMCSPLTSTAT1 0x97 | 3213 | #define CMCSPLTSTAT1 0x97 |
3195 | 3214 | ||
3196 | #define OVLYSPLTSTAT1 0x97 | 3215 | #define OVLYSPLTSTAT1 0x97 |
3197 | 3216 | ||
3217 | #define DCHSPLTSTAT1 0x97 | ||
3218 | |||
3198 | #define SGRXMSG0 0x98 | 3219 | #define SGRXMSG0 0x98 |
3199 | #define CDNUM 0xf8 | 3220 | #define CDNUM 0xf8 |
3200 | #define CFNUM 0x07 | 3221 | #define CFNUM 0x07 |
@@ -3244,13 +3265,13 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3244 | #define RXSCEMSG 0x02 | 3265 | #define RXSCEMSG 0x02 |
3245 | #define RXSPLTRSP 0x01 | 3266 | #define RXSPLTRSP 0x01 |
3246 | 3267 | ||
3268 | #define SGSPLTSTAT1 0x9f | ||
3269 | #define RXDATABUCKET 0x01 | ||
3270 | |||
3247 | #define SFUNCT 0x9f | 3271 | #define SFUNCT 0x9f |
3248 | #define TEST_GROUP 0xf0 | 3272 | #define TEST_GROUP 0xf0 |
3249 | #define TEST_NUM 0x0f | 3273 | #define TEST_NUM 0x0f |
3250 | 3274 | ||
3251 | #define SGSPLTSTAT1 0x9f | ||
3252 | #define RXDATABUCKET 0x01 | ||
3253 | |||
3254 | #define DF0PCISTAT 0xa0 | 3275 | #define DF0PCISTAT 0xa0 |
3255 | 3276 | ||
3256 | #define REG0 0xa0 | 3277 | #define REG0 0xa0 |
@@ -3299,10 +3320,10 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3299 | 3320 | ||
3300 | #define CCSGADDR 0xac | 3321 | #define CCSGADDR 0xac |
3301 | 3322 | ||
3302 | #define CCSCBADDR 0xac | ||
3303 | |||
3304 | #define CCSCBADR_BK 0xac | 3323 | #define CCSCBADR_BK 0xac |
3305 | 3324 | ||
3325 | #define CCSCBADDR 0xac | ||
3326 | |||
3306 | #define CMC_RAMBIST 0xad | 3327 | #define CMC_RAMBIST 0xad |
3307 | #define SG_ELEMENT_SIZE 0x80 | 3328 | #define SG_ELEMENT_SIZE 0x80 |
3308 | #define SCBRAMBIST_FAIL 0x40 | 3329 | #define SCBRAMBIST_FAIL 0x40 |
@@ -3311,14 +3332,6 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3311 | #define CMC_BUFFER_BIST_FAIL 0x02 | 3332 | #define CMC_BUFFER_BIST_FAIL 0x02 |
3312 | #define CMC_BUFFER_BIST_EN 0x01 | 3333 | #define CMC_BUFFER_BIST_EN 0x01 |
3313 | 3334 | ||
3314 | #define CCSGCTL 0xad | ||
3315 | #define CCSGEN 0x0c | ||
3316 | #define CCSGDONE 0x80 | ||
3317 | #define SG_CACHE_AVAIL 0x10 | ||
3318 | #define CCSGENACK 0x08 | ||
3319 | #define SG_FETCH_REQ 0x02 | ||
3320 | #define CCSGRESET 0x01 | ||
3321 | |||
3322 | #define CCSCBCTL 0xad | 3335 | #define CCSCBCTL 0xad |
3323 | #define CCSCBDONE 0x80 | 3336 | #define CCSCBDONE 0x80 |
3324 | #define ARRDONE 0x40 | 3337 | #define ARRDONE 0x40 |
@@ -3327,6 +3340,14 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3327 | #define CCSCBDIR 0x04 | 3340 | #define CCSCBDIR 0x04 |
3328 | #define CCSCBRESET 0x01 | 3341 | #define CCSCBRESET 0x01 |
3329 | 3342 | ||
3343 | #define CCSGCTL 0xad | ||
3344 | #define CCSGEN 0x0c | ||
3345 | #define CCSGDONE 0x80 | ||
3346 | #define SG_CACHE_AVAIL 0x10 | ||
3347 | #define CCSGENACK 0x08 | ||
3348 | #define SG_FETCH_REQ 0x02 | ||
3349 | #define CCSGRESET 0x01 | ||
3350 | |||
3330 | #define CCSGRAM 0xb0 | 3351 | #define CCSGRAM 0xb0 |
3331 | 3352 | ||
3332 | #define FLEXADR 0xb0 | 3353 | #define FLEXADR 0xb0 |
@@ -3356,8 +3377,8 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3356 | #define SEEDAT 0xbc | 3377 | #define SEEDAT 0xbc |
3357 | 3378 | ||
3358 | #define SEECTL 0xbe | 3379 | #define SEECTL 0xbe |
3359 | #define SEEOP_EWEN 0x40 | ||
3360 | #define SEEOP_WALL 0x40 | 3380 | #define SEEOP_WALL 0x40 |
3381 | #define SEEOP_EWEN 0x40 | ||
3361 | #define SEEOP_EWDS 0x40 | 3382 | #define SEEOP_EWDS 0x40 |
3362 | #define SEEOPCODE 0x70 | 3383 | #define SEEOPCODE 0x70 |
3363 | #define SEERST 0x02 | 3384 | #define SEERST 0x02 |
@@ -3414,14 +3435,14 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3414 | 3435 | ||
3415 | #define WRTBIASCALC 0xc7 | 3436 | #define WRTBIASCALC 0xc7 |
3416 | 3437 | ||
3417 | #define DFPTRS 0xc8 | ||
3418 | |||
3419 | #define RCVRBIASCALC 0xc8 | 3438 | #define RCVRBIASCALC 0xc8 |
3420 | 3439 | ||
3421 | #define DFBKPTR 0xc9 | 3440 | #define DFPTRS 0xc8 |
3422 | 3441 | ||
3423 | #define SKEWCALC 0xc9 | 3442 | #define SKEWCALC 0xc9 |
3424 | 3443 | ||
3444 | #define DFBKPTR 0xc9 | ||
3445 | |||
3425 | #define DFDBCTL 0xcb | 3446 | #define DFDBCTL 0xcb |
3426 | #define DFF_CIO_WR_RDY 0x20 | 3447 | #define DFF_CIO_WR_RDY 0x20 |
3427 | #define DFF_CIO_RD_RDY 0x10 | 3448 | #define DFF_CIO_RD_RDY 0x10 |
@@ -3475,11 +3496,11 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3475 | 3496 | ||
3476 | #define DINDEX 0xe4 | 3497 | #define DINDEX 0xe4 |
3477 | 3498 | ||
3499 | #define BRKADDR0 0xe6 | ||
3500 | |||
3478 | #define BRKADDR1 0xe6 | 3501 | #define BRKADDR1 0xe6 |
3479 | #define BRKDIS 0x80 | 3502 | #define BRKDIS 0x80 |
3480 | 3503 | ||
3481 | #define BRKADDR0 0xe6 | ||
3482 | |||
3483 | #define ALLONES 0xe8 | 3504 | #define ALLONES 0xe8 |
3484 | 3505 | ||
3485 | #define ALLZEROS 0xea | 3506 | #define ALLZEROS 0xea |
@@ -3494,14 +3515,14 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3494 | 3515 | ||
3495 | #define STACK 0xf2 | 3516 | #define STACK 0xf2 |
3496 | 3517 | ||
3497 | #define CURADDR 0xf4 | ||
3498 | |||
3499 | #define INTVEC1_ADDR 0xf4 | 3518 | #define INTVEC1_ADDR 0xf4 |
3500 | 3519 | ||
3501 | #define INTVEC2_ADDR 0xf6 | 3520 | #define CURADDR 0xf4 |
3502 | 3521 | ||
3503 | #define LASTADDR 0xf6 | 3522 | #define LASTADDR 0xf6 |
3504 | 3523 | ||
3524 | #define INTVEC2_ADDR 0xf6 | ||
3525 | |||
3505 | #define LONGJMP_ADDR 0xf8 | 3526 | #define LONGJMP_ADDR 0xf8 |
3506 | 3527 | ||
3507 | #define ACCUM_SAVE 0xfa | 3528 | #define ACCUM_SAVE 0xfa |
@@ -3524,25 +3545,31 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3524 | 3545 | ||
3525 | #define COMPLETE_DMA_SCB_HEAD 0x12c | 3546 | #define COMPLETE_DMA_SCB_HEAD 0x12c |
3526 | 3547 | ||
3527 | #define QFREEZE_COUNT 0x12e | 3548 | #define COMPLETE_DMA_SCB_TAIL 0x12e |
3549 | |||
3550 | #define COMPLETE_ON_QFREEZE_HEAD 0x130 | ||
3551 | |||
3552 | #define QFREEZE_COUNT 0x132 | ||
3528 | 3553 | ||
3529 | #define SAVED_MODE 0x130 | 3554 | #define KERNEL_QFREEZE_COUNT 0x134 |
3530 | 3555 | ||
3531 | #define MSG_OUT 0x131 | 3556 | #define SAVED_MODE 0x136 |
3532 | 3557 | ||
3533 | #define DMAPARAMS 0x132 | 3558 | #define MSG_OUT 0x137 |
3559 | |||
3560 | #define DMAPARAMS 0x138 | ||
3534 | #define PRELOADEN 0x80 | 3561 | #define PRELOADEN 0x80 |
3535 | #define WIDEODD 0x40 | 3562 | #define WIDEODD 0x40 |
3536 | #define SCSIEN 0x20 | 3563 | #define SCSIEN 0x20 |
3537 | #define SDMAEN 0x10 | 3564 | #define SDMAEN 0x10 |
3538 | #define SDMAENACK 0x10 | 3565 | #define SDMAENACK 0x10 |
3539 | #define HDMAENACK 0x08 | ||
3540 | #define HDMAEN 0x08 | 3566 | #define HDMAEN 0x08 |
3567 | #define HDMAENACK 0x08 | ||
3541 | #define DIRECTION 0x04 | 3568 | #define DIRECTION 0x04 |
3542 | #define FIFOFLUSH 0x02 | 3569 | #define FIFOFLUSH 0x02 |
3543 | #define FIFORESET 0x01 | 3570 | #define FIFORESET 0x01 |
3544 | 3571 | ||
3545 | #define SEQ_FLAGS 0x133 | 3572 | #define SEQ_FLAGS 0x139 |
3546 | #define NOT_IDENTIFIED 0x80 | 3573 | #define NOT_IDENTIFIED 0x80 |
3547 | #define NO_CDB_SENT 0x40 | 3574 | #define NO_CDB_SENT 0x40 |
3548 | #define TARGET_CMD_IS_TAGGED 0x40 | 3575 | #define TARGET_CMD_IS_TAGGED 0x40 |
@@ -3553,11 +3580,11 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3553 | #define SPHASE_PENDING 0x02 | 3580 | #define SPHASE_PENDING 0x02 |
3554 | #define NO_DISCONNECT 0x01 | 3581 | #define NO_DISCONNECT 0x01 |
3555 | 3582 | ||
3556 | #define SAVED_SCSIID 0x134 | 3583 | #define SAVED_SCSIID 0x13a |
3557 | 3584 | ||
3558 | #define SAVED_LUN 0x135 | 3585 | #define SAVED_LUN 0x13b |
3559 | 3586 | ||
3560 | #define LASTPHASE 0x136 | 3587 | #define LASTPHASE 0x13c |
3561 | #define PHASE_MASK 0xe0 | 3588 | #define PHASE_MASK 0xe0 |
3562 | #define CDI 0x80 | 3589 | #define CDI 0x80 |
3563 | #define IOI 0x40 | 3590 | #define IOI 0x40 |
@@ -3572,18 +3599,18 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3572 | #define P_DATAOUT_DT 0x20 | 3599 | #define P_DATAOUT_DT 0x20 |
3573 | #define P_DATAOUT 0x00 | 3600 | #define P_DATAOUT 0x00 |
3574 | 3601 | ||
3575 | #define QOUTFIFO_ENTRY_VALID_TAG 0x137 | 3602 | #define QOUTFIFO_ENTRY_VALID_TAG 0x13d |
3576 | 3603 | ||
3577 | #define SHARED_DATA_ADDR 0x138 | 3604 | #define KERNEL_TQINPOS 0x13e |
3578 | 3605 | ||
3579 | #define QOUTFIFO_NEXT_ADDR 0x13c | 3606 | #define TQINPOS 0x13f |
3580 | 3607 | ||
3581 | #define KERNEL_TQINPOS 0x140 | 3608 | #define SHARED_DATA_ADDR 0x140 |
3582 | 3609 | ||
3583 | #define TQINPOS 0x141 | 3610 | #define QOUTFIFO_NEXT_ADDR 0x144 |
3584 | 3611 | ||
3585 | #define ARG_1 0x142 | 3612 | #define ARG_1 0x148 |
3586 | #define RETURN_1 0x142 | 3613 | #define RETURN_1 0x148 |
3587 | #define SEND_MSG 0x80 | 3614 | #define SEND_MSG 0x80 |
3588 | #define SEND_SENSE 0x40 | 3615 | #define SEND_SENSE 0x40 |
3589 | #define SEND_REJ 0x20 | 3616 | #define SEND_REJ 0x20 |
@@ -3593,12 +3620,12 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3593 | #define CONT_MSG_LOOP_READ 0x03 | 3620 | #define CONT_MSG_LOOP_READ 0x03 |
3594 | #define CONT_MSG_LOOP_TARG 0x02 | 3621 | #define CONT_MSG_LOOP_TARG 0x02 |
3595 | 3622 | ||
3596 | #define ARG_2 0x143 | 3623 | #define ARG_2 0x149 |
3597 | #define RETURN_2 0x143 | 3624 | #define RETURN_2 0x149 |
3598 | 3625 | ||
3599 | #define LAST_MSG 0x144 | 3626 | #define LAST_MSG 0x14a |
3600 | 3627 | ||
3601 | #define SCSISEQ_TEMPLATE 0x145 | 3628 | #define SCSISEQ_TEMPLATE 0x14b |
3602 | #define MANUALCTL 0x40 | 3629 | #define MANUALCTL 0x40 |
3603 | #define ENSELI 0x20 | 3630 | #define ENSELI 0x20 |
3604 | #define ENRSELI 0x10 | 3631 | #define ENRSELI 0x10 |
@@ -3606,27 +3633,27 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3606 | #define ENAUTOATNP 0x02 | 3633 | #define ENAUTOATNP 0x02 |
3607 | #define ALTSTIM 0x01 | 3634 | #define ALTSTIM 0x01 |
3608 | 3635 | ||
3609 | #define INITIATOR_TAG 0x146 | 3636 | #define INITIATOR_TAG 0x14c |
3610 | 3637 | ||
3611 | #define SEQ_FLAGS2 0x147 | 3638 | #define SEQ_FLAGS2 0x14d |
3612 | #define SELECTOUT_QFROZEN 0x04 | 3639 | #define SELECTOUT_QFROZEN 0x04 |
3613 | #define TARGET_MSG_PENDING 0x02 | 3640 | #define TARGET_MSG_PENDING 0x02 |
3614 | 3641 | ||
3615 | #define ALLOCFIFO_SCBPTR 0x148 | 3642 | #define ALLOCFIFO_SCBPTR 0x14e |
3616 | 3643 | ||
3617 | #define INT_COALESCING_TIMER 0x14a | 3644 | #define INT_COALESCING_TIMER 0x150 |
3618 | 3645 | ||
3619 | #define INT_COALESCING_MAXCMDS 0x14c | 3646 | #define INT_COALESCING_MAXCMDS 0x152 |
3620 | 3647 | ||
3621 | #define INT_COALESCING_MINCMDS 0x14d | 3648 | #define INT_COALESCING_MINCMDS 0x153 |
3622 | 3649 | ||
3623 | #define CMDS_PENDING 0x14e | 3650 | #define CMDS_PENDING 0x154 |
3624 | 3651 | ||
3625 | #define INT_COALESCING_CMDCOUNT 0x150 | 3652 | #define INT_COALESCING_CMDCOUNT 0x156 |
3626 | 3653 | ||
3627 | #define LOCAL_HS_MAILBOX 0x151 | 3654 | #define LOCAL_HS_MAILBOX 0x157 |
3628 | 3655 | ||
3629 | #define CMDSIZE_TABLE 0x152 | 3656 | #define CMDSIZE_TABLE 0x158 |
3630 | 3657 | ||
3631 | #define SCB_BASE 0x180 | 3658 | #define SCB_BASE 0x180 |
3632 | 3659 | ||
@@ -3701,6 +3728,16 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3701 | #define SCB_DISCONNECTED_LISTS 0x1b8 | 3728 | #define SCB_DISCONNECTED_LISTS 0x1b8 |
3702 | 3729 | ||
3703 | 3730 | ||
3731 | #define AHD_TIMER_MAX_US 0x18ffe7 | ||
3732 | #define AHD_TIMER_MAX_TICKS 0xffff | ||
3733 | #define AHD_SENSE_BUFSIZE 0x100 | ||
3734 | #define BUS_8_BIT 0x00 | ||
3735 | #define TARGET_CMD_CMPLT 0xfe | ||
3736 | #define SEEOP_WRAL_ADDR 0x40 | ||
3737 | #define AHD_AMPLITUDE_DEF 0x07 | ||
3738 | #define AHD_PRECOMP_CUTBACK_37 0x07 | ||
3739 | #define AHD_PRECOMP_SHIFT 0x00 | ||
3740 | #define AHD_ANNEXCOL_PRECOMP_SLEW 0x04 | ||
3704 | #define AHD_TIMER_US_PER_TICK 0x19 | 3741 | #define AHD_TIMER_US_PER_TICK 0x19 |
3705 | #define SCB_TRANSFER_SIZE_FULL_LUN 0x38 | 3742 | #define SCB_TRANSFER_SIZE_FULL_LUN 0x38 |
3706 | #define STATUS_QUEUE_FULL 0x28 | 3743 | #define STATUS_QUEUE_FULL 0x28 |
@@ -3724,28 +3761,18 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3724 | #define B_CURRFIFO_0 0x02 | 3761 | #define B_CURRFIFO_0 0x02 |
3725 | #define LUNLEN_SINGLE_LEVEL_LUN 0x0f | 3762 | #define LUNLEN_SINGLE_LEVEL_LUN 0x0f |
3726 | #define NVRAM_SCB_OFFSET 0x2c | 3763 | #define NVRAM_SCB_OFFSET 0x2c |
3727 | #define AHD_TIMER_MAX_US 0x18ffe7 | ||
3728 | #define AHD_TIMER_MAX_TICKS 0xffff | ||
3729 | #define STATUS_PKT_SENSE 0xff | 3764 | #define STATUS_PKT_SENSE 0xff |
3730 | #define CMD_GROUP_CODE_SHIFT 0x05 | 3765 | #define CMD_GROUP_CODE_SHIFT 0x05 |
3731 | #define AHD_SENSE_BUFSIZE 0x100 | ||
3732 | #define MAX_OFFSET_PACED_BUG 0x7f | 3766 | #define MAX_OFFSET_PACED_BUG 0x7f |
3733 | #define BUS_8_BIT 0x00 | ||
3734 | #define STIMESEL_BUG_ADJ 0x08 | 3767 | #define STIMESEL_BUG_ADJ 0x08 |
3735 | #define STIMESEL_MIN 0x18 | 3768 | #define STIMESEL_MIN 0x18 |
3736 | #define STIMESEL_SHIFT 0x03 | 3769 | #define STIMESEL_SHIFT 0x03 |
3737 | #define CCSGRAM_MAXSEGS 0x10 | 3770 | #define CCSGRAM_MAXSEGS 0x10 |
3738 | #define INVALID_ADDR 0x80 | 3771 | #define INVALID_ADDR 0x80 |
3739 | #define TARGET_CMD_CMPLT 0xfe | ||
3740 | #define SEEOP_WRAL_ADDR 0x40 | ||
3741 | #define SEEOP_ERAL_ADDR 0x80 | 3772 | #define SEEOP_ERAL_ADDR 0x80 |
3742 | #define AHD_AMPLITUDE_DEF 0x07 | ||
3743 | #define AHD_SLEWRATE_DEF_REVB 0x08 | 3773 | #define AHD_SLEWRATE_DEF_REVB 0x08 |
3744 | #define AHD_PRECOMP_CUTBACK_37 0x07 | ||
3745 | #define AHD_PRECOMP_CUTBACK_17 0x04 | 3774 | #define AHD_PRECOMP_CUTBACK_17 0x04 |
3746 | #define AHD_PRECOMP_SHIFT 0x00 | ||
3747 | #define AHD_PRECOMP_MASK 0x07 | 3775 | #define AHD_PRECOMP_MASK 0x07 |
3748 | #define AHD_ANNEXCOL_PRECOMP_SLEW 0x04 | ||
3749 | #define SRC_MODE_SHIFT 0x00 | 3776 | #define SRC_MODE_SHIFT 0x00 |
3750 | #define PKT_OVERRUN_BUFSIZE 0x200 | 3777 | #define PKT_OVERRUN_BUFSIZE 0x200 |
3751 | #define SCB_TRANSFER_SIZE_1BYTE_LUN 0x30 | 3778 | #define SCB_TRANSFER_SIZE_1BYTE_LUN 0x30 |
@@ -3761,6 +3788,7 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3761 | 3788 | ||
3762 | 3789 | ||
3763 | /* Downloaded Constant Definitions */ | 3790 | /* Downloaded Constant Definitions */ |
3791 | #define CACHELINE_MASK 0x07 | ||
3764 | #define SCB_TRANSFER_SIZE 0x06 | 3792 | #define SCB_TRANSFER_SIZE 0x06 |
3765 | #define PKT_OVERRUN_BUFOFFSET 0x05 | 3793 | #define PKT_OVERRUN_BUFOFFSET 0x05 |
3766 | #define SG_SIZEOF 0x04 | 3794 | #define SG_SIZEOF 0x04 |
@@ -3768,9 +3796,9 @@ ahd_reg_print_t ahd_scb_disconnected_lists_print; | |||
3768 | #define SG_PREFETCH_ALIGN_MASK 0x02 | 3796 | #define SG_PREFETCH_ALIGN_MASK 0x02 |
3769 | #define SG_PREFETCH_CNT_LIMIT 0x01 | 3797 | #define SG_PREFETCH_CNT_LIMIT 0x01 |
3770 | #define SG_PREFETCH_CNT 0x00 | 3798 | #define SG_PREFETCH_CNT 0x00 |
3771 | #define DOWNLOAD_CONST_COUNT 0x07 | 3799 | #define DOWNLOAD_CONST_COUNT 0x08 |
3772 | 3800 | ||
3773 | 3801 | ||
3774 | /* Exported Labels */ | 3802 | /* Exported Labels */ |
3775 | #define LABEL_seq_isr 0x269 | 3803 | #define LABEL_seq_isr 0x285 |
3776 | #define LABEL_timer_isr 0x265 | 3804 | #define LABEL_timer_isr 0x281 |
diff --git a/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped b/drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped index 3098a757e3d7..a4137c985376 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#94 $ | 5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#118 $ |
6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $ | 6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#75 $ |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include "aic79xx_osm.h" | 9 | #include "aic79xx_osm.h" |
@@ -172,21 +172,6 @@ ahd_hs_mailbox_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
172 | 0x0b, regvalue, cur_col, wrap)); | 172 | 0x0b, regvalue, cur_col, wrap)); |
173 | } | 173 | } |
174 | 174 | ||
175 | static ahd_reg_parse_entry_t CLRSEQINTSTAT_parse_table[] = { | ||
176 | { "CLRSEQ_SPLTINT", 0x01, 0x01 }, | ||
177 | { "CLRSEQ_PCIINT", 0x02, 0x02 }, | ||
178 | { "CLRSEQ_SCSIINT", 0x04, 0x04 }, | ||
179 | { "CLRSEQ_SEQINT", 0x08, 0x08 }, | ||
180 | { "CLRSEQ_SWTMRTO", 0x10, 0x10 } | ||
181 | }; | ||
182 | |||
183 | int | ||
184 | ahd_clrseqintstat_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
185 | { | ||
186 | return (ahd_print_register(CLRSEQINTSTAT_parse_table, 5, "CLRSEQINTSTAT", | ||
187 | 0x0c, regvalue, cur_col, wrap)); | ||
188 | } | ||
189 | |||
190 | static ahd_reg_parse_entry_t SEQINTSTAT_parse_table[] = { | 175 | static ahd_reg_parse_entry_t SEQINTSTAT_parse_table[] = { |
191 | { "SEQ_SPLTINT", 0x01, 0x01 }, | 176 | { "SEQ_SPLTINT", 0x01, 0x01 }, |
192 | { "SEQ_PCIINT", 0x02, 0x02 }, | 177 | { "SEQ_PCIINT", 0x02, 0x02 }, |
@@ -202,6 +187,21 @@ ahd_seqintstat_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
202 | 0x0c, regvalue, cur_col, wrap)); | 187 | 0x0c, regvalue, cur_col, wrap)); |
203 | } | 188 | } |
204 | 189 | ||
190 | static ahd_reg_parse_entry_t CLRSEQINTSTAT_parse_table[] = { | ||
191 | { "CLRSEQ_SPLTINT", 0x01, 0x01 }, | ||
192 | { "CLRSEQ_PCIINT", 0x02, 0x02 }, | ||
193 | { "CLRSEQ_SCSIINT", 0x04, 0x04 }, | ||
194 | { "CLRSEQ_SEQINT", 0x08, 0x08 }, | ||
195 | { "CLRSEQ_SWTMRTO", 0x10, 0x10 } | ||
196 | }; | ||
197 | |||
198 | int | ||
199 | ahd_clrseqintstat_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
200 | { | ||
201 | return (ahd_print_register(CLRSEQINTSTAT_parse_table, 5, "CLRSEQINTSTAT", | ||
202 | 0x0c, regvalue, cur_col, wrap)); | ||
203 | } | ||
204 | |||
205 | int | 205 | int |
206 | ahd_swtimer_print(u_int regvalue, u_int *cur_col, u_int wrap) | 206 | ahd_swtimer_print(u_int regvalue, u_int *cur_col, u_int wrap) |
207 | { | 207 | { |
@@ -670,16 +670,16 @@ ahd_sxfrctl0_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
670 | } | 670 | } |
671 | 671 | ||
672 | int | 672 | int |
673 | ahd_businitid_print(u_int regvalue, u_int *cur_col, u_int wrap) | 673 | ahd_dlcount_print(u_int regvalue, u_int *cur_col, u_int wrap) |
674 | { | 674 | { |
675 | return (ahd_print_register(NULL, 0, "BUSINITID", | 675 | return (ahd_print_register(NULL, 0, "DLCOUNT", |
676 | 0x3c, regvalue, cur_col, wrap)); | 676 | 0x3c, regvalue, cur_col, wrap)); |
677 | } | 677 | } |
678 | 678 | ||
679 | int | 679 | int |
680 | ahd_dlcount_print(u_int regvalue, u_int *cur_col, u_int wrap) | 680 | ahd_businitid_print(u_int regvalue, u_int *cur_col, u_int wrap) |
681 | { | 681 | { |
682 | return (ahd_print_register(NULL, 0, "DLCOUNT", | 682 | return (ahd_print_register(NULL, 0, "BUSINITID", |
683 | 0x3c, regvalue, cur_col, wrap)); | 683 | 0x3c, regvalue, cur_col, wrap)); |
684 | } | 684 | } |
685 | 685 | ||
@@ -859,21 +859,6 @@ ahd_selid_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
859 | 0x49, regvalue, cur_col, wrap)); | 859 | 0x49, regvalue, cur_col, wrap)); |
860 | } | 860 | } |
861 | 861 | ||
862 | static ahd_reg_parse_entry_t SBLKCTL_parse_table[] = { | ||
863 | { "SELWIDE", 0x02, 0x02 }, | ||
864 | { "ENAB20", 0x04, 0x04 }, | ||
865 | { "ENAB40", 0x08, 0x08 }, | ||
866 | { "DIAGLEDON", 0x40, 0x40 }, | ||
867 | { "DIAGLEDEN", 0x80, 0x80 } | ||
868 | }; | ||
869 | |||
870 | int | ||
871 | ahd_sblkctl_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
872 | { | ||
873 | return (ahd_print_register(SBLKCTL_parse_table, 5, "SBLKCTL", | ||
874 | 0x4a, regvalue, cur_col, wrap)); | ||
875 | } | ||
876 | |||
877 | static ahd_reg_parse_entry_t OPTIONMODE_parse_table[] = { | 862 | static ahd_reg_parse_entry_t OPTIONMODE_parse_table[] = { |
878 | { "AUTO_MSGOUT_DE", 0x02, 0x02 }, | 863 | { "AUTO_MSGOUT_DE", 0x02, 0x02 }, |
879 | { "ENDGFORMCHK", 0x04, 0x04 }, | 864 | { "ENDGFORMCHK", 0x04, 0x04 }, |
@@ -891,22 +876,19 @@ ahd_optionmode_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
891 | 0x4a, regvalue, cur_col, wrap)); | 876 | 0x4a, regvalue, cur_col, wrap)); |
892 | } | 877 | } |
893 | 878 | ||
894 | static ahd_reg_parse_entry_t SSTAT0_parse_table[] = { | 879 | static ahd_reg_parse_entry_t SBLKCTL_parse_table[] = { |
895 | { "ARBDO", 0x01, 0x01 }, | 880 | { "SELWIDE", 0x02, 0x02 }, |
896 | { "SPIORDY", 0x02, 0x02 }, | 881 | { "ENAB20", 0x04, 0x04 }, |
897 | { "OVERRUN", 0x04, 0x04 }, | 882 | { "ENAB40", 0x08, 0x08 }, |
898 | { "IOERR", 0x08, 0x08 }, | 883 | { "DIAGLEDON", 0x40, 0x40 }, |
899 | { "SELINGO", 0x10, 0x10 }, | 884 | { "DIAGLEDEN", 0x80, 0x80 } |
900 | { "SELDI", 0x20, 0x20 }, | ||
901 | { "SELDO", 0x40, 0x40 }, | ||
902 | { "TARGET", 0x80, 0x80 } | ||
903 | }; | 885 | }; |
904 | 886 | ||
905 | int | 887 | int |
906 | ahd_sstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) | 888 | ahd_sblkctl_print(u_int regvalue, u_int *cur_col, u_int wrap) |
907 | { | 889 | { |
908 | return (ahd_print_register(SSTAT0_parse_table, 8, "SSTAT0", | 890 | return (ahd_print_register(SBLKCTL_parse_table, 5, "SBLKCTL", |
909 | 0x4b, regvalue, cur_col, wrap)); | 891 | 0x4a, regvalue, cur_col, wrap)); |
910 | } | 892 | } |
911 | 893 | ||
912 | static ahd_reg_parse_entry_t CLRSINT0_parse_table[] = { | 894 | static ahd_reg_parse_entry_t CLRSINT0_parse_table[] = { |
@@ -926,6 +908,24 @@ ahd_clrsint0_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
926 | 0x4b, regvalue, cur_col, wrap)); | 908 | 0x4b, regvalue, cur_col, wrap)); |
927 | } | 909 | } |
928 | 910 | ||
911 | static ahd_reg_parse_entry_t SSTAT0_parse_table[] = { | ||
912 | { "ARBDO", 0x01, 0x01 }, | ||
913 | { "SPIORDY", 0x02, 0x02 }, | ||
914 | { "OVERRUN", 0x04, 0x04 }, | ||
915 | { "IOERR", 0x08, 0x08 }, | ||
916 | { "SELINGO", 0x10, 0x10 }, | ||
917 | { "SELDI", 0x20, 0x20 }, | ||
918 | { "SELDO", 0x40, 0x40 }, | ||
919 | { "TARGET", 0x80, 0x80 } | ||
920 | }; | ||
921 | |||
922 | int | ||
923 | ahd_sstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
924 | { | ||
925 | return (ahd_print_register(SSTAT0_parse_table, 8, "SSTAT0", | ||
926 | 0x4b, regvalue, cur_col, wrap)); | ||
927 | } | ||
928 | |||
929 | static ahd_reg_parse_entry_t SIMODE0_parse_table[] = { | 929 | static ahd_reg_parse_entry_t SIMODE0_parse_table[] = { |
930 | { "ENARBDO", 0x01, 0x01 }, | 930 | { "ENARBDO", 0x01, 0x01 }, |
931 | { "ENSPIORDY", 0x02, 0x02 }, | 931 | { "ENSPIORDY", 0x02, 0x02 }, |
@@ -998,30 +998,30 @@ ahd_sstat2_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
998 | 0x4d, regvalue, cur_col, wrap)); | 998 | 0x4d, regvalue, cur_col, wrap)); |
999 | } | 999 | } |
1000 | 1000 | ||
1001 | static ahd_reg_parse_entry_t CLRSINT2_parse_table[] = { | 1001 | static ahd_reg_parse_entry_t SIMODE2_parse_table[] = { |
1002 | { "CLRDMADONE", 0x01, 0x01 }, | 1002 | { "ENDMADONE", 0x01, 0x01 }, |
1003 | { "CLRSDONE", 0x02, 0x02 }, | 1003 | { "ENSDONE", 0x02, 0x02 }, |
1004 | { "CLRWIDE_RES", 0x04, 0x04 }, | 1004 | { "ENWIDE_RES", 0x04, 0x04 } |
1005 | { "CLRNONPACKREQ", 0x20, 0x20 } | ||
1006 | }; | 1005 | }; |
1007 | 1006 | ||
1008 | int | 1007 | int |
1009 | ahd_clrsint2_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1008 | ahd_simode2_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1010 | { | 1009 | { |
1011 | return (ahd_print_register(CLRSINT2_parse_table, 4, "CLRSINT2", | 1010 | return (ahd_print_register(SIMODE2_parse_table, 3, "SIMODE2", |
1012 | 0x4d, regvalue, cur_col, wrap)); | 1011 | 0x4d, regvalue, cur_col, wrap)); |
1013 | } | 1012 | } |
1014 | 1013 | ||
1015 | static ahd_reg_parse_entry_t SIMODE2_parse_table[] = { | 1014 | static ahd_reg_parse_entry_t CLRSINT2_parse_table[] = { |
1016 | { "ENDMADONE", 0x01, 0x01 }, | 1015 | { "CLRDMADONE", 0x01, 0x01 }, |
1017 | { "ENSDONE", 0x02, 0x02 }, | 1016 | { "CLRSDONE", 0x02, 0x02 }, |
1018 | { "ENWIDE_RES", 0x04, 0x04 } | 1017 | { "CLRWIDE_RES", 0x04, 0x04 }, |
1018 | { "CLRNONPACKREQ", 0x20, 0x20 } | ||
1019 | }; | 1019 | }; |
1020 | 1020 | ||
1021 | int | 1021 | int |
1022 | ahd_simode2_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1022 | ahd_clrsint2_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1023 | { | 1023 | { |
1024 | return (ahd_print_register(SIMODE2_parse_table, 3, "SIMODE2", | 1024 | return (ahd_print_register(CLRSINT2_parse_table, 4, "CLRSINT2", |
1025 | 0x4d, regvalue, cur_col, wrap)); | 1025 | 0x4d, regvalue, cur_col, wrap)); |
1026 | } | 1026 | } |
1027 | 1027 | ||
@@ -1220,21 +1220,6 @@ ahd_clrsint3_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1220 | 0x53, regvalue, cur_col, wrap)); | 1220 | 0x53, regvalue, cur_col, wrap)); |
1221 | } | 1221 | } |
1222 | 1222 | ||
1223 | static ahd_reg_parse_entry_t LQOMODE0_parse_table[] = { | ||
1224 | { "ENLQOTCRC", 0x01, 0x01 }, | ||
1225 | { "ENLQOATNPKT", 0x02, 0x02 }, | ||
1226 | { "ENLQOATNLQ", 0x04, 0x04 }, | ||
1227 | { "ENLQOSTOPT2", 0x08, 0x08 }, | ||
1228 | { "ENLQOTARGSCBPERR", 0x10, 0x10 } | ||
1229 | }; | ||
1230 | |||
1231 | int | ||
1232 | ahd_lqomode0_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1233 | { | ||
1234 | return (ahd_print_register(LQOMODE0_parse_table, 5, "LQOMODE0", | ||
1235 | 0x54, regvalue, cur_col, wrap)); | ||
1236 | } | ||
1237 | |||
1238 | static ahd_reg_parse_entry_t LQOSTAT0_parse_table[] = { | 1223 | static ahd_reg_parse_entry_t LQOSTAT0_parse_table[] = { |
1239 | { "LQOTCRC", 0x01, 0x01 }, | 1224 | { "LQOTCRC", 0x01, 0x01 }, |
1240 | { "LQOATNPKT", 0x02, 0x02 }, | 1225 | { "LQOATNPKT", 0x02, 0x02 }, |
@@ -1265,6 +1250,36 @@ ahd_clrlqoint0_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1265 | 0x54, regvalue, cur_col, wrap)); | 1250 | 0x54, regvalue, cur_col, wrap)); |
1266 | } | 1251 | } |
1267 | 1252 | ||
1253 | static ahd_reg_parse_entry_t LQOMODE0_parse_table[] = { | ||
1254 | { "ENLQOTCRC", 0x01, 0x01 }, | ||
1255 | { "ENLQOATNPKT", 0x02, 0x02 }, | ||
1256 | { "ENLQOATNLQ", 0x04, 0x04 }, | ||
1257 | { "ENLQOSTOPT2", 0x08, 0x08 }, | ||
1258 | { "ENLQOTARGSCBPERR", 0x10, 0x10 } | ||
1259 | }; | ||
1260 | |||
1261 | int | ||
1262 | ahd_lqomode0_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1263 | { | ||
1264 | return (ahd_print_register(LQOMODE0_parse_table, 5, "LQOMODE0", | ||
1265 | 0x54, regvalue, cur_col, wrap)); | ||
1266 | } | ||
1267 | |||
1268 | static ahd_reg_parse_entry_t LQOMODE1_parse_table[] = { | ||
1269 | { "ENLQOPHACHGINPKT", 0x01, 0x01 }, | ||
1270 | { "ENLQOBUSFREE", 0x02, 0x02 }, | ||
1271 | { "ENLQOBADQAS", 0x04, 0x04 }, | ||
1272 | { "ENLQOSTOPI2", 0x08, 0x08 }, | ||
1273 | { "ENLQOINITSCBPERR", 0x10, 0x10 } | ||
1274 | }; | ||
1275 | |||
1276 | int | ||
1277 | ahd_lqomode1_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1278 | { | ||
1279 | return (ahd_print_register(LQOMODE1_parse_table, 5, "LQOMODE1", | ||
1280 | 0x55, regvalue, cur_col, wrap)); | ||
1281 | } | ||
1282 | |||
1268 | static ahd_reg_parse_entry_t LQOSTAT1_parse_table[] = { | 1283 | static ahd_reg_parse_entry_t LQOSTAT1_parse_table[] = { |
1269 | { "LQOPHACHGINPKT", 0x01, 0x01 }, | 1284 | { "LQOPHACHGINPKT", 0x01, 0x01 }, |
1270 | { "LQOBUSFREE", 0x02, 0x02 }, | 1285 | { "LQOBUSFREE", 0x02, 0x02 }, |
@@ -1295,21 +1310,6 @@ ahd_clrlqoint1_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1295 | 0x55, regvalue, cur_col, wrap)); | 1310 | 0x55, regvalue, cur_col, wrap)); |
1296 | } | 1311 | } |
1297 | 1312 | ||
1298 | static ahd_reg_parse_entry_t LQOMODE1_parse_table[] = { | ||
1299 | { "ENLQOPHACHGINPKT", 0x01, 0x01 }, | ||
1300 | { "ENLQOBUSFREE", 0x02, 0x02 }, | ||
1301 | { "ENLQOBADQAS", 0x04, 0x04 }, | ||
1302 | { "ENLQOSTOPI2", 0x08, 0x08 }, | ||
1303 | { "ENLQOINITSCBPERR", 0x10, 0x10 } | ||
1304 | }; | ||
1305 | |||
1306 | int | ||
1307 | ahd_lqomode1_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1308 | { | ||
1309 | return (ahd_print_register(LQOMODE1_parse_table, 5, "LQOMODE1", | ||
1310 | 0x55, regvalue, cur_col, wrap)); | ||
1311 | } | ||
1312 | |||
1313 | static ahd_reg_parse_entry_t LQOSTAT2_parse_table[] = { | 1313 | static ahd_reg_parse_entry_t LQOSTAT2_parse_table[] = { |
1314 | { "LQOSTOP0", 0x01, 0x01 }, | 1314 | { "LQOSTOP0", 0x01, 0x01 }, |
1315 | { "LQOPHACHGOUTPKT", 0x02, 0x02 }, | 1315 | { "LQOPHACHGOUTPKT", 0x02, 0x02 }, |
@@ -1594,6 +1594,13 @@ ahd_annexcol_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1594 | 0x65, regvalue, cur_col, wrap)); | 1594 | 0x65, regvalue, cur_col, wrap)); |
1595 | } | 1595 | } |
1596 | 1596 | ||
1597 | int | ||
1598 | ahd_annexdat_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1599 | { | ||
1600 | return (ahd_print_register(NULL, 0, "ANNEXDAT", | ||
1601 | 0x66, regvalue, cur_col, wrap)); | ||
1602 | } | ||
1603 | |||
1597 | static ahd_reg_parse_entry_t SCSCHKN_parse_table[] = { | 1604 | static ahd_reg_parse_entry_t SCSCHKN_parse_table[] = { |
1598 | { "LSTSGCLRDIS", 0x01, 0x01 }, | 1605 | { "LSTSGCLRDIS", 0x01, 0x01 }, |
1599 | { "SHVALIDSTDIS", 0x02, 0x02 }, | 1606 | { "SHVALIDSTDIS", 0x02, 0x02 }, |
@@ -1612,13 +1619,6 @@ ahd_scschkn_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1612 | } | 1619 | } |
1613 | 1620 | ||
1614 | int | 1621 | int |
1615 | ahd_annexdat_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1616 | { | ||
1617 | return (ahd_print_register(NULL, 0, "ANNEXDAT", | ||
1618 | 0x66, regvalue, cur_col, wrap)); | ||
1619 | } | ||
1620 | |||
1621 | int | ||
1622 | ahd_iownid_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1622 | ahd_iownid_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1623 | { | 1623 | { |
1624 | return (ahd_print_register(NULL, 0, "IOWNID", | 1624 | return (ahd_print_register(NULL, 0, "IOWNID", |
@@ -1728,16 +1728,16 @@ ahd_pll400ctl1_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1728 | } | 1728 | } |
1729 | 1729 | ||
1730 | int | 1730 | int |
1731 | ahd_pll400cnt0_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1731 | ahd_unfairness_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1732 | { | 1732 | { |
1733 | return (ahd_print_register(NULL, 0, "PLL400CNT0", | 1733 | return (ahd_print_register(NULL, 0, "UNFAIRNESS", |
1734 | 0x6e, regvalue, cur_col, wrap)); | 1734 | 0x6e, regvalue, cur_col, wrap)); |
1735 | } | 1735 | } |
1736 | 1736 | ||
1737 | int | 1737 | int |
1738 | ahd_unfairness_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1738 | ahd_pll400cnt0_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1739 | { | 1739 | { |
1740 | return (ahd_print_register(NULL, 0, "UNFAIRNESS", | 1740 | return (ahd_print_register(NULL, 0, "PLL400CNT0", |
1741 | 0x6e, regvalue, cur_col, wrap)); | 1741 | 0x6e, regvalue, cur_col, wrap)); |
1742 | } | 1742 | } |
1743 | 1743 | ||
@@ -1788,30 +1788,30 @@ ahd_hodmaen_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1788 | } | 1788 | } |
1789 | 1789 | ||
1790 | int | 1790 | int |
1791 | ahd_sghaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1791 | ahd_scbhaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1792 | { | 1792 | { |
1793 | return (ahd_print_register(NULL, 0, "SGHADDR", | 1793 | return (ahd_print_register(NULL, 0, "SCBHADDR", |
1794 | 0x7c, regvalue, cur_col, wrap)); | 1794 | 0x7c, regvalue, cur_col, wrap)); |
1795 | } | 1795 | } |
1796 | 1796 | ||
1797 | int | 1797 | int |
1798 | ahd_scbhaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1798 | ahd_sghaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1799 | { | 1799 | { |
1800 | return (ahd_print_register(NULL, 0, "SCBHADDR", | 1800 | return (ahd_print_register(NULL, 0, "SGHADDR", |
1801 | 0x7c, regvalue, cur_col, wrap)); | 1801 | 0x7c, regvalue, cur_col, wrap)); |
1802 | } | 1802 | } |
1803 | 1803 | ||
1804 | int | 1804 | int |
1805 | ahd_sghcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1805 | ahd_scbhcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1806 | { | 1806 | { |
1807 | return (ahd_print_register(NULL, 0, "SGHCNT", | 1807 | return (ahd_print_register(NULL, 0, "SCBHCNT", |
1808 | 0x84, regvalue, cur_col, wrap)); | 1808 | 0x84, regvalue, cur_col, wrap)); |
1809 | } | 1809 | } |
1810 | 1810 | ||
1811 | int | 1811 | int |
1812 | ahd_scbhcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1812 | ahd_sghcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1813 | { | 1813 | { |
1814 | return (ahd_print_register(NULL, 0, "SCBHCNT", | 1814 | return (ahd_print_register(NULL, 0, "SGHCNT", |
1815 | 0x84, regvalue, cur_col, wrap)); | 1815 | 0x84, regvalue, cur_col, wrap)); |
1816 | } | 1816 | } |
1817 | 1817 | ||
@@ -1950,25 +1950,25 @@ ahd_nsenable_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1950 | 0x91, regvalue, cur_col, wrap)); | 1950 | 0x91, regvalue, cur_col, wrap)); |
1951 | } | 1951 | } |
1952 | 1952 | ||
1953 | static ahd_reg_parse_entry_t DCHRXMSG1_parse_table[] = { | 1953 | static ahd_reg_parse_entry_t CMCRXMSG1_parse_table[] = { |
1954 | { "CBNUM", 0xff, 0xff } | 1954 | { "CBNUM", 0xff, 0xff } |
1955 | }; | 1955 | }; |
1956 | 1956 | ||
1957 | int | 1957 | int |
1958 | ahd_dchrxmsg1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1958 | ahd_cmcrxmsg1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1959 | { | 1959 | { |
1960 | return (ahd_print_register(DCHRXMSG1_parse_table, 1, "DCHRXMSG1", | 1960 | return (ahd_print_register(CMCRXMSG1_parse_table, 1, "CMCRXMSG1", |
1961 | 0x91, regvalue, cur_col, wrap)); | 1961 | 0x91, regvalue, cur_col, wrap)); |
1962 | } | 1962 | } |
1963 | 1963 | ||
1964 | static ahd_reg_parse_entry_t CMCRXMSG1_parse_table[] = { | 1964 | static ahd_reg_parse_entry_t DCHRXMSG1_parse_table[] = { |
1965 | { "CBNUM", 0xff, 0xff } | 1965 | { "CBNUM", 0xff, 0xff } |
1966 | }; | 1966 | }; |
1967 | 1967 | ||
1968 | int | 1968 | int |
1969 | ahd_cmcrxmsg1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 1969 | ahd_dchrxmsg1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
1970 | { | 1970 | { |
1971 | return (ahd_print_register(CMCRXMSG1_parse_table, 1, "CMCRXMSG1", | 1971 | return (ahd_print_register(DCHRXMSG1_parse_table, 1, "DCHRXMSG1", |
1972 | 0x91, regvalue, cur_col, wrap)); | 1972 | 0x91, regvalue, cur_col, wrap)); |
1973 | } | 1973 | } |
1974 | 1974 | ||
@@ -1983,17 +1983,6 @@ ahd_dchrxmsg2_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
1983 | 0x92, regvalue, cur_col, wrap)); | 1983 | 0x92, regvalue, cur_col, wrap)); |
1984 | } | 1984 | } |
1985 | 1985 | ||
1986 | static ahd_reg_parse_entry_t OVLYRXMSG2_parse_table[] = { | ||
1987 | { "MINDEX", 0xff, 0xff } | ||
1988 | }; | ||
1989 | |||
1990 | int | ||
1991 | ahd_ovlyrxmsg2_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
1992 | { | ||
1993 | return (ahd_print_register(OVLYRXMSG2_parse_table, 1, "OVLYRXMSG2", | ||
1994 | 0x92, regvalue, cur_col, wrap)); | ||
1995 | } | ||
1996 | |||
1997 | static ahd_reg_parse_entry_t CMCRXMSG2_parse_table[] = { | 1986 | static ahd_reg_parse_entry_t CMCRXMSG2_parse_table[] = { |
1998 | { "MINDEX", 0xff, 0xff } | 1987 | { "MINDEX", 0xff, 0xff } |
1999 | }; | 1988 | }; |
@@ -2012,6 +2001,17 @@ ahd_ost_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2012 | 0x92, regvalue, cur_col, wrap)); | 2001 | 0x92, regvalue, cur_col, wrap)); |
2013 | } | 2002 | } |
2014 | 2003 | ||
2004 | static ahd_reg_parse_entry_t OVLYRXMSG2_parse_table[] = { | ||
2005 | { "MINDEX", 0xff, 0xff } | ||
2006 | }; | ||
2007 | |||
2008 | int | ||
2009 | ahd_ovlyrxmsg2_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
2010 | { | ||
2011 | return (ahd_print_register(OVLYRXMSG2_parse_table, 1, "OVLYRXMSG2", | ||
2012 | 0x92, regvalue, cur_col, wrap)); | ||
2013 | } | ||
2014 | |||
2015 | static ahd_reg_parse_entry_t DCHRXMSG3_parse_table[] = { | 2015 | static ahd_reg_parse_entry_t DCHRXMSG3_parse_table[] = { |
2016 | { "MCLASS", 0x0f, 0x0f } | 2016 | { "MCLASS", 0x0f, 0x0f } |
2017 | }; | 2017 | }; |
@@ -2023,6 +2023,17 @@ ahd_dchrxmsg3_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2023 | 0x93, regvalue, cur_col, wrap)); | 2023 | 0x93, regvalue, cur_col, wrap)); |
2024 | } | 2024 | } |
2025 | 2025 | ||
2026 | static ahd_reg_parse_entry_t OVLYRXMSG3_parse_table[] = { | ||
2027 | { "MCLASS", 0x0f, 0x0f } | ||
2028 | }; | ||
2029 | |||
2030 | int | ||
2031 | ahd_ovlyrxmsg3_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
2032 | { | ||
2033 | return (ahd_print_register(OVLYRXMSG3_parse_table, 1, "OVLYRXMSG3", | ||
2034 | 0x93, regvalue, cur_col, wrap)); | ||
2035 | } | ||
2036 | |||
2026 | static ahd_reg_parse_entry_t CMCRXMSG3_parse_table[] = { | 2037 | static ahd_reg_parse_entry_t CMCRXMSG3_parse_table[] = { |
2027 | { "MCLASS", 0x0f, 0x0f } | 2038 | { "MCLASS", 0x0f, 0x0f } |
2028 | }; | 2039 | }; |
@@ -2051,17 +2062,6 @@ ahd_pcixctl_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2051 | 0x93, regvalue, cur_col, wrap)); | 2062 | 0x93, regvalue, cur_col, wrap)); |
2052 | } | 2063 | } |
2053 | 2064 | ||
2054 | static ahd_reg_parse_entry_t OVLYRXMSG3_parse_table[] = { | ||
2055 | { "MCLASS", 0x0f, 0x0f } | ||
2056 | }; | ||
2057 | |||
2058 | int | ||
2059 | ahd_ovlyrxmsg3_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
2060 | { | ||
2061 | return (ahd_print_register(OVLYRXMSG3_parse_table, 1, "OVLYRXMSG3", | ||
2062 | 0x93, regvalue, cur_col, wrap)); | ||
2063 | } | ||
2064 | |||
2065 | int | 2065 | int |
2066 | ahd_ovlyseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2066 | ahd_ovlyseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2067 | { | 2067 | { |
@@ -2070,16 +2070,16 @@ ahd_ovlyseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2070 | } | 2070 | } |
2071 | 2071 | ||
2072 | int | 2072 | int |
2073 | ahd_cmcseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2073 | ahd_dchseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2074 | { | 2074 | { |
2075 | return (ahd_print_register(NULL, 0, "CMCSEQBCNT", | 2075 | return (ahd_print_register(NULL, 0, "DCHSEQBCNT", |
2076 | 0x94, regvalue, cur_col, wrap)); | 2076 | 0x94, regvalue, cur_col, wrap)); |
2077 | } | 2077 | } |
2078 | 2078 | ||
2079 | int | 2079 | int |
2080 | ahd_dchseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2080 | ahd_cmcseqbcnt_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2081 | { | 2081 | { |
2082 | return (ahd_print_register(NULL, 0, "DCHSEQBCNT", | 2082 | return (ahd_print_register(NULL, 0, "CMCSEQBCNT", |
2083 | 0x94, regvalue, cur_col, wrap)); | 2083 | 0x94, regvalue, cur_col, wrap)); |
2084 | } | 2084 | } |
2085 | 2085 | ||
@@ -2101,7 +2101,7 @@ ahd_cmcspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2101 | 0x96, regvalue, cur_col, wrap)); | 2101 | 0x96, regvalue, cur_col, wrap)); |
2102 | } | 2102 | } |
2103 | 2103 | ||
2104 | static ahd_reg_parse_entry_t OVLYSPLTSTAT0_parse_table[] = { | 2104 | static ahd_reg_parse_entry_t DCHSPLTSTAT0_parse_table[] = { |
2105 | { "RXSPLTRSP", 0x01, 0x01 }, | 2105 | { "RXSPLTRSP", 0x01, 0x01 }, |
2106 | { "RXSCEMSG", 0x02, 0x02 }, | 2106 | { "RXSCEMSG", 0x02, 0x02 }, |
2107 | { "RXOVRUN", 0x04, 0x04 }, | 2107 | { "RXOVRUN", 0x04, 0x04 }, |
@@ -2113,13 +2113,13 @@ static ahd_reg_parse_entry_t OVLYSPLTSTAT0_parse_table[] = { | |||
2113 | }; | 2113 | }; |
2114 | 2114 | ||
2115 | int | 2115 | int |
2116 | ahd_ovlyspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2116 | ahd_dchspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2117 | { | 2117 | { |
2118 | return (ahd_print_register(OVLYSPLTSTAT0_parse_table, 8, "OVLYSPLTSTAT0", | 2118 | return (ahd_print_register(DCHSPLTSTAT0_parse_table, 8, "DCHSPLTSTAT0", |
2119 | 0x96, regvalue, cur_col, wrap)); | 2119 | 0x96, regvalue, cur_col, wrap)); |
2120 | } | 2120 | } |
2121 | 2121 | ||
2122 | static ahd_reg_parse_entry_t DCHSPLTSTAT0_parse_table[] = { | 2122 | static ahd_reg_parse_entry_t OVLYSPLTSTAT0_parse_table[] = { |
2123 | { "RXSPLTRSP", 0x01, 0x01 }, | 2123 | { "RXSPLTRSP", 0x01, 0x01 }, |
2124 | { "RXSCEMSG", 0x02, 0x02 }, | 2124 | { "RXSCEMSG", 0x02, 0x02 }, |
2125 | { "RXOVRUN", 0x04, 0x04 }, | 2125 | { "RXOVRUN", 0x04, 0x04 }, |
@@ -2131,42 +2131,42 @@ static ahd_reg_parse_entry_t DCHSPLTSTAT0_parse_table[] = { | |||
2131 | }; | 2131 | }; |
2132 | 2132 | ||
2133 | int | 2133 | int |
2134 | ahd_dchspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2134 | ahd_ovlyspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2135 | { | 2135 | { |
2136 | return (ahd_print_register(DCHSPLTSTAT0_parse_table, 8, "DCHSPLTSTAT0", | 2136 | return (ahd_print_register(OVLYSPLTSTAT0_parse_table, 8, "OVLYSPLTSTAT0", |
2137 | 0x96, regvalue, cur_col, wrap)); | 2137 | 0x96, regvalue, cur_col, wrap)); |
2138 | } | 2138 | } |
2139 | 2139 | ||
2140 | static ahd_reg_parse_entry_t DCHSPLTSTAT1_parse_table[] = { | 2140 | static ahd_reg_parse_entry_t CMCSPLTSTAT1_parse_table[] = { |
2141 | { "RXDATABUCKET", 0x01, 0x01 } | 2141 | { "RXDATABUCKET", 0x01, 0x01 } |
2142 | }; | 2142 | }; |
2143 | 2143 | ||
2144 | int | 2144 | int |
2145 | ahd_dchspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2145 | ahd_cmcspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2146 | { | 2146 | { |
2147 | return (ahd_print_register(DCHSPLTSTAT1_parse_table, 1, "DCHSPLTSTAT1", | 2147 | return (ahd_print_register(CMCSPLTSTAT1_parse_table, 1, "CMCSPLTSTAT1", |
2148 | 0x97, regvalue, cur_col, wrap)); | 2148 | 0x97, regvalue, cur_col, wrap)); |
2149 | } | 2149 | } |
2150 | 2150 | ||
2151 | static ahd_reg_parse_entry_t CMCSPLTSTAT1_parse_table[] = { | 2151 | static ahd_reg_parse_entry_t OVLYSPLTSTAT1_parse_table[] = { |
2152 | { "RXDATABUCKET", 0x01, 0x01 } | 2152 | { "RXDATABUCKET", 0x01, 0x01 } |
2153 | }; | 2153 | }; |
2154 | 2154 | ||
2155 | int | 2155 | int |
2156 | ahd_cmcspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2156 | ahd_ovlyspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2157 | { | 2157 | { |
2158 | return (ahd_print_register(CMCSPLTSTAT1_parse_table, 1, "CMCSPLTSTAT1", | 2158 | return (ahd_print_register(OVLYSPLTSTAT1_parse_table, 1, "OVLYSPLTSTAT1", |
2159 | 0x97, regvalue, cur_col, wrap)); | 2159 | 0x97, regvalue, cur_col, wrap)); |
2160 | } | 2160 | } |
2161 | 2161 | ||
2162 | static ahd_reg_parse_entry_t OVLYSPLTSTAT1_parse_table[] = { | 2162 | static ahd_reg_parse_entry_t DCHSPLTSTAT1_parse_table[] = { |
2163 | { "RXDATABUCKET", 0x01, 0x01 } | 2163 | { "RXDATABUCKET", 0x01, 0x01 } |
2164 | }; | 2164 | }; |
2165 | 2165 | ||
2166 | int | 2166 | int |
2167 | ahd_ovlyspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2167 | ahd_dchspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2168 | { | 2168 | { |
2169 | return (ahd_print_register(OVLYSPLTSTAT1_parse_table, 1, "OVLYSPLTSTAT1", | 2169 | return (ahd_print_register(DCHSPLTSTAT1_parse_table, 1, "DCHSPLTSTAT1", |
2170 | 0x97, regvalue, cur_col, wrap)); | 2170 | 0x97, regvalue, cur_col, wrap)); |
2171 | } | 2171 | } |
2172 | 2172 | ||
@@ -2320,26 +2320,26 @@ ahd_sgspltstat0_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2320 | 0x9e, regvalue, cur_col, wrap)); | 2320 | 0x9e, regvalue, cur_col, wrap)); |
2321 | } | 2321 | } |
2322 | 2322 | ||
2323 | static ahd_reg_parse_entry_t SFUNCT_parse_table[] = { | 2323 | static ahd_reg_parse_entry_t SGSPLTSTAT1_parse_table[] = { |
2324 | { "TEST_NUM", 0x0f, 0x0f }, | 2324 | { "RXDATABUCKET", 0x01, 0x01 } |
2325 | { "TEST_GROUP", 0xf0, 0xf0 } | ||
2326 | }; | 2325 | }; |
2327 | 2326 | ||
2328 | int | 2327 | int |
2329 | ahd_sfunct_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2328 | ahd_sgspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2330 | { | 2329 | { |
2331 | return (ahd_print_register(SFUNCT_parse_table, 2, "SFUNCT", | 2330 | return (ahd_print_register(SGSPLTSTAT1_parse_table, 1, "SGSPLTSTAT1", |
2332 | 0x9f, regvalue, cur_col, wrap)); | 2331 | 0x9f, regvalue, cur_col, wrap)); |
2333 | } | 2332 | } |
2334 | 2333 | ||
2335 | static ahd_reg_parse_entry_t SGSPLTSTAT1_parse_table[] = { | 2334 | static ahd_reg_parse_entry_t SFUNCT_parse_table[] = { |
2336 | { "RXDATABUCKET", 0x01, 0x01 } | 2335 | { "TEST_NUM", 0x0f, 0x0f }, |
2336 | { "TEST_GROUP", 0xf0, 0xf0 } | ||
2337 | }; | 2337 | }; |
2338 | 2338 | ||
2339 | int | 2339 | int |
2340 | ahd_sgspltstat1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2340 | ahd_sfunct_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2341 | { | 2341 | { |
2342 | return (ahd_print_register(SGSPLTSTAT1_parse_table, 1, "SGSPLTSTAT1", | 2342 | return (ahd_print_register(SFUNCT_parse_table, 2, "SFUNCT", |
2343 | 0x9f, regvalue, cur_col, wrap)); | 2343 | 0x9f, regvalue, cur_col, wrap)); |
2344 | } | 2344 | } |
2345 | 2345 | ||
@@ -2537,16 +2537,16 @@ ahd_ccsgaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2537 | } | 2537 | } |
2538 | 2538 | ||
2539 | int | 2539 | int |
2540 | ahd_ccscbaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2540 | ahd_ccscbadr_bk_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2541 | { | 2541 | { |
2542 | return (ahd_print_register(NULL, 0, "CCSCBADDR", | 2542 | return (ahd_print_register(NULL, 0, "CCSCBADR_BK", |
2543 | 0xac, regvalue, cur_col, wrap)); | 2543 | 0xac, regvalue, cur_col, wrap)); |
2544 | } | 2544 | } |
2545 | 2545 | ||
2546 | int | 2546 | int |
2547 | ahd_ccscbadr_bk_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2547 | ahd_ccscbaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2548 | { | 2548 | { |
2549 | return (ahd_print_register(NULL, 0, "CCSCBADR_BK", | 2549 | return (ahd_print_register(NULL, 0, "CCSCBADDR", |
2550 | 0xac, regvalue, cur_col, wrap)); | 2550 | 0xac, regvalue, cur_col, wrap)); |
2551 | } | 2551 | } |
2552 | 2552 | ||
@@ -2566,22 +2566,6 @@ ahd_cmc_rambist_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2566 | 0xad, regvalue, cur_col, wrap)); | 2566 | 0xad, regvalue, cur_col, wrap)); |
2567 | } | 2567 | } |
2568 | 2568 | ||
2569 | static ahd_reg_parse_entry_t CCSGCTL_parse_table[] = { | ||
2570 | { "CCSGRESET", 0x01, 0x01 }, | ||
2571 | { "SG_FETCH_REQ", 0x02, 0x02 }, | ||
2572 | { "CCSGENACK", 0x08, 0x08 }, | ||
2573 | { "SG_CACHE_AVAIL", 0x10, 0x10 }, | ||
2574 | { "CCSGDONE", 0x80, 0x80 }, | ||
2575 | { "CCSGEN", 0x0c, 0x0c } | ||
2576 | }; | ||
2577 | |||
2578 | int | ||
2579 | ahd_ccsgctl_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
2580 | { | ||
2581 | return (ahd_print_register(CCSGCTL_parse_table, 6, "CCSGCTL", | ||
2582 | 0xad, regvalue, cur_col, wrap)); | ||
2583 | } | ||
2584 | |||
2585 | static ahd_reg_parse_entry_t CCSCBCTL_parse_table[] = { | 2569 | static ahd_reg_parse_entry_t CCSCBCTL_parse_table[] = { |
2586 | { "CCSCBRESET", 0x01, 0x01 }, | 2570 | { "CCSCBRESET", 0x01, 0x01 }, |
2587 | { "CCSCBDIR", 0x04, 0x04 }, | 2571 | { "CCSCBDIR", 0x04, 0x04 }, |
@@ -2598,6 +2582,22 @@ ahd_ccscbctl_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2598 | 0xad, regvalue, cur_col, wrap)); | 2582 | 0xad, regvalue, cur_col, wrap)); |
2599 | } | 2583 | } |
2600 | 2584 | ||
2585 | static ahd_reg_parse_entry_t CCSGCTL_parse_table[] = { | ||
2586 | { "CCSGRESET", 0x01, 0x01 }, | ||
2587 | { "SG_FETCH_REQ", 0x02, 0x02 }, | ||
2588 | { "CCSGENACK", 0x08, 0x08 }, | ||
2589 | { "SG_CACHE_AVAIL", 0x10, 0x10 }, | ||
2590 | { "CCSGDONE", 0x80, 0x80 }, | ||
2591 | { "CCSGEN", 0x0c, 0x0c } | ||
2592 | }; | ||
2593 | |||
2594 | int | ||
2595 | ahd_ccsgctl_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
2596 | { | ||
2597 | return (ahd_print_register(CCSGCTL_parse_table, 6, "CCSGCTL", | ||
2598 | 0xad, regvalue, cur_col, wrap)); | ||
2599 | } | ||
2600 | |||
2601 | int | 2601 | int |
2602 | ahd_ccsgram_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2602 | ahd_ccsgram_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2603 | { | 2603 | { |
@@ -2841,30 +2841,30 @@ ahd_wrtbiascalc_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
2841 | } | 2841 | } |
2842 | 2842 | ||
2843 | int | 2843 | int |
2844 | ahd_dfptrs_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2844 | ahd_rcvrbiascalc_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2845 | { | 2845 | { |
2846 | return (ahd_print_register(NULL, 0, "DFPTRS", | 2846 | return (ahd_print_register(NULL, 0, "RCVRBIASCALC", |
2847 | 0xc8, regvalue, cur_col, wrap)); | 2847 | 0xc8, regvalue, cur_col, wrap)); |
2848 | } | 2848 | } |
2849 | 2849 | ||
2850 | int | 2850 | int |
2851 | ahd_rcvrbiascalc_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2851 | ahd_dfptrs_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2852 | { | 2852 | { |
2853 | return (ahd_print_register(NULL, 0, "RCVRBIASCALC", | 2853 | return (ahd_print_register(NULL, 0, "DFPTRS", |
2854 | 0xc8, regvalue, cur_col, wrap)); | 2854 | 0xc8, regvalue, cur_col, wrap)); |
2855 | } | 2855 | } |
2856 | 2856 | ||
2857 | int | 2857 | int |
2858 | ahd_dfbkptr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2858 | ahd_skewcalc_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2859 | { | 2859 | { |
2860 | return (ahd_print_register(NULL, 0, "DFBKPTR", | 2860 | return (ahd_print_register(NULL, 0, "SKEWCALC", |
2861 | 0xc9, regvalue, cur_col, wrap)); | 2861 | 0xc9, regvalue, cur_col, wrap)); |
2862 | } | 2862 | } |
2863 | 2863 | ||
2864 | int | 2864 | int |
2865 | ahd_skewcalc_print(u_int regvalue, u_int *cur_col, u_int wrap) | 2865 | ahd_dfbkptr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
2866 | { | 2866 | { |
2867 | return (ahd_print_register(NULL, 0, "SKEWCALC", | 2867 | return (ahd_print_register(NULL, 0, "DFBKPTR", |
2868 | 0xc9, regvalue, cur_col, wrap)); | 2868 | 0xc9, regvalue, cur_col, wrap)); |
2869 | } | 2869 | } |
2870 | 2870 | ||
@@ -3001,6 +3001,13 @@ ahd_dindex_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
3001 | 0xe4, regvalue, cur_col, wrap)); | 3001 | 0xe4, regvalue, cur_col, wrap)); |
3002 | } | 3002 | } |
3003 | 3003 | ||
3004 | int | ||
3005 | ahd_brkaddr0_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
3006 | { | ||
3007 | return (ahd_print_register(NULL, 0, "BRKADDR0", | ||
3008 | 0xe6, regvalue, cur_col, wrap)); | ||
3009 | } | ||
3010 | |||
3004 | static ahd_reg_parse_entry_t BRKADDR1_parse_table[] = { | 3011 | static ahd_reg_parse_entry_t BRKADDR1_parse_table[] = { |
3005 | { "BRKDIS", 0x80, 0x80 } | 3012 | { "BRKDIS", 0x80, 0x80 } |
3006 | }; | 3013 | }; |
@@ -3013,13 +3020,6 @@ ahd_brkaddr1_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
3013 | } | 3020 | } |
3014 | 3021 | ||
3015 | int | 3022 | int |
3016 | ahd_brkaddr0_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
3017 | { | ||
3018 | return (ahd_print_register(NULL, 0, "BRKADDR0", | ||
3019 | 0xe6, regvalue, cur_col, wrap)); | ||
3020 | } | ||
3021 | |||
3022 | int | ||
3023 | ahd_allones_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3023 | ahd_allones_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3024 | { | 3024 | { |
3025 | return (ahd_print_register(NULL, 0, "ALLONES", | 3025 | return (ahd_print_register(NULL, 0, "ALLONES", |
@@ -3069,30 +3069,30 @@ ahd_stack_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
3069 | } | 3069 | } |
3070 | 3070 | ||
3071 | int | 3071 | int |
3072 | ahd_curaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3072 | ahd_intvec1_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3073 | { | 3073 | { |
3074 | return (ahd_print_register(NULL, 0, "CURADDR", | 3074 | return (ahd_print_register(NULL, 0, "INTVEC1_ADDR", |
3075 | 0xf4, regvalue, cur_col, wrap)); | 3075 | 0xf4, regvalue, cur_col, wrap)); |
3076 | } | 3076 | } |
3077 | 3077 | ||
3078 | int | 3078 | int |
3079 | ahd_intvec1_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3079 | ahd_curaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3080 | { | 3080 | { |
3081 | return (ahd_print_register(NULL, 0, "INTVEC1_ADDR", | 3081 | return (ahd_print_register(NULL, 0, "CURADDR", |
3082 | 0xf4, regvalue, cur_col, wrap)); | 3082 | 0xf4, regvalue, cur_col, wrap)); |
3083 | } | 3083 | } |
3084 | 3084 | ||
3085 | int | 3085 | int |
3086 | ahd_intvec2_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3086 | ahd_lastaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3087 | { | 3087 | { |
3088 | return (ahd_print_register(NULL, 0, "INTVEC2_ADDR", | 3088 | return (ahd_print_register(NULL, 0, "LASTADDR", |
3089 | 0xf6, regvalue, cur_col, wrap)); | 3089 | 0xf6, regvalue, cur_col, wrap)); |
3090 | } | 3090 | } |
3091 | 3091 | ||
3092 | int | 3092 | int |
3093 | ahd_lastaddr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3093 | ahd_intvec2_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3094 | { | 3094 | { |
3095 | return (ahd_print_register(NULL, 0, "LASTADDR", | 3095 | return (ahd_print_register(NULL, 0, "INTVEC2_ADDR", |
3096 | 0xf6, regvalue, cur_col, wrap)); | 3096 | 0xf6, regvalue, cur_col, wrap)); |
3097 | } | 3097 | } |
3098 | 3098 | ||
@@ -3174,24 +3174,45 @@ ahd_complete_dma_scb_head_print(u_int regvalue, u_int *cur_col, u_int wrap) | |||
3174 | } | 3174 | } |
3175 | 3175 | ||
3176 | int | 3176 | int |
3177 | ahd_complete_dma_scb_tail_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
3178 | { | ||
3179 | return (ahd_print_register(NULL, 0, "COMPLETE_DMA_SCB_TAIL", | ||
3180 | 0x12e, regvalue, cur_col, wrap)); | ||
3181 | } | ||
3182 | |||
3183 | int | ||
3184 | ahd_complete_on_qfreeze_head_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
3185 | { | ||
3186 | return (ahd_print_register(NULL, 0, "COMPLETE_ON_QFREEZE_HEAD", | ||
3187 | 0x130, regvalue, cur_col, wrap)); | ||
3188 | } | ||
3189 | |||
3190 | int | ||
3177 | ahd_qfreeze_count_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3191 | ahd_qfreeze_count_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3178 | { | 3192 | { |
3179 | return (ahd_print_register(NULL, 0, "QFREEZE_COUNT", | 3193 | return (ahd_print_register(NULL, 0, "QFREEZE_COUNT", |
3180 | 0x12e, regvalue, cur_col, wrap)); | 3194 | 0x132, regvalue, cur_col, wrap)); |
3195 | } | ||
3196 | |||
3197 | int | ||
3198 | ahd_kernel_qfreeze_count_print(u_int regvalue, u_int *cur_col, u_int wrap) | ||
3199 | { | ||
3200 | return (ahd_print_register(NULL, 0, "KERNEL_QFREEZE_COUNT", | ||
3201 | 0x134, regvalue, cur_col, wrap)); | ||
3181 | } | 3202 | } |
3182 | 3203 | ||
3183 | int | 3204 | int |
3184 | ahd_saved_mode_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3205 | ahd_saved_mode_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3185 | { | 3206 | { |
3186 | return (ahd_print_register(NULL, 0, "SAVED_MODE", | 3207 | return (ahd_print_register(NULL, 0, "SAVED_MODE", |
3187 | 0x130, regvalue, cur_col, wrap)); | 3208 | 0x136, regvalue, cur_col, wrap)); |
3188 | } | 3209 | } |
3189 | 3210 | ||
3190 | int | 3211 | int |
3191 | ahd_msg_out_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3212 | ahd_msg_out_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3192 | { | 3213 | { |
3193 | return (ahd_print_register(NULL, 0, "MSG_OUT", | 3214 | return (ahd_print_register(NULL, 0, "MSG_OUT", |
3194 | 0x131, regvalue, cur_col, wrap)); | 3215 | 0x137, regvalue, cur_col, wrap)); |
3195 | } | 3216 | } |
3196 | 3217 | ||
3197 | static ahd_reg_parse_entry_t DMAPARAMS_parse_table[] = { | 3218 | static ahd_reg_parse_entry_t DMAPARAMS_parse_table[] = { |
@@ -3211,7 +3232,7 @@ int | |||
3211 | ahd_dmaparams_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3232 | ahd_dmaparams_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3212 | { | 3233 | { |
3213 | return (ahd_print_register(DMAPARAMS_parse_table, 10, "DMAPARAMS", | 3234 | return (ahd_print_register(DMAPARAMS_parse_table, 10, "DMAPARAMS", |
3214 | 0x132, regvalue, cur_col, wrap)); | 3235 | 0x138, regvalue, cur_col, wrap)); |
3215 | } | 3236 | } |
3216 | 3237 | ||
3217 | static ahd_reg_parse_entry_t SEQ_FLAGS_parse_table[] = { | 3238 | static ahd_reg_parse_entry_t SEQ_FLAGS_parse_table[] = { |
@@ -3230,21 +3251,21 @@ int | |||
3230 | ahd_seq_flags_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3251 | ahd_seq_flags_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3231 | { | 3252 | { |
3232 | return (ahd_print_register(SEQ_FLAGS_parse_table, 9, "SEQ_FLAGS", | 3253 | return (ahd_print_register(SEQ_FLAGS_parse_table, 9, "SEQ_FLAGS", |
3233 | 0x133, regvalue, cur_col, wrap)); | 3254 | 0x139, regvalue, cur_col, wrap)); |
3234 | } | 3255 | } |
3235 | 3256 | ||
3236 | int | 3257 | int |
3237 | ahd_saved_scsiid_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3258 | ahd_saved_scsiid_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3238 | { | 3259 | { |
3239 | return (ahd_print_register(NULL, 0, "SAVED_SCSIID", | 3260 | return (ahd_print_register(NULL, 0, "SAVED_SCSIID", |
3240 | 0x134, regvalue, cur_col, wrap)); | 3261 | 0x13a, regvalue, cur_col, wrap)); |
3241 | } | 3262 | } |
3242 | 3263 | ||
3243 | int | 3264 | int |
3244 | ahd_saved_lun_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3265 | ahd_saved_lun_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3245 | { | 3266 | { |
3246 | return (ahd_print_register(NULL, 0, "SAVED_LUN", | 3267 | return (ahd_print_register(NULL, 0, "SAVED_LUN", |
3247 | 0x135, regvalue, cur_col, wrap)); | 3268 | 0x13b, regvalue, cur_col, wrap)); |
3248 | } | 3269 | } |
3249 | 3270 | ||
3250 | static ahd_reg_parse_entry_t LASTPHASE_parse_table[] = { | 3271 | static ahd_reg_parse_entry_t LASTPHASE_parse_table[] = { |
@@ -3267,42 +3288,42 @@ int | |||
3267 | ahd_lastphase_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3288 | ahd_lastphase_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3268 | { | 3289 | { |
3269 | return (ahd_print_register(LASTPHASE_parse_table, 13, "LASTPHASE", | 3290 | return (ahd_print_register(LASTPHASE_parse_table, 13, "LASTPHASE", |
3270 | 0x136, regvalue, cur_col, wrap)); | 3291 | 0x13c, regvalue, cur_col, wrap)); |
3271 | } | 3292 | } |
3272 | 3293 | ||
3273 | int | 3294 | int |
3274 | ahd_qoutfifo_entry_valid_tag_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3295 | ahd_qoutfifo_entry_valid_tag_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3275 | { | 3296 | { |
3276 | return (ahd_print_register(NULL, 0, "QOUTFIFO_ENTRY_VALID_TAG", | 3297 | return (ahd_print_register(NULL, 0, "QOUTFIFO_ENTRY_VALID_TAG", |
3277 | 0x137, regvalue, cur_col, wrap)); | 3298 | 0x13d, regvalue, cur_col, wrap)); |
3278 | } | 3299 | } |
3279 | 3300 | ||
3280 | int | 3301 | int |
3281 | ahd_shared_data_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3302 | ahd_kernel_tqinpos_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3282 | { | 3303 | { |
3283 | return (ahd_print_register(NULL, 0, "SHARED_DATA_ADDR", | 3304 | return (ahd_print_register(NULL, 0, "KERNEL_TQINPOS", |
3284 | 0x138, regvalue, cur_col, wrap)); | 3305 | 0x13e, regvalue, cur_col, wrap)); |
3285 | } | 3306 | } |
3286 | 3307 | ||
3287 | int | 3308 | int |
3288 | ahd_qoutfifo_next_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3309 | ahd_tqinpos_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3289 | { | 3310 | { |
3290 | return (ahd_print_register(NULL, 0, "QOUTFIFO_NEXT_ADDR", | 3311 | return (ahd_print_register(NULL, 0, "TQINPOS", |
3291 | 0x13c, regvalue, cur_col, wrap)); | 3312 | 0x13f, regvalue, cur_col, wrap)); |
3292 | } | 3313 | } |
3293 | 3314 | ||
3294 | int | 3315 | int |
3295 | ahd_kernel_tqinpos_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3316 | ahd_shared_data_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3296 | { | 3317 | { |
3297 | return (ahd_print_register(NULL, 0, "KERNEL_TQINPOS", | 3318 | return (ahd_print_register(NULL, 0, "SHARED_DATA_ADDR", |
3298 | 0x140, regvalue, cur_col, wrap)); | 3319 | 0x140, regvalue, cur_col, wrap)); |
3299 | } | 3320 | } |
3300 | 3321 | ||
3301 | int | 3322 | int |
3302 | ahd_tqinpos_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3323 | ahd_qoutfifo_next_addr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3303 | { | 3324 | { |
3304 | return (ahd_print_register(NULL, 0, "TQINPOS", | 3325 | return (ahd_print_register(NULL, 0, "QOUTFIFO_NEXT_ADDR", |
3305 | 0x141, regvalue, cur_col, wrap)); | 3326 | 0x144, regvalue, cur_col, wrap)); |
3306 | } | 3327 | } |
3307 | 3328 | ||
3308 | static ahd_reg_parse_entry_t ARG_1_parse_table[] = { | 3329 | static ahd_reg_parse_entry_t ARG_1_parse_table[] = { |
@@ -3320,21 +3341,21 @@ int | |||
3320 | ahd_arg_1_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3341 | ahd_arg_1_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3321 | { | 3342 | { |
3322 | return (ahd_print_register(ARG_1_parse_table, 8, "ARG_1", | 3343 | return (ahd_print_register(ARG_1_parse_table, 8, "ARG_1", |
3323 | 0x142, regvalue, cur_col, wrap)); | 3344 | 0x148, regvalue, cur_col, wrap)); |
3324 | } | 3345 | } |
3325 | 3346 | ||
3326 | int | 3347 | int |
3327 | ahd_arg_2_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3348 | ahd_arg_2_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3328 | { | 3349 | { |
3329 | return (ahd_print_register(NULL, 0, "ARG_2", | 3350 | return (ahd_print_register(NULL, 0, "ARG_2", |
3330 | 0x143, regvalue, cur_col, wrap)); | 3351 | 0x149, regvalue, cur_col, wrap)); |
3331 | } | 3352 | } |
3332 | 3353 | ||
3333 | int | 3354 | int |
3334 | ahd_last_msg_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3355 | ahd_last_msg_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3335 | { | 3356 | { |
3336 | return (ahd_print_register(NULL, 0, "LAST_MSG", | 3357 | return (ahd_print_register(NULL, 0, "LAST_MSG", |
3337 | 0x144, regvalue, cur_col, wrap)); | 3358 | 0x14a, regvalue, cur_col, wrap)); |
3338 | } | 3359 | } |
3339 | 3360 | ||
3340 | static ahd_reg_parse_entry_t SCSISEQ_TEMPLATE_parse_table[] = { | 3361 | static ahd_reg_parse_entry_t SCSISEQ_TEMPLATE_parse_table[] = { |
@@ -3350,14 +3371,14 @@ int | |||
3350 | ahd_scsiseq_template_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3371 | ahd_scsiseq_template_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3351 | { | 3372 | { |
3352 | return (ahd_print_register(SCSISEQ_TEMPLATE_parse_table, 6, "SCSISEQ_TEMPLATE", | 3373 | return (ahd_print_register(SCSISEQ_TEMPLATE_parse_table, 6, "SCSISEQ_TEMPLATE", |
3353 | 0x145, regvalue, cur_col, wrap)); | 3374 | 0x14b, regvalue, cur_col, wrap)); |
3354 | } | 3375 | } |
3355 | 3376 | ||
3356 | int | 3377 | int |
3357 | ahd_initiator_tag_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3378 | ahd_initiator_tag_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3358 | { | 3379 | { |
3359 | return (ahd_print_register(NULL, 0, "INITIATOR_TAG", | 3380 | return (ahd_print_register(NULL, 0, "INITIATOR_TAG", |
3360 | 0x146, regvalue, cur_col, wrap)); | 3381 | 0x14c, regvalue, cur_col, wrap)); |
3361 | } | 3382 | } |
3362 | 3383 | ||
3363 | static ahd_reg_parse_entry_t SEQ_FLAGS2_parse_table[] = { | 3384 | static ahd_reg_parse_entry_t SEQ_FLAGS2_parse_table[] = { |
@@ -3369,63 +3390,63 @@ int | |||
3369 | ahd_seq_flags2_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3390 | ahd_seq_flags2_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3370 | { | 3391 | { |
3371 | return (ahd_print_register(SEQ_FLAGS2_parse_table, 2, "SEQ_FLAGS2", | 3392 | return (ahd_print_register(SEQ_FLAGS2_parse_table, 2, "SEQ_FLAGS2", |
3372 | 0x147, regvalue, cur_col, wrap)); | 3393 | 0x14d, regvalue, cur_col, wrap)); |
3373 | } | 3394 | } |
3374 | 3395 | ||
3375 | int | 3396 | int |
3376 | ahd_allocfifo_scbptr_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3397 | ahd_allocfifo_scbptr_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3377 | { | 3398 | { |
3378 | return (ahd_print_register(NULL, 0, "ALLOCFIFO_SCBPTR", | 3399 | return (ahd_print_register(NULL, 0, "ALLOCFIFO_SCBPTR", |
3379 | 0x148, regvalue, cur_col, wrap)); | 3400 | 0x14e, regvalue, cur_col, wrap)); |
3380 | } | 3401 | } |
3381 | 3402 | ||
3382 | int | 3403 | int |
3383 | ahd_int_coalescing_timer_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3404 | ahd_int_coalescing_timer_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3384 | { | 3405 | { |
3385 | return (ahd_print_register(NULL, 0, "INT_COALESCING_TIMER", | 3406 | return (ahd_print_register(NULL, 0, "INT_COALESCING_TIMER", |
3386 | 0x14a, regvalue, cur_col, wrap)); | 3407 | 0x150, regvalue, cur_col, wrap)); |
3387 | } | 3408 | } |
3388 | 3409 | ||
3389 | int | 3410 | int |
3390 | ahd_int_coalescing_maxcmds_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3411 | ahd_int_coalescing_maxcmds_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3391 | { | 3412 | { |
3392 | return (ahd_print_register(NULL, 0, "INT_COALESCING_MAXCMDS", | 3413 | return (ahd_print_register(NULL, 0, "INT_COALESCING_MAXCMDS", |
3393 | 0x14c, regvalue, cur_col, wrap)); | 3414 | 0x152, regvalue, cur_col, wrap)); |
3394 | } | 3415 | } |
3395 | 3416 | ||
3396 | int | 3417 | int |
3397 | ahd_int_coalescing_mincmds_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3418 | ahd_int_coalescing_mincmds_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3398 | { | 3419 | { |
3399 | return (ahd_print_register(NULL, 0, "INT_COALESCING_MINCMDS", | 3420 | return (ahd_print_register(NULL, 0, "INT_COALESCING_MINCMDS", |
3400 | 0x14d, regvalue, cur_col, wrap)); | 3421 | 0x153, regvalue, cur_col, wrap)); |
3401 | } | 3422 | } |
3402 | 3423 | ||
3403 | int | 3424 | int |
3404 | ahd_cmds_pending_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3425 | ahd_cmds_pending_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3405 | { | 3426 | { |
3406 | return (ahd_print_register(NULL, 0, "CMDS_PENDING", | 3427 | return (ahd_print_register(NULL, 0, "CMDS_PENDING", |
3407 | 0x14e, regvalue, cur_col, wrap)); | 3428 | 0x154, regvalue, cur_col, wrap)); |
3408 | } | 3429 | } |
3409 | 3430 | ||
3410 | int | 3431 | int |
3411 | ahd_int_coalescing_cmdcount_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3432 | ahd_int_coalescing_cmdcount_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3412 | { | 3433 | { |
3413 | return (ahd_print_register(NULL, 0, "INT_COALESCING_CMDCOUNT", | 3434 | return (ahd_print_register(NULL, 0, "INT_COALESCING_CMDCOUNT", |
3414 | 0x150, regvalue, cur_col, wrap)); | 3435 | 0x156, regvalue, cur_col, wrap)); |
3415 | } | 3436 | } |
3416 | 3437 | ||
3417 | int | 3438 | int |
3418 | ahd_local_hs_mailbox_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3439 | ahd_local_hs_mailbox_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3419 | { | 3440 | { |
3420 | return (ahd_print_register(NULL, 0, "LOCAL_HS_MAILBOX", | 3441 | return (ahd_print_register(NULL, 0, "LOCAL_HS_MAILBOX", |
3421 | 0x151, regvalue, cur_col, wrap)); | 3442 | 0x157, regvalue, cur_col, wrap)); |
3422 | } | 3443 | } |
3423 | 3444 | ||
3424 | int | 3445 | int |
3425 | ahd_cmdsize_table_print(u_int regvalue, u_int *cur_col, u_int wrap) | 3446 | ahd_cmdsize_table_print(u_int regvalue, u_int *cur_col, u_int wrap) |
3426 | { | 3447 | { |
3427 | return (ahd_print_register(NULL, 0, "CMDSIZE_TABLE", | 3448 | return (ahd_print_register(NULL, 0, "CMDSIZE_TABLE", |
3428 | 0x152, regvalue, cur_col, wrap)); | 3449 | 0x158, regvalue, cur_col, wrap)); |
3429 | } | 3450 | } |
3430 | 3451 | ||
3431 | int | 3452 | int |
diff --git a/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped b/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped index 77c471f934e0..b1e5365be230 100644 --- a/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped +++ b/drivers/scsi/aic7xxx/aic79xx_seq.h_shipped | |||
@@ -2,215 +2,228 @@ | |||
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#94 $ | 5 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#119 $ |
6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#70 $ | 6 | * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#76 $ |
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, 0x50, 0x59, | 10 | 0x00, 0xea, 0x64, 0x59, |
11 | 0x01, 0xea, 0x04, 0x30, | 11 | 0x01, 0xea, 0x04, 0x30, |
12 | 0xff, 0x04, 0x0c, 0x78, | 12 | 0xff, 0x04, 0x0c, 0x78, |
13 | 0x19, 0xea, 0x50, 0x59, | 13 | 0x19, 0xea, 0x64, 0x59, |
14 | 0x19, 0xea, 0x04, 0x00, | 14 | 0x19, 0xea, 0x04, 0x00, |
15 | 0x33, 0xea, 0x44, 0x59, | 15 | 0x33, 0xea, 0x5e, 0x59, |
16 | 0x33, 0xea, 0x00, 0x00, | 16 | 0x33, 0xea, 0x00, 0x00, |
17 | 0x60, 0x3a, 0x1a, 0x68, | 17 | 0x60, 0x3a, 0x3a, 0x68, |
18 | 0x04, 0x47, 0x1b, 0x68, | 18 | 0x04, 0x4d, 0x35, 0x78, |
19 | 0xff, 0x21, 0x1b, 0x70, | 19 | 0x01, 0x34, 0xc1, 0x31, |
20 | 0x40, 0x4b, 0x92, 0x69, | 20 | 0x00, 0x32, 0x21, 0x60, |
21 | 0x00, 0xe2, 0x54, 0x59, | 21 | 0x01, 0x35, 0xc1, 0x31, |
22 | 0x40, 0x4b, 0x92, 0x69, | 22 | 0x00, 0x33, 0x21, 0x60, |
23 | 0x20, 0x4b, 0x82, 0x69, | 23 | 0xfb, 0x4d, 0x9b, 0x0a, |
24 | 0xfc, 0x42, 0x24, 0x78, | 24 | 0x00, 0xe2, 0x34, 0x40, |
25 | 0x10, 0x40, 0x24, 0x78, | 25 | 0x50, 0x4b, 0x3a, 0x68, |
26 | 0x00, 0xe2, 0xc4, 0x5d, | 26 | 0xff, 0x31, 0x3b, 0x70, |
27 | 0x20, 0x4d, 0x28, 0x78, | 27 | 0x02, 0x30, 0x51, 0x31, |
28 | 0x00, 0xe2, 0xc4, 0x5d, | 28 | 0xff, 0x8d, 0x2d, 0x70, |
29 | 0x02, 0x8c, 0x51, 0x31, | ||
30 | 0xff, 0x8d, 0x29, 0x60, | ||
31 | 0x02, 0x28, 0x19, 0x33, | ||
32 | 0x02, 0x30, 0x51, 0x32, | ||
33 | 0xff, 0xea, 0x62, 0x02, | ||
34 | 0x00, 0xe2, 0x3a, 0x40, | ||
35 | 0xff, 0x21, 0x3b, 0x70, | ||
36 | 0x40, 0x4b, 0xaa, 0x69, | ||
37 | 0x00, 0xe2, 0x68, 0x59, | ||
38 | 0x40, 0x4b, 0xaa, 0x69, | ||
39 | 0x20, 0x4b, 0x96, 0x69, | ||
40 | 0xfc, 0x42, 0x44, 0x78, | ||
41 | 0x10, 0x40, 0x44, 0x78, | ||
42 | 0x00, 0xe2, 0xfc, 0x5d, | ||
43 | 0x20, 0x4d, 0x48, 0x78, | ||
44 | 0x00, 0xe2, 0xfc, 0x5d, | ||
29 | 0x30, 0x3f, 0xc0, 0x09, | 45 | 0x30, 0x3f, 0xc0, 0x09, |
30 | 0x30, 0xe0, 0x30, 0x60, | 46 | 0x30, 0xe0, 0x50, 0x60, |
31 | 0x7f, 0x4a, 0x94, 0x08, | 47 | 0x7f, 0x4a, 0x94, 0x08, |
32 | 0x00, 0xe2, 0x32, 0x40, | 48 | 0x00, 0xe2, 0x52, 0x40, |
33 | 0xc0, 0x4a, 0x94, 0x00, | 49 | 0xc0, 0x4a, 0x94, 0x00, |
34 | 0x00, 0xe2, 0x3e, 0x58, | 50 | 0x00, 0xe2, 0x5e, 0x58, |
35 | 0x00, 0xe2, 0x56, 0x58, | 51 | 0x00, 0xe2, 0x76, 0x58, |
36 | 0x00, 0xe2, 0x66, 0x58, | 52 | 0x00, 0xe2, 0x86, 0x58, |
37 | 0x00, 0xe2, 0x06, 0x40, | 53 | 0x00, 0xe2, 0x06, 0x40, |
38 | 0x33, 0xea, 0x44, 0x59, | 54 | 0x33, 0xea, 0x5e, 0x59, |
39 | 0x33, 0xea, 0x00, 0x00, | 55 | 0x33, 0xea, 0x00, 0x00, |
40 | 0x01, 0x52, 0x64, 0x78, | 56 | 0x01, 0x52, 0x84, 0x78, |
41 | 0x02, 0x58, 0x50, 0x31, | 57 | 0x02, 0x58, 0x50, 0x31, |
42 | 0xff, 0xea, 0x10, 0x0b, | 58 | 0xff, 0xea, 0x10, 0x0b, |
43 | 0xff, 0x97, 0x4f, 0x78, | 59 | 0xff, 0x97, 0x6f, 0x78, |
44 | 0x50, 0x4b, 0x4a, 0x68, | 60 | 0x50, 0x4b, 0x6a, 0x68, |
45 | 0xbf, 0x3a, 0x74, 0x08, | 61 | 0xbf, 0x3a, 0x74, 0x08, |
46 | 0x14, 0xea, 0x50, 0x59, | 62 | 0x14, 0xea, 0x64, 0x59, |
47 | 0x14, 0xea, 0x04, 0x00, | 63 | 0x14, 0xea, 0x04, 0x00, |
48 | 0x08, 0x92, 0x25, 0x03, | 64 | 0x08, 0x92, 0x25, 0x03, |
49 | 0xff, 0x90, 0x3f, 0x68, | 65 | 0xff, 0x90, 0x5f, 0x68, |
50 | 0x00, 0xe2, 0x56, 0x5b, | 66 | 0x00, 0xe2, 0x76, 0x5b, |
51 | 0x00, 0xe2, 0x3e, 0x40, | 67 | 0x00, 0xe2, 0x5e, 0x40, |
52 | 0x00, 0xea, 0x44, 0x59, | 68 | 0x00, 0xea, 0x5e, 0x59, |
53 | 0x01, 0xea, 0x00, 0x30, | 69 | 0x01, 0xea, 0x00, 0x30, |
54 | 0x80, 0xf9, 0x5e, 0x68, | 70 | 0x80, 0xf9, 0x7e, 0x68, |
55 | 0x00, 0xe2, 0x42, 0x59, | 71 | 0x00, 0xe2, 0x5c, 0x59, |
56 | 0x11, 0xea, 0x44, 0x59, | 72 | 0x11, 0xea, 0x5e, 0x59, |
57 | 0x11, 0xea, 0x00, 0x00, | 73 | 0x11, 0xea, 0x00, 0x00, |
58 | 0x80, 0xf9, 0x42, 0x79, | 74 | 0x80, 0xf9, 0x5c, 0x79, |
59 | 0xff, 0xea, 0xd4, 0x0d, | 75 | 0xff, 0xea, 0xd4, 0x0d, |
60 | 0x22, 0xea, 0x44, 0x59, | 76 | 0x22, 0xea, 0x5e, 0x59, |
61 | 0x22, 0xea, 0x00, 0x00, | 77 | 0x22, 0xea, 0x00, 0x00, |
62 | 0x10, 0x16, 0x70, 0x78, | 78 | 0x10, 0x16, 0x90, 0x78, |
63 | 0x01, 0x0b, 0xa2, 0x32, | ||
64 | 0x10, 0x16, 0x2c, 0x00, | 79 | 0x10, 0x16, 0x2c, 0x00, |
65 | 0x18, 0xad, 0x00, 0x79, | 80 | 0x01, 0x0b, 0xae, 0x32, |
66 | 0x04, 0xad, 0xca, 0x68, | 81 | 0x18, 0xad, 0x12, 0x79, |
67 | 0x80, 0xad, 0x64, 0x78, | 82 | 0x04, 0xad, 0xdc, 0x68, |
68 | 0x10, 0xad, 0x98, 0x78, | 83 | 0x80, 0xad, 0x84, 0x78, |
69 | 0xff, 0x88, 0x83, 0x68, | 84 | 0x10, 0xad, 0xaa, 0x78, |
70 | 0xe7, 0xad, 0x5a, 0x09, | 85 | 0xe7, 0xad, 0x5a, 0x09, |
71 | 0x02, 0x8c, 0x59, 0x32, | 86 | 0x02, 0x8c, 0x59, 0x32, |
87 | 0xff, 0x8d, 0xa1, 0x60, | ||
88 | 0xff, 0xea, 0x5e, 0x02, | ||
89 | 0xff, 0x88, 0xa7, 0x78, | ||
90 | 0x02, 0x30, 0x19, 0x33, | ||
91 | 0x02, 0xa8, 0x60, 0x36, | ||
72 | 0x02, 0x28, 0x19, 0x33, | 92 | 0x02, 0x28, 0x19, 0x33, |
73 | 0x02, 0xa8, 0x50, 0x36, | 93 | 0x02, 0xa8, 0x50, 0x36, |
74 | 0x33, 0xea, 0x44, 0x59, | ||
75 | 0x33, 0xea, 0x00, 0x00, | ||
76 | 0x40, 0x3a, 0x64, 0x68, | ||
77 | 0x50, 0x4b, 0x64, 0x68, | ||
78 | 0x22, 0xea, 0x44, 0x59, | ||
79 | 0x22, 0xea, 0x00, 0x00, | ||
80 | 0xe7, 0xad, 0x5a, 0x09, | ||
81 | 0x02, 0x8c, 0x59, 0x32, | ||
82 | 0x1a, 0xea, 0x50, 0x59, | ||
83 | 0x1a, 0xea, 0x04, 0x00, | ||
84 | 0xff, 0xea, 0xd4, 0x0d, | ||
85 | 0xe7, 0xad, 0x5a, 0x09, | 94 | 0xe7, 0xad, 0x5a, 0x09, |
86 | 0x00, 0xe2, 0xa6, 0x58, | 95 | 0x00, 0xe2, 0xb8, 0x58, |
87 | 0xff, 0xea, 0x56, 0x02, | 96 | 0xff, 0xea, 0x56, 0x02, |
88 | 0x04, 0x7c, 0x78, 0x32, | 97 | 0x04, 0x7c, 0x88, 0x32, |
89 | 0x20, 0x16, 0x64, 0x78, | 98 | 0x20, 0x16, 0x84, 0x78, |
90 | 0x04, 0x38, 0x79, 0x32, | 99 | 0x04, 0x40, 0x89, 0x32, |
91 | 0x80, 0x37, 0x6f, 0x16, | 100 | 0x80, 0x3d, 0x7b, 0x16, |
92 | 0xff, 0x2d, 0xb5, 0x60, | 101 | 0xff, 0x2d, 0xc7, 0x60, |
93 | 0xff, 0x29, 0xb5, 0x60, | 102 | 0xff, 0x29, 0xc7, 0x60, |
94 | 0x40, 0x51, 0xc5, 0x78, | 103 | 0x40, 0x57, 0xd7, 0x78, |
95 | 0xff, 0x4f, 0xb5, 0x68, | 104 | 0xff, 0x55, 0xc7, 0x68, |
96 | 0xff, 0x4d, 0xc1, 0x19, | 105 | 0xff, 0x53, 0xc1, 0x19, |
97 | 0x00, 0x4e, 0xd5, 0x19, | 106 | 0x00, 0x54, 0xd5, 0x19, |
98 | 0x00, 0xe2, 0xc4, 0x50, | 107 | 0x00, 0xe2, 0xd6, 0x50, |
99 | 0x01, 0x4c, 0xc1, 0x31, | 108 | 0x01, 0x52, 0xc1, 0x31, |
100 | 0x00, 0x50, 0xd5, 0x19, | 109 | 0x00, 0x56, 0xd5, 0x19, |
101 | 0x00, 0xe2, 0xc4, 0x48, | 110 | 0x00, 0xe2, 0xd6, 0x48, |
102 | 0x80, 0x18, 0x64, 0x78, | 111 | 0x80, 0x18, 0x84, 0x78, |
103 | 0x02, 0x4a, 0x1d, 0x30, | 112 | 0x02, 0x50, 0x1d, 0x30, |
104 | 0x10, 0xea, 0x18, 0x00, | 113 | 0x10, 0xea, 0x18, 0x00, |
105 | 0x60, 0x18, 0x30, 0x00, | 114 | 0x60, 0x18, 0x30, 0x00, |
106 | 0x7f, 0x18, 0x30, 0x0c, | 115 | 0x7f, 0x18, 0x30, 0x0c, |
107 | 0x02, 0xea, 0x02, 0x00, | 116 | 0x02, 0xea, 0x02, 0x00, |
108 | 0xff, 0xea, 0xa0, 0x0a, | 117 | 0xff, 0xea, 0xac, 0x0a, |
109 | 0x80, 0x18, 0x30, 0x04, | 118 | 0x80, 0x18, 0x30, 0x04, |
110 | 0x40, 0xad, 0x64, 0x78, | 119 | 0x40, 0xad, 0x84, 0x78, |
111 | 0xe7, 0xad, 0x5a, 0x09, | 120 | 0xe7, 0xad, 0x5a, 0x09, |
112 | 0x02, 0xa8, 0x40, 0x31, | 121 | 0x02, 0xa8, 0x40, 0x31, |
113 | 0xff, 0xea, 0xc0, 0x09, | 122 | 0xff, 0xea, 0xc0, 0x09, |
114 | 0x01, 0x4e, 0x9d, 0x1a, | 123 | 0x01, 0x54, 0xa9, 0x1a, |
115 | 0x00, 0x4f, 0x9f, 0x22, | 124 | 0x00, 0x55, 0xab, 0x22, |
116 | 0x01, 0x94, 0x6d, 0x33, | 125 | 0x01, 0x94, 0x6d, 0x33, |
117 | 0x01, 0xea, 0x20, 0x33, | 126 | 0xff, 0xea, 0x20, 0x0b, |
118 | 0x04, 0xac, 0x49, 0x32, | 127 | 0x04, 0xac, 0x49, 0x32, |
119 | 0xff, 0xea, 0x5a, 0x03, | 128 | 0xff, 0xea, 0x5a, 0x03, |
120 | 0xff, 0xea, 0x5e, 0x03, | 129 | 0xff, 0xea, 0x5e, 0x03, |
121 | 0x01, 0x10, 0xd4, 0x31, | 130 | 0x01, 0x10, 0xd4, 0x31, |
122 | 0x10, 0x92, 0xf5, 0x68, | 131 | 0x10, 0x92, 0x07, 0x69, |
123 | 0x3d, 0x93, 0xc5, 0x29, | 132 | 0x3d, 0x93, 0xc5, 0x29, |
124 | 0xfe, 0xe2, 0xc4, 0x09, | 133 | 0xfe, 0xe2, 0xc4, 0x09, |
125 | 0x01, 0xea, 0xc6, 0x01, | 134 | 0x01, 0xea, 0xc6, 0x01, |
126 | 0x02, 0xe2, 0xc8, 0x31, | 135 | 0x02, 0xe2, 0xc8, 0x31, |
127 | 0x02, 0xec, 0x50, 0x31, | 136 | 0x02, 0xec, 0x50, 0x31, |
128 | 0x02, 0xa0, 0xda, 0x31, | 137 | 0x02, 0xa0, 0xda, 0x31, |
129 | 0xff, 0xa9, 0xf4, 0x70, | 138 | 0xff, 0xa9, 0x06, 0x71, |
130 | 0x02, 0xa0, 0x58, 0x37, | 139 | 0x02, 0xa0, 0x58, 0x37, |
131 | 0xff, 0x21, 0xfd, 0x70, | 140 | 0xff, 0x21, 0x0f, 0x71, |
132 | 0x02, 0x22, 0x51, 0x31, | 141 | 0x02, 0x22, 0x51, 0x31, |
133 | 0x02, 0xa0, 0x5c, 0x33, | 142 | 0x02, 0xa0, 0x5c, 0x33, |
134 | 0x02, 0xa0, 0x44, 0x36, | 143 | 0x02, 0xa0, 0x44, 0x36, |
135 | 0x02, 0xa0, 0x40, 0x32, | 144 | 0x02, 0xa0, 0x40, 0x32, |
136 | 0x02, 0xa0, 0x44, 0x36, | 145 | 0x02, 0xa0, 0x44, 0x36, |
137 | 0x04, 0x47, 0x05, 0x69, | 146 | 0x04, 0x4d, 0x17, 0x69, |
138 | 0x40, 0x16, 0x30, 0x69, | 147 | 0x40, 0x16, 0x48, 0x69, |
139 | 0xff, 0x2d, 0x35, 0x61, | 148 | 0xff, 0x2d, 0x4d, 0x61, |
140 | 0xff, 0x29, 0x65, 0x70, | 149 | 0xff, 0x29, 0x85, 0x70, |
141 | 0x01, 0x37, 0xc1, 0x31, | ||
142 | 0x02, 0x28, 0x55, 0x32, | 150 | 0x02, 0x28, 0x55, 0x32, |
143 | 0x01, 0xea, 0x5a, 0x01, | 151 | 0x01, 0xea, 0x5a, 0x01, |
144 | 0x04, 0x3c, 0xf9, 0x30, | 152 | 0x04, 0x44, 0xf9, 0x30, |
153 | 0x01, 0x44, 0xc1, 0x31, | ||
145 | 0x02, 0x28, 0x51, 0x31, | 154 | 0x02, 0x28, 0x51, 0x31, |
146 | 0x01, 0xa8, 0x60, 0x31, | 155 | 0x02, 0xa8, 0x60, 0x31, |
147 | 0x00, 0xa9, 0x60, 0x01, | 156 | 0x01, 0xa4, 0x61, 0x31, |
157 | 0x01, 0x3d, 0x61, 0x31, | ||
148 | 0x01, 0x14, 0xd4, 0x31, | 158 | 0x01, 0x14, 0xd4, 0x31, |
149 | 0x01, 0x50, 0xa1, 0x1a, | 159 | 0x01, 0x56, 0xad, 0x1a, |
150 | 0xff, 0x4e, 0x9d, 0x1a, | 160 | 0xff, 0x54, 0xa9, 0x1a, |
151 | 0xff, 0x4f, 0x9f, 0x22, | 161 | 0xff, 0x55, 0xab, 0x22, |
152 | 0xff, 0x8d, 0x29, 0x71, | 162 | 0xff, 0x8d, 0x41, 0x71, |
153 | 0x80, 0xac, 0x28, 0x71, | 163 | 0x80, 0xac, 0x40, 0x71, |
154 | 0x20, 0x16, 0x28, 0x69, | 164 | 0x20, 0x16, 0x40, 0x69, |
165 | 0x00, 0xac, 0xc4, 0x19, | ||
166 | 0x07, 0xe2, 0x40, 0xf9, | ||
155 | 0x02, 0x8c, 0x51, 0x31, | 167 | 0x02, 0x8c, 0x51, 0x31, |
156 | 0x00, 0xe2, 0x12, 0x41, | 168 | 0x00, 0xe2, 0x24, 0x41, |
157 | 0x01, 0xac, 0x08, 0x31, | 169 | 0x01, 0xac, 0x08, 0x31, |
158 | 0x09, 0xea, 0x5a, 0x01, | 170 | 0x09, 0xea, 0x5a, 0x01, |
159 | 0x02, 0x8c, 0x51, 0x32, | 171 | 0x02, 0x8c, 0x51, 0x32, |
160 | 0xff, 0xea, 0x1a, 0x07, | 172 | 0xff, 0xea, 0x1a, 0x07, |
161 | 0x04, 0x24, 0xf9, 0x30, | 173 | 0x04, 0x24, 0xf9, 0x30, |
162 | 0x1d, 0xea, 0x3a, 0x41, | 174 | 0x1d, 0xea, 0x52, 0x41, |
163 | 0x02, 0x2c, 0x51, 0x31, | 175 | 0x02, 0x2c, 0x51, 0x31, |
164 | 0x04, 0xa8, 0xf9, 0x30, | 176 | 0x04, 0xa8, 0xf9, 0x30, |
165 | 0x19, 0xea, 0x3a, 0x41, | 177 | 0x19, 0xea, 0x52, 0x41, |
166 | 0x06, 0xea, 0x08, 0x81, | 178 | 0x06, 0xea, 0x08, 0x81, |
167 | 0x01, 0xe2, 0x5a, 0x35, | 179 | 0x01, 0xe2, 0x5a, 0x35, |
168 | 0x02, 0xf2, 0xf0, 0x35, | 180 | 0x02, 0xf2, 0xf0, 0x31, |
181 | 0xff, 0xea, 0xd4, 0x0d, | ||
169 | 0x02, 0xf2, 0xf0, 0x31, | 182 | 0x02, 0xf2, 0xf0, 0x31, |
170 | 0x02, 0xf8, 0xe4, 0x35, | 183 | 0x02, 0xf8, 0xe4, 0x35, |
171 | 0x80, 0xea, 0xb2, 0x01, | 184 | 0x80, 0xea, 0xb2, 0x01, |
172 | 0x01, 0xe2, 0x00, 0x30, | 185 | 0x01, 0xe2, 0x00, 0x30, |
173 | 0xff, 0xea, 0xb2, 0x0d, | 186 | 0xff, 0xea, 0xb2, 0x0d, |
174 | 0x80, 0xea, 0xb2, 0x01, | ||
175 | 0x11, 0x00, 0x00, 0x10, | ||
176 | 0xff, 0xea, 0xb2, 0x0d, | ||
177 | 0x01, 0xe2, 0x04, 0x30, | 187 | 0x01, 0xe2, 0x04, 0x30, |
178 | 0x01, 0xea, 0x04, 0x34, | 188 | 0x01, 0xea, 0x04, 0x34, |
179 | 0x02, 0x20, 0xbd, 0x30, | 189 | 0x02, 0x20, 0xbd, 0x30, |
180 | 0x02, 0x20, 0xb9, 0x30, | 190 | 0x02, 0x20, 0xb9, 0x30, |
181 | 0x02, 0x20, 0x51, 0x31, | 191 | 0x02, 0x20, 0x51, 0x31, |
182 | 0x4c, 0x93, 0xd7, 0x28, | 192 | 0x4c, 0x93, 0xd7, 0x28, |
183 | 0x10, 0x92, 0x63, 0x79, | 193 | 0x10, 0x92, 0x77, 0x79, |
184 | 0x01, 0x6b, 0xc0, 0x30, | 194 | 0x01, 0x6b, 0xc0, 0x30, |
185 | 0x02, 0x64, 0xc8, 0x00, | 195 | 0x02, 0x64, 0xc8, 0x00, |
186 | 0x40, 0x3a, 0x74, 0x04, | 196 | 0x40, 0x3a, 0x74, 0x04, |
187 | 0x00, 0xe2, 0x56, 0x58, | 197 | 0x00, 0xe2, 0x76, 0x58, |
188 | 0x33, 0xea, 0x44, 0x59, | 198 | 0x33, 0xea, 0x5e, 0x59, |
189 | 0x33, 0xea, 0x00, 0x00, | 199 | 0x33, 0xea, 0x00, 0x00, |
190 | 0x30, 0x3f, 0xc0, 0x09, | 200 | 0x30, 0x3f, 0xc0, 0x09, |
191 | 0x30, 0xe0, 0x64, 0x61, | 201 | 0x30, 0xe0, 0x78, 0x61, |
192 | 0x20, 0x3f, 0x7a, 0x69, | 202 | 0x20, 0x3f, 0x8e, 0x69, |
193 | 0x10, 0x3f, 0x64, 0x79, | 203 | 0x10, 0x3f, 0x78, 0x79, |
194 | 0x02, 0xea, 0x7e, 0x00, | 204 | 0x02, 0xea, 0x7e, 0x00, |
195 | 0x00, 0xea, 0x44, 0x59, | 205 | 0x00, 0xea, 0x5e, 0x59, |
196 | 0x01, 0xea, 0x00, 0x30, | 206 | 0x01, 0xea, 0x00, 0x30, |
197 | 0x02, 0x48, 0x51, 0x35, | 207 | 0x02, 0x4e, 0x51, 0x35, |
198 | 0x01, 0xea, 0x7e, 0x00, | 208 | 0x01, 0xea, 0x7e, 0x00, |
199 | 0x11, 0xea, 0x44, 0x59, | 209 | 0x11, 0xea, 0x5e, 0x59, |
200 | 0x11, 0xea, 0x00, 0x00, | 210 | 0x11, 0xea, 0x00, 0x00, |
201 | 0x02, 0x48, 0x51, 0x35, | 211 | 0x02, 0x4e, 0x51, 0x35, |
212 | 0xc0, 0x4a, 0x94, 0x00, | ||
213 | 0x04, 0x41, 0x9c, 0x79, | ||
202 | 0x08, 0xea, 0x98, 0x00, | 214 | 0x08, 0xea, 0x98, 0x00, |
203 | 0x08, 0x57, 0xae, 0x00, | 215 | 0x08, 0x57, 0xae, 0x00, |
204 | 0x08, 0x3c, 0x78, 0x00, | 216 | 0x08, 0x3c, 0x78, 0x00, |
205 | 0xf0, 0x49, 0x68, 0x0a, | 217 | 0xf0, 0x49, 0x74, 0x0a, |
206 | 0x0f, 0x67, 0xc0, 0x09, | 218 | 0x0f, 0x67, 0xc0, 0x09, |
207 | 0x00, 0x34, 0x69, 0x02, | 219 | 0x00, 0x3a, 0x75, 0x02, |
208 | 0x20, 0xea, 0x96, 0x00, | 220 | 0x20, 0xea, 0x96, 0x00, |
209 | 0x00, 0xe2, 0xf8, 0x41, | 221 | 0x00, 0xe2, 0x14, 0x42, |
210 | 0x40, 0x3a, 0xae, 0x69, | 222 | 0xc0, 0x4a, 0x94, 0x00, |
223 | 0x40, 0x3a, 0xc8, 0x69, | ||
211 | 0x02, 0x55, 0x06, 0x68, | 224 | 0x02, 0x55, 0x06, 0x68, |
212 | 0x02, 0x56, 0xae, 0x69, | 225 | 0x02, 0x56, 0xc8, 0x69, |
213 | 0xff, 0x5b, 0xae, 0x61, | 226 | 0xff, 0x5b, 0xc8, 0x61, |
214 | 0x02, 0x20, 0x51, 0x31, | 227 | 0x02, 0x20, 0x51, 0x31, |
215 | 0x80, 0xea, 0xb2, 0x01, | 228 | 0x80, 0xea, 0xb2, 0x01, |
216 | 0x44, 0xea, 0x00, 0x00, | 229 | 0x44, 0xea, 0x00, 0x00, |
@@ -218,237 +231,246 @@ static uint8_t seqprog[] = { | |||
218 | 0x33, 0xea, 0x00, 0x00, | 231 | 0x33, 0xea, 0x00, 0x00, |
219 | 0xff, 0xea, 0xb2, 0x09, | 232 | 0xff, 0xea, 0xb2, 0x09, |
220 | 0xff, 0xe0, 0xc0, 0x19, | 233 | 0xff, 0xe0, 0xc0, 0x19, |
221 | 0xff, 0xe0, 0xb0, 0x79, | 234 | 0xff, 0xe0, 0xca, 0x79, |
222 | 0x02, 0xac, 0x51, 0x31, | 235 | 0x02, 0xac, 0x51, 0x31, |
223 | 0x00, 0xe2, 0xa6, 0x41, | 236 | 0x00, 0xe2, 0xc0, 0x41, |
224 | 0x02, 0x5e, 0x50, 0x31, | 237 | 0x02, 0x5e, 0x50, 0x31, |
225 | 0x02, 0xa8, 0xb8, 0x30, | 238 | 0x02, 0xa8, 0xb8, 0x30, |
226 | 0x02, 0x5c, 0x50, 0x31, | 239 | 0x02, 0x5c, 0x50, 0x31, |
227 | 0xff, 0xad, 0xc1, 0x71, | 240 | 0xff, 0xad, 0xdb, 0x71, |
228 | 0x02, 0xac, 0x41, 0x31, | 241 | 0x02, 0xac, 0x41, 0x31, |
229 | 0x02, 0x22, 0x51, 0x31, | 242 | 0x02, 0x22, 0x51, 0x31, |
230 | 0x02, 0xa0, 0x5c, 0x33, | 243 | 0x02, 0xa0, 0x5c, 0x33, |
231 | 0x02, 0xa0, 0x44, 0x32, | 244 | 0x02, 0xa0, 0x44, 0x32, |
232 | 0x00, 0xe2, 0xca, 0x41, | 245 | 0x00, 0xe2, 0xe4, 0x41, |
233 | 0x10, 0x92, 0xcb, 0x69, | 246 | 0x10, 0x92, 0xe5, 0x69, |
234 | 0x3d, 0x93, 0xc9, 0x29, | 247 | 0x3d, 0x93, 0xc9, 0x29, |
235 | 0x01, 0xe4, 0xc8, 0x01, | 248 | 0x01, 0xe4, 0xc8, 0x01, |
236 | 0x01, 0xea, 0xca, 0x01, | 249 | 0x01, 0xea, 0xca, 0x01, |
237 | 0xff, 0xea, 0xda, 0x01, | 250 | 0xff, 0xea, 0xda, 0x01, |
238 | 0x02, 0x20, 0x51, 0x31, | 251 | 0x02, 0x20, 0x51, 0x31, |
239 | 0x02, 0xae, 0x41, 0x32, | 252 | 0x02, 0xae, 0x41, 0x32, |
240 | 0xff, 0x21, 0xd3, 0x61, | 253 | 0xff, 0x21, 0xed, 0x61, |
241 | 0xff, 0xea, 0x46, 0x02, | 254 | 0xff, 0xea, 0x46, 0x02, |
242 | 0x02, 0x5c, 0x50, 0x31, | 255 | 0x02, 0x5c, 0x50, 0x31, |
243 | 0x40, 0xea, 0x96, 0x00, | 256 | 0x40, 0xea, 0x96, 0x00, |
244 | 0x02, 0x56, 0xcc, 0x6d, | 257 | 0x02, 0x56, 0x04, 0x6e, |
245 | 0x01, 0x55, 0xcc, 0x6d, | 258 | 0x01, 0x55, 0x04, 0x6e, |
246 | 0x10, 0x92, 0xdf, 0x79, | 259 | 0x10, 0x92, 0xf9, 0x79, |
247 | 0x10, 0x40, 0xe8, 0x69, | 260 | 0x10, 0x40, 0x02, 0x6a, |
248 | 0x01, 0x56, 0xe8, 0x79, | 261 | 0x01, 0x56, 0x02, 0x7a, |
249 | 0xff, 0x97, 0x07, 0x78, | 262 | 0xff, 0x97, 0x07, 0x78, |
250 | 0x13, 0xea, 0x50, 0x59, | 263 | 0x13, 0xea, 0x64, 0x59, |
251 | 0x13, 0xea, 0x04, 0x00, | 264 | 0x13, 0xea, 0x04, 0x00, |
252 | 0x00, 0xe2, 0x06, 0x40, | 265 | 0x00, 0xe2, 0x06, 0x40, |
253 | 0xbf, 0x3a, 0x74, 0x08, | 266 | 0xbf, 0x3a, 0x74, 0x08, |
267 | 0x04, 0x41, 0x08, 0x7a, | ||
254 | 0x08, 0xea, 0x98, 0x00, | 268 | 0x08, 0xea, 0x98, 0x00, |
255 | 0x08, 0x57, 0xae, 0x00, | 269 | 0x08, 0x57, 0xae, 0x00, |
256 | 0x01, 0x93, 0x69, 0x32, | 270 | 0x01, 0x93, 0x75, 0x32, |
257 | 0x01, 0x94, 0x6b, 0x32, | 271 | 0x01, 0x94, 0x77, 0x32, |
258 | 0x40, 0xea, 0x66, 0x02, | 272 | 0x40, 0xea, 0x72, 0x02, |
259 | 0x08, 0x3c, 0x78, 0x00, | 273 | 0x08, 0x3c, 0x78, 0x00, |
260 | 0x80, 0xea, 0x62, 0x02, | 274 | 0x80, 0xea, 0x6e, 0x02, |
261 | 0x00, 0xe2, 0xb8, 0x5b, | 275 | 0x00, 0xe2, 0xe2, 0x5b, |
262 | 0x01, 0x36, 0xc1, 0x31, | 276 | 0x01, 0x3c, 0xc1, 0x31, |
263 | 0x9f, 0xe0, 0x4c, 0x7c, | 277 | 0x9f, 0xe0, 0x84, 0x7c, |
264 | 0x80, 0xe0, 0x0c, 0x72, | 278 | 0x80, 0xe0, 0x28, 0x72, |
265 | 0xa0, 0xe0, 0x44, 0x72, | 279 | 0xa0, 0xe0, 0x64, 0x72, |
266 | 0xc0, 0xe0, 0x3a, 0x72, | 280 | 0xc0, 0xe0, 0x5a, 0x72, |
267 | 0xe0, 0xe0, 0x74, 0x72, | 281 | 0xe0, 0xe0, 0x94, 0x72, |
268 | 0x01, 0xea, 0x50, 0x59, | 282 | 0x01, 0xea, 0x64, 0x59, |
269 | 0x01, 0xea, 0x04, 0x00, | 283 | 0x01, 0xea, 0x04, 0x00, |
270 | 0x00, 0xe2, 0xf8, 0x41, | 284 | 0x00, 0xe2, 0x14, 0x42, |
271 | 0x80, 0x33, 0x13, 0x7a, | 285 | 0x80, 0x39, 0x2f, 0x7a, |
272 | 0x03, 0xea, 0x50, 0x59, | 286 | 0x03, 0xea, 0x64, 0x59, |
273 | 0x03, 0xea, 0x04, 0x00, | 287 | 0x03, 0xea, 0x04, 0x00, |
274 | 0xee, 0x00, 0x1a, 0x6a, | 288 | 0xee, 0x00, 0x36, 0x6a, |
275 | 0x05, 0xea, 0xb4, 0x00, | 289 | 0x05, 0xea, 0xb4, 0x00, |
276 | 0x33, 0xea, 0x44, 0x59, | 290 | 0x33, 0xea, 0x5e, 0x59, |
277 | 0x33, 0xea, 0x00, 0x00, | 291 | 0x33, 0xea, 0x00, 0x00, |
278 | 0x02, 0xa8, 0x90, 0x32, | 292 | 0x02, 0xa8, 0x9c, 0x32, |
279 | 0x00, 0xe2, 0x6a, 0x59, | 293 | 0x00, 0xe2, 0x7e, 0x59, |
280 | 0xef, 0x96, 0xd5, 0x19, | 294 | 0xef, 0x96, 0xd5, 0x19, |
281 | 0x00, 0xe2, 0x2a, 0x52, | 295 | 0x00, 0xe2, 0x46, 0x52, |
282 | 0x09, 0x80, 0xe1, 0x30, | 296 | 0x09, 0x80, 0xe1, 0x30, |
283 | 0x02, 0xea, 0x36, 0x00, | 297 | 0x02, 0xea, 0x36, 0x00, |
284 | 0xa8, 0xea, 0x32, 0x00, | 298 | 0xa8, 0xea, 0x32, 0x00, |
285 | 0x00, 0xe2, 0x30, 0x42, | 299 | 0x00, 0xe2, 0x4c, 0x42, |
286 | 0x01, 0x96, 0xd1, 0x30, | 300 | 0x01, 0x96, 0xd1, 0x30, |
287 | 0x10, 0x80, 0x89, 0x31, | 301 | 0x10, 0x80, 0x89, 0x31, |
288 | 0x20, 0xea, 0x32, 0x00, | 302 | 0x20, 0xea, 0x32, 0x00, |
289 | 0xbf, 0x33, 0x67, 0x0a, | 303 | 0xbf, 0x39, 0x73, 0x0a, |
290 | 0x20, 0x19, 0x32, 0x6a, | 304 | 0x10, 0x4c, 0x56, 0x6a, |
291 | 0x02, 0x4d, 0xf8, 0x69, | 305 | 0x20, 0x19, 0x4e, 0x6a, |
292 | 0x40, 0x33, 0x67, 0x02, | 306 | 0x20, 0x19, 0x52, 0x6a, |
293 | 0x00, 0xe2, 0xf8, 0x41, | 307 | 0x02, 0x4d, 0x14, 0x6a, |
294 | 0x80, 0x33, 0xb5, 0x6a, | 308 | 0x40, 0x39, 0x73, 0x02, |
309 | 0x00, 0xe2, 0x14, 0x42, | ||
310 | 0x80, 0x39, 0xd5, 0x6a, | ||
295 | 0x01, 0x44, 0x10, 0x33, | 311 | 0x01, 0x44, 0x10, 0x33, |
296 | 0x08, 0x92, 0x25, 0x03, | 312 | 0x08, 0x92, 0x25, 0x03, |
297 | 0x00, 0xe2, 0xf8, 0x41, | 313 | 0x00, 0xe2, 0x14, 0x42, |
298 | 0x10, 0xea, 0x80, 0x00, | 314 | 0x10, 0xea, 0x80, 0x00, |
299 | 0x01, 0x31, 0xc5, 0x31, | 315 | 0x01, 0x37, 0xc5, 0x31, |
300 | 0x80, 0xe2, 0x60, 0x62, | 316 | 0x80, 0xe2, 0x80, 0x62, |
301 | 0x10, 0x92, 0x85, 0x6a, | 317 | 0x10, 0x92, 0xa5, 0x6a, |
302 | 0xc0, 0x94, 0xc5, 0x01, | 318 | 0xc0, 0x94, 0xc5, 0x01, |
303 | 0x40, 0x92, 0x51, 0x6a, | 319 | 0x40, 0x92, 0x71, 0x6a, |
304 | 0xbf, 0xe2, 0xc4, 0x09, | 320 | 0xbf, 0xe2, 0xc4, 0x09, |
305 | 0x20, 0x92, 0x65, 0x7a, | 321 | 0x20, 0x92, 0x85, 0x7a, |
306 | 0x01, 0xe2, 0x88, 0x30, | 322 | 0x01, 0xe2, 0x88, 0x30, |
307 | 0x00, 0xe2, 0xb8, 0x5b, | 323 | 0x00, 0xe2, 0xe2, 0x5b, |
308 | 0xa0, 0x36, 0x6d, 0x62, | 324 | 0xa0, 0x3c, 0x8d, 0x62, |
309 | 0x23, 0x92, 0x89, 0x08, | 325 | 0x23, 0x92, 0x89, 0x08, |
310 | 0x00, 0xe2, 0xb8, 0x5b, | 326 | 0x00, 0xe2, 0xe2, 0x5b, |
311 | 0xa0, 0x36, 0x6d, 0x62, | 327 | 0xa0, 0x3c, 0x8d, 0x62, |
312 | 0x00, 0xa8, 0x64, 0x42, | 328 | 0x00, 0xa8, 0x84, 0x42, |
313 | 0xff, 0xe2, 0x64, 0x62, | 329 | 0xff, 0xe2, 0x84, 0x62, |
314 | 0x00, 0xe2, 0x84, 0x42, | 330 | 0x00, 0xe2, 0xa4, 0x42, |
315 | 0x40, 0xea, 0x98, 0x00, | 331 | 0x40, 0xea, 0x98, 0x00, |
316 | 0x01, 0xe2, 0x88, 0x30, | 332 | 0x01, 0xe2, 0x88, 0x30, |
317 | 0x00, 0xe2, 0xb8, 0x5b, | 333 | 0x00, 0xe2, 0xe2, 0x5b, |
318 | 0xa0, 0x36, 0x43, 0x72, | 334 | 0xa0, 0x3c, 0x63, 0x72, |
319 | 0x40, 0xea, 0x98, 0x00, | 335 | 0x40, 0xea, 0x98, 0x00, |
320 | 0x01, 0x31, 0x89, 0x32, | 336 | 0x01, 0x37, 0x95, 0x32, |
321 | 0x08, 0xea, 0x62, 0x02, | 337 | 0x08, 0xea, 0x6e, 0x02, |
322 | 0x00, 0xe2, 0xf8, 0x41, | 338 | 0x00, 0xe2, 0x14, 0x42, |
323 | 0xe0, 0xea, 0xd4, 0x5b, | 339 | 0xe0, 0xea, 0xfe, 0x5b, |
324 | 0x80, 0xe0, 0xc0, 0x6a, | 340 | 0x80, 0xe0, 0xe0, 0x6a, |
325 | 0x04, 0xe0, 0x66, 0x73, | 341 | 0x04, 0xe0, 0x92, 0x73, |
326 | 0x02, 0xe0, 0x96, 0x73, | 342 | 0x02, 0xe0, 0xc4, 0x73, |
327 | 0x00, 0xea, 0x1e, 0x73, | 343 | 0x00, 0xea, 0x3e, 0x73, |
328 | 0x03, 0xe0, 0xa6, 0x73, | 344 | 0x03, 0xe0, 0xd4, 0x73, |
329 | 0x23, 0xe0, 0x96, 0x72, | 345 | 0x23, 0xe0, 0xb6, 0x72, |
330 | 0x08, 0xe0, 0xbc, 0x72, | 346 | 0x08, 0xe0, 0xdc, 0x72, |
331 | 0x00, 0xe2, 0xb8, 0x5b, | 347 | 0x00, 0xe2, 0xe2, 0x5b, |
332 | 0x07, 0xea, 0x50, 0x59, | 348 | 0x07, 0xea, 0x64, 0x59, |
333 | 0x07, 0xea, 0x04, 0x00, | 349 | 0x07, 0xea, 0x04, 0x00, |
334 | 0x08, 0x42, 0xf9, 0x71, | 350 | 0x08, 0x48, 0x15, 0x72, |
335 | 0x04, 0x42, 0x93, 0x62, | 351 | 0x04, 0x48, 0xb3, 0x62, |
336 | 0x01, 0x43, 0x89, 0x30, | 352 | 0x01, 0x49, 0x89, 0x30, |
337 | 0x00, 0xe2, 0x84, 0x42, | 353 | 0x00, 0xe2, 0xa4, 0x42, |
338 | 0x01, 0x44, 0xd4, 0x31, | 354 | 0x01, 0x44, 0xd4, 0x31, |
339 | 0x00, 0xe2, 0x84, 0x42, | 355 | 0x00, 0xe2, 0xa4, 0x42, |
340 | 0x01, 0x00, 0x60, 0x32, | 356 | 0x01, 0x00, 0x6c, 0x32, |
341 | 0x33, 0xea, 0x44, 0x59, | 357 | 0x33, 0xea, 0x5e, 0x59, |
342 | 0x33, 0xea, 0x00, 0x00, | 358 | 0x33, 0xea, 0x00, 0x00, |
343 | 0x4c, 0x34, 0xc1, 0x28, | 359 | 0x4c, 0x3a, 0xc1, 0x28, |
344 | 0x01, 0x64, 0xc0, 0x31, | 360 | 0x01, 0x64, 0xc0, 0x31, |
345 | 0x00, 0x30, 0x45, 0x59, | 361 | 0x00, 0x36, 0x5f, 0x59, |
346 | 0x01, 0x30, 0x01, 0x30, | 362 | 0x01, 0x36, 0x01, 0x30, |
347 | 0x01, 0xe0, 0xba, 0x7a, | 363 | 0x01, 0xe0, 0xda, 0x7a, |
348 | 0xa0, 0xea, 0xca, 0x5b, | 364 | 0xa0, 0xea, 0xf4, 0x5b, |
349 | 0x01, 0xa0, 0xba, 0x62, | 365 | 0x01, 0xa0, 0xda, 0x62, |
350 | 0x01, 0x84, 0xaf, 0x7a, | 366 | 0x01, 0x84, 0xcf, 0x7a, |
351 | 0x01, 0x95, 0xbd, 0x6a, | 367 | 0x01, 0x95, 0xdd, 0x6a, |
352 | 0x05, 0xea, 0x50, 0x59, | 368 | 0x05, 0xea, 0x64, 0x59, |
353 | 0x05, 0xea, 0x04, 0x00, | 369 | 0x05, 0xea, 0x04, 0x00, |
354 | 0x00, 0xe2, 0xbc, 0x42, | 370 | 0x00, 0xe2, 0xdc, 0x42, |
355 | 0x03, 0xea, 0x50, 0x59, | 371 | 0x03, 0xea, 0x64, 0x59, |
356 | 0x03, 0xea, 0x04, 0x00, | 372 | 0x03, 0xea, 0x04, 0x00, |
357 | 0x00, 0xe2, 0xbc, 0x42, | 373 | 0x00, 0xe2, 0xdc, 0x42, |
358 | 0x07, 0xea, 0xdc, 0x5b, | 374 | 0x07, 0xea, 0x06, 0x5c, |
359 | 0x01, 0x44, 0xd4, 0x31, | 375 | 0x01, 0x44, 0xd4, 0x31, |
360 | 0x00, 0xe2, 0xf8, 0x41, | 376 | 0x00, 0xe2, 0x14, 0x42, |
361 | 0x3f, 0xe0, 0x6a, 0x0a, | 377 | 0x3f, 0xe0, 0x76, 0x0a, |
362 | 0xc0, 0x34, 0xc1, 0x09, | 378 | 0xc0, 0x3a, 0xc1, 0x09, |
363 | 0x00, 0x35, 0x51, 0x01, | 379 | 0x00, 0x3b, 0x51, 0x01, |
364 | 0xff, 0xea, 0x52, 0x09, | 380 | 0xff, 0xea, 0x52, 0x09, |
365 | 0x30, 0x34, 0xc5, 0x09, | 381 | 0x30, 0x3a, 0xc5, 0x09, |
366 | 0x3d, 0xe2, 0xc4, 0x29, | 382 | 0x3d, 0xe2, 0xc4, 0x29, |
367 | 0xb8, 0xe2, 0xc4, 0x19, | 383 | 0xb8, 0xe2, 0xc4, 0x19, |
368 | 0x01, 0xea, 0xc6, 0x01, | 384 | 0x01, 0xea, 0xc6, 0x01, |
369 | 0x02, 0xe2, 0xc8, 0x31, | 385 | 0x02, 0xe2, 0xc8, 0x31, |
370 | 0x02, 0xec, 0x40, 0x31, | 386 | 0x02, 0xec, 0x40, 0x31, |
371 | 0xff, 0xa1, 0xdc, 0x72, | 387 | 0xff, 0xa1, 0xfc, 0x72, |
372 | 0x02, 0xe8, 0xda, 0x31, | 388 | 0x02, 0xe8, 0xda, 0x31, |
373 | 0x02, 0xa0, 0x50, 0x31, | 389 | 0x02, 0xa0, 0x50, 0x31, |
374 | 0x00, 0xe2, 0xfe, 0x42, | 390 | 0x00, 0xe2, 0x1e, 0x43, |
375 | 0x80, 0x33, 0x67, 0x02, | 391 | 0x80, 0x39, 0x73, 0x02, |
376 | 0x01, 0x44, 0xd4, 0x31, | 392 | 0x01, 0x44, 0xd4, 0x31, |
377 | 0x00, 0xe2, 0xb8, 0x5b, | 393 | 0x00, 0xe2, 0xe2, 0x5b, |
378 | 0x01, 0x33, 0x67, 0x02, | 394 | 0x01, 0x39, 0x73, 0x02, |
379 | 0xe0, 0x36, 0x19, 0x63, | 395 | 0xe0, 0x3c, 0x39, 0x63, |
380 | 0x02, 0x33, 0x67, 0x02, | 396 | 0x02, 0x39, 0x73, 0x02, |
381 | 0x20, 0x46, 0x12, 0x63, | 397 | 0x20, 0x46, 0x32, 0x63, |
382 | 0xff, 0xea, 0x52, 0x09, | 398 | 0xff, 0xea, 0x52, 0x09, |
383 | 0xa8, 0xea, 0xca, 0x5b, | 399 | 0xa8, 0xea, 0xf4, 0x5b, |
384 | 0x04, 0x92, 0xf9, 0x7a, | 400 | 0x04, 0x92, 0x19, 0x7b, |
385 | 0x01, 0x34, 0xc1, 0x31, | 401 | 0x01, 0x3a, 0xc1, 0x31, |
386 | 0x00, 0x93, 0xf9, 0x62, | 402 | 0x00, 0x93, 0x19, 0x63, |
387 | 0x01, 0x35, 0xc1, 0x31, | 403 | 0x01, 0x3b, 0xc1, 0x31, |
388 | 0x00, 0x94, 0x03, 0x73, | 404 | 0x00, 0x94, 0x23, 0x73, |
389 | 0x01, 0xa9, 0x52, 0x11, | 405 | 0x01, 0xa9, 0x52, 0x11, |
390 | 0xff, 0xa9, 0xee, 0x6a, | 406 | 0xff, 0xa9, 0x0e, 0x6b, |
391 | 0x00, 0xe2, 0x12, 0x43, | 407 | 0x00, 0xe2, 0x32, 0x43, |
392 | 0x10, 0x33, 0x67, 0x02, | 408 | 0x10, 0x39, 0x73, 0x02, |
393 | 0x04, 0x92, 0x13, 0x7b, | 409 | 0x04, 0x92, 0x33, 0x7b, |
394 | 0xfb, 0x92, 0x25, 0x0b, | 410 | 0xfb, 0x92, 0x25, 0x0b, |
395 | 0xff, 0xea, 0x66, 0x0a, | 411 | 0xff, 0xea, 0x72, 0x0a, |
396 | 0x01, 0xa4, 0x0d, 0x6b, | 412 | 0x01, 0xa4, 0x2d, 0x6b, |
397 | 0x02, 0xa8, 0x90, 0x32, | 413 | 0x02, 0xa8, 0x9c, 0x32, |
398 | 0x00, 0xe2, 0x6a, 0x59, | 414 | 0x00, 0xe2, 0x7e, 0x59, |
399 | 0x10, 0x92, 0xbd, 0x7a, | 415 | 0x10, 0x92, 0xdd, 0x7a, |
400 | 0xff, 0xea, 0xdc, 0x5b, | 416 | 0xff, 0xea, 0x06, 0x5c, |
401 | 0x00, 0xe2, 0xbc, 0x42, | 417 | 0x00, 0xe2, 0xdc, 0x42, |
402 | 0x04, 0xea, 0x50, 0x59, | 418 | 0x04, 0xea, 0x64, 0x59, |
403 | 0x04, 0xea, 0x04, 0x00, | 419 | 0x04, 0xea, 0x04, 0x00, |
404 | 0x00, 0xe2, 0xbc, 0x42, | 420 | 0x00, 0xe2, 0xdc, 0x42, |
405 | 0x04, 0xea, 0x50, 0x59, | 421 | 0x04, 0xea, 0x64, 0x59, |
406 | 0x04, 0xea, 0x04, 0x00, | 422 | 0x04, 0xea, 0x04, 0x00, |
407 | 0x00, 0xe2, 0xf8, 0x41, | 423 | 0x00, 0xe2, 0x14, 0x42, |
408 | 0x08, 0x92, 0xb5, 0x7a, | 424 | 0x08, 0x92, 0xd5, 0x7a, |
409 | 0xc0, 0x33, 0x29, 0x7b, | 425 | 0xc0, 0x39, 0x49, 0x7b, |
410 | 0x80, 0x33, 0xb5, 0x6a, | 426 | 0x80, 0x39, 0xd5, 0x6a, |
411 | 0xff, 0x88, 0x29, 0x6b, | 427 | 0xff, 0x88, 0x49, 0x6b, |
412 | 0x40, 0x33, 0xb5, 0x6a, | 428 | 0x40, 0x39, 0xd5, 0x6a, |
413 | 0x10, 0x92, 0x2f, 0x7b, | 429 | 0x10, 0x92, 0x4f, 0x7b, |
414 | 0x0a, 0xea, 0x50, 0x59, | 430 | 0x0a, 0xea, 0x64, 0x59, |
415 | 0x0a, 0xea, 0x04, 0x00, | 431 | 0x0a, 0xea, 0x04, 0x00, |
416 | 0x00, 0xe2, 0x4e, 0x5b, | 432 | 0x00, 0xe2, 0x6e, 0x5b, |
417 | 0x00, 0xe2, 0x82, 0x43, | 433 | 0x00, 0xe2, 0xae, 0x43, |
418 | 0x50, 0x4b, 0x36, 0x6b, | 434 | 0x50, 0x4b, 0x56, 0x6b, |
419 | 0xbf, 0x3a, 0x74, 0x08, | 435 | 0xbf, 0x3a, 0x74, 0x08, |
420 | 0x01, 0xe0, 0xf4, 0x31, | 436 | 0x01, 0xe0, 0xf4, 0x31, |
421 | 0xff, 0xea, 0xc0, 0x09, | 437 | 0xff, 0xea, 0xc0, 0x09, |
422 | 0x01, 0x2e, 0x5d, 0x1a, | 438 | 0x01, 0x32, 0x65, 0x1a, |
423 | 0x00, 0x2f, 0x5f, 0x22, | 439 | 0x00, 0x33, 0x67, 0x22, |
424 | 0x04, 0x47, 0x8f, 0x02, | 440 | 0x04, 0x4d, 0x9b, 0x02, |
425 | 0x01, 0xfa, 0xc0, 0x35, | 441 | 0x01, 0xfa, 0xc0, 0x35, |
426 | 0x02, 0xa8, 0x84, 0x32, | 442 | 0x02, 0xa8, 0x90, 0x32, |
427 | 0x02, 0xea, 0xb4, 0x00, | 443 | 0x02, 0xea, 0xb4, 0x00, |
428 | 0x33, 0xea, 0x44, 0x59, | 444 | 0x33, 0xea, 0x5e, 0x59, |
429 | 0x33, 0xea, 0x00, 0x00, | 445 | 0x33, 0xea, 0x00, 0x00, |
430 | 0x02, 0x42, 0x51, 0x31, | 446 | 0x02, 0x48, 0x51, 0x31, |
431 | 0xff, 0x90, 0x65, 0x68, | 447 | 0xff, 0x90, 0x85, 0x68, |
432 | 0xff, 0x88, 0x5b, 0x6b, | 448 | 0xff, 0x88, 0x7b, 0x6b, |
433 | 0x01, 0xa4, 0x57, 0x6b, | 449 | 0x01, 0xa4, 0x77, 0x6b, |
434 | 0x02, 0xa4, 0x5f, 0x6b, | 450 | 0x02, 0xa4, 0x7f, 0x6b, |
435 | 0x01, 0x84, 0x5f, 0x7b, | 451 | 0x01, 0x84, 0x7f, 0x7b, |
436 | 0x02, 0x28, 0x19, 0x33, | 452 | 0x02, 0x28, 0x19, 0x33, |
437 | 0x02, 0xa8, 0x50, 0x36, | 453 | 0x02, 0xa8, 0x50, 0x36, |
438 | 0xff, 0x88, 0x5f, 0x73, | 454 | 0xff, 0x88, 0x7f, 0x73, |
439 | 0x00, 0xe2, 0x32, 0x5b, | 455 | 0x00, 0xe2, 0x52, 0x5b, |
440 | 0x02, 0xa8, 0x20, 0x33, | 456 | 0x02, 0xa8, 0x20, 0x33, |
441 | 0x02, 0x2c, 0x19, 0x33, | 457 | 0x04, 0xa4, 0x49, 0x03, |
458 | 0xff, 0xea, 0x1a, 0x03, | ||
459 | 0xff, 0x2d, 0x8b, 0x63, | ||
442 | 0x02, 0xa8, 0x58, 0x32, | 460 | 0x02, 0xa8, 0x58, 0x32, |
443 | 0x04, 0xa4, 0x49, 0x07, | 461 | 0x02, 0xa8, 0x5c, 0x36, |
444 | 0xc0, 0x33, 0xb5, 0x6a, | 462 | 0x02, 0xa8, 0x40, 0x31, |
463 | 0x02, 0x2e, 0x51, 0x31, | ||
464 | 0x02, 0xa0, 0x18, 0x33, | ||
465 | 0x02, 0xa0, 0x5c, 0x36, | ||
466 | 0xc0, 0x39, 0xd5, 0x6a, | ||
445 | 0x04, 0x92, 0x25, 0x03, | 467 | 0x04, 0x92, 0x25, 0x03, |
446 | 0x20, 0x92, 0x83, 0x6b, | 468 | 0x20, 0x92, 0xaf, 0x6b, |
447 | 0x02, 0xa8, 0x40, 0x31, | 469 | 0x02, 0xa8, 0x40, 0x31, |
448 | 0xc0, 0x34, 0xc1, 0x09, | 470 | 0xc0, 0x3a, 0xc1, 0x09, |
449 | 0x00, 0x35, 0x51, 0x01, | 471 | 0x00, 0x3b, 0x51, 0x01, |
450 | 0xff, 0xea, 0x52, 0x09, | 472 | 0xff, 0xea, 0x52, 0x09, |
451 | 0x30, 0x34, 0xc5, 0x09, | 473 | 0x30, 0x3a, 0xc5, 0x09, |
452 | 0x3d, 0xe2, 0xc4, 0x29, | 474 | 0x3d, 0xe2, 0xc4, 0x29, |
453 | 0xb8, 0xe2, 0xc4, 0x19, | 475 | 0xb8, 0xe2, 0xc4, 0x19, |
454 | 0x01, 0xea, 0xc6, 0x01, | 476 | 0x01, 0xea, 0xc6, 0x01, |
@@ -458,69 +480,75 @@ static uint8_t seqprog[] = { | |||
458 | 0xf7, 0x57, 0xae, 0x08, | 480 | 0xf7, 0x57, 0xae, 0x08, |
459 | 0x08, 0xea, 0x98, 0x00, | 481 | 0x08, 0xea, 0x98, 0x00, |
460 | 0x01, 0x44, 0xd4, 0x31, | 482 | 0x01, 0x44, 0xd4, 0x31, |
461 | 0xee, 0x00, 0x8c, 0x6b, | 483 | 0xee, 0x00, 0xb8, 0x6b, |
462 | 0x02, 0xea, 0xb4, 0x00, | 484 | 0x02, 0xea, 0xb4, 0x00, |
463 | 0x00, 0xe2, 0xb4, 0x5b, | 485 | 0xc0, 0xea, 0x72, 0x02, |
464 | 0x09, 0x4c, 0x8e, 0x7b, | 486 | 0x09, 0x4c, 0xba, 0x7b, |
487 | 0x01, 0xea, 0x78, 0x02, | ||
465 | 0x08, 0x4c, 0x06, 0x68, | 488 | 0x08, 0x4c, 0x06, 0x68, |
466 | 0x0b, 0xea, 0x50, 0x59, | 489 | 0x0b, 0xea, 0x64, 0x59, |
467 | 0x0b, 0xea, 0x04, 0x00, | 490 | 0x0b, 0xea, 0x04, 0x00, |
468 | 0x01, 0x44, 0xd4, 0x31, | 491 | 0x01, 0x44, 0xd4, 0x31, |
469 | 0x20, 0x33, 0xf9, 0x79, | 492 | 0x20, 0x39, 0x15, 0x7a, |
470 | 0x00, 0xe2, 0x9e, 0x5b, | 493 | 0x00, 0xe2, 0xcc, 0x5b, |
471 | 0x00, 0xe2, 0xf8, 0x41, | 494 | 0x00, 0xe2, 0x14, 0x42, |
472 | 0x01, 0x84, 0xa3, 0x7b, | 495 | 0x01, 0x84, 0xd1, 0x7b, |
473 | 0x01, 0xa4, 0x49, 0x07, | 496 | 0x01, 0xa4, 0x49, 0x07, |
474 | 0x08, 0x60, 0x30, 0x33, | 497 | 0x08, 0x60, 0x30, 0x33, |
475 | 0x08, 0x80, 0x41, 0x37, | 498 | 0x08, 0x80, 0x41, 0x37, |
476 | 0xdf, 0x33, 0x67, 0x0a, | 499 | 0xdf, 0x39, 0x73, 0x0a, |
477 | 0xee, 0x00, 0xb0, 0x6b, | 500 | 0xee, 0x00, 0xde, 0x6b, |
478 | 0x05, 0xea, 0xb4, 0x00, | 501 | 0x05, 0xea, 0xb4, 0x00, |
479 | 0x33, 0xea, 0x44, 0x59, | 502 | 0x33, 0xea, 0x5e, 0x59, |
480 | 0x33, 0xea, 0x00, 0x00, | 503 | 0x33, 0xea, 0x00, 0x00, |
481 | 0x00, 0xe2, 0x6a, 0x59, | 504 | 0x00, 0xe2, 0x7e, 0x59, |
482 | 0x00, 0xe2, 0xbc, 0x42, | 505 | 0x00, 0xe2, 0xdc, 0x42, |
483 | 0x01, 0xea, 0x6c, 0x02, | 506 | 0xff, 0x42, 0xee, 0x6b, |
484 | 0xc0, 0xea, 0x66, 0x06, | 507 | 0x01, 0x41, 0xe2, 0x6b, |
485 | 0xff, 0x42, 0xc4, 0x6b, | 508 | 0x02, 0x41, 0xe2, 0x7b, |
486 | 0x01, 0x41, 0xb8, 0x6b, | 509 | 0xff, 0x42, 0xee, 0x6b, |
487 | 0x02, 0x41, 0xb8, 0x7b, | 510 | 0x01, 0x41, 0xe2, 0x6b, |
488 | 0xff, 0x42, 0xc4, 0x6b, | 511 | 0x02, 0x41, 0xe2, 0x7b, |
489 | 0x01, 0x41, 0xb8, 0x6b, | 512 | 0xff, 0x42, 0xee, 0x7b, |
490 | 0x02, 0x41, 0xb8, 0x7b, | 513 | 0x04, 0x4c, 0xe2, 0x6b, |
491 | 0xff, 0x42, 0xc4, 0x7b, | 514 | 0xe0, 0x41, 0x78, 0x0e, |
492 | 0x04, 0x4c, 0xb8, 0x6b, | ||
493 | 0xe0, 0x41, 0x6c, 0x0e, | ||
494 | 0x01, 0x44, 0xd4, 0x31, | 515 | 0x01, 0x44, 0xd4, 0x31, |
495 | 0xff, 0x42, 0xcc, 0x7b, | 516 | 0xff, 0x42, 0xf6, 0x7b, |
496 | 0x04, 0x4c, 0xcc, 0x6b, | 517 | 0x04, 0x4c, 0xf6, 0x6b, |
497 | 0xe0, 0x41, 0x6c, 0x0a, | 518 | 0xe0, 0x41, 0x78, 0x0a, |
498 | 0xe0, 0x36, 0xf9, 0x61, | 519 | 0xe0, 0x3c, 0x15, 0x62, |
499 | 0xff, 0xea, 0xca, 0x09, | 520 | 0xff, 0xea, 0xca, 0x09, |
500 | 0x01, 0xe2, 0xc8, 0x31, | 521 | 0x01, 0xe2, 0xc8, 0x31, |
501 | 0x01, 0x46, 0xda, 0x35, | 522 | 0x01, 0x46, 0xda, 0x35, |
502 | 0x01, 0x44, 0xd4, 0x35, | 523 | 0x01, 0x44, 0xd4, 0x35, |
503 | 0x10, 0xea, 0x80, 0x00, | 524 | 0x10, 0xea, 0x80, 0x00, |
504 | 0x01, 0xe2, 0x62, 0x36, | 525 | 0x01, 0xe2, 0x6e, 0x36, |
505 | 0x04, 0xa6, 0xe4, 0x7b, | 526 | 0x04, 0xa6, 0x0e, 0x7c, |
506 | 0xff, 0xea, 0x5a, 0x09, | 527 | 0xff, 0xea, 0x5a, 0x09, |
507 | 0xff, 0xea, 0x4c, 0x0d, | 528 | 0xff, 0xea, 0x4c, 0x0d, |
508 | 0x01, 0xa6, 0x02, 0x6c, | 529 | 0x01, 0xa6, 0x3a, 0x6c, |
509 | 0x10, 0xad, 0x64, 0x78, | 530 | 0x10, 0xad, 0x84, 0x78, |
510 | 0x80, 0xad, 0xfa, 0x6b, | 531 | 0x80, 0xad, 0x32, 0x6c, |
511 | 0x08, 0xad, 0x64, 0x68, | 532 | 0x08, 0xad, 0x84, 0x68, |
533 | 0x20, 0x19, 0x26, 0x7c, | ||
534 | 0x80, 0xea, 0xb2, 0x01, | ||
535 | 0x11, 0x00, 0x00, 0x10, | ||
536 | 0x02, 0xa6, 0x22, 0x7c, | ||
537 | 0xff, 0xea, 0xb2, 0x0d, | ||
538 | 0x11, 0x00, 0x00, 0x10, | ||
539 | 0xff, 0xea, 0xb2, 0x09, | ||
512 | 0x04, 0x84, 0xf9, 0x30, | 540 | 0x04, 0x84, 0xf9, 0x30, |
513 | 0x00, 0xea, 0x08, 0x81, | 541 | 0x00, 0xea, 0x08, 0x81, |
514 | 0xff, 0xea, 0xd4, 0x09, | 542 | 0xff, 0xea, 0xd4, 0x09, |
515 | 0x02, 0x84, 0xf9, 0x88, | 543 | 0x02, 0x84, 0xf9, 0x88, |
516 | 0x0d, 0xea, 0x5a, 0x01, | 544 | 0x0d, 0xea, 0x5a, 0x01, |
517 | 0x04, 0xa6, 0x4c, 0x05, | 545 | 0x04, 0xa6, 0x4c, 0x05, |
518 | 0x04, 0xa6, 0x64, 0x78, | 546 | 0x04, 0xa6, 0x84, 0x78, |
519 | 0xff, 0xea, 0x5a, 0x09, | 547 | 0xff, 0xea, 0x5a, 0x09, |
520 | 0x03, 0x84, 0x59, 0x89, | 548 | 0x03, 0x84, 0x59, 0x89, |
521 | 0x03, 0xea, 0x4c, 0x01, | 549 | 0x03, 0xea, 0x4c, 0x01, |
522 | 0x80, 0x1a, 0x64, 0x78, | 550 | 0x80, 0x1a, 0x84, 0x78, |
523 | 0x08, 0x19, 0x64, 0x78, | 551 | 0x08, 0x19, 0x84, 0x78, |
524 | 0x08, 0xb0, 0xe0, 0x30, | 552 | 0x08, 0xb0, 0xe0, 0x30, |
525 | 0x04, 0xb0, 0xe0, 0x30, | 553 | 0x04, 0xb0, 0xe0, 0x30, |
526 | 0x03, 0xb0, 0xf0, 0x30, | 554 | 0x03, 0xb0, 0xf0, 0x30, |
@@ -533,259 +561,259 @@ static uint8_t seqprog[] = { | |||
533 | 0x00, 0x86, 0x0d, 0x23, | 561 | 0x00, 0x86, 0x0d, 0x23, |
534 | 0x00, 0x87, 0x0f, 0x23, | 562 | 0x00, 0x87, 0x0f, 0x23, |
535 | 0x01, 0x84, 0xc5, 0x31, | 563 | 0x01, 0x84, 0xc5, 0x31, |
536 | 0x80, 0x83, 0x25, 0x7c, | 564 | 0x80, 0x83, 0x5d, 0x7c, |
537 | 0x02, 0xe2, 0xc4, 0x01, | 565 | 0x02, 0xe2, 0xc4, 0x01, |
538 | 0xff, 0xea, 0x4c, 0x09, | 566 | 0xff, 0xea, 0x4c, 0x09, |
539 | 0x01, 0xe2, 0x36, 0x30, | 567 | 0x01, 0xe2, 0x36, 0x30, |
540 | 0xc8, 0x19, 0x32, 0x00, | 568 | 0xc8, 0x19, 0x32, 0x00, |
541 | 0x88, 0x19, 0x32, 0x00, | 569 | 0x88, 0x19, 0x32, 0x00, |
542 | 0x01, 0xac, 0xd4, 0x99, | 570 | 0x01, 0xac, 0xd4, 0x99, |
543 | 0x00, 0xe2, 0x64, 0x50, | 571 | 0x00, 0xe2, 0x84, 0x50, |
544 | 0xfe, 0xa6, 0x4c, 0x0d, | 572 | 0xfe, 0xa6, 0x4c, 0x0d, |
545 | 0x0b, 0x98, 0xe1, 0x30, | 573 | 0x0b, 0x98, 0xe1, 0x30, |
546 | 0xfd, 0xa4, 0x49, 0x09, | 574 | 0xfd, 0xa4, 0x49, 0x09, |
547 | 0x80, 0xa3, 0x39, 0x7c, | 575 | 0x80, 0xa3, 0x71, 0x7c, |
548 | 0x02, 0xa4, 0x48, 0x01, | 576 | 0x02, 0xa4, 0x48, 0x01, |
549 | 0x01, 0xa4, 0x36, 0x30, | 577 | 0x01, 0xa4, 0x36, 0x30, |
550 | 0xa8, 0xea, 0x32, 0x00, | 578 | 0xa8, 0xea, 0x32, 0x00, |
551 | 0xfd, 0xa4, 0x49, 0x0b, | 579 | 0xfd, 0xa4, 0x49, 0x0b, |
552 | 0x05, 0xa3, 0x07, 0x33, | 580 | 0x05, 0xa3, 0x07, 0x33, |
553 | 0x80, 0x83, 0x45, 0x6c, | 581 | 0x80, 0x83, 0x7d, 0x6c, |
554 | 0x02, 0xea, 0x4c, 0x05, | 582 | 0x02, 0xea, 0x4c, 0x05, |
555 | 0xff, 0xea, 0x4c, 0x0d, | 583 | 0xff, 0xea, 0x4c, 0x0d, |
556 | 0x00, 0xe2, 0x3e, 0x59, | 584 | 0x00, 0xe2, 0x56, 0x59, |
557 | 0x02, 0xa6, 0xe6, 0x6b, | 585 | 0x02, 0xa6, 0x10, 0x6c, |
558 | 0x80, 0xf9, 0xf2, 0x05, | 586 | 0x80, 0xf9, 0xf2, 0x05, |
559 | 0xc0, 0x33, 0x53, 0x7c, | 587 | 0xc0, 0x39, 0x8b, 0x7c, |
560 | 0x03, 0xea, 0x50, 0x59, | 588 | 0x03, 0xea, 0x64, 0x59, |
561 | 0x03, 0xea, 0x04, 0x00, | 589 | 0x03, 0xea, 0x04, 0x00, |
562 | 0x20, 0x33, 0x77, 0x7c, | 590 | 0x20, 0x39, 0xaf, 0x7c, |
563 | 0x01, 0x84, 0x5d, 0x6c, | 591 | 0x01, 0x84, 0x95, 0x6c, |
564 | 0x06, 0xea, 0x50, 0x59, | 592 | 0x06, 0xea, 0x64, 0x59, |
565 | 0x06, 0xea, 0x04, 0x00, | 593 | 0x06, 0xea, 0x04, 0x00, |
566 | 0x00, 0xe2, 0x7a, 0x44, | 594 | 0x00, 0xe2, 0xb2, 0x44, |
567 | 0x01, 0x00, 0x60, 0x32, | 595 | 0x01, 0x00, 0x6c, 0x32, |
568 | 0xee, 0x00, 0x66, 0x6c, | 596 | 0xee, 0x00, 0x9e, 0x6c, |
569 | 0x05, 0xea, 0xb4, 0x00, | 597 | 0x05, 0xea, 0xb4, 0x00, |
570 | 0x33, 0xea, 0x44, 0x59, | 598 | 0x33, 0xea, 0x5e, 0x59, |
571 | 0x33, 0xea, 0x00, 0x00, | 599 | 0x33, 0xea, 0x00, 0x00, |
572 | 0x80, 0x3d, 0x7a, 0x00, | 600 | 0x80, 0x3d, 0x7a, 0x00, |
573 | 0xfc, 0x42, 0x68, 0x7c, | 601 | 0xfc, 0x42, 0xa0, 0x7c, |
574 | 0x7f, 0x3d, 0x7a, 0x08, | 602 | 0x7f, 0x3d, 0x7a, 0x08, |
575 | 0x00, 0x30, 0x45, 0x59, | 603 | 0x00, 0x36, 0x5f, 0x59, |
576 | 0x01, 0x30, 0x01, 0x30, | 604 | 0x01, 0x36, 0x01, 0x30, |
577 | 0x09, 0xea, 0x50, 0x59, | 605 | 0x09, 0xea, 0x64, 0x59, |
578 | 0x09, 0xea, 0x04, 0x00, | 606 | 0x09, 0xea, 0x04, 0x00, |
579 | 0x00, 0xe2, 0xf8, 0x41, | 607 | 0x00, 0xe2, 0x14, 0x42, |
580 | 0x01, 0xa4, 0x5d, 0x6c, | 608 | 0x01, 0xa4, 0x95, 0x6c, |
581 | 0x00, 0xe2, 0x30, 0x5c, | 609 | 0x00, 0xe2, 0x68, 0x5c, |
582 | 0x20, 0x33, 0x67, 0x02, | 610 | 0x20, 0x39, 0x73, 0x02, |
583 | 0x01, 0x00, 0x60, 0x32, | 611 | 0x01, 0x00, 0x6c, 0x32, |
584 | 0x02, 0xa6, 0x82, 0x7c, | 612 | 0x02, 0xa6, 0xba, 0x7c, |
585 | 0x00, 0xe2, 0x46, 0x5c, | 613 | 0x00, 0xe2, 0x7e, 0x5c, |
586 | 0x00, 0xe2, 0x56, 0x58, | 614 | 0x00, 0xe2, 0x76, 0x58, |
587 | 0x00, 0xe2, 0x66, 0x58, | 615 | 0x00, 0xe2, 0x86, 0x58, |
588 | 0x00, 0xe2, 0x3a, 0x58, | 616 | 0x00, 0xe2, 0x5a, 0x58, |
589 | 0x00, 0x30, 0x45, 0x59, | 617 | 0x00, 0x36, 0x5f, 0x59, |
590 | 0x01, 0x30, 0x01, 0x30, | 618 | 0x01, 0x36, 0x01, 0x30, |
591 | 0x20, 0x19, 0x82, 0x6c, | 619 | 0x20, 0x19, 0xba, 0x6c, |
592 | 0x00, 0xe2, 0xb2, 0x5c, | 620 | 0x00, 0xe2, 0xea, 0x5c, |
593 | 0x04, 0x19, 0x9c, 0x6c, | 621 | 0x04, 0x19, 0xd4, 0x6c, |
594 | 0x02, 0x19, 0x32, 0x00, | 622 | 0x02, 0x19, 0x32, 0x00, |
595 | 0x01, 0x84, 0x9d, 0x7c, | 623 | 0x01, 0x84, 0xd5, 0x7c, |
596 | 0x01, 0x1b, 0x96, 0x7c, | 624 | 0x01, 0x1b, 0xce, 0x7c, |
597 | 0x01, 0x1a, 0x9c, 0x6c, | 625 | 0x01, 0x1a, 0xd4, 0x6c, |
598 | 0x00, 0xe2, 0x4c, 0x44, | 626 | 0x00, 0xe2, 0x84, 0x44, |
599 | 0x80, 0x4b, 0xa2, 0x6c, | 627 | 0x80, 0x4b, 0xda, 0x6c, |
600 | 0x01, 0x4c, 0x9e, 0x7c, | 628 | 0x01, 0x4c, 0xd6, 0x7c, |
601 | 0x03, 0x42, 0x4c, 0x6c, | 629 | 0x03, 0x42, 0x84, 0x6c, |
602 | 0x00, 0xe2, 0xe0, 0x5b, | 630 | 0x00, 0xe2, 0x0a, 0x5c, |
603 | 0x80, 0xf9, 0xf2, 0x01, | 631 | 0x80, 0xf9, 0xf2, 0x01, |
604 | 0x04, 0x33, 0xf9, 0x79, | 632 | 0x04, 0x39, 0x15, 0x7a, |
605 | 0x00, 0xe2, 0xf8, 0x41, | 633 | 0x00, 0xe2, 0x14, 0x42, |
606 | 0x08, 0x5d, 0xba, 0x6c, | 634 | 0x08, 0x5d, 0xf2, 0x6c, |
607 | 0x00, 0xe2, 0x56, 0x58, | 635 | 0x00, 0xe2, 0x76, 0x58, |
608 | 0x00, 0x30, 0x45, 0x59, | 636 | 0x00, 0x36, 0x5f, 0x59, |
609 | 0x01, 0x30, 0x01, 0x30, | 637 | 0x01, 0x36, 0x01, 0x30, |
610 | 0x02, 0x1b, 0xaa, 0x7c, | 638 | 0x02, 0x1b, 0xe2, 0x7c, |
611 | 0x08, 0x5d, 0xb8, 0x7c, | 639 | 0x08, 0x5d, 0xf0, 0x7c, |
612 | 0x03, 0x68, 0x00, 0x37, | 640 | 0x03, 0x68, 0x00, 0x37, |
613 | 0x01, 0x84, 0x09, 0x07, | 641 | 0x01, 0x84, 0x09, 0x07, |
614 | 0x80, 0x1b, 0xc4, 0x7c, | 642 | 0x80, 0x1b, 0xfc, 0x7c, |
615 | 0x80, 0x84, 0xc5, 0x6c, | 643 | 0x80, 0x84, 0xfd, 0x6c, |
616 | 0xff, 0x85, 0x0b, 0x1b, | 644 | 0xff, 0x85, 0x0b, 0x1b, |
617 | 0xff, 0x86, 0x0d, 0x23, | 645 | 0xff, 0x86, 0x0d, 0x23, |
618 | 0xff, 0x87, 0x0f, 0x23, | 646 | 0xff, 0x87, 0x0f, 0x23, |
619 | 0xf8, 0x1b, 0x08, 0x0b, | 647 | 0xf8, 0x1b, 0x08, 0x0b, |
620 | 0xff, 0xea, 0x06, 0x0b, | 648 | 0xff, 0xea, 0x06, 0x0b, |
621 | 0x03, 0x68, 0x00, 0x37, | 649 | 0x03, 0x68, 0x00, 0x37, |
622 | 0x00, 0xe2, 0xc4, 0x58, | 650 | 0x00, 0xe2, 0xd6, 0x58, |
623 | 0x10, 0xea, 0x18, 0x00, | 651 | 0x10, 0xea, 0x18, 0x00, |
624 | 0xf9, 0xd9, 0xb2, 0x0d, | 652 | 0xf9, 0xd9, 0xb2, 0x0d, |
625 | 0x01, 0xd9, 0xb2, 0x05, | 653 | 0x01, 0xd9, 0xb2, 0x05, |
626 | 0x01, 0x52, 0x48, 0x31, | 654 | 0x01, 0x52, 0x48, 0x31, |
627 | 0x20, 0xa4, 0xee, 0x7c, | 655 | 0x20, 0xa4, 0x26, 0x7d, |
628 | 0x20, 0x5b, 0xee, 0x7c, | 656 | 0x20, 0x5b, 0x26, 0x7d, |
629 | 0x80, 0xf9, 0xfc, 0x7c, | 657 | 0x80, 0xf9, 0x34, 0x7d, |
630 | 0x02, 0xea, 0xb4, 0x00, | 658 | 0x02, 0xea, 0xb4, 0x00, |
631 | 0x11, 0x00, 0x00, 0x10, | 659 | 0x11, 0x00, 0x00, 0x10, |
632 | 0x04, 0x19, 0x08, 0x7d, | 660 | 0x04, 0x19, 0x40, 0x7d, |
633 | 0xdf, 0x19, 0x32, 0x08, | 661 | 0xdf, 0x19, 0x32, 0x08, |
634 | 0x60, 0x5b, 0xe6, 0x6c, | 662 | 0x60, 0x5b, 0x40, 0x6d, |
635 | 0x01, 0x4c, 0xe2, 0x7c, | 663 | 0x01, 0x4c, 0x1a, 0x7d, |
636 | 0x20, 0x19, 0x32, 0x00, | 664 | 0x20, 0x19, 0x32, 0x00, |
637 | 0x01, 0xd9, 0xb2, 0x05, | 665 | 0x01, 0xd9, 0xb2, 0x05, |
638 | 0x02, 0xea, 0xb4, 0x00, | 666 | 0x02, 0xea, 0xb4, 0x00, |
639 | 0x01, 0xd9, 0xb2, 0x05, | 667 | 0x01, 0xd9, 0xb2, 0x05, |
640 | 0x10, 0x5b, 0x00, 0x6d, | 668 | 0x10, 0x5b, 0x38, 0x6d, |
641 | 0x08, 0x5b, 0x0a, 0x6d, | 669 | 0x08, 0x5b, 0x42, 0x6d, |
642 | 0x20, 0x5b, 0xfa, 0x6c, | 670 | 0x20, 0x5b, 0x32, 0x6d, |
643 | 0x02, 0x5b, 0x2a, 0x6d, | 671 | 0x02, 0x5b, 0x62, 0x6d, |
644 | 0x0e, 0xea, 0x50, 0x59, | 672 | 0x0e, 0xea, 0x64, 0x59, |
645 | 0x0e, 0xea, 0x04, 0x00, | 673 | 0x0e, 0xea, 0x04, 0x00, |
646 | 0x80, 0xf9, 0xea, 0x6c, | 674 | 0x80, 0xf9, 0x22, 0x6d, |
647 | 0xdf, 0x5c, 0xb8, 0x08, | 675 | 0xdf, 0x5c, 0xb8, 0x08, |
648 | 0x01, 0xd9, 0xb2, 0x05, | 676 | 0x01, 0xd9, 0xb2, 0x05, |
649 | 0x01, 0xa4, 0xe5, 0x6d, | 677 | 0x01, 0xa4, 0x1d, 0x6e, |
650 | 0x00, 0xe2, 0x30, 0x5c, | 678 | 0x00, 0xe2, 0x68, 0x5c, |
651 | 0x00, 0xe2, 0x34, 0x5d, | 679 | 0x00, 0xe2, 0x6c, 0x5d, |
652 | 0x01, 0x90, 0x21, 0x1b, | 680 | 0x01, 0x90, 0x21, 0x1b, |
653 | 0x01, 0xd9, 0xb2, 0x05, | 681 | 0x01, 0xd9, 0xb2, 0x05, |
654 | 0x00, 0xe2, 0x32, 0x5b, | 682 | 0x00, 0xe2, 0x52, 0x5b, |
655 | 0xf3, 0x96, 0xd5, 0x19, | 683 | 0xf3, 0x96, 0xd5, 0x19, |
656 | 0x00, 0xe2, 0x18, 0x55, | 684 | 0x00, 0xe2, 0x50, 0x55, |
657 | 0x80, 0x96, 0x19, 0x6d, | 685 | 0x80, 0x96, 0x51, 0x6d, |
658 | 0x0f, 0xea, 0x50, 0x59, | 686 | 0x0f, 0xea, 0x64, 0x59, |
659 | 0x0f, 0xea, 0x04, 0x00, | 687 | 0x0f, 0xea, 0x04, 0x00, |
660 | 0x00, 0xe2, 0x20, 0x45, | 688 | 0x00, 0xe2, 0x58, 0x45, |
661 | 0x04, 0x8c, 0xe1, 0x30, | 689 | 0x04, 0x8c, 0xe1, 0x30, |
662 | 0x01, 0xea, 0xf2, 0x00, | 690 | 0x01, 0xea, 0xf2, 0x00, |
663 | 0x02, 0xea, 0x36, 0x00, | 691 | 0x02, 0xea, 0x36, 0x00, |
664 | 0xa8, 0xea, 0x32, 0x00, | 692 | 0xa8, 0xea, 0x32, 0x00, |
665 | 0xff, 0x97, 0x27, 0x7d, | 693 | 0xff, 0x97, 0x5f, 0x7d, |
666 | 0x14, 0xea, 0x50, 0x59, | 694 | 0x14, 0xea, 0x64, 0x59, |
667 | 0x14, 0xea, 0x04, 0x00, | 695 | 0x14, 0xea, 0x04, 0x00, |
668 | 0x00, 0xe2, 0x96, 0x5d, | 696 | 0x00, 0xe2, 0xce, 0x5d, |
669 | 0x01, 0xd9, 0xb2, 0x05, | 697 | 0x01, 0xd9, 0xb2, 0x05, |
670 | 0x09, 0x80, 0xe1, 0x30, | 698 | 0x09, 0x80, 0xe1, 0x30, |
671 | 0x02, 0xea, 0x36, 0x00, | 699 | 0x02, 0xea, 0x36, 0x00, |
672 | 0xa8, 0xea, 0x32, 0x00, | 700 | 0xa8, 0xea, 0x32, 0x00, |
673 | 0x00, 0xe2, 0x8e, 0x5d, | 701 | 0x00, 0xe2, 0xc6, 0x5d, |
674 | 0x01, 0xd9, 0xb2, 0x05, | 702 | 0x01, 0xd9, 0xb2, 0x05, |
675 | 0x02, 0xa6, 0x44, 0x7d, | 703 | 0x02, 0xa6, 0x7c, 0x7d, |
676 | 0x00, 0xe2, 0x3e, 0x59, | 704 | 0x00, 0xe2, 0x56, 0x59, |
677 | 0x20, 0x5b, 0x52, 0x6d, | 705 | 0x20, 0x5b, 0x8a, 0x6d, |
678 | 0xfc, 0x42, 0x3e, 0x7d, | 706 | 0xfc, 0x42, 0x76, 0x7d, |
679 | 0x10, 0x40, 0x40, 0x6d, | 707 | 0x10, 0x40, 0x78, 0x6d, |
680 | 0x20, 0x4d, 0x42, 0x7d, | 708 | 0x20, 0x4d, 0x7a, 0x7d, |
681 | 0x08, 0x5d, 0x52, 0x6d, | 709 | 0x08, 0x5d, 0x8a, 0x6d, |
682 | 0x02, 0xa6, 0xe6, 0x6b, | 710 | 0x02, 0xa6, 0x10, 0x6c, |
683 | 0x00, 0xe2, 0x3e, 0x59, | 711 | 0x00, 0xe2, 0x56, 0x59, |
684 | 0x20, 0x5b, 0x52, 0x6d, | 712 | 0x20, 0x5b, 0x8a, 0x6d, |
685 | 0x01, 0x1b, 0x72, 0x6d, | 713 | 0x01, 0x1b, 0xaa, 0x6d, |
686 | 0xfc, 0x42, 0x4e, 0x7d, | 714 | 0xfc, 0x42, 0x86, 0x7d, |
687 | 0x10, 0x40, 0x50, 0x6d, | 715 | 0x10, 0x40, 0x88, 0x6d, |
688 | 0x20, 0x4d, 0x64, 0x78, | 716 | 0x20, 0x4d, 0x84, 0x78, |
689 | 0x08, 0x5d, 0x64, 0x78, | 717 | 0x08, 0x5d, 0x84, 0x78, |
690 | 0x02, 0x19, 0x32, 0x00, | 718 | 0x02, 0x19, 0x32, 0x00, |
691 | 0x01, 0x5b, 0x40, 0x31, | 719 | 0x01, 0x5b, 0x40, 0x31, |
692 | 0x00, 0xe2, 0xb2, 0x5c, | 720 | 0x00, 0xe2, 0xea, 0x5c, |
693 | 0x00, 0xe2, 0x9e, 0x5b, | 721 | 0x00, 0xe2, 0xcc, 0x5b, |
694 | 0x20, 0xea, 0xb6, 0x00, | 722 | 0x20, 0xea, 0xb6, 0x00, |
695 | 0x00, 0xe2, 0xe0, 0x5b, | 723 | 0x00, 0xe2, 0x0a, 0x5c, |
696 | 0x20, 0x5c, 0xb8, 0x00, | 724 | 0x20, 0x5c, 0xb8, 0x00, |
697 | 0x04, 0x19, 0x68, 0x6d, | 725 | 0x04, 0x19, 0xa0, 0x6d, |
698 | 0x01, 0x1a, 0x68, 0x6d, | 726 | 0x01, 0x1a, 0xa0, 0x6d, |
699 | 0x00, 0xe2, 0x3e, 0x59, | 727 | 0x00, 0xe2, 0x56, 0x59, |
700 | 0x01, 0x1a, 0x64, 0x78, | 728 | 0x01, 0x1a, 0x84, 0x78, |
701 | 0x80, 0xf9, 0xf2, 0x01, | 729 | 0x80, 0xf9, 0xf2, 0x01, |
702 | 0x20, 0xa0, 0xcc, 0x7d, | 730 | 0x20, 0xa0, 0x04, 0x7e, |
703 | 0xff, 0x90, 0x21, 0x1b, | 731 | 0xff, 0x90, 0x21, 0x1b, |
704 | 0x08, 0x92, 0x43, 0x6b, | 732 | 0x08, 0x92, 0x63, 0x6b, |
705 | 0x02, 0xea, 0xb4, 0x04, | 733 | 0x02, 0xea, 0xb4, 0x04, |
706 | 0x01, 0xa4, 0x49, 0x03, | 734 | 0x01, 0xa4, 0x49, 0x03, |
707 | 0x40, 0x5b, 0x82, 0x6d, | 735 | 0x40, 0x5b, 0xba, 0x6d, |
708 | 0x00, 0xe2, 0x3e, 0x59, | 736 | 0x00, 0xe2, 0x56, 0x59, |
709 | 0x40, 0x5b, 0x82, 0x6d, | 737 | 0x40, 0x5b, 0xba, 0x6d, |
710 | 0x04, 0x5d, 0xe6, 0x7d, | 738 | 0x04, 0x5d, 0x1e, 0x7e, |
711 | 0x01, 0x1a, 0xe6, 0x7d, | 739 | 0x01, 0x1a, 0x1e, 0x7e, |
712 | 0x20, 0x4d, 0x64, 0x78, | 740 | 0x20, 0x4d, 0x84, 0x78, |
713 | 0x40, 0x5b, 0xcc, 0x7d, | 741 | 0x40, 0x5b, 0x04, 0x7e, |
714 | 0x04, 0x5d, 0xe6, 0x7d, | 742 | 0x04, 0x5d, 0x1e, 0x7e, |
715 | 0x01, 0x1a, 0xe6, 0x7d, | 743 | 0x01, 0x1a, 0x1e, 0x7e, |
716 | 0x80, 0xf9, 0xf2, 0x01, | 744 | 0x80, 0xf9, 0xf2, 0x01, |
717 | 0xff, 0x90, 0x21, 0x1b, | 745 | 0xff, 0x90, 0x21, 0x1b, |
718 | 0x08, 0x92, 0x43, 0x6b, | 746 | 0x08, 0x92, 0x63, 0x6b, |
719 | 0x02, 0xea, 0xb4, 0x04, | 747 | 0x02, 0xea, 0xb4, 0x04, |
720 | 0x00, 0xe2, 0x3e, 0x59, | 748 | 0x00, 0xe2, 0x56, 0x59, |
721 | 0x01, 0x1b, 0x64, 0x78, | 749 | 0x01, 0x1b, 0x84, 0x78, |
722 | 0x80, 0xf9, 0xf2, 0x01, | 750 | 0x80, 0xf9, 0xf2, 0x01, |
723 | 0x02, 0xea, 0xb4, 0x04, | 751 | 0x02, 0xea, 0xb4, 0x04, |
724 | 0x00, 0xe2, 0x3e, 0x59, | 752 | 0x00, 0xe2, 0x56, 0x59, |
725 | 0x01, 0x1b, 0xaa, 0x6d, | 753 | 0x01, 0x1b, 0xe2, 0x6d, |
726 | 0x40, 0x5b, 0xb8, 0x7d, | 754 | 0x40, 0x5b, 0xf0, 0x7d, |
727 | 0x01, 0x1b, 0xaa, 0x6d, | 755 | 0x01, 0x1b, 0xe2, 0x6d, |
728 | 0x02, 0x19, 0x32, 0x00, | 756 | 0x02, 0x19, 0x32, 0x00, |
729 | 0x01, 0x1a, 0x64, 0x78, | 757 | 0x01, 0x1a, 0x84, 0x78, |
730 | 0x80, 0xf9, 0xf2, 0x01, | 758 | 0x80, 0xf9, 0xf2, 0x01, |
731 | 0xff, 0xea, 0x10, 0x03, | 759 | 0xff, 0xea, 0x10, 0x03, |
732 | 0x08, 0x92, 0x25, 0x03, | 760 | 0x08, 0x92, 0x25, 0x03, |
733 | 0x00, 0xe2, 0x42, 0x43, | 761 | 0x00, 0xe2, 0x62, 0x43, |
734 | 0x01, 0x1a, 0xb4, 0x7d, | 762 | 0x01, 0x1a, 0xec, 0x7d, |
735 | 0x40, 0x5b, 0xb0, 0x7d, | 763 | 0x40, 0x5b, 0xe8, 0x7d, |
736 | 0x01, 0x1a, 0x9e, 0x6d, | 764 | 0x01, 0x1a, 0xd6, 0x6d, |
737 | 0xfc, 0x42, 0x64, 0x78, | 765 | 0xfc, 0x42, 0x84, 0x78, |
738 | 0x01, 0x1a, 0xb8, 0x6d, | 766 | 0x01, 0x1a, 0xf0, 0x6d, |
739 | 0x10, 0xea, 0x50, 0x59, | 767 | 0x10, 0xea, 0x64, 0x59, |
740 | 0x10, 0xea, 0x04, 0x00, | 768 | 0x10, 0xea, 0x04, 0x00, |
741 | 0xfc, 0x42, 0x64, 0x78, | 769 | 0xfc, 0x42, 0x84, 0x78, |
742 | 0x10, 0x40, 0xbe, 0x6d, | 770 | 0x10, 0x40, 0xf6, 0x6d, |
743 | 0x20, 0x4d, 0x64, 0x78, | 771 | 0x20, 0x4d, 0x84, 0x78, |
744 | 0x40, 0x5b, 0x9e, 0x6d, | 772 | 0x40, 0x5b, 0xd6, 0x6d, |
745 | 0x01, 0x1a, 0x64, 0x78, | 773 | 0x01, 0x1a, 0x84, 0x78, |
746 | 0x01, 0x90, 0x21, 0x1b, | 774 | 0x01, 0x90, 0x21, 0x1b, |
747 | 0x30, 0x3f, 0xc0, 0x09, | 775 | 0x30, 0x3f, 0xc0, 0x09, |
748 | 0x30, 0xe0, 0x64, 0x60, | 776 | 0x30, 0xe0, 0x84, 0x60, |
749 | 0x40, 0x4b, 0x64, 0x68, | 777 | 0x40, 0x4b, 0x84, 0x68, |
750 | 0xff, 0xea, 0x52, 0x01, | 778 | 0xff, 0xea, 0x52, 0x01, |
751 | 0xee, 0x00, 0xd2, 0x6d, | 779 | 0xee, 0x00, 0x0c, 0x6e, |
752 | 0x80, 0xf9, 0xf2, 0x01, | 780 | 0x80, 0xf9, 0xf2, 0x01, |
753 | 0xff, 0x90, 0x21, 0x1b, | 781 | 0xff, 0x90, 0x21, 0x1b, |
754 | 0x02, 0xea, 0xb4, 0x00, | 782 | 0x02, 0xea, 0xb4, 0x00, |
755 | 0x20, 0xea, 0x9a, 0x00, | 783 | 0x20, 0xea, 0x9a, 0x00, |
756 | 0xf3, 0x42, 0xde, 0x6d, | 784 | 0xf3, 0x42, 0x16, 0x6e, |
757 | 0x12, 0xea, 0x50, 0x59, | 785 | 0x12, 0xea, 0x64, 0x59, |
758 | 0x12, 0xea, 0x04, 0x00, | 786 | 0x12, 0xea, 0x04, 0x00, |
759 | 0x00, 0xe2, 0xf8, 0x41, | 787 | 0x00, 0xe2, 0x14, 0x42, |
760 | 0x0d, 0xea, 0x50, 0x59, | 788 | 0x0d, 0xea, 0x64, 0x59, |
761 | 0x0d, 0xea, 0x04, 0x00, | 789 | 0x0d, 0xea, 0x04, 0x00, |
762 | 0x00, 0xe2, 0xf8, 0x41, | 790 | 0x00, 0xe2, 0x14, 0x42, |
763 | 0x01, 0x90, 0x21, 0x1b, | 791 | 0x01, 0x90, 0x21, 0x1b, |
764 | 0x11, 0xea, 0x50, 0x59, | 792 | 0x11, 0xea, 0x64, 0x59, |
765 | 0x11, 0xea, 0x04, 0x00, | 793 | 0x11, 0xea, 0x04, 0x00, |
766 | 0x00, 0xe2, 0x32, 0x5b, | 794 | 0x00, 0xe2, 0x52, 0x5b, |
767 | 0x08, 0x5a, 0xb4, 0x00, | 795 | 0x08, 0x5a, 0xb4, 0x00, |
768 | 0x00, 0xe2, 0x0c, 0x5e, | 796 | 0x00, 0xe2, 0x44, 0x5e, |
769 | 0xa8, 0xea, 0x32, 0x00, | 797 | 0xa8, 0xea, 0x32, 0x00, |
770 | 0x00, 0xe2, 0x3e, 0x59, | 798 | 0x00, 0xe2, 0x56, 0x59, |
771 | 0x80, 0x1a, 0xfa, 0x7d, | 799 | 0x80, 0x1a, 0x32, 0x7e, |
772 | 0x00, 0xe2, 0x0c, 0x5e, | 800 | 0x00, 0xe2, 0x44, 0x5e, |
773 | 0x80, 0x19, 0x32, 0x00, | 801 | 0x80, 0x19, 0x32, 0x00, |
774 | 0x40, 0x5b, 0x00, 0x6e, | 802 | 0x40, 0x5b, 0x38, 0x6e, |
775 | 0x08, 0x5a, 0x00, 0x7e, | 803 | 0x08, 0x5a, 0x38, 0x7e, |
776 | 0x20, 0x4d, 0x64, 0x78, | 804 | 0x20, 0x4d, 0x84, 0x78, |
777 | 0x02, 0x84, 0x09, 0x03, | 805 | 0x02, 0x84, 0x09, 0x03, |
778 | 0x40, 0x5b, 0xcc, 0x7d, | 806 | 0x40, 0x5b, 0x04, 0x7e, |
779 | 0xff, 0x90, 0x21, 0x1b, | 807 | 0xff, 0x90, 0x21, 0x1b, |
780 | 0x80, 0xf9, 0xf2, 0x01, | 808 | 0x80, 0xf9, 0xf2, 0x01, |
781 | 0x08, 0x92, 0x43, 0x6b, | 809 | 0x08, 0x92, 0x63, 0x6b, |
782 | 0x02, 0xea, 0xb4, 0x04, | 810 | 0x02, 0xea, 0xb4, 0x04, |
783 | 0x01, 0x38, 0xe1, 0x30, | 811 | 0x01, 0x40, 0xe1, 0x30, |
784 | 0x05, 0x39, 0xe3, 0x98, | 812 | 0x05, 0x41, 0xe3, 0x98, |
785 | 0x01, 0xe0, 0xf4, 0x31, | 813 | 0x01, 0xe0, 0xf4, 0x31, |
786 | 0xff, 0xea, 0xc0, 0x09, | 814 | 0xff, 0xea, 0xc0, 0x09, |
787 | 0x00, 0x3a, 0xe5, 0x20, | 815 | 0x00, 0x42, 0xe5, 0x20, |
788 | 0x00, 0x3b, 0xe7, 0x20, | 816 | 0x00, 0x43, 0xe7, 0x20, |
789 | 0x01, 0xfa, 0xc0, 0x31, | 817 | 0x01, 0xfa, 0xc0, 0x31, |
790 | 0x04, 0xea, 0xe8, 0x30, | 818 | 0x04, 0xea, 0xe8, 0x30, |
791 | 0xff, 0xea, 0xf0, 0x08, | 819 | 0xff, 0xea, 0xf0, 0x08, |
@@ -794,12 +822,20 @@ static uint8_t seqprog[] = { | |||
794 | }; | 822 | }; |
795 | 823 | ||
796 | typedef int ahd_patch_func_t (struct ahd_softc *ahd); | 824 | typedef int ahd_patch_func_t (struct ahd_softc *ahd); |
825 | static ahd_patch_func_t ahd_patch23_func; | ||
826 | |||
827 | static int | ||
828 | ahd_patch23_func(struct ahd_softc *ahd) | ||
829 | { | ||
830 | return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) != 0); | ||
831 | } | ||
832 | |||
797 | static ahd_patch_func_t ahd_patch22_func; | 833 | static ahd_patch_func_t ahd_patch22_func; |
798 | 834 | ||
799 | static int | 835 | static int |
800 | ahd_patch22_func(struct ahd_softc *ahd) | 836 | ahd_patch22_func(struct ahd_softc *ahd) |
801 | { | 837 | { |
802 | return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) != 0); | 838 | return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) == 0); |
803 | } | 839 | } |
804 | 840 | ||
805 | static ahd_patch_func_t ahd_patch21_func; | 841 | static ahd_patch_func_t ahd_patch21_func; |
@@ -807,7 +843,7 @@ static ahd_patch_func_t ahd_patch21_func; | |||
807 | static int | 843 | static int |
808 | ahd_patch21_func(struct ahd_softc *ahd) | 844 | ahd_patch21_func(struct ahd_softc *ahd) |
809 | { | 845 | { |
810 | return ((ahd->bugs & AHD_PKT_BITBUCKET_BUG) == 0); | 846 | return ((ahd->flags & AHD_INITIATORROLE) != 0); |
811 | } | 847 | } |
812 | 848 | ||
813 | static ahd_patch_func_t ahd_patch20_func; | 849 | static ahd_patch_func_t ahd_patch20_func; |
@@ -815,7 +851,7 @@ static ahd_patch_func_t ahd_patch20_func; | |||
815 | static int | 851 | static int |
816 | ahd_patch20_func(struct ahd_softc *ahd) | 852 | ahd_patch20_func(struct ahd_softc *ahd) |
817 | { | 853 | { |
818 | return ((ahd->features & AHD_RTI) == 0); | 854 | return ((ahd->flags & AHD_TARGETROLE) != 0); |
819 | } | 855 | } |
820 | 856 | ||
821 | static ahd_patch_func_t ahd_patch19_func; | 857 | static ahd_patch_func_t ahd_patch19_func; |
@@ -823,7 +859,7 @@ static ahd_patch_func_t ahd_patch19_func; | |||
823 | static int | 859 | static int |
824 | ahd_patch19_func(struct ahd_softc *ahd) | 860 | ahd_patch19_func(struct ahd_softc *ahd) |
825 | { | 861 | { |
826 | return ((ahd->flags & AHD_INITIATORROLE) != 0); | 862 | return ((ahd->bugs & AHD_AUTOFLUSH_BUG) != 0); |
827 | } | 863 | } |
828 | 864 | ||
829 | static ahd_patch_func_t ahd_patch18_func; | 865 | static ahd_patch_func_t ahd_patch18_func; |
@@ -831,7 +867,7 @@ static ahd_patch_func_t ahd_patch18_func; | |||
831 | static int | 867 | static int |
832 | ahd_patch18_func(struct ahd_softc *ahd) | 868 | ahd_patch18_func(struct ahd_softc *ahd) |
833 | { | 869 | { |
834 | return ((ahd->flags & AHD_TARGETROLE) != 0); | 870 | return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) != 0); |
835 | } | 871 | } |
836 | 872 | ||
837 | static ahd_patch_func_t ahd_patch17_func; | 873 | static ahd_patch_func_t ahd_patch17_func; |
@@ -839,7 +875,7 @@ static ahd_patch_func_t ahd_patch17_func; | |||
839 | static int | 875 | static int |
840 | ahd_patch17_func(struct ahd_softc *ahd) | 876 | ahd_patch17_func(struct ahd_softc *ahd) |
841 | { | 877 | { |
842 | return ((ahd->bugs & AHD_AUTOFLUSH_BUG) != 0); | 878 | return ((ahd->flags & AHD_39BIT_ADDRESSING) != 0); |
843 | } | 879 | } |
844 | 880 | ||
845 | static ahd_patch_func_t ahd_patch16_func; | 881 | static ahd_patch_func_t ahd_patch16_func; |
@@ -847,7 +883,7 @@ static ahd_patch_func_t ahd_patch16_func; | |||
847 | static int | 883 | static int |
848 | ahd_patch16_func(struct ahd_softc *ahd) | 884 | ahd_patch16_func(struct ahd_softc *ahd) |
849 | { | 885 | { |
850 | return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) != 0); | 886 | return ((ahd->flags & AHD_64BIT_ADDRESSING) != 0); |
851 | } | 887 | } |
852 | 888 | ||
853 | static ahd_patch_func_t ahd_patch15_func; | 889 | static ahd_patch_func_t ahd_patch15_func; |
@@ -855,7 +891,7 @@ static ahd_patch_func_t ahd_patch15_func; | |||
855 | static int | 891 | static int |
856 | ahd_patch15_func(struct ahd_softc *ahd) | 892 | ahd_patch15_func(struct ahd_softc *ahd) |
857 | { | 893 | { |
858 | return ((ahd->flags & AHD_39BIT_ADDRESSING) != 0); | 894 | return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) == 0); |
859 | } | 895 | } |
860 | 896 | ||
861 | static ahd_patch_func_t ahd_patch14_func; | 897 | static ahd_patch_func_t ahd_patch14_func; |
@@ -863,7 +899,7 @@ static ahd_patch_func_t ahd_patch14_func; | |||
863 | static int | 899 | static int |
864 | ahd_patch14_func(struct ahd_softc *ahd) | 900 | ahd_patch14_func(struct ahd_softc *ahd) |
865 | { | 901 | { |
866 | return ((ahd->flags & AHD_64BIT_ADDRESSING) != 0); | 902 | return ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0); |
867 | } | 903 | } |
868 | 904 | ||
869 | static ahd_patch_func_t ahd_patch13_func; | 905 | static ahd_patch_func_t ahd_patch13_func; |
@@ -871,7 +907,7 @@ static ahd_patch_func_t ahd_patch13_func; | |||
871 | static int | 907 | static int |
872 | ahd_patch13_func(struct ahd_softc *ahd) | 908 | ahd_patch13_func(struct ahd_softc *ahd) |
873 | { | 909 | { |
874 | return ((ahd->features & AHD_NEW_DFCNTRL_OPTS) == 0); | 910 | return ((ahd->features & AHD_RTI) == 0); |
875 | } | 911 | } |
876 | 912 | ||
877 | static ahd_patch_func_t ahd_patch12_func; | 913 | static ahd_patch_func_t ahd_patch12_func; |
@@ -879,7 +915,7 @@ static ahd_patch_func_t ahd_patch12_func; | |||
879 | static int | 915 | static int |
880 | ahd_patch12_func(struct ahd_softc *ahd) | 916 | ahd_patch12_func(struct ahd_softc *ahd) |
881 | { | 917 | { |
882 | return ((ahd->bugs & AHD_REG_SLOW_SETTLE_BUG) != 0); | 918 | return ((ahd->bugs & AHD_EARLY_REQ_BUG) != 0); |
883 | } | 919 | } |
884 | 920 | ||
885 | static ahd_patch_func_t ahd_patch11_func; | 921 | static ahd_patch_func_t ahd_patch11_func; |
@@ -887,7 +923,7 @@ static ahd_patch_func_t ahd_patch11_func; | |||
887 | static int | 923 | static int |
888 | ahd_patch11_func(struct ahd_softc *ahd) | 924 | ahd_patch11_func(struct ahd_softc *ahd) |
889 | { | 925 | { |
890 | return ((ahd->bugs & AHD_EARLY_REQ_BUG) != 0); | 926 | return ((ahd->bugs & AHD_BUSFREEREV_BUG) == 0); |
891 | } | 927 | } |
892 | 928 | ||
893 | static ahd_patch_func_t ahd_patch10_func; | 929 | static ahd_patch_func_t ahd_patch10_func; |
@@ -895,7 +931,7 @@ static ahd_patch_func_t ahd_patch10_func; | |||
895 | static int | 931 | static int |
896 | ahd_patch10_func(struct ahd_softc *ahd) | 932 | ahd_patch10_func(struct ahd_softc *ahd) |
897 | { | 933 | { |
898 | return ((ahd->bugs & AHD_BUSFREEREV_BUG) == 0); | 934 | return ((ahd->flags & AHD_SEQUENCER_DEBUG) != 0); |
899 | } | 935 | } |
900 | 936 | ||
901 | static ahd_patch_func_t ahd_patch9_func; | 937 | static ahd_patch_func_t ahd_patch9_func; |
@@ -903,7 +939,7 @@ static ahd_patch_func_t ahd_patch9_func; | |||
903 | static int | 939 | static int |
904 | ahd_patch9_func(struct ahd_softc *ahd) | 940 | ahd_patch9_func(struct ahd_softc *ahd) |
905 | { | 941 | { |
906 | return ((ahd->flags & AHD_SEQUENCER_DEBUG) != 0); | 942 | return ((ahd->features & AHD_FAST_CDB_DELIVERY) != 0); |
907 | } | 943 | } |
908 | 944 | ||
909 | static ahd_patch_func_t ahd_patch8_func; | 945 | static ahd_patch_func_t ahd_patch8_func; |
@@ -992,147 +1028,149 @@ static struct patch { | |||
992 | { ahd_patch0_func, 5, 1, 1 }, | 1028 | { ahd_patch0_func, 5, 1, 1 }, |
993 | { ahd_patch2_func, 6, 1, 2 }, | 1029 | { ahd_patch2_func, 6, 1, 2 }, |
994 | { ahd_patch0_func, 7, 1, 1 }, | 1030 | { ahd_patch0_func, 7, 1, 1 }, |
995 | { ahd_patch3_func, 20, 5, 1 }, | 1031 | { ahd_patch3_func, 36, 5, 1 }, |
996 | { ahd_patch2_func, 29, 1, 2 }, | 1032 | { ahd_patch2_func, 45, 1, 2 }, |
997 | { ahd_patch0_func, 30, 1, 1 }, | 1033 | { ahd_patch0_func, 46, 1, 1 }, |
998 | { ahd_patch1_func, 37, 1, 2 }, | 1034 | { ahd_patch1_func, 53, 1, 2 }, |
999 | { ahd_patch0_func, 38, 1, 1 }, | 1035 | { ahd_patch0_func, 54, 1, 1 }, |
1000 | { ahd_patch2_func, 43, 1, 2 }, | 1036 | { ahd_patch2_func, 59, 1, 2 }, |
1001 | { ahd_patch0_func, 44, 1, 1 }, | 1037 | { ahd_patch0_func, 60, 1, 1 }, |
1002 | { ahd_patch2_func, 47, 1, 2 }, | 1038 | { ahd_patch2_func, 63, 1, 2 }, |
1003 | { ahd_patch0_func, 48, 1, 1 }, | 1039 | { ahd_patch0_func, 64, 1, 1 }, |
1004 | { ahd_patch2_func, 51, 1, 2 }, | 1040 | { ahd_patch2_func, 67, 1, 2 }, |
1005 | { ahd_patch0_func, 52, 1, 1 }, | 1041 | { ahd_patch0_func, 68, 1, 1 }, |
1006 | { ahd_patch2_func, 65, 1, 2 }, | 1042 | { ahd_patch4_func, 116, 1, 1 }, |
1007 | { ahd_patch0_func, 66, 1, 1 }, | 1043 | { ahd_patch2_func, 175, 3, 1 }, |
1008 | { ahd_patch2_func, 69, 1, 2 }, | 1044 | { ahd_patch1_func, 178, 2, 1 }, |
1009 | { ahd_patch0_func, 70, 1, 1 }, | 1045 | { ahd_patch5_func, 180, 1, 1 }, |
1010 | { ahd_patch1_func, 73, 1, 2 }, | 1046 | { ahd_patch2_func, 189, 1, 2 }, |
1011 | { ahd_patch0_func, 74, 1, 1 }, | 1047 | { ahd_patch0_func, 190, 1, 1 }, |
1012 | { ahd_patch4_func, 107, 1, 1 }, | 1048 | { ahd_patch6_func, 191, 2, 2 }, |
1013 | { ahd_patch2_func, 162, 6, 1 }, | 1049 | { ahd_patch0_func, 193, 6, 3 }, |
1014 | { ahd_patch1_func, 168, 2, 1 }, | 1050 | { ahd_patch2_func, 196, 1, 2 }, |
1015 | { ahd_patch5_func, 170, 1, 1 }, | 1051 | { ahd_patch0_func, 197, 1, 1 }, |
1016 | { ahd_patch2_func, 179, 1, 2 }, | 1052 | { ahd_patch2_func, 200, 1, 2 }, |
1017 | { ahd_patch0_func, 180, 1, 1 }, | 1053 | { ahd_patch0_func, 201, 1, 1 }, |
1018 | { ahd_patch6_func, 181, 2, 2 }, | 1054 | { ahd_patch3_func, 203, 1, 1 }, |
1019 | { ahd_patch0_func, 183, 6, 3 }, | 1055 | { ahd_patch7_func, 204, 3, 1 }, |
1020 | { ahd_patch2_func, 186, 1, 2 }, | 1056 | { ahd_patch3_func, 213, 1, 1 }, |
1021 | { ahd_patch0_func, 187, 1, 1 }, | 1057 | { ahd_patch5_func, 214, 16, 2 }, |
1022 | { ahd_patch2_func, 190, 1, 2 }, | 1058 | { ahd_patch0_func, 230, 1, 1 }, |
1023 | { ahd_patch0_func, 191, 1, 1 }, | 1059 | { ahd_patch8_func, 250, 2, 1 }, |
1024 | { ahd_patch7_func, 193, 2, 1 }, | 1060 | { ahd_patch1_func, 254, 1, 2 }, |
1025 | { ahd_patch5_func, 201, 16, 2 }, | 1061 | { ahd_patch0_func, 255, 1, 1 }, |
1026 | { ahd_patch0_func, 217, 1, 1 }, | 1062 | { ahd_patch7_func, 258, 3, 1 }, |
1027 | { ahd_patch8_func, 237, 2, 1 }, | 1063 | { ahd_patch1_func, 273, 1, 2 }, |
1028 | { ahd_patch1_func, 241, 1, 2 }, | 1064 | { ahd_patch0_func, 274, 1, 1 }, |
1029 | { ahd_patch0_func, 242, 1, 1 }, | 1065 | { ahd_patch1_func, 277, 1, 2 }, |
1030 | { ahd_patch7_func, 245, 2, 1 }, | 1066 | { ahd_patch0_func, 278, 1, 1 }, |
1031 | { ahd_patch1_func, 259, 1, 2 }, | 1067 | { ahd_patch2_func, 281, 1, 2 }, |
1032 | { ahd_patch0_func, 260, 1, 1 }, | 1068 | { ahd_patch0_func, 282, 1, 1 }, |
1033 | { ahd_patch1_func, 263, 1, 2 }, | 1069 | { ahd_patch9_func, 295, 2, 2 }, |
1034 | { ahd_patch0_func, 264, 1, 1 }, | 1070 | { ahd_patch0_func, 297, 1, 1 }, |
1035 | { ahd_patch2_func, 267, 1, 2 }, | 1071 | { ahd_patch1_func, 339, 1, 2 }, |
1036 | { ahd_patch0_func, 268, 1, 1 }, | 1072 | { ahd_patch0_func, 340, 1, 1 }, |
1037 | { ahd_patch1_func, 323, 1, 2 }, | 1073 | { ahd_patch2_func, 348, 1, 2 }, |
1038 | { ahd_patch0_func, 324, 1, 1 }, | 1074 | { ahd_patch0_func, 349, 1, 1 }, |
1039 | { ahd_patch2_func, 332, 1, 2 }, | 1075 | { ahd_patch2_func, 352, 1, 2 }, |
1040 | { ahd_patch0_func, 333, 1, 1 }, | 1076 | { ahd_patch0_func, 353, 1, 1 }, |
1041 | { ahd_patch2_func, 336, 1, 2 }, | 1077 | { ahd_patch1_func, 359, 1, 2 }, |
1042 | { ahd_patch0_func, 337, 1, 1 }, | 1078 | { ahd_patch0_func, 360, 1, 1 }, |
1043 | { ahd_patch1_func, 343, 1, 2 }, | 1079 | { ahd_patch1_func, 362, 1, 2 }, |
1044 | { ahd_patch0_func, 344, 1, 1 }, | 1080 | { ahd_patch0_func, 363, 1, 1 }, |
1045 | { ahd_patch1_func, 346, 1, 2 }, | 1081 | { ahd_patch10_func, 382, 1, 1 }, |
1046 | { ahd_patch0_func, 347, 1, 1 }, | 1082 | { ahd_patch10_func, 385, 1, 1 }, |
1047 | { ahd_patch9_func, 366, 1, 1 }, | 1083 | { ahd_patch10_func, 387, 1, 1 }, |
1048 | { ahd_patch9_func, 369, 1, 1 }, | 1084 | { ahd_patch10_func, 399, 1, 1 }, |
1049 | { ahd_patch9_func, 371, 1, 1 }, | 1085 | { ahd_patch1_func, 409, 1, 2 }, |
1050 | { ahd_patch9_func, 383, 1, 1 }, | 1086 | { ahd_patch0_func, 410, 1, 1 }, |
1051 | { ahd_patch1_func, 393, 1, 2 }, | 1087 | { ahd_patch1_func, 412, 1, 2 }, |
1052 | { ahd_patch0_func, 394, 1, 1 }, | 1088 | { ahd_patch0_func, 413, 1, 1 }, |
1053 | { ahd_patch1_func, 396, 1, 2 }, | 1089 | { ahd_patch1_func, 421, 1, 2 }, |
1054 | { ahd_patch0_func, 397, 1, 1 }, | 1090 | { ahd_patch0_func, 422, 1, 1 }, |
1055 | { ahd_patch1_func, 405, 1, 2 }, | 1091 | { ahd_patch2_func, 435, 1, 2 }, |
1056 | { ahd_patch0_func, 406, 1, 1 }, | 1092 | { ahd_patch0_func, 436, 1, 1 }, |
1057 | { ahd_patch2_func, 419, 1, 2 }, | 1093 | { ahd_patch11_func, 472, 1, 1 }, |
1058 | { ahd_patch0_func, 420, 1, 1 }, | 1094 | { ahd_patch1_func, 480, 1, 2 }, |
1059 | { ahd_patch10_func, 450, 1, 1 }, | 1095 | { ahd_patch0_func, 481, 1, 1 }, |
1060 | { ahd_patch1_func, 457, 1, 2 }, | 1096 | { ahd_patch2_func, 493, 1, 2 }, |
1061 | { ahd_patch0_func, 458, 1, 1 }, | 1097 | { ahd_patch0_func, 494, 1, 1 }, |
1062 | { ahd_patch2_func, 470, 1, 2 }, | 1098 | { ahd_patch12_func, 497, 6, 2 }, |
1063 | { ahd_patch0_func, 471, 1, 1 }, | 1099 | { ahd_patch0_func, 503, 1, 1 }, |
1064 | { ahd_patch11_func, 476, 6, 2 }, | 1100 | { ahd_patch13_func, 524, 7, 1 }, |
1065 | { ahd_patch0_func, 482, 1, 1 }, | 1101 | { ahd_patch14_func, 533, 1, 1 }, |
1066 | { ahd_patch12_func, 505, 1, 1 }, | 1102 | { ahd_patch15_func, 542, 1, 1 }, |
1067 | { ahd_patch13_func, 514, 1, 1 }, | 1103 | { ahd_patch16_func, 543, 1, 2 }, |
1068 | { ahd_patch14_func, 515, 1, 2 }, | 1104 | { ahd_patch0_func, 544, 1, 1 }, |
1069 | { ahd_patch0_func, 516, 1, 1 }, | 1105 | { ahd_patch17_func, 547, 1, 1 }, |
1070 | { ahd_patch15_func, 519, 1, 1 }, | 1106 | { ahd_patch16_func, 548, 1, 1 }, |
1071 | { ahd_patch14_func, 520, 1, 1 }, | 1107 | { ahd_patch18_func, 559, 1, 2 }, |
1072 | { ahd_patch16_func, 531, 1, 2 }, | 1108 | { ahd_patch0_func, 560, 1, 1 }, |
1073 | { ahd_patch0_func, 532, 1, 1 }, | 1109 | { ahd_patch1_func, 579, 1, 2 }, |
1074 | { ahd_patch1_func, 551, 1, 2 }, | 1110 | { ahd_patch0_func, 580, 1, 1 }, |
1075 | { ahd_patch0_func, 552, 1, 1 }, | 1111 | { ahd_patch1_func, 583, 1, 2 }, |
1076 | { ahd_patch1_func, 555, 1, 2 }, | 1112 | { ahd_patch0_func, 584, 1, 1 }, |
1077 | { ahd_patch0_func, 556, 1, 1 }, | 1113 | { ahd_patch2_func, 589, 1, 2 }, |
1078 | { ahd_patch2_func, 561, 1, 2 }, | 1114 | { ahd_patch0_func, 590, 1, 1 }, |
1079 | { ahd_patch0_func, 562, 1, 1 }, | 1115 | { ahd_patch2_func, 594, 1, 2 }, |
1080 | { ahd_patch2_func, 566, 1, 2 }, | 1116 | { ahd_patch0_func, 595, 1, 1 }, |
1081 | { ahd_patch0_func, 567, 1, 1 }, | 1117 | { ahd_patch1_func, 596, 1, 2 }, |
1082 | { ahd_patch1_func, 568, 1, 2 }, | 1118 | { ahd_patch0_func, 597, 1, 1 }, |
1083 | { ahd_patch0_func, 569, 1, 1 }, | 1119 | { ahd_patch2_func, 608, 1, 2 }, |
1084 | { ahd_patch2_func, 580, 1, 2 }, | 1120 | { ahd_patch0_func, 609, 1, 1 }, |
1085 | { ahd_patch0_func, 581, 1, 1 }, | 1121 | { ahd_patch19_func, 613, 1, 1 }, |
1086 | { ahd_patch17_func, 585, 1, 1 }, | 1122 | { ahd_patch20_func, 618, 1, 1 }, |
1087 | { ahd_patch18_func, 590, 1, 1 }, | 1123 | { ahd_patch21_func, 619, 2, 1 }, |
1088 | { ahd_patch19_func, 591, 2, 1 }, | 1124 | { ahd_patch20_func, 623, 1, 2 }, |
1089 | { ahd_patch18_func, 595, 1, 2 }, | 1125 | { ahd_patch0_func, 624, 1, 1 }, |
1090 | { ahd_patch0_func, 596, 1, 1 }, | 1126 | { ahd_patch2_func, 627, 1, 2 }, |
1091 | { ahd_patch2_func, 599, 1, 2 }, | 1127 | { ahd_patch0_func, 628, 1, 1 }, |
1092 | { ahd_patch0_func, 600, 1, 1 }, | 1128 | { ahd_patch2_func, 643, 1, 2 }, |
1093 | { ahd_patch2_func, 615, 1, 2 }, | 1129 | { ahd_patch0_func, 644, 1, 1 }, |
1094 | { ahd_patch0_func, 616, 1, 1 }, | 1130 | { ahd_patch13_func, 645, 14, 1 }, |
1095 | { ahd_patch20_func, 617, 14, 1 }, | 1131 | { ahd_patch1_func, 663, 1, 2 }, |
1096 | { ahd_patch1_func, 635, 1, 2 }, | 1132 | { ahd_patch0_func, 664, 1, 1 }, |
1097 | { ahd_patch0_func, 636, 1, 1 }, | 1133 | { ahd_patch13_func, 665, 1, 1 }, |
1098 | { ahd_patch20_func, 637, 1, 1 }, | 1134 | { ahd_patch1_func, 677, 1, 2 }, |
1099 | { ahd_patch1_func, 649, 1, 2 }, | 1135 | { ahd_patch0_func, 678, 1, 1 }, |
1100 | { ahd_patch0_func, 650, 1, 1 }, | 1136 | { ahd_patch1_func, 685, 1, 2 }, |
1101 | { ahd_patch1_func, 657, 1, 2 }, | 1137 | { ahd_patch0_func, 686, 1, 1 }, |
1102 | { ahd_patch0_func, 658, 1, 1 }, | 1138 | { ahd_patch19_func, 709, 1, 1 }, |
1103 | { ahd_patch17_func, 681, 1, 1 }, | 1139 | { ahd_patch19_func, 747, 1, 1 }, |
1104 | { ahd_patch17_func, 719, 1, 1 }, | 1140 | { ahd_patch1_func, 758, 1, 2 }, |
1105 | { ahd_patch1_func, 730, 1, 2 }, | 1141 | { ahd_patch0_func, 759, 1, 1 }, |
1106 | { ahd_patch0_func, 731, 1, 1 }, | 1142 | { ahd_patch1_func, 776, 1, 2 }, |
1107 | { ahd_patch1_func, 748, 1, 2 }, | 1143 | { ahd_patch0_func, 777, 1, 1 }, |
1108 | { ahd_patch0_func, 749, 1, 1 }, | 1144 | { ahd_patch1_func, 779, 1, 2 }, |
1109 | { ahd_patch1_func, 751, 1, 2 }, | 1145 | { ahd_patch0_func, 780, 1, 1 }, |
1110 | { ahd_patch0_func, 752, 1, 1 }, | 1146 | { ahd_patch1_func, 783, 1, 2 }, |
1111 | { ahd_patch1_func, 755, 1, 2 }, | 1147 | { ahd_patch0_func, 784, 1, 1 }, |
1112 | { ahd_patch0_func, 756, 1, 1 }, | 1148 | { ahd_patch22_func, 786, 1, 2 }, |
1113 | { ahd_patch21_func, 758, 1, 2 }, | 1149 | { ahd_patch0_func, 787, 2, 1 }, |
1114 | { ahd_patch0_func, 759, 2, 1 }, | 1150 | { ahd_patch23_func, 790, 4, 2 }, |
1115 | { ahd_patch22_func, 762, 4, 2 }, | 1151 | { ahd_patch0_func, 794, 1, 1 }, |
1116 | { ahd_patch0_func, 766, 1, 1 }, | 1152 | { ahd_patch23_func, 802, 11, 1 } |
1117 | { ahd_patch22_func, 774, 11, 1 } | ||
1118 | }; | 1153 | }; |
1119 | 1154 | ||
1120 | static struct cs { | 1155 | static struct cs { |
1121 | uint16_t begin; | 1156 | uint16_t begin; |
1122 | uint16_t end; | 1157 | uint16_t end; |
1123 | } critical_sections[] = { | 1158 | } critical_sections[] = { |
1124 | { 11, 12 }, | 1159 | { 17, 28 }, |
1125 | { 13, 14 }, | 1160 | { 29, 30 }, |
1126 | { 29, 42 }, | 1161 | { 47, 58 }, |
1127 | { 56, 59 }, | 1162 | { 61, 63 }, |
1128 | { 101, 128 }, | 1163 | { 65, 66 }, |
1129 | { 129, 157 }, | 1164 | { 72, 92 }, |
1130 | { 159, 162 }, | 1165 | { 110, 137 }, |
1131 | { 170, 178 }, | 1166 | { 138, 175 }, |
1132 | { 201, 250 }, | 1167 | { 180, 188 }, |
1133 | { 681, 697 }, | 1168 | { 213, 264 }, |
1134 | { 697, 711 }, | 1169 | { 425, 433 }, |
1135 | { 721, 725 } | 1170 | { 443, 445 }, |
1171 | { 448, 457 }, | ||
1172 | { 709, 739 }, | ||
1173 | { 749, 753 } | ||
1136 | }; | 1174 | }; |
1137 | 1175 | ||
1138 | static const int num_critical_sections = sizeof(critical_sections) | 1176 | static const int num_critical_sections = sizeof(critical_sections) |