1b356ddf0SMark Johnston /*- 24d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 3b356ddf0SMark Johnston * 4b356ddf0SMark Johnston * Copyright (c) 2020 Rubicon Communications, LLC (Netgate) 5b356ddf0SMark Johnston * 6b356ddf0SMark Johnston * Redistribution and use in source and binary forms, with or without 7b356ddf0SMark Johnston * modification, are permitted provided that the following conditions 8b356ddf0SMark Johnston * are met: 9b356ddf0SMark Johnston * 1. Redistributions of source code must retain the above copyright 10b356ddf0SMark Johnston * notice, this list of conditions and the following disclaimer. 11b356ddf0SMark Johnston * 2. Redistributions in binary form must reproduce the above copyright 12b356ddf0SMark Johnston * notice, this list of conditions and the following disclaimer in the 13b356ddf0SMark Johnston * documentation and/or other materials provided with the distribution. 14b356ddf0SMark Johnston * 15b356ddf0SMark Johnston * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16b356ddf0SMark Johnston * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17b356ddf0SMark Johnston * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18b356ddf0SMark Johnston * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19b356ddf0SMark Johnston * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20b356ddf0SMark Johnston * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21b356ddf0SMark Johnston * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22b356ddf0SMark Johnston * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23b356ddf0SMark Johnston * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24b356ddf0SMark Johnston * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25b356ddf0SMark Johnston */ 26b356ddf0SMark Johnston 27b356ddf0SMark Johnston #ifndef _SAFEXCEL_REGS_H_ 28b356ddf0SMark Johnston #define _SAFEXCEL_REGS_H_ 29b356ddf0SMark Johnston 30b356ddf0SMark Johnston #define SAFEXCEL_HIA_VERSION_LE 0x35ca 31b356ddf0SMark Johnston #define SAFEXCEL_HIA_VERSION_BE 0xca35 32b356ddf0SMark Johnston #define EIP201_VERSION_LE 0x36c9 33b356ddf0SMark Johnston #define SAFEXCEL_REG_LO16(_reg) ((_reg) & 0xffff) 34b356ddf0SMark Johnston #define SAFEXCEL_REG_HI16(_reg) (((_reg) >> 16) & 0xffff) 35b356ddf0SMark Johnston 36b356ddf0SMark Johnston /* HIA, Command Descriptor Ring Manager */ 37b356ddf0SMark Johnston #define CDR_BASE_ADDR_LO(x) (0x0 + ((x) << 12)) 38b356ddf0SMark Johnston #define CDR_BASE_ADDR_HI(x) (0x4 + ((x) << 12)) 39b356ddf0SMark Johnston #define CDR_DATA_BASE_ADDR_LO(x) (0x8 + ((x) << 12)) 40b356ddf0SMark Johnston #define CDR_DATA_BASE_ADDR_HI(x) (0xC + ((x) << 12)) 41b356ddf0SMark Johnston #define CDR_ACD_BASE_ADDR_LO(x) (0x10 + ((x) << 12)) 42b356ddf0SMark Johnston #define CDR_ACD_BASE_ADDR_HI(x) (0x14 + ((x) << 12)) 43b356ddf0SMark Johnston #define CDR_RING_SIZE(x) (0x18 + ((x) << 12)) 44b356ddf0SMark Johnston #define CDR_DESC_SIZE(x) (0x1C + ((x) << 12)) 45b356ddf0SMark Johnston #define CDR_CFG(x) (0x20 + ((x) << 12)) 46b356ddf0SMark Johnston #define CDR_DMA_CFG(x) (0x24 + ((x) << 12)) 47b356ddf0SMark Johnston #define CDR_THR(x) (0x28 + ((x) << 12)) 48b356ddf0SMark Johnston #define CDR_PREP_COUNT(x) (0x2C + ((x) << 12)) 49b356ddf0SMark Johnston #define CDR_PROC_COUNT(x) (0x30 + ((x) << 12)) 50b356ddf0SMark Johnston #define CDR_PREP_PNTR(x) (0x34 + ((x) << 12)) 51b356ddf0SMark Johnston #define CDR_PROC_PNTR(x) (0x38 + ((x) << 12)) 52b356ddf0SMark Johnston #define CDR_STAT(x) (0x3C + ((x) << 12)) 53b356ddf0SMark Johnston 54b356ddf0SMark Johnston /* HIA, Result Descriptor Ring Manager */ 55b356ddf0SMark Johnston #define RDR_BASE_ADDR_LO(x) (0x800 + ((x) << 12)) 56b356ddf0SMark Johnston #define RDR_BASE_ADDR_HI(x) (0x804 + ((x) << 12)) 57b356ddf0SMark Johnston #define RDR_DATA_BASE_ADDR_LO(x) (0x808 + ((x) << 12)) 58b356ddf0SMark Johnston #define RDR_DATA_BASE_ADDR_HI(x) (0x80C + ((x) << 12)) 59b356ddf0SMark Johnston #define RDR_ACD_BASE_ADDR_LO(x) (0x810 + ((x) << 12)) 60b356ddf0SMark Johnston #define RDR_ACD_BASE_ADDR_HI(x) (0x814 + ((x) << 12)) 61b356ddf0SMark Johnston #define RDR_RING_SIZE(x) (0x818 + ((x) << 12)) 62b356ddf0SMark Johnston #define RDR_DESC_SIZE(x) (0x81C + ((x) << 12)) 63b356ddf0SMark Johnston #define RDR_CFG(x) (0x820 + ((x) << 12)) 64b356ddf0SMark Johnston #define RDR_DMA_CFG(x) (0x824 + ((x) << 12)) 65b356ddf0SMark Johnston #define RDR_THR(x) (0x828 + ((x) << 12)) 66b356ddf0SMark Johnston #define RDR_PREP_COUNT(x) (0x82C + ((x) << 12)) 67b356ddf0SMark Johnston #define RDR_PROC_COUNT(x) (0x830 + ((x) << 12)) 68b356ddf0SMark Johnston #define RDR_PREP_PNTR(x) (0x834 + ((x) << 12)) 69b356ddf0SMark Johnston #define RDR_PROC_PNTR(x) (0x838 + ((x) << 12)) 70b356ddf0SMark Johnston #define RDR_STAT(x) (0x83C + ((x) << 12)) 71b356ddf0SMark Johnston 72b356ddf0SMark Johnston /* HIA, Ring AIC */ 73b356ddf0SMark Johnston #define AIC_POL_CTRL(x) (0xE000 - ((x) << 12)) 74b356ddf0SMark Johnston #define AIC_TYPE_CTRL(x) (0xE004 - ((x) << 12)) 75b356ddf0SMark Johnston #define AIC_ENABLE_CTRL(x) (0xE008 - ((x) << 12)) 76b356ddf0SMark Johnston #define AIC_RAW_STAL(x) (0xE00C - ((x) << 12)) 77b356ddf0SMark Johnston #define AIC_ENABLE_SET(x) (0xE00C - ((x) << 12)) 78b356ddf0SMark Johnston #define AIC_ENABLED_STAT(x) (0xE010 - ((x) << 12)) 79b356ddf0SMark Johnston #define AIC_ACK(x) (0xE010 - ((x) << 12)) 80b356ddf0SMark Johnston #define AIC_ENABLE_CLR(x) (0xE014 - ((x) << 12)) 81b356ddf0SMark Johnston #define AIC_OPTIONS(x) (0xE018 - ((x) << 12)) 82b356ddf0SMark Johnston #define AIC_VERSION(x) (0xE01C - ((x) << 12)) 83b356ddf0SMark Johnston 84b356ddf0SMark Johnston /* HIA, Global AIC */ 85b356ddf0SMark Johnston #define AIC_G_POL_CTRL 0xF800 86b356ddf0SMark Johnston #define AIC_G_TYPE_CTRL 0xF804 87b356ddf0SMark Johnston #define AIC_G_ENABLE_CTRL 0xF808 88b356ddf0SMark Johnston #define AIC_G_RAW_STAT 0xF80C 89b356ddf0SMark Johnston #define AIC_G_ENABLE_SET 0xF80C 90b356ddf0SMark Johnston #define AIC_G_ENABLED_STAT 0xF810 91b356ddf0SMark Johnston #define AIC_G_ACK 0xF810 92b356ddf0SMark Johnston #define AIC_G_ENABLE_CLR 0xF814 93b356ddf0SMark Johnston #define AIC_G_OPTIONS 0xF818 94b356ddf0SMark Johnston #define AIC_G_VERSION 0xF81C 95b356ddf0SMark Johnston 96b356ddf0SMark Johnston /* HIA, Data Fetch Engine */ 97b356ddf0SMark Johnston #define DFE_CFG 0xF000 98b356ddf0SMark Johnston #define DFE_PRIO_0 0xF010 99b356ddf0SMark Johnston #define DFE_PRIO_1 0xF014 100b356ddf0SMark Johnston #define DFE_PRIO_2 0xF018 101b356ddf0SMark Johnston #define DFE_PRIO_3 0xF01C 102b356ddf0SMark Johnston 103b356ddf0SMark Johnston /* HIA, Data Fetch Engine access monitoring for CDR */ 104b356ddf0SMark Johnston #define DFE_RING_REGION_LO(x) (0xF080 + ((x) << 3)) 105b356ddf0SMark Johnston #define DFE_RING_REGION_HI(x) (0xF084 + ((x) << 3)) 106b356ddf0SMark Johnston 107b356ddf0SMark Johnston /* HIA, Data Fetch Engine thread control and status for thread */ 108b356ddf0SMark Johnston #define DFE_THR_CTRL 0xF200 109b356ddf0SMark Johnston #define DFE_THR_STAT 0xF204 110b356ddf0SMark Johnston #define DFE_THR_DESC_CTRL 0xF208 111b356ddf0SMark Johnston #define DFE_THR_DESC_DPTR_LO 0xF210 112b356ddf0SMark Johnston #define DFE_THR_DESC_DPTR_HI 0xF214 113b356ddf0SMark Johnston #define DFE_THR_DESC_ACDPTR_LO 0xF218 114b356ddf0SMark Johnston #define DFE_THR_DESC_ACDPTR_HI 0xF21C 115b356ddf0SMark Johnston 116b356ddf0SMark Johnston /* HIA, Data Store Engine */ 117b356ddf0SMark Johnston #define DSE_CFG 0xF400 118b356ddf0SMark Johnston #define DSE_PRIO_0 0xF410 119b356ddf0SMark Johnston #define DSE_PRIO_1 0xF414 120b356ddf0SMark Johnston #define DSE_PRIO_2 0xF418 121b356ddf0SMark Johnston #define DSE_PRIO_3 0xF41C 122b356ddf0SMark Johnston 123b356ddf0SMark Johnston /* HIA, Data Store Engine access monitoring for RDR */ 124b356ddf0SMark Johnston #define DSE_RING_REGION_LO(x) (0xF480 + ((x) << 3)) 125b356ddf0SMark Johnston #define DSE_RING_REGION_HI(x) (0xF484 + ((x) << 3)) 126b356ddf0SMark Johnston 127b356ddf0SMark Johnston /* HIA, Data Store Engine thread control and status for thread */ 128b356ddf0SMark Johnston #define DSE_THR_CTRL 0xF600 129b356ddf0SMark Johnston #define DSE_THR_STAT 0xF604 130b356ddf0SMark Johnston #define DSE_THR_DESC_CTRL 0xF608 131b356ddf0SMark Johnston #define DSE_THR_DESC_DPTR_LO 0xF610 132b356ddf0SMark Johnston #define DSE_THR_DESC_DPTR_HI 0xF614 133b356ddf0SMark Johnston #define DSE_THR_DESC_S_DPTR_LO 0xF618 134b356ddf0SMark Johnston #define DSE_THR_DESC_S_DPTR_HI 0xF61C 135b356ddf0SMark Johnston #define DSE_THR_ERROR_STAT 0xF620 136b356ddf0SMark Johnston 137b356ddf0SMark Johnston /* HIA Global */ 138b356ddf0SMark Johnston #define HIA_MST_CTRL 0xFFF4 139b356ddf0SMark Johnston #define HIA_OPTIONS 0xFFF8 140b356ddf0SMark Johnston #define HIA_VERSION 0xFFFC 141b356ddf0SMark Johnston 142b356ddf0SMark Johnston /* Processing Engine Input Side, Processing Engine */ 143b356ddf0SMark Johnston #define PE_IN_DBUF_THRESH 0x10000 144b356ddf0SMark Johnston #define PE_IN_TBUF_THRESH 0x10100 145b356ddf0SMark Johnston 146b356ddf0SMark Johnston /* Packet Engine Configuration / Status Registers */ 147b356ddf0SMark Johnston #define PE_TOKEN_CTRL_STAT 0x11000 148b356ddf0SMark Johnston #define PE_FUNCTION_EN 0x11004 149b356ddf0SMark Johnston #define PE_CONTEXT_CTRL 0x11008 150b356ddf0SMark Johnston #define PE_INTERRUPT_CTRL_STAT 0x11010 151b356ddf0SMark Johnston #define PE_CONTEXT_STAT 0x1100C 152b356ddf0SMark Johnston #define PE_OUT_TRANS_CTRL_STAT 0x11018 153b356ddf0SMark Johnston #define PE_OUT_BUF_CTRL 0x1101C 154b356ddf0SMark Johnston 155b356ddf0SMark Johnston /* Packet Engine AIC */ 156b356ddf0SMark Johnston #define PE_EIP96_AIC_POL_CTRL 0x113C0 157b356ddf0SMark Johnston #define PE_EIP96_AIC_TYPE_CTRL 0x113C4 158b356ddf0SMark Johnston #define PE_EIP96_AIC_ENABLE_CTRL 0x113C8 159b356ddf0SMark Johnston #define PE_EIP96_AIC_RAW_STAT 0x113CC 160b356ddf0SMark Johnston #define PE_EIP96_AIC_ENABLE_SET 0x113CC 161b356ddf0SMark Johnston #define PE_EIP96_AIC_ENABLED_STAT 0x113D0 162b356ddf0SMark Johnston #define PE_EIP96_AIC_ACK 0x113D0 163b356ddf0SMark Johnston #define PE_EIP96_AIC_ENABLE_CLR 0x113D4 164b356ddf0SMark Johnston #define PE_EIP96_AIC_OPTIONS 0x113D8 165b356ddf0SMark Johnston #define PE_EIP96_AIC_VERSION 0x113DC 166b356ddf0SMark Johnston 167b356ddf0SMark Johnston /* Packet Engine Options & Version Registers */ 168b356ddf0SMark Johnston #define PE_EIP96_OPTIONS 0x113F8 169b356ddf0SMark Johnston #define PE_EIP96_VERSION 0x113FC 170b356ddf0SMark Johnston 171b356ddf0SMark Johnston #define SAFEXCEL_OPT 172b356ddf0SMark Johnston 173b356ddf0SMark Johnston /* Processing Engine Output Side */ 174b356ddf0SMark Johnston #define PE_OUT_DBUF_THRESH 0x11C00 175b356ddf0SMark Johnston #define PE_OUT_TBUF_THRESH 0x11D00 176b356ddf0SMark Johnston 177b356ddf0SMark Johnston /* Processing Engine Local AIC */ 178b356ddf0SMark Johnston #define PE_AIC_POL_CTRL 0x11F00 179b356ddf0SMark Johnston #define PE_AIC_TYPE_CTRL 0x11F04 180b356ddf0SMark Johnston #define PE_AIC_ENABLE_CTRL 0x11F08 181b356ddf0SMark Johnston #define PE_AIC_RAW_STAT 0x11F0C 182b356ddf0SMark Johnston #define PE_AIC_ENABLE_SET 0x11F0C 183b356ddf0SMark Johnston #define PE_AIC_ENABLED_STAT 0x11F10 184b356ddf0SMark Johnston #define PE_AIC_ENABLE_CLR 0x11F14 185b356ddf0SMark Johnston #define PE_AIC_OPTIONS 0x11F18 186b356ddf0SMark Johnston #define PE_AIC_VERSION 0x11F1C 187b356ddf0SMark Johnston 188b356ddf0SMark Johnston /* Processing Engine General Configuration and Version */ 189b356ddf0SMark Johnston #define PE_IN_FLIGHT 0x11FF0 190b356ddf0SMark Johnston #define PE_OPTIONS 0x11FF8 191b356ddf0SMark Johnston #define PE_VERSION 0x11FFC 192b356ddf0SMark Johnston 193b356ddf0SMark Johnston /* EIP-97 - Global */ 194b356ddf0SMark Johnston #define EIP97_CLOCK_STATE 0x1FFE4 195b356ddf0SMark Johnston #define EIP97_FORCE_CLOCK_ON 0x1FFE8 196b356ddf0SMark Johnston #define EIP97_FORCE_CLOCK_OFF 0x1FFEC 197b356ddf0SMark Johnston #define EIP97_MST_CTRL 0x1FFF4 198b356ddf0SMark Johnston #define EIP97_OPTIONS 0x1FFF8 199b356ddf0SMark Johnston #define EIP97_VERSION 0x1FFFC 200b356ddf0SMark Johnston 201b356ddf0SMark Johnston /* Register base offsets */ 202b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC(_sc) ((_sc)->sc_offsets.hia_aic) 203b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC_G(_sc) ((_sc)->sc_offsets.hia_aic_g) 204b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC_R(_sc) ((_sc)->sc_offsets.hia_aic_r) 205b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC_xDR(_sc) ((_sc)->sc_offsets.hia_aic_xdr) 206b356ddf0SMark Johnston #define SAFEXCEL_HIA_DFE(_sc) ((_sc)->sc_offsets.hia_dfe) 207b356ddf0SMark Johnston #define SAFEXCEL_HIA_DFE_THR(_sc) ((_sc)->sc_offsets.hia_dfe_thr) 208b356ddf0SMark Johnston #define SAFEXCEL_HIA_DSE(_sc) ((_sc)->sc_offsets.hia_dse) 209b356ddf0SMark Johnston #define SAFEXCEL_HIA_DSE_THR(_sc) ((_sc)->sc_offsets.hia_dse_thr) 210b356ddf0SMark Johnston #define SAFEXCEL_HIA_GEN_CFG(_sc) ((_sc)->sc_offsets.hia_gen_cfg) 211b356ddf0SMark Johnston #define SAFEXCEL_PE(_sc) ((_sc)->sc_offsets.pe) 212b356ddf0SMark Johnston 213b356ddf0SMark Johnston /* EIP197 base offsets */ 214b356ddf0SMark Johnston #define SAFEXCEL_EIP197_HIA_AIC_BASE 0x90000 215b356ddf0SMark Johnston #define SAFEXCEL_EIP197_HIA_AIC_G_BASE 0x90000 216b356ddf0SMark Johnston #define SAFEXCEL_EIP197_HIA_AIC_R_BASE 0x90800 217b356ddf0SMark Johnston #define SAFEXCEL_EIP197_HIA_AIC_xDR_BASE 0x80000 218b356ddf0SMark Johnston #define SAFEXCEL_EIP197_HIA_DFE_BASE 0x8c000 219b356ddf0SMark Johnston #define SAFEXCEL_EIP197_HIA_DFE_THR_BASE 0x8c040 220b356ddf0SMark Johnston #define SAFEXCEL_EIP197_HIA_DSE_BASE 0x8d000 221b356ddf0SMark Johnston #define SAFEXCEL_EIP197_HIA_DSE_THR_BASE 0x8d040 222b356ddf0SMark Johnston #define SAFEXCEL_EIP197_HIA_GEN_CFG_BASE 0xf0000 223b356ddf0SMark Johnston #define SAFEXCEL_EIP197_PE_BASE 0xa0000 224b356ddf0SMark Johnston 225b356ddf0SMark Johnston /* EIP97 base offsets */ 226b356ddf0SMark Johnston #define SAFEXCEL_EIP97_HIA_AIC_BASE 0x0 227b356ddf0SMark Johnston #define SAFEXCEL_EIP97_HIA_AIC_G_BASE 0x0 228b356ddf0SMark Johnston #define SAFEXCEL_EIP97_HIA_AIC_R_BASE 0x0 229b356ddf0SMark Johnston #define SAFEXCEL_EIP97_HIA_AIC_xDR_BASE 0x0 230b356ddf0SMark Johnston #define SAFEXCEL_EIP97_HIA_DFE_BASE 0xf000 231b356ddf0SMark Johnston #define SAFEXCEL_EIP97_HIA_DFE_THR_BASE 0xf200 232b356ddf0SMark Johnston #define SAFEXCEL_EIP97_HIA_DSE_BASE 0xf400 233b356ddf0SMark Johnston #define SAFEXCEL_EIP97_HIA_DSE_THR_BASE 0xf600 234b356ddf0SMark Johnston #define SAFEXCEL_EIP97_HIA_GEN_CFG_BASE 0x10000 235b356ddf0SMark Johnston #define SAFEXCEL_EIP97_PE_BASE 0x10000 236b356ddf0SMark Johnston 237b356ddf0SMark Johnston /* CDR/RDR register offsets */ 238b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_OFF(priv, r) (SAFEXCEL_HIA_AIC_xDR(priv) + (r) * 0x1000) 239b356ddf0SMark Johnston #define SAFEXCEL_HIA_CDR(priv, r) (SAFEXCEL_HIA_xDR_OFF(priv, r)) 240b356ddf0SMark Johnston #define SAFEXCEL_HIA_RDR(priv, r) (SAFEXCEL_HIA_xDR_OFF(priv, r) + 0x800) 241b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_RING_BASE_ADDR_LO 0x0000 242b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_RING_BASE_ADDR_HI 0x0004 243b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_RING_SIZE 0x0018 244b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_DESC_SIZE 0x001c 245b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_CFG 0x0020 246b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_DMA_CFG 0x0024 247b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_THRESH 0x0028 248b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_PREP_COUNT 0x002c 249b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_PROC_COUNT 0x0030 250b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_PREP_PNTR 0x0034 251b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_PROC_PNTR 0x0038 252b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_STAT 0x003c 253b356ddf0SMark Johnston 254b356ddf0SMark Johnston /* register offsets */ 255b356ddf0SMark Johnston #define SAFEXCEL_HIA_DFE_CFG(n) (0x000 + (128 * (n))) 256b356ddf0SMark Johnston #define SAFEXCEL_HIA_DFE_THR_CTRL(n) (0x000 + (128 * (n))) 257b356ddf0SMark Johnston #define SAFEXCEL_HIA_DFE_THR_STAT(n) (0x004 + (128 * (n))) 258b356ddf0SMark Johnston #define SAFEXCEL_HIA_DSE_CFG(n) (0x000 + (128 * (n))) 259b356ddf0SMark Johnston #define SAFEXCEL_HIA_DSE_THR_CTRL(n) (0x000 + (128 * (n))) 260b356ddf0SMark Johnston #define SAFEXCEL_HIA_DSE_THR_STAT(n) (0x004 + (128 * (n))) 261b356ddf0SMark Johnston #define SAFEXCEL_HIA_RA_PE_CTRL(n) (0x010 + (8 * (n))) 262b356ddf0SMark Johnston #define SAFEXCEL_HIA_RA_PE_STAT 0x0014 263b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC_R_OFF(r) ((r) * 0x1000) 264b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC_R_ENABLE_CTRL(r) (0xe008 - SAFEXCEL_HIA_AIC_R_OFF(r)) 265b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC_R_ENABLED_STAT(r) (0xe010 - SAFEXCEL_HIA_AIC_R_OFF(r)) 266b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC_R_ACK(r) (0xe010 - SAFEXCEL_HIA_AIC_R_OFF(r)) 267b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC_R_ENABLE_CLR(r) (0xe014 - SAFEXCEL_HIA_AIC_R_OFF(r)) 268b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC_R_VERSION(r) (0xe01c - SAFEXCEL_HIA_AIC_R_OFF(r)) 269b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC_G_ENABLE_CTRL 0xf808 270b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC_G_ENABLED_STAT 0xf810 271b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC_G_ACK 0xf810 272b356ddf0SMark Johnston #define SAFEXCEL_HIA_MST_CTRL 0xfff4 273b356ddf0SMark Johnston #define SAFEXCEL_HIA_OPTIONS 0xfff8 274b356ddf0SMark Johnston #define SAFEXCEL_HIA_VERSION 0xfffc 275b356ddf0SMark Johnston #define SAFEXCEL_PE_IN_DBUF_THRES(n) (0x0000 + (0x2000 * (n))) 276b356ddf0SMark Johnston #define SAFEXCEL_PE_IN_TBUF_THRES(n) (0x0100 + (0x2000 * (n))) 277b356ddf0SMark Johnston #define SAFEXCEL_PE_ICE_SCRATCH_RAM(x, n) ((0x800 + (x) * 4) + 0x2000 * (n)) 278b356ddf0SMark Johnston #define SAFEXCEL_PE_ICE_PUE_CTRL(n) (0xc80 + (0x2000 * (n))) 279b356ddf0SMark Johnston #define SAFEXCEL_PE_ICE_SCRATCH_CTRL 0x0d04 280b356ddf0SMark Johnston #define SAFEXCEL_PE_ICE_FPP_CTRL(n) (0xd80 + (0x2000 * (n))) 281b356ddf0SMark Johnston #define SAFEXCEL_PE_ICE_RAM_CTRL(n) (0xff0 + (0x2000 * (n))) 282b356ddf0SMark Johnston #define SAFEXCEL_PE_EIP96_FUNCTION_EN(n) (0x1004 + (0x2000 * (n))) 283b356ddf0SMark Johnston #define SAFEXCEL_PE_EIP96_CONTEXT_CTRL(n) (0x1008 + (0x2000 * (n))) 284b356ddf0SMark Johnston #define SAFEXCEL_PE_EIP96_CONTEXT_STAT(n) (0x100c + (0x2000 * (n))) 285b356ddf0SMark Johnston #define SAFEXCEL_PE_EIP96_FUNCTION2_EN(n) (0x1030 + (0x2000 * (n))) 286b356ddf0SMark Johnston #define SAFEXCEL_PE_OUT_DBUF_THRES(n) (0x1c00 + (0x2000 * (n))) 287b356ddf0SMark Johnston #define SAFEXCEL_PE_OUT_TBUF_THRES(n) (0x1d00 + (0x2000 * (n))) 288b356ddf0SMark Johnston 289b356ddf0SMark Johnston /* EIP-197 Classification Engine */ 290b356ddf0SMark Johnston 291b356ddf0SMark Johnston /* Classification regs */ 292b356ddf0SMark Johnston #define SAFEXCEL_CS_RAM_CTRL 0xf7ff0 293b356ddf0SMark Johnston 294b356ddf0SMark Johnston /* SAFEXCEL_HIA_xDR_DESC_SIZE */ 295b356ddf0SMark Johnston #define SAFEXCEL_xDR_DESC_MODE_64BIT (1U << 31) 296b356ddf0SMark Johnston #define SAFEXCEL_CDR_DESC_MODE_ADCP (1 << 30) 297b356ddf0SMark Johnston #define SAFEXCEL_xDR_DESC_xD_OFFSET 16 298b356ddf0SMark Johnston 299b356ddf0SMark Johnston /* SAFEXCEL_DIA_xDR_CFG */ 300b356ddf0SMark Johnston #define SAFEXCEL_xDR_xD_FETCH_THRESH 16 301b356ddf0SMark Johnston 302b356ddf0SMark Johnston /* SAFEXCEL_HIA_xDR_DMA_CFG */ 303b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_WR_RES_BUF (1 << 22) 304b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_WR_CTRL_BUF (1 << 23) 305b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_WR_OWN_BUF (1 << 24) 306b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_CFG_xD_PROT(n) (((n) & 0xf) << 4) 307b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_CFG_DATA_PROT(n) (((n) & 0xf) << 12) 308b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_CFG_ACD_PROT(n) (((n) & 0xf) << 20) 309b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_CFG_WR_CACHE(n) (((n) & 0x7) << 25) 310b356ddf0SMark Johnston #define SAFEXCEL_HIA_xDR_CFG_RD_CACHE(n) (((n) & 0x7) << 29) 311b356ddf0SMark Johnston 312b356ddf0SMark Johnston /* SAFEXCEL_HIA_CDR_THRESH */ 313b356ddf0SMark Johnston #define SAFEXCEL_HIA_CDR_THRESH_PROC_PKT(n) ((n) & 0xffff) 314b356ddf0SMark Johnston #define SAFEXCEL_HIA_CDR_THRESH_PROC_MODE (1 << 22) 315b356ddf0SMark Johnston #define SAFEXCEL_HIA_CDR_THRESH_PKT_MODE (1 << 23) 316b356ddf0SMark Johnston /* x256 clk cycles */ 317b356ddf0SMark Johnston #define SAFEXCEL_HIA_CDR_THRESH_TIMEOUT(n) (((n) & 0xff) << 24) 318b356ddf0SMark Johnston 319b356ddf0SMark Johnston /* SAFEXCEL_HIA_RDR_THRESH */ 320b356ddf0SMark Johnston #define SAFEXCEL_HIA_RDR_THRESH_PROC_PKT(n) ((n) & 0xffff) 321b356ddf0SMark Johnston #define SAFEXCEL_HIA_RDR_THRESH_PKT_MODE (1 << 23) 322b356ddf0SMark Johnston /* x256 clk cycles */ 323b356ddf0SMark Johnston #define SAFEXCEL_HIA_RDR_THRESH_TIMEOUT(n) (((n) & 0xff) << 24) 324b356ddf0SMark Johnston 325b356ddf0SMark Johnston /* SAFEXCEL_HIA_xDR_PREP_COUNT */ 326b356ddf0SMark Johnston #define SAFEXCEL_xDR_PREP_CLR_COUNT (1U << 31) 327b356ddf0SMark Johnston #define SAFEXCEL_xDR_PREP_xD_COUNT_INCR_OFFSET 2 328b356ddf0SMark Johnston #define SAFEXCEL_xDR_PREP_RD_COUNT_INCR_MASK 0x3fff 329b356ddf0SMark Johnston 330b356ddf0SMark Johnston /* SAFEXCEL_HIA_xDR_PROC_COUNT */ 331b356ddf0SMark Johnston #define SAFEXCEL_xDR_PROC_xD_PKT_OFFSET 24 332b356ddf0SMark Johnston #define SAFEXCEL_xDR_PROC_xD_PKT_MASK 0x7f 333b356ddf0SMark Johnston #define SAFEXCEL_xDR_PROC_xD_COUNT(n) ((n) << 2) 334b356ddf0SMark Johnston #define SAFEXCEL_xDR_PROC_xD_PKT(n) \ 335b356ddf0SMark Johnston (((n) & SAFEXCEL_xDR_PROC_xD_PKT_MASK) << SAFEXCEL_xDR_PROC_xD_PKT_OFFSET) 336b356ddf0SMark Johnston #define SAFEXCEL_xDR_PROC_CLR_COUNT (1U << 31) 337b356ddf0SMark Johnston 338b356ddf0SMark Johnston /* SAFEXCEL_HIA_xDR_STAT */ 339b356ddf0SMark Johnston #define SAFEXCEL_xDR_DMA_ERR (1 << 0) 340b356ddf0SMark Johnston #define SAFEXCEL_xDR_PREP_CMD_THRES (1 << 1) 341b356ddf0SMark Johnston #define SAFEXCEL_xDR_ERR (1 << 2) 342b356ddf0SMark Johnston #define SAFEXCEL_xDR_THRESH (1 << 4) 343b356ddf0SMark Johnston #define SAFEXCEL_xDR_TIMEOUT (1 << 5) 344b356ddf0SMark Johnston #define SAFEXCEL_CDR_INTR_MASK 0x3f 345b356ddf0SMark Johnston #define SAFEXCEL_RDR_INTR_MASK 0xff 346b356ddf0SMark Johnston 347b356ddf0SMark Johnston #define SAFEXCEL_HIA_RA_PE_CTRL_RESET (1U << 31) 348b356ddf0SMark Johnston #define SAFEXCEL_HIA_RA_PE_CTRL_EN (1 << 30) 349b356ddf0SMark Johnston 350b356ddf0SMark Johnston /* Register offsets */ 351b356ddf0SMark Johnston 352b356ddf0SMark Johnston /* SAFEXCEL_HIA_DSE_THR_STAT */ 353b356ddf0SMark Johnston #define SAFEXCEL_DSE_THR_RDR_ID_MASK 0xf000 354b356ddf0SMark Johnston 355b356ddf0SMark Johnston /* SAFEXCEL_HIA_OPTIONS */ 356b356ddf0SMark Johnston #define SAFEXCEL_OPT_ADDR_64 (1U << 31) 357b356ddf0SMark Johnston #define SAFEXCEL_OPT_TGT_ALIGN_OFFSET 28 358b356ddf0SMark Johnston #define SAFEXCEL_OPT_TGT_ALIGN_MASK 0x70000000 359b356ddf0SMark Johnston #define SAFEXCEL_xDR_HDW_OFFSET 25 360b356ddf0SMark Johnston #define SAFEXCEL_xDR_HDW_MASK 0x6000000 361b356ddf0SMark Johnston #define SAFEXCEL_N_RINGS_MASK 0xf 362b356ddf0SMark Johnston #define SAFEXCEL_N_PES_OFFSET 4 363b356ddf0SMark Johnston #define SAFEXCEL_N_PES_MASK 0x1f0 364b356ddf0SMark Johnston #define EIP97_N_PES_MASK 0x70 365b356ddf0SMark Johnston 366b356ddf0SMark Johnston /* SAFEXCEL_HIA_AIC_R_ENABLE_CTRL */ 367b356ddf0SMark Johnston #define SAFEXCEL_CDR_IRQ(n) (1 << ((n) * 2)) 368b356ddf0SMark Johnston #define SAFEXCEL_RDR_IRQ(n) (1 << ((n) * 2 + 1)) 369b356ddf0SMark Johnston 370b356ddf0SMark Johnston /* SAFEXCEL_HIA_DFE/DSE_CFG */ 371b356ddf0SMark Johnston #define SAFEXCEL_HIA_DxE_CFG_MIN_DATA_SIZE(n) ((n) << 0) 372b356ddf0SMark Johnston #define SAFEXCEL_HIA_DxE_CFG_DATA_CACHE_CTRL(n) (((n) & 0x7) << 4) 373b356ddf0SMark Johnston #define SAFEXCEL_HIA_DxE_CFG_MAX_DATA_SIZE(n) ((n) << 8) 374b356ddf0SMark Johnston #define SAFEXCEL_HIA_DSE_CFG_ALLWAYS_BUFFERABLE 0xc000 375b356ddf0SMark Johnston #define SAFEXCEL_HIA_DxE_CFG_MIN_CTRL_SIZE(n) ((n) << 16) 376b356ddf0SMark Johnston #define SAFEXCEL_HIA_DxE_CFG_CTRL_CACHE_CTRL(n) (((n) & 0x7) << 20) 377b356ddf0SMark Johnston #define SAFEXCEL_HIA_DxE_CFG_MAX_CTRL_SIZE(n) ((n) << 24) 378b356ddf0SMark Johnston #define SAFEXCEL_HIA_DFE_CFG_DIS_DEBUG 0xe0000000 379b356ddf0SMark Johnston #define SAFEXCEL_HIA_DSE_CFG_EN_SINGLE_WR (1 << 29) 380b356ddf0SMark Johnston #define SAFEXCEL_HIA_DSE_CFG_DIS_DEBUG 0xc0000000 381b356ddf0SMark Johnston 382b356ddf0SMark Johnston /* SAFEXCEL_HIA_DFE/DSE_THR_CTRL */ 383b356ddf0SMark Johnston #define SAFEXCEL_DxE_THR_CTRL_EN (1 << 30) 384b356ddf0SMark Johnston #define SAFEXCEL_DxE_THR_CTRL_RESET_PE (1U << 31) 385b356ddf0SMark Johnston 386b356ddf0SMark Johnston /* SAFEXCEL_HIA_AIC_G_ENABLED_STAT */ 387b356ddf0SMark Johnston #define SAFEXCEL_G_IRQ_DFE(n) (1 << ((n) << 1)) 388b356ddf0SMark Johnston #define SAFEXCEL_G_IRQ_DSE(n) (1 << (((n) << 1) + 1)) 389b356ddf0SMark Johnston #define SAFEXCEL_G_IRQ_RING (1 << 16) 390b356ddf0SMark Johnston #define SAFEXCEL_G_IRQ_PE(n) (1 << ((n) + 20)) 391b356ddf0SMark Johnston 392b356ddf0SMark Johnston /* SAFEXCEL_HIA_MST_CTRL */ 393b356ddf0SMark Johnston #define RD_CACHE_3BITS 0x5U 394b356ddf0SMark Johnston #define WR_CACHE_3BITS 0x3U 395b356ddf0SMark Johnston #define RD_CACHE_4BITS (RD_CACHE_3BITS << 1 | (1 << 0)) 396b356ddf0SMark Johnston #define WR_CACHE_4BITS (WR_CACHE_3BITS << 1 | (1 << 0)) 397b356ddf0SMark Johnston #define SAFEXCEL_MST_CTRL_RD_CACHE(n) (((n) & 0xf) << 0) 398b356ddf0SMark Johnston #define SAFEXCEL_MST_CTRL_WD_CACHE(n) (((n) & 0xf) << 4) 399b356ddf0SMark Johnston #define MST_CTRL_SUPPORT_PROT(n) (((n) & 0xf) << 12) 400b356ddf0SMark Johnston #define SAFEXCEL_MST_CTRL_BYTE_SWAP (1 << 24) 401b356ddf0SMark Johnston #define SAFEXCEL_MST_CTRL_NO_BYTE_SWAP (1 << 25) 402b356ddf0SMark Johnston 403b356ddf0SMark Johnston /* SAFEXCEL_PE_IN_DBUF/TBUF_THRES */ 404b356ddf0SMark Johnston #define SAFEXCEL_PE_IN_xBUF_THRES_MIN(n) ((n) << 8) 405b356ddf0SMark Johnston #define SAFEXCEL_PE_IN_xBUF_THRES_MAX(n) ((n) << 12) 406b356ddf0SMark Johnston 407b356ddf0SMark Johnston /* SAFEXCEL_PE_OUT_DBUF_THRES */ 408b356ddf0SMark Johnston #define SAFEXCEL_PE_OUT_DBUF_THRES_MIN(n) ((n) << 0) 409b356ddf0SMark Johnston #define SAFEXCEL_PE_OUT_DBUF_THRES_MAX(n) ((n) << 4) 410b356ddf0SMark Johnston 411b356ddf0SMark Johnston /* SAFEXCEL_HIA_AIC_G_ACK */ 412b356ddf0SMark Johnston #define SAFEXCEL_AIC_G_ACK_ALL_MASK 0xffffffff 413b356ddf0SMark Johnston #define SAFEXCEL_AIC_G_ACK_HIA_MASK 0x7ff00000 414b356ddf0SMark Johnston 415b356ddf0SMark Johnston /* SAFEXCEL_HIA_AIC_R_ENABLE_CLR */ 416b356ddf0SMark Johnston #define SAFEXCEL_HIA_AIC_R_ENABLE_CLR_ALL_MASK 0xffffffff 417b356ddf0SMark Johnston 418b356ddf0SMark Johnston /* SAFEXCEL_PE_EIP96_CONTEXT_CTRL */ 419b356ddf0SMark Johnston #define SAFEXCEL_CONTEXT_SIZE(n) (n) 420b356ddf0SMark Johnston #define SAFEXCEL_ADDRESS_MODE (1 << 8) 421b356ddf0SMark Johnston #define SAFEXCEL_CONTROL_MODE (1 << 9) 422b356ddf0SMark Johnston 423b356ddf0SMark Johnston /* SAFEXCEL_PE_EIP96_FUNCTION_EN */ 424b356ddf0SMark Johnston #define SAFEXCEL_FUNCTION_RSVD ((1U << 6) | (1U << 15) | (1U << 20) | (1U << 23)) 425b356ddf0SMark Johnston #define SAFEXCEL_PROTOCOL_HASH_ONLY (1U << 0) 426b356ddf0SMark Johnston #define SAFEXCEL_PROTOCOL_ENCRYPT_ONLY (1U << 1) 427b356ddf0SMark Johnston #define SAFEXCEL_PROTOCOL_HASH_ENCRYPT (1U << 2) 428b356ddf0SMark Johnston #define SAFEXCEL_PROTOCOL_HASH_DECRYPT (1U << 3) 429b356ddf0SMark Johnston #define SAFEXCEL_PROTOCOL_ENCRYPT_HASH (1U << 4) 430b356ddf0SMark Johnston #define SAFEXCEL_PROTOCOL_DECRYPT_HASH (1U << 5) 431b356ddf0SMark Johnston #define SAFEXCEL_ALG_ARC4 (1U << 7) 432b356ddf0SMark Johnston #define SAFEXCEL_ALG_AES_ECB (1U << 8) 433b356ddf0SMark Johnston #define SAFEXCEL_ALG_AES_CBC (1U << 9) 434b356ddf0SMark Johnston #define SAFEXCEL_ALG_AES_CTR_ICM (1U << 10) 435b356ddf0SMark Johnston #define SAFEXCEL_ALG_AES_OFB (1U << 11) 436b356ddf0SMark Johnston #define SAFEXCEL_ALG_AES_CFB (1U << 12) 437b356ddf0SMark Johnston #define SAFEXCEL_ALG_DES_ECB (1U << 13) 438b356ddf0SMark Johnston #define SAFEXCEL_ALG_DES_CBC (1U << 14) 439b356ddf0SMark Johnston #define SAFEXCEL_ALG_DES_OFB (1U << 16) 440b356ddf0SMark Johnston #define SAFEXCEL_ALG_DES_CFB (1U << 17) 441b356ddf0SMark Johnston #define SAFEXCEL_ALG_3DES_ECB (1U << 18) 442b356ddf0SMark Johnston #define SAFEXCEL_ALG_3DES_CBC (1U << 19) 443b356ddf0SMark Johnston #define SAFEXCEL_ALG_3DES_OFB (1U << 21) 444b356ddf0SMark Johnston #define SAFEXCEL_ALG_3DES_CFB (1U << 22) 445b356ddf0SMark Johnston #define SAFEXCEL_ALG_MD5 (1U << 24) 446b356ddf0SMark Johnston #define SAFEXCEL_ALG_HMAC_MD5 (1U << 25) 447b356ddf0SMark Johnston #define SAFEXCEL_ALG_SHA1 (1U << 26) 448b356ddf0SMark Johnston #define SAFEXCEL_ALG_HMAC_SHA1 (1U << 27) 449b356ddf0SMark Johnston #define SAFEXCEL_ALG_SHA2 (1U << 28) 450b356ddf0SMark Johnston #define SAFEXCEL_ALG_HMAC_SHA2 (1U << 29) 451b356ddf0SMark Johnston #define SAFEXCEL_ALG_AES_XCBC_MAC (1U << 30) 452b356ddf0SMark Johnston #define SAFEXCEL_ALG_GCM_HASH (1U << 31) 453b356ddf0SMark Johnston 454b356ddf0SMark Johnston #endif /* _SAFEXCEL_REGS_H_ */ 455