0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056 #ifndef _SCU_REGISTERS_H_
0057 #define _SCU_REGISTERS_H_
0058
0059
0060
0061
0062
0063
0064
0065
0066 #define SCU_VIIT_ENTRY_ID_MASK (0xC0000000)
0067 #define SCU_VIIT_ENTRY_ID_SHIFT (30)
0068
0069 #define SCU_VIIT_ENTRY_FUNCTION_MASK (0x0FF00000)
0070 #define SCU_VIIT_ENTRY_FUNCTION_SHIFT (20)
0071
0072 #define SCU_VIIT_ENTRY_IPPTMODE_MASK (0x0001F800)
0073 #define SCU_VIIT_ENTRY_IPPTMODE_SHIFT (12)
0074
0075 #define SCU_VIIT_ENTRY_LPVIE_MASK (0x00000F00)
0076 #define SCU_VIIT_ENTRY_LPVIE_SHIFT (8)
0077
0078 #define SCU_VIIT_ENTRY_STATUS_MASK (0x000000FF)
0079 #define SCU_VIIT_ENTRY_STATUS_SHIFT (0)
0080
0081 #define SCU_VIIT_ENTRY_ID_INVALID (0 << SCU_VIIT_ENTRY_ID_SHIFT)
0082 #define SCU_VIIT_ENTRY_ID_VIIT (1 << SCU_VIIT_ENTRY_ID_SHIFT)
0083 #define SCU_VIIT_ENTRY_ID_IIT (2 << SCU_VIIT_ENTRY_ID_SHIFT)
0084 #define SCU_VIIT_ENTRY_ID_VIRT_EXP (3 << SCU_VIIT_ENTRY_ID_SHIFT)
0085
0086 #define SCU_VIIT_IPPT_SSP_INITIATOR (0x01 << SCU_VIIT_ENTRY_IPPTMODE_SHIFT)
0087 #define SCU_VIIT_IPPT_SMP_INITIATOR (0x02 << SCU_VIIT_ENTRY_IPPTMODE_SHIFT)
0088 #define SCU_VIIT_IPPT_STP_INITIATOR (0x04 << SCU_VIIT_ENTRY_IPPTMODE_SHIFT)
0089 #define SCU_VIIT_IPPT_INITIATOR \
0090 (\
0091 SCU_VIIT_IPPT_SSP_INITIATOR \
0092 | SCU_VIIT_IPPT_SMP_INITIATOR \
0093 | SCU_VIIT_IPPT_STP_INITIATOR \
0094 )
0095
0096 #define SCU_VIIT_STATUS_RNC_VALID (0x01 << SCU_VIIT_ENTRY_STATUS_SHIFT)
0097 #define SCU_VIIT_STATUS_ADDRESS_VALID (0x02 << SCU_VIIT_ENTRY_STATUS_SHIFT)
0098 #define SCU_VIIT_STATUS_RNI_VALID (0x04 << SCU_VIIT_ENTRY_STATUS_SHIFT)
0099 #define SCU_VIIT_STATUS_ALL_VALID \
0100 (\
0101 SCU_VIIT_STATUS_RNC_VALID \
0102 | SCU_VIIT_STATUS_ADDRESS_VALID \
0103 | SCU_VIIT_STATUS_RNI_VALID \
0104 )
0105
0106 #define SCU_VIIT_IPPT_SMP_TARGET (0x10 << SCU_VIIT_ENTRY_IPPTMODE_SHIFT)
0107
0108
0109
0110
0111
0112
0113 struct scu_viit_entry {
0114
0115
0116
0117
0118 u32 status;
0119
0120
0121
0122
0123 u32 initiator_sas_address_hi;
0124
0125
0126
0127
0128 u32 initiator_sas_address_lo;
0129
0130
0131
0132
0133 u32 reserved;
0134
0135 };
0136
0137
0138
0139 #define SCU_IIT_ENTRY_ID_MASK (0xC0000000)
0140 #define SCU_IIT_ENTRY_ID_SHIFT (30)
0141
0142 #define SCU_IIT_ENTRY_STATUS_UPDATE_MASK (0x20000000)
0143 #define SCU_IIT_ENTRY_STATUS_UPDATE_SHIFT (29)
0144
0145 #define SCU_IIT_ENTRY_LPI_MASK (0x00000F00)
0146 #define SCU_IIT_ENTRY_LPI_SHIFT (8)
0147
0148 #define SCU_IIT_ENTRY_STATUS_MASK (0x000000FF)
0149 #define SCU_IIT_ENTRY_STATUS_SHIFT (0)
0150
0151
0152 #define SCU_IIT_ENTRY_REMOTE_TAG_MASK (0x0000FFFF)
0153 #define SCU_IIT_ENTRY_REMOTE_TAG_SHIFT (0)
0154
0155 #define SCU_IIT_ENTRY_REMOTE_RNC_MASK (0x0FFF0000)
0156 #define SCU_IIT_ENTRY_REMOTE_RNC_SHIFT (16)
0157
0158 #define SCU_IIT_ENTRY_ID_INVALID (0 << SCU_IIT_ENTRY_ID_SHIFT)
0159 #define SCU_IIT_ENTRY_ID_VIIT (1 << SCU_IIT_ENTRY_ID_SHIFT)
0160 #define SCU_IIT_ENTRY_ID_IIT (2 << SCU_IIT_ENTRY_ID_SHIFT)
0161 #define SCU_IIT_ENTRY_ID_VIRT_EXP (3 << SCU_IIT_ENTRY_ID_SHIFT)
0162
0163
0164
0165
0166
0167
0168
0169 struct scu_iit_entry {
0170 u32 status;
0171 u32 remote_initiator_sas_address_hi;
0172 u32 remote_initiator_sas_address_lo;
0173 u32 remote_initiator;
0174
0175 };
0176
0177
0178 #define SCU_GEN_VALUE(name, value) \
0179 (((value) << name ## _SHIFT) & (name ## _MASK))
0180
0181
0182
0183
0184 #define SCU_GEN_BIT(name) \
0185 SCU_GEN_VALUE(name, ((u32)1))
0186
0187 #define SCU_SET_BIT(name, reg_value) \
0188 ((reg_value) | SCU_GEN_BIT(name))
0189
0190 #define SCU_CLEAR_BIT(name, reg_value) \
0191 ((reg_value)$ ~(SCU_GEN_BIT(name)))
0192
0193
0194
0195
0196
0197
0198 #define SMU_POST_CONTEXT_PORT_CONTEXT_INDEX_SHIFT (0)
0199 #define SMU_POST_CONTEXT_PORT_CONTEXT_INDEX_MASK (0x00000FFF)
0200 #define SMU_POST_CONTEXT_PORT_LOGICAL_PORT_INDEX_SHIFT (12)
0201 #define SMU_POST_CONTEXT_PORT_LOGICAL_PORT_INDEX_MASK (0x0000F000)
0202 #define SMU_POST_CONTEXT_PORT_PROTOCOL_ENGINE_SHIFT (16)
0203 #define SMU_POST_CONTEXT_PORT_PROTOCOL_ENGINE_MASK (0x00030000)
0204 #define SMU_POST_CONTEXT_PORT_COMMAND_CONTEXT_SHIFT (18)
0205 #define SMU_POST_CONTEXT_PORT_COMMAND_CONTEXT_MASK (0x00FC0000)
0206 #define SMU_POST_CONTEXT_PORT_RESERVED_MASK (0xFF000000)
0207
0208 #define SMU_PCP_GEN_VAL(name, value) \
0209 SCU_GEN_VALUE(SMU_POST_CONTEXT_PORT_ ## name, value)
0210
0211
0212 #define SMU_INTERRUPT_STATUS_COMPLETION_SHIFT (31)
0213 #define SMU_INTERRUPT_STATUS_COMPLETION_MASK (0x80000000)
0214 #define SMU_INTERRUPT_STATUS_QUEUE_SUSPEND_SHIFT (1)
0215 #define SMU_INTERRUPT_STATUS_QUEUE_SUSPEND_MASK (0x00000002)
0216 #define SMU_INTERRUPT_STATUS_QUEUE_ERROR_SHIFT (0)
0217 #define SMU_INTERRUPT_STATUS_QUEUE_ERROR_MASK (0x00000001)
0218 #define SMU_INTERRUPT_STATUS_RESERVED_MASK (0x7FFFFFFC)
0219
0220 #define SMU_ISR_GEN_BIT(name) \
0221 SCU_GEN_BIT(SMU_INTERRUPT_STATUS_ ## name)
0222
0223 #define SMU_ISR_QUEUE_ERROR SMU_ISR_GEN_BIT(QUEUE_ERROR)
0224 #define SMU_ISR_QUEUE_SUSPEND SMU_ISR_GEN_BIT(QUEUE_SUSPEND)
0225 #define SMU_ISR_COMPLETION SMU_ISR_GEN_BIT(COMPLETION)
0226
0227
0228 #define SMU_INTERRUPT_MASK_COMPLETION_SHIFT (31)
0229 #define SMU_INTERRUPT_MASK_COMPLETION_MASK (0x80000000)
0230 #define SMU_INTERRUPT_MASK_QUEUE_SUSPEND_SHIFT (1)
0231 #define SMU_INTERRUPT_MASK_QUEUE_SUSPEND_MASK (0x00000002)
0232 #define SMU_INTERRUPT_MASK_QUEUE_ERROR_SHIFT (0)
0233 #define SMU_INTERRUPT_MASK_QUEUE_ERROR_MASK (0x00000001)
0234 #define SMU_INTERRUPT_MASK_RESERVED_MASK (0x7FFFFFFC)
0235
0236 #define SMU_IMR_GEN_BIT(name) \
0237 SCU_GEN_BIT(SMU_INTERRUPT_MASK_ ## name)
0238
0239 #define SMU_IMR_QUEUE_ERROR SMU_IMR_GEN_BIT(QUEUE_ERROR)
0240 #define SMU_IMR_QUEUE_SUSPEND SMU_IMR_GEN_BIT(QUEUE_SUSPEND)
0241 #define SMU_IMR_COMPLETION SMU_IMR_GEN_BIT(COMPLETION)
0242
0243
0244 #define SMU_INTERRUPT_COALESCING_CONTROL_TIMER_SHIFT (0)
0245 #define SMU_INTERRUPT_COALESCING_CONTROL_TIMER_MASK (0x0000001F)
0246 #define SMU_INTERRUPT_COALESCING_CONTROL_NUMBER_SHIFT (8)
0247 #define SMU_INTERRUPT_COALESCING_CONTROL_NUMBER_MASK (0x0000FF00)
0248 #define SMU_INTERRUPT_COALESCING_CONTROL_RESERVED_MASK (0xFFFF00E0)
0249
0250 #define SMU_ICC_GEN_VAL(name, value) \
0251 SCU_GEN_VALUE(SMU_INTERRUPT_COALESCING_CONTROL_ ## name, value)
0252
0253
0254 #define SMU_TASK_CONTEXT_RANGE_START_SHIFT (0)
0255 #define SMU_TASK_CONTEXT_RANGE_START_MASK (0x00000FFF)
0256 #define SMU_TASK_CONTEXT_RANGE_ENDING_SHIFT (16)
0257 #define SMU_TASK_CONTEXT_RANGE_ENDING_MASK (0x0FFF0000)
0258 #define SMU_TASK_CONTEXT_RANGE_ENABLE_SHIFT (31)
0259 #define SMU_TASK_CONTEXT_RANGE_ENABLE_MASK (0x80000000)
0260 #define SMU_TASK_CONTEXT_RANGE_RESERVED_MASK (0x7000F000)
0261
0262 #define SMU_TCR_GEN_VAL(name, value) \
0263 SCU_GEN_VALUE(SMU_TASK_CONTEXT_RANGE_ ## name, value)
0264
0265 #define SMU_TCR_GEN_BIT(name, value) \
0266 SCU_GEN_BIT(SMU_TASK_CONTEXT_RANGE_ ## name)
0267
0268
0269
0270 #define SMU_COMPLETION_QUEUE_PUT_POINTER_SHIFT (0)
0271 #define SMU_COMPLETION_QUEUE_PUT_POINTER_MASK (0x00003FFF)
0272 #define SMU_COMPLETION_QUEUE_PUT_CYCLE_BIT_SHIFT (15)
0273 #define SMU_COMPLETION_QUEUE_PUT_CYCLE_BIT_MASK (0x00008000)
0274 #define SMU_COMPLETION_QUEUE_PUT_EVENT_POINTER_SHIFT (16)
0275 #define SMU_COMPLETION_QUEUE_PUT_EVENT_POINTER_MASK (0x03FF0000)
0276 #define SMU_COMPLETION_QUEUE_PUT_EVENT_CYCLE_BIT_SHIFT (26)
0277 #define SMU_COMPLETION_QUEUE_PUT_EVENT_CYCLE_BIT_MASK (0x04000000)
0278 #define SMU_COMPLETION_QUEUE_PUT_RESERVED_MASK (0xF8004000)
0279
0280 #define SMU_CQPR_GEN_VAL(name, value) \
0281 SCU_GEN_VALUE(SMU_COMPLETION_QUEUE_PUT_ ## name, value)
0282
0283 #define SMU_CQPR_GEN_BIT(name) \
0284 SCU_GEN_BIT(SMU_COMPLETION_QUEUE_PUT_ ## name)
0285
0286
0287
0288 #define SMU_COMPLETION_QUEUE_GET_POINTER_SHIFT (0)
0289 #define SMU_COMPLETION_QUEUE_GET_POINTER_MASK (0x00003FFF)
0290 #define SMU_COMPLETION_QUEUE_GET_CYCLE_BIT_SHIFT (15)
0291 #define SMU_COMPLETION_QUEUE_GET_CYCLE_BIT_MASK (0x00008000)
0292 #define SMU_COMPLETION_QUEUE_GET_EVENT_POINTER_SHIFT (16)
0293 #define SMU_COMPLETION_QUEUE_GET_EVENT_POINTER_MASK (0x03FF0000)
0294 #define SMU_COMPLETION_QUEUE_GET_EVENT_CYCLE_BIT_SHIFT (26)
0295 #define SMU_COMPLETION_QUEUE_GET_EVENT_CYCLE_BIT_MASK (0x04000000)
0296 #define SMU_COMPLETION_QUEUE_GET_ENABLE_SHIFT (30)
0297 #define SMU_COMPLETION_QUEUE_GET_ENABLE_MASK (0x40000000)
0298 #define SMU_COMPLETION_QUEUE_GET_EVENT_ENABLE_SHIFT (31)
0299 #define SMU_COMPLETION_QUEUE_GET_EVENT_ENABLE_MASK (0x80000000)
0300 #define SMU_COMPLETION_QUEUE_GET_RESERVED_MASK (0x38004000)
0301
0302 #define SMU_CQGR_GEN_VAL(name, value) \
0303 SCU_GEN_VALUE(SMU_COMPLETION_QUEUE_GET_ ## name, value)
0304
0305 #define SMU_CQGR_GEN_BIT(name) \
0306 SCU_GEN_BIT(SMU_COMPLETION_QUEUE_GET_ ## name)
0307
0308 #define SMU_CQGR_CYCLE_BIT \
0309 SMU_CQGR_GEN_BIT(CYCLE_BIT)
0310
0311 #define SMU_CQGR_EVENT_CYCLE_BIT \
0312 SMU_CQGR_GEN_BIT(EVENT_CYCLE_BIT)
0313
0314 #define SMU_CQGR_GET_POINTER_SET(value) \
0315 SMU_CQGR_GEN_VAL(POINTER, value)
0316
0317
0318
0319 #define SMU_COMPLETION_QUEUE_CONTROL_QUEUE_LIMIT_SHIFT (0)
0320 #define SMU_COMPLETION_QUEUE_CONTROL_QUEUE_LIMIT_MASK (0x00003FFF)
0321 #define SMU_COMPLETION_QUEUE_CONTROL_EVENT_LIMIT_SHIFT (16)
0322 #define SMU_COMPLETION_QUEUE_CONTROL_EVENT_LIMIT_MASK (0x03FF0000)
0323 #define SMU_COMPLETION_QUEUE_CONTROL_RESERVED_MASK (0xFC00C000)
0324
0325 #define SMU_CQC_GEN_VAL(name, value) \
0326 SCU_GEN_VALUE(SMU_COMPLETION_QUEUE_CONTROL_ ## name, value)
0327
0328 #define SMU_CQC_QUEUE_LIMIT_SET(value) \
0329 SMU_CQC_GEN_VAL(QUEUE_LIMIT, value)
0330
0331 #define SMU_CQC_EVENT_LIMIT_SET(value) \
0332 SMU_CQC_GEN_VAL(EVENT_LIMIT, value)
0333
0334
0335
0336 #define SMU_DEVICE_CONTEXT_CAPACITY_MAX_TC_SHIFT (0)
0337 #define SMU_DEVICE_CONTEXT_CAPACITY_MAX_TC_MASK (0x00000FFF)
0338 #define SMU_DEVICE_CONTEXT_CAPACITY_MAX_LP_SHIFT (12)
0339 #define SMU_DEVICE_CONTEXT_CAPACITY_MAX_LP_MASK (0x00007000)
0340 #define SMU_DEVICE_CONTEXT_CAPACITY_MAX_RNC_SHIFT (15)
0341 #define SMU_DEVICE_CONTEXT_CAPACITY_MAX_RNC_MASK (0x07FF8000)
0342 #define SMU_DEVICE_CONTEXT_CAPACITY_MAX_PEG_SHIFT (27)
0343 #define SMU_DEVICE_CONTEXT_CAPACITY_MAX_PEG_MASK (0x08000000)
0344 #define SMU_DEVICE_CONTEXT_CAPACITY_RESERVED_MASK (0xF0000000)
0345
0346 #define SMU_DCC_GEN_VAL(name, value) \
0347 SCU_GEN_VALUE(SMU_DEVICE_CONTEXT_CAPACITY_ ## name, value)
0348
0349 #define SMU_DCC_GET_MAX_PEG(value) \
0350 (\
0351 ((value) & SMU_DEVICE_CONTEXT_CAPACITY_MAX_PEG_MASK) \
0352 >> SMU_DEVICE_CONTEXT_CAPACITY_MAX_LP_SHIFT \
0353 )
0354
0355 #define SMU_DCC_GET_MAX_LP(value) \
0356 (\
0357 ((value) & SMU_DEVICE_CONTEXT_CAPACITY_MAX_LP_MASK) \
0358 >> SMU_DEVICE_CONTEXT_CAPACITY_MAX_LP_SHIFT \
0359 )
0360
0361 #define SMU_DCC_GET_MAX_TC(value) \
0362 (\
0363 ((value) & SMU_DEVICE_CONTEXT_CAPACITY_MAX_TC_MASK) \
0364 >> SMU_DEVICE_CONTEXT_CAPACITY_MAX_TC_SHIFT \
0365 )
0366
0367 #define SMU_DCC_GET_MAX_RNC(value) \
0368 (\
0369 ((value) & SMU_DEVICE_CONTEXT_CAPACITY_MAX_RNC_MASK) \
0370 >> SMU_DEVICE_CONTEXT_CAPACITY_MAX_RNC_SHIFT \
0371 )
0372
0373
0374 #define SMU_CLOCK_GATING_CONTROL_IDLE_ENABLE_SHIFT (0)
0375 #define SMU_CLOCK_GATING_CONTROL_IDLE_ENABLE_MASK (0x00000001)
0376 #define SMU_CLOCK_GATING_CONTROL_XCLK_ENABLE_SHIFT (1)
0377 #define SMU_CLOCK_GATING_CONTROL_XCLK_ENABLE_MASK (0x00000002)
0378 #define SMU_CLOCK_GATING_CONTROL_TXCLK_ENABLE_SHIFT (2)
0379 #define SMU_CLOCK_GATING_CONTROL_TXCLK_ENABLE_MASK (0x00000004)
0380 #define SMU_CLOCK_GATING_CONTROL_REGCLK_ENABLE_SHIFT (3)
0381 #define SMU_CLOCK_GATING_CONTROL_REGCLK_ENABLE_MASK (0x00000008)
0382 #define SMU_CLOCK_GATING_CONTROL_IDLE_TIMEOUT_SHIFT (16)
0383 #define SMU_CLOCK_GATING_CONTROL_IDLE_TIMEOUT_MASK (0x000F0000)
0384 #define SMU_CLOCK_GATING_CONTROL_FORCE_IDLE_SHIFT (31)
0385 #define SMU_CLOCK_GATING_CONTROL_FORCE_IDLE_MASK (0x80000000)
0386 #define SMU_CLOCK_GATING_CONTROL_RESERVED_MASK (0x7FF0FFF0)
0387
0388 #define SMU_CGUCR_GEN_VAL(name, value) \
0389 SCU_GEN_VALUE(SMU_CLOCK_GATING_CONTROL_##name, value)
0390
0391 #define SMU_CGUCR_GEN_BIT(name) \
0392 SCU_GEN_BIT(SMU_CLOCK_GATING_CONTROL_##name)
0393
0394
0395
0396 #define SMU_CONTROL_STATUS_TASK_CONTEXT_RANGE_ENABLE_SHIFT (0)
0397 #define SMU_CONTROL_STATUS_TASK_CONTEXT_RANGE_ENABLE_MASK (0x00000001)
0398 #define SMU_CONTROL_STATUS_COMPLETION_BYTE_SWAP_ENABLE_SHIFT (1)
0399 #define SMU_CONTROL_STATUS_COMPLETION_BYTE_SWAP_ENABLE_MASK (0x00000002)
0400 #define SMU_CONTROL_STATUS_CONTEXT_RAM_INIT_COMPLETED_SHIFT (16)
0401 #define SMU_CONTROL_STATUS_CONTEXT_RAM_INIT_COMPLETED_MASK (0x00010000)
0402 #define SMU_CONTROL_STATUS_SCHEDULER_RAM_INIT_COMPLETED_SHIFT (17)
0403 #define SMU_CONTROL_STATUS_SCHEDULER_RAM_INIT_COMPLETED_MASK (0x00020000)
0404 #define SMU_CONTROL_STATUS_RESERVED_MASK (0xFFFCFFFC)
0405
0406 #define SMU_SMUCSR_GEN_BIT(name) \
0407 SCU_GEN_BIT(SMU_CONTROL_STATUS_ ## name)
0408
0409 #define SMU_SMUCSR_SCHEDULER_RAM_INIT_COMPLETED \
0410 (SMU_SMUCSR_GEN_BIT(SCHEDULER_RAM_INIT_COMPLETED))
0411
0412 #define SMU_SMUCSR_CONTEXT_RAM_INIT_COMPLETED \
0413 (SMU_SMUCSR_GEN_BIT(CONTEXT_RAM_INIT_COMPLETED))
0414
0415 #define SCU_RAM_INIT_COMPLETED \
0416 (\
0417 SMU_SMUCSR_CONTEXT_RAM_INIT_COMPLETED \
0418 | SMU_SMUCSR_SCHEDULER_RAM_INIT_COMPLETED \
0419 )
0420
0421
0422
0423 #define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE0_SHIFT (0)
0424 #define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE0_MASK (0x00000001)
0425 #define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE1_SHIFT (1)
0426 #define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE1_MASK (0x00000002)
0427 #define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE2_SHIFT (2)
0428 #define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE2_MASK (0x00000004)
0429 #define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE3_SHIFT (3)
0430 #define SMU_SOFTRESET_CONTROL_RESET_PEG0_PE3_MASK (0x00000008)
0431 #define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE0_SHIFT (8)
0432 #define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE0_MASK (0x00000100)
0433 #define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE1_SHIFT (9)
0434 #define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE1_MASK (0x00000200)
0435 #define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE2_SHIFT (10)
0436 #define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE2_MASK (0x00000400)
0437 #define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE3_SHIFT (11)
0438 #define SMU_SOFTRESET_CONTROL_RESET_PEG1_PE3_MASK (0x00000800)
0439
0440 #define SMU_RESET_PROTOCOL_ENGINE(peg, pe) \
0441 ((1 << (pe)) << ((peg) * 8))
0442
0443 #define SMU_RESET_PEG_PROTOCOL_ENGINES(peg) \
0444 (\
0445 SMU_RESET_PROTOCOL_ENGINE(peg, 0) \
0446 | SMU_RESET_PROTOCOL_ENGINE(peg, 1) \
0447 | SMU_RESET_PROTOCOL_ENGINE(peg, 2) \
0448 | SMU_RESET_PROTOCOL_ENGINE(peg, 3) \
0449 )
0450
0451 #define SMU_RESET_ALL_PROTOCOL_ENGINES() \
0452 (\
0453 SMU_RESET_PEG_PROTOCOL_ENGINES(0) \
0454 | SMU_RESET_PEG_PROTOCOL_ENGINES(1) \
0455 )
0456
0457 #define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG0_LP0_SHIFT (16)
0458 #define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG0_LP0_MASK (0x00010000)
0459 #define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG0_LP2_SHIFT (17)
0460 #define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG0_LP2_MASK (0x00020000)
0461 #define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG1_LP0_SHIFT (18)
0462 #define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG1_LP0_MASK (0x00040000)
0463 #define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG1_LP2_SHIFT (19)
0464 #define SMU_SOFTRESET_CONTROL_RESET_WIDE_PORT_PEG1_LP2_MASK (0x00080000)
0465
0466 #define SMU_RESET_WIDE_PORT_QUEUE(peg, wide_port) \
0467 ((1 << ((wide_port) / 2)) << ((peg) * 2) << 16)
0468
0469 #define SMU_SOFTRESET_CONTROL_RESET_PEG0_SHIFT (20)
0470 #define SMU_SOFTRESET_CONTROL_RESET_PEG0_MASK (0x00100000)
0471 #define SMU_SOFTRESET_CONTROL_RESET_PEG1_SHIFT (21)
0472 #define SMU_SOFTRESET_CONTROL_RESET_PEG1_MASK (0x00200000)
0473 #define SMU_SOFTRESET_CONTROL_RESET_SCU_SHIFT (22)
0474 #define SMU_SOFTRESET_CONTROL_RESET_SCU_MASK (0x00400000)
0475
0476
0477
0478
0479 #define SMU_RESET_PROTOCOL_ENGINE_GROUP(peg) \
0480 (\
0481 (1 << ((peg) + 20)) \
0482 | SMU_RESET_WIDE_PORT_QUEUE(peg, 0) \
0483 | SMU_RESET_WIDE_PORT_QUEUE(peg, 1) \
0484 | SMU_RESET_PEG_PROTOCOL_ENGINES(peg) \
0485 )
0486
0487 #define SMU_RESET_ALL_PROTOCOL_ENGINE_GROUPS() \
0488 (\
0489 SMU_RESET_PROTOCOL_ENGINE_GROUP(0) \
0490 | SMU_RESET_PROTOCOL_ENGINE_GROUP(1) \
0491 )
0492
0493 #define SMU_RESET_SCU() (0xFFFFFFFF)
0494
0495
0496
0497
0498 #define SMU_TASK_CONTEXT_ASSIGNMENT_STARTING_SHIFT (0)
0499 #define SMU_TASK_CONTEXT_ASSIGNMENT_STARTING_MASK (0x00000FFF)
0500 #define SMU_TASK_CONTEXT_ASSIGNMENT_ENDING_SHIFT (16)
0501 #define SMU_TASK_CONTEXT_ASSIGNMENT_ENDING_MASK (0x0FFF0000)
0502 #define SMU_TASK_CONTEXT_ASSIGNMENT_RANGE_CHECK_ENABLE_SHIFT (31)
0503 #define SMU_TASK_CONTEXT_ASSIGNMENT_RANGE_CHECK_ENABLE_MASK (0x80000000)
0504 #define SMU_TASK_CONTEXT_ASSIGNMENT_RESERVED_MASK (0x7000F000)
0505
0506 #define SMU_TCA_GEN_VAL(name, value) \
0507 SCU_GEN_VALUE(SMU_TASK_CONTEXT_ASSIGNMENT_ ## name, value)
0508
0509 #define SMU_TCA_GEN_BIT(name) \
0510 SCU_GEN_BIT(SMU_TASK_CONTEXT_ASSIGNMENT_ ## name)
0511
0512
0513 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_CONTROL_QUEUE_SIZE_SHIFT (0)
0514 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_CONTROL_QUEUE_SIZE_MASK (0x00000FFF)
0515 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_CONTROL_RESERVED_MASK (0xFFFFF000)
0516
0517 #define SCU_UFQC_GEN_VAL(name, value) \
0518 SCU_GEN_VALUE(SCU_SDMA_UNSOLICITED_FRAME_QUEUE_CONTROL_ ## name, value)
0519
0520 #define SCU_UFQC_QUEUE_SIZE_SET(value) \
0521 SCU_UFQC_GEN_VAL(QUEUE_SIZE, value)
0522
0523
0524 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_POINTER_SHIFT (0)
0525 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_POINTER_MASK (0x00000FFF)
0526 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_CYCLE_BIT_SHIFT (12)
0527 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_CYCLE_BIT_MASK (0x00001000)
0528 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_RESERVED_MASK (0xFFFFE000)
0529
0530 #define SCU_UFQPP_GEN_VAL(name, value) \
0531 SCU_GEN_VALUE(SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_ ## name, value)
0532
0533 #define SCU_UFQPP_GEN_BIT(name) \
0534 SCU_GEN_BIT(SCU_SDMA_UNSOLICITED_FRAME_QUEUE_PUT_ ## name)
0535
0536
0537
0538
0539
0540 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_POINTER_SHIFT (0)
0541 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_POINTER_MASK (0x00000FFF)
0542 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_CYCLE_BIT_SHIFT (12)
0543 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_CYCLE_BIT_MASK (12)
0544 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_ENABLE_BIT_SHIFT (31)
0545 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_ENABLE_BIT_MASK (0x80000000)
0546 #define SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_RESERVED_MASK (0x7FFFE000)
0547
0548 #define SCU_UFQGP_GEN_VAL(name, value) \
0549 SCU_GEN_VALUE(SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_ ## name, value)
0550
0551 #define SCU_UFQGP_GEN_BIT(name) \
0552 SCU_GEN_BIT(SCU_SDMA_UNSOLICITED_FRAME_QUEUE_GET_ ## name)
0553
0554 #define SCU_UFQGP_CYCLE_BIT(value) \
0555 SCU_UFQGP_GEN_BIT(CYCLE_BIT, value)
0556
0557 #define SCU_UFQGP_GET_POINTER(value) \
0558 SCU_UFQGP_GEN_VALUE(POINTER, value)
0559
0560 #define SCU_UFQGP_ENABLE(value) \
0561 (SCU_UFQGP_GEN_BIT(ENABLE) | value)
0562
0563 #define SCU_UFQGP_DISABLE(value) \
0564 (~SCU_UFQGP_GEN_BIT(ENABLE) & value)
0565
0566 #define SCU_UFQGP_VALUE(bit, value) \
0567 (SCU_UFQGP_CYCLE_BIT(bit) | SCU_UFQGP_GET_POINTER(value))
0568
0569
0570 #define SCU_PDMA_CONFIGURATION_ADDRESS_MODIFIER_SHIFT (0)
0571 #define SCU_PDMA_CONFIGURATION_ADDRESS_MODIFIER_MASK (0x0000FFFF)
0572 #define SCU_PDMA_CONFIGURATION_PCI_RELAXED_ORDERING_ENABLE_SHIFT (16)
0573 #define SCU_PDMA_CONFIGURATION_PCI_RELAXED_ORDERING_ENABLE_MASK (0x00010000)
0574 #define SCU_PDMA_CONFIGURATION_PCI_NO_SNOOP_ENABLE_SHIFT (17)
0575 #define SCU_PDMA_CONFIGURATION_PCI_NO_SNOOP_ENABLE_MASK (0x00020000)
0576 #define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_BYTE_SWAP_SHIFT (18)
0577 #define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_BYTE_SWAP_MASK (0x00040000)
0578 #define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_XPI_SGL_FETCH_SHIFT (19)
0579 #define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_XPI_SGL_FETCH_MASK (0x00080000)
0580 #define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_XPI_RX_HEADER_RAM_WRITE_SHIFT (20)
0581 #define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_XPI_RX_HEADER_RAM_WRITE_MASK (0x00100000)
0582 #define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_XPI_UF_ADDRESS_FETCH_SHIFT (21)
0583 #define SCU_PDMA_CONFIGURATION_BIG_ENDIAN_CONTROL_XPI_UF_ADDRESS_FETCH_MASK (0x00200000)
0584 #define SCU_PDMA_CONFIGURATION_ADDRESS_MODIFIER_SELECT_SHIFT (22)
0585 #define SCU_PDMA_CONFIGURATION_ADDRESS_MODIFIER_SELECT_MASK (0x00400000)
0586 #define SCU_PDMA_CONFIGURATION_RESERVED_MASK (0xFF800000)
0587
0588 #define SCU_PDMACR_GEN_VALUE(name, value) \
0589 SCU_GEN_VALUE(SCU_PDMA_CONFIGURATION_ ## name, value)
0590
0591 #define SCU_PDMACR_GEN_BIT(name) \
0592 SCU_GEN_BIT(SCU_PDMA_CONFIGURATION_ ## name)
0593
0594 #define SCU_PDMACR_BE_GEN_BIT(name) \
0595 SCU_PCMACR_GEN_BIT(BIG_ENDIAN_CONTROL_ ## name)
0596
0597
0598 #define SCU_CDMA_CONFIGURATION_PCI_RELAXED_ORDERING_ENABLE_SHIFT (8)
0599 #define SCU_CDMA_CONFIGURATION_PCI_RELAXED_ORDERING_ENABLE_MASK (0x00000100)
0600
0601 #define SCU_CDMACR_GEN_BIT(name) \
0602 SCU_GEN_BIT(SCU_CDMA_CONFIGURATION_ ## name)
0603
0604
0605
0606
0607
0608 #define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_TIMEOUT_SHIFT (0)
0609 #define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_TIMEOUT_MASK (0x000000FF)
0610 #define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_LOCK_TIME_SHIFT (8)
0611 #define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_LOCK_TIME_MASK (0x0000FF00)
0612 #define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_RATE_CHANGE_DELAY_SHIFT (16)
0613 #define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_RATE_CHANGE_DELAY_MASK (0x00FF0000)
0614 #define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_DWORD_SYNC_TIMEOUT_SHIFT (24)
0615 #define SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_DWORD_SYNC_TIMEOUT_MASK (0xFF000000)
0616 #define SCU_LINK_LAYER_SPEED_NECGOIATION_TIMER_VALUES_REQUIRED_MASK (0x00000000)
0617 #define SCU_LINK_LAYER_SPEED_NECGOIATION_TIMER_VALUES_DEFAULT_MASK (0x7D00676F)
0618 #define SCU_LINK_LAYER_SPEED_NECGOIATION_TIMER_VALUES_RESERVED_MASK (0x00FF0000)
0619
0620 #define SCU_SAS_SPDTOV_GEN_VALUE(name, value) \
0621 SCU_GEN_VALUE(SCU_LINK_LAYER_SPEED_NEGOTIATION_TIMER_VALUES_ ## name, value)
0622
0623
0624 #define SCU_LINK_STATUS_DWORD_SYNC_AQUIRED_SHIFT (2)
0625 #define SCU_LINK_STATUS_DWORD_SYNC_AQUIRED_MASK (0x00000004)
0626 #define SCU_LINK_STATUS_TRANSMIT_PORT_SELECTION_DONE_SHIFT (4)
0627 #define SCU_LINK_STATUS_TRANSMIT_PORT_SELECTION_DONE_MASK (0x00000010)
0628 #define SCU_LINK_STATUS_RECEIVER_CREDIT_EXHAUSTED_SHIFT (5)
0629 #define SCU_LINK_STATUS_RECEIVER_CREDIT_EXHAUSTED_MASK (0x00000020)
0630 #define SCU_LINK_STATUS_RESERVED_MASK (0xFFFFFFCD)
0631
0632 #define SCU_SAS_LLSTA_GEN_BIT(name) \
0633 SCU_GEN_BIT(SCU_LINK_STATUS_ ## name)
0634
0635
0636
0637
0638
0639
0640
0641
0642 #define SCU_SAS_MAX_ARBITRATION_WAIT_TIME_TIMEOUT_VALUE_SHIFT (0)
0643 #define SCU_SAS_MAX_ARBITRATION_WAIT_TIME_TIMEOUT_VALUE_MASK (0x00007FFF)
0644 #define SCU_SAS_MAX_ARBITRATION_WAIT_TIME_TIMEOUT_SCALE_SHIFT (15)
0645 #define SCU_SAS_MAX_ARBITRATION_WAIT_TIME_TIMEOUT_SCALE_MASK (0x00008000)
0646
0647 #define SCU_SAS_MAWTTOV_GEN_VALUE(name, value) \
0648 SCU_GEN_VALUE(SCU_SAS_MAX_ARBITRATION_WAIT_TIME_TIMEOUT_ ## name, value)
0649
0650 #define SCU_SAS_MAWTTOV_GEN_BIT(name) \
0651 SCU_GEN_BIT(SCU_SAS_MAX_ARBITRATION_WAIT_TIME_TIMEOUT_ ## name)
0652
0653
0654
0655
0656
0657
0658 #define SCU_SAS_TRANSMIT_IDENTIFICATION_SMP_TARGET_SHIFT (1)
0659 #define SCU_SAS_TRANSMIT_IDENTIFICATION_SMP_TARGET_MASK (0x00000002)
0660 #define SCU_SAS_TRANSMIT_IDENTIFICATION_STP_TARGET_SHIFT (2)
0661 #define SCU_SAS_TRANSMIT_IDENTIFICATION_STP_TARGET_MASK (0x00000004)
0662 #define SCU_SAS_TRANSMIT_IDENTIFICATION_SSP_TARGET_SHIFT (3)
0663 #define SCU_SAS_TRANSMIT_IDENTIFICATION_SSP_TARGET_MASK (0x00000008)
0664 #define SCU_SAS_TRANSMIT_IDENTIFICATION_DA_SATA_HOST_SHIFT (8)
0665 #define SCU_SAS_TRANSMIT_IDENTIFICATION_DA_SATA_HOST_MASK (0x00000100)
0666 #define SCU_SAS_TRANSMIT_IDENTIFICATION_SMP_INITIATOR_SHIFT (9)
0667 #define SCU_SAS_TRANSMIT_IDENTIFICATION_SMP_INITIATOR_MASK (0x00000200)
0668 #define SCU_SAS_TRANSMIT_IDENTIFICATION_STP_INITIATOR_SHIFT (10)
0669 #define SCU_SAS_TRANSMIT_IDENTIFICATION_STP_INITIATOR_MASK (0x00000400)
0670 #define SCU_SAS_TRANSMIT_IDENTIFICATION_SSP_INITIATOR_SHIFT (11)
0671 #define SCU_SAS_TRANSMIT_IDENTIFICATION_SSP_INITIATOR_MASK (0x00000800)
0672 #define SCU_SAS_TRANSMIT_IDENTIFICATION_REASON_CODE_SHIFT (16)
0673 #define SCU_SAS_TRANSMIT_IDENTIFICATION_REASON_CODE_MASK (0x000F0000)
0674 #define SCU_SAS_TRANSMIT_IDENTIFICATION_ADDRESS_FRAME_TYPE_SHIFT (24)
0675 #define SCU_SAS_TRANSMIT_IDENTIFICATION_ADDRESS_FRAME_TYPE_MASK (0x0F000000)
0676 #define SCU_SAS_TRANSMIT_IDENTIFICATION_DEVICE_TYPE_SHIFT (28)
0677 #define SCU_SAS_TRANSMIT_IDENTIFICATION_DEVICE_TYPE_MASK (0x70000000)
0678 #define SCU_SAS_TRANSMIT_IDENTIFICATION_RESERVED_MASK (0x80F0F1F1)
0679
0680 #define SCU_SAS_TIID_GEN_VAL(name, value) \
0681 SCU_GEN_VALUE(SCU_SAS_TRANSMIT_IDENTIFICATION_ ## name, value)
0682
0683 #define SCU_SAS_TIID_GEN_BIT(name) \
0684 SCU_GEN_BIT(SCU_SAS_TRANSMIT_IDENTIFICATION_ ## name)
0685
0686
0687 #define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_BREAK_REPLY_CAPABLE_SHIFT (16)
0688 #define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_BREAK_REPLY_CAPABLE_MASK (0x00010000)
0689 #define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_REQUESTED_INSIDE_ZPSDS_SHIFT (17)
0690 #define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_REQUESTED_INSIDE_ZPSDS_MASK (0x00020000)
0691 #define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_INSIDE_ZPSDS_PERSISTENT_SHIFT (18)
0692 #define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_INSIDE_ZPSDS_PERSISTENT_MASK (0x00040000)
0693 #define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_ID_SHIFT (24)
0694 #define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_ID_MASK (0xFF000000)
0695 #define SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_RESERVED_MASK (0x00F800FF)
0696
0697 #define SCU_SAS_TIPID_GEN_VALUE(name, value) \
0698 SCU_GEN_VALUE(SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_ ## name, value)
0699
0700 #define SCU_SAS_TIPID_GEN_BIT(name) \
0701 SCU_GEN_BIT(SCU_LINK_LAYER_IDENTIFY_FRAME_PHY_IDENTIFIER_ ## name)
0702
0703
0704 #define SCU_SAS_PHY_CONFIGURATION_TX_PARITY_CHECK_SHIFT (4)
0705 #define SCU_SAS_PHY_CONFIGURATION_TX_PARITY_CHECK_MASK (0x00000010)
0706 #define SCU_SAS_PHY_CONFIGURATION_TX_BAD_CRC_SHIFT (6)
0707 #define SCU_SAS_PHY_CONFIGURATION_TX_BAD_CRC_MASK (0x00000040)
0708 #define SCU_SAS_PHY_CONFIGURATION_DISABLE_SCRAMBLER_SHIFT (7)
0709 #define SCU_SAS_PHY_CONFIGURATION_DISABLE_SCRAMBLER_MASK (0x00000080)
0710 #define SCU_SAS_PHY_CONFIGURATION_DISABLE_DESCRAMBLER_SHIFT (8)
0711 #define SCU_SAS_PHY_CONFIGURATION_DISABLE_DESCRAMBLER_MASK (0x00000100)
0712 #define SCU_SAS_PHY_CONFIGURATION_DISABLE_CREDIT_INSERTION_SHIFT (9)
0713 #define SCU_SAS_PHY_CONFIGURATION_DISABLE_CREDIT_INSERTION_MASK (0x00000200)
0714 #define SCU_SAS_PHY_CONFIGURATION_SUSPEND_PROTOCOL_ENGINE_SHIFT (11)
0715 #define SCU_SAS_PHY_CONFIGURATION_SUSPEND_PROTOCOL_ENGINE_MASK (0x00000800)
0716 #define SCU_SAS_PHY_CONFIGURATION_SATA_SPINUP_HOLD_SHIFT (12)
0717 #define SCU_SAS_PHY_CONFIGURATION_SATA_SPINUP_HOLD_MASK (0x00001000)
0718 #define SCU_SAS_PHY_CONFIGURATION_TRANSMIT_PORT_SELECTION_SIGNAL_SHIFT (13)
0719 #define SCU_SAS_PHY_CONFIGURATION_TRANSMIT_PORT_SELECTION_SIGNAL_MASK (0x00002000)
0720 #define SCU_SAS_PHY_CONFIGURATION_HARD_RESET_SHIFT (14)
0721 #define SCU_SAS_PHY_CONFIGURATION_HARD_RESET_MASK (0x00004000)
0722 #define SCU_SAS_PHY_CONFIGURATION_OOB_ENABLE_SHIFT (15)
0723 #define SCU_SAS_PHY_CONFIGURATION_OOB_ENABLE_MASK (0x00008000)
0724 #define SCU_SAS_PHY_CONFIGURATION_ENABLE_FRAME_TX_INSERT_ALIGN_SHIFT (23)
0725 #define SCU_SAS_PHY_CONFIGURATION_ENABLE_FRAME_TX_INSERT_ALIGN_MASK (0x00800000)
0726 #define SCU_SAS_PHY_CONFIGURATION_FORWARD_IDENTIFY_FRAME_SHIFT (27)
0727 #define SCU_SAS_PHY_CONFIGURATION_FORWARD_IDENTIFY_FRAME_MASK (0x08000000)
0728 #define SCU_SAS_PHY_CONFIGURATION_DISABLE_BYTE_TRANSPOSE_STP_FRAME_SHIFT (28)
0729 #define SCU_SAS_PHY_CONFIGURATION_DISABLE_BYTE_TRANSPOSE_STP_FRAME_MASK (0x10000000)
0730 #define SCU_SAS_PHY_CONFIGURATION_OOB_RESET_SHIFT (29)
0731 #define SCU_SAS_PHY_CONFIGURATION_OOB_RESET_MASK (0x20000000)
0732 #define SCU_SAS_PHY_CONFIGURATION_THREE_IAF_ENABLE_SHIFT (30)
0733 #define SCU_SAS_PHY_CONFIGURATION_THREE_IAF_ENABLE_MASK (0x40000000)
0734 #define SCU_SAS_PHY_CONFIGURATION_OOB_ALIGN0_ENABLE_SHIFT (31)
0735 #define SCU_SAS_PHY_CONFIGURATION_OOB_ALIGN0_ENABLE_MASK (0x80000000)
0736 #define SCU_SAS_PHY_CONFIGURATION_REQUIRED_MASK (0x0100000F)
0737 #define SCU_SAS_PHY_CONFIGURATION_DEFAULT_MASK (0x4180100F)
0738 #define SCU_SAS_PHY_CONFIGURATION_RESERVED_MASK (0x00000000)
0739
0740 #define SCU_SAS_PCFG_GEN_BIT(name) \
0741 SCU_GEN_BIT(SCU_SAS_PHY_CONFIGURATION_ ## name)
0742
0743 #define SCU_LINK_LAYER_ALIGN_INSERTION_FREQUENCY_GENERAL_SHIFT (0)
0744 #define SCU_LINK_LAYER_ALIGN_INSERTION_FREQUENCY_GENERAL_MASK (0x000007FF)
0745 #define SCU_LINK_LAYER_ALIGN_INSERTION_FREQUENCY_CONNECTED_SHIFT (16)
0746 #define SCU_LINK_LAYER_ALIGN_INSERTION_FREQUENCY_CONNECTED_MASK (0x00ff0000)
0747
0748 #define SCU_ALIGN_INSERTION_FREQUENCY_GEN_VAL(name, value) \
0749 SCU_GEN_VALUE(SCU_LINK_LAYER_ALIGN_INSERTION_FREQUENCY_##name, value)
0750
0751 #define SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_COUNT_SHIFT (0)
0752 #define SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_COUNT_MASK (0x0003FFFF)
0753 #define SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_ENABLE_SHIFT (31)
0754 #define SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_ENABLE_MASK (0x80000000)
0755 #define SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_RESERVED_MASK (0x7FFC0000)
0756
0757 #define SCU_ENSPINUP_GEN_VAL(name, value) \
0758 SCU_GEN_VALUE(SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_ ## name, value)
0759
0760 #define SCU_ENSPINUP_GEN_BIT(name) \
0761 SCU_GEN_BIT(SCU_LINK_LAYER_ENABLE_SPINUP_CONTROL_ ## name)
0762
0763
0764 #define SCU_LINK_LAYER_PHY_CAPABILITIES_TXSSCTYPE_SHIFT (1)
0765 #define SCU_LINK_LAYER_PHY_CAPABILITIES_TXSSCTYPE_MASK (0x00000002)
0766 #define SCU_LINK_LAYER_PHY_CAPABILITIES_RLLRATE_SHIFT (4)
0767 #define SCU_LINK_LAYER_PHY_CAPABILITIES_RLLRATE_MASK (0x000000F0)
0768 #define SCU_LINK_LAYER_PHY_CAPABILITIES_SWO15GBPS_SHIFT (8)
0769 #define SCU_LINK_LAYER_PHY_CAPABILITIES_SWO15GBPS_MASK (0x00000100)
0770 #define SCU_LINK_LAYER_PHY_CAPABILITIES_SW15GBPS_SHIFT (9)
0771 #define SCU_LINK_LAYER_PHY_CAPABILITIES_SW15GBPS_MASK (0x00000201)
0772 #define SCU_LINK_LAYER_PHY_CAPABILITIES_SWO30GBPS_SHIFT (10)
0773 #define SCU_LINK_LAYER_PHY_CAPABILITIES_SWO30GBPS_MASK (0x00000401)
0774 #define SCU_LINK_LAYER_PHY_CAPABILITIES_SW30GBPS_SHIFT (11)
0775 #define SCU_LINK_LAYER_PHY_CAPABILITIES_SW30GBPS_MASK (0x00000801)
0776 #define SCU_LINK_LAYER_PHY_CAPABILITIES_SWO60GBPS_SHIFT (12)
0777 #define SCU_LINK_LAYER_PHY_CAPABILITIES_SWO60GBPS_MASK (0x00001001)
0778 #define SCU_LINK_LAYER_PHY_CAPABILITIES_SW60GBPS_SHIFT (13)
0779 #define SCU_LINK_LAYER_PHY_CAPABILITIES_SW60GBPS_MASK (0x00002001)
0780 #define SCU_LINK_LAYER_PHY_CAPABILITIES_EVEN_PARITY_SHIFT (31)
0781 #define SCU_LINK_LAYER_PHY_CAPABILITIES_EVEN_PARITY_MASK (0x80000000)
0782 #define SCU_LINK_LAYER_PHY_CAPABILITIES_DEFAULT_MASK (0x00003F01)
0783 #define SCU_LINK_LAYER_PHY_CAPABILITIES_REQUIRED_MASK (0x00000001)
0784 #define SCU_LINK_LAYER_PHY_CAPABILITIES_RESERVED_MASK (0x7FFFC00D)
0785
0786 #define SCU_SAS_PHYCAP_GEN_VAL(name, value) \
0787 SCU_GEN_VALUE(SCU_LINK_LAYER_PHY_CAPABILITIES_ ## name, value)
0788
0789 #define SCU_SAS_PHYCAP_GEN_BIT(name) \
0790 SCU_GEN_BIT(SCU_LINK_LAYER_PHY_CAPABILITIES_ ## name)
0791
0792
0793 #define SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_VIRTUAL_EXPANDER_PHY_ZONE_GROUP_SHIFT (0)
0794 #define SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_VIRTUAL_EXPANDER_PHY_ZONE_GROUP_MASK (0x000000FF)
0795 #define SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_INSIDE_SOURCE_ZONE_GROUP_SHIFT (31)
0796 #define SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_INSIDE_SOURCE_ZONE_GROUP_MASK (0x80000000)
0797 #define SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_RESERVED_MASK (0x7FFFFF00)
0798
0799 #define SCU_PSZGCR_GEN_VAL(name, value) \
0800 SCU_GEN_VALUE(SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_ ## name, value)
0801
0802 #define SCU_PSZGCR_GEN_BIT(name) \
0803 SCU_GEN_BIT(SCU_LINK_LAYER_PHY_SOURCE_ZONE_GROUP_CONTROL_ ## name)
0804
0805 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE0_LOCKED_SHIFT (1)
0806 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE0_LOCKED_MASK (0x00000002)
0807 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE0_UPDATING_SHIFT (2)
0808 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE0_UPDATING_MASK (0x00000004)
0809 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE1_LOCKED_SHIFT (4)
0810 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE1_LOCKED_MASK (0x00000010)
0811 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE1_UPDATING_SHIFT (5)
0812 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZONE1_UPDATING_MASK (0x00000020)
0813 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE0_SHIFT (16)
0814 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE0_MASK (0x00030000)
0815 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE0_SHIFT (19)
0816 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE0_MASK (0x00080000)
0817 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE1_SHIFT (20)
0818 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE1_MASK (0x00300000)
0819 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE1_SHIFT (23)
0820 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE1_MASK (0x00800000)
0821 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE2_SHIFT (24)
0822 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE2_MASK (0x03000000)
0823 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE2_SHIFT (27)
0824 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE2_MASK (0x08000000)
0825 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE3_SHIFT (28)
0826 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ZPT_ASSOCIATION_PE3_MASK (0x30000000)
0827 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE3_SHIFT (31)
0828 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_AIP_ENABLE_PE3_MASK (0x80000000)
0829 #define SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_RESERVED_MASK (0x4444FFC9)
0830
0831 #define SCU_PEG_SCUVZECR_GEN_VAL(name, val) \
0832 SCU_GEN_VALUE(SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ ## name, val)
0833
0834 #define SCU_PEG_SCUVZECR_GEN_BIT(name) \
0835 SCU_GEN_BIT(SCU_PROTOCOL_ENGINE_GROUP_VIRTUAL_ZONING_EXPANDER_CONTROL_ ## name)
0836
0837
0838
0839
0840
0841
0842 #define SCU_PTSG_CONTROL_IT_NEXUS_TIMEOUT_SHIFT (0)
0843 #define SCU_PTSG_CONTROL_IT_NEXUS_TIMEOUT_MASK (0x0000FFFF)
0844 #define SCU_PTSG_CONTROL_TASK_TIMEOUT_SHIFT (16)
0845 #define SCU_PTSG_CONTROL_TASK_TIMEOUT_MASK (0x00FF0000)
0846 #define SCU_PTSG_CONTROL_PTSG_ENABLE_SHIFT (24)
0847 #define SCU_PTSG_CONTROL_PTSG_ENABLE_MASK (0x01000000)
0848 #define SCU_PTSG_CONTROL_ETM_ENABLE_SHIFT (25)
0849 #define SCU_PTSG_CONTROL_ETM_ENABLE_MASK (0x02000000)
0850 #define SCU_PTSG_CONTROL_DEFAULT_MASK (0x00020002)
0851 #define SCU_PTSG_CONTROL_REQUIRED_MASK (0x00000000)
0852 #define SCU_PTSG_CONTROL_RESERVED_MASK (0xFC000000)
0853
0854 #define SCU_PTSGCR_GEN_VAL(name, val) \
0855 SCU_GEN_VALUE(SCU_PTSG_CONTROL_ ## name, val)
0856
0857 #define SCU_PTSGCR_GEN_BIT(name) \
0858 SCU_GEN_BIT(SCU_PTSG_CONTROL_ ## name)
0859
0860
0861
0862 #define SCU_PTSG_REAL_TIME_CLOCK_SHIFT (0)
0863 #define SCU_PTSG_REAL_TIME_CLOCK_MASK (0x0000FFFF)
0864 #define SCU_PTSG_REAL_TIME_CLOCK_RESERVED_MASK (0xFFFF0000)
0865
0866 #define SCU_RTCR_GEN_VAL(name, val) \
0867 SCU_GEN_VALUE(SCU_PTSG_ ## name, val)
0868
0869
0870 #define SCU_PTSG_REAL_TIME_CLOCK_CONTROL_PRESCALER_VALUE_SHIFT (0)
0871 #define SCU_PTSG_REAL_TIME_CLOCK_CONTROL_PRESCALER_VALUE_MASK (0x00FFFFFF)
0872 #define SCU_PTSG_REAL_TIME_CLOCK_CONTROL_RESERVED_MASK (0xFF000000)
0873
0874 #define SCU_RTCCR_GEN_VAL(name, val) \
0875 SCU_GEN_VALUE(SCU_PTSG_REAL_TIME_CLOCK_CONTROL_ ## name, val)
0876
0877
0878 #define SCU_PTSG_PORT_TASK_SCHEDULER_CONTROL_SUSPEND_SHIFT (0)
0879 #define SCU_PTSG_PORT_TASK_SCHEDULER_CONTROL_SUSPEND_MASK (0x00000001)
0880 #define SCU_PTSG_PORT_TASK_SCHEDULER_CONTROL_ENABLE_SHIFT (1)
0881 #define SCU_PTSG_PORT_TASK_SCHEDULER_CONTROL_ENABLE_MASK (0x00000002)
0882 #define SCU_PTSG_PORT_TASK_SCHEDULER_CONTROL_RESERVED_MASK (0xFFFFFFFC)
0883
0884 #define SCU_PTSxCR_GEN_BIT(name) \
0885 SCU_GEN_BIT(SCU_PTSG_PORT_TASK_SCHEDULER_CONTROL_ ## name)
0886
0887
0888 #define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_NEXT_RN_VALID_SHIFT (0)
0889 #define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_NEXT_RN_VALID_MASK (0x00000001)
0890 #define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_ACTIVE_RNSC_LIST_VALID_SHIFT (1)
0891 #define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_ACTIVE_RNSC_LIST_VALID_MASK (0x00000002)
0892 #define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_PTS_SUSPENDED_SHIFT (2)
0893 #define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_PTS_SUSPENDED_MASK (0x00000004)
0894 #define SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_RESERVED_MASK (0xFFFFFFF8)
0895
0896 #define SCU_PTSxSR_GEN_BIT(name) \
0897 SCU_GEN_BIT(SCU_PTSG_PORT_TASK_SCHEDULER_STATUS_ ## name)
0898
0899
0900
0901
0902
0903
0904
0905
0906
0907
0908
0909
0910
0911
0912
0913
0914
0915
0916
0917
0918
0919 #define SCU_SMU_PCP_OFFSET 0x0000
0920 #define SCU_SMU_AMR_OFFSET 0x0004
0921 #define SCU_SMU_ISR_OFFSET 0x0010
0922 #define SCU_SMU_IMR_OFFSET 0x0014
0923 #define SCU_SMU_ICC_OFFSET 0x0018
0924 #define SCU_SMU_HTTLBAR_OFFSET 0x0020
0925 #define SCU_SMU_HTTUBAR_OFFSET 0x0024
0926 #define SCU_SMU_TCR_OFFSET 0x0028
0927 #define SCU_SMU_CQLBAR_OFFSET 0x0030
0928 #define SCU_SMU_CQUBAR_OFFSET 0x0034
0929 #define SCU_SMU_CQPR_OFFSET 0x0040
0930 #define SCU_SMU_CQGR_OFFSET 0x0044
0931 #define SCU_SMU_CQC_OFFSET 0x0048
0932
0933 #define SCU_SMU_RNCLBAR_OFFSET 0x0080
0934 #define SCU_SMU_RNCUBAR_OFFSET 0x0084
0935 #define SCU_SMU_DCC_OFFSET 0x0090
0936 #define SCU_SMU_DFC_OFFSET 0x0094
0937 #define SCU_SMU_SMUCSR_OFFSET 0x0098
0938 #define SCU_SMU_SCUSRCR_OFFSET 0x009C
0939 #define SCU_SMU_SMAW_OFFSET 0x00A0
0940 #define SCU_SMU_SMDW_OFFSET 0x00A4
0941
0942 #define SCU_SMU_TCA_OFFSET 0x0400
0943
0944 #define SCU_SMU_MT_MLAR0_OFFSET 0x2000
0945 #define SCU_SMU_MT_MUAR0_OFFSET 0x2004
0946 #define SCU_SMU_MT_MDR0_OFFSET 0x2008
0947 #define SCU_SMU_MT_VCR0_OFFSET 0x200C
0948 #define SCU_SMU_MT_MLAR1_OFFSET 0x2010
0949 #define SCU_SMU_MT_MUAR1_OFFSET 0x2014
0950 #define SCU_SMU_MT_MDR1_OFFSET 0x2018
0951 #define SCU_SMU_MT_VCR1_OFFSET 0x201C
0952 #define SCU_SMU_MPBA_OFFSET 0x3000
0953
0954
0955
0956
0957
0958
0959 struct smu_registers {
0960
0961 u32 post_context_port;
0962
0963 u32 address_modifier;
0964 u32 reserved_08;
0965 u32 reserved_0C;
0966
0967 u32 interrupt_status;
0968
0969 u32 interrupt_mask;
0970
0971 u32 interrupt_coalesce_control;
0972 u32 reserved_1C;
0973
0974 u32 host_task_table_lower;
0975
0976 u32 host_task_table_upper;
0977
0978 u32 task_context_range;
0979 u32 reserved_2C;
0980
0981 u32 completion_queue_lower;
0982
0983 u32 completion_queue_upper;
0984 u32 reserved_38;
0985 u32 reserved_3C;
0986
0987 u32 completion_queue_put;
0988
0989 u32 completion_queue_get;
0990
0991 u32 completion_queue_control;
0992 u32 reserved_4C;
0993 u32 reserved_5x[4];
0994 u32 reserved_6x[4];
0995 u32 reserved_7x[4];
0996
0997
0998
0999 u32 remote_node_context_lower;
1000
1001 u32 remote_node_context_upper;
1002 u32 reserved_88;
1003 u32 reserved_8C;
1004
1005 u32 device_context_capacity;
1006
1007 u32 device_function_capacity;
1008
1009 u32 control_status;
1010
1011 u32 soft_reset_control;
1012
1013 u32 mmr_address_window;
1014
1015 u32 mmr_data_window;
1016
1017 u32 clock_gating_control;
1018
1019 u32 clock_gating_performance;
1020
1021 u32 reserved_Bx[4];
1022 u32 reserved_Cx[4];
1023 u32 reserved_Dx[4];
1024 u32 reserved_Ex[4];
1025 u32 reserved_Fx[4];
1026 u32 reserved_1xx[64];
1027 u32 reserved_2xx[64];
1028 u32 reserved_3xx[64];
1029
1030
1031
1032 u32 task_context_assignment[256];
1033
1034 };
1035
1036
1037
1038
1039
1040 #define SCU_SDMA_BASE 0x6000
1041 #define SCU_SDMA_PUFATLHAR_OFFSET 0x0000
1042 #define SCU_SDMA_PUFATUHAR_OFFSET 0x0004
1043 #define SCU_SDMA_UFLHBAR_OFFSET 0x0008
1044 #define SCU_SDMA_UFUHBAR_OFFSET 0x000C
1045 #define SCU_SDMA_UFQC_OFFSET 0x0010
1046 #define SCU_SDMA_UFQPP_OFFSET 0x0014
1047 #define SCU_SDMA_UFQGP_OFFSET 0x0018
1048 #define SCU_SDMA_PDMACR_OFFSET 0x001C
1049 #define SCU_SDMA_CDMACR_OFFSET 0x0080
1050
1051
1052
1053
1054
1055
1056 struct scu_sdma_registers {
1057
1058 u32 uf_address_table_lower;
1059
1060 u32 uf_address_table_upper;
1061
1062 u32 uf_header_base_address_lower;
1063
1064 u32 uf_header_base_address_upper;
1065
1066 u32 unsolicited_frame_queue_control;
1067
1068 u32 unsolicited_frame_put_pointer;
1069
1070 u32 unsolicited_frame_get_pointer;
1071
1072 u32 pdma_configuration;
1073
1074 u32 reserved_0020_007C[0x18];
1075
1076 u32 cdma_configuration;
1077
1078 u32 reserved_0084_0400[0xDF];
1079
1080 };
1081
1082
1083
1084
1085
1086 #define SCU_PEG0_OFFSET 0x0000
1087 #define SCU_PEG1_OFFSET 0x8000
1088
1089 #define SCU_TL0_OFFSET 0x0000
1090 #define SCU_TL1_OFFSET 0x0400
1091 #define SCU_TL2_OFFSET 0x0800
1092 #define SCU_TL3_OFFSET 0x0C00
1093
1094 #define SCU_LL_OFFSET 0x0080
1095 #define SCU_LL0_OFFSET (SCU_TL0_OFFSET + SCU_LL_OFFSET)
1096 #define SCU_LL1_OFFSET (SCU_TL1_OFFSET + SCU_LL_OFFSET)
1097 #define SCU_LL2_OFFSET (SCU_TL2_OFFSET + SCU_LL_OFFSET)
1098 #define SCU_LL3_OFFSET (SCU_TL3_OFFSET + SCU_LL_OFFSET)
1099
1100
1101 #define SCU_TLCR_OFFSET 0x0000
1102 #define SCU_TLADTR_OFFSET 0x0004
1103 #define SCU_TLTTMR_OFFSET 0x0008
1104 #define SCU_TLEECR0_OFFSET 0x000C
1105 #define SCU_STPTLDARNI_OFFSET 0x0010
1106
1107
1108 #define SCU_TLCR_HASH_SAS_CHECKING_ENABLE_SHIFT (0)
1109 #define SCU_TLCR_HASH_SAS_CHECKING_ENABLE_MASK (0x00000001)
1110 #define SCU_TLCR_CLEAR_TCI_NCQ_MAPPING_TABLE_SHIFT (1)
1111 #define SCU_TLCR_CLEAR_TCI_NCQ_MAPPING_TABLE_MASK (0x00000002)
1112 #define SCU_TLCR_STP_WRITE_DATA_PREFETCH_SHIFT (3)
1113 #define SCU_TLCR_STP_WRITE_DATA_PREFETCH_MASK (0x00000008)
1114 #define SCU_TLCR_CMD_NAK_STATUS_CODE_SHIFT (4)
1115 #define SCU_TLCR_CMD_NAK_STATUS_CODE_MASK (0x00000010)
1116 #define SCU_TLCR_RESERVED_MASK (0xFFFFFFEB)
1117
1118 #define SCU_TLCR_GEN_BIT(name) \
1119 SCU_GEN_BIT(SCU_TLCR_ ## name)
1120
1121
1122
1123
1124
1125
1126
1127 struct scu_transport_layer_registers {
1128
1129 u32 control;
1130
1131 u32 arbitration_delay_timer;
1132
1133 u32 timer_test_mode;
1134
1135 u32 reserved_0C;
1136
1137 u32 stp_rni;
1138
1139 u32 tlfe_wpo_read_control;
1140
1141 u32 tlfe_wpo_read_data;
1142
1143 u32 rxtl_single_step_control_status_1;
1144
1145 u32 rxtl_single_step_control_status_2;
1146
1147 u32 tlfe_awt_retry_delay_debug_control;
1148
1149 u32 reserved_0028_007F[0x16];
1150
1151 };
1152
1153
1154 #define SCU_SCUVZECRx_OFFSET 0x1080
1155
1156
1157 #define SCU_SAS_SPDTOV_OFFSET 0x0000
1158 #define SCU_SAS_LLSTA_OFFSET 0x0004
1159 #define SCU_SATA_PSELTOV_OFFSET 0x0008
1160 #define SCU_SAS_TIMETOV_OFFSET 0x0010
1161 #define SCU_SAS_LOSTOT_OFFSET 0x0014
1162 #define SCU_SAS_LNKTOV_OFFSET 0x0018
1163 #define SCU_SAS_PHYTOV_OFFSET 0x001C
1164 #define SCU_SAS_AFERCNT_OFFSET 0x0020
1165 #define SCU_SAS_WERCNT_OFFSET 0x0024
1166 #define SCU_SAS_TIID_OFFSET 0x0028
1167 #define SCU_SAS_TIDNH_OFFSET 0x002C
1168 #define SCU_SAS_TIDNL_OFFSET 0x0030
1169 #define SCU_SAS_TISSAH_OFFSET 0x0034
1170 #define SCU_SAS_TISSAL_OFFSET 0x0038
1171 #define SCU_SAS_TIPID_OFFSET 0x003C
1172 #define SCU_SAS_TIRES2_OFFSET 0x0040
1173 #define SCU_SAS_ADRSTA_OFFSET 0x0044
1174 #define SCU_SAS_MAWTTOV_OFFSET 0x0048
1175 #define SCU_SAS_FRPLDFIL_OFFSET 0x0054
1176 #define SCU_SAS_RFCNT_OFFSET 0x0060
1177 #define SCU_SAS_TFCNT_OFFSET 0x0064
1178 #define SCU_SAS_RFDCNT_OFFSET 0x0068
1179 #define SCU_SAS_TFDCNT_OFFSET 0x006C
1180 #define SCU_SAS_LERCNT_OFFSET 0x0070
1181 #define SCU_SAS_RDISERRCNT_OFFSET 0x0074
1182 #define SCU_SAS_CRERCNT_OFFSET 0x0078
1183 #define SCU_STPCTL_OFFSET 0x007C
1184 #define SCU_SAS_PCFG_OFFSET 0x0080
1185 #define SCU_SAS_CLKSM_OFFSET 0x0084
1186 #define SCU_SAS_TXCOMWAKE_OFFSET 0x0088
1187 #define SCU_SAS_TXCOMINIT_OFFSET 0x008C
1188 #define SCU_SAS_TXCOMSAS_OFFSET 0x0090
1189 #define SCU_SAS_COMINIT_OFFSET 0x0094
1190 #define SCU_SAS_COMWAKE_OFFSET 0x0098
1191 #define SCU_SAS_COMSAS_OFFSET 0x009C
1192 #define SCU_SAS_SFERCNT_OFFSET 0x00A0
1193 #define SCU_SAS_CDFERCNT_OFFSET 0x00A4
1194 #define SCU_SAS_DNFERCNT_OFFSET 0x00A8
1195 #define SCU_SAS_PRSTERCNT_OFFSET 0x00AC
1196 #define SCU_SAS_CNTCTL_OFFSET 0x00B0
1197 #define SCU_SAS_SSPTOV_OFFSET 0x00B4
1198 #define SCU_FTCTL_OFFSET 0x00B8
1199 #define SCU_FRCTL_OFFSET 0x00BC
1200 #define SCU_FTWMRK_OFFSET 0x00C0
1201 #define SCU_ENSPINUP_OFFSET 0x00C4
1202 #define SCU_SAS_TRNTOV_OFFSET 0x00C8
1203 #define SCU_SAS_PHYCAP_OFFSET 0x00CC
1204 #define SCU_SAS_PHYCTL_OFFSET 0x00D0
1205 #define SCU_SAS_LLCTL_OFFSET 0x00D8
1206 #define SCU_AFE_XCVRCR_OFFSET 0x00DC
1207 #define SCU_AFE_LUTCR_OFFSET 0x00E0
1208
1209 #define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_ALIGN_DETECTION_SHIFT (0UL)
1210 #define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_ALIGN_DETECTION_MASK (0x000000FFUL)
1211 #define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_HOT_PLUG_SHIFT (8UL)
1212 #define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_HOT_PLUG_MASK (0x0000FF00UL)
1213 #define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_COMSAS_DETECTION_SHIFT (16UL)
1214 #define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_COMSAS_DETECTION_MASK (0x00FF0000UL)
1215 #define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_RATE_CHANGE_SHIFT (24UL)
1216 #define SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_RATE_CHANGE_MASK (0xFF000000UL)
1217
1218 #define SCU_SAS_PHYTOV_GEN_VAL(name, value) \
1219 SCU_GEN_VALUE(SCU_SAS_PHY_TIMER_TIMEOUT_VALUES_##name, value)
1220
1221 #define SCU_SAS_LINK_LAYER_CONTROL_MAX_LINK_RATE_SHIFT (0)
1222 #define SCU_SAS_LINK_LAYER_CONTROL_MAX_LINK_RATE_MASK (0x00000003)
1223 #define SCU_SAS_LINK_LAYER_CONTROL_MAX_LINK_RATE_GEN1 (0)
1224 #define SCU_SAS_LINK_LAYER_CONTROL_MAX_LINK_RATE_GEN2 (1)
1225 #define SCU_SAS_LINK_LAYER_CONTROL_MAX_LINK_RATE_GEN3 (2)
1226 #define SCU_SAS_LINK_LAYER_CONTROL_BROADCAST_PRIMITIVE_SHIFT (2)
1227 #define SCU_SAS_LINK_LAYER_CONTROL_BROADCAST_PRIMITIVE_MASK (0x000003FC)
1228 #define SCU_SAS_LINK_LAYER_CONTROL_CLOSE_NO_ACTIVE_TASK_DISABLE_SHIFT (16)
1229 #define SCU_SAS_LINK_LAYER_CONTROL_CLOSE_NO_ACTIVE_TASK_DISABLE_MASK (0x00010000)
1230 #define SCU_SAS_LINK_LAYER_CONTROL_CLOSE_NO_OUTBOUND_TASK_DISABLE_SHIFT (17)
1231 #define SCU_SAS_LINK_LAYER_CONTROL_CLOSE_NO_OUTBOUND_TASK_DISABLE_MASK (0x00020000)
1232 #define SCU_SAS_LINK_LAYER_CONTROL_NO_OUTBOUND_TASK_TIMEOUT_SHIFT (24)
1233 #define SCU_SAS_LINK_LAYER_CONTROL_NO_OUTBOUND_TASK_TIMEOUT_MASK (0xFF000000)
1234 #define SCU_SAS_LINK_LAYER_CONTROL_RESERVED (0x00FCFC00)
1235
1236 #define SCU_SAS_LLCTL_GEN_VAL(name, value) \
1237 SCU_GEN_VALUE(SCU_SAS_LINK_LAYER_CONTROL_ ## name, value)
1238
1239 #define SCU_SAS_LLCTL_GEN_BIT(name) \
1240 SCU_GEN_BIT(SCU_SAS_LINK_LAYER_CONTROL_ ## name)
1241
1242 #define SCU_SAS_LINK_LAYER_TXCOMSAS_NEGTIME_DEFAULT (0xF0)
1243 #define SCU_SAS_LINK_LAYER_TXCOMSAS_NEGTIME_EXTENDED (0x1FF)
1244 #define SCU_SAS_LINK_LAYER_TXCOMSAS_NEGTIME_SHIFT (0)
1245 #define SCU_SAS_LINK_LAYER_TXCOMSAS_NEGTIME_MASK (0x3FF)
1246
1247 #define SCU_SAS_LLTXCOMSAS_GEN_VAL(name, value) \
1248 SCU_GEN_VALUE(SCU_SAS_LINK_LAYER_TXCOMSAS_ ## name, value)
1249
1250
1251
1252 #define SCU_PSZGCR_OFFSET 0x00E4
1253 #define SCU_SAS_RECPHYCAP_OFFSET 0x00E8
1254
1255
1256 #define SCU_SAS_PTxC_OFFSET 0x00D4
1257
1258
1259
1260
1261
1262
1263 struct scu_link_layer_registers {
1264
1265 u32 speed_negotiation_timers;
1266
1267 u32 link_layer_status;
1268
1269 u32 port_selector_timeout;
1270 u32 reserved0C;
1271
1272 u32 timeout_unit_value;
1273
1274 u32 rcd_timeout;
1275
1276 u32 link_timer_timeouts;
1277
1278 u32 sas_phy_timeouts;
1279
1280 u32 received_address_frame_error_counter;
1281
1282 u32 invalid_dword_counter;
1283
1284 u32 transmit_identification;
1285
1286 u32 sas_device_name_high;
1287
1288 u32 sas_device_name_low;
1289
1290 u32 source_sas_address_high;
1291
1292 u32 source_sas_address_low;
1293
1294 u32 identify_frame_phy_id;
1295
1296 u32 identify_frame_reserved;
1297
1298 u32 received_address_frame;
1299
1300 u32 maximum_arbitration_wait_timer_timeout;
1301
1302 u32 transmit_primitive;
1303
1304 u32 error_counter_event_notification_control;
1305
1306 u32 frxq_payload_fill_threshold;
1307
1308 u32 link_layer_hang_detection_timeout;
1309 u32 reserved_5C;
1310
1311 u32 received_frame_count;
1312
1313 u32 transmit_frame_count;
1314
1315 u32 received_dword_count;
1316
1317 u32 transmit_dword_count;
1318
1319 u32 loss_of_sync_error_count;
1320
1321 u32 running_disparity_error_count;
1322
1323 u32 received_frame_crc_error_count;
1324
1325 u32 stp_control;
1326
1327 u32 phy_configuration;
1328
1329 u32 clock_skew_management;
1330
1331 u32 transmit_comwake_signal;
1332
1333 u32 transmit_cominit_signal;
1334
1335 u32 transmit_comsas_signal;
1336
1337 u32 cominit_control;
1338
1339 u32 comwake_control;
1340
1341 u32 comsas_control;
1342
1343 u32 received_short_frame_count;
1344
1345 u32 received_frame_without_credit_count;
1346
1347 u32 received_frame_after_done_count;
1348
1349 u32 phy_reset_problem_count;
1350
1351 u32 counter_control;
1352
1353 u32 ssp_timer_timeout_values;
1354
1355 u32 ftx_control;
1356
1357 u32 frx_control;
1358
1359 u32 ftx_watermark;
1360
1361 u32 notify_enable_spinup_control;
1362
1363 u32 sas_training_sequence_timer_values;
1364
1365 u32 phy_capabilities;
1366
1367 u32 phy_control;
1368 u32 reserved_d4;
1369
1370 u32 link_layer_control;
1371
1372 u32 afe_xcvr_control;
1373
1374 u32 afe_lookup_table_control;
1375
1376 u32 phy_source_zone_group_control;
1377
1378 u32 receive_phycap;
1379 u32 reserved_ec;
1380
1381 u32 speed_negotiation_afe_rx_reset_control;
1382
1383 u32 power_management_control;
1384
1385 u32 sas_pm_partial_request_primitive;
1386
1387 u32 sas_pm_slumber_request_primitive;
1388
1389 u32 sas_pm_ack_primitive_register;
1390
1391 u32 sas_pm_nak_primitive_register;
1392
1393 u32 sas_primitive_timeout;
1394 u32 reserved_10c;
1395
1396 u32 pla_product_control[4];
1397
1398 u32 pla_product_sum;
1399
1400 u32 pla_control;
1401
1402 u32 reserved_0128_037f[0x96];
1403
1404 };
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414 #define SCU_SGPIO_OFFSET 0x1400
1415
1416
1417 #define SCU_SGPIO_SGICR_OFFSET 0x0000
1418 #define SCU_SGPIO_SGPBR_OFFSET 0x0004
1419 #define SCU_SGPIO_SGSDLR_OFFSET 0x0008
1420 #define SCU_SGPIO_SGSDUR_OFFSET 0x000C
1421 #define SCU_SGPIO_SGSIDLR_OFFSET 0x0010
1422 #define SCU_SGPIO_SGSIDUR_OFFSET 0x0014
1423 #define SCU_SGPIO_SGVSCR_OFFSET 0x0018
1424
1425 #define SCU_SGPIO_SGODSR_OFFSET 0x0020
1426
1427
1428
1429
1430
1431
1432 struct scu_sgpio_registers {
1433
1434 u32 interface_control;
1435
1436 u32 blink_rate;
1437
1438 u32 start_drive_lower;
1439
1440 u32 start_drive_upper;
1441
1442 u32 serial_input_lower;
1443
1444 u32 serial_input_upper;
1445
1446 u32 vendor_specific_code;
1447
1448 u32 reserved_001c;
1449
1450 u32 output_data_select[8];
1451
1452 u32 reserved_1444_14ff[0x30];
1453
1454 };
1455
1456
1457
1458
1459
1460
1461 #define SCU_VIIT_BASE 0x1c00
1462
1463 struct scu_viit_registers {
1464 u32 registers[256];
1465 };
1466
1467
1468
1469
1470
1471
1472 #define SCU_PTSG_BASE 0x1000
1473
1474 #define SCU_PTSG_PTSGCR_OFFSET 0x0000
1475 #define SCU_PTSG_RTCR_OFFSET 0x0004
1476 #define SCU_PTSG_RTCCR_OFFSET 0x0008
1477 #define SCU_PTSG_PTS0CR_OFFSET 0x0010
1478 #define SCU_PTSG_PTS0SR_OFFSET 0x0014
1479 #define SCU_PTSG_PTS1CR_OFFSET 0x0018
1480 #define SCU_PTSG_PTS1SR_OFFSET 0x001C
1481 #define SCU_PTSG_PTS2CR_OFFSET 0x0020
1482 #define SCU_PTSG_PTS2SR_OFFSET 0x0024
1483 #define SCU_PTSG_PTS3CR_OFFSET 0x0028
1484 #define SCU_PTSG_PTS3SR_OFFSET 0x002C
1485 #define SCU_PTSG_PCSPE0CR_OFFSET 0x0030
1486 #define SCU_PTSG_PCSPE1CR_OFFSET 0x0034
1487 #define SCU_PTSG_PCSPE2CR_OFFSET 0x0038
1488 #define SCU_PTSG_PCSPE3CR_OFFSET 0x003C
1489 #define SCU_PTSG_ETMTSCCR_OFFSET 0x0040
1490 #define SCU_PTSG_ETMRNSCCR_OFFSET 0x0044
1491
1492
1493
1494
1495
1496
1497
1498 struct scu_port_task_scheduler_registers {
1499 u32 control;
1500 u32 status;
1501 };
1502
1503
1504
1505
1506
1507
1508
1509 struct scu_port_task_scheduler_group_registers {
1510
1511 u32 control;
1512
1513 u32 real_time_clock;
1514
1515 u32 real_time_clock_control;
1516
1517 u32 reserved_0C;
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527 struct scu_port_task_scheduler_registers port[4];
1528
1529
1530
1531
1532
1533 u32 protocol_engine[4];
1534
1535 u32 tc_scanning_interval_control;
1536
1537 u32 rnc_scanning_interval_control;
1538
1539 u32 reserved_1048_107f[0x0E];
1540
1541 };
1542
1543 #define SCU_PTSG_SCUVZECR_OFFSET 0x003C
1544
1545
1546
1547
1548
1549 #define SCU_AFE_MMR_BASE 0xE000
1550
1551
1552
1553
1554
1555
1556 struct scu_afe_transceiver {
1557
1558 u32 afe_xcvr_control0;
1559
1560 u32 afe_xcvr_control1;
1561
1562 u32 reserved_0008;
1563
1564 u32 afe_dfx_rx_control0;
1565
1566 u32 afe_dfx_rx_control1;
1567
1568 u32 reserved_0014;
1569
1570 u32 afe_dfx_rx_status0;
1571
1572 u32 afe_dfx_rx_status1;
1573
1574 u32 reserved_0020;
1575
1576 u32 afe_tx_control;
1577
1578 u32 afe_tx_amp_control0;
1579
1580 u32 afe_tx_amp_control1;
1581
1582 u32 afe_tx_amp_control2;
1583
1584 u32 afe_tx_amp_control3;
1585
1586 u32 afe_tx_ssc_control;
1587
1588 u32 reserved_003c;
1589
1590 u32 afe_rx_ssc_control0;
1591
1592 u32 afe_rx_ssc_control1;
1593
1594 u32 afe_rx_ssc_control2;
1595
1596 u32 afe_rx_eq_status0;
1597
1598 u32 afe_rx_eq_status1;
1599
1600 u32 afe_rx_cdr_status;
1601
1602 u32 reserved_0058;
1603
1604 u32 afe_channel_control;
1605
1606 u32 reserved_0060_006c[0x04];
1607
1608 u32 afe_xcvr_error_capture_status0;
1609
1610 u32 afe_xcvr_error_capture_status1;
1611
1612 u32 afe_xcvr_error_capture_status2;
1613
1614 u32 afe_xcvr_error_capture_status3;
1615
1616 u32 afe_xcvr_error_capture_status4;
1617
1618 u32 afe_xcvr_error_capture_status5;
1619
1620 u32 reserved_008c_00fc[0x1e];
1621 };
1622
1623
1624
1625
1626
1627
1628
1629 struct scu_afe_registers {
1630
1631 u32 afe_bias_control;
1632 u32 reserved_0004;
1633
1634 u32 afe_pll_control0;
1635
1636 u32 afe_pll_control1;
1637
1638 u32 afe_pll_control2;
1639
1640 u32 afe_common_block_status;
1641
1642 u32 reserved_18_7c[0x1a];
1643
1644 u32 afe_pmsn_master_control0;
1645
1646 u32 afe_pmsn_master_control1;
1647
1648 u32 afe_pmsn_master_control2;
1649
1650 u32 reserved_008c_00fc[0x1D];
1651
1652 u32 afe_dfx_master_control0;
1653
1654 u32 afe_dfx_master_control1;
1655
1656 u32 afe_dfx_dcl_control;
1657
1658 u32 afe_dfx_digital_monitor_control;
1659
1660 u32 afe_dfx_analog_p_monitor_control;
1661
1662 u32 afe_dfx_analog_n_monitor_control;
1663
1664 u32 afe_dfx_ntl_status;
1665
1666 u32 afe_dfx_fifo_status0;
1667
1668 u32 afe_dfx_fifo_status1;
1669
1670 u32 afe_dfx_master_pattern_control;
1671
1672 u32 afe_dfx_p0_control;
1673
1674 u32 afe_dfx_p0_data[32];
1675
1676 u32 reserved_01ac;
1677
1678 u32 afe_dfx_p0_instruction[24];
1679
1680 u32 reserved_0210;
1681
1682 u32 afe_dfx_p1_control;
1683
1684 u32 afe_dfx_p1_data[16];
1685
1686 u32 reserved_0258_029c[0x12];
1687
1688 u32 afe_dfx_p1_instruction[8];
1689
1690 u32 reserved_02c0_02fc[0x10];
1691
1692 u32 afe_dfx_tx_pmsn_control;
1693
1694 u32 afe_dfx_rx_pmsn_control;
1695 u32 reserved_0308;
1696
1697 u32 afe_dfx_noa_control0;
1698
1699 u32 afe_dfx_noa_control1;
1700
1701 u32 afe_dfx_noa_control2;
1702
1703 u32 afe_dfx_noa_control3;
1704
1705 u32 afe_dfx_noa_control4;
1706
1707 u32 afe_dfx_noa_control5;
1708
1709 u32 afe_dfx_noa_control6;
1710
1711 u32 afe_dfx_noa_control7;
1712
1713 u32 reserved_032c_07fc[0x135];
1714
1715
1716 struct scu_afe_transceiver scu_afe_xcvr[4];
1717
1718
1719 u32 reserved_0c00_0ffc[0x0100];
1720 };
1721
1722 struct scu_protocol_engine_group_registers {
1723 u32 table[0xE0];
1724 };
1725
1726
1727 struct scu_viit_iit {
1728 u32 table[256];
1729 };
1730
1731
1732
1733
1734
1735
1736
1737 struct scu_zone_partition_table {
1738 u32 table[2048];
1739 };
1740
1741
1742
1743
1744
1745
1746
1747 struct scu_completion_ram {
1748 u32 ram[128];
1749 };
1750
1751
1752
1753
1754
1755
1756
1757 struct scu_frame_buffer_ram {
1758 u32 ram[128];
1759 };
1760
1761 #define scu_scratch_ram_SIZE_IN_DWORDS 256
1762
1763
1764
1765
1766
1767
1768 struct scu_scratch_ram {
1769 u32 ram[scu_scratch_ram_SIZE_IN_DWORDS];
1770 };
1771
1772
1773
1774
1775
1776
1777 struct noa_protocol_engine_partition {
1778 u32 reserved[64];
1779 };
1780
1781
1782
1783
1784
1785
1786 struct noa_hub_partition {
1787 u32 reserved[64];
1788 };
1789
1790
1791
1792
1793
1794
1795 struct noa_host_interface_partition {
1796 u32 reserved[64];
1797 };
1798
1799
1800
1801
1802
1803
1804
1805
1806 struct transport_link_layer_pair {
1807 struct scu_transport_layer_registers tl;
1808 struct scu_link_layer_registers ll;
1809 };
1810
1811
1812
1813
1814
1815
1816
1817
1818 struct scu_peg_registers {
1819 struct transport_link_layer_pair pe[4];
1820 struct scu_port_task_scheduler_group_registers ptsg;
1821 struct scu_protocol_engine_group_registers peg;
1822 struct scu_sgpio_registers sgpio;
1823 u32 reserved_01500_1BFF[0x1C0];
1824 struct scu_viit_entry viit[64];
1825 struct scu_zone_partition_table zpt0;
1826 struct scu_zone_partition_table zpt1;
1827 };
1828
1829
1830
1831
1832
1833
1834
1835
1836 struct scu_registers {
1837
1838 struct scu_peg_registers peg0;
1839
1840
1841 struct scu_sdma_registers sdma;
1842 struct scu_completion_ram cram;
1843 struct scu_frame_buffer_ram fbram;
1844 u32 reserved_6800_69FF[0x80];
1845 struct noa_protocol_engine_partition noa_pe;
1846 struct noa_hub_partition noa_hub;
1847 struct noa_host_interface_partition noa_if;
1848 u32 reserved_6d00_7fff[0x4c0];
1849
1850
1851 struct scu_peg_registers peg1;
1852
1853
1854 struct scu_afe_registers afe;
1855
1856
1857 u32 reserved_f000_211fff[0x80c00];
1858
1859
1860 struct scu_scratch_ram scratch_ram;
1861 };
1862
1863 #endif