Adds a7xx changes for the kernel driver. Signed-off-by: Jonathan Marek <jonathan@xxxxxxxx> --- 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 <robdclark@xxxxxxxxx> (robclark) +- Ilia Mirkin <imirkin@xxxxxxxxxxxx> (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 <robdclark@xxxxxxxxx> (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