1 /* $NetBSD: qat_c3xxxreg.h,v 1.1 2019/11/20 09:37:46 hikaru Exp $ */ 2 3 /* 4 * Copyright (c) 2019 Internet Initiative Japan, Inc. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 17 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 18 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 * POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 /* 30 * Copyright(c) 2014 Intel Corporation. 31 * Redistribution and use in source and binary forms, with or without 32 * modification, are permitted provided that the following conditions 33 * are met: 34 * 35 * * Redistributions of source code must retain the above copyright 36 * notice, this list of conditions and the following disclaimer. 37 * * Redistributions in binary form must reproduce the above copyright 38 * notice, this list of conditions and the following disclaimer in 39 * the documentation and/or other materials provided with the 40 * distribution. 41 * * Neither the name of Intel Corporation nor the names of its 42 * contributors may be used to endorse or promote products derived 43 * from this software without specific prior written permission. 44 * 45 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 46 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 47 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 48 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 49 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 50 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 51 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 52 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 53 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 54 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 55 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 56 */ 57 58 #ifndef _DEV_PCI_QAT_C3XXXREG_H_ 59 #define _DEV_PCI_QAT_C3XXXREG_H_ 60 61 /* Max number of accelerators and engines */ 62 #define MAX_ACCEL_C3XXX 3 63 #define MAX_AE_C3XXX 6 64 65 /* PCIe BAR index */ 66 #define BAR_SRAM_ID_C3XXX NO_PCI_REG 67 #define BAR_PMISC_ID_C3XXX 0 68 #define BAR_ETR_ID_C3XXX 1 69 70 /* BAR PMISC sub-regions */ 71 #define AE_OFFSET_C3XXX 0x20000 72 #define AE_LOCAL_OFFSET_C3XXX 0x20800 73 #define CAP_GLOBAL_OFFSET_C3XXX 0x30000 74 75 #define SOFTSTRAP_REG_C3XXX 0x2EC 76 #define SOFTSTRAP_SS_POWERGATE_CY_C3XXX __BIT(23) 77 #define SOFTSTRAP_SS_POWERGATE_PKE_C3XXX __BIT(24) 78 79 #define ACCEL_REG_OFFSET_C3XXX 16 80 #define ACCEL_MASK_C3XXX 0x7 81 #define AE_MASK_C3XXX 0x3F 82 83 #define SMIAPF0_C3XXX 0x3A028 84 #define SMIAPF1_C3XXX 0x3A030 85 #define SMIA0_MASK_C3XXX 0xFFFF 86 #define SMIA1_MASK_C3XXX 0x1 87 88 /* Error detection and correction */ 89 #define AE_CTX_ENABLES_C3XXX(i) ((i) * 0x1000 + 0x20818) 90 #define AE_MISC_CONTROL_C3XXX(i) ((i) * 0x1000 + 0x20960) 91 #define ENABLE_AE_ECC_ERR_C3XXX __BIT(28) 92 #define ENABLE_AE_ECC_PARITY_CORR_C3XXX (__BIT(24) | __BIT(12)) 93 #define ERRSSMSH_EN_C3XXX __BIT(3) 94 /* BIT(2) enables the logging of push/pull data errors. */ 95 #define PPERR_EN_C3XXX (__BIT(2)) 96 97 /* Mask for VF2PF interrupts */ 98 #define VF2PF1_16_C3XXX (0xFFFF << 9) 99 #define ERRSOU3_VF2PF_C3XXX(errsou3) (((errsou3) & 0x01FFFE00) >> 9) 100 #define ERRMSK3_VF2PF_C3XXX(vf_mask) (((vf_mask) & 0xFFFF) << 9) 101 102 /* Masks for correctable error interrupts. */ 103 #define ERRMSK0_CERR_C3XXX (__BIT(24) | __BIT(16) | __BIT(8) | __BIT(0)) 104 #define ERRMSK1_CERR_C3XXX (__BIT(8) | __BIT(0)) 105 #define ERRMSK5_CERR_C3XXX (0) 106 107 /* Masks for uncorrectable error interrupts. */ 108 #define ERRMSK0_UERR_C3XXX (__BIT(25) | __BIT(17) | __BIT(9) | __BIT(1)) 109 #define ERRMSK1_UERR_C3XXX (__BIT(9) | __BIT(1)) 110 #define ERRMSK3_UERR_C3XXX (__BIT(6) | __BIT(5) | __BIT(4) | __BIT(3) | \ 111 __BIT(2) | __BIT(0)) 112 #define ERRMSK5_UERR_C3XXX (__BIT(16)) 113 114 /* RI CPP control */ 115 #define RICPPINTCTL_C3XXX (0x3A000 + 0x110) 116 /* 117 * BIT(2) enables error detection and reporting on the RI Parity Error. 118 * BIT(1) enables error detection and reporting on the RI CPP Pull interface. 119 * BIT(0) enables error detection and reporting on the RI CPP Push interface. 120 */ 121 #define RICPP_EN_C3XXX (__BIT(2) | __BIT(1) | __BIT(0)) 122 123 /* TI CPP control */ 124 #define TICPPINTCTL_C3XXX (0x3A400 + 0x138) 125 /* 126 * BIT(3) enables error detection and reporting on the ETR Parity Error. 127 * BIT(2) enables error detection and reporting on the TI Parity Error. 128 * BIT(1) enables error detection and reporting on the TI CPP Pull interface. 129 * BIT(0) enables error detection and reporting on the TI CPP Push interface. 130 */ 131 #define TICPP_EN_C3XXX \ 132 (__BIT(3) | __BIT(2) | __BIT(1) | __BIT(0)) 133 134 /* CFC Uncorrectable Errors */ 135 #define CPP_CFC_ERR_CTRL_C3XXX (0x30000 + 0xC00) 136 /* 137 * BIT(1) enables interrupt. 138 * BIT(0) enables detecting and logging of push/pull data errors. 139 */ 140 #define CPP_CFC_UE_C3XXX (__BIT(1) | __BIT(0)) 141 142 #define SLICEPWRDOWN_C3XXX(i) ((i) * 0x4000 + 0x2C) 143 /* Enabling PKE4-PKE0. */ 144 #define MMP_PWR_UP_MSK_C3XXX \ 145 (__BIT(20) | __BIT(19) | __BIT(18) | __BIT(17) | __BIT(16)) 146 147 /* CPM Uncorrectable Errors */ 148 #define INTMASKSSM_C3XXX(i) ((i) * 0x4000 + 0x0) 149 /* Disabling interrupts for correctable errors. */ 150 #define INTMASKSSM_UERR_C3XXX \ 151 (__BIT(11) | __BIT(9) | __BIT(7) | __BIT(5) | __BIT(3) | __BIT(1)) 152 153 /* MMP */ 154 /* BIT(3) enables correction. */ 155 #define CERRSSMMMP_EN_C3XXX (__BIT(3)) 156 157 /* BIT(3) enables logging. */ 158 #define UERRSSMMMP_EN_C3XXX (__BIT(3)) 159 160 /* ETR */ 161 #define ETR_MAX_BANKS_C3XXX 16 162 #define ETR_TX_RX_GAP_C3XXX 8 163 #define ETR_TX_RINGS_MASK_C3XXX 0xFF 164 #define ETR_BUNDLE_SIZE_C3XXX 0x1000 165 166 /* AE firmware */ 167 #define AE_FW_PROD_TYPE_C3XXX 0x02000000 168 #define AE_FW_MOF_NAME_C3XXX "qat_c3xxx.bin" 169 #define AE_FW_MMP_NAME_C3XXX "qat_c3xxx_mmp.bin" 170 #define AE_FW_UOF_NAME_C3XXX "icp_qat_ae.suof" 171 172 /* Clock frequency */ 173 #define CLOCK_PER_SEC_C3XXX (685 * 1000000 / 16) 174 175 #endif 176