M7350/kernel/drivers/gpu/msm/a4xx_reg.h
2024-09-09 08:57:42 +00:00

925 lines
33 KiB
C

/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef _A4XX_REG_H
#define _A4XX_REG_H
/* A4XX interrupt bits */
#define A4XX_INT_RBBM_GPU_IDLE 0
#define A4XX_INT_RBBM_AHB_ERROR 1
#define A4XX_INT_RBBM_REG_TIMEOUT 2
#define A4XX_INT_RBBM_ME_MS_TIMEOUT 3
#define A4XX_INT_RBBM_PFP_MS_TIMEOUT 4
#define A4XX_INT_RBBM_ETS_MS_TIMEOUT 5
#define A4XX_INT_RBBM_ASYNC_OVERFLOW 6
#define A4XX_INT_RBBM_GPC_ERR 7
#define A4XX_INT_CP_SW 8
#define A4XX_INT_CP_OPCODE_ERROR 9
#define A4XX_INT_CP_RESERVED_BIT_ERROR 10
#define A4XX_INT_CP_HW_FAULT 11
#define A4XX_INT_CP_DMA 12
#define A4XX_INT_CP_IB2_INT 13
#define A4XX_INT_CP_IB1_INT 14
#define A4XX_INT_CP_RB_INT 15
#define A4XX_INT_CP_REG_PROTECT_FAULT 16
#define A4XX_INT_CP_RB_DONE_TS 17
#define A4XX_INT_CP_VS_DONE_TS 18
#define A4XX_INT_CP_PS_DONE_TS 19
#define A4XX_INT_CACHE_FLUSH_TS 20
#define A4XX_INT_CP_AHB_ERROR_HALT 21
#define A4XX_INT_RBBM_ATB_BUS_OVERFLOW 22
#define A4XX_INT_MISC_HANG_DETECT 24
#define A4XX_INT_UCHE_OOB_ACCESS 25
#define A4XX_INT_RBBM_DPM_CALC_ERR 28
#define A4XX_INT_RBBM_DPM_EPOCH_ERR 29
#define A4XX_INT_RBBM_DPM_THERMAL_YELLOW_ERR 30
#define A4XX_INT_RBBM_DPM_THERMAL_RED_ERR 31
/* RB registers */
#define A4XX_RB_GMEM_BASE_ADDR 0xcc0
#define A4XX_RB_PERFCTR_RB_SEL_0 0xcc7
#define A4XX_RB_PERFCTR_RB_SEL_1 0xcc8
#define A4XX_RB_PERFCTR_RB_SEL_2 0xcc9
#define A4XX_RB_PERFCTR_RB_SEL_3 0xcca
#define A4XX_RB_PERFCTR_RB_SEL_4 0xccb
#define A4XX_RB_PERFCTR_RB_SEL_5 0xccc
#define A4XX_RB_PERFCTR_RB_SEL_6 0xccd
#define A4XX_RB_PERFCTR_RB_SEL_7 0xcce
enum a4xx_rb_perfctr_rb_sel {
RB_VALID_SAMPLES = 0x25,
RB_Z_FAIL = 0x28,
RB_S_FAIL = 0x29,
};
/* RBBM registers */
#define A4XX_RBBM_CLOCK_CTL_TP0 0x4
#define A4XX_RBBM_CLOCK_CTL_TP1 0x5
#define A4XX_RBBM_CLOCK_CTL_TP2 0x6
#define A4XX_RBBM_CLOCK_CTL_TP3 0x7
#define A4XX_RBBM_CLOCK_CTL2_TP0 0x8
#define A4XX_RBBM_CLOCK_CTL2_TP1 0x9
#define A4XX_RBBM_CLOCK_CTL2_TP2 0xA
#define A4XX_RBBM_CLOCK_CTL2_TP3 0xB
#define A4XX_RBBM_CLOCK_HYST_TP0 0xC
#define A4XX_RBBM_CLOCK_HYST_TP1 0xD
#define A4XX_RBBM_CLOCK_HYST_TP2 0xE
#define A4XX_RBBM_CLOCK_HYST_TP3 0xF
#define A4XX_RBBM_CLOCK_DELAY_TP0 0x10
#define A4XX_RBBM_CLOCK_DELAY_TP1 0x11
#define A4XX_RBBM_CLOCK_DELAY_TP2 0x12
#define A4XX_RBBM_CLOCK_DELAY_TP3 0x13
#define A4XX_RBBM_CLOCK_CTL_UCHE 0x14
#define A4XX_RBBM_CLOCK_CTL2_UCHE 0x15
#define A4XX_RBBM_CLOCK_CTL3_UCHE 0x16
#define A4XX_RBBM_CLOCK_CTL4_UCHE 0x17
#define A4XX_RBBM_CLOCK_HYST_UCHE 0x18
#define A4XX_RBBM_CLOCK_DELAY_UCHE 0x19
#define A4XX_RBBM_CLOCK_MODE_GPC 0x1a
#define A4XX_RBBM_CLOCK_DELAY_GPC 0x1b
#define A4XX_RBBM_CLOCK_HYST_GPC 0x1c
#define A4XX_RBBM_CLOCK_CTL_TSE_RAS_RBBM 0x1d
#define A4XX_RBBM_CLOCK_HYST_TSE_RAS_RBBM 0x1e
#define A4XX_RBBM_CLOCK_DELAY_TSE_RAS_RBBM 0x1f
#define A4XX_RBBM_CLOCK_CTL 0x20
#define A4XX_RBBM_SP_HYST_CNT 0x21
#define A4XX_RBBM_SW_RESET_CMD 0x22
#define A4XX_RBBM_AHB_CTL0 0x23
#define A4XX_RBBM_AHB_CTL1 0x24
#define A4XX_RBBM_AHB_CMD 0x25
#define A4XX_RBBM_WAIT_IDLE_CLOCKS_CTL 0x2b
#define A4XX_RBBM_INTERFACE_HANG_INT_CTL 0x2f
#define A4XX_RBBM_INT_CLEAR_CMD 0x36
#define A4XX_RBBM_INT_0_MASK 0x37
#define A4XX_RBBM_ALWAYSON_COUNTER_CNTL 0x3d
#define A4XX_RBBM_RBBM_CTL 0x3e
#define A4XX_RBBM_CLOCK_CTL2 0x42
#define A4XX_RBBM_BLOCK_SW_RESET_CMD 0x45
#define A4XX_RBBM_EXT_TRACE_BUS_CTL 0x49
#define A4XX_RBBM_CFG_DEBBUS_SEL_A 0x4a
#define A4XX_RBBM_CFG_DEBBUS_SEL_B 0x4b
#define A4XX_RBBM_CFG_DEBBUS_SEL_C 0x4c
#define A4XX_RBBM_CFG_DEBBUS_SEL_D 0x4d
#define A4XX_RBBM_CFG_DEBBUS_SEL_PING_INDEX_SHIFT 0
#define A4XX_RBBM_CFG_DEBBUS_SEL_PING_BLK_SEL_SHIFT 8
#define A4XX_RBBM_CFG_DEBBUS_SEL_PONG_INDEX_SHIFT 16
#define A4XX_RBBM_CFG_DEBBUS_SEL_PONG_BLK_SEL_SHIFT 24
#define A4XX_RBBM_CFG_DEBBUS_CTLT 0x4e
#define A4XX_RBBM_CFG_DEBBUS_CTLT_ENT_SHIFT 0
#define A4XX_RBBM_CFG_DEBBUS_CTLT_GRANU_SHIFT 12
#define A4XX_RBBM_CFG_DEBBUS_CTLT_SEGT_SHIFT 28
#define A4XX_RBBM_CFG_DEBBUS_CTLM 0x4f
#define A4XX_RBBM_CFG_DEBBUS_CTLT_ENABLE_SHIFT 24
#define A4XX_RBBM_CFG_DEBBUS_OPL 0x50
#define A4XX_RBBM_CFG_DEBBUS_OPE 0x51
#define A4XX_RBBM_CFG_DEBBUS_IVTL_0 0x52
#define A4XX_RBBM_CFG_DEBBUS_IVTL_1 0x53
#define A4XX_RBBM_CFG_DEBBUS_IVTL_2 0x54
#define A4XX_RBBM_CFG_DEBBUS_IVTL_3 0x55
#define A4XX_RBBM_CFG_DEBBUS_MASKL_0 0x56
#define A4XX_RBBM_CFG_DEBBUS_MASKL_1 0x57
#define A4XX_RBBM_CFG_DEBBUS_MASKL_2 0x58
#define A4XX_RBBM_CFG_DEBBUS_MASKL_3 0x59
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_0 0x5a
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_0_BYTEL0_SHIFT 0
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_0_BYTEL1_SHIFT 4
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_0_BYTEL2_SHIFT 8
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_0_BYTEL3_SHIFT 12
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_0_BYTEL4_SHIFT 16
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_0_BYTEL5_SHIFT 20
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_0_BYTEL6_SHIFT 24
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_0_BYTEL7_SHIFT 28
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_1 0x5b
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_1_BYTEL8_SHIFT 0
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_1_BYTEL9_SHIFT 4
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_1_BYTEL10_SHIFT 8
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_1_BYTEL11_SHIFT 12
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_1_BYTEL12_SHIFT 16
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_1_BYTEL13_SHIFT 20
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_1_BYTEL14_SHIFT 24
#define A4XX_RBBM_CFG_DEBBUS_BYTEL_1_BYTEL15_SHIFT 28
#define A4XX_RBBM_CFG_DEBBUS_IVTE_0 0x5c
#define A4XX_RBBM_CFG_DEBBUS_IVTE_1 0x5d
#define A4XX_RBBM_CFG_DEBBUS_IVTE_2 0x5e
#define A4XX_RBBM_CFG_DEBBUS_IVTE_3 0x5f
#define A4XX_RBBM_CFG_DEBBUS_MASKE_0 0x60
#define A4XX_RBBM_CFG_DEBBUS_MASKE_1 0x61
#define A4XX_RBBM_CFG_DEBBUS_MASKE_2 0x62
#define A4XX_RBBM_CFG_DEBBUS_MASKE_3 0x63
#define A4XX_RBBM_CFG_DEBBUS_NIBBLEE 0x64
#define A4XX_RBBM_CFG_DEBBUS_PTRC0 0x65
#define A4XX_RBBM_CFG_DEBBUS_PTRC1 0x66
#define A4XX_RBBM_CFG_DEBBUS_LOADREG 0x67
#define A4XX_RBBM_CLOCK_CTL_SP0 0x68
#define A4XX_RBBM_CLOCK_CTL_SP1 0x69
#define A4XX_RBBM_CLOCK_CTL_SP2 0x6A
#define A4XX_RBBM_CLOCK_CTL_SP3 0x6B
#define A4XX_RBBM_CLOCK_CTL2_SP0 0x6C
#define A4XX_RBBM_CLOCK_CTL2_SP1 0x6D
#define A4XX_RBBM_CLOCK_CTL2_SP2 0x6E
#define A4XX_RBBM_CLOCK_CTL2_SP3 0x6F
#define A4XX_RBBM_CLOCK_HYST_SP0 0x70
#define A4XX_RBBM_CLOCK_HYST_SP1 0x71
#define A4XX_RBBM_CLOCK_HYST_SP2 0x72
#define A4XX_RBBM_CLOCK_HYST_SP3 0x73
#define A4XX_RBBM_CLOCK_DELAY_SP0 0x74
#define A4XX_RBBM_CLOCK_DELAY_SP1 0x75
#define A4XX_RBBM_CLOCK_DELAY_SP2 0x76
#define A4XX_RBBM_CLOCK_DELAY_SP3 0x77
#define A4XX_RBBM_CLOCK_CTL_RB0 0x78
#define A4XX_RBBM_CLOCK_CTL_RB1 0x79
#define A4XX_RBBM_CLOCK_CTL_RB2 0x7A
#define A4XX_RBBM_CLOCK_CTL_RB3 0x7B
#define A4XX_RBBM_CLOCK_CTL2_RB0 0x7C
#define A4XX_RBBM_CLOCK_CTL2_RB1 0x7D
#define A4XX_RBBM_CLOCK_CTL2_RB2 0x7E
#define A4XX_RBBM_CLOCK_CTL2_RB3 0x7F
#define A4XX_RBBM_CLOCK_HYST_COM_DCOM 0x80
#define A4XX_RBBM_CLOCK_CTL_COM_DCOM 0x81
#define A4XX_RBBM_CLOCK_CTL_MARB_CCU0 0x82
#define A4XX_RBBM_CLOCK_CTL_MARB_CCU1 0x83
#define A4XX_RBBM_CLOCK_CTL_MARB_CCU2 0x84
#define A4XX_RBBM_CLOCK_CTL_MARB_CCU3 0x85
#define A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU0 0x86
#define A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU1 0x87
#define A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU2 0x88
#define A4XX_RBBM_CLOCK_HYST_RB_MARB_CCU3 0x89
#define A4XX_RBBM_CLOCK_CTL_HLSQ 0x8a
#define A4XX_RBBM_CLOCK_HYST_HLSQ 0x8b
#define A4XX_RBBM_CLOCK_DELAY_HLSQ 0x8c
#define A4XX_CGC_HLSQ_TP_EARLY_CYC_MASK 0x00700000
#define A4XX_CGC_HLSQ_TP_EARLY_CYC_SHIFT 20
#define A4XX_RBBM_CLOCK_DELAY_COM_DCOM 0x8d
#define A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1_0 0x8e
#define A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1_1 0x8f
#define A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1_2 0x90
#define A4XX_RBBM_CLOCK_DELAY_RB_MARB_CCU_L1_3 0x91
#define A4XX_RBBM_CFG_DEBBUS_IDX 0x93
#define A4XX_RBBM_CFG_DEBBUS_CLRC 0x94
#define A4XX_RBBM_CFG_DEBBUS_LOADIVT 0x95
#define A4XX_RBBM_POWER_CNTL_IP 0x98
#define A4XX_RBBM_SP_REGFILE_SLEEP_CNTL_0 0x99
#define A4XX_RBBM_SP_REGFILE_SLEEP_CNTL_1 0x9a
#define A4XX_RBBM_PERFCTR_CP_0_LO 0x9c
#define A4XX_RBBM_PERFCTR_CP_0_HI 0x9d
#define A4XX_RBBM_PERFCTR_CP_1_LO 0x9e
#define A4XX_RBBM_PERFCTR_CP_1_HI 0x9f
#define A4XX_RBBM_PERFCTR_CP_2_LO 0xa0
#define A4XX_RBBM_PERFCTR_CP_2_HI 0xa1
#define A4XX_RBBM_PERFCTR_CP_3_LO 0xa2
#define A4XX_RBBM_PERFCTR_CP_3_HI 0xa3
#define A4XX_RBBM_PERFCTR_CP_4_LO 0xa4
#define A4XX_RBBM_PERFCTR_CP_4_HI 0xa5
#define A4XX_RBBM_PERFCTR_CP_5_LO 0xa6
#define A4XX_RBBM_PERFCTR_CP_5_HI 0xa7
#define A4XX_RBBM_PERFCTR_CP_6_LO 0xa8
#define A4XX_RBBM_PERFCTR_CP_6_HI 0xa9
#define A4XX_RBBM_PERFCTR_CP_7_LO 0xaa
#define A4XX_RBBM_PERFCTR_CP_7_HI 0xab
#define A4XX_RBBM_PERFCTR_RBBM_0_LO 0xac
#define A4XX_RBBM_PERFCTR_RBBM_0_HI 0xad
#define A4XX_RBBM_PERFCTR_RBBM_1_LO 0xae
#define A4XX_RBBM_PERFCTR_RBBM_1_HI 0xaf
#define A4XX_RBBM_PERFCTR_RBBM_2_LO 0xb0
#define A4XX_RBBM_PERFCTR_RBBM_2_HI 0xb1
#define A4XX_RBBM_PERFCTR_RBBM_3_LO 0xb2
#define A4XX_RBBM_PERFCTR_RBBM_3_HI 0xb3
#define A4XX_RBBM_PERFCTR_PC_0_LO 0xb4
#define A4XX_RBBM_PERFCTR_PC_0_HI 0xb5
#define A4XX_RBBM_PERFCTR_PC_1_LO 0xb6
#define A4XX_RBBM_PERFCTR_PC_1_HI 0xb7
#define A4XX_RBBM_PERFCTR_PC_2_LO 0xb8
#define A4XX_RBBM_PERFCTR_PC_2_HI 0xb9
#define A4XX_RBBM_PERFCTR_PC_3_LO 0xba
#define A4XX_RBBM_PERFCTR_PC_3_HI 0xbb
#define A4XX_RBBM_PERFCTR_PC_4_LO 0xbc
#define A4XX_RBBM_PERFCTR_PC_4_HI 0xbd
#define A4XX_RBBM_PERFCTR_PC_5_LO 0xbe
#define A4XX_RBBM_PERFCTR_PC_5_HI 0xbf
#define A4XX_RBBM_PERFCTR_PC_6_LO 0xc0
#define A4XX_RBBM_PERFCTR_PC_6_HI 0xc1
#define A4XX_RBBM_PERFCTR_PC_7_LO 0xc2
#define A4XX_RBBM_PERFCTR_PC_7_HI 0xc3
#define A4XX_RBBM_PERFCTR_VFD_0_LO 0xc4
#define A4XX_RBBM_PERFCTR_VFD_0_HI 0xc5
#define A4XX_RBBM_PERFCTR_VFD_1_LO 0xc6
#define A4XX_RBBM_PERFCTR_VFD_1_HI 0xc7
#define A4XX_RBBM_PERFCTR_VFD_2_LO 0xc8
#define A4XX_RBBM_PERFCTR_VFD_2_HI 0xc9
#define A4XX_RBBM_PERFCTR_VFD_3_LO 0xca
#define A4XX_RBBM_PERFCTR_VFD_3_HI 0xcb
#define A4XX_RBBM_PERFCTR_VFD_4_LO 0xcc
#define A4XX_RBBM_PERFCTR_VFD_4_HI 0xcd
#define A4XX_RBBM_PERFCTR_VFD_5_LO 0xce
#define A4XX_RBBM_PERFCTR_VFD_5_HI 0xcf
#define A4XX_RBBM_PERFCTR_VFD_6_LO 0xd0
#define A4XX_RBBM_PERFCTR_VFD_6_HI 0xd1
#define A4XX_RBBM_PERFCTR_VFD_7_LO 0xd2
#define A4XX_RBBM_PERFCTR_VFD_7_HI 0xd3
#define A4XX_RBBM_PERFCTR_HLSQ_0_LO 0xd4
#define A4XX_RBBM_PERFCTR_HLSQ_0_HI 0xd5
#define A4XX_RBBM_PERFCTR_HLSQ_1_LO 0xd6
#define A4XX_RBBM_PERFCTR_HLSQ_1_HI 0xd7
#define A4XX_RBBM_PERFCTR_HLSQ_2_LO 0xd8
#define A4XX_RBBM_PERFCTR_HLSQ_2_HI 0xd9
#define A4XX_RBBM_PERFCTR_HLSQ_3_LO 0xda
#define A4XX_RBBM_PERFCTR_HLSQ_3_HI 0xdb
#define A4XX_RBBM_PERFCTR_HLSQ_4_LO 0xdc
#define A4XX_RBBM_PERFCTR_HLSQ_4_HI 0xdd
#define A4XX_RBBM_PERFCTR_HLSQ_5_LO 0xde
#define A4XX_RBBM_PERFCTR_HLSQ_5_HI 0xdf
#define A4XX_RBBM_PERFCTR_HLSQ_6_LO 0xe0
#define A4XX_RBBM_PERFCTR_HLSQ_6_HI 0xe1
#define A4XX_RBBM_PERFCTR_HLSQ_7_LO 0xe2
#define A4XX_RBBM_PERFCTR_HLSQ_7_HI 0xe3
#define A4XX_RBBM_PERFCTR_VPC_0_LO 0xe4
#define A4XX_RBBM_PERFCTR_VPC_0_HI 0xe5
#define A4XX_RBBM_PERFCTR_VPC_1_LO 0xe6
#define A4XX_RBBM_PERFCTR_VPC_1_HI 0xe7
#define A4XX_RBBM_PERFCTR_VPC_2_LO 0xe8
#define A4XX_RBBM_PERFCTR_VPC_2_HI 0xe9
#define A4XX_RBBM_PERFCTR_VPC_3_LO 0xea
#define A4XX_RBBM_PERFCTR_VPC_3_HI 0xeb
#define A4XX_RBBM_PERFCTR_CCU_0_LO 0xec
#define A4XX_RBBM_PERFCTR_CCU_0_HI 0xed
#define A4XX_RBBM_PERFCTR_CCU_1_LO 0xee
#define A4XX_RBBM_PERFCTR_CCU_1_HI 0xef
#define A4XX_RBBM_PERFCTR_CCU_2_LO 0xf0
#define A4XX_RBBM_PERFCTR_CCU_2_HI 0xf1
#define A4XX_RBBM_PERFCTR_CCU_3_LO 0xf2
#define A4XX_RBBM_PERFCTR_CCU_3_HI 0xf3
#define A4XX_RBBM_PERFCTR_TSE_0_LO 0xf4
#define A4XX_RBBM_PERFCTR_TSE_0_HI 0xf5
#define A4XX_RBBM_PERFCTR_TSE_1_LO 0xf6
#define A4XX_RBBM_PERFCTR_TSE_1_HI 0xf7
#define A4XX_RBBM_PERFCTR_TSE_2_LO 0xf8
#define A4XX_RBBM_PERFCTR_TSE_2_HI 0xf9
#define A4XX_RBBM_PERFCTR_TSE_3_LO 0xfa
#define A4XX_RBBM_PERFCTR_TSE_3_HI 0xfb
#define A4XX_RBBM_PERFCTR_RAS_0_LO 0xfc
#define A4XX_RBBM_PERFCTR_RAS_0_HI 0xfd
#define A4XX_RBBM_PERFCTR_RAS_1_LO 0xfe
#define A4XX_RBBM_PERFCTR_RAS_1_HI 0xff
#define A4XX_RBBM_PERFCTR_RAS_2_LO 0x100
#define A4XX_RBBM_PERFCTR_RAS_2_HI 0x101
#define A4XX_RBBM_PERFCTR_RAS_3_LO 0x102
#define A4XX_RBBM_PERFCTR_RAS_3_HI 0x103
#define A4XX_RBBM_PERFCTR_UCHE_0_LO 0x104
#define A4XX_RBBM_PERFCTR_UCHE_0_HI 0x105
#define A4XX_RBBM_PERFCTR_UCHE_1_LO 0x106
#define A4XX_RBBM_PERFCTR_UCHE_1_HI 0x107
#define A4XX_RBBM_PERFCTR_UCHE_2_LO 0x108
#define A4XX_RBBM_PERFCTR_UCHE_2_HI 0x109
#define A4XX_RBBM_PERFCTR_UCHE_3_LO 0x10a
#define A4XX_RBBM_PERFCTR_UCHE_3_HI 0x10b
#define A4XX_RBBM_PERFCTR_UCHE_4_LO 0x10c
#define A4XX_RBBM_PERFCTR_UCHE_4_HI 0x10d
#define A4XX_RBBM_PERFCTR_UCHE_5_LO 0x10e
#define A4XX_RBBM_PERFCTR_UCHE_5_HI 0x10f
#define A4XX_RBBM_PERFCTR_UCHE_6_LO 0x110
#define A4XX_RBBM_PERFCTR_UCHE_6_HI 0x111
#define A4XX_RBBM_PERFCTR_UCHE_7_LO 0x112
#define A4XX_RBBM_PERFCTR_UCHE_7_HI 0x113
#define A4XX_RBBM_PERFCTR_TP_0_LO 0x114
#define A4XX_RBBM_PERFCTR_TP_0_HI 0x115
#define A4XX_RBBM_PERFCTR_TP_1_LO 0x116
#define A4XX_RBBM_PERFCTR_TP_1_HI 0x117
#define A4XX_RBBM_PERFCTR_TP_2_LO 0x118
#define A4XX_RBBM_PERFCTR_TP_2_HI 0x119
#define A4XX_RBBM_PERFCTR_TP_3_LO 0x11a
#define A4XX_RBBM_PERFCTR_TP_3_HI 0x11b
#define A4XX_RBBM_PERFCTR_TP_4_LO 0x11c
#define A4XX_RBBM_PERFCTR_TP_4_HI 0x11d
#define A4XX_RBBM_PERFCTR_TP_5_LO 0x11e
#define A4XX_RBBM_PERFCTR_TP_5_HI 0x11f
#define A4XX_RBBM_PERFCTR_TP_6_LO 0x120
#define A4XX_RBBM_PERFCTR_TP_6_HI 0x121
#define A4XX_RBBM_PERFCTR_TP_7_LO 0x122
#define A4XX_RBBM_PERFCTR_TP_7_HI 0x123
#define A4XX_RBBM_PERFCTR_SP_0_LO 0x124
#define A4XX_RBBM_PERFCTR_SP_0_HI 0x125
#define A4XX_RBBM_PERFCTR_SP_1_LO 0x126
#define A4XX_RBBM_PERFCTR_SP_1_HI 0x127
#define A4XX_RBBM_PERFCTR_SP_2_LO 0x128
#define A4XX_RBBM_PERFCTR_SP_2_HI 0x129
#define A4XX_RBBM_PERFCTR_SP_3_LO 0x12a
#define A4XX_RBBM_PERFCTR_SP_3_HI 0x12b
#define A4XX_RBBM_PERFCTR_SP_4_LO 0x12c
#define A4XX_RBBM_PERFCTR_SP_4_HI 0x12d
#define A4XX_RBBM_PERFCTR_SP_5_LO 0x12e
#define A4XX_RBBM_PERFCTR_SP_5_HI 0x12f
#define A4XX_RBBM_PERFCTR_SP_6_LO 0x130
#define A4XX_RBBM_PERFCTR_SP_6_HI 0x131
#define A4XX_RBBM_PERFCTR_SP_7_LO 0x132
#define A4XX_RBBM_PERFCTR_SP_7_HI 0x133
#define A4XX_RBBM_PERFCTR_SP_8_LO 0x134
#define A4XX_RBBM_PERFCTR_SP_8_HI 0x135
#define A4XX_RBBM_PERFCTR_SP_9_LO 0x136
#define A4XX_RBBM_PERFCTR_SP_9_HI 0x137
#define A4XX_RBBM_PERFCTR_SP_10_LO 0x138
#define A4XX_RBBM_PERFCTR_SP_10_HI 0x139
#define A4XX_RBBM_PERFCTR_SP_11_LO 0x13a
#define A4XX_RBBM_PERFCTR_SP_11_HI 0x13b
#define A4XX_RBBM_PERFCTR_RB_0_LO 0x13c
#define A4XX_RBBM_PERFCTR_RB_0_HI 0x13d
#define A4XX_RBBM_PERFCTR_RB_1_LO 0x13e
#define A4XX_RBBM_PERFCTR_RB_1_HI 0x13f
#define A4XX_RBBM_PERFCTR_RB_2_LO 0x140
#define A4XX_RBBM_PERFCTR_RB_2_HI 0x141
#define A4XX_RBBM_PERFCTR_RB_3_LO 0x142
#define A4XX_RBBM_PERFCTR_RB_3_HI 0x143
#define A4XX_RBBM_PERFCTR_RB_4_LO 0x144
#define A4XX_RBBM_PERFCTR_RB_4_HI 0x145
#define A4XX_RBBM_PERFCTR_RB_5_LO 0x146
#define A4XX_RBBM_PERFCTR_RB_5_HI 0x147
#define A4XX_RBBM_PERFCTR_RB_6_LO 0x148
#define A4XX_RBBM_PERFCTR_RB_6_HI 0x149
#define A4XX_RBBM_PERFCTR_RB_7_LO 0x14a
#define A4XX_RBBM_PERFCTR_RB_7_HI 0x14b
#define A4XX_RBBM_PERFCTR_VSC_0_LO 0x14c
#define A4XX_RBBM_PERFCTR_VSC_0_HI 0x14d
#define A4XX_RBBM_PERFCTR_VSC_1_LO 0x14e
#define A4XX_RBBM_PERFCTR_VSC_1_HI 0x14f
#define A4XX_RBBM_PERFCTR_PWR_0_LO 0x166
#define A4XX_RBBM_PERFCTR_PWR_0_HI 0x167
#define A4XX_RBBM_PERFCTR_PWR_1_LO 0x168
#define A4XX_RBBM_PERFCTR_PWR_1_HI 0x169
#define A4XX_RBBM_ALWAYSON_COUNTER_LO 0x16e
#define A4XX_RBBM_ALWAYSON_COUNTER_HI 0x16f
#define A4XX_RBBM_PERFCTR_CTL 0x170
#define A4XX_RBBM_PERFCTR_LOAD_CMD0 0x171
#define A4XX_RBBM_PERFCTR_LOAD_CMD1 0x172
#define A4XX_RBBM_PERFCTR_LOAD_CMD2 0x173
#define A4XX_RBBM_PERFCTR_LOAD_VALUE_LO 0x174
#define A4XX_RBBM_PERFCTR_LOAD_VALUE_HI 0x175
#define A4XX_RBBM_PERFCTR_RBBM_SEL_0 0x176
#define A4XX_RBBM_PERFCTR_RBBM_SEL_1 0x177
#define A4XX_RBBM_PERFCTR_RBBM_SEL_2 0x178
#define A4XX_RBBM_PERFCTR_RBBM_SEL_3 0x179
#define A4XX_RBBM_GPU_BUSY_MASKED 0x17a
#define A4XX_RBBM_INT_0_STATUS 0x17d
#define A4XX_RBBM_AHB_ME_SPLIT_STATUS 0x18c
#define A4XX_RBBM_AHB_PFP_SPLIT_STATUS 0x18d
#define A4XX_RBBM_AHB_ERROR_STATUS 0x18f
#define A4XX_RBBM_STATUS 0x191
#define A4XX_RBBM_CFG_COUNTER0 0x1a2
#define A4XX_RBBM_CFG_DEBBUS_TRACE_BUF0 0x1a9
#define A4XX_RBBM_CFG_DEBBUS_TRACE_BUF1 0x1aa
#define A4XX_RBBM_CFG_DEBBUS_TRACE_BUF2 0x1ab
#define A4XX_RBBM_CFG_DEBBUS_TRACE_BUF3 0x1ac
#define A4XX_RBBM_CFG_DEBBUS_TRACE_BUF4 0x1ad
#define A4XX_RBBM_CFG_DEBBUS_MISR0 0x1ae
#define A4XX_RBBM_CFG_DEBBUS_MISR1 0x1af
#define A4XX_RBBM_POWER_STATUS 0x1b0
#define A4XX_RBBM_PPD_V2_SP_PWR_WEIGHTS 0x1b2
#define A4XX_RBBM_PPD_V2_SP_RB_EPOCH_TH 0x1b3
#define A4XX_RBBM_PPD_V2_TP_CONFIG 0x1b4
#define A4XX_RBBM_PPD_RAMP_V2_CONTROL 0x1b5
#define A4XX_RBBM_WAIT_IDLE_CLOCKS_CTL2 0x1b8
#define A4XX_RBBM_PPD_CTRL 0x1b9
#define A4XX_RBBM_PPD_EPOCH_INTRA_TH_1 0x1ba
#define A4XX_RBBM_PPD_EPOCH_INTRA_TH_2 0x1bb
#define A4XX_RBBM_PPD_EPOCH_INTER_TH_HIGH_CLEAR_THR 0x1bc
#define A4XX_RBBM_PPD_EPOCH_INTER_TH_LOW 0x1bd
/* SECVID registers */
#define A4XX_RBBM_SECVID_TRUST_CONFIG 0xf000
#define A4XX_RBBM_SECVID_TRUST_CONTROL 0xf400
#define A4XX_RBBM_SECVID_TSB_TRUSTED_BASE 0xf800
#define A4XX_RBBM_SECVID_TSB_TRUSTED_SIZE 0xf801
#define A4XX_RBBM_SECVID_TSB_CONTROL 0xf802
/* CP registers */
#define A4XX_CP_RB_BASE 0x200
#define A4XX_CP_RB_CNTL 0x201
#define A4XX_CP_RB_RPTR_ADDR 0x203
#define A4XX_CP_RB_RPTR 0x204
#define A4XX_CP_RB_WPTR 0x205
#define A4XX_CP_IB1_BASE 0x206
#define A4XX_CP_IB1_BUFSZ 0x207
#define A4XX_CP_IB2_BASE 0x208
#define A4XX_CP_IB2_BUFSZ 0x209
#define A4XX_CP_ROQ_ADDR 0x21C
#define A4XX_CP_ROQ_DATA 0x21D
#define A4XX_CP_MEQ_ADDR 0x21E
#define A4XX_CP_MEQ_DATA 0x21F
#define A4XX_CP_MERCIU_ADDR 0x220
#define A4XX_CP_MERCIU_DATA 0x221
#define A4XX_CP_MERCIU_DATA2 0x222
#define A4XX_CP_PFP_UCODE_ADDR 0x223
#define A4XX_CP_PFP_UCODE_DATA 0x224
#define A4XX_CP_ME_RAM_WADDR 0x225
#define A4XX_CP_ME_RAM_RADDR 0x226
#define A4XX_CP_ME_RAM_DATA 0x227
#define A4XX_CP_SCRATCH_UMASK 0x228
#define A4XX_CP_SCRATCH_ADDR 0x229
#define A4XX_CP_PREEMPT 0x22a
/* PREEMPT register bit shifts */
#define A4XX_CP_PREEMPT_STOP_SHIFT 0
#define A4XX_CP_PREEMPT_RESUME_SHIFT 1
#define A4XX_CP_PREEMPT_DISABLE 0x22b
#define A4XX_CP_CNTL 0x22c
#define A4XX_CP_ME_CNTL 0x22d
#define A4XX_CP_DEBUG 0x22e
#define A4XX_CP_STATE_DEBUG_INDEX 0x22f
#define A4XX_CP_STATE_DEBUG_DATA 0x230
#define A4XX_CP_POWER_COLLAPSE_CNTL 0x234
/*
* CP debug settings for A4xx cores
* MIU_128BIT_WRITE_ENABLE [25] - Allow 128 bit writes to the VBIF
*/
#define A4XX_CP_DEBUG_DEFAULT (1 << 25)
#define A4XX_CP_PROTECT_REG_0 0x240
#define A4XX_CP_PROTECT_CTRL 0x250
#define A4XX_CP_PROTECT_REG_10 0x251
#define A4XX_CP_ME_STATUS 0x4d1
#define A4XX_CP_CNTL 0x22c
#define A4XX_CP_WFI_PEND_CTR 0x4d2
#define A4XX_CP_PREEMPT_DEBUG 0x4d6
#define A4XX_CP_HW_FAULT 0x4d8
#define A4XX_CP_PROTECT_STATUS 0x4da
#define A4XX_CP_PERFCTR_CP_SEL_0 0x500
#define A4XX_CP_PERFCTR_CP_SEL_1 0x501
#define A4XX_CP_PERFCTR_CP_SEL_2 0x502
#define A4XX_CP_PERFCTR_CP_SEL_3 0x503
#define A4XX_CP_PERFCTR_CP_SEL_4 0x504
#define A4XX_CP_PERFCTR_CP_SEL_5 0x505
#define A4XX_CP_PERFCTR_CP_SEL_6 0x506
#define A4XX_CP_PERFCTR_CP_SEL_7 0x507
#define A4XX_CP_SCRATCH_REG0 0x578
#define A4XX_CP_SCRATCH_REG6 0x57e
#define A4XX_CP_SCRATCH_REG7 0x57f
#define A4XX_CP_SCRATCH_REG8 0x580
#define A4XX_CP_SCRATCH_REG9 0x581
#define A4XX_CP_SCRATCH_REG10 0x582
#define A4XX_CP_SCRATCH_REG11 0x583
#define A4XX_CP_SCRATCH_REG12 0x584
#define A4XX_CP_SCRATCH_REG13 0x585
#define A4XX_CP_SCRATCH_REG14 0x586
#define A4XX_CP_SCRATCH_REG15 0x587
#define A4XX_CP_SCRATCH_REG16 0x588
#define A4XX_CP_SCRATCH_REG17 0x589
#define A4XX_CP_SCRATCH_REG18 0x58a
#define A4XX_CP_SCRATCH_REG23 0x58f
/* SP registers */
#define A4XX_SP_SP_CTRL 0x22C0
#define A4XX_SP_INSTR_CACHE_CTRL 0x22c1
#define A4XX_SP_VS_OBJ_START 0x22e1
#define A4XX_SP_VS_PVT_MEM_ADDR 0x22e3
#define A4XX_SP_FS_CTRL_1 0x22e9
#define A4XX_SP_FS_OBJ_START 0x22eb
#define A4XX_SP_FS_PVT_MEM_ADDR 0x22ed
#define A4XX_SP_CS_CTRL_0 0x2300
#define A4XX_SP_CS_OBJ_OFFSET 0x2301
#define A4XX_SP_CS_OBJ_START 0x2302
#define A4XX_SP_CS_PVT_MEM_PARAM 0x2303
#define A4XX_SP_CS_PVT_MEM_ADDR 0x2304
#define A4XX_SP_CS_PVT_MEM_SIZE 0x2305
#define A4XX_SP_CS_LENGTH 0x2306
#define A4XX_SP_MODE_CONTROL 0xec3
#define A4XX_SP_PERFCTR_SP_SEL_0 0xec4
#define A4XX_SP_PERFCTR_SP_SEL_1 0xec5
#define A4XX_SP_PERFCTR_SP_SEL_2 0xec6
#define A4XX_SP_PERFCTR_SP_SEL_3 0xec7
#define A4XX_SP_PERFCTR_SP_SEL_4 0xec8
#define A4XX_SP_PERFCTR_SP_SEL_5 0xec9
#define A4XX_SP_PERFCTR_SP_SEL_6 0xeca
#define A4XX_SP_PERFCTR_SP_SEL_7 0xecb
#define A4XX_SP_PERFCTR_SP_SEL_8 0xecc
#define A4XX_SP_PERFCTR_SP_SEL_9 0xecd
#define A4XX_SP_PERFCTR_SP_SEL_10 0xece
#define A4XX_SP_PERFCTR_SP_SEL_11 0xecf
#define A4XX_SP_VS_PVT_MEM_ADDR 0x22e3
#define A4XX_SP_FS_PVT_MEM_ADDR 0x22ed
#define A4XX_SP_VS_OBJ_START 0x22e1
#define A4XX_SP_FS_OBJ_START 0x22eb
/* COUNTABLE FOR SP PERFCOUNTER */
#define A4XX_SP_ALU_ACTIVE_CYCLES 0x1D
#define A4XX_SP0_ICL1_MISSES 0x1A
#define A4XX_SP_FS_CFLOW_INSTRUCTIONS 0x0C
/* COUNTABLE FOR TSE PERFCOUNTER */
#define A4XX_TSE_INPUT_PRIM_NUM 0x0
enum a4xx_sp_perfctr_sp_sel {
SP_FS_STAGE_BARY_INSTRUCTIONS = 0x10,
};
/* VPC registers */
#define A4XX_VPC_DEBUG_RAM_SEL 0xe60
#define A4XX_VPC_DEBUG_RAM_READ 0xe61
#define A4XX_VPC_PERFCTR_VPC_SEL_0 0xe65
#define A4XX_VPC_PERFCTR_VPC_SEL_1 0xe66
#define A4XX_VPC_PERFCTR_VPC_SEL_2 0xe67
#define A4XX_VPC_PERFCTR_VPC_SEL_3 0xe68
/* UCHE register */
#define UCHE_TRAP_BASE_LO 0xe83
#define UCHE_TRAP_BASE_HI 0xe84
#define A4XX_UCHE_INVALIDATE0 0xe8a
#define A4XX_UCHE_INVALIDATE1 0xe8b
#define A4XX_UCHE_CACHE_WAYS_VFD 0xe8c
/* VSC registers */
#define A4XX_VSC_SIZE_ADDRESS 0xc01
#define A4XX_VSC_PIPE_DATA_ADDRESS_0 0xc10
#define A4XX_VSC_PIPE_DATA_ADDRESS_1 0xc11
#define A4XX_VSC_PIPE_DATA_ADDRESS_2 0xc12
#define A4XX_VSC_PIPE_DATA_ADDRESS_3 0xc13
#define A4XX_VSC_PIPE_DATA_ADDRESS_4 0xc14
#define A4XX_VSC_PIPE_DATA_ADDRESS_5 0xc15
#define A4XX_VSC_PIPE_DATA_ADDRESS_6 0xc16
#define A4XX_VSC_PIPE_DATA_ADDRESS_7 0xc17
#define A4XX_VSC_PIPE_DATA_LENGTH_0 0xc18
#define A4XX_VSC_PIPE_DATA_LENGTH_1 0xc19
#define A4XX_VSC_PIPE_DATA_LENGTH_2 0xc1a
#define A4XX_VSC_PIPE_DATA_LENGTH_3 0xc1b
#define A4XX_VSC_PIPE_DATA_LENGTH_4 0xc1c
#define A4XX_VSC_PIPE_DATA_LENGTH_5 0xc1d
#define A4XX_VSC_PIPE_DATA_LENGTH_6 0xc1e
#define A4XX_VSC_PIPE_DATA_LENGTH_7 0xc1f
#define A4XX_VSC_PERFCTR_VSC_SEL_0 0xc50
#define A4XX_VSC_PERFCTR_VSC_SEL_1 0xc51
/* VFD registers */
#define A4XX_VFD_CONTROL_0 0x2200
#define A4XX_VFD_FETCH_INSTR_0_0 0x220a
#define A4XX_VFD_FETCH_INSTR_1_31 0x2287
#define A4XX_VFD_PERFCTR_VFD_SEL_0 0xe43
#define A4XX_VFD_PERFCTR_VFD_SEL_1 0xe44
#define A4XX_VFD_PERFCTR_VFD_SEL_2 0xe45
#define A4XX_VFD_PERFCTR_VFD_SEL_3 0xe46
#define A4XX_VFD_PERFCTR_VFD_SEL_4 0xe47
#define A4XX_VFD_PERFCTR_VFD_SEL_5 0xe48
#define A4XX_VFD_PERFCTR_VFD_SEL_6 0xe49
#define A4XX_VFD_PERFCTR_VFD_SEL_7 0xe4a
#define A4XX_VFD_FETCH_INSTR_1_0 0x220b
#define A4XX_VFD_FETCH_INSTR_1_1 0x220f
#define A4XX_VFD_FETCH_INSTR_1_2 0x2213
#define A4XX_VFD_FETCH_INSTR_1_3 0x2217
#define A4XX_VFD_FETCH_INSTR_1_4 0x221b
#define A4XX_VFD_FETCH_INSTR_1_5 0x221f
#define A4XX_VFD_FETCH_INSTR_1_6 0x2223
#define A4XX_VFD_FETCH_INSTR_1_7 0x2227
#define A4XX_VFD_FETCH_INSTR_1_8 0x222b
#define A4XX_VFD_FETCH_INSTR_1_9 0x222f
#define A4XX_VFD_FETCH_INSTR_1_10 0x2233
#define A4XX_VFD_FETCH_INSTR_1_11 0x2237
#define A4XX_VFD_FETCH_INSTR_1_12 0x223b
#define A4XX_VFD_FETCH_INSTR_1_13 0x223f
#define A4XX_VFD_FETCH_INSTR_1_14 0x2243
#define A4XX_VFD_FETCH_INSTR_1_15 0x2247
#define A4XX_VFD_FETCH_INSTR_1_16 0x224b
#define A4XX_VFD_FETCH_INSTR_1_17 0x224f
#define A4XX_VFD_FETCH_INSTR_1_18 0x2253
#define A4XX_VFD_FETCH_INSTR_1_19 0x2257
#define A4XX_VFD_FETCH_INSTR_1_20 0x225b
#define A4XX_VFD_FETCH_INSTR_1_21 0x225f
#define A4XX_VFD_FETCH_INSTR_1_22 0x2263
#define A4XX_VFD_FETCH_INSTR_1_23 0x2267
#define A4XX_VFD_FETCH_INSTR_1_24 0x226b
#define A4XX_VFD_FETCH_INSTR_1_25 0x226f
#define A4XX_VFD_FETCH_INSTR_1_26 0x2273
#define A4XX_VFD_FETCH_INSTR_1_27 0x2277
#define A4XX_VFD_FETCH_INSTR_1_28 0x227b
#define A4XX_VFD_FETCH_INSTR_1_29 0x227f
#define A4XX_VFD_FETCH_INSTR_1_30 0x2283
#define A4XX_VFD_FETCH_INSTR_1_31 0x2287
enum a4xx_vfd_perfctr_vfd_sel {
VFD_VPC_BYPASS_TRANS = 0x2,
VFD_UPPER_SHADER_FIBERS = 0xb,
VFD_LOWER_SHADER_FIBERS = 0xc,
};
/* VBIF registers */
#define A4XX_VBIF_VERSION 0x3000
#define A4XX_VBIF_CLKON 0x3001
#define A4XX_VBIF_CLKON_FORCE_ON_TESTBUS_MASK 0x1
#define A4XX_VBIF_CLKON_FORCE_ON_TESTBUS_SHIFT 0x1
#define A4XX_VBIF_ABIT_SORT 0x301c
#define A4XX_VBIF_ABIT_SORT_CONF 0x301d
#define A4XX_VBIF_GATE_OFF_WRREQ_EN 0x302a
#define A4XX_VBIF_IN_RD_LIM_CONF0 0x302c
#define A4XX_VBIF_IN_RD_LIM_CONF1 0x302d
#define A4XX_VBIF_IN_WR_LIM_CONF0 0x3030
#define A4XX_VBIF_IN_WR_LIM_CONF1 0x3031
#define A4XX_VBIF_ROUND_ROBIN_QOS_ARB 0x3049
#define A4XX_VBIF_XIN_HALT_CTRL0 0x3080
#define A4XX_VBIF_XIN_HALT_CTRL0_MASK 0x1F
#define A405_VBIF_XIN_HALT_CTRL0_MASK 0x3
#define A4XX_VBIF_XIN_HALT_CTRL1 0x3081
#define A4XX_VBIF_TEST_BUS_OUT_CTRL 0x3084
#define A4XX_VBIF_TEST_BUS_OUT_CTRL_EN_MASK 0x1
#define A4XX_VBIF_TEST_BUS_OUT_CTRL_EN_SHIFT 0x0
#define A4XX_VBIF_TEST_BUS1_CTRL0 0x3085
#define A4XX_VBIF_TEST_BUS1_CTRL1 0x3086
#define A4XX_VBIF_TEST_BUS1_CTRL1_DATA_SEL_MASK 0xF
#define A4XX_VBIF_TEST_BUS1_CTRL1_DATA_SEL_SHIFT 0
#define A4XX_VBIF_TEST_BUS2_CTRL0 0x3087
#define A4XX_VBIF_TEST_BUS2_CTRL1 0x3088
#define A4XX_VBIF_TEST_BUS2_CTRL1_DATA_SEL_MASK 0xF
#define A4XX_VBIF_TEST_BUS2_CTRL1_DATA_SEL_SHIFT 0x0
#define A4XX_VBIF_TEST_BUS_OUT 0x308c
#define A4XX_VBIF_PERF_CNT_EN0 0x30c0
#define A4XX_VBIF_PERF_CNT_EN1 0x30c1
#define A4XX_VBIF_PERF_CNT_EN2 0x30c2
#define A4XX_VBIF_PERF_CNT_EN3 0x30c3
#define A4XX_VBIF_PERF_CNT_CLR0 0x30c8
#define A4XX_VBIF_PERF_CNT_CLR1 0x30c9
#define A4XX_VBIF_PERF_CNT_CLR2 0x30ca
#define A4XX_VBIF_PERF_CNT_CLR3 0x30cb
#define A4XX_VBIF_PERF_CNT_SEL0 0x30d0
#define A4XX_VBIF_PERF_CNT_SEL1 0x30d1
#define A4XX_VBIF_PERF_CNT_SEL2 0x30d2
#define A4XX_VBIF_PERF_CNT_SEL3 0x30d3
#define A4XX_VBIF_PERF_CNT_LOW0 0x30d8
#define A4XX_VBIF_PERF_CNT_LOW1 0x30d9
#define A4XX_VBIF_PERF_CNT_LOW2 0x30da
#define A4XX_VBIF_PERF_CNT_LOW3 0x30db
#define A4XX_VBIF_PERF_CNT_HIGH0 0x30e0
#define A4XX_VBIF_PERF_CNT_HIGH1 0x30e1
#define A4XX_VBIF_PERF_CNT_HIGH2 0x30e2
#define A4XX_VBIF_PERF_CNT_HIGH3 0x30e3
#define A4XX_VBIF_PERF_PWR_CNT_EN0 0x3100
#define A4XX_VBIF_PERF_PWR_CNT_EN1 0x3101
#define A4XX_VBIF_PERF_PWR_CNT_EN2 0x3102
#define A4XX_VBIF_PERF_PWR_CNT_EN3 0x3103
#define A4XX_VBIF_PERF_PWR_CNT_CLR0 0x3108
#define A4XX_VBIF_PERF_PWR_CNT_CLR1 0x3109
#define A4XX_VBIF_PERF_PWR_CNT_CLR2 0x310A
#define A4XX_VBIF_PERF_PWR_CNT_CLR3 0x310B
#define A4XX_VBIF_PERF_PWR_CNT_LOW0 0x3110
#define A4XX_VBIF_PERF_PWR_CNT_LOW1 0x3111
#define A4XX_VBIF_PERF_PWR_CNT_LOW2 0x3112
#define A4XX_VBIF_PERF_PWR_CNT_LOW3 0x3113
#define A4XX_VBIF_PERF_PWR_CNT_HIGH0 0x3118
#define A4XX_VBIF_PERF_PWR_CNT_HIGH1 0x3119
#define A4XX_VBIF_PERF_PWR_CNT_HIGH2 0x311a
#define A4XX_VBIF_PERF_PWR_CNT_HIGH3 0x311b
/* Bit flags for RBBM_CTL */
#define A4XX_RBBM_RBBM_CTL_RESET_PWR_CTR0 0x00000001
#define A4XX_RBBM_RBBM_CTL_RESET_PWR_CTR1 0x00000002
#define A4XX_RBBM_RBBM_CTL_ENABLE_PWR_CTR0 0x00000010
#define A4XX_RBBM_RBBM_CTL_ENABLE_PWR_CTR1 0x00000020
/* GRAS registers */
#define A4XX_GRAS_PERFCTR_TSE_SEL_0 0xc88
#define A4XX_GRAS_PERFCTR_TSE_SEL_1 0xc89
#define A4XX_GRAS_PERFCTR_TSE_SEL_2 0xc8a
#define A4XX_GRAS_PERFCTR_TSE_SEL_3 0xc8b
#define A4XX_GRAS_PERFCTR_RAS_SEL_0 0xc8c
#define A4XX_GRAS_PERFCTR_RAS_SEL_1 0xc8d
#define A4XX_GRAS_PERFCTR_RAS_SEL_2 0xc8e
#define A4XX_GRAS_PERFCTR_RAS_SEL_3 0xc8f
/* PC registers */
#define A4XX_PC_PERFCTR_PC_SEL_0 0xd10
#define A4XX_PC_PERFCTR_PC_SEL_1 0xd11
#define A4XX_PC_PERFCTR_PC_SEL_2 0xd12
#define A4XX_PC_PERFCTR_PC_SEL_3 0xd13
#define A4XX_PC_PERFCTR_PC_SEL_4 0xd14
#define A4XX_PC_PERFCTR_PC_SEL_5 0xd15
#define A4XX_PC_PERFCTR_PC_SEL_6 0xd16
#define A4XX_PC_PERFCTR_PC_SEL_7 0xd17
enum a4xx_pc_perfctr_pc_sel {
PC_INSTANCES = 0x1,
PC_VERTEX_HITS = 0x8,
PC_GENERATED_FIBERS = 0x12,
PC_GENERATED_WAVES = 0x13,
};
/* HLSQ registers */
#define A4XX_HLSQ_TIMEOUT_THRESHOLD 0xe00
#define A4XX_HLSQ_STATE_RESTORE_TRIGGER 0xe01
#define A4XX_HLSQ_MODE_CONTROL 0xe05
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_0 0xe06
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_1 0xe07
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_2 0xe08
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_3 0xe09
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_4 0xe0a
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_5 0xe0b
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_6 0xe0c
#define A4XX_HLSQ_PERFCTR_HLSQ_SEL_7 0xe0d
#define A4XX_HLSQ_SPTP_RDSEL 0xe30
#define A4xx_HLSQ_CONTROL_0 0x23c0
#define A4xx_HLSQ_CONTROL_1 0x23c1
#define A4xx_HLSQ_CONTROL_2 0x23c2
#define A4xx_HLSQ_CONTROL_3 0x23c3
#define A4xx_HLSQ_CONTROL_4 0x23c4
#define A4XX_HLSQ_CS_CONTROL 0x23ca
#define A4XX_HLSQ_CL_NDRANGE_0 0x23cd
#define A4XX_HLSQ_CL_NDRANGE_1 0x23ce
#define A4XX_HLSQ_CL_NDRANGE_2 0x23cf
#define A4XX_HLSQ_CL_NDRANGE_3 0x23d0
#define A4XX_HLSQ_CL_NDRANGE_4 0x23d1
#define A4XX_HLSQ_CL_NDRANGE_5 0x23d2
#define A4XX_HLSQ_CL_NDRANGE_6 0x23d3
#define A4XX_HLSQ_CL_CONTROL_0 0x23d4
#define A4XX_HLSQ_CL_CONTROL_1 0x23d5
#define A4XX_HLSQ_CL_KERNEL_CONST 0x23d6
#define A4XX_HLSQ_CL_KERNEL_GROUP_X 0x23d7
#define A4XX_HLSQ_CL_KERNEL_GROUP_Y 0x23d8
#define A4XX_HLSQ_CL_KERNEL_GROUP_Z 0x23d9
#define A4XX_HLSQ_CL_WG_OFFSET 0x23da
#define A4XX_HLSQ_UPDATE_CONTROL 0x23db
enum a4xx_hlsq_perfctr_hlsq_sel {
HLSQ_SP_VS_STAGE_CONSTANT = 0x0,
HLSQ_SP_VS_STAGE_INSTRUCTIONS = 0x1,
HLSQ_SP_FS_STAGE_CONSTANT = 0x2,
HLSQ_SP_FS_STAGE_INSTRUCTIONS = 0x3,
HLSQ_FS_STAGE_16_WAVES = 0x8,
HLSQ_FS_STAGE_32_WAVES = 0x9,
HLSQ_FS_STAGE_64_WAVES = 0xa,
HLSQ_VS_STAGE_16_WAVES = 0xb,
HLSQ_VS_STAGE_32_WAVES = 0xc,
};
/* CCU registers */
#define A4XX_RB_PERFCTR_CCU_SEL_0 0xccf
#define A4XX_RB_PERFCTR_CCU_SEL_1 0xcd0
#define A4XX_RB_PERFCTR_CCU_SEL_2 0xcd1
#define A4XX_RB_PERFCTR_CCU_SEL_3 0xcd2
enum a4xx_cu_perfctr_ccu_sel {
CCU_VBIF_STALL = 0x1,
CCU_VBIF_LATENCY_CYCLES = 0x4,
CCU_VBIF_LATENCY_SAMPLES = 0x5,
CCU_Z_READ = 0x13,
CCU_Z_WRITE = 0x14,
CCU_C_READ = 0x15,
CCU_C_WRITE = 0x16,
};
/* UCHE registers */
#define A4XX_UCHE_PERFCTR_UCHE_SEL_0 0xe8e
#define A4XX_UCHE_PERFCTR_UCHE_SEL_1 0xe8f
#define A4XX_UCHE_PERFCTR_UCHE_SEL_2 0xe90
#define A4XX_UCHE_PERFCTR_UCHE_SEL_3 0xe91
#define A4XX_UCHE_PERFCTR_UCHE_SEL_4 0xe92
#define A4XX_UCHE_PERFCTR_UCHE_SEL_5 0xe93
#define A4XX_UCHE_PERFCTR_UCHE_SEL_6 0xe94
#define A4XX_UCHE_PERFCTR_UCHE_SEL_7 0xe95
/* TPL1 registers */
enum a4xx_uche_perfctr_uche_sel {
UCHE_READ_REQUESTS_MARB = 0x8,
UCHE_READ_REQUESTS_SP = 0x9,
UCHE_WRITE_REQUESTS_MARB = 0xa,
UCHE_WRITE_REQUESTS_SP = 0xb,
UCHE_WRITE_REQUESTS_VPC = 0x14,
};
/* TPL1 registers */
#define A4XX_TPL1_TP_MODE_CONTROL 0xf03
#define A4XX_TPL1_PERFCTR_TP_SEL_0 0xf04
#define A4XX_TPL1_PERFCTR_TP_SEL_1 0xf05
#define A4XX_TPL1_PERFCTR_TP_SEL_2 0xf06
#define A4XX_TPL1_PERFCTR_TP_SEL_3 0xf07
#define A4XX_TPL1_PERFCTR_TP_SEL_4 0xf08
#define A4XX_TPL1_PERFCTR_TP_SEL_5 0xf09
#define A4XX_TPL1_PERFCTR_TP_SEL_6 0xf0a
#define A4XX_TPL1_PERFCTR_TP_SEL_7 0xf0b
#define A4XX_TPL1_TP_TEX_TSIZE_1 0x23a0
#define A4XX_TPL1_TP_CS_BORDER_COLOR_BASE_ADDR 0x23A4
#define A4XX_TPL1_TP_CS_SAMPLER_BASE_ADDR 0x23A5
#define A4XX_TPL1_TP_CS_TEXMEMOBJ_BASE_ADDR 0x23A6
enum a4xx_tpl1_perfctr_tp_sel {
TP_OUTPUT_TEXELS_POINT = 0x2,
TP_OUTPUT_TEXELS_BILINEAR = 0x3,
TP_OUTPUT_TEXELS_MIP = 0x4,
TP_OUTPUT_TEXELS_ANISO = 0x5,
TP_OUTPUT_TEXELS_OPS16 = 0x6,
TP_OUTPUT_TEXELS_OPS32 = 0x7,
TP_ZERO_LOD = 0xe,
TP_LATENCY = 0x12,
TP_LATENCY_TRANS = 0x13,
};
/* Enum for debug bus */
enum a4xx_rbbm_debbus_id {
A4XX_RBBM_DEBBUS_CP_ID = 0x1,
A4XX_RBBM_DEBBUS_RBBM_ID = 0x2,
A4XX_RBBM_DEBBUS_VBIF_ID = 0x3,
A4XX_RBBM_DEBBUS_HLSQ_ID = 0x4,
A4XX_RBBM_DEBBUS_UCHE_ID = 0x5,
A4XX_RBBM_DEBBUS_DPM_ID = 0x6,
A4XX_RBBM_DEBBUS_TESS_ID = 0x7,
A4XX_RBBM_DEBBUS_PC_ID = 0x8,
A4XX_RBBM_DEBBUS_VFD_ID = 0x9,
A4XX_RBBM_DEBBUS_VPC_ID = 0xa,
A4XX_RBBM_DEBBUS_TSE_ID = 0xb,
A4XX_RBBM_DEBBUS_RAS_ID = 0xc,
A4XX_RBBM_DEBBUS_VSC_ID = 0xd,
A4XX_RBBM_DEBBUS_COM_ID = 0xe,
A4XX_RBBM_DEBBUS_DCOM_ID = 0xf,
A4XX_RBBM_DEBBUS_SP_0_ID = 0x10,
A4XX_RBBM_DEBBUS_SP_1_ID = 0x11,
A4XX_RBBM_DEBBUS_SP_2_ID = 0x12,
A4XX_RBBM_DEBBUS_SP_3_ID = 0x13,
A4XX_RBBM_DEBBUS_TPL1_0_ID = 0x18,
A4XX_RBBM_DEBBUS_TPL1_1_ID = 0x19,
A4XX_RBBM_DEBBUS_TPL1_2_ID = 0x1a,
A4XX_RBBM_DEBBUS_TPL1_3_ID = 0x1b,
A4XX_RBBM_DEBBUS_RB_0_ID = 0x20,
A4XX_RBBM_DEBBUS_RB_1_ID = 0x21,
A4XX_RBBM_DEBBUS_RB_2_ID = 0x22,
A4XX_RBBM_DEBBUS_RB_3_ID = 0x23,
A4XX_RBBM_DEBBUS_MARB_0_ID = 0x28,
A4XX_RBBM_DEBBUS_MARB_1_ID = 0x29,
A4XX_RBBM_DEBBUS_MARB_2_ID = 0x2a,
A4XX_RBBM_DEBBUS_MARB_3_ID = 0x2b,
A4XX_RBBM_DEBBUS_CCU_0_ID = 0x30,
A4XX_RBBM_DEBBUS_CCU_1_ID = 0x31,
A4XX_RBBM_DEBBUS_CCU_2_ID = 0x32,
A4XX_RBBM_DEBBUS_CCU_3_ID = 0x33
};
#define A4XX_NUM_AXI_ARB_BLOCKS 2
#define A4XX_NUM_XIN_BLOCKS 5
#endif /* _A4XX_REG_H */