0001
0002
0003
0004
0005
0006
0007 #ifndef __iwl_prph_h__
0008 #define __iwl_prph_h__
0009 #include <linux/bitfield.h>
0010
0011
0012
0013
0014
0015 #define PRPH_BASE (0x00000)
0016 #define PRPH_END (0xFFFFF)
0017
0018
0019 #define APMG_BASE (PRPH_BASE + 0x3000)
0020 #define APMG_CLK_CTRL_REG (APMG_BASE + 0x0000)
0021 #define APMG_CLK_EN_REG (APMG_BASE + 0x0004)
0022 #define APMG_CLK_DIS_REG (APMG_BASE + 0x0008)
0023 #define APMG_PS_CTRL_REG (APMG_BASE + 0x000c)
0024 #define APMG_PCIDEV_STT_REG (APMG_BASE + 0x0010)
0025 #define APMG_RFKILL_REG (APMG_BASE + 0x0014)
0026 #define APMG_RTC_INT_STT_REG (APMG_BASE + 0x001c)
0027 #define APMG_RTC_INT_MSK_REG (APMG_BASE + 0x0020)
0028 #define APMG_DIGITAL_SVR_REG (APMG_BASE + 0x0058)
0029 #define APMG_ANALOG_SVR_REG (APMG_BASE + 0x006C)
0030
0031 #define APMS_CLK_VAL_MRB_FUNC_MODE (0x00000001)
0032 #define APMG_CLK_VAL_DMA_CLK_RQT (0x00000200)
0033 #define APMG_CLK_VAL_BSM_CLK_RQT (0x00000800)
0034
0035 #define APMG_PS_CTRL_EARLY_PWR_OFF_RESET_DIS (0x00400000)
0036 #define APMG_PS_CTRL_VAL_RESET_REQ (0x04000000)
0037 #define APMG_PS_CTRL_MSK_PWR_SRC (0x03000000)
0038 #define APMG_PS_CTRL_VAL_PWR_SRC_VMAIN (0x00000000)
0039 #define APMG_PS_CTRL_VAL_PWR_SRC_VAUX (0x02000000)
0040 #define APMG_SVR_VOLTAGE_CONFIG_BIT_MSK (0x000001E0)
0041 #define APMG_SVR_DIGITAL_VOLTAGE_1_32 (0x00000060)
0042
0043 #define APMG_PCIDEV_STT_VAL_PERSIST_DIS (0x00000200)
0044 #define APMG_PCIDEV_STT_VAL_L1_ACT_DIS (0x00000800)
0045 #define APMG_PCIDEV_STT_VAL_WAKE_ME (0x00004000)
0046
0047 #define APMG_RTC_INT_STT_RFKILL (0x10000000)
0048
0049
0050 #define DEVICE_SYSTEM_TIME_REG 0xA0206C
0051
0052
0053 #define DEVICE_SET_NMI_REG 0x00a01c30
0054 #define DEVICE_SET_NMI_VAL_DRV BIT(7)
0055
0056 #define UREG_NIC_SET_NMI_DRIVER 0x00a05c10
0057 #define UREG_NIC_SET_NMI_DRIVER_NMI_FROM_DRIVER BIT(24)
0058 #define UREG_NIC_SET_NMI_DRIVER_RESET_HANDSHAKE (BIT(24) | BIT(25))
0059
0060
0061 #define SHR_BASE 0x00a10000
0062
0063
0064 #define SHR_APMG_GP1_REG 0x01dc
0065 #define SHR_APMG_GP1_REG_PRPH (SHR_BASE + SHR_APMG_GP1_REG)
0066 #define SHR_APMG_GP1_WF_XTAL_LP_EN 0x00000004
0067 #define SHR_APMG_GP1_CHICKEN_BIT_SELECT 0x80000000
0068
0069
0070 #define SHR_APMG_DL_CFG_REG 0x01c4
0071 #define SHR_APMG_DL_CFG_REG_PRPH (SHR_BASE + SHR_APMG_DL_CFG_REG)
0072 #define SHR_APMG_DL_CFG_RTCS_CLK_SELECTOR_MSK 0x000000c0
0073 #define SHR_APMG_DL_CFG_RTCS_CLK_INTERNAL_XTAL 0x00000080
0074 #define SHR_APMG_DL_CFG_DL_CLOCK_POWER_UP 0x00000100
0075
0076
0077 #define SHR_APMG_XTAL_CFG_REG 0x1c0
0078 #define SHR_APMG_XTAL_CFG_XTAL_ON_REQ 0x80000000
0079
0080
0081
0082
0083
0084 #define RELEASE_CPU_RESET (0x300C)
0085 #define RELEASE_CPU_RESET_BIT BIT(24)
0086
0087
0088
0089
0090
0091 #define SHR_MISC_WFM_DTS_EN (0x00a10024)
0092 #define DTSC_CFG_MODE (0x00a10604)
0093 #define DTSC_VREF_AVG (0x00a10648)
0094 #define DTSC_VREF5_AVG (0x00a1064c)
0095 #define DTSC_CFG_MODE_PERIODIC (0x2)
0096 #define DTSC_PTAT_AVG (0x00a10650)
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170 #define SCD_MEM_LOWER_BOUND (0x0000)
0171
0172
0173
0174
0175
0176
0177 #define SCD_WIN_SIZE 64
0178 #define SCD_FRAME_LIMIT 64
0179
0180 #define SCD_TXFIFO_POS_TID (0)
0181 #define SCD_TXFIFO_POS_RA (4)
0182 #define SCD_QUEUE_RA_TID_MAP_RATID_MSK (0x01FF)
0183
0184
0185 #define SCD_QUEUE_STTS_REG_POS_TXF (0)
0186 #define SCD_QUEUE_STTS_REG_POS_ACTIVE (3)
0187 #define SCD_QUEUE_STTS_REG_POS_WSL (4)
0188 #define SCD_QUEUE_STTS_REG_POS_SCD_ACT_EN (19)
0189 #define SCD_QUEUE_STTS_REG_MSK (0x017F0000)
0190
0191 #define SCD_QUEUE_CTX_REG1_CREDIT (0x00FFFF00)
0192 #define SCD_QUEUE_CTX_REG1_SUPER_CREDIT (0xFF000000)
0193 #define SCD_QUEUE_CTX_REG1_VAL(_n, _v) FIELD_PREP(SCD_QUEUE_CTX_REG1_ ## _n, _v)
0194
0195 #define SCD_QUEUE_CTX_REG2_WIN_SIZE (0x0000007F)
0196 #define SCD_QUEUE_CTX_REG2_FRAME_LIMIT (0x007F0000)
0197 #define SCD_QUEUE_CTX_REG2_VAL(_n, _v) FIELD_PREP(SCD_QUEUE_CTX_REG2_ ## _n, _v)
0198
0199 #define SCD_GP_CTRL_ENABLE_31_QUEUES BIT(0)
0200 #define SCD_GP_CTRL_AUTO_ACTIVE_MODE BIT(18)
0201
0202
0203 #define SCD_CONTEXT_MEM_LOWER_BOUND (SCD_MEM_LOWER_BOUND + 0x600)
0204 #define SCD_CONTEXT_MEM_UPPER_BOUND (SCD_MEM_LOWER_BOUND + 0x6A0)
0205
0206
0207 #define SCD_TX_STTS_MEM_LOWER_BOUND (SCD_MEM_LOWER_BOUND + 0x6A0)
0208 #define SCD_TX_STTS_MEM_UPPER_BOUND (SCD_MEM_LOWER_BOUND + 0x7E0)
0209
0210
0211 #define SCD_TRANS_TBL_MEM_LOWER_BOUND (SCD_MEM_LOWER_BOUND + 0x7E0)
0212 #define SCD_TRANS_TBL_MEM_UPPER_BOUND (SCD_MEM_LOWER_BOUND + 0x808)
0213
0214 #define SCD_CONTEXT_QUEUE_OFFSET(x)\
0215 (SCD_CONTEXT_MEM_LOWER_BOUND + ((x) * 8))
0216
0217 #define SCD_TX_STTS_QUEUE_OFFSET(x)\
0218 (SCD_TX_STTS_MEM_LOWER_BOUND + ((x) * 16))
0219
0220 #define SCD_TRANS_TBL_OFFSET_QUEUE(x) \
0221 ((SCD_TRANS_TBL_MEM_LOWER_BOUND + ((x) * 2)) & 0xfffc)
0222
0223 #define SCD_BASE (PRPH_BASE + 0xa02c00)
0224
0225 #define SCD_SRAM_BASE_ADDR (SCD_BASE + 0x0)
0226 #define SCD_DRAM_BASE_ADDR (SCD_BASE + 0x8)
0227 #define SCD_AIT (SCD_BASE + 0x0c)
0228 #define SCD_TXFACT (SCD_BASE + 0x10)
0229 #define SCD_ACTIVE (SCD_BASE + 0x14)
0230 #define SCD_QUEUECHAIN_SEL (SCD_BASE + 0xe8)
0231 #define SCD_CHAINEXT_EN (SCD_BASE + 0x244)
0232 #define SCD_AGGR_SEL (SCD_BASE + 0x248)
0233 #define SCD_INTERRUPT_MASK (SCD_BASE + 0x108)
0234 #define SCD_GP_CTRL (SCD_BASE + 0x1a8)
0235 #define SCD_EN_CTRL (SCD_BASE + 0x254)
0236
0237
0238
0239
0240 #define OSC_CLK (0xa04068)
0241 #define OSC_CLK_FORCE_CONTROL (0x8)
0242
0243 #define FH_UCODE_LOAD_STATUS (0x1AF0)
0244
0245
0246
0247
0248
0249
0250 #define UREG_UCODE_LOAD_STATUS (0xa05c40)
0251 #define UREG_CPU_INIT_RUN (0xa05c44)
0252
0253 #define LMPM_SECURE_UCODE_LOAD_CPU1_HDR_ADDR (0x1E78)
0254 #define LMPM_SECURE_UCODE_LOAD_CPU2_HDR_ADDR (0x1E7C)
0255
0256 #define LMPM_SECURE_CPU1_HDR_MEM_SPACE (0x420000)
0257 #define LMPM_SECURE_CPU2_HDR_MEM_SPACE (0x420400)
0258
0259 #define LMAC2_PRPH_OFFSET (0x100000)
0260
0261
0262 #define RXF_SIZE_ADDR (0xa00c88)
0263 #define RXF_RD_D_SPACE (0xa00c40)
0264 #define RXF_RD_WR_PTR (0xa00c50)
0265 #define RXF_RD_RD_PTR (0xa00c54)
0266 #define RXF_RD_FENCE_PTR (0xa00c4c)
0267 #define RXF_SET_FENCE_MODE (0xa00c14)
0268 #define RXF_LD_WR2FENCE (0xa00c1c)
0269 #define RXF_FIFO_RD_FENCE_INC (0xa00c68)
0270 #define RXF_SIZE_BYTE_CND_POS (7)
0271 #define RXF_SIZE_BYTE_CNT_MSK (0x3ff << RXF_SIZE_BYTE_CND_POS)
0272 #define RXF_DIFF_FROM_PREV (0x200)
0273 #define RXF2C_DIFF_FROM_PREV (0x4e00)
0274
0275 #define RXF_LD_FENCE_OFFSET_ADDR (0xa00c10)
0276 #define RXF_FIFO_RD_FENCE_ADDR (0xa00c0c)
0277
0278
0279 #define TXF_FIFO_ITEM_CNT (0xa00438)
0280 #define TXF_WR_PTR (0xa00414)
0281 #define TXF_RD_PTR (0xa00410)
0282 #define TXF_FENCE_PTR (0xa00418)
0283 #define TXF_LOCK_FENCE (0xa00424)
0284 #define TXF_LARC_NUM (0xa0043c)
0285 #define TXF_READ_MODIFY_DATA (0xa00448)
0286 #define TXF_READ_MODIFY_ADDR (0xa0044c)
0287
0288
0289 #define TXF_CPU2_FIFO_ITEM_CNT (0xA00538)
0290 #define TXF_CPU2_WR_PTR (0xA00514)
0291 #define TXF_CPU2_RD_PTR (0xA00510)
0292 #define TXF_CPU2_FENCE_PTR (0xA00518)
0293 #define TXF_CPU2_LOCK_FENCE (0xA00524)
0294 #define TXF_CPU2_NUM (0xA0053C)
0295 #define TXF_CPU2_READ_MODIFY_DATA (0xA00548)
0296 #define TXF_CPU2_READ_MODIFY_ADDR (0xA0054C)
0297
0298
0299 #define RSP_RADIO_CMD (0xa02804)
0300 #define RSP_RADIO_RDDAT (0xa02814)
0301 #define RADIO_RSP_ADDR_POS (6)
0302 #define RADIO_RSP_RD_CMD (3)
0303
0304
0305 #define HPM_MAC_LTR_CSR 0xa0348c
0306 #define HPM_MAC_LRT_ENABLE_ALL 0xf
0307
0308 #define HPM_UMAC_LTR 0xa03480
0309
0310
0311 #define MON_BUFF_SAMPLE_CTL (0xa03c00)
0312 #define MON_BUFF_BASE_ADDR (0xa03c1c)
0313 #define MON_BUFF_END_ADDR (0xa03c40)
0314 #define MON_BUFF_WRPTR (0xa03c44)
0315 #define MON_BUFF_CYCLE_CNT (0xa03c48)
0316
0317 #define MON_BUFF_BASE_ADDR_VER2 (0xa03c1c)
0318 #define MON_BUFF_END_ADDR_VER2 (0xa03c20)
0319 #define MON_BUFF_WRPTR_VER2 (0xa03c24)
0320 #define MON_BUFF_CYCLE_CNT_VER2 (0xa03c28)
0321 #define MON_BUFF_SHIFT_VER2 (0x8)
0322
0323 #define DBGC_CUR_DBGBUF_BASE_ADDR_LSB (0xd03c20)
0324 #define DBGC_CUR_DBGBUF_BASE_ADDR_MSB (0xd03c24)
0325 #define DBGC_CUR_DBGBUF_STATUS (0xd03c1c)
0326 #define DBGC_DBGBUF_WRAP_AROUND (0xd03c2c)
0327 #define DBGC_CUR_DBGBUF_STATUS_OFFSET_MSK (0x00ffffff)
0328 #define DBGC_CUR_DBGBUF_STATUS_IDX_MSK (0x0f000000)
0329
0330 #define MON_DMARB_RD_CTL_ADDR (0xa03c60)
0331 #define MON_DMARB_RD_DATA_ADDR (0xa03c5c)
0332
0333 #define DBGC_IN_SAMPLE (0xa03c00)
0334 #define DBGC_OUT_CTRL (0xa03c0c)
0335
0336
0337 #define LDBG_M2S_BUF_WPTR (0xa0476c)
0338 #define LDBG_M2S_BUF_WRAP_CNT (0xa04774)
0339 #define LDBG_M2S_BUF_WPTR_VAL_MSK (0x000fffff)
0340 #define LDBG_M2S_BUF_WRAP_CNT_VAL_MSK (0x000fffff)
0341
0342
0343 #define WFPM_PS_CTL_CLR 0xA0300C
0344 #define WFMP_MAC_ADDR_0 0xA03080
0345 #define WFMP_MAC_ADDR_1 0xA03084
0346 #define LMPM_PMG_EN 0xA01CEC
0347 #define RADIO_REG_SYS_MANUAL_DFT_0 0xAD4078
0348 #define RFIC_REG_RD 0xAD0470
0349 #define WFPM_CTRL_REG 0xA03030
0350 #define WFPM_OTP_CFG1_ADDR 0x00a03098
0351 #define WFPM_OTP_CFG1_IS_JACKET_BIT BIT(4)
0352 #define WFPM_OTP_CFG1_IS_CDB_BIT BIT(5)
0353
0354 #define WFPM_GP2 0xA030B4
0355
0356
0357 #define DBGI_SRAM_TARGET_ACCESS_RDATA_LSB 0x00A2E154
0358 #define DBGI_SRAM_TARGET_ACCESS_RDATA_MSB 0x00A2E158
0359 #define DBGI_SRAM_FIFO_POINTERS 0x00A2E148
0360 #define DBGI_SRAM_FIFO_POINTERS_WR_PTR_MSK 0x00000FFF
0361
0362 enum {
0363 ENABLE_WFPM = BIT(31),
0364 WFPM_AUX_CTL_AUX_IF_MAC_OWNER_MSK = 0x80000000,
0365 };
0366
0367 #define CNVI_AUX_MISC_CHIP 0xA200B0
0368 #define CNVR_AUX_MISC_CHIP 0xA2B800
0369 #define CNVR_SCU_SD_REGS_SD_REG_DIG_DCDC_VTRIM 0xA29890
0370 #define CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR 0xA29938
0371
0372 #define PREG_AUX_BUS_WPROT_0 0xA04CC0
0373
0374
0375 #define PREG_PRPH_WPROT_9000 0xA04CE0
0376
0377 #define PREG_PRPH_WPROT_22000 0xA04D00
0378
0379 #define SB_MODIFY_CFG_FLAG 0xA03088
0380 #define SB_CPU_1_STATUS 0xA01E30
0381 #define SB_CPU_2_STATUS 0xA01E34
0382 #define UMAG_SB_CPU_1_STATUS 0xA038C0
0383 #define UMAG_SB_CPU_2_STATUS 0xA038C4
0384 #define UMAG_GEN_HW_STATUS 0xA038C8
0385 #define UREG_UMAC_CURRENT_PC 0xa05c18
0386 #define UREG_LMAC1_CURRENT_PC 0xa05c1c
0387 #define UREG_LMAC2_CURRENT_PC 0xa05c20
0388
0389 #define WFPM_LMAC1_PD_NOTIFICATION 0xa0338c
0390 #define WFPM_ARC1_PD_NOTIFICATION 0xa03044
0391 #define HPM_SECONDARY_DEVICE_STATE 0xa03404
0392 #define WFPM_MAC_OTP_CFG7_ADDR 0xa03338
0393 #define WFPM_MAC_OTP_CFG7_DATA 0xa0333c
0394
0395
0396
0397 enum {
0398 UMAG_GEN_HW_IS_FPGA = BIT(1),
0399 };
0400
0401
0402 #define LMPM_CHICK 0xA01FF8
0403 enum {
0404 LMPM_CHICK_EXTENDED_ADDR_SPACE = BIT(0),
0405 };
0406
0407
0408 #define LMPM_PAGE_PASS_NOTIF 0xA03824
0409 enum {
0410 LMPM_PAGE_PASS_NOTIF_POS = BIT(20),
0411 };
0412
0413
0414
0415
0416
0417
0418
0419
0420
0421
0422
0423 #define REG_CRF_ID_TYPE(val) (((val) & 0x00000FFF) >> 0)
0424 #define REG_CRF_ID_SLAVE(val) (((val) & 0x00080000) >> 19)
0425 #define REG_CRF_ID_DASH(val) (((val) & 0x00F00000) >> 20)
0426 #define REG_CRF_ID_STEP(val) (((val) & 0x07000000) >> 24)
0427 #define REG_CRF_ID_FLAVOR(val) (((val) & 0xF8000000) >> 27)
0428
0429 #define UREG_CHICK (0xA05C00)
0430 #define UREG_CHICK_MSI_ENABLE BIT(24)
0431 #define UREG_CHICK_MSIX_ENABLE BIT(25)
0432
0433 #define SD_REG_VER 0xa29600
0434 #define SD_REG_VER_GEN2 0x00a2b800
0435
0436 #define REG_CRF_ID_TYPE_JF_1 0x201
0437 #define REG_CRF_ID_TYPE_JF_2 0x202
0438 #define REG_CRF_ID_TYPE_HR_CDB 0x503
0439 #define REG_CRF_ID_TYPE_HR_NONE_CDB 0x504
0440 #define REG_CRF_ID_TYPE_HR_NONE_CDB_1X1 0x501
0441 #define REG_CRF_ID_TYPE_HR_NONE_CDB_CCP 0x532
0442 #define REG_CRF_ID_TYPE_GF 0x410
0443 #define REG_CRF_ID_TYPE_GF_TC 0xF08
0444 #define REG_CRF_ID_TYPE_MR 0x810
0445 #define REG_CRF_ID_TYPE_FM 0x910
0446
0447 #define HPM_DEBUG 0xA03440
0448 #define PERSISTENCE_BIT BIT(12)
0449 #define PREG_WFPM_ACCESS BIT(12)
0450
0451 #define HPM_HIPM_GEN_CFG 0xA03458
0452 #define HPM_HIPM_GEN_CFG_CR_PG_EN BIT(0)
0453 #define HPM_HIPM_GEN_CFG_CR_SLP_EN BIT(1)
0454 #define HPM_HIPM_GEN_CFG_CR_FORCE_ACTIVE BIT(10)
0455
0456 #define UREG_DOORBELL_TO_ISR6 0xA05C04
0457 #define UREG_DOORBELL_TO_ISR6_NMI_BIT BIT(0)
0458 #define UREG_DOORBELL_TO_ISR6_RESET_HANDSHAKE (BIT(0) | BIT(1))
0459 #define UREG_DOORBELL_TO_ISR6_SUSPEND BIT(18)
0460 #define UREG_DOORBELL_TO_ISR6_RESUME BIT(19)
0461 #define UREG_DOORBELL_TO_ISR6_PNVM BIT(20)
0462
0463
0464
0465
0466
0467
0468 #define UREG_DOORBELL_TO_ISR6_SLEEP_CTRL BIT(31)
0469
0470 #define CNVI_MBOX_C 0xA3400C
0471
0472 #define FSEQ_ERROR_CODE 0xA340C8
0473 #define FSEQ_TOP_INIT_VERSION 0xA34038
0474 #define FSEQ_CNVIO_INIT_VERSION 0xA3403C
0475 #define FSEQ_OTP_VERSION 0xA340FC
0476 #define FSEQ_TOP_CONTENT_VERSION 0xA340F4
0477 #define FSEQ_ALIVE_TOKEN 0xA340F0
0478 #define FSEQ_CNVI_ID 0xA3408C
0479 #define FSEQ_CNVR_ID 0xA34090
0480
0481 #define IWL_D3_SLEEP_STATUS_SUSPEND 0xD3
0482 #define IWL_D3_SLEEP_STATUS_RESUME 0xD0
0483
0484 #define WMAL_INDRCT_RD_CMD1_OPMOD_POS 28
0485 #define WMAL_INDRCT_RD_CMD1_BYTE_ADDRESS_MSK 0xFFFFF
0486 #define WMAL_CMD_READ_BURST_ACCESS 2
0487 #define WMAL_MRSPF_1 0xADFC20
0488 #define WMAL_INDRCT_RD_CMD1 0xADFD44
0489 #define WMAL_INDRCT_CMD1 0xADFC14
0490 #define WMAL_INDRCT_CMD(addr) \
0491 ((WMAL_CMD_READ_BURST_ACCESS << WMAL_INDRCT_RD_CMD1_OPMOD_POS) | \
0492 ((addr) & WMAL_INDRCT_RD_CMD1_BYTE_ADDRESS_MSK))
0493
0494 #define WFPM_LMAC1_PS_CTL_RW 0xA03380
0495 #define WFPM_LMAC2_PS_CTL_RW 0xA033C0
0496 #define WFPM_PS_CTL_RW_PHYRF_PD_FSM_CURSTATE_MSK 0x0000000F
0497 #define WFPM_PHYRF_STATE_ON 5
0498 #define HBUS_TIMEOUT 0xA5A5A5A1
0499 #define WFPM_DPHY_OFF 0xDF10FF
0500
0501 #define REG_OTP_MINOR 0xA0333C
0502
0503 #endif