0001
0002
0003
0004 #ifndef __MTK_WED_REGS_H
0005 #define __MTK_WED_REGS_H
0006
0007 #define MTK_WDMA_DESC_CTRL_LEN1 GENMASK(14, 0)
0008 #define MTK_WDMA_DESC_CTRL_LAST_SEG1 BIT(15)
0009 #define MTK_WDMA_DESC_CTRL_BURST BIT(16)
0010 #define MTK_WDMA_DESC_CTRL_LEN0 GENMASK(29, 16)
0011 #define MTK_WDMA_DESC_CTRL_LAST_SEG0 BIT(30)
0012 #define MTK_WDMA_DESC_CTRL_DMA_DONE BIT(31)
0013
0014 struct mtk_wdma_desc {
0015 __le32 buf0;
0016 __le32 ctrl;
0017 __le32 buf1;
0018 __le32 info;
0019 } __packed __aligned(4);
0020
0021 #define MTK_WED_RESET 0x008
0022 #define MTK_WED_RESET_TX_BM BIT(0)
0023 #define MTK_WED_RESET_TX_FREE_AGENT BIT(4)
0024 #define MTK_WED_RESET_WPDMA_TX_DRV BIT(8)
0025 #define MTK_WED_RESET_WPDMA_RX_DRV BIT(9)
0026 #define MTK_WED_RESET_WPDMA_INT_AGENT BIT(11)
0027 #define MTK_WED_RESET_WED_TX_DMA BIT(12)
0028 #define MTK_WED_RESET_WDMA_RX_DRV BIT(17)
0029 #define MTK_WED_RESET_WDMA_INT_AGENT BIT(19)
0030 #define MTK_WED_RESET_WED BIT(31)
0031
0032 #define MTK_WED_CTRL 0x00c
0033 #define MTK_WED_CTRL_WPDMA_INT_AGENT_EN BIT(0)
0034 #define MTK_WED_CTRL_WPDMA_INT_AGENT_BUSY BIT(1)
0035 #define MTK_WED_CTRL_WDMA_INT_AGENT_EN BIT(2)
0036 #define MTK_WED_CTRL_WDMA_INT_AGENT_BUSY BIT(3)
0037 #define MTK_WED_CTRL_WED_TX_BM_EN BIT(8)
0038 #define MTK_WED_CTRL_WED_TX_BM_BUSY BIT(9)
0039 #define MTK_WED_CTRL_WED_TX_FREE_AGENT_EN BIT(10)
0040 #define MTK_WED_CTRL_WED_TX_FREE_AGENT_BUSY BIT(11)
0041 #define MTK_WED_CTRL_RESERVE_EN BIT(12)
0042 #define MTK_WED_CTRL_RESERVE_BUSY BIT(13)
0043 #define MTK_WED_CTRL_FINAL_DIDX_READ BIT(24)
0044 #define MTK_WED_CTRL_MIB_READ_CLEAR BIT(28)
0045
0046 #define MTK_WED_EXT_INT_STATUS 0x020
0047 #define MTK_WED_EXT_INT_STATUS_TF_LEN_ERR BIT(0)
0048 #define MTK_WED_EXT_INT_STATUS_TKID_WO_PYLD BIT(1)
0049 #define MTK_WED_EXT_INT_STATUS_TKID_TITO_INVALID BIT(4)
0050 #define MTK_WED_EXT_INT_STATUS_TX_FBUF_LO_TH BIT(8)
0051 #define MTK_WED_EXT_INT_STATUS_TX_FBUF_HI_TH BIT(9)
0052 #define MTK_WED_EXT_INT_STATUS_RX_FBUF_LO_TH BIT(12)
0053 #define MTK_WED_EXT_INT_STATUS_RX_FBUF_HI_TH BIT(13)
0054 #define MTK_WED_EXT_INT_STATUS_RX_DRV_R_RESP_ERR BIT(16)
0055 #define MTK_WED_EXT_INT_STATUS_RX_DRV_W_RESP_ERR BIT(17)
0056 #define MTK_WED_EXT_INT_STATUS_RX_DRV_COHERENT BIT(18)
0057 #define MTK_WED_EXT_INT_STATUS_RX_DRV_INIT_WDMA_EN BIT(19)
0058 #define MTK_WED_EXT_INT_STATUS_RX_DRV_BM_DMAD_COHERENT BIT(20)
0059 #define MTK_WED_EXT_INT_STATUS_TX_DRV_R_RESP_ERR BIT(21)
0060 #define MTK_WED_EXT_INT_STATUS_TX_DRV_W_RESP_ERR BIT(22)
0061 #define MTK_WED_EXT_INT_STATUS_RX_DRV_DMA_RECYCLE BIT(24)
0062 #define MTK_WED_EXT_INT_STATUS_ERROR_MASK (MTK_WED_EXT_INT_STATUS_TF_LEN_ERR | \
0063 MTK_WED_EXT_INT_STATUS_TKID_WO_PYLD | \
0064 MTK_WED_EXT_INT_STATUS_TKID_TITO_INVALID | \
0065 MTK_WED_EXT_INT_STATUS_RX_DRV_R_RESP_ERR | \
0066 MTK_WED_EXT_INT_STATUS_RX_DRV_W_RESP_ERR | \
0067 MTK_WED_EXT_INT_STATUS_RX_DRV_INIT_WDMA_EN | \
0068 MTK_WED_EXT_INT_STATUS_TX_DRV_R_RESP_ERR | \
0069 MTK_WED_EXT_INT_STATUS_TX_DRV_W_RESP_ERR)
0070
0071 #define MTK_WED_EXT_INT_MASK 0x028
0072
0073 #define MTK_WED_STATUS 0x060
0074 #define MTK_WED_STATUS_TX GENMASK(15, 8)
0075
0076 #define MTK_WED_TX_BM_CTRL 0x080
0077 #define MTK_WED_TX_BM_CTRL_VLD_GRP_NUM GENMASK(6, 0)
0078 #define MTK_WED_TX_BM_CTRL_RSV_GRP_NUM GENMASK(22, 16)
0079 #define MTK_WED_TX_BM_CTRL_PAUSE BIT(28)
0080
0081 #define MTK_WED_TX_BM_BASE 0x084
0082
0083 #define MTK_WED_TX_BM_TKID 0x088
0084 #define MTK_WED_TX_BM_TKID_START GENMASK(15, 0)
0085 #define MTK_WED_TX_BM_TKID_END GENMASK(31, 16)
0086
0087 #define MTK_WED_TX_BM_BUF_LEN 0x08c
0088
0089 #define MTK_WED_TX_BM_INTF 0x09c
0090 #define MTK_WED_TX_BM_INTF_TKID GENMASK(15, 0)
0091 #define MTK_WED_TX_BM_INTF_TKFIFO_FDEP GENMASK(23, 16)
0092 #define MTK_WED_TX_BM_INTF_TKID_VALID BIT(28)
0093 #define MTK_WED_TX_BM_INTF_TKID_READ BIT(29)
0094
0095 #define MTK_WED_TX_BM_DYN_THR 0x0a0
0096 #define MTK_WED_TX_BM_DYN_THR_LO GENMASK(6, 0)
0097 #define MTK_WED_TX_BM_DYN_THR_HI GENMASK(22, 16)
0098
0099 #define MTK_WED_INT_STATUS 0x200
0100 #define MTK_WED_INT_MASK 0x204
0101
0102 #define MTK_WED_GLO_CFG 0x208
0103 #define MTK_WED_GLO_CFG_TX_DMA_EN BIT(0)
0104 #define MTK_WED_GLO_CFG_TX_DMA_BUSY BIT(1)
0105 #define MTK_WED_GLO_CFG_RX_DMA_EN BIT(2)
0106 #define MTK_WED_GLO_CFG_RX_DMA_BUSY BIT(3)
0107 #define MTK_WED_GLO_CFG_RX_BT_SIZE GENMASK(5, 4)
0108 #define MTK_WED_GLO_CFG_TX_WB_DDONE BIT(6)
0109 #define MTK_WED_GLO_CFG_BIG_ENDIAN BIT(7)
0110 #define MTK_WED_GLO_CFG_DIS_BT_SIZE_ALIGN BIT(8)
0111 #define MTK_WED_GLO_CFG_TX_BT_SIZE_LO BIT(9)
0112 #define MTK_WED_GLO_CFG_MULTI_DMA_EN GENMASK(11, 10)
0113 #define MTK_WED_GLO_CFG_FIFO_LITTLE_ENDIAN BIT(12)
0114 #define MTK_WED_GLO_CFG_MI_DEPTH_RD GENMASK(21, 13)
0115 #define MTK_WED_GLO_CFG_TX_BT_SIZE_HI GENMASK(23, 22)
0116 #define MTK_WED_GLO_CFG_SW_RESET BIT(24)
0117 #define MTK_WED_GLO_CFG_FIRST_TOKEN_ONLY BIT(26)
0118 #define MTK_WED_GLO_CFG_OMIT_RX_INFO BIT(27)
0119 #define MTK_WED_GLO_CFG_OMIT_TX_INFO BIT(28)
0120 #define MTK_WED_GLO_CFG_BYTE_SWAP BIT(29)
0121 #define MTK_WED_GLO_CFG_RX_2B_OFFSET BIT(31)
0122
0123 #define MTK_WED_RESET_IDX 0x20c
0124 #define MTK_WED_RESET_IDX_TX GENMASK(3, 0)
0125 #define MTK_WED_RESET_IDX_RX GENMASK(17, 16)
0126
0127 #define MTK_WED_TX_MIB(_n) (0x2a0 + (_n) * 4)
0128
0129 #define MTK_WED_RING_TX(_n) (0x300 + (_n) * 0x10)
0130
0131 #define MTK_WED_RING_RX(_n) (0x400 + (_n) * 0x10)
0132
0133 #define MTK_WED_WPDMA_INT_TRIGGER 0x504
0134 #define MTK_WED_WPDMA_INT_TRIGGER_RX_DONE BIT(1)
0135 #define MTK_WED_WPDMA_INT_TRIGGER_TX_DONE GENMASK(5, 4)
0136
0137 #define MTK_WED_WPDMA_GLO_CFG 0x508
0138 #define MTK_WED_WPDMA_GLO_CFG_TX_DRV_EN BIT(0)
0139 #define MTK_WED_WPDMA_GLO_CFG_TX_DRV_BUSY BIT(1)
0140 #define MTK_WED_WPDMA_GLO_CFG_RX_DRV_EN BIT(2)
0141 #define MTK_WED_WPDMA_GLO_CFG_RX_DRV_BUSY BIT(3)
0142 #define MTK_WED_WPDMA_GLO_CFG_RX_BT_SIZE GENMASK(5, 4)
0143 #define MTK_WED_WPDMA_GLO_CFG_TX_WB_DDONE BIT(6)
0144 #define MTK_WED_WPDMA_GLO_CFG_BIG_ENDIAN BIT(7)
0145 #define MTK_WED_WPDMA_GLO_CFG_DIS_BT_SIZE_ALIGN BIT(8)
0146 #define MTK_WED_WPDMA_GLO_CFG_TX_BT_SIZE_LO BIT(9)
0147 #define MTK_WED_WPDMA_GLO_CFG_MULTI_DMA_EN GENMASK(11, 10)
0148 #define MTK_WED_WPDMA_GLO_CFG_FIFO_LITTLE_ENDIAN BIT(12)
0149 #define MTK_WED_WPDMA_GLO_CFG_MI_DEPTH_RD GENMASK(21, 13)
0150 #define MTK_WED_WPDMA_GLO_CFG_TX_BT_SIZE_HI GENMASK(23, 22)
0151 #define MTK_WED_WPDMA_GLO_CFG_SW_RESET BIT(24)
0152 #define MTK_WED_WPDMA_GLO_CFG_FIRST_TOKEN_ONLY BIT(26)
0153 #define MTK_WED_WPDMA_GLO_CFG_OMIT_RX_INFO BIT(27)
0154 #define MTK_WED_WPDMA_GLO_CFG_OMIT_TX_INFO BIT(28)
0155 #define MTK_WED_WPDMA_GLO_CFG_BYTE_SWAP BIT(29)
0156 #define MTK_WED_WPDMA_GLO_CFG_RX_2B_OFFSET BIT(31)
0157
0158 #define MTK_WED_WPDMA_RESET_IDX 0x50c
0159 #define MTK_WED_WPDMA_RESET_IDX_TX GENMASK(3, 0)
0160 #define MTK_WED_WPDMA_RESET_IDX_RX GENMASK(17, 16)
0161
0162 #define MTK_WED_WPDMA_INT_CTRL 0x520
0163 #define MTK_WED_WPDMA_INT_CTRL_SUBRT_ADV BIT(21)
0164
0165 #define MTK_WED_WPDMA_INT_MASK 0x524
0166
0167 #define MTK_WED_PCIE_CFG_BASE 0x560
0168
0169 #define MTK_WED_PCIE_INT_TRIGGER 0x570
0170 #define MTK_WED_PCIE_INT_TRIGGER_STATUS BIT(16)
0171
0172 #define MTK_WED_WPDMA_CFG_BASE 0x580
0173
0174 #define MTK_WED_WPDMA_TX_MIB(_n) (0x5a0 + (_n) * 4)
0175 #define MTK_WED_WPDMA_TX_COHERENT_MIB(_n) (0x5d0 + (_n) * 4)
0176
0177 #define MTK_WED_WPDMA_RING_TX(_n) (0x600 + (_n) * 0x10)
0178 #define MTK_WED_WPDMA_RING_RX(_n) (0x700 + (_n) * 0x10)
0179 #define MTK_WED_WDMA_RING_RX(_n) (0x900 + (_n) * 0x10)
0180 #define MTK_WED_WDMA_RX_THRES(_n) (0x940 + (_n) * 0x4)
0181
0182 #define MTK_WED_WDMA_GLO_CFG 0xa04
0183 #define MTK_WED_WDMA_GLO_CFG_TX_DRV_EN BIT(0)
0184 #define MTK_WED_WDMA_GLO_CFG_RX_DRV_EN BIT(2)
0185 #define MTK_WED_WDMA_GLO_CFG_RX_DRV_BUSY BIT(3)
0186 #define MTK_WED_WDMA_GLO_CFG_BT_SIZE GENMASK(5, 4)
0187 #define MTK_WED_WDMA_GLO_CFG_TX_WB_DDONE BIT(6)
0188 #define MTK_WED_WDMA_GLO_CFG_RX_DIS_FSM_AUTO_IDLE BIT(13)
0189 #define MTK_WED_WDMA_GLO_CFG_WCOMPLETE_SEL BIT(16)
0190 #define MTK_WED_WDMA_GLO_CFG_INIT_PHASE_RXDMA_BYPASS BIT(17)
0191 #define MTK_WED_WDMA_GLO_CFG_INIT_PHASE_BYPASS BIT(18)
0192 #define MTK_WED_WDMA_GLO_CFG_FSM_RETURN_IDLE BIT(19)
0193 #define MTK_WED_WDMA_GLO_CFG_WAIT_COHERENT BIT(20)
0194 #define MTK_WED_WDMA_GLO_CFG_AXI_W_AFTER_AW BIT(21)
0195 #define MTK_WED_WDMA_GLO_CFG_IDLE_DMAD_SUPPLY_SINGLE_W BIT(22)
0196 #define MTK_WED_WDMA_GLO_CFG_IDLE_DMAD_SUPPLY BIT(23)
0197 #define MTK_WED_WDMA_GLO_CFG_DYNAMIC_SKIP_DMAD_PREP BIT(24)
0198 #define MTK_WED_WDMA_GLO_CFG_DYNAMIC_DMAD_RECYCLE BIT(25)
0199 #define MTK_WED_WDMA_GLO_CFG_RST_INIT_COMPLETE BIT(26)
0200 #define MTK_WED_WDMA_GLO_CFG_RXDRV_CLKGATE_BYPASS BIT(30)
0201
0202 #define MTK_WED_WDMA_RESET_IDX 0xa08
0203 #define MTK_WED_WDMA_RESET_IDX_RX GENMASK(17, 16)
0204 #define MTK_WED_WDMA_RESET_IDX_DRV GENMASK(25, 24)
0205
0206 #define MTK_WED_WDMA_INT_TRIGGER 0xa28
0207 #define MTK_WED_WDMA_INT_TRIGGER_RX_DONE GENMASK(17, 16)
0208
0209 #define MTK_WED_WDMA_INT_CTRL 0xa2c
0210 #define MTK_WED_WDMA_INT_CTRL_POLL_SRC_SEL GENMASK(17, 16)
0211
0212 #define MTK_WED_WDMA_OFFSET0 0xaa4
0213 #define MTK_WED_WDMA_OFFSET1 0xaa8
0214
0215 #define MTK_WED_WDMA_RX_MIB(_n) (0xae0 + (_n) * 4)
0216 #define MTK_WED_WDMA_RX_RECYCLE_MIB(_n) (0xae8 + (_n) * 4)
0217 #define MTK_WED_WDMA_RX_PROCESSED_MIB(_n) (0xaf0 + (_n) * 4)
0218
0219 #define MTK_WED_RING_OFS_BASE 0x00
0220 #define MTK_WED_RING_OFS_COUNT 0x04
0221 #define MTK_WED_RING_OFS_CPU_IDX 0x08
0222 #define MTK_WED_RING_OFS_DMA_IDX 0x0c
0223
0224 #define MTK_WDMA_RING_RX(_n) (0x100 + (_n) * 0x10)
0225
0226 #define MTK_WDMA_GLO_CFG 0x204
0227 #define MTK_WDMA_GLO_CFG_RX_INFO_PRERES GENMASK(28, 26)
0228
0229 #define MTK_WDMA_RESET_IDX 0x208
0230 #define MTK_WDMA_RESET_IDX_TX GENMASK(3, 0)
0231 #define MTK_WDMA_RESET_IDX_RX GENMASK(17, 16)
0232
0233 #define MTK_WDMA_INT_MASK 0x228
0234 #define MTK_WDMA_INT_MASK_TX_DONE GENMASK(3, 0)
0235 #define MTK_WDMA_INT_MASK_RX_DONE GENMASK(17, 16)
0236 #define MTK_WDMA_INT_MASK_TX_DELAY BIT(28)
0237 #define MTK_WDMA_INT_MASK_TX_COHERENT BIT(29)
0238 #define MTK_WDMA_INT_MASK_RX_DELAY BIT(30)
0239 #define MTK_WDMA_INT_MASK_RX_COHERENT BIT(31)
0240
0241 #define MTK_WDMA_INT_GRP1 0x250
0242 #define MTK_WDMA_INT_GRP2 0x254
0243
0244 #define MTK_PCIE_MIRROR_MAP(n) ((n) ? 0x4 : 0x0)
0245 #define MTK_PCIE_MIRROR_MAP_EN BIT(0)
0246 #define MTK_PCIE_MIRROR_MAP_WED_ID BIT(1)
0247
0248
0249 #define HIFSYS_DMA_AG_MAP 0x008
0250
0251 #endif