0001
0002
0003
0004
0005
0006
0007
0008 #ifndef __PANFROST_REGS_H__
0009 #define __PANFROST_REGS_H__
0010
0011 #define GPU_ID 0x00
0012 #define GPU_L2_FEATURES 0x004
0013 #define GPU_CORE_FEATURES 0x008
0014 #define GPU_TILER_FEATURES 0x00C
0015 #define GPU_MEM_FEATURES 0x010
0016 #define GROUPS_L2_COHERENT BIT(0)
0017
0018 #define GPU_MMU_FEATURES 0x014
0019 #define GPU_AS_PRESENT 0x018
0020 #define GPU_JS_PRESENT 0x01C
0021
0022 #define GPU_INT_RAWSTAT 0x20
0023 #define GPU_INT_CLEAR 0x24
0024 #define GPU_INT_MASK 0x28
0025 #define GPU_INT_STAT 0x2c
0026 #define GPU_IRQ_FAULT BIT(0)
0027 #define GPU_IRQ_MULTIPLE_FAULT BIT(7)
0028 #define GPU_IRQ_RESET_COMPLETED BIT(8)
0029 #define GPU_IRQ_POWER_CHANGED BIT(9)
0030 #define GPU_IRQ_POWER_CHANGED_ALL BIT(10)
0031 #define GPU_IRQ_PERFCNT_SAMPLE_COMPLETED BIT(16)
0032 #define GPU_IRQ_CLEAN_CACHES_COMPLETED BIT(17)
0033 #define GPU_IRQ_MASK_ALL \
0034 (GPU_IRQ_FAULT |\
0035 GPU_IRQ_MULTIPLE_FAULT |\
0036 GPU_IRQ_RESET_COMPLETED |\
0037 GPU_IRQ_POWER_CHANGED |\
0038 GPU_IRQ_POWER_CHANGED_ALL |\
0039 GPU_IRQ_PERFCNT_SAMPLE_COMPLETED |\
0040 GPU_IRQ_CLEAN_CACHES_COMPLETED)
0041 #define GPU_IRQ_MASK_ERROR \
0042 ( \
0043 GPU_IRQ_FAULT |\
0044 GPU_IRQ_MULTIPLE_FAULT)
0045 #define GPU_CMD 0x30
0046 #define GPU_CMD_SOFT_RESET 0x01
0047 #define GPU_CMD_PERFCNT_CLEAR 0x03
0048 #define GPU_CMD_PERFCNT_SAMPLE 0x04
0049 #define GPU_CMD_CLEAN_CACHES 0x07
0050 #define GPU_CMD_CLEAN_INV_CACHES 0x08
0051 #define GPU_STATUS 0x34
0052 #define GPU_STATUS_PRFCNT_ACTIVE BIT(2)
0053 #define GPU_LATEST_FLUSH_ID 0x38
0054 #define GPU_PWR_KEY 0x50
0055 #define GPU_PWR_KEY_UNLOCK 0x2968A819
0056 #define GPU_PWR_OVERRIDE0 0x54
0057 #define GPU_PWR_OVERRIDE1 0x58
0058 #define GPU_FAULT_STATUS 0x3C
0059 #define GPU_FAULT_ADDRESS_LO 0x40
0060 #define GPU_FAULT_ADDRESS_HI 0x44
0061
0062 #define GPU_PERFCNT_BASE_LO 0x60
0063 #define GPU_PERFCNT_BASE_HI 0x64
0064 #define GPU_PERFCNT_CFG 0x68
0065 #define GPU_PERFCNT_CFG_MODE(x) (x)
0066 #define GPU_PERFCNT_CFG_MODE_OFF 0
0067 #define GPU_PERFCNT_CFG_MODE_MANUAL 1
0068 #define GPU_PERFCNT_CFG_MODE_TILE 2
0069 #define GPU_PERFCNT_CFG_AS(x) ((x) << 4)
0070 #define GPU_PERFCNT_CFG_SETSEL(x) ((x) << 8)
0071 #define GPU_PRFCNT_JM_EN 0x6c
0072 #define GPU_PRFCNT_SHADER_EN 0x70
0073 #define GPU_PRFCNT_TILER_EN 0x74
0074 #define GPU_PRFCNT_MMU_L2_EN 0x7c
0075
0076 #define GPU_THREAD_MAX_THREADS 0x0A0
0077 #define GPU_THREAD_MAX_WORKGROUP_SIZE 0x0A4
0078 #define GPU_THREAD_MAX_BARRIER_SIZE 0x0A8
0079 #define GPU_THREAD_FEATURES 0x0AC
0080 #define GPU_THREAD_TLS_ALLOC 0x310
0081
0082
0083 #define GPU_TEXTURE_FEATURES(n) (0x0B0 + ((n) * 4))
0084 #define GPU_JS_FEATURES(n) (0x0C0 + ((n) * 4))
0085 #define GPU_AFBC_FEATURES (0x4C)
0086
0087 #define GPU_SHADER_PRESENT_LO 0x100
0088 #define GPU_SHADER_PRESENT_HI 0x104
0089 #define GPU_TILER_PRESENT_LO 0x110
0090 #define GPU_TILER_PRESENT_HI 0x114
0091
0092 #define GPU_L2_PRESENT_LO 0x120
0093 #define GPU_L2_PRESENT_HI 0x124
0094
0095 #define GPU_COHERENCY_FEATURES 0x300
0096 #define COHERENCY_ACE_LITE BIT(0)
0097 #define COHERENCY_ACE BIT(1)
0098
0099 #define GPU_STACK_PRESENT_LO 0xE00
0100 #define GPU_STACK_PRESENT_HI 0xE04
0101
0102 #define SHADER_READY_LO 0x140
0103 #define SHADER_READY_HI 0x144
0104
0105 #define TILER_READY_LO 0x150
0106 #define TILER_READY_HI 0x154
0107
0108 #define L2_READY_LO 0x160
0109 #define L2_READY_HI 0x164
0110
0111 #define STACK_READY_LO 0xE10
0112 #define STACK_READY_HI 0xE14
0113
0114
0115 #define SHADER_PWRON_LO 0x180
0116 #define SHADER_PWRON_HI 0x184
0117
0118 #define TILER_PWRON_LO 0x190
0119 #define TILER_PWRON_HI 0x194
0120
0121 #define L2_PWRON_LO 0x1A0
0122 #define L2_PWRON_HI 0x1A4
0123
0124 #define STACK_PWRON_LO 0xE20
0125 #define STACK_PWRON_HI 0xE24
0126
0127
0128 #define SHADER_PWROFF_LO 0x1C0
0129 #define SHADER_PWROFF_HI 0x1C4
0130
0131 #define TILER_PWROFF_LO 0x1D0
0132 #define TILER_PWROFF_HI 0x1D4
0133
0134 #define L2_PWROFF_LO 0x1E0
0135 #define L2_PWROFF_HI 0x1E4
0136
0137 #define STACK_PWROFF_LO 0xE30
0138 #define STACK_PWROFF_HI 0xE34
0139
0140
0141 #define SHADER_PWRTRANS_LO 0x200
0142 #define SHADER_PWRTRANS_HI 0x204
0143
0144 #define TILER_PWRTRANS_LO 0x210
0145 #define TILER_PWRTRANS_HI 0x214
0146
0147 #define L2_PWRTRANS_LO 0x220
0148 #define L2_PWRTRANS_HI 0x224
0149
0150 #define STACK_PWRTRANS_LO 0xE40
0151 #define STACK_PWRTRANS_HI 0xE44
0152
0153
0154 #define SHADER_PWRACTIVE_LO 0x240
0155 #define SHADER_PWRACTIVE_HI 0x244
0156
0157 #define TILER_PWRACTIVE_LO 0x250
0158 #define TILER_PWRACTIVE_HI 0x254
0159
0160 #define L2_PWRACTIVE_LO 0x260
0161 #define L2_PWRACTIVE_HI 0x264
0162
0163 #define GPU_JM_CONFIG 0xF00
0164 #define GPU_SHADER_CONFIG 0xF04
0165 #define GPU_TILER_CONFIG 0xF08
0166 #define GPU_L2_MMU_CONFIG 0xF0C
0167
0168
0169 #define L2_MMU_CONFIG_ALLOW_SNOOP_DISPARITY_SHIFT 23
0170 #define L2_MMU_CONFIG_ALLOW_SNOOP_DISPARITY (0x1 << L2_MMU_CONFIG_ALLOW_SNOOP_DISPARITY_SHIFT)
0171 #define L2_MMU_CONFIG_LIMIT_EXTERNAL_READS_SHIFT 24
0172 #define L2_MMU_CONFIG_LIMIT_EXTERNAL_READS (0x3 << L2_MMU_CONFIG_LIMIT_EXTERNAL_READS_SHIFT)
0173 #define L2_MMU_CONFIG_LIMIT_EXTERNAL_READS_OCTANT (0x1 << L2_MMU_CONFIG_LIMIT_EXTERNAL_READS_SHIFT)
0174 #define L2_MMU_CONFIG_LIMIT_EXTERNAL_READS_QUARTER (0x2 << L2_MMU_CONFIG_LIMIT_EXTERNAL_READS_SHIFT)
0175 #define L2_MMU_CONFIG_LIMIT_EXTERNAL_READS_HALF (0x3 << L2_MMU_CONFIG_LIMIT_EXTERNAL_READS_SHIFT)
0176
0177 #define L2_MMU_CONFIG_LIMIT_EXTERNAL_WRITES_SHIFT 26
0178 #define L2_MMU_CONFIG_LIMIT_EXTERNAL_WRITES (0x3 << L2_MMU_CONFIG_LIMIT_EXTERNAL_WRITES_SHIFT)
0179 #define L2_MMU_CONFIG_LIMIT_EXTERNAL_WRITES_OCTANT (0x1 << L2_MMU_CONFIG_LIMIT_EXTERNAL_WRITES_SHIFT)
0180 #define L2_MMU_CONFIG_LIMIT_EXTERNAL_WRITES_QUARTER (0x2 << L2_MMU_CONFIG_LIMIT_EXTERNAL_WRITES_SHIFT)
0181 #define L2_MMU_CONFIG_LIMIT_EXTERNAL_WRITES_HALF (0x3 << L2_MMU_CONFIG_LIMIT_EXTERNAL_WRITES_SHIFT)
0182
0183 #define L2_MMU_CONFIG_3BIT_LIMIT_EXTERNAL_READS_SHIFT 12
0184 #define L2_MMU_CONFIG_3BIT_LIMIT_EXTERNAL_READS (0x7 << L2_MMU_CONFIG_LIMIT_EXTERNAL_READS_SHIFT)
0185
0186 #define L2_MMU_CONFIG_3BIT_LIMIT_EXTERNAL_WRITES_SHIFT 15
0187 #define L2_MMU_CONFIG_3BIT_LIMIT_EXTERNAL_WRITES (0x7 << L2_MMU_CONFIG_LIMIT_EXTERNAL_WRITES_SHIFT)
0188
0189
0190 #define SC_ALT_COUNTERS BIT(3)
0191 #define SC_OVERRIDE_FWD_PIXEL_KILL BIT(4)
0192 #define SC_SDC_DISABLE_OQ_DISCARD BIT(6)
0193 #define SC_LS_ALLOW_ATTR_TYPES BIT(16)
0194 #define SC_LS_PAUSEBUFFER_DISABLE BIT(16)
0195 #define SC_TLS_HASH_ENABLE BIT(17)
0196 #define SC_LS_ATTR_CHECK_DISABLE BIT(18)
0197 #define SC_ENABLE_TEXGRD_FLAGS BIT(25)
0198 #define SC_VAR_ALGORITHM BIT(29)
0199
0200
0201
0202 #define TC_CLOCK_GATE_OVERRIDE BIT(0)
0203
0204
0205 #define JM_TIMESTAMP_OVERRIDE BIT(0)
0206 #define JM_CLOCK_GATE_OVERRIDE BIT(1)
0207 #define JM_JOB_THROTTLE_ENABLE BIT(2)
0208 #define JM_JOB_THROTTLE_LIMIT_SHIFT 3
0209 #define JM_MAX_JOB_THROTTLE_LIMIT 0x3F
0210 #define JM_FORCE_COHERENCY_FEATURES_SHIFT 2
0211 #define JM_IDVS_GROUP_SIZE_SHIFT 16
0212 #define JM_DEFAULT_IDVS_GROUP_SIZE 0xF
0213 #define JM_MAX_IDVS_GROUP_SIZE 0x3F
0214
0215
0216
0217 #define JOB_INT_RAWSTAT 0x1000
0218 #define JOB_INT_CLEAR 0x1004
0219 #define JOB_INT_MASK 0x1008
0220 #define JOB_INT_STAT 0x100c
0221 #define JOB_INT_JS_STATE 0x1010
0222 #define JOB_INT_THROTTLE 0x1014
0223
0224 #define MK_JS_MASK(j) (0x10001 << (j))
0225 #define JOB_INT_MASK_ERR(j) BIT((j) + 16)
0226 #define JOB_INT_MASK_DONE(j) BIT(j)
0227
0228 #define JS_BASE 0x1800
0229 #define JS_HEAD_LO(n) (JS_BASE + ((n) * 0x80) + 0x00)
0230 #define JS_HEAD_HI(n) (JS_BASE + ((n) * 0x80) + 0x04)
0231 #define JS_TAIL_LO(n) (JS_BASE + ((n) * 0x80) + 0x08)
0232 #define JS_TAIL_HI(n) (JS_BASE + ((n) * 0x80) + 0x0c)
0233 #define JS_AFFINITY_LO(n) (JS_BASE + ((n) * 0x80) + 0x10)
0234 #define JS_AFFINITY_HI(n) (JS_BASE + ((n) * 0x80) + 0x14)
0235 #define JS_CONFIG(n) (JS_BASE + ((n) * 0x80) + 0x18)
0236 #define JS_XAFFINITY(n) (JS_BASE + ((n) * 0x80) + 0x1c)
0237 #define JS_COMMAND(n) (JS_BASE + ((n) * 0x80) + 0x20)
0238 #define JS_STATUS(n) (JS_BASE + ((n) * 0x80) + 0x24)
0239 #define JS_HEAD_NEXT_LO(n) (JS_BASE + ((n) * 0x80) + 0x40)
0240 #define JS_HEAD_NEXT_HI(n) (JS_BASE + ((n) * 0x80) + 0x44)
0241 #define JS_AFFINITY_NEXT_LO(n) (JS_BASE + ((n) * 0x80) + 0x50)
0242 #define JS_AFFINITY_NEXT_HI(n) (JS_BASE + ((n) * 0x80) + 0x54)
0243 #define JS_CONFIG_NEXT(n) (JS_BASE + ((n) * 0x80) + 0x58)
0244 #define JS_COMMAND_NEXT(n) (JS_BASE + ((n) * 0x80) + 0x60)
0245 #define JS_FLUSH_ID_NEXT(n) (JS_BASE + ((n) * 0x80) + 0x70)
0246
0247
0248 #define JS_CONFIG_START_FLUSH_CLEAN BIT(8)
0249 #define JS_CONFIG_START_FLUSH_CLEAN_INVALIDATE (3u << 8)
0250 #define JS_CONFIG_START_MMU BIT(10)
0251 #define JS_CONFIG_JOB_CHAIN_FLAG BIT(11)
0252 #define JS_CONFIG_END_FLUSH_CLEAN BIT(12)
0253 #define JS_CONFIG_END_FLUSH_CLEAN_INVALIDATE (3u << 12)
0254 #define JS_CONFIG_ENABLE_FLUSH_REDUCTION BIT(14)
0255 #define JS_CONFIG_DISABLE_DESCRIPTOR_WR_BK BIT(15)
0256 #define JS_CONFIG_THREAD_PRI(n) ((n) << 16)
0257
0258 #define JS_COMMAND_NOP 0x00
0259 #define JS_COMMAND_START 0x01
0260 #define JS_COMMAND_SOFT_STOP 0x02
0261 #define JS_COMMAND_HARD_STOP 0x03
0262 #define JS_COMMAND_SOFT_STOP_0 0x04
0263 #define JS_COMMAND_HARD_STOP_0 0x05
0264 #define JS_COMMAND_SOFT_STOP_1 0x06
0265 #define JS_COMMAND_HARD_STOP_1 0x07
0266
0267
0268 #define MMU_INT_RAWSTAT 0x2000
0269 #define MMU_INT_CLEAR 0x2004
0270 #define MMU_INT_MASK 0x2008
0271 #define MMU_INT_STAT 0x200c
0272
0273
0274 #define AS_COMMAND_NOP 0x00
0275 #define AS_COMMAND_UPDATE 0x01
0276 #define AS_COMMAND_LOCK 0x02
0277 #define AS_COMMAND_UNLOCK 0x03
0278 #define AS_COMMAND_FLUSH 0x04
0279
0280 #define AS_COMMAND_FLUSH_PT 0x04
0281 #define AS_COMMAND_FLUSH_MEM 0x05
0282
0283
0284 #define MMU_AS(as) (0x2400 + ((as) << 6))
0285
0286 #define AS_TRANSTAB_LO(as) (MMU_AS(as) + 0x00)
0287 #define AS_TRANSTAB_HI(as) (MMU_AS(as) + 0x04)
0288 #define AS_MEMATTR_LO(as) (MMU_AS(as) + 0x08)
0289 #define AS_MEMATTR_HI(as) (MMU_AS(as) + 0x0C)
0290 #define AS_LOCKADDR_LO(as) (MMU_AS(as) + 0x10)
0291 #define AS_LOCKADDR_HI(as) (MMU_AS(as) + 0x14)
0292 #define AS_COMMAND(as) (MMU_AS(as) + 0x18)
0293 #define AS_FAULTSTATUS(as) (MMU_AS(as) + 0x1C)
0294 #define AS_FAULTADDRESS_LO(as) (MMU_AS(as) + 0x20)
0295 #define AS_FAULTADDRESS_HI(as) (MMU_AS(as) + 0x24)
0296 #define AS_STATUS(as) (MMU_AS(as) + 0x28)
0297
0298 #define AS_TRANSCFG_LO(as) (MMU_AS(as) + 0x30)
0299 #define AS_TRANSCFG_HI(as) (MMU_AS(as) + 0x34)
0300 #define AS_FAULTEXTRA_LO(as) (MMU_AS(as) + 0x38)
0301 #define AS_FAULTEXTRA_HI(as) (MMU_AS(as) + 0x3C)
0302
0303
0304
0305
0306 #define AS_TRANSTAB_LPAE_ADDR_SPACE_MASK 0xfffffffffffff000
0307 #define AS_TRANSTAB_LPAE_ADRMODE_IDENTITY 0x2
0308 #define AS_TRANSTAB_LPAE_ADRMODE_TABLE 0x3
0309 #define AS_TRANSTAB_LPAE_ADRMODE_MASK 0x3
0310 #define AS_TRANSTAB_LPAE_READ_INNER BIT(2)
0311 #define AS_TRANSTAB_LPAE_SHARE_OUTER BIT(4)
0312
0313 #define AS_STATUS_AS_ACTIVE 0x01
0314
0315 #define AS_FAULTSTATUS_ACCESS_TYPE_MASK (0x3 << 8)
0316 #define AS_FAULTSTATUS_ACCESS_TYPE_ATOMIC (0x0 << 8)
0317 #define AS_FAULTSTATUS_ACCESS_TYPE_EX (0x1 << 8)
0318 #define AS_FAULTSTATUS_ACCESS_TYPE_READ (0x2 << 8)
0319 #define AS_FAULTSTATUS_ACCESS_TYPE_WRITE (0x3 << 8)
0320
0321 #define AS_LOCK_REGION_MIN_SIZE (1ULL << 15)
0322
0323 #define gpu_write(dev, reg, data) writel(data, dev->iomem + reg)
0324 #define gpu_read(dev, reg) readl(dev->iomem + reg)
0325
0326 #endif