Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0-only
0002 /* Copyright (C) 2020 Felix Fietkau <nbd@nbd.name> */
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 /* DMA channel mapping */
0249 #define HIFSYS_DMA_AG_MAP               0x008
0250 
0251 #endif