Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0+
0002 /* Copyright (C) 2017-2018 Broadcom */
0003 
0004 #ifndef V3D_REGS_H
0005 #define V3D_REGS_H
0006 
0007 #include <linux/bitops.h>
0008 
0009 #define V3D_MASK(high, low) ((u32)GENMASK(high, low))
0010 /* Using the GNU statement expression extension */
0011 #define V3D_SET_FIELD(value, field)                 \
0012     ({                              \
0013         u32 fieldval = (value) << field##_SHIFT;        \
0014         WARN_ON((fieldval & ~field##_MASK) != 0);       \
0015         fieldval & field##_MASK;                \
0016      })
0017 
0018 #define V3D_GET_FIELD(word, field) (((word) & field##_MASK) >>      \
0019                     field##_SHIFT)
0020 
0021 /* Hub registers for shared hardware between V3D cores. */
0022 
0023 #define V3D_HUB_AXICFG                                 0x00000
0024 # define V3D_HUB_AXICFG_MAX_LEN_MASK                   V3D_MASK(3, 0)
0025 # define V3D_HUB_AXICFG_MAX_LEN_SHIFT                  0
0026 #define V3D_HUB_UIFCFG                                 0x00004
0027 #define V3D_HUB_IDENT0                                 0x00008
0028 
0029 #define V3D_HUB_IDENT1                                 0x0000c
0030 # define V3D_HUB_IDENT1_WITH_MSO                       BIT(19)
0031 # define V3D_HUB_IDENT1_WITH_TSY                       BIT(18)
0032 # define V3D_HUB_IDENT1_WITH_TFU                       BIT(17)
0033 # define V3D_HUB_IDENT1_WITH_L3C                       BIT(16)
0034 # define V3D_HUB_IDENT1_NHOSTS_MASK                    V3D_MASK(15, 12)
0035 # define V3D_HUB_IDENT1_NHOSTS_SHIFT                   12
0036 # define V3D_HUB_IDENT1_NCORES_MASK                    V3D_MASK(11, 8)
0037 # define V3D_HUB_IDENT1_NCORES_SHIFT                   8
0038 # define V3D_HUB_IDENT1_REV_MASK                       V3D_MASK(7, 4)
0039 # define V3D_HUB_IDENT1_REV_SHIFT                      4
0040 # define V3D_HUB_IDENT1_TVER_MASK                      V3D_MASK(3, 0)
0041 # define V3D_HUB_IDENT1_TVER_SHIFT                     0
0042 
0043 #define V3D_HUB_IDENT2                                 0x00010
0044 # define V3D_HUB_IDENT2_WITH_MMU                       BIT(8)
0045 # define V3D_HUB_IDENT2_L3C_NKB_MASK                   V3D_MASK(7, 0)
0046 # define V3D_HUB_IDENT2_L3C_NKB_SHIFT                  0
0047 
0048 #define V3D_HUB_IDENT3                                 0x00014
0049 # define V3D_HUB_IDENT3_IPREV_MASK                     V3D_MASK(15, 8)
0050 # define V3D_HUB_IDENT3_IPREV_SHIFT                    8
0051 # define V3D_HUB_IDENT3_IPIDX_MASK                     V3D_MASK(7, 0)
0052 # define V3D_HUB_IDENT3_IPIDX_SHIFT                    0
0053 
0054 #define V3D_HUB_INT_STS                                0x00050
0055 #define V3D_HUB_INT_SET                                0x00054
0056 #define V3D_HUB_INT_CLR                                0x00058
0057 #define V3D_HUB_INT_MSK_STS                            0x0005c
0058 #define V3D_HUB_INT_MSK_SET                            0x00060
0059 #define V3D_HUB_INT_MSK_CLR                            0x00064
0060 # define V3D_HUB_INT_MMU_WRV                           BIT(5)
0061 # define V3D_HUB_INT_MMU_PTI                           BIT(4)
0062 # define V3D_HUB_INT_MMU_CAP                           BIT(3)
0063 # define V3D_HUB_INT_MSO                               BIT(2)
0064 # define V3D_HUB_INT_TFUC                              BIT(1)
0065 # define V3D_HUB_INT_TFUF                              BIT(0)
0066 
0067 #define V3D_GCA_CACHE_CTRL                             0x0000c
0068 # define V3D_GCA_CACHE_CTRL_FLUSH                      BIT(0)
0069 
0070 #define V3D_GCA_SAFE_SHUTDOWN                          0x000b0
0071 # define V3D_GCA_SAFE_SHUTDOWN_EN                      BIT(0)
0072 
0073 #define V3D_GCA_SAFE_SHUTDOWN_ACK                      0x000b4
0074 # define V3D_GCA_SAFE_SHUTDOWN_ACK_ACKED               3
0075 
0076 # define V3D_TOP_GR_BRIDGE_REVISION                    0x00000
0077 # define V3D_TOP_GR_BRIDGE_MAJOR_MASK                  V3D_MASK(15, 8)
0078 # define V3D_TOP_GR_BRIDGE_MAJOR_SHIFT                 8
0079 # define V3D_TOP_GR_BRIDGE_MINOR_MASK                  V3D_MASK(7, 0)
0080 # define V3D_TOP_GR_BRIDGE_MINOR_SHIFT                 0
0081 
0082 /* 7268 reset reg */
0083 # define V3D_TOP_GR_BRIDGE_SW_INIT_0                   0x00008
0084 # define V3D_TOP_GR_BRIDGE_SW_INIT_0_V3D_CLK_108_SW_INIT BIT(0)
0085 /* 7278 reset reg */
0086 # define V3D_TOP_GR_BRIDGE_SW_INIT_1                   0x0000c
0087 # define V3D_TOP_GR_BRIDGE_SW_INIT_1_V3D_CLK_108_SW_INIT BIT(0)
0088 
0089 #define V3D_TFU_CS                                     0x00400
0090 /* Stops current job, empties input fifo. */
0091 # define V3D_TFU_CS_TFURST                             BIT(31)
0092 # define V3D_TFU_CS_CVTCT_MASK                         V3D_MASK(23, 16)
0093 # define V3D_TFU_CS_CVTCT_SHIFT                        16
0094 # define V3D_TFU_CS_NFREE_MASK                         V3D_MASK(13, 8)
0095 # define V3D_TFU_CS_NFREE_SHIFT                        8
0096 # define V3D_TFU_CS_BUSY                               BIT(0)
0097 
0098 #define V3D_TFU_SU                                     0x00404
0099 /* Interrupt when FINTTHR input slots are free (0 = disabled) */
0100 # define V3D_TFU_SU_FINTTHR_MASK                       V3D_MASK(13, 8)
0101 # define V3D_TFU_SU_FINTTHR_SHIFT                      8
0102 /* Skips resetting the CRC at the start of CRC generation. */
0103 # define V3D_TFU_SU_CRCCHAIN                           BIT(4)
0104 /* skips writes, computes CRC of the image.  miplevels must be 0. */
0105 # define V3D_TFU_SU_CRC                                BIT(3)
0106 # define V3D_TFU_SU_THROTTLE_MASK                      V3D_MASK(1, 0)
0107 # define V3D_TFU_SU_THROTTLE_SHIFT                     0
0108 
0109 #define V3D_TFU_ICFG                                   0x00408
0110 /* Interrupt when the conversion is complete. */
0111 # define V3D_TFU_ICFG_IOC                              BIT(0)
0112 
0113 /* Input Image Address */
0114 #define V3D_TFU_IIA                                    0x0040c
0115 /* Input Chroma Address */
0116 #define V3D_TFU_ICA                                    0x00410
0117 /* Input Image Stride */
0118 #define V3D_TFU_IIS                                    0x00414
0119 /* Input Image U-Plane Address */
0120 #define V3D_TFU_IUA                                    0x00418
0121 /* Output Image Address */
0122 #define V3D_TFU_IOA                                    0x0041c
0123 /* Image Output Size */
0124 #define V3D_TFU_IOS                                    0x00420
0125 /* TFU YUV Coefficient 0 */
0126 #define V3D_TFU_COEF0                                  0x00424
0127 /* Use these regs instead of the defaults. */
0128 # define V3D_TFU_COEF0_USECOEF                         BIT(31)
0129 /* TFU YUV Coefficient 1 */
0130 #define V3D_TFU_COEF1                                  0x00428
0131 /* TFU YUV Coefficient 2 */
0132 #define V3D_TFU_COEF2                                  0x0042c
0133 /* TFU YUV Coefficient 3 */
0134 #define V3D_TFU_COEF3                                  0x00430
0135 
0136 #define V3D_TFU_CRC                                    0x00434
0137 
0138 /* Per-MMU registers. */
0139 
0140 #define V3D_MMUC_CONTROL                               0x01000
0141 # define V3D_MMUC_CONTROL_CLEAR                        BIT(3)
0142 # define V3D_MMUC_CONTROL_FLUSHING                     BIT(2)
0143 # define V3D_MMUC_CONTROL_FLUSH                        BIT(1)
0144 # define V3D_MMUC_CONTROL_ENABLE                       BIT(0)
0145 
0146 #define V3D_MMU_CTL                                    0x01200
0147 # define V3D_MMU_CTL_CAP_EXCEEDED                      BIT(27)
0148 # define V3D_MMU_CTL_CAP_EXCEEDED_ABORT                BIT(26)
0149 # define V3D_MMU_CTL_CAP_EXCEEDED_INT                  BIT(25)
0150 # define V3D_MMU_CTL_CAP_EXCEEDED_EXCEPTION            BIT(24)
0151 # define V3D_MMU_CTL_PT_INVALID                        BIT(20)
0152 # define V3D_MMU_CTL_PT_INVALID_ABORT                  BIT(19)
0153 # define V3D_MMU_CTL_PT_INVALID_INT                    BIT(18)
0154 # define V3D_MMU_CTL_PT_INVALID_EXCEPTION              BIT(17)
0155 # define V3D_MMU_CTL_PT_INVALID_ENABLE                 BIT(16)
0156 # define V3D_MMU_CTL_WRITE_VIOLATION                   BIT(12)
0157 # define V3D_MMU_CTL_WRITE_VIOLATION_ABORT             BIT(11)
0158 # define V3D_MMU_CTL_WRITE_VIOLATION_INT               BIT(10)
0159 # define V3D_MMU_CTL_WRITE_VIOLATION_EXCEPTION         BIT(9)
0160 # define V3D_MMU_CTL_TLB_CLEARING                      BIT(7)
0161 # define V3D_MMU_CTL_TLB_STATS_CLEAR                   BIT(3)
0162 # define V3D_MMU_CTL_TLB_CLEAR                         BIT(2)
0163 # define V3D_MMU_CTL_TLB_STATS_ENABLE                  BIT(1)
0164 # define V3D_MMU_CTL_ENABLE                            BIT(0)
0165 
0166 #define V3D_MMU_PT_PA_BASE                             0x01204
0167 #define V3D_MMU_HIT                                    0x01208
0168 #define V3D_MMU_MISSES                                 0x0120c
0169 #define V3D_MMU_STALLS                                 0x01210
0170 
0171 #define V3D_MMU_ADDR_CAP                               0x01214
0172 # define V3D_MMU_ADDR_CAP_ENABLE                       BIT(31)
0173 # define V3D_MMU_ADDR_CAP_MPAGE_MASK                   V3D_MASK(11, 0)
0174 # define V3D_MMU_ADDR_CAP_MPAGE_SHIFT                  0
0175 
0176 #define V3D_MMU_SHOOT_DOWN                             0x01218
0177 # define V3D_MMU_SHOOT_DOWN_SHOOTING                   BIT(29)
0178 # define V3D_MMU_SHOOT_DOWN_SHOOT                      BIT(28)
0179 # define V3D_MMU_SHOOT_DOWN_PAGE_MASK                  V3D_MASK(27, 0)
0180 # define V3D_MMU_SHOOT_DOWN_PAGE_SHIFT                 0
0181 
0182 #define V3D_MMU_BYPASS_START                           0x0121c
0183 #define V3D_MMU_BYPASS_END                             0x01220
0184 
0185 /* AXI ID of the access that faulted */
0186 #define V3D_MMU_VIO_ID                                 0x0122c
0187 
0188 /* Address for illegal PTEs to return */
0189 #define V3D_MMU_ILLEGAL_ADDR                           0x01230
0190 # define V3D_MMU_ILLEGAL_ADDR_ENABLE                   BIT(31)
0191 
0192 /* Address that faulted */
0193 #define V3D_MMU_VIO_ADDR                               0x01234
0194 
0195 #define V3D_MMU_DEBUG_INFO                             0x01238
0196 # define V3D_MMU_PA_WIDTH_MASK                         V3D_MASK(11, 8)
0197 # define V3D_MMU_PA_WIDTH_SHIFT                        8
0198 # define V3D_MMU_VA_WIDTH_MASK                         V3D_MASK(7, 4)
0199 # define V3D_MMU_VA_WIDTH_SHIFT                        4
0200 # define V3D_MMU_VERSION_MASK                          V3D_MASK(3, 0)
0201 # define V3D_MMU_VERSION_SHIFT                         0
0202 
0203 /* Per-V3D-core registers */
0204 
0205 #define V3D_CTL_IDENT0                                 0x00000
0206 # define V3D_IDENT0_VER_MASK                           V3D_MASK(31, 24)
0207 # define V3D_IDENT0_VER_SHIFT                          24
0208 
0209 #define V3D_CTL_IDENT1                                 0x00004
0210 /* Multiples of 1kb */
0211 # define V3D_IDENT1_VPM_SIZE_MASK                      V3D_MASK(31, 28)
0212 # define V3D_IDENT1_VPM_SIZE_SHIFT                     28
0213 # define V3D_IDENT1_NSEM_MASK                          V3D_MASK(23, 16)
0214 # define V3D_IDENT1_NSEM_SHIFT                         16
0215 # define V3D_IDENT1_NTMU_MASK                          V3D_MASK(15, 12)
0216 # define V3D_IDENT1_NTMU_SHIFT                         12
0217 # define V3D_IDENT1_QUPS_MASK                          V3D_MASK(11, 8)
0218 # define V3D_IDENT1_QUPS_SHIFT                         8
0219 # define V3D_IDENT1_NSLC_MASK                          V3D_MASK(7, 4)
0220 # define V3D_IDENT1_NSLC_SHIFT                         4
0221 # define V3D_IDENT1_REV_MASK                           V3D_MASK(3, 0)
0222 # define V3D_IDENT1_REV_SHIFT                          0
0223 
0224 #define V3D_CTL_IDENT2                                 0x00008
0225 # define V3D_IDENT2_BCG_INT                            BIT(28)
0226 
0227 #define V3D_CTL_MISCCFG                                0x00018
0228 # define V3D_CTL_MISCCFG_QRMAXCNT_MASK                 V3D_MASK(3, 1)
0229 # define V3D_CTL_MISCCFG_QRMAXCNT_SHIFT                1
0230 # define V3D_MISCCFG_OVRTMUOUT                         BIT(0)
0231 
0232 #define V3D_CTL_L2CACTL                                0x00020
0233 # define V3D_L2CACTL_L2CCLR                            BIT(2)
0234 # define V3D_L2CACTL_L2CDIS                            BIT(1)
0235 # define V3D_L2CACTL_L2CENA                            BIT(0)
0236 
0237 #define V3D_CTL_SLCACTL                                0x00024
0238 # define V3D_SLCACTL_TVCCS_MASK                        V3D_MASK(27, 24)
0239 # define V3D_SLCACTL_TVCCS_SHIFT                       24
0240 # define V3D_SLCACTL_TDCCS_MASK                        V3D_MASK(19, 16)
0241 # define V3D_SLCACTL_TDCCS_SHIFT                       16
0242 # define V3D_SLCACTL_UCC_MASK                          V3D_MASK(11, 8)
0243 # define V3D_SLCACTL_UCC_SHIFT                         8
0244 # define V3D_SLCACTL_ICC_MASK                          V3D_MASK(3, 0)
0245 # define V3D_SLCACTL_ICC_SHIFT                         0
0246 
0247 #define V3D_CTL_L2TCACTL                               0x00030
0248 # define V3D_L2TCACTL_TMUWCF                           BIT(8)
0249 # define V3D_L2TCACTL_L2T_NO_WM                        BIT(4)
0250 /* Invalidates cache lines. */
0251 # define V3D_L2TCACTL_FLM_FLUSH                        0
0252 /* Removes cachelines without writing dirty lines back. */
0253 # define V3D_L2TCACTL_FLM_CLEAR                        1
0254 /* Writes out dirty cachelines and marks them clean, but doesn't invalidate. */
0255 # define V3D_L2TCACTL_FLM_CLEAN                        2
0256 # define V3D_L2TCACTL_FLM_MASK                         V3D_MASK(2, 1)
0257 # define V3D_L2TCACTL_FLM_SHIFT                        1
0258 # define V3D_L2TCACTL_L2TFLS                           BIT(0)
0259 #define V3D_CTL_L2TFLSTA                               0x00034
0260 #define V3D_CTL_L2TFLEND                               0x00038
0261 
0262 #define V3D_CTL_INT_STS                                0x00050
0263 #define V3D_CTL_INT_SET                                0x00054
0264 #define V3D_CTL_INT_CLR                                0x00058
0265 #define V3D_CTL_INT_MSK_STS                            0x0005c
0266 #define V3D_CTL_INT_MSK_SET                            0x00060
0267 #define V3D_CTL_INT_MSK_CLR                            0x00064
0268 # define V3D_INT_QPU_MASK                              V3D_MASK(27, 16)
0269 # define V3D_INT_QPU_SHIFT                             16
0270 # define V3D_INT_CSDDONE                               BIT(7)
0271 # define V3D_INT_PCTR                                  BIT(6)
0272 # define V3D_INT_GMPV                                  BIT(5)
0273 # define V3D_INT_TRFB                                  BIT(4)
0274 # define V3D_INT_SPILLUSE                              BIT(3)
0275 # define V3D_INT_OUTOMEM                               BIT(2)
0276 # define V3D_INT_FLDONE                                BIT(1)
0277 # define V3D_INT_FRDONE                                BIT(0)
0278 
0279 #define V3D_CLE_CT0CS                                  0x00100
0280 #define V3D_CLE_CT1CS                                  0x00104
0281 #define V3D_CLE_CTNCS(n) (V3D_CLE_CT0CS + 4 * n)
0282 #define V3D_CLE_CT0EA                                  0x00108
0283 #define V3D_CLE_CT1EA                                  0x0010c
0284 #define V3D_CLE_CTNEA(n) (V3D_CLE_CT0EA + 4 * n)
0285 #define V3D_CLE_CT0CA                                  0x00110
0286 #define V3D_CLE_CT1CA                                  0x00114
0287 #define V3D_CLE_CTNCA(n) (V3D_CLE_CT0CA + 4 * n)
0288 #define V3D_CLE_CT0RA                                  0x00118
0289 #define V3D_CLE_CT1RA                                  0x0011c
0290 #define V3D_CLE_CTNRA(n) (V3D_CLE_CT0RA + 4 * n)
0291 #define V3D_CLE_CT0LC                                  0x00120
0292 #define V3D_CLE_CT1LC                                  0x00124
0293 #define V3D_CLE_CT0PC                                  0x00128
0294 #define V3D_CLE_CT1PC                                  0x0012c
0295 #define V3D_CLE_PCS                                    0x00130
0296 #define V3D_CLE_BFC                                    0x00134
0297 #define V3D_CLE_RFC                                    0x00138
0298 #define V3D_CLE_TFBC                                   0x0013c
0299 #define V3D_CLE_TFIT                                   0x00140
0300 #define V3D_CLE_CT1CFG                                 0x00144
0301 #define V3D_CLE_CT1TILECT                              0x00148
0302 #define V3D_CLE_CT1TSKIP                               0x0014c
0303 #define V3D_CLE_CT1PTCT                                0x00150
0304 #define V3D_CLE_CT0SYNC                                0x00154
0305 #define V3D_CLE_CT1SYNC                                0x00158
0306 #define V3D_CLE_CT0QTS                                 0x0015c
0307 # define V3D_CLE_CT0QTS_ENABLE                         BIT(1)
0308 #define V3D_CLE_CT0QBA                                 0x00160
0309 #define V3D_CLE_CT1QBA                                 0x00164
0310 #define V3D_CLE_CTNQBA(n) (V3D_CLE_CT0QBA + 4 * n)
0311 #define V3D_CLE_CT0QEA                                 0x00168
0312 #define V3D_CLE_CT1QEA                                 0x0016c
0313 #define V3D_CLE_CTNQEA(n) (V3D_CLE_CT0QEA + 4 * n)
0314 #define V3D_CLE_CT0QMA                                 0x00170
0315 #define V3D_CLE_CT0QMS                                 0x00174
0316 #define V3D_CLE_CT1QCFG                                0x00178
0317 /* If set without ETPROC, entirely skip tiles with no primitives. */
0318 # define V3D_CLE_QCFG_ETFILT                           BIT(7)
0319 /* If set with ETFILT, just write the clear color to tiles with no
0320  * primitives.
0321  */
0322 # define V3D_CLE_QCFG_ETPROC                           BIT(6)
0323 # define V3D_CLE_QCFG_ETSFLUSH                         BIT(1)
0324 # define V3D_CLE_QCFG_MCDIS                            BIT(0)
0325 
0326 #define V3D_PTB_BPCA                                   0x00300
0327 #define V3D_PTB_BPCS                                   0x00304
0328 #define V3D_PTB_BPOA                                   0x00308
0329 #define V3D_PTB_BPOS                                   0x0030c
0330 
0331 #define V3D_PTB_BXCF                                   0x00310
0332 # define V3D_PTB_BXCF_RWORDERDISA                      BIT(1)
0333 # define V3D_PTB_BXCF_CLIPDISA                         BIT(0)
0334 
0335 #define V3D_V3_PCTR_0_EN                               0x00674
0336 #define V3D_V3_PCTR_0_EN_ENABLE                        BIT(31)
0337 #define V3D_V4_PCTR_0_EN                               0x00650
0338 /* When a bit is set, resets the counter to 0. */
0339 #define V3D_V3_PCTR_0_CLR                              0x00670
0340 #define V3D_V4_PCTR_0_CLR                              0x00654
0341 #define V3D_PCTR_0_OVERFLOW                            0x00658
0342 
0343 #define V3D_V3_PCTR_0_PCTRS0                           0x00684
0344 #define V3D_V3_PCTR_0_PCTRS15                          0x00660
0345 #define V3D_V3_PCTR_0_PCTRSX(x)                        (V3D_V3_PCTR_0_PCTRS0 + \
0346                             4 * (x))
0347 /* Each src reg muxes four counters each. */
0348 #define V3D_V4_PCTR_0_SRC_0_3                          0x00660
0349 #define V3D_V4_PCTR_0_SRC_28_31                        0x0067c
0350 #define V3D_V4_PCTR_0_SRC_X(x)                         (V3D_V4_PCTR_0_SRC_0_3 + \
0351                             4 * (x))
0352 # define V3D_PCTR_S0_MASK                              V3D_MASK(6, 0)
0353 # define V3D_PCTR_S0_SHIFT                             0
0354 # define V3D_PCTR_S1_MASK                              V3D_MASK(14, 8)
0355 # define V3D_PCTR_S1_SHIFT                             8
0356 # define V3D_PCTR_S2_MASK                              V3D_MASK(22, 16)
0357 # define V3D_PCTR_S2_SHIFT                             16
0358 # define V3D_PCTR_S3_MASK                              V3D_MASK(30, 24)
0359 # define V3D_PCTR_S3_SHIFT                             24
0360 # define V3D_PCTR_CYCLE_COUNT                          32
0361 
0362 /* Output values of the counters. */
0363 #define V3D_PCTR_0_PCTR0                               0x00680
0364 #define V3D_PCTR_0_PCTR31                              0x006fc
0365 #define V3D_PCTR_0_PCTRX(x)                            (V3D_PCTR_0_PCTR0 + \
0366                             4 * (x))
0367 #define V3D_GMP_STATUS                                 0x00800
0368 # define V3D_GMP_STATUS_GMPRST                         BIT(31)
0369 # define V3D_GMP_STATUS_WR_COUNT_MASK                  V3D_MASK(30, 24)
0370 # define V3D_GMP_STATUS_WR_COUNT_SHIFT                 24
0371 # define V3D_GMP_STATUS_RD_COUNT_MASK                  V3D_MASK(22, 16)
0372 # define V3D_GMP_STATUS_RD_COUNT_SHIFT                 16
0373 # define V3D_GMP_STATUS_WR_ACTIVE                      BIT(5)
0374 # define V3D_GMP_STATUS_RD_ACTIVE                      BIT(4)
0375 # define V3D_GMP_STATUS_CFG_BUSY                       BIT(3)
0376 # define V3D_GMP_STATUS_CNTOVF                         BIT(2)
0377 # define V3D_GMP_STATUS_INVPROT                        BIT(1)
0378 # define V3D_GMP_STATUS_VIO                            BIT(0)
0379 
0380 #define V3D_GMP_CFG                                    0x00804
0381 # define V3D_GMP_CFG_LBURSTEN                          BIT(3)
0382 # define V3D_GMP_CFG_PGCRSEN                           BIT()
0383 # define V3D_GMP_CFG_STOP_REQ                          BIT(1)
0384 # define V3D_GMP_CFG_PROT_ENABLE                       BIT(0)
0385 
0386 #define V3D_GMP_VIO_ADDR                               0x00808
0387 #define V3D_GMP_VIO_TYPE                               0x0080c
0388 #define V3D_GMP_TABLE_ADDR                             0x00810
0389 #define V3D_GMP_CLEAR_LOAD                             0x00814
0390 #define V3D_GMP_PRESERVE_LOAD                          0x00818
0391 #define V3D_GMP_VALID_LINES                            0x00820
0392 
0393 #define V3D_CSD_STATUS                                 0x00900
0394 # define V3D_CSD_STATUS_NUM_COMPLETED_MASK             V3D_MASK(11, 4)
0395 # define V3D_CSD_STATUS_NUM_COMPLETED_SHIFT            4
0396 # define V3D_CSD_STATUS_NUM_ACTIVE_MASK                V3D_MASK(3, 2)
0397 # define V3D_CSD_STATUS_NUM_ACTIVE_SHIFT               2
0398 # define V3D_CSD_STATUS_HAVE_CURRENT_DISPATCH          BIT(1)
0399 # define V3D_CSD_STATUS_HAVE_QUEUED_DISPATCH           BIT(0)
0400 
0401 #define V3D_CSD_QUEUED_CFG0                            0x00904
0402 # define V3D_CSD_QUEUED_CFG0_NUM_WGS_X_MASK            V3D_MASK(31, 16)
0403 # define V3D_CSD_QUEUED_CFG0_NUM_WGS_X_SHIFT           16
0404 # define V3D_CSD_QUEUED_CFG0_WG_X_OFFSET_MASK          V3D_MASK(15, 0)
0405 # define V3D_CSD_QUEUED_CFG0_WG_X_OFFSET_SHIFT         0
0406 
0407 #define V3D_CSD_QUEUED_CFG1                            0x00908
0408 # define V3D_CSD_QUEUED_CFG1_NUM_WGS_Y_MASK            V3D_MASK(31, 16)
0409 # define V3D_CSD_QUEUED_CFG1_NUM_WGS_Y_SHIFT           16
0410 # define V3D_CSD_QUEUED_CFG1_WG_Y_OFFSET_MASK          V3D_MASK(15, 0)
0411 # define V3D_CSD_QUEUED_CFG1_WG_Y_OFFSET_SHIFT         0
0412 
0413 #define V3D_CSD_QUEUED_CFG2                            0x0090c
0414 # define V3D_CSD_QUEUED_CFG2_NUM_WGS_Z_MASK            V3D_MASK(31, 16)
0415 # define V3D_CSD_QUEUED_CFG2_NUM_WGS_Z_SHIFT           16
0416 # define V3D_CSD_QUEUED_CFG2_WG_Z_OFFSET_MASK          V3D_MASK(15, 0)
0417 # define V3D_CSD_QUEUED_CFG2_WG_Z_OFFSET_SHIFT         0
0418 
0419 #define V3D_CSD_QUEUED_CFG3                            0x00910
0420 # define V3D_CSD_QUEUED_CFG3_OVERLAP_WITH_PREV         BIT(26)
0421 # define V3D_CSD_QUEUED_CFG3_MAX_SG_ID_MASK            V3D_MASK(25, 20)
0422 # define V3D_CSD_QUEUED_CFG3_MAX_SG_ID_SHIFT           20
0423 # define V3D_CSD_QUEUED_CFG3_BATCHES_PER_SG_M1_MASK    V3D_MASK(19, 12)
0424 # define V3D_CSD_QUEUED_CFG3_BATCHES_PER_SG_M1_SHIFT   12
0425 # define V3D_CSD_QUEUED_CFG3_WGS_PER_SG_MASK           V3D_MASK(11, 8)
0426 # define V3D_CSD_QUEUED_CFG3_WGS_PER_SG_SHIFT          8
0427 # define V3D_CSD_QUEUED_CFG3_WG_SIZE_MASK              V3D_MASK(7, 0)
0428 # define V3D_CSD_QUEUED_CFG3_WG_SIZE_SHIFT             0
0429 
0430 /* Number of batches, minus 1 */
0431 #define V3D_CSD_QUEUED_CFG4                            0x00914
0432 
0433 /* Shader address, pnan, singleseg, threading, like a shader record. */
0434 #define V3D_CSD_QUEUED_CFG5                            0x00918
0435 
0436 /* Uniforms address (4 byte aligned) */
0437 #define V3D_CSD_QUEUED_CFG6                            0x0091c
0438 
0439 #define V3D_CSD_CURRENT_CFG0                          0x00920
0440 #define V3D_CSD_CURRENT_CFG1                          0x00924
0441 #define V3D_CSD_CURRENT_CFG2                          0x00928
0442 #define V3D_CSD_CURRENT_CFG3                          0x0092c
0443 #define V3D_CSD_CURRENT_CFG4                          0x00930
0444 #define V3D_CSD_CURRENT_CFG5                          0x00934
0445 #define V3D_CSD_CURRENT_CFG6                          0x00938
0446 
0447 #define V3D_CSD_CURRENT_ID0                            0x0093c
0448 # define V3D_CSD_CURRENT_ID0_WG_X_MASK                 V3D_MASK(31, 16)
0449 # define V3D_CSD_CURRENT_ID0_WG_X_SHIFT                16
0450 # define V3D_CSD_CURRENT_ID0_WG_IN_SG_MASK             V3D_MASK(11, 8)
0451 # define V3D_CSD_CURRENT_ID0_WG_IN_SG_SHIFT            8
0452 # define V3D_CSD_CURRENT_ID0_L_IDX_MASK                V3D_MASK(7, 0)
0453 # define V3D_CSD_CURRENT_ID0_L_IDX_SHIFT               0
0454 
0455 #define V3D_CSD_CURRENT_ID1                            0x00940
0456 # define V3D_CSD_CURRENT_ID0_WG_Z_MASK                 V3D_MASK(31, 16)
0457 # define V3D_CSD_CURRENT_ID0_WG_Z_SHIFT                16
0458 # define V3D_CSD_CURRENT_ID0_WG_Y_MASK                 V3D_MASK(15, 0)
0459 # define V3D_CSD_CURRENT_ID0_WG_Y_SHIFT                0
0460 
0461 #define V3D_ERR_FDBGO                                  0x00f04
0462 #define V3D_ERR_FDBGB                                  0x00f08
0463 #define V3D_ERR_FDBGR                                  0x00f0c
0464 
0465 #define V3D_ERR_FDBGS                                  0x00f10
0466 # define V3D_ERR_FDBGS_INTERPZ_IP_STALL                BIT(17)
0467 # define V3D_ERR_FDBGS_DEPTHO_FIFO_IP_STALL            BIT(16)
0468 # define V3D_ERR_FDBGS_XYNRM_IP_STALL                  BIT(14)
0469 # define V3D_ERR_FDBGS_EZREQ_FIFO_OP_VALID             BIT(13)
0470 # define V3D_ERR_FDBGS_QXYF_FIFO_OP_VALID              BIT(12)
0471 # define V3D_ERR_FDBGS_QXYF_FIFO_OP_LAST               BIT(11)
0472 # define V3D_ERR_FDBGS_EZTEST_ANYQVALID                BIT(7)
0473 # define V3D_ERR_FDBGS_EZTEST_PASS                     BIT(6)
0474 # define V3D_ERR_FDBGS_EZTEST_QREADY                   BIT(5)
0475 # define V3D_ERR_FDBGS_EZTEST_VLF_OKNOVALID            BIT(4)
0476 # define V3D_ERR_FDBGS_EZTEST_QSTALL                   BIT(3)
0477 # define V3D_ERR_FDBGS_EZTEST_IP_VLFSTALL              BIT(2)
0478 # define V3D_ERR_FDBGS_EZTEST_IP_PRSTALL               BIT(1)
0479 # define V3D_ERR_FDBGS_EZTEST_IP_QSTALL                BIT(0)
0480 
0481 #define V3D_ERR_STAT                                   0x00f20
0482 # define V3D_ERR_L2CARE                                BIT(15)
0483 # define V3D_ERR_VCMBE                                 BIT(14)
0484 # define V3D_ERR_VCMRE                                 BIT(13)
0485 # define V3D_ERR_VCDI                                  BIT(12)
0486 # define V3D_ERR_VCDE                                  BIT(11)
0487 # define V3D_ERR_VDWE                                  BIT(10)
0488 # define V3D_ERR_VPMEAS                                BIT(9)
0489 # define V3D_ERR_VPMEFNA                               BIT(8)
0490 # define V3D_ERR_VPMEWNA                               BIT(7)
0491 # define V3D_ERR_VPMERNA                               BIT(6)
0492 # define V3D_ERR_VPMERR                                BIT(5)
0493 # define V3D_ERR_VPMEWR                                BIT(4)
0494 # define V3D_ERR_VPAERRGL                              BIT(3)
0495 # define V3D_ERR_VPAEBRGL                              BIT(2)
0496 # define V3D_ERR_VPAERGS                               BIT(1)
0497 # define V3D_ERR_VPAEABB                               BIT(0)
0498 
0499 #endif /* V3D_REGS_H */