mtk-regs.h 6.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
/*
 * Support for MediaTek cryptographic accelerator.
 *
 * Copyright (c) 2016 MediaTek Inc.
 * Author: Ryder Lee <ryder.lee@mediatek.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License.
 *
 */

#ifndef __MTK_REGS_H__
#define __MTK_REGS_H__

/* HIA, Command Descriptor Ring Manager */
#define CDR_BASE_ADDR_LO(x)		(0x0 + ((x) << 12))
#define CDR_BASE_ADDR_HI(x)		(0x4 + ((x) << 12))
#define CDR_DATA_BASE_ADDR_LO(x)	(0x8 + ((x) << 12))
#define CDR_DATA_BASE_ADDR_HI(x)	(0xC + ((x) << 12))
#define CDR_ACD_BASE_ADDR_LO(x)		(0x10 + ((x) << 12))
#define CDR_ACD_BASE_ADDR_HI(x)		(0x14 + ((x) << 12))
#define CDR_RING_SIZE(x)		(0x18 + ((x) << 12))
#define CDR_DESC_SIZE(x)		(0x1C + ((x) << 12))
#define CDR_CFG(x)			(0x20 + ((x) << 12))
#define CDR_DMA_CFG(x)			(0x24 + ((x) << 12))
#define CDR_THRESH(x)			(0x28 + ((x) << 12))
#define CDR_PREP_COUNT(x)		(0x2C + ((x) << 12))
#define CDR_PROC_COUNT(x)		(0x30 + ((x) << 12))
#define CDR_PREP_PNTR(x)		(0x34 + ((x) << 12))
#define CDR_PROC_PNTR(x)		(0x38 + ((x) << 12))
#define CDR_STAT(x)			(0x3C + ((x) << 12))

/* HIA, Result Descriptor Ring Manager */
#define RDR_BASE_ADDR_LO(x)		(0x800 + ((x) << 12))
#define RDR_BASE_ADDR_HI(x)		(0x804 + ((x) << 12))
#define RDR_DATA_BASE_ADDR_LO(x)	(0x808 + ((x) << 12))
#define RDR_DATA_BASE_ADDR_HI(x)	(0x80C + ((x) << 12))
#define RDR_ACD_BASE_ADDR_LO(x)		(0x810 + ((x) << 12))
#define RDR_ACD_BASE_ADDR_HI(x)		(0x814 + ((x) << 12))
#define RDR_RING_SIZE(x)		(0x818 + ((x) << 12))
#define RDR_DESC_SIZE(x)		(0x81C + ((x) << 12))
#define RDR_CFG(x)			(0x820 + ((x) << 12))
#define RDR_DMA_CFG(x)			(0x824 + ((x) << 12))
#define RDR_THRESH(x)			(0x828 + ((x) << 12))
#define RDR_PREP_COUNT(x)		(0x82C + ((x) << 12))
#define RDR_PROC_COUNT(x)		(0x830 + ((x) << 12))
#define RDR_PREP_PNTR(x)		(0x834 + ((x) << 12))
#define RDR_PROC_PNTR(x)		(0x838 + ((x) << 12))
#define RDR_STAT(x)			(0x83C + ((x) << 12))

/* HIA, Ring AIC */
#define AIC_POL_CTRL(x)			(0xE000 - ((x) << 12))
#define	AIC_TYPE_CTRL(x)		(0xE004 - ((x) << 12))
#define	AIC_ENABLE_CTRL(x)		(0xE008 - ((x) << 12))
#define	AIC_RAW_STAL(x)			(0xE00C - ((x) << 12))
#define	AIC_ENABLE_SET(x)		(0xE00C - ((x) << 12))
#define	AIC_ENABLED_STAT(x)		(0xE010 - ((x) << 12))
#define	AIC_ACK(x)			(0xE010 - ((x) << 12))
#define	AIC_ENABLE_CLR(x)		(0xE014 - ((x) << 12))
#define	AIC_OPTIONS(x)			(0xE018 - ((x) << 12))
#define	AIC_VERSION(x)			(0xE01C - ((x) << 12))

/* HIA, Global AIC */
#define AIC_G_POL_CTRL			0xF800
#define AIC_G_TYPE_CTRL			0xF804
#define AIC_G_ENABLE_CTRL		0xF808
#define AIC_G_RAW_STAT			0xF80C
#define AIC_G_ENABLE_SET		0xF80C
#define AIC_G_ENABLED_STAT		0xF810
#define AIC_G_ACK			0xF810
#define AIC_G_ENABLE_CLR		0xF814
#define AIC_G_OPTIONS			0xF818
#define AIC_G_VERSION			0xF81C

/* HIA, Data Fetch Engine */
#define DFE_CFG				0xF000
#define DFE_PRIO_0			0xF010
#define DFE_PRIO_1			0xF014
#define DFE_PRIO_2			0xF018
#define DFE_PRIO_3			0xF01C

/* HIA, Data Fetch Engine access monitoring for CDR */
#define DFE_RING_REGION_LO(x)		(0xF080 + ((x) << 3))
#define DFE_RING_REGION_HI(x)		(0xF084 + ((x) << 3))

/* HIA, Data Fetch Engine thread control and status for thread */
#define DFE_THR_CTRL			0xF200
#define DFE_THR_STAT			0xF204
#define DFE_THR_DESC_CTRL		0xF208
#define DFE_THR_DESC_DPTR_LO		0xF210
#define DFE_THR_DESC_DPTR_HI		0xF214
#define DFE_THR_DESC_ACDPTR_LO		0xF218
#define DFE_THR_DESC_ACDPTR_HI		0xF21C

/* HIA, Data Store Engine */
#define DSE_CFG				0xF400
#define DSE_PRIO_0			0xF410
#define DSE_PRIO_1			0xF414
#define DSE_PRIO_2			0xF418
#define DSE_PRIO_3			0xF41C

/* HIA, Data Store Engine access monitoring for RDR */
#define DSE_RING_REGION_LO(x)		(0xF480 + ((x) << 3))
#define DSE_RING_REGION_HI(x)		(0xF484 + ((x) << 3))

/* HIA, Data Store Engine thread control and status for thread */
#define DSE_THR_CTRL			0xF600
#define DSE_THR_STAT			0xF604
#define DSE_THR_DESC_CTRL		0xF608
#define DSE_THR_DESC_DPTR_LO		0xF610
#define DSE_THR_DESC_DPTR_HI		0xF614
#define DSE_THR_DESC_S_DPTR_LO		0xF618
#define DSE_THR_DESC_S_DPTR_HI		0xF61C
#define DSE_THR_ERROR_STAT		0xF620

/* HIA Global */
#define HIA_MST_CTRL			0xFFF4
#define HIA_OPTIONS			0xFFF8
#define HIA_VERSION			0xFFFC

/* Processing Engine Input Side, Processing Engine */
#define PE_IN_DBUF_THRESH		0x10000
#define PE_IN_TBUF_THRESH		0x10100

/* Packet Engine Configuration / Status Registers */
#define PE_TOKEN_CTRL_STAT		0x11000
#define PE_FUNCTION_EN			0x11004
#define PE_CONTEXT_CTRL			0x11008
#define PE_INTERRUPT_CTRL_STAT		0x11010
#define PE_CONTEXT_STAT			0x1100C
#define PE_OUT_TRANS_CTRL_STAT		0x11018
#define PE_OUT_BUF_CTRL			0x1101C

/* Packet Engine PRNG Registers */
#define PE_PRNG_STAT			0x11040
#define PE_PRNG_CTRL			0x11044
#define PE_PRNG_SEED_L			0x11048
#define PE_PRNG_SEED_H			0x1104C
#define PE_PRNG_KEY_0_L			0x11050
#define PE_PRNG_KEY_0_H			0x11054
#define PE_PRNG_KEY_1_L			0x11058
#define PE_PRNG_KEY_1_H			0x1105C
#define PE_PRNG_RES_0			0x11060
#define PE_PRNG_RES_1			0x11064
#define PE_PRNG_RES_2			0x11068
#define PE_PRNG_RES_3			0x1106C
#define PE_PRNG_LFSR_L			0x11070
#define PE_PRNG_LFSR_H			0x11074

/* Packet Engine AIC */
#define PE_EIP96_AIC_POL_CTRL		0x113C0
#define PE_EIP96_AIC_TYPE_CTRL		0x113C4
#define PE_EIP96_AIC_ENABLE_CTRL	0x113C8
#define PE_EIP96_AIC_RAW_STAT		0x113CC
#define PE_EIP96_AIC_ENABLE_SET		0x113CC
#define PE_EIP96_AIC_ENABLED_STAT	0x113D0
#define PE_EIP96_AIC_ACK		0x113D0
#define PE_EIP96_AIC_ENABLE_CLR		0x113D4
#define PE_EIP96_AIC_OPTIONS		0x113D8
#define PE_EIP96_AIC_VERSION		0x113DC

/* Packet Engine Options & Version Registers */
#define PE_EIP96_OPTIONS		0x113F8
#define PE_EIP96_VERSION		0x113FC

/* Processing Engine Output Side */
#define PE_OUT_DBUF_THRESH		0x11C00
#define PE_OUT_TBUF_THRESH		0x11D00

/* Processing Engine Local AIC */
#define PE_AIC_POL_CTRL			0x11F00
#define PE_AIC_TYPE_CTRL		0x11F04
#define PE_AIC_ENABLE_CTRL		0x11F08
#define PE_AIC_RAW_STAT			0x11F0C
#define PE_AIC_ENABLE_SET		0x11F0C
#define PE_AIC_ENABLED_STAT		0x11F10
#define PE_AIC_ENABLE_CLR		0x11F14
#define PE_AIC_OPTIONS			0x11F18
#define PE_AIC_VERSION			0x11F1C

/* Processing Engine General Configuration and Version */
#define PE_IN_FLIGHT			0x11FF0
#define PE_OPTIONS			0x11FF8
#define PE_VERSION			0x11FFC

/* EIP-97 - Global */
#define EIP97_CLOCK_STATE		0x1FFE4
#define EIP97_FORCE_CLOCK_ON		0x1FFE8
#define EIP97_FORCE_CLOCK_OFF		0x1FFEC
#define EIP97_MST_CTRL			0x1FFF4
#define EIP97_OPTIONS			0x1FFF8
#define EIP97_VERSION			0x1FFFC
#endif /* __MTK_REGS_H__ */