1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* Copyright 2010-2017 ARM Limited. All rights reserved. 3*4882a593Smuzhiyun * Copyright 2017-2019 Qiang Yu <yuq825@gmail.com> 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #ifndef __LIMA_REGS_H__ 7*4882a593Smuzhiyun #define __LIMA_REGS_H__ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun /* This file's register definition is collected from the 10*4882a593Smuzhiyun * official ARM Mali Utgard GPU kernel driver source code 11*4882a593Smuzhiyun */ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun /* PMU regs */ 14*4882a593Smuzhiyun #define LIMA_PMU_POWER_UP 0x00 15*4882a593Smuzhiyun #define LIMA_PMU_POWER_DOWN 0x04 16*4882a593Smuzhiyun #define LIMA_PMU_POWER_GP0_MASK BIT(0) 17*4882a593Smuzhiyun #define LIMA_PMU_POWER_L2_MASK BIT(1) 18*4882a593Smuzhiyun #define LIMA_PMU_POWER_PP_MASK(i) BIT(2 + i) 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun /* 21*4882a593Smuzhiyun * On Mali450 each block automatically starts up its corresponding L2 22*4882a593Smuzhiyun * and the PPs are not fully independent controllable. 23*4882a593Smuzhiyun * Instead PP0, PP1-3 and PP4-7 can be turned on or off. 24*4882a593Smuzhiyun */ 25*4882a593Smuzhiyun #define LIMA450_PMU_POWER_PP0_MASK BIT(1) 26*4882a593Smuzhiyun #define LIMA450_PMU_POWER_PP13_MASK BIT(2) 27*4882a593Smuzhiyun #define LIMA450_PMU_POWER_PP47_MASK BIT(3) 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun #define LIMA_PMU_STATUS 0x08 30*4882a593Smuzhiyun #define LIMA_PMU_INT_MASK 0x0C 31*4882a593Smuzhiyun #define LIMA_PMU_INT_RAWSTAT 0x10 32*4882a593Smuzhiyun #define LIMA_PMU_INT_CLEAR 0x18 33*4882a593Smuzhiyun #define LIMA_PMU_INT_CMD_MASK BIT(0) 34*4882a593Smuzhiyun #define LIMA_PMU_SW_DELAY 0x1C 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun /* L2 cache regs */ 37*4882a593Smuzhiyun #define LIMA_L2_CACHE_SIZE 0x0004 38*4882a593Smuzhiyun #define LIMA_L2_CACHE_STATUS 0x0008 39*4882a593Smuzhiyun #define LIMA_L2_CACHE_STATUS_COMMAND_BUSY BIT(0) 40*4882a593Smuzhiyun #define LIMA_L2_CACHE_STATUS_DATA_BUSY BIT(1) 41*4882a593Smuzhiyun #define LIMA_L2_CACHE_COMMAND 0x0010 42*4882a593Smuzhiyun #define LIMA_L2_CACHE_COMMAND_CLEAR_ALL BIT(0) 43*4882a593Smuzhiyun #define LIMA_L2_CACHE_CLEAR_PAGE 0x0014 44*4882a593Smuzhiyun #define LIMA_L2_CACHE_MAX_READS 0x0018 45*4882a593Smuzhiyun #define LIMA_L2_CACHE_ENABLE 0x001C 46*4882a593Smuzhiyun #define LIMA_L2_CACHE_ENABLE_ACCESS BIT(0) 47*4882a593Smuzhiyun #define LIMA_L2_CACHE_ENABLE_READ_ALLOCATE BIT(1) 48*4882a593Smuzhiyun #define LIMA_L2_CACHE_PERFCNT_SRC0 0x0020 49*4882a593Smuzhiyun #define LIMA_L2_CACHE_PERFCNT_VAL0 0x0024 50*4882a593Smuzhiyun #define LIMA_L2_CACHE_PERFCNT_SRC1 0x0028 51*4882a593Smuzhiyun #define LIMA_L2_CACHE_ERFCNT_VAL1 0x002C 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun /* GP regs */ 54*4882a593Smuzhiyun #define LIMA_GP_VSCL_START_ADDR 0x00 55*4882a593Smuzhiyun #define LIMA_GP_VSCL_END_ADDR 0x04 56*4882a593Smuzhiyun #define LIMA_GP_PLBUCL_START_ADDR 0x08 57*4882a593Smuzhiyun #define LIMA_GP_PLBUCL_END_ADDR 0x0c 58*4882a593Smuzhiyun #define LIMA_GP_PLBU_ALLOC_START_ADDR 0x10 59*4882a593Smuzhiyun #define LIMA_GP_PLBU_ALLOC_END_ADDR 0x14 60*4882a593Smuzhiyun #define LIMA_GP_CMD 0x20 61*4882a593Smuzhiyun #define LIMA_GP_CMD_START_VS BIT(0) 62*4882a593Smuzhiyun #define LIMA_GP_CMD_START_PLBU BIT(1) 63*4882a593Smuzhiyun #define LIMA_GP_CMD_UPDATE_PLBU_ALLOC BIT(4) 64*4882a593Smuzhiyun #define LIMA_GP_CMD_RESET BIT(5) 65*4882a593Smuzhiyun #define LIMA_GP_CMD_FORCE_HANG BIT(6) 66*4882a593Smuzhiyun #define LIMA_GP_CMD_STOP_BUS BIT(9) 67*4882a593Smuzhiyun #define LIMA_GP_CMD_SOFT_RESET BIT(10) 68*4882a593Smuzhiyun #define LIMA_GP_INT_RAWSTAT 0x24 69*4882a593Smuzhiyun #define LIMA_GP_INT_CLEAR 0x28 70*4882a593Smuzhiyun #define LIMA_GP_INT_MASK 0x2C 71*4882a593Smuzhiyun #define LIMA_GP_INT_STAT 0x30 72*4882a593Smuzhiyun #define LIMA_GP_IRQ_VS_END_CMD_LST BIT(0) 73*4882a593Smuzhiyun #define LIMA_GP_IRQ_PLBU_END_CMD_LST BIT(1) 74*4882a593Smuzhiyun #define LIMA_GP_IRQ_PLBU_OUT_OF_MEM BIT(2) 75*4882a593Smuzhiyun #define LIMA_GP_IRQ_VS_SEM_IRQ BIT(3) 76*4882a593Smuzhiyun #define LIMA_GP_IRQ_PLBU_SEM_IRQ BIT(4) 77*4882a593Smuzhiyun #define LIMA_GP_IRQ_HANG BIT(5) 78*4882a593Smuzhiyun #define LIMA_GP_IRQ_FORCE_HANG BIT(6) 79*4882a593Smuzhiyun #define LIMA_GP_IRQ_PERF_CNT_0_LIMIT BIT(7) 80*4882a593Smuzhiyun #define LIMA_GP_IRQ_PERF_CNT_1_LIMIT BIT(8) 81*4882a593Smuzhiyun #define LIMA_GP_IRQ_WRITE_BOUND_ERR BIT(9) 82*4882a593Smuzhiyun #define LIMA_GP_IRQ_SYNC_ERROR BIT(10) 83*4882a593Smuzhiyun #define LIMA_GP_IRQ_AXI_BUS_ERROR BIT(11) 84*4882a593Smuzhiyun #define LIMA_GP_IRQ_AXI_BUS_STOPPED BIT(12) 85*4882a593Smuzhiyun #define LIMA_GP_IRQ_VS_INVALID_CMD BIT(13) 86*4882a593Smuzhiyun #define LIMA_GP_IRQ_PLB_INVALID_CMD BIT(14) 87*4882a593Smuzhiyun #define LIMA_GP_IRQ_RESET_COMPLETED BIT(19) 88*4882a593Smuzhiyun #define LIMA_GP_IRQ_SEMAPHORE_UNDERFLOW BIT(20) 89*4882a593Smuzhiyun #define LIMA_GP_IRQ_SEMAPHORE_OVERFLOW BIT(21) 90*4882a593Smuzhiyun #define LIMA_GP_IRQ_PTR_ARRAY_OUT_OF_BOUNDS BIT(22) 91*4882a593Smuzhiyun #define LIMA_GP_WRITE_BOUND_LOW 0x34 92*4882a593Smuzhiyun #define LIMA_GP_PERF_CNT_0_ENABLE 0x3C 93*4882a593Smuzhiyun #define LIMA_GP_PERF_CNT_1_ENABLE 0x40 94*4882a593Smuzhiyun #define LIMA_GP_PERF_CNT_0_SRC 0x44 95*4882a593Smuzhiyun #define LIMA_GP_PERF_CNT_1_SRC 0x48 96*4882a593Smuzhiyun #define LIMA_GP_PERF_CNT_0_VALUE 0x4C 97*4882a593Smuzhiyun #define LIMA_GP_PERF_CNT_1_VALUE 0x50 98*4882a593Smuzhiyun #define LIMA_GP_PERF_CNT_0_LIMIT 0x54 99*4882a593Smuzhiyun #define LIMA_GP_STATUS 0x68 100*4882a593Smuzhiyun #define LIMA_GP_STATUS_VS_ACTIVE BIT(1) 101*4882a593Smuzhiyun #define LIMA_GP_STATUS_BUS_STOPPED BIT(2) 102*4882a593Smuzhiyun #define LIMA_GP_STATUS_PLBU_ACTIVE BIT(3) 103*4882a593Smuzhiyun #define LIMA_GP_STATUS_BUS_ERROR BIT(6) 104*4882a593Smuzhiyun #define LIMA_GP_STATUS_WRITE_BOUND_ERR BIT(8) 105*4882a593Smuzhiyun #define LIMA_GP_VERSION 0x6C 106*4882a593Smuzhiyun #define LIMA_GP_VSCL_START_ADDR_READ 0x80 107*4882a593Smuzhiyun #define LIMA_GP_PLBCL_START_ADDR_READ 0x84 108*4882a593Smuzhiyun #define LIMA_GP_CONTR_AXI_BUS_ERROR_STAT 0x94 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun #define LIMA_GP_IRQ_MASK_ALL \ 111*4882a593Smuzhiyun ( \ 112*4882a593Smuzhiyun LIMA_GP_IRQ_VS_END_CMD_LST | \ 113*4882a593Smuzhiyun LIMA_GP_IRQ_PLBU_END_CMD_LST | \ 114*4882a593Smuzhiyun LIMA_GP_IRQ_PLBU_OUT_OF_MEM | \ 115*4882a593Smuzhiyun LIMA_GP_IRQ_VS_SEM_IRQ | \ 116*4882a593Smuzhiyun LIMA_GP_IRQ_PLBU_SEM_IRQ | \ 117*4882a593Smuzhiyun LIMA_GP_IRQ_HANG | \ 118*4882a593Smuzhiyun LIMA_GP_IRQ_FORCE_HANG | \ 119*4882a593Smuzhiyun LIMA_GP_IRQ_PERF_CNT_0_LIMIT | \ 120*4882a593Smuzhiyun LIMA_GP_IRQ_PERF_CNT_1_LIMIT | \ 121*4882a593Smuzhiyun LIMA_GP_IRQ_WRITE_BOUND_ERR | \ 122*4882a593Smuzhiyun LIMA_GP_IRQ_SYNC_ERROR | \ 123*4882a593Smuzhiyun LIMA_GP_IRQ_AXI_BUS_ERROR | \ 124*4882a593Smuzhiyun LIMA_GP_IRQ_AXI_BUS_STOPPED | \ 125*4882a593Smuzhiyun LIMA_GP_IRQ_VS_INVALID_CMD | \ 126*4882a593Smuzhiyun LIMA_GP_IRQ_PLB_INVALID_CMD | \ 127*4882a593Smuzhiyun LIMA_GP_IRQ_RESET_COMPLETED | \ 128*4882a593Smuzhiyun LIMA_GP_IRQ_SEMAPHORE_UNDERFLOW | \ 129*4882a593Smuzhiyun LIMA_GP_IRQ_SEMAPHORE_OVERFLOW | \ 130*4882a593Smuzhiyun LIMA_GP_IRQ_PTR_ARRAY_OUT_OF_BOUNDS) 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun #define LIMA_GP_IRQ_MASK_ERROR \ 133*4882a593Smuzhiyun ( \ 134*4882a593Smuzhiyun LIMA_GP_IRQ_PLBU_OUT_OF_MEM | \ 135*4882a593Smuzhiyun LIMA_GP_IRQ_FORCE_HANG | \ 136*4882a593Smuzhiyun LIMA_GP_IRQ_WRITE_BOUND_ERR | \ 137*4882a593Smuzhiyun LIMA_GP_IRQ_SYNC_ERROR | \ 138*4882a593Smuzhiyun LIMA_GP_IRQ_AXI_BUS_ERROR | \ 139*4882a593Smuzhiyun LIMA_GP_IRQ_VS_INVALID_CMD | \ 140*4882a593Smuzhiyun LIMA_GP_IRQ_PLB_INVALID_CMD | \ 141*4882a593Smuzhiyun LIMA_GP_IRQ_SEMAPHORE_UNDERFLOW | \ 142*4882a593Smuzhiyun LIMA_GP_IRQ_SEMAPHORE_OVERFLOW | \ 143*4882a593Smuzhiyun LIMA_GP_IRQ_PTR_ARRAY_OUT_OF_BOUNDS) 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun #define LIMA_GP_IRQ_MASK_USED \ 146*4882a593Smuzhiyun ( \ 147*4882a593Smuzhiyun LIMA_GP_IRQ_VS_END_CMD_LST | \ 148*4882a593Smuzhiyun LIMA_GP_IRQ_PLBU_END_CMD_LST | \ 149*4882a593Smuzhiyun LIMA_GP_IRQ_MASK_ERROR) 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun /* PP regs */ 152*4882a593Smuzhiyun #define LIMA_PP_FRAME 0x0000 153*4882a593Smuzhiyun #define LIMA_PP_RSW 0x0004 154*4882a593Smuzhiyun #define LIMA_PP_STACK 0x0030 155*4882a593Smuzhiyun #define LIMA_PP_STACK_SIZE 0x0034 156*4882a593Smuzhiyun #define LIMA_PP_ORIGIN_OFFSET_X 0x0040 157*4882a593Smuzhiyun #define LIMA_PP_WB(i) (0x0100 * (i + 1)) 158*4882a593Smuzhiyun #define LIMA_PP_WB_SOURCE_SELECT 0x0000 159*4882a593Smuzhiyun #define LIMA_PP_WB_SOURCE_ADDR 0x0004 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun #define LIMA_PP_VERSION 0x1000 162*4882a593Smuzhiyun #define LIMA_PP_CURRENT_REND_LIST_ADDR 0x1004 163*4882a593Smuzhiyun #define LIMA_PP_STATUS 0x1008 164*4882a593Smuzhiyun #define LIMA_PP_STATUS_RENDERING_ACTIVE BIT(0) 165*4882a593Smuzhiyun #define LIMA_PP_STATUS_BUS_STOPPED BIT(4) 166*4882a593Smuzhiyun #define LIMA_PP_CTRL 0x100c 167*4882a593Smuzhiyun #define LIMA_PP_CTRL_STOP_BUS BIT(0) 168*4882a593Smuzhiyun #define LIMA_PP_CTRL_FLUSH_CACHES BIT(3) 169*4882a593Smuzhiyun #define LIMA_PP_CTRL_FORCE_RESET BIT(5) 170*4882a593Smuzhiyun #define LIMA_PP_CTRL_START_RENDERING BIT(6) 171*4882a593Smuzhiyun #define LIMA_PP_CTRL_SOFT_RESET BIT(7) 172*4882a593Smuzhiyun #define LIMA_PP_INT_RAWSTAT 0x1020 173*4882a593Smuzhiyun #define LIMA_PP_INT_CLEAR 0x1024 174*4882a593Smuzhiyun #define LIMA_PP_INT_MASK 0x1028 175*4882a593Smuzhiyun #define LIMA_PP_INT_STATUS 0x102c 176*4882a593Smuzhiyun #define LIMA_PP_IRQ_END_OF_FRAME BIT(0) 177*4882a593Smuzhiyun #define LIMA_PP_IRQ_END_OF_TILE BIT(1) 178*4882a593Smuzhiyun #define LIMA_PP_IRQ_HANG BIT(2) 179*4882a593Smuzhiyun #define LIMA_PP_IRQ_FORCE_HANG BIT(3) 180*4882a593Smuzhiyun #define LIMA_PP_IRQ_BUS_ERROR BIT(4) 181*4882a593Smuzhiyun #define LIMA_PP_IRQ_BUS_STOP BIT(5) 182*4882a593Smuzhiyun #define LIMA_PP_IRQ_CNT_0_LIMIT BIT(6) 183*4882a593Smuzhiyun #define LIMA_PP_IRQ_CNT_1_LIMIT BIT(7) 184*4882a593Smuzhiyun #define LIMA_PP_IRQ_WRITE_BOUNDARY_ERROR BIT(8) 185*4882a593Smuzhiyun #define LIMA_PP_IRQ_INVALID_PLIST_COMMAND BIT(9) 186*4882a593Smuzhiyun #define LIMA_PP_IRQ_CALL_STACK_UNDERFLOW BIT(10) 187*4882a593Smuzhiyun #define LIMA_PP_IRQ_CALL_STACK_OVERFLOW BIT(11) 188*4882a593Smuzhiyun #define LIMA_PP_IRQ_RESET_COMPLETED BIT(12) 189*4882a593Smuzhiyun #define LIMA_PP_WRITE_BOUNDARY_LOW 0x1044 190*4882a593Smuzhiyun #define LIMA_PP_BUS_ERROR_STATUS 0x1050 191*4882a593Smuzhiyun #define LIMA_PP_PERF_CNT_0_ENABLE 0x1080 192*4882a593Smuzhiyun #define LIMA_PP_PERF_CNT_0_SRC 0x1084 193*4882a593Smuzhiyun #define LIMA_PP_PERF_CNT_0_LIMIT 0x1088 194*4882a593Smuzhiyun #define LIMA_PP_PERF_CNT_0_VALUE 0x108c 195*4882a593Smuzhiyun #define LIMA_PP_PERF_CNT_1_ENABLE 0x10a0 196*4882a593Smuzhiyun #define LIMA_PP_PERF_CNT_1_SRC 0x10a4 197*4882a593Smuzhiyun #define LIMA_PP_PERF_CNT_1_LIMIT 0x10a8 198*4882a593Smuzhiyun #define LIMA_PP_PERF_CNT_1_VALUE 0x10ac 199*4882a593Smuzhiyun #define LIMA_PP_PERFMON_CONTR 0x10b0 200*4882a593Smuzhiyun #define LIMA_PP_PERFMON_BASE 0x10b4 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun #define LIMA_PP_IRQ_MASK_ALL \ 203*4882a593Smuzhiyun ( \ 204*4882a593Smuzhiyun LIMA_PP_IRQ_END_OF_FRAME | \ 205*4882a593Smuzhiyun LIMA_PP_IRQ_END_OF_TILE | \ 206*4882a593Smuzhiyun LIMA_PP_IRQ_HANG | \ 207*4882a593Smuzhiyun LIMA_PP_IRQ_FORCE_HANG | \ 208*4882a593Smuzhiyun LIMA_PP_IRQ_BUS_ERROR | \ 209*4882a593Smuzhiyun LIMA_PP_IRQ_BUS_STOP | \ 210*4882a593Smuzhiyun LIMA_PP_IRQ_CNT_0_LIMIT | \ 211*4882a593Smuzhiyun LIMA_PP_IRQ_CNT_1_LIMIT | \ 212*4882a593Smuzhiyun LIMA_PP_IRQ_WRITE_BOUNDARY_ERROR | \ 213*4882a593Smuzhiyun LIMA_PP_IRQ_INVALID_PLIST_COMMAND | \ 214*4882a593Smuzhiyun LIMA_PP_IRQ_CALL_STACK_UNDERFLOW | \ 215*4882a593Smuzhiyun LIMA_PP_IRQ_CALL_STACK_OVERFLOW | \ 216*4882a593Smuzhiyun LIMA_PP_IRQ_RESET_COMPLETED) 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun #define LIMA_PP_IRQ_MASK_ERROR \ 219*4882a593Smuzhiyun ( \ 220*4882a593Smuzhiyun LIMA_PP_IRQ_FORCE_HANG | \ 221*4882a593Smuzhiyun LIMA_PP_IRQ_BUS_ERROR | \ 222*4882a593Smuzhiyun LIMA_PP_IRQ_WRITE_BOUNDARY_ERROR | \ 223*4882a593Smuzhiyun LIMA_PP_IRQ_INVALID_PLIST_COMMAND | \ 224*4882a593Smuzhiyun LIMA_PP_IRQ_CALL_STACK_UNDERFLOW | \ 225*4882a593Smuzhiyun LIMA_PP_IRQ_CALL_STACK_OVERFLOW) 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun #define LIMA_PP_IRQ_MASK_USED \ 228*4882a593Smuzhiyun ( \ 229*4882a593Smuzhiyun LIMA_PP_IRQ_END_OF_FRAME | \ 230*4882a593Smuzhiyun LIMA_PP_IRQ_MASK_ERROR) 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun /* MMU regs */ 233*4882a593Smuzhiyun #define LIMA_MMU_DTE_ADDR 0x0000 234*4882a593Smuzhiyun #define LIMA_MMU_STATUS 0x0004 235*4882a593Smuzhiyun #define LIMA_MMU_STATUS_PAGING_ENABLED BIT(0) 236*4882a593Smuzhiyun #define LIMA_MMU_STATUS_PAGE_FAULT_ACTIVE BIT(1) 237*4882a593Smuzhiyun #define LIMA_MMU_STATUS_STALL_ACTIVE BIT(2) 238*4882a593Smuzhiyun #define LIMA_MMU_STATUS_IDLE BIT(3) 239*4882a593Smuzhiyun #define LIMA_MMU_STATUS_REPLAY_BUFFER_EMPTY BIT(4) 240*4882a593Smuzhiyun #define LIMA_MMU_STATUS_PAGE_FAULT_IS_WRITE BIT(5) 241*4882a593Smuzhiyun #define LIMA_MMU_STATUS_BUS_ID(x) ((x >> 6) & 0x1F) 242*4882a593Smuzhiyun #define LIMA_MMU_STATUS_STALL_NOT_ACTIVE BIT(31) 243*4882a593Smuzhiyun #define LIMA_MMU_COMMAND 0x0008 244*4882a593Smuzhiyun #define LIMA_MMU_COMMAND_ENABLE_PAGING 0x00 245*4882a593Smuzhiyun #define LIMA_MMU_COMMAND_DISABLE_PAGING 0x01 246*4882a593Smuzhiyun #define LIMA_MMU_COMMAND_ENABLE_STALL 0x02 247*4882a593Smuzhiyun #define LIMA_MMU_COMMAND_DISABLE_STALL 0x03 248*4882a593Smuzhiyun #define LIMA_MMU_COMMAND_ZAP_CACHE 0x04 249*4882a593Smuzhiyun #define LIMA_MMU_COMMAND_PAGE_FAULT_DONE 0x05 250*4882a593Smuzhiyun #define LIMA_MMU_COMMAND_HARD_RESET 0x06 251*4882a593Smuzhiyun #define LIMA_MMU_PAGE_FAULT_ADDR 0x000C 252*4882a593Smuzhiyun #define LIMA_MMU_ZAP_ONE_LINE 0x0010 253*4882a593Smuzhiyun #define LIMA_MMU_INT_RAWSTAT 0x0014 254*4882a593Smuzhiyun #define LIMA_MMU_INT_CLEAR 0x0018 255*4882a593Smuzhiyun #define LIMA_MMU_INT_MASK 0x001C 256*4882a593Smuzhiyun #define LIMA_MMU_INT_PAGE_FAULT BIT(0) 257*4882a593Smuzhiyun #define LIMA_MMU_INT_READ_BUS_ERROR BIT(1) 258*4882a593Smuzhiyun #define LIMA_MMU_INT_STATUS 0x0020 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun #define LIMA_VM_FLAG_PRESENT BIT(0) 261*4882a593Smuzhiyun #define LIMA_VM_FLAG_READ_PERMISSION BIT(1) 262*4882a593Smuzhiyun #define LIMA_VM_FLAG_WRITE_PERMISSION BIT(2) 263*4882a593Smuzhiyun #define LIMA_VM_FLAG_OVERRIDE_CACHE BIT(3) 264*4882a593Smuzhiyun #define LIMA_VM_FLAG_WRITE_CACHEABLE BIT(4) 265*4882a593Smuzhiyun #define LIMA_VM_FLAG_WRITE_ALLOCATE BIT(5) 266*4882a593Smuzhiyun #define LIMA_VM_FLAG_WRITE_BUFFERABLE BIT(6) 267*4882a593Smuzhiyun #define LIMA_VM_FLAG_READ_CACHEABLE BIT(7) 268*4882a593Smuzhiyun #define LIMA_VM_FLAG_READ_ALLOCATE BIT(8) 269*4882a593Smuzhiyun #define LIMA_VM_FLAG_MASK 0x1FF 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun #define LIMA_VM_FLAGS_CACHE ( \ 272*4882a593Smuzhiyun LIMA_VM_FLAG_PRESENT | \ 273*4882a593Smuzhiyun LIMA_VM_FLAG_READ_PERMISSION | \ 274*4882a593Smuzhiyun LIMA_VM_FLAG_WRITE_PERMISSION | \ 275*4882a593Smuzhiyun LIMA_VM_FLAG_OVERRIDE_CACHE | \ 276*4882a593Smuzhiyun LIMA_VM_FLAG_WRITE_CACHEABLE | \ 277*4882a593Smuzhiyun LIMA_VM_FLAG_WRITE_BUFFERABLE | \ 278*4882a593Smuzhiyun LIMA_VM_FLAG_READ_CACHEABLE | \ 279*4882a593Smuzhiyun LIMA_VM_FLAG_READ_ALLOCATE) 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun #define LIMA_VM_FLAGS_UNCACHE ( \ 282*4882a593Smuzhiyun LIMA_VM_FLAG_PRESENT | \ 283*4882a593Smuzhiyun LIMA_VM_FLAG_READ_PERMISSION | \ 284*4882a593Smuzhiyun LIMA_VM_FLAG_WRITE_PERMISSION) 285*4882a593Smuzhiyun 286*4882a593Smuzhiyun /* DLBU regs */ 287*4882a593Smuzhiyun #define LIMA_DLBU_MASTER_TLLIST_PHYS_ADDR 0x0000 288*4882a593Smuzhiyun #define LIMA_DLBU_MASTER_TLLIST_VADDR 0x0004 289*4882a593Smuzhiyun #define LIMA_DLBU_TLLIST_VBASEADDR 0x0008 290*4882a593Smuzhiyun #define LIMA_DLBU_FB_DIM 0x000C 291*4882a593Smuzhiyun #define LIMA_DLBU_TLLIST_CONF 0x0010 292*4882a593Smuzhiyun #define LIMA_DLBU_START_TILE_POS 0x0014 293*4882a593Smuzhiyun #define LIMA_DLBU_PP_ENABLE_MASK 0x0018 294*4882a593Smuzhiyun 295*4882a593Smuzhiyun /* BCAST regs */ 296*4882a593Smuzhiyun #define LIMA_BCAST_BROADCAST_MASK 0x0 297*4882a593Smuzhiyun #define LIMA_BCAST_INTERRUPT_MASK 0x4 298*4882a593Smuzhiyun 299*4882a593Smuzhiyun #endif 300