2022-03-28 16:45:35

by Jonathan Marek

[permalink] [raw]
Subject: [PATCH 3/4] drm/msm/adreno: update headers

Adds a7xx changes for the kernel driver.

Signed-off-by: Jonathan Marek <[email protected]>
---
drivers/gpu/drm/msm/adreno/a7xx.xml.h | 666 ++++++++++++++++++++
drivers/gpu/drm/msm/adreno/adreno_pm4.xml.h | 63 +-
2 files changed, 716 insertions(+), 13 deletions(-)
create mode 100644 drivers/gpu/drm/msm/adreno/a7xx.xml.h

diff --git a/drivers/gpu/drm/msm/adreno/a7xx.xml.h b/drivers/gpu/drm/msm/adreno/a7xx.xml.h
new file mode 100644
index 0000000000000..45ef4289ac52b
--- /dev/null
+++ b/drivers/gpu/drm/msm/adreno/a7xx.xml.h
@@ -0,0 +1,666 @@
+#ifndef A7XX_XML
+#define A7XX_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://github.com/freedreno/envytools/
+git clone https://github.com/freedreno/envytools.git
+
+The rules-ng-ng source files this header was generated from are:
+- freedreno/registers/adreno.xml ( 627 bytes, from 2022-03-27 15:04:47)
+- freedreno/registers/freedreno_copyright.xml ( 1572 bytes, from 2020-11-18 00:17:12)
+- freedreno/registers/adreno/a2xx.xml ( 90810 bytes, from 2021-08-06 17:44:41)
+- freedreno/registers/adreno/adreno_common.xml ( 14631 bytes, from 2022-03-27 14:52:08)
+- freedreno/registers/adreno/adreno_pm4.xml ( 70334 bytes, from 2022-03-27 20:01:26)
+- freedreno/registers/adreno/a3xx.xml ( 84231 bytes, from 2021-08-27 13:03:56)
+- freedreno/registers/adreno/a4xx.xml ( 113474 bytes, from 2022-03-22 19:23:46)
+- freedreno/registers/adreno/a5xx.xml ( 149512 bytes, from 2022-03-21 16:05:18)
+- freedreno/registers/adreno/a6xx.xml ( 184954 bytes, from 2022-03-22 19:23:46)
+- freedreno/registers/adreno/a6xx_gmu.xml ( 11331 bytes, from 2021-08-06 17:44:41)
+- freedreno/registers/adreno/a7xx.xml ( 20004 bytes, from 2022-03-27 20:01:42)
+- freedreno/registers/adreno/ocmem.xml ( 1773 bytes, from 2020-11-18 00:17:12)
+- freedreno/registers/adreno/adreno_control_regs.xml ( 6038 bytes, from 2022-03-22 19:23:46)
+- freedreno/registers/adreno/adreno_pipe_regs.xml ( 2924 bytes, from 2022-03-22 19:23:46)
+
+Copyright (C) 2013-2022 by the following authors:
+- Rob Clark <[email protected]> (robclark)
+- Ilia Mirkin <[email protected]> (imirkin)
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+enum a7xx_event {
+ CCU_INVALIDATE_DEPTH = 24,
+ CCU_INVALIDATE_COLOR = 25,
+ CCU_RESOLVE_CLEAN = 26,
+ CCU_FLUSH_DEPTH = 28,
+ CCU_FLUSH_COLOR = 29,
+ CCU_RESOLVE = 30,
+ CCU_END_RESOLVE_GROUP = 31,
+ CCU_CLEAN_DEPTH = 32,
+ CCU_CLEAN_COLOR = 33,
+ CACHE_RESET = 48,
+ CACHE_CLEAN = 49,
+ CACHE_FLUSH7 = 50,
+ CACHE_INVALIDATE7 = 51,
+};
+
+#define REG_A7XX_RBBM_GBIF_CLIENT_QOS_CNTL 0x00000011
+
+#define REG_A7XX_RBBM_GBIF_HALT 0x00000016
+
+#define REG_A7XX_RBBM_GBIF_HALT_ACK 0x00000017
+
+#define REG_A7XX_RBBM_INTERFACE_HANG_INT_CNTL 0x0000001f
+
+#define REG_A7XX_RBBM_INT_CLEAR_CMD 0x00000037
+
+#define REG_A7XX_RBBM_INT_0_MASK 0x00000038
+#define A7XX_RBBM_INT_0_MASK_GPUIDLE 0x00000001
+#define A7XX_RBBM_INT_0_MASK_AHBERROR 0x00000002
+#define A7XX_RBBM_INT_0_MASK_CPIPCINT0 0x00000010
+#define A7XX_RBBM_INT_0_MASK_CPIPCINT1 0x00000020
+#define A7XX_RBBM_INT_0_MASK_ATBASYNCFIFOOVERFLOW 0x00000040
+#define A7XX_RBBM_INT_0_MASK_GPCERROR 0x00000080
+#define A7XX_RBBM_INT_0_MASK_SWINTERRUPT 0x00000100
+#define A7XX_RBBM_INT_0_MASK_HWERROR 0x00000200
+#define A7XX_RBBM_INT_0_MASK_CCU_CLEAN_DEPTH_TS 0x00000400
+#define A7XX_RBBM_INT_0_MASK_CCU_CLEAN_COLOR_TS 0x00000800
+#define A7XX_RBBM_INT_0_MASK_CCU_RESOLVE_CLEAN_TS 0x00001000
+#define A7XX_RBBM_INT_0_MASK_PM4CPINTERRUPT 0x00008000
+#define A7XX_RBBM_INT_0_MASK_PM4CPINTERRUPTLPAC 0x00010000
+#define A7XX_RBBM_INT_0_MASK_RB_DONE_TS 0x00020000
+#define A7XX_RBBM_INT_0_MASK_CACHE_CLEAN_TS 0x00100000
+#define A7XX_RBBM_INT_0_MASK_CACHE_CLEAN_TS_LPAC 0x00200000
+#define A7XX_RBBM_INT_0_MASK_ATBBUSOVERFLOW 0x00400000
+#define A7XX_RBBM_INT_0_MASK_HANGDETECTINTERRUPT 0x00800000
+#define A7XX_RBBM_INT_0_MASK_OUTOFBOUNDACCESS 0x01000000
+#define A7XX_RBBM_INT_0_MASK_UCHETRAPINTERRUPT 0x02000000
+#define A7XX_RBBM_INT_0_MASK_DEBUGBUSINTERRUPT0 0x04000000
+#define A7XX_RBBM_INT_0_MASK_DEBUGBUSINTERRUPT1 0x08000000
+#define A7XX_RBBM_INT_0_MASK_TSBWRITEERROR 0x10000000
+#define A7XX_RBBM_INT_0_MASK_ISDBCPUIRQ 0x40000000
+#define A7XX_RBBM_INT_0_MASK_ISDBUNDERDEBUG 0x80000000
+
+#define REG_A7XX_RBBM_INT_2_MASK 0x0000003a
+
+#define REG_A7XX_RBBM_SP_HYST_CNT 0x00000042
+
+#define REG_A7XX_RBBM_SW_RESET_CMD 0x00000043
+
+#define REG_A7XX_RBBM_RAC_THRESHOLD_CNT 0x00000044
+
+#define REG_A7XX_RBBM_CLOCK_CNTL 0x000000ae
+
+#define REG_A7XX_RBBM_CLOCK_CNTL_SP0 0x000000b0
+
+#define REG_A7XX_RBBM_CLOCK_CNTL2_SP0 0x000000b4
+
+#define REG_A7XX_RBBM_CLOCK_DELAY_SP0 0x000000b8
+
+#define REG_A7XX_RBBM_CLOCK_HYST_SP0 0x000000bc
+
+#define REG_A7XX_RBBM_CLOCK_CNTL_TP0 0x000000c0
+
+#define REG_A7XX_RBBM_CLOCK_CNTL2_TP0 0x000000c4
+
+#define REG_A7XX_RBBM_CLOCK_CNTL3_TP0 0x000000c8
+
+#define REG_A7XX_RBBM_CLOCK_CNTL4_TP0 0x000000cc
+
+#define REG_A7XX_RBBM_CLOCK_DELAY_TP0 0x000000d0
+
+#define REG_A7XX_RBBM_CLOCK_DELAY2_TP0 0x000000d4
+
+#define REG_A7XX_RBBM_CLOCK_DELAY3_TP0 0x000000d8
+
+#define REG_A7XX_RBBM_CLOCK_DELAY4_TP0 0x000000dc
+
+#define REG_A7XX_RBBM_CLOCK_HYST_TP0 0x000000e0
+
+#define REG_A7XX_RBBM_CLOCK_HYST2_TP0 0x000000e4
+
+#define REG_A7XX_RBBM_CLOCK_HYST3_TP0 0x000000e8
+
+#define REG_A7XX_RBBM_CLOCK_HYST4_TP0 0x000000ec
+
+#define REG_A7XX_RBBM_CLOCK_CNTL_RB0 0x000000f0
+
+#define REG_A7XX_RBBM_CLOCK_CNTL2_RB0 0x000000f4
+
+#define REG_A7XX_RBBM_CLOCK_CNTL_CCU0 0x000000f8
+
+#define REG_A7XX_RBBM_CLOCK_HYST_RB_CCU0 0x00000100
+
+#define REG_A7XX_RBBM_CLOCK_CNTL_RAC 0x00000104
+
+#define REG_A7XX_RBBM_CLOCK_CNTL2_RAC 0x00000105
+
+#define REG_A7XX_RBBM_CLOCK_DELAY_RAC 0x00000106
+
+#define REG_A7XX_RBBM_CLOCK_HYST_RAC 0x00000107
+
+#define REG_A7XX_RBBM_CLOCK_CNTL_TSE_RAS_RBBM 0x00000108
+
+#define REG_A7XX_RBBM_CLOCK_DELAY_TSE_RAS_RBBM 0x00000109
+
+#define REG_A7XX_RBBM_CLOCK_HYST_TSE_RAS_RBBM 0x0000010a
+
+#define REG_A7XX_RBBM_CLOCK_CNTL_UCHE 0x0000010b
+
+#define REG_A7XX_RBBM_CLOCK_DELAY_UCHE 0x0000010f
+
+#define REG_A7XX_RBBM_CLOCK_HYST_UCHE 0x00000110
+
+#define REG_A7XX_RBBM_CLOCK_MODE_VFD 0x00000111
+
+#define REG_A7XX_RBBM_CLOCK_DELAY_VFD 0x00000112
+
+#define REG_A7XX_RBBM_CLOCK_HYST_VFD 0x00000113
+
+#define REG_A7XX_RBBM_CLOCK_MODE_GPC 0x00000114
+
+#define REG_A7XX_RBBM_CLOCK_DELAY_GPC 0x00000115
+
+#define REG_A7XX_RBBM_CLOCK_HYST_GPC 0x00000116
+
+#define REG_A7XX_RBBM_CLOCK_DELAY_HLSQ_2 0x00000117
+
+#define REG_A7XX_RBBM_CLOCK_CNTL_GMU_GX 0x00000118
+
+#define REG_A7XX_RBBM_CLOCK_DELAY_GMU_GX 0x00000119
+
+#define REG_A7XX_RBBM_CLOCK_HYST_GMU_GX 0x0000011a
+
+#define REG_A7XX_RBBM_CLOCK_MODE_HLSQ 0x0000011b
+
+#define REG_A7XX_RBBM_CLOCK_DELAY_HLSQ 0x0000011c
+
+#define REG_A7XX_RBBM_CLOCK_HYST_HLSQ 0x0000011d
+
+#define REG_A7XX_RBBM_INT_0_STATUS 0x00000201
+
+#define REG_A7XX_RBBM_STATUS 0x00000210
+#define A7XX_RBBM_STATUS_CPAHBBUSYCXMASTER 0x00000001
+#define A7XX_RBBM_STATUS_CPAHBBUSYCPMASTER 0x00000002
+#define A7XX_RBBM_STATUS_CPBUSY 0x00000004
+#define A7XX_RBBM_STATUS_GFXDBGCBUSY 0x00000008
+#define A7XX_RBBM_STATUS_VBIFGXFPARTBUSY 0x00000010
+#define A7XX_RBBM_STATUS_TSEBUSY 0x00000020
+#define A7XX_RBBM_STATUS_RASBUSY 0x00000040
+#define A7XX_RBBM_STATUS_RBBUSY 0x00000080
+#define A7XX_RBBM_STATUS_CCUBUSY 0x00000100
+#define A7XX_RBBM_STATUS_A2DBUSY 0x00000200
+#define A7XX_RBBM_STATUS_LRZBUSY 0x00000400
+#define A7XX_RBBM_STATUS_COMDCOMBUSY 0x00000800
+#define A7XX_RBBM_STATUS_PCDCALLBUSY 0x00001000
+#define A7XX_RBBM_STATUS_PCVSDBUSY 0x00002000
+#define A7XX_RBBM_STATUS_TESSBUSY 0x00004000
+#define A7XX_RBBM_STATUS_VFDBUSY 0x00008000
+#define A7XX_RBBM_STATUS_VPCBUSY 0x00010000
+#define A7XX_RBBM_STATUS_UCHEBUSY 0x00020000
+#define A7XX_RBBM_STATUS_SPBUSY 0x00040000
+#define A7XX_RBBM_STATUS_TPL1BUSY 0x00080000
+#define A7XX_RBBM_STATUS_VSCBUSY 0x00100000
+#define A7XX_RBBM_STATUS_HLSQBUSY 0x00200000
+#define A7XX_RBBM_STATUS_GPUBUSYIGNAHBCP 0x00400000
+#define A7XX_RBBM_STATUS_GPUBUSYIGNAHB 0x00800000
+
+#define REG_A7XX_RBBM_STATUS3 0x00000213
+
+#define REG_A7XX_RBBM_CLOCK_MODE_CP 0x00000260
+
+#define REG_A7XX_RBBM_CLOCK_MODE_BV_LRZ 0x00000284
+
+#define REG_A7XX_RBBM_CLOCK_MODE_BV_GRAS 0x00000285
+
+#define REG_A7XX_RBBM_CLOCK_MODE2_GRAS 0x00000286
+
+#define REG_A7XX_RBBM_CLOCK_MODE_BV_VFD 0x00000287
+
+#define REG_A7XX_RBBM_CLOCK_MODE_BV_GPC 0x00000288
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_CP(uint32_t i0) { return 0x00000300 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_RBBM(uint32_t i0) { return 0x0000031c + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_PC(uint32_t i0) { return 0x00000324 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_VFD(uint32_t i0) { return 0x00000334 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_HLSQ(uint32_t i0) { return 0x00000344 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_VPC(uint32_t i0) { return 0x00000350 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_CCU(uint32_t i0) { return 0x0000035c + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_TSE(uint32_t i0) { return 0x00000366 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_RAS(uint32_t i0) { return 0x0000036e + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_UCHE(uint32_t i0) { return 0x00000376 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_TP(uint32_t i0) { return 0x0000038e + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_SP(uint32_t i0) { return 0x000003a6 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_RB(uint32_t i0) { return 0x000003d6 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_VSC(uint32_t i0) { return 0x000003e6 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_LRZ(uint32_t i0) { return 0x000003ea + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_CMP(uint32_t i0) { return 0x000003f2 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_UFC(uint32_t i0) { return 0x000003fa + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR2_HLSQ(uint32_t i0) { return 0x00000410 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR2_CP(uint32_t i0) { return 0x0000041c + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR2_SP(uint32_t i0) { return 0x0000042a + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR2_TP(uint32_t i0) { return 0x00000442 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR2_UFC(uint32_t i0) { return 0x0000044e + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_BV_PC(uint32_t i0) { return 0x00000460 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_BV_VFD(uint32_t i0) { return 0x00000470 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_BV_VPC(uint32_t i0) { return 0x00000480 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_BV_TSE(uint32_t i0) { return 0x0000048c + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_BV_RAS(uint32_t i0) { return 0x00000494 + 0x2*i0; }
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_BV_LRZ(uint32_t i0) { return 0x0000049c + 0x2*i0; }
+
+#define REG_A7XX_RBBM_PERFCTR_CNTL 0x00000500
+
+static inline uint32_t REG_A7XX_RBBM_PERFCTR_RBBM_SEL(uint32_t i0) { return 0x00000507 + 0x1*i0; }
+
+#define REG_A7XX_RBBM_PERFCTR_GPU_BUSY_MASKED 0x0000050b
+
+#define REG_A7XX_RBBM_ISDB_CNT 0x00000533
+
+#define REG_A7XX_RBBM_NC_MODE_CNTL 0x00000534
+
+#define REG_A7XX_RBBM_SNAPSHOT_STATUS 0x00000535
+
+#define REG_A7XX_CP_RB_BASE 0x00000800
+
+#define REG_A7XX_CP_RB_CNTL 0x00000802
+
+#define REG_A7XX_CP_RB_RPTR_ADDR 0x00000804
+
+#define REG_A7XX_CP_RB_RPTR 0x00000806
+
+#define REG_A7XX_CP_RB_WPTR 0x00000807
+
+#define REG_A7XX_CP_SQE_CNTL 0x00000808
+
+#define REG_A7XX_CP_CP2GMU_STATUS 0x00000812
+
+#define REG_A7XX_CP_HW_FAULT 0x00000821
+
+#define REG_A7XX_CP_INTERRUPT_STATUS 0x00000823
+#define A7XX_CP_INTERRUPT_STATUS_OPCODEERROR 0x00000001
+#define A7XX_CP_INTERRUPT_STATUS_UCODEERROR 0x00000002
+#define A7XX_CP_INTERRUPT_STATUS_CPHWFAULT 0x00000004
+#define A7XX_CP_INTERRUPT_STATUS_REGISTERPROTECTION 0x00000010
+#define A7XX_CP_INTERRUPT_STATUS_VSDPARITYERROR 0x00000040
+#define A7XX_CP_INTERRUPT_STATUS_ILLEGALINSTRUCTION 0x00000080
+#define A7XX_CP_INTERRUPT_STATUS_OPCODEERRORLPAC 0x00000100
+#define A7XX_CP_INTERRUPT_STATUS_UCODEERRORLPAC 0x00000200
+#define A7XX_CP_INTERRUPT_STATUS_CPHWFAULTLPAC 0x00000400
+#define A7XX_CP_INTERRUPT_STATUS_REGISTERPROTECTIONLPAC 0x00000800
+#define A7XX_CP_INTERRUPT_STATUS_ILLEGALINSTRUCTIONLPAC 0x00001000
+#define A7XX_CP_INTERRUPT_STATUS_OPCODEERRORBV 0x00002000
+#define A7XX_CP_INTERRUPT_STATUS_UCODEERRORBV 0x00004000
+#define A7XX_CP_INTERRUPT_STATUS_CPHWFAULTBV 0x00008000
+#define A7XX_CP_INTERRUPT_STATUS_REGISTERPROTECTIONBV 0x00010000
+#define A7XX_CP_INTERRUPT_STATUS_ILLEGALINSTRUCTIONBV 0x00020000
+
+#define REG_A7XX_CP_PROTECT_STATUS 0x00000824
+
+#define REG_A7XX_CP_STATUS_1 0x00000825
+
+#define REG_A7XX_CP_SQE_INSTR_BASE 0x00000830
+
+#define REG_A7XX_CP_MISC_CNTL 0x00000840
+
+#define REG_A7XX_CP_CHICKEN_DBG 0x00000841
+
+#define REG_A7XX_CP_DBG_ECO_CNTL 0x00000843
+
+#define REG_A7XX_CP_APRIV_CNTL 0x00000844
+
+#define REG_A7XX_CP_PROTECT_CNTL 0x0000084f
+
+static inline uint32_t REG_A7XX_CP_PROTECT_REG(uint32_t i0) { return 0x00000850 + 0x1*i0; }
+
+#define REG_A7XX_CP_CONTEXT_SWITCH_CNTL 0x000008a0
+
+#define REG_A7XX_CP_CONTEXT_SWITCH_SMMU_INFO 0x000008a1
+
+#define REG_A7XX_CP_CONTEXT_SWITCH_PRIV_NON_SECURE_RESTORE_ADDR 0x000008a3
+
+#define REG_A7XX_CP_CONTEXT_SWITCH_PRIV_SECURE_RESTORE_ADDR 0x000008a5
+
+#define REG_A7XX_CP_CONTEXT_SWITCH_NON_PRIV_RESTORE_ADDR 0x000008a7
+
+#define REG_A7XX_CP_CONTEXT_SWITCH_LEVEL_STATUS 0x000008ab
+
+static inline uint32_t REG_A7XX_CP_PERFCTR_CP_SEL(uint32_t i0) { return 0x000008d0 + 0x1*i0; }
+
+static inline uint32_t REG_A7XX_CP_BV_PERFCTR_CP_SEL(uint32_t i0) { return 0x000008e0 + 0x1*i0; }
+
+#define REG_A7XX_CP_CRASH_SCRIPT_BASE 0x00000900
+
+#define REG_A7XX_CP_CRASH_DUMP_CNTL 0x00000902
+
+#define REG_A7XX_CP_CRASH_DUMP_STATUS 0x00000903
+
+#define REG_A7XX_CP_SQE_STAT_ADDR 0x00000908
+
+#define REG_A7XX_CP_SQE_STAT_DATA 0x00000909
+
+#define REG_A7XX_CP_DRAW_STATE_ADDR 0x0000090a
+
+#define REG_A7XX_CP_DRAW_STATE_DATA 0x0000090b
+
+#define REG_A7XX_CP_ROQ_DBG_ADDR 0x0000090c
+
+#define REG_A7XX_CP_ROQ_DBG_DATA 0x0000090d
+
+#define REG_A7XX_CP_MEM_POOL_DBG_ADDR 0x0000090e
+
+#define REG_A7XX_CP_MEM_POOL_DBG_DATA 0x0000090f
+
+#define REG_A7XX_CP_SQE_UCODE_DBG_ADDR 0x00000910
+
+#define REG_A7XX_CP_SQE_UCODE_DBG_DATA 0x00000911
+
+#define REG_A7XX_CP_IB1_BASE 0x00000928
+
+#define REG_A7XX_CP_IB1_REM_SIZE 0x0000092a
+
+#define REG_A7XX_CP_IB2_BASE 0x0000092b
+
+#define REG_A7XX_CP_IB2_REM_SIZE 0x0000092d
+
+#define REG_A7XX_CP_ALWAYS_ON_COUNTER 0x00000980
+
+#define REG_A7XX_CP_AHB_CNTL 0x0000098d
+
+#define REG_A7XX_CP_APERTURE_CNTL_HOST 0x00000a00
+
+#define REG_A7XX_CP_APERTURE_CNTL_CD 0x00000a03
+
+#define REG_A7XX_CP_BV_PROTECT_STATUS 0x00000a61
+
+#define REG_A7XX_CP_BV_HW_FAULT 0x00000a64
+
+#define REG_A7XX_CP_BV_DRAW_STATE_ADDR 0x00000a81
+
+#define REG_A7XX_CP_BV_DRAW_STATE_DATA 0x00000a82
+
+#define REG_A7XX_CP_BV_ROQ_DBG_ADDR 0x00000a83
+
+#define REG_A7XX_CP_BV_ROQ_DBG_DATA 0x00000a84
+
+#define REG_A7XX_CP_BV_SQE_UCODE_DBG_ADDR 0x00000a85
+
+#define REG_A7XX_CP_BV_SQE_UCODE_DBG_DATA 0x00000a86
+
+#define REG_A7XX_CP_BV_SQE_STAT_ADDR 0x00000a87
+
+#define REG_A7XX_CP_BV_SQE_STAT_DATA 0x00000a88
+
+#define REG_A7XX_CP_BV_MEM_POOL_DBG_ADDR 0x00000a96
+
+#define REG_A7XX_CP_BV_MEM_POOL_DBG_DATA 0x00000a97
+
+#define REG_A7XX_CP_BV_RB_RPTR_ADDR 0x00000a98
+
+#define REG_A7XX_CP_RESOURCE_TBL_DBG_ADDR 0x00000a9a
+
+#define REG_A7XX_CP_RESOURCE_TBL_DBG_DATA 0x00000a9b
+
+#define REG_A7XX_CP_BV_APRIV_CNTL 0x00000ad0
+
+#define REG_A7XX_CP_BV_CHICKEN_DBG 0x00000ada
+
+#define REG_A7XX_CP_LPAC_DRAW_STATE_ADDR 0x00000b0a
+
+#define REG_A7XX_CP_LPAC_DRAW_STATE_DATA 0x00000b0b
+
+#define REG_A7XX_CP_LPAC_ROQ_DBG_ADDR 0x00000b0c
+
+#define REG_A7XX_CP_SQE_AC_UCODE_DBG_ADDR 0x00000b27
+
+#define REG_A7XX_CP_SQE_AC_UCODE_DBG_DATA 0x00000b28
+
+#define REG_A7XX_CP_SQE_AC_STAT_ADDR 0x00000b29
+
+#define REG_A7XX_CP_SQE_AC_STAT_DATA 0x00000b2a
+
+#define REG_A7XX_CP_LPAC_APRIV_CNTL 0x00000b31
+
+#define REG_A7XX_CP_LPAC_ROQ_DBG_DATA 0x00000b35
+
+#define REG_A7XX_CP_LPAC_FIFO_DBG_DATA 0x00000b36
+
+#define REG_A7XX_CP_LPAC_FIFO_DBG_ADDR 0x00000b40
+
+static inline uint32_t REG_A7XX_VSC_PERFCTR_VSC_SEL(uint32_t i0) { return 0x00000cd8 + 0x1*i0; }
+
+#define REG_A7XX_UCHE_MODE_CNTL 0x00000e01
+
+#define REG_A7XX_UCHE_WRITE_THRU_BASE 0x00000e07
+
+#define REG_A7XX_UCHE_TRAP_BASE 0x00000e09
+
+#define REG_A7XX_UCHE_GMEM_RANGE_MIN 0x00000e0b
+
+#define REG_A7XX_UCHE_GMEM_RANGE_MAX 0x00000e0d
+
+#define REG_A7XX_UCHE_CACHE_WAYS 0x00000e17
+
+#define REG_A7XX_UCHE_CLIENT_PF 0x00000e19
+
+static inline uint32_t REG_A7XX_UCHE_PERFCTR_UCHE_SEL(uint32_t i0) { return 0x00000e1c + 0x1*i0; }
+
+#define REG_A7XX_UCHE_GBIF_GX_CONFIG 0x00000e3a
+
+#define REG_A7XX_UCHE_CMDQ_CONFIG 0x00000e3c
+
+#define REG_A7XX_PDC_GPU_ENABLE_PDC 0x00001140
+
+#define REG_A7XX_PDC_GPU_SEQ_START_ADDR 0x00001148
+
+#define REG_A7XX_VBIF_XIN_HALT_CTRL1 0x00003081
+
+#define REG_A7XX_VBIF_TEST_BUS_OUT_CTRL 0x00003084
+
+#define REG_A7XX_VBIF_TEST_BUS1_CTRL0 0x00003085
+
+#define REG_A7XX_VBIF_TEST_BUS1_CTRL1 0x00003086
+
+#define REG_A7XX_VBIF_TEST_BUS2_CTRL0 0x00003087
+
+#define REG_A7XX_VBIF_TEST_BUS2_CTRL1 0x00003088
+
+#define REG_A7XX_VBIF_TEST_BUS_OUT 0x0000308c
+
+#define REG_A7XX_VBIF_PERF_CNT_SEL0 0x000030d0
+
+#define REG_A7XX_VBIF_PERF_CNT_SEL1 0x000030d1
+
+#define REG_A7XX_VBIF_PERF_CNT_SEL2 0x000030d2
+
+#define REG_A7XX_VBIF_PERF_CNT_SEL3 0x000030d3
+
+#define REG_A7XX_VBIF_PERF_CNT_LOW0 0x000030d8
+
+#define REG_A7XX_VBIF_PERF_CNT_LOW1 0x000030d9
+
+#define REG_A7XX_VBIF_PERF_CNT_LOW2 0x000030da
+
+#define REG_A7XX_VBIF_PERF_CNT_LOW3 0x000030db
+
+#define REG_A7XX_VBIF_PERF_CNT_HIGH0 0x000030e0
+
+#define REG_A7XX_VBIF_PERF_CNT_HIGH1 0x000030e1
+
+#define REG_A7XX_VBIF_PERF_CNT_HIGH2 0x000030e2
+
+#define REG_A7XX_VBIF_PERF_CNT_HIGH3 0x000030e3
+
+#define REG_A7XX_VBIF_PERF_PWR_CNT_EN0 0x00003100
+
+#define REG_A7XX_VBIF_PERF_PWR_CNT_EN1 0x00003101
+
+#define REG_A7XX_VBIF_PERF_PWR_CNT_EN2 0x00003102
+
+#define REG_A7XX_VBIF_PERF_PWR_CNT_LOW0 0x00003110
+
+#define REG_A7XX_VBIF_PERF_PWR_CNT_LOW1 0x00003111
+
+#define REG_A7XX_VBIF_PERF_PWR_CNT_LOW2 0x00003112
+
+#define REG_A7XX_VBIF_PERF_PWR_CNT_HIGH0 0x00003118
+
+#define REG_A7XX_VBIF_PERF_PWR_CNT_HIGH1 0x00003119
+
+#define REG_A7XX_VBIF_PERF_PWR_CNT_HIGH2 0x0000311a
+
+#define REG_A7XX_GBIF_SCACHE_CNTL0 0x00003c01
+
+#define REG_A7XX_GBIF_SCACHE_CNTL1 0x00003c02
+
+#define REG_A7XX_GBIF_QSB_SIDE0 0x00003c03
+
+#define REG_A7XX_GBIF_QSB_SIDE1 0x00003c04
+
+#define REG_A7XX_GBIF_QSB_SIDE2 0x00003c05
+
+#define REG_A7XX_GBIF_QSB_SIDE3 0x00003c06
+
+#define REG_A7XX_GBIF_HALT 0x00003c45
+
+#define REG_A7XX_GBIF_HALT_ACK 0x00003c46
+
+#define REG_A7XX_GBIF_PERF_PWR_CNT_EN 0x00003cc0
+
+#define REG_A7XX_GBIF_PERF_PWR_CNT_CLR 0x00003cc1
+
+#define REG_A7XX_GBIF_PERF_CNT_SEL 0x00003cc2
+
+#define REG_A7XX_GBIF_PERF_PWR_CNT_SEL 0x00003cc3
+
+#define REG_A7XX_GBIF_PERF_CNT_LOW0 0x00003cc4
+
+#define REG_A7XX_GBIF_PERF_CNT_LOW1 0x00003cc5
+
+#define REG_A7XX_GBIF_PERF_CNT_LOW2 0x00003cc6
+
+#define REG_A7XX_GBIF_PERF_CNT_LOW3 0x00003cc7
+
+#define REG_A7XX_GBIF_PERF_CNT_HIGH0 0x00003cc8
+
+#define REG_A7XX_GBIF_PERF_CNT_HIGH1 0x00003cc9
+
+#define REG_A7XX_GBIF_PERF_CNT_HIGH2 0x00003cca
+
+#define REG_A7XX_GBIF_PERF_CNT_HIGH3 0x00003ccb
+
+#define REG_A7XX_GBIF_PWR_CNT_LOW0 0x00003ccc
+
+#define REG_A7XX_GBIF_PWR_CNT_LOW1 0x00003ccd
+
+#define REG_A7XX_GBIF_PWR_CNT_LOW2 0x00003cce
+
+#define REG_A7XX_GBIF_PWR_CNT_HIGH0 0x00003ccf
+
+#define REG_A7XX_GBIF_PWR_CNT_HIGH1 0x00003cd0
+
+#define REG_A7XX_GBIF_PWR_CNT_HIGH2 0x00003cd1
+
+#define REG_A7XX_GRAS_NC_MODE_CNTL 0x00008602
+
+static inline uint32_t REG_A7XX_GRAS_PERFCTR_TSE_SEL(uint32_t i0) { return 0x00008610 + 0x1*i0; }
+
+static inline uint32_t REG_A7XX_GRAS_PERFCTR_RAS_SEL(uint32_t i0) { return 0x00008614 + 0x1*i0; }
+
+static inline uint32_t REG_A7XX_GRAS_PERFCTR_LRZ_SEL(uint32_t i0) { return 0x00008618 + 0x1*i0; }
+
+#define REG_A7XX_RB_NC_MODE_CNTL 0x00008e08
+
+static inline uint32_t REG_A7XX_RB_PERFCTR_RB_SEL(uint32_t i0) { return 0x00008e10 + 0x1*i0; }
+
+static inline uint32_t REG_A7XX_RB_PERFCTR_CCU_SEL(uint32_t i0) { return 0x00008e18 + 0x1*i0; }
+
+static inline uint32_t REG_A7XX_RB_PERFCTR_CMP_SEL(uint32_t i0) { return 0x00008e2c + 0x1*i0; }
+
+static inline uint32_t REG_A7XX_RB_PERFCTR_UFC_SEL(uint32_t i0) { return 0x00008e30 + 0x1*i0; }
+
+#define REG_A7XX_RB_RB_SUB_BLOCK_SEL_CNTL_HOST 0x00008e3b
+
+#define REG_A7XX_RB_RB_SUB_BLOCK_SEL_CNTL_CD 0x00008e3d
+
+#define REG_A7XX_RB_CONTEXT_SWITCH_GMEM_SAVE_RESTORE 0x00008e50
+
+static inline uint32_t REG_A7XX_VPC_PERFCTR_VPC_SEL(uint32_t i0) { return 0x0000960b + 0x1*i0; }
+
+static inline uint32_t REG_A7XX_PC_PERFCTR_PC_SEL(uint32_t i0) { return 0x00009e42 + 0x1*i0; }
+
+static inline uint32_t REG_A7XX_VFD_PERFCTR_VFD_SEL(uint32_t i0) { return 0x0000a610 + 0x1*i0; }
+
+#define REG_A7XX_SP_NC_MODE_CNTL 0x0000ae02
+
+static inline uint32_t REG_A7XX_SP_PERFCTR_HLSQ_SEL(uint32_t i0) { return 0x0000ae60 + 0x1*i0; }
+
+#define REG_A7XX_SP_READ_SEL 0x0000ae6d
+
+static inline uint32_t REG_A7XX_SP_PERFCTR_SP_SEL(uint32_t i0) { return 0x0000ae80 + 0x1*i0; }
+
+#define REG_A7XX_TPL1_NC_MODE_CNTL 0x0000b604
+
+static inline uint32_t REG_A7XX_TPL1_PERFCTR_TP_SEL(uint32_t i0) { return 0x0000b610 + 0x1*i0; }
+
+#define REG_A7XX_SP_AHB_READ_APERTURE 0x0000c000
+
+#define REG_A7XX_RBBM_SECVID_TRUST_CNTL 0x0000f400
+
+#define REG_A7XX_RBBM_SECVID_TSB_TRUSTED_BASE 0x0000f800
+
+#define REG_A7XX_RBBM_SECVID_TSB_TRUSTED_SIZE 0x0000f802
+
+#define REG_A7XX_RBBM_SECVID_TSB_CNTL 0x0000f803
+
+#define REG_A7XX_RBBM_SECVID_TSB_STATUS 0x0000fc00
+
+
+#endif /* A7XX_XML */
diff --git a/drivers/gpu/drm/msm/adreno/adreno_pm4.xml.h b/drivers/gpu/drm/msm/adreno/adreno_pm4.xml.h
index 7aecf920f9b90..9eeedd261b733 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_pm4.xml.h
+++ b/drivers/gpu/drm/msm/adreno/adreno_pm4.xml.h
@@ -8,19 +8,20 @@ This file was generated by the rules-ng-ng headergen tool in this git repository
git clone https://github.com/freedreno/envytools.git

The rules-ng-ng source files this header was generated from are:
-- /home/robclark/tmp/mesa/src/freedreno/registers/adreno.xml ( 594 bytes, from 2021-01-30 18:25:22)
-- /home/robclark/tmp/mesa/src/freedreno/registers/freedreno_copyright.xml ( 1572 bytes, from 2020-12-31 19:26:32)
-- /home/robclark/tmp/mesa/src/freedreno/registers/adreno/a2xx.xml ( 90810 bytes, from 2021-06-21 15:24:24)
-- /home/robclark/tmp/mesa/src/freedreno/registers/adreno/adreno_common.xml ( 14609 bytes, from 2021-11-24 23:05:10)
-- /home/robclark/tmp/mesa/src/freedreno/registers/adreno/adreno_pm4.xml ( 69086 bytes, from 2022-03-03 16:41:33)
-- /home/robclark/tmp/mesa/src/freedreno/registers/adreno/a3xx.xml ( 84231 bytes, from 2021-11-24 23:05:10)
-- /home/robclark/tmp/mesa/src/freedreno/registers/adreno/a4xx.xml ( 113358 bytes, from 2022-01-31 23:06:21)
-- /home/robclark/tmp/mesa/src/freedreno/registers/adreno/a5xx.xml ( 149512 bytes, from 2022-01-31 23:06:21)
-- /home/robclark/tmp/mesa/src/freedreno/registers/adreno/a6xx.xml ( 184954 bytes, from 2022-03-03 16:41:33)
-- /home/robclark/tmp/mesa/src/freedreno/registers/adreno/a6xx_gmu.xml ( 11331 bytes, from 2021-07-22 15:21:56)
-- /home/robclark/tmp/mesa/src/freedreno/registers/adreno/ocmem.xml ( 1773 bytes, from 2021-01-30 18:25:22)
-- /home/robclark/tmp/mesa/src/freedreno/registers/adreno/adreno_control_regs.xml ( 6038 bytes, from 2021-07-22 15:21:56)
-- /home/robclark/tmp/mesa/src/freedreno/registers/adreno/adreno_pipe_regs.xml ( 2924 bytes, from 2021-07-22 15:21:56)
+- freedreno/registers/adreno.xml ( 627 bytes, from 2022-03-27 15:04:47)
+- freedreno/registers/freedreno_copyright.xml ( 1572 bytes, from 2020-11-18 00:17:12)
+- freedreno/registers/adreno/a2xx.xml ( 90810 bytes, from 2021-08-06 17:44:41)
+- freedreno/registers/adreno/adreno_common.xml ( 14631 bytes, from 2022-03-27 14:52:08)
+- freedreno/registers/adreno/adreno_pm4.xml ( 70177 bytes, from 2022-03-27 20:02:31)
+- freedreno/registers/adreno/a3xx.xml ( 84231 bytes, from 2021-08-27 13:03:56)
+- freedreno/registers/adreno/a4xx.xml ( 113474 bytes, from 2022-03-22 19:23:46)
+- freedreno/registers/adreno/a5xx.xml ( 149512 bytes, from 2022-03-21 16:05:18)
+- freedreno/registers/adreno/a6xx.xml ( 184954 bytes, from 2022-03-22 19:23:46)
+- freedreno/registers/adreno/a6xx_gmu.xml ( 11331 bytes, from 2021-08-06 17:44:41)
+- freedreno/registers/adreno/a7xx.xml ( 20004 bytes, from 2022-03-27 20:01:42)
+- freedreno/registers/adreno/ocmem.xml ( 1773 bytes, from 2020-11-18 00:17:12)
+- freedreno/registers/adreno/adreno_control_regs.xml ( 6038 bytes, from 2022-03-22 19:23:46)
+- freedreno/registers/adreno/adreno_pipe_regs.xml ( 2924 bytes, from 2022-03-22 19:23:46)

Copyright (C) 2013-2022 by the following authors:
- Rob Clark <[email protected]> (robclark)
@@ -301,6 +302,8 @@ enum adreno_pm4_type3_packets {
CP_REG_WRITE = 109,
CP_START_BIN = 80,
CP_END_BIN = 81,
+ CP_WAIT_TIMESTAMP = 20,
+ CP_THREAD_CONTROL = 23,
};

enum adreno_state_block {
@@ -482,6 +485,12 @@ enum reg_tracker {
UNK_EVENT_WRITE = 4,
};

+enum cp_thread {
+ CP_SET_THREAD_BR = 1,
+ CP_SET_THREAD_BV = 2,
+ CP_SET_THREAD_BOTH = 3,
+};
+
#define REG_CP_LOAD_STATE_0 0x00000000
#define CP_LOAD_STATE_0_DST_OFF__MASK 0x0000ffff
#define CP_LOAD_STATE_0_DST_OFF__SHIFT 0
@@ -2361,5 +2370,33 @@ static inline uint32_t CP_SMMU_TABLE_UPDATE_3_CONTEXTBANK(uint32_t val)

#define REG_CP_START_BIN_BODY_DWORDS 0x00000004

+#define REG_CP_THREAD_CONTROL_0 0x00000000
+#define CP_THREAD_CONTROL_0_THREAD__MASK 0x00000003
+#define CP_THREAD_CONTROL_0_THREAD__SHIFT 0
+static inline uint32_t CP_THREAD_CONTROL_0_THREAD(enum cp_thread val)
+{
+ return ((val) << CP_THREAD_CONTROL_0_THREAD__SHIFT) & CP_THREAD_CONTROL_0_THREAD__MASK;
+}
+#define CP_THREAD_CONTROL_0_CONCURRENT_BIN_DISABLE 0x08000000
+#define CP_THREAD_CONTROL_0_SYNC_THREADS 0x80000000
+
+#define REG_CP_WAIT_TIMESTAMP_0 0x00000000
+#define CP_WAIT_TIMESTAMP_0_REF__MASK 0x00000003
+#define CP_WAIT_TIMESTAMP_0_REF__SHIFT 0
+static inline uint32_t CP_WAIT_TIMESTAMP_0_REF(uint32_t val)
+{
+ return ((val) << CP_WAIT_TIMESTAMP_0_REF__SHIFT) & CP_WAIT_TIMESTAMP_0_REF__MASK;
+}
+#define CP_WAIT_TIMESTAMP_0_MEMSPACE__MASK 0x00000010
+#define CP_WAIT_TIMESTAMP_0_MEMSPACE__SHIFT 4
+static inline uint32_t CP_WAIT_TIMESTAMP_0_MEMSPACE(uint32_t val)
+{
+ return ((val) << CP_WAIT_TIMESTAMP_0_MEMSPACE__SHIFT) & CP_WAIT_TIMESTAMP_0_MEMSPACE__MASK;
+}
+
+#define REG_CP_WAIT_TIMESTAMP_ADDR 0x00000001
+
+#define REG_CP_WAIT_TIMESTAMP_VALUE 0x00000003
+

#endif /* ADRENO_PM4_XML */
--
2.26.1