1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Support for MediaTek cryptographic accelerator. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (c) 2016 MediaTek Inc. 6*4882a593Smuzhiyun * Author: Ryder Lee <ryder.lee@mediatek.com> 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef __MTK_REGS_H__ 10*4882a593Smuzhiyun #define __MTK_REGS_H__ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun /* HIA, Command Descriptor Ring Manager */ 13*4882a593Smuzhiyun #define CDR_BASE_ADDR_LO(x) (0x0 + ((x) << 12)) 14*4882a593Smuzhiyun #define CDR_BASE_ADDR_HI(x) (0x4 + ((x) << 12)) 15*4882a593Smuzhiyun #define CDR_DATA_BASE_ADDR_LO(x) (0x8 + ((x) << 12)) 16*4882a593Smuzhiyun #define CDR_DATA_BASE_ADDR_HI(x) (0xC + ((x) << 12)) 17*4882a593Smuzhiyun #define CDR_ACD_BASE_ADDR_LO(x) (0x10 + ((x) << 12)) 18*4882a593Smuzhiyun #define CDR_ACD_BASE_ADDR_HI(x) (0x14 + ((x) << 12)) 19*4882a593Smuzhiyun #define CDR_RING_SIZE(x) (0x18 + ((x) << 12)) 20*4882a593Smuzhiyun #define CDR_DESC_SIZE(x) (0x1C + ((x) << 12)) 21*4882a593Smuzhiyun #define CDR_CFG(x) (0x20 + ((x) << 12)) 22*4882a593Smuzhiyun #define CDR_DMA_CFG(x) (0x24 + ((x) << 12)) 23*4882a593Smuzhiyun #define CDR_THRESH(x) (0x28 + ((x) << 12)) 24*4882a593Smuzhiyun #define CDR_PREP_COUNT(x) (0x2C + ((x) << 12)) 25*4882a593Smuzhiyun #define CDR_PROC_COUNT(x) (0x30 + ((x) << 12)) 26*4882a593Smuzhiyun #define CDR_PREP_PNTR(x) (0x34 + ((x) << 12)) 27*4882a593Smuzhiyun #define CDR_PROC_PNTR(x) (0x38 + ((x) << 12)) 28*4882a593Smuzhiyun #define CDR_STAT(x) (0x3C + ((x) << 12)) 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun /* HIA, Result Descriptor Ring Manager */ 31*4882a593Smuzhiyun #define RDR_BASE_ADDR_LO(x) (0x800 + ((x) << 12)) 32*4882a593Smuzhiyun #define RDR_BASE_ADDR_HI(x) (0x804 + ((x) << 12)) 33*4882a593Smuzhiyun #define RDR_DATA_BASE_ADDR_LO(x) (0x808 + ((x) << 12)) 34*4882a593Smuzhiyun #define RDR_DATA_BASE_ADDR_HI(x) (0x80C + ((x) << 12)) 35*4882a593Smuzhiyun #define RDR_ACD_BASE_ADDR_LO(x) (0x810 + ((x) << 12)) 36*4882a593Smuzhiyun #define RDR_ACD_BASE_ADDR_HI(x) (0x814 + ((x) << 12)) 37*4882a593Smuzhiyun #define RDR_RING_SIZE(x) (0x818 + ((x) << 12)) 38*4882a593Smuzhiyun #define RDR_DESC_SIZE(x) (0x81C + ((x) << 12)) 39*4882a593Smuzhiyun #define RDR_CFG(x) (0x820 + ((x) << 12)) 40*4882a593Smuzhiyun #define RDR_DMA_CFG(x) (0x824 + ((x) << 12)) 41*4882a593Smuzhiyun #define RDR_THRESH(x) (0x828 + ((x) << 12)) 42*4882a593Smuzhiyun #define RDR_PREP_COUNT(x) (0x82C + ((x) << 12)) 43*4882a593Smuzhiyun #define RDR_PROC_COUNT(x) (0x830 + ((x) << 12)) 44*4882a593Smuzhiyun #define RDR_PREP_PNTR(x) (0x834 + ((x) << 12)) 45*4882a593Smuzhiyun #define RDR_PROC_PNTR(x) (0x838 + ((x) << 12)) 46*4882a593Smuzhiyun #define RDR_STAT(x) (0x83C + ((x) << 12)) 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun /* HIA, Ring AIC */ 49*4882a593Smuzhiyun #define AIC_POL_CTRL(x) (0xE000 - ((x) << 12)) 50*4882a593Smuzhiyun #define AIC_TYPE_CTRL(x) (0xE004 - ((x) << 12)) 51*4882a593Smuzhiyun #define AIC_ENABLE_CTRL(x) (0xE008 - ((x) << 12)) 52*4882a593Smuzhiyun #define AIC_RAW_STAL(x) (0xE00C - ((x) << 12)) 53*4882a593Smuzhiyun #define AIC_ENABLE_SET(x) (0xE00C - ((x) << 12)) 54*4882a593Smuzhiyun #define AIC_ENABLED_STAT(x) (0xE010 - ((x) << 12)) 55*4882a593Smuzhiyun #define AIC_ACK(x) (0xE010 - ((x) << 12)) 56*4882a593Smuzhiyun #define AIC_ENABLE_CLR(x) (0xE014 - ((x) << 12)) 57*4882a593Smuzhiyun #define AIC_OPTIONS(x) (0xE018 - ((x) << 12)) 58*4882a593Smuzhiyun #define AIC_VERSION(x) (0xE01C - ((x) << 12)) 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun /* HIA, Global AIC */ 61*4882a593Smuzhiyun #define AIC_G_POL_CTRL 0xF800 62*4882a593Smuzhiyun #define AIC_G_TYPE_CTRL 0xF804 63*4882a593Smuzhiyun #define AIC_G_ENABLE_CTRL 0xF808 64*4882a593Smuzhiyun #define AIC_G_RAW_STAT 0xF80C 65*4882a593Smuzhiyun #define AIC_G_ENABLE_SET 0xF80C 66*4882a593Smuzhiyun #define AIC_G_ENABLED_STAT 0xF810 67*4882a593Smuzhiyun #define AIC_G_ACK 0xF810 68*4882a593Smuzhiyun #define AIC_G_ENABLE_CLR 0xF814 69*4882a593Smuzhiyun #define AIC_G_OPTIONS 0xF818 70*4882a593Smuzhiyun #define AIC_G_VERSION 0xF81C 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun /* HIA, Data Fetch Engine */ 73*4882a593Smuzhiyun #define DFE_CFG 0xF000 74*4882a593Smuzhiyun #define DFE_PRIO_0 0xF010 75*4882a593Smuzhiyun #define DFE_PRIO_1 0xF014 76*4882a593Smuzhiyun #define DFE_PRIO_2 0xF018 77*4882a593Smuzhiyun #define DFE_PRIO_3 0xF01C 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun /* HIA, Data Fetch Engine access monitoring for CDR */ 80*4882a593Smuzhiyun #define DFE_RING_REGION_LO(x) (0xF080 + ((x) << 3)) 81*4882a593Smuzhiyun #define DFE_RING_REGION_HI(x) (0xF084 + ((x) << 3)) 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun /* HIA, Data Fetch Engine thread control and status for thread */ 84*4882a593Smuzhiyun #define DFE_THR_CTRL 0xF200 85*4882a593Smuzhiyun #define DFE_THR_STAT 0xF204 86*4882a593Smuzhiyun #define DFE_THR_DESC_CTRL 0xF208 87*4882a593Smuzhiyun #define DFE_THR_DESC_DPTR_LO 0xF210 88*4882a593Smuzhiyun #define DFE_THR_DESC_DPTR_HI 0xF214 89*4882a593Smuzhiyun #define DFE_THR_DESC_ACDPTR_LO 0xF218 90*4882a593Smuzhiyun #define DFE_THR_DESC_ACDPTR_HI 0xF21C 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun /* HIA, Data Store Engine */ 93*4882a593Smuzhiyun #define DSE_CFG 0xF400 94*4882a593Smuzhiyun #define DSE_PRIO_0 0xF410 95*4882a593Smuzhiyun #define DSE_PRIO_1 0xF414 96*4882a593Smuzhiyun #define DSE_PRIO_2 0xF418 97*4882a593Smuzhiyun #define DSE_PRIO_3 0xF41C 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun /* HIA, Data Store Engine access monitoring for RDR */ 100*4882a593Smuzhiyun #define DSE_RING_REGION_LO(x) (0xF480 + ((x) << 3)) 101*4882a593Smuzhiyun #define DSE_RING_REGION_HI(x) (0xF484 + ((x) << 3)) 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun /* HIA, Data Store Engine thread control and status for thread */ 104*4882a593Smuzhiyun #define DSE_THR_CTRL 0xF600 105*4882a593Smuzhiyun #define DSE_THR_STAT 0xF604 106*4882a593Smuzhiyun #define DSE_THR_DESC_CTRL 0xF608 107*4882a593Smuzhiyun #define DSE_THR_DESC_DPTR_LO 0xF610 108*4882a593Smuzhiyun #define DSE_THR_DESC_DPTR_HI 0xF614 109*4882a593Smuzhiyun #define DSE_THR_DESC_S_DPTR_LO 0xF618 110*4882a593Smuzhiyun #define DSE_THR_DESC_S_DPTR_HI 0xF61C 111*4882a593Smuzhiyun #define DSE_THR_ERROR_STAT 0xF620 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun /* HIA Global */ 114*4882a593Smuzhiyun #define HIA_MST_CTRL 0xFFF4 115*4882a593Smuzhiyun #define HIA_OPTIONS 0xFFF8 116*4882a593Smuzhiyun #define HIA_VERSION 0xFFFC 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun /* Processing Engine Input Side, Processing Engine */ 119*4882a593Smuzhiyun #define PE_IN_DBUF_THRESH 0x10000 120*4882a593Smuzhiyun #define PE_IN_TBUF_THRESH 0x10100 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun /* Packet Engine Configuration / Status Registers */ 123*4882a593Smuzhiyun #define PE_TOKEN_CTRL_STAT 0x11000 124*4882a593Smuzhiyun #define PE_FUNCTION_EN 0x11004 125*4882a593Smuzhiyun #define PE_CONTEXT_CTRL 0x11008 126*4882a593Smuzhiyun #define PE_INTERRUPT_CTRL_STAT 0x11010 127*4882a593Smuzhiyun #define PE_CONTEXT_STAT 0x1100C 128*4882a593Smuzhiyun #define PE_OUT_TRANS_CTRL_STAT 0x11018 129*4882a593Smuzhiyun #define PE_OUT_BUF_CTRL 0x1101C 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun /* Packet Engine PRNG Registers */ 132*4882a593Smuzhiyun #define PE_PRNG_STAT 0x11040 133*4882a593Smuzhiyun #define PE_PRNG_CTRL 0x11044 134*4882a593Smuzhiyun #define PE_PRNG_SEED_L 0x11048 135*4882a593Smuzhiyun #define PE_PRNG_SEED_H 0x1104C 136*4882a593Smuzhiyun #define PE_PRNG_KEY_0_L 0x11050 137*4882a593Smuzhiyun #define PE_PRNG_KEY_0_H 0x11054 138*4882a593Smuzhiyun #define PE_PRNG_KEY_1_L 0x11058 139*4882a593Smuzhiyun #define PE_PRNG_KEY_1_H 0x1105C 140*4882a593Smuzhiyun #define PE_PRNG_RES_0 0x11060 141*4882a593Smuzhiyun #define PE_PRNG_RES_1 0x11064 142*4882a593Smuzhiyun #define PE_PRNG_RES_2 0x11068 143*4882a593Smuzhiyun #define PE_PRNG_RES_3 0x1106C 144*4882a593Smuzhiyun #define PE_PRNG_LFSR_L 0x11070 145*4882a593Smuzhiyun #define PE_PRNG_LFSR_H 0x11074 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun /* Packet Engine AIC */ 148*4882a593Smuzhiyun #define PE_EIP96_AIC_POL_CTRL 0x113C0 149*4882a593Smuzhiyun #define PE_EIP96_AIC_TYPE_CTRL 0x113C4 150*4882a593Smuzhiyun #define PE_EIP96_AIC_ENABLE_CTRL 0x113C8 151*4882a593Smuzhiyun #define PE_EIP96_AIC_RAW_STAT 0x113CC 152*4882a593Smuzhiyun #define PE_EIP96_AIC_ENABLE_SET 0x113CC 153*4882a593Smuzhiyun #define PE_EIP96_AIC_ENABLED_STAT 0x113D0 154*4882a593Smuzhiyun #define PE_EIP96_AIC_ACK 0x113D0 155*4882a593Smuzhiyun #define PE_EIP96_AIC_ENABLE_CLR 0x113D4 156*4882a593Smuzhiyun #define PE_EIP96_AIC_OPTIONS 0x113D8 157*4882a593Smuzhiyun #define PE_EIP96_AIC_VERSION 0x113DC 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun /* Packet Engine Options & Version Registers */ 160*4882a593Smuzhiyun #define PE_EIP96_OPTIONS 0x113F8 161*4882a593Smuzhiyun #define PE_EIP96_VERSION 0x113FC 162*4882a593Smuzhiyun 163*4882a593Smuzhiyun /* Processing Engine Output Side */ 164*4882a593Smuzhiyun #define PE_OUT_DBUF_THRESH 0x11C00 165*4882a593Smuzhiyun #define PE_OUT_TBUF_THRESH 0x11D00 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun /* Processing Engine Local AIC */ 168*4882a593Smuzhiyun #define PE_AIC_POL_CTRL 0x11F00 169*4882a593Smuzhiyun #define PE_AIC_TYPE_CTRL 0x11F04 170*4882a593Smuzhiyun #define PE_AIC_ENABLE_CTRL 0x11F08 171*4882a593Smuzhiyun #define PE_AIC_RAW_STAT 0x11F0C 172*4882a593Smuzhiyun #define PE_AIC_ENABLE_SET 0x11F0C 173*4882a593Smuzhiyun #define PE_AIC_ENABLED_STAT 0x11F10 174*4882a593Smuzhiyun #define PE_AIC_ENABLE_CLR 0x11F14 175*4882a593Smuzhiyun #define PE_AIC_OPTIONS 0x11F18 176*4882a593Smuzhiyun #define PE_AIC_VERSION 0x11F1C 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun /* Processing Engine General Configuration and Version */ 179*4882a593Smuzhiyun #define PE_IN_FLIGHT 0x11FF0 180*4882a593Smuzhiyun #define PE_OPTIONS 0x11FF8 181*4882a593Smuzhiyun #define PE_VERSION 0x11FFC 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun /* EIP-97 - Global */ 184*4882a593Smuzhiyun #define EIP97_CLOCK_STATE 0x1FFE4 185*4882a593Smuzhiyun #define EIP97_FORCE_CLOCK_ON 0x1FFE8 186*4882a593Smuzhiyun #define EIP97_FORCE_CLOCK_OFF 0x1FFEC 187*4882a593Smuzhiyun #define EIP97_MST_CTRL 0x1FFF4 188*4882a593Smuzhiyun #define EIP97_OPTIONS 0x1FFF8 189*4882a593Smuzhiyun #define EIP97_VERSION 0x1FFFC 190*4882a593Smuzhiyun #endif /* __MTK_REGS_H__ */ 191