hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/gpu/drm/v3d/v3d_regs.h
....@@ -86,6 +86,55 @@
8686 # define V3D_TOP_GR_BRIDGE_SW_INIT_1 0x0000c
8787 # define V3D_TOP_GR_BRIDGE_SW_INIT_1_V3D_CLK_108_SW_INIT BIT(0)
8888
89
+#define V3D_TFU_CS 0x00400
90
+/* Stops current job, empties input fifo. */
91
+# define V3D_TFU_CS_TFURST BIT(31)
92
+# define V3D_TFU_CS_CVTCT_MASK V3D_MASK(23, 16)
93
+# define V3D_TFU_CS_CVTCT_SHIFT 16
94
+# define V3D_TFU_CS_NFREE_MASK V3D_MASK(13, 8)
95
+# define V3D_TFU_CS_NFREE_SHIFT 8
96
+# define V3D_TFU_CS_BUSY BIT(0)
97
+
98
+#define V3D_TFU_SU 0x00404
99
+/* Interrupt when FINTTHR input slots are free (0 = disabled) */
100
+# define V3D_TFU_SU_FINTTHR_MASK V3D_MASK(13, 8)
101
+# define V3D_TFU_SU_FINTTHR_SHIFT 8
102
+/* Skips resetting the CRC at the start of CRC generation. */
103
+# define V3D_TFU_SU_CRCCHAIN BIT(4)
104
+/* skips writes, computes CRC of the image. miplevels must be 0. */
105
+# define V3D_TFU_SU_CRC BIT(3)
106
+# define V3D_TFU_SU_THROTTLE_MASK V3D_MASK(1, 0)
107
+# define V3D_TFU_SU_THROTTLE_SHIFT 0
108
+
109
+#define V3D_TFU_ICFG 0x00408
110
+/* Interrupt when the conversion is complete. */
111
+# define V3D_TFU_ICFG_IOC BIT(0)
112
+
113
+/* Input Image Address */
114
+#define V3D_TFU_IIA 0x0040c
115
+/* Input Chroma Address */
116
+#define V3D_TFU_ICA 0x00410
117
+/* Input Image Stride */
118
+#define V3D_TFU_IIS 0x00414
119
+/* Input Image U-Plane Address */
120
+#define V3D_TFU_IUA 0x00418
121
+/* Output Image Address */
122
+#define V3D_TFU_IOA 0x0041c
123
+/* Image Output Size */
124
+#define V3D_TFU_IOS 0x00420
125
+/* TFU YUV Coefficient 0 */
126
+#define V3D_TFU_COEF0 0x00424
127
+/* Use these regs instead of the defaults. */
128
+# define V3D_TFU_COEF0_USECOEF BIT(31)
129
+/* TFU YUV Coefficient 1 */
130
+#define V3D_TFU_COEF1 0x00428
131
+/* TFU YUV Coefficient 2 */
132
+#define V3D_TFU_COEF2 0x0042c
133
+/* TFU YUV Coefficient 3 */
134
+#define V3D_TFU_COEF3 0x00430
135
+
136
+#define V3D_TFU_CRC 0x00434
137
+
89138 /* Per-MMU registers. */
90139
91140 #define V3D_MMUC_CONTROL 0x01000
....@@ -103,7 +152,8 @@
103152 # define V3D_MMU_CTL_PT_INVALID_ABORT BIT(19)
104153 # define V3D_MMU_CTL_PT_INVALID_INT BIT(18)
105154 # define V3D_MMU_CTL_PT_INVALID_EXCEPTION BIT(17)
106
-# define V3D_MMU_CTL_WRITE_VIOLATION BIT(16)
155
+# define V3D_MMU_CTL_PT_INVALID_ENABLE BIT(16)
156
+# define V3D_MMU_CTL_WRITE_VIOLATION BIT(12)
107157 # define V3D_MMU_CTL_WRITE_VIOLATION_ABORT BIT(11)
108158 # define V3D_MMU_CTL_WRITE_VIOLATION_INT BIT(10)
109159 # define V3D_MMU_CTL_WRITE_VIOLATION_EXCEPTION BIT(9)
....@@ -142,6 +192,14 @@
142192 /* Address that faulted */
143193 #define V3D_MMU_VIO_ADDR 0x01234
144194
195
+#define V3D_MMU_DEBUG_INFO 0x01238
196
+# define V3D_MMU_PA_WIDTH_MASK V3D_MASK(11, 8)
197
+# define V3D_MMU_PA_WIDTH_SHIFT 8
198
+# define V3D_MMU_VA_WIDTH_MASK V3D_MASK(7, 4)
199
+# define V3D_MMU_VA_WIDTH_SHIFT 4
200
+# define V3D_MMU_VERSION_MASK V3D_MASK(3, 0)
201
+# define V3D_MMU_VERSION_SHIFT 0
202
+
145203 /* Per-V3D-core registers */
146204
147205 #define V3D_CTL_IDENT0 0x00000
....@@ -167,6 +225,8 @@
167225 # define V3D_IDENT2_BCG_INT BIT(28)
168226
169227 #define V3D_CTL_MISCCFG 0x00018
228
+# define V3D_CTL_MISCCFG_QRMAXCNT_MASK V3D_MASK(3, 1)
229
+# define V3D_CTL_MISCCFG_QRMAXCNT_SHIFT 1
170230 # define V3D_MISCCFG_OVRTMUOUT BIT(0)
171231
172232 #define V3D_CTL_L2CACTL 0x00020
....@@ -187,8 +247,11 @@
187247 #define V3D_CTL_L2TCACTL 0x00030
188248 # define V3D_L2TCACTL_TMUWCF BIT(8)
189249 # define V3D_L2TCACTL_L2T_NO_WM BIT(4)
250
+/* Invalidates cache lines. */
190251 # define V3D_L2TCACTL_FLM_FLUSH 0
252
+/* Removes cachelines without writing dirty lines back. */
191253 # define V3D_L2TCACTL_FLM_CLEAR 1
254
+/* Writes out dirty cachelines and marks them clean, but doesn't invalidate. */
192255 # define V3D_L2TCACTL_FLM_CLEAN 2
193256 # define V3D_L2TCACTL_FLM_MASK V3D_MASK(2, 1)
194257 # define V3D_L2TCACTL_FLM_SHIFT 1
....@@ -204,6 +267,8 @@
204267 #define V3D_CTL_INT_MSK_CLR 0x00064
205268 # define V3D_INT_QPU_MASK V3D_MASK(27, 16)
206269 # define V3D_INT_QPU_SHIFT 16
270
+# define V3D_INT_CSDDONE BIT(7)
271
+# define V3D_INT_PCTR BIT(6)
207272 # define V3D_INT_GMPV BIT(5)
208273 # define V3D_INT_TRFB BIT(4)
209274 # define V3D_INT_SPILLUSE BIT(3)
....@@ -267,6 +332,36 @@
267332 # define V3D_PTB_BXCF_RWORDERDISA BIT(1)
268333 # define V3D_PTB_BXCF_CLIPDISA BIT(0)
269334
335
+#define V3D_V3_PCTR_0_EN 0x00674
336
+#define V3D_V3_PCTR_0_EN_ENABLE BIT(31)
337
+#define V3D_V4_PCTR_0_EN 0x00650
338
+/* When a bit is set, resets the counter to 0. */
339
+#define V3D_V3_PCTR_0_CLR 0x00670
340
+#define V3D_V4_PCTR_0_CLR 0x00654
341
+#define V3D_PCTR_0_OVERFLOW 0x00658
342
+
343
+#define V3D_V3_PCTR_0_PCTRS0 0x00684
344
+#define V3D_V3_PCTR_0_PCTRS15 0x00660
345
+#define V3D_V3_PCTR_0_PCTRSX(x) (V3D_V3_PCTR_0_PCTRS0 + \
346
+ 4 * (x))
347
+/* Each src reg muxes four counters each. */
348
+#define V3D_V4_PCTR_0_SRC_0_3 0x00660
349
+#define V3D_V4_PCTR_0_SRC_28_31 0x0067c
350
+# define V3D_PCTR_S0_MASK V3D_MASK(6, 0)
351
+# define V3D_PCTR_S0_SHIFT 0
352
+# define V3D_PCTR_S1_MASK V3D_MASK(14, 8)
353
+# define V3D_PCTR_S1_SHIFT 8
354
+# define V3D_PCTR_S2_MASK V3D_MASK(22, 16)
355
+# define V3D_PCTR_S2_SHIFT 16
356
+# define V3D_PCTR_S3_MASK V3D_MASK(30, 24)
357
+# define V3D_PCTR_S3_SHIFT 24
358
+# define V3D_PCTR_CYCLE_COUNT 32
359
+
360
+/* Output values of the counters. */
361
+#define V3D_PCTR_0_PCTR0 0x00680
362
+#define V3D_PCTR_0_PCTR31 0x006fc
363
+#define V3D_PCTR_0_PCTRX(x) (V3D_PCTR_0_PCTR0 + \
364
+ 4 * (x))
270365 #define V3D_GMP_STATUS 0x00800
271366 # define V3D_GMP_STATUS_GMPRST BIT(31)
272367 # define V3D_GMP_STATUS_WR_COUNT_MASK V3D_MASK(30, 24)
....@@ -293,4 +388,110 @@
293388 #define V3D_GMP_PRESERVE_LOAD 0x00818
294389 #define V3D_GMP_VALID_LINES 0x00820
295390
391
+#define V3D_CSD_STATUS 0x00900
392
+# define V3D_CSD_STATUS_NUM_COMPLETED_MASK V3D_MASK(11, 4)
393
+# define V3D_CSD_STATUS_NUM_COMPLETED_SHIFT 4
394
+# define V3D_CSD_STATUS_NUM_ACTIVE_MASK V3D_MASK(3, 2)
395
+# define V3D_CSD_STATUS_NUM_ACTIVE_SHIFT 2
396
+# define V3D_CSD_STATUS_HAVE_CURRENT_DISPATCH BIT(1)
397
+# define V3D_CSD_STATUS_HAVE_QUEUED_DISPATCH BIT(0)
398
+
399
+#define V3D_CSD_QUEUED_CFG0 0x00904
400
+# define V3D_CSD_QUEUED_CFG0_NUM_WGS_X_MASK V3D_MASK(31, 16)
401
+# define V3D_CSD_QUEUED_CFG0_NUM_WGS_X_SHIFT 16
402
+# define V3D_CSD_QUEUED_CFG0_WG_X_OFFSET_MASK V3D_MASK(15, 0)
403
+# define V3D_CSD_QUEUED_CFG0_WG_X_OFFSET_SHIFT 0
404
+
405
+#define V3D_CSD_QUEUED_CFG1 0x00908
406
+# define V3D_CSD_QUEUED_CFG1_NUM_WGS_Y_MASK V3D_MASK(31, 16)
407
+# define V3D_CSD_QUEUED_CFG1_NUM_WGS_Y_SHIFT 16
408
+# define V3D_CSD_QUEUED_CFG1_WG_Y_OFFSET_MASK V3D_MASK(15, 0)
409
+# define V3D_CSD_QUEUED_CFG1_WG_Y_OFFSET_SHIFT 0
410
+
411
+#define V3D_CSD_QUEUED_CFG2 0x0090c
412
+# define V3D_CSD_QUEUED_CFG2_NUM_WGS_Z_MASK V3D_MASK(31, 16)
413
+# define V3D_CSD_QUEUED_CFG2_NUM_WGS_Z_SHIFT 16
414
+# define V3D_CSD_QUEUED_CFG2_WG_Z_OFFSET_MASK V3D_MASK(15, 0)
415
+# define V3D_CSD_QUEUED_CFG2_WG_Z_OFFSET_SHIFT 0
416
+
417
+#define V3D_CSD_QUEUED_CFG3 0x00910
418
+# define V3D_CSD_QUEUED_CFG3_OVERLAP_WITH_PREV BIT(26)
419
+# define V3D_CSD_QUEUED_CFG3_MAX_SG_ID_MASK V3D_MASK(25, 20)
420
+# define V3D_CSD_QUEUED_CFG3_MAX_SG_ID_SHIFT 20
421
+# define V3D_CSD_QUEUED_CFG3_BATCHES_PER_SG_M1_MASK V3D_MASK(19, 12)
422
+# define V3D_CSD_QUEUED_CFG3_BATCHES_PER_SG_M1_SHIFT 12
423
+# define V3D_CSD_QUEUED_CFG3_WGS_PER_SG_MASK V3D_MASK(11, 8)
424
+# define V3D_CSD_QUEUED_CFG3_WGS_PER_SG_SHIFT 8
425
+# define V3D_CSD_QUEUED_CFG3_WG_SIZE_MASK V3D_MASK(7, 0)
426
+# define V3D_CSD_QUEUED_CFG3_WG_SIZE_SHIFT 0
427
+
428
+/* Number of batches, minus 1 */
429
+#define V3D_CSD_QUEUED_CFG4 0x00914
430
+
431
+/* Shader address, pnan, singleseg, threading, like a shader record. */
432
+#define V3D_CSD_QUEUED_CFG5 0x00918
433
+
434
+/* Uniforms address (4 byte aligned) */
435
+#define V3D_CSD_QUEUED_CFG6 0x0091c
436
+
437
+#define V3D_CSD_CURRENT_CFG0 0x00920
438
+#define V3D_CSD_CURRENT_CFG1 0x00924
439
+#define V3D_CSD_CURRENT_CFG2 0x00928
440
+#define V3D_CSD_CURRENT_CFG3 0x0092c
441
+#define V3D_CSD_CURRENT_CFG4 0x00930
442
+#define V3D_CSD_CURRENT_CFG5 0x00934
443
+#define V3D_CSD_CURRENT_CFG6 0x00938
444
+
445
+#define V3D_CSD_CURRENT_ID0 0x0093c
446
+# define V3D_CSD_CURRENT_ID0_WG_X_MASK V3D_MASK(31, 16)
447
+# define V3D_CSD_CURRENT_ID0_WG_X_SHIFT 16
448
+# define V3D_CSD_CURRENT_ID0_WG_IN_SG_MASK V3D_MASK(11, 8)
449
+# define V3D_CSD_CURRENT_ID0_WG_IN_SG_SHIFT 8
450
+# define V3D_CSD_CURRENT_ID0_L_IDX_MASK V3D_MASK(7, 0)
451
+# define V3D_CSD_CURRENT_ID0_L_IDX_SHIFT 0
452
+
453
+#define V3D_CSD_CURRENT_ID1 0x00940
454
+# define V3D_CSD_CURRENT_ID0_WG_Z_MASK V3D_MASK(31, 16)
455
+# define V3D_CSD_CURRENT_ID0_WG_Z_SHIFT 16
456
+# define V3D_CSD_CURRENT_ID0_WG_Y_MASK V3D_MASK(15, 0)
457
+# define V3D_CSD_CURRENT_ID0_WG_Y_SHIFT 0
458
+
459
+#define V3D_ERR_FDBGO 0x00f04
460
+#define V3D_ERR_FDBGB 0x00f08
461
+#define V3D_ERR_FDBGR 0x00f0c
462
+
463
+#define V3D_ERR_FDBGS 0x00f10
464
+# define V3D_ERR_FDBGS_INTERPZ_IP_STALL BIT(17)
465
+# define V3D_ERR_FDBGS_DEPTHO_FIFO_IP_STALL BIT(16)
466
+# define V3D_ERR_FDBGS_XYNRM_IP_STALL BIT(14)
467
+# define V3D_ERR_FDBGS_EZREQ_FIFO_OP_VALID BIT(13)
468
+# define V3D_ERR_FDBGS_QXYF_FIFO_OP_VALID BIT(12)
469
+# define V3D_ERR_FDBGS_QXYF_FIFO_OP_LAST BIT(11)
470
+# define V3D_ERR_FDBGS_EZTEST_ANYQVALID BIT(7)
471
+# define V3D_ERR_FDBGS_EZTEST_PASS BIT(6)
472
+# define V3D_ERR_FDBGS_EZTEST_QREADY BIT(5)
473
+# define V3D_ERR_FDBGS_EZTEST_VLF_OKNOVALID BIT(4)
474
+# define V3D_ERR_FDBGS_EZTEST_QSTALL BIT(3)
475
+# define V3D_ERR_FDBGS_EZTEST_IP_VLFSTALL BIT(2)
476
+# define V3D_ERR_FDBGS_EZTEST_IP_PRSTALL BIT(1)
477
+# define V3D_ERR_FDBGS_EZTEST_IP_QSTALL BIT(0)
478
+
479
+#define V3D_ERR_STAT 0x00f20
480
+# define V3D_ERR_L2CARE BIT(15)
481
+# define V3D_ERR_VCMBE BIT(14)
482
+# define V3D_ERR_VCMRE BIT(13)
483
+# define V3D_ERR_VCDI BIT(12)
484
+# define V3D_ERR_VCDE BIT(11)
485
+# define V3D_ERR_VDWE BIT(10)
486
+# define V3D_ERR_VPMEAS BIT(9)
487
+# define V3D_ERR_VPMEFNA BIT(8)
488
+# define V3D_ERR_VPMEWNA BIT(7)
489
+# define V3D_ERR_VPMERNA BIT(6)
490
+# define V3D_ERR_VPMERR BIT(5)
491
+# define V3D_ERR_VPMEWR BIT(4)
492
+# define V3D_ERR_VPAERRGL BIT(3)
493
+# define V3D_ERR_VPAEBRGL BIT(2)
494
+# define V3D_ERR_VPAERGS BIT(1)
495
+# define V3D_ERR_VPAEABB BIT(0)
496
+
296497 #endif /* V3D_REGS_H */