1*f4b37ed0SZbigniew Bodek /*- 2*f4b37ed0SZbigniew Bodek ******************************************************************************** 3*f4b37ed0SZbigniew Bodek Copyright (C) 2015 Annapurna Labs Ltd. 4*f4b37ed0SZbigniew Bodek 5*f4b37ed0SZbigniew Bodek This file may be licensed under the terms of the Annapurna Labs Commercial 6*f4b37ed0SZbigniew Bodek License Agreement. 7*f4b37ed0SZbigniew Bodek 8*f4b37ed0SZbigniew Bodek Alternatively, this file can be distributed under the terms of the GNU General 9*f4b37ed0SZbigniew Bodek Public License V2 as published by the Free Software Foundation and can be 10*f4b37ed0SZbigniew Bodek found at http://www.gnu.org/licenses/gpl-2.0.html 11*f4b37ed0SZbigniew Bodek 12*f4b37ed0SZbigniew Bodek Alternatively, redistribution and use in source and binary forms, with or 13*f4b37ed0SZbigniew Bodek without modification, are permitted provided that the following conditions are 14*f4b37ed0SZbigniew Bodek met: 15*f4b37ed0SZbigniew Bodek 16*f4b37ed0SZbigniew Bodek * Redistributions of source code must retain the above copyright notice, 17*f4b37ed0SZbigniew Bodek this list of conditions and the following disclaimer. 18*f4b37ed0SZbigniew Bodek 19*f4b37ed0SZbigniew Bodek * Redistributions in binary form must reproduce the above copyright 20*f4b37ed0SZbigniew Bodek notice, this list of conditions and the following disclaimer in 21*f4b37ed0SZbigniew Bodek the documentation and/or other materials provided with the 22*f4b37ed0SZbigniew Bodek distribution. 23*f4b37ed0SZbigniew Bodek 24*f4b37ed0SZbigniew Bodek THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 25*f4b37ed0SZbigniew Bodek ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 26*f4b37ed0SZbigniew Bodek WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 27*f4b37ed0SZbigniew Bodek DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 28*f4b37ed0SZbigniew Bodek ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 29*f4b37ed0SZbigniew Bodek (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30*f4b37ed0SZbigniew Bodek LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 31*f4b37ed0SZbigniew Bodek ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 32*f4b37ed0SZbigniew Bodek (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 33*f4b37ed0SZbigniew Bodek SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34*f4b37ed0SZbigniew Bodek 35*f4b37ed0SZbigniew Bodek *******************************************************************************/ 36*f4b37ed0SZbigniew Bodek 37*f4b37ed0SZbigniew Bodek #ifndef _AL_HAL_PCIE_INTERRUPTS_H_ 38*f4b37ed0SZbigniew Bodek #define _AL_HAL_PCIE_INTERRUPTS_H_ 39*f4b37ed0SZbigniew Bodek 40*f4b37ed0SZbigniew Bodek #include "al_hal_common.h" 41*f4b37ed0SZbigniew Bodek #include "al_hal_pcie.h" 42*f4b37ed0SZbigniew Bodek #include "al_hal_iofic.h" 43*f4b37ed0SZbigniew Bodek 44*f4b37ed0SZbigniew Bodek /** 45*f4b37ed0SZbigniew Bodek * @defgroup group_pcie_interrupts PCIe interrupts 46*f4b37ed0SZbigniew Bodek * @ingroup grouppcie 47*f4b37ed0SZbigniew Bodek * @{ 48*f4b37ed0SZbigniew Bodek * The PCIe interrupts HAL can be used to control PCIe unit interrupts. 49*f4b37ed0SZbigniew Bodek * There are 5 groups of interrupts: app group A, B, C, D and AXI. 50*f4b37ed0SZbigniew Bodek * Only 2 interrupts go from the pcie unit to the GIC: 51*f4b37ed0SZbigniew Bodek * 1. Summary for all the int groups (AXI+APP CORE). 52*f4b37ed0SZbigniew Bodek * 2. INTA assert/deassert (RC only). 53*f4b37ed0SZbigniew Bodek * For the specific GIC interrupt line, please check the architecture reference 54*f4b37ed0SZbigniew Bodek * manual. 55*f4b37ed0SZbigniew Bodek * The reset mask state of all interrupts is: Masked 56*f4b37ed0SZbigniew Bodek * 57*f4b37ed0SZbigniew Bodek * @file al_hal_pcie_interrupts.h 58*f4b37ed0SZbigniew Bodek * 59*f4b37ed0SZbigniew Bodek */ 60*f4b37ed0SZbigniew Bodek 61*f4b37ed0SZbigniew Bodek /** 62*f4b37ed0SZbigniew Bodek * PCIe interrupt groups 63*f4b37ed0SZbigniew Bodek */ 64*f4b37ed0SZbigniew Bodek enum al_pcie_int_group { 65*f4b37ed0SZbigniew Bodek AL_PCIE_INT_GRP_A, 66*f4b37ed0SZbigniew Bodek AL_PCIE_INT_GRP_B, 67*f4b37ed0SZbigniew Bodek AL_PCIE_INT_GRP_C, /* Rev3 only */ 68*f4b37ed0SZbigniew Bodek AL_PCIE_INT_GRP_D, /* Rev3 only */ 69*f4b37ed0SZbigniew Bodek AL_PCIE_INT_GRP_AXI_A, 70*f4b37ed0SZbigniew Bodek }; 71*f4b37ed0SZbigniew Bodek 72*f4b37ed0SZbigniew Bodek /** 73*f4b37ed0SZbigniew Bodek * App group A interrupts mask - don't change 74*f4b37ed0SZbigniew Bodek * All interrupts not listed below should be masked 75*f4b37ed0SZbigniew Bodek */ 76*f4b37ed0SZbigniew Bodek enum al_pcie_app_int_grp_a { 77*f4b37ed0SZbigniew Bodek /** [RC only] Deassert_INTD received */ 78*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_DEASSERT_INTD = AL_BIT(0), 79*f4b37ed0SZbigniew Bodek /** [RC only] Deassert_INTC received */ 80*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_DEASSERT_INTC = AL_BIT(1), 81*f4b37ed0SZbigniew Bodek /** [RC only] Deassert_INTB received */ 82*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_DEASSERT_INTB = AL_BIT(2), 83*f4b37ed0SZbigniew Bodek /** 84*f4b37ed0SZbigniew Bodek * [RC only] Deassert_INTA received - there's a didcated GIC interrupt 85*f4b37ed0SZbigniew Bodek * line that reflects the status of ASSERT/DEASSERT of INTA 86*f4b37ed0SZbigniew Bodek */ 87*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_DEASSERT_INTA = AL_BIT(3), 88*f4b37ed0SZbigniew Bodek /** [RC only] Assert_INTD received */ 89*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_ASSERT_INTD = AL_BIT(4), 90*f4b37ed0SZbigniew Bodek /** [RC only] Assert_INTC received */ 91*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_ASSERT_INTC = AL_BIT(5), 92*f4b37ed0SZbigniew Bodek /** [RC only] Assert_INTB received */ 93*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_ASSERT_INTB = AL_BIT(6), 94*f4b37ed0SZbigniew Bodek /** 95*f4b37ed0SZbigniew Bodek * [RC only] Assert_INTA received - there's a didcated GIC interrupt 96*f4b37ed0SZbigniew Bodek * line that reflects the status of ASSERT/DEASSERT of INTA 97*f4b37ed0SZbigniew Bodek */ 98*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_ASSERT_INTA = AL_BIT(7), 99*f4b37ed0SZbigniew Bodek /** [RC only] MSI Controller Interrupt */ 100*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_MSI_CNTR_RCV_INT = AL_BIT(8), 101*f4b37ed0SZbigniew Bodek /** [EP only] MSI sent grant */ 102*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_MSI_TRNS_GNT = AL_BIT(9), 103*f4b37ed0SZbigniew Bodek /** [RC only] System error detected (ERR_COR, ERR_FATAL, ERR_NONFATAL) */ 104*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_SYS_ERR_RC = AL_BIT(10), 105*f4b37ed0SZbigniew Bodek /** [EP only] Software initiates FLR on a Physical Function */ 106*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_FLR_PF_ACTIVE = AL_BIT(11), 107*f4b37ed0SZbigniew Bodek /** [RC only] Root Error Command register assertion notification */ 108*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_AER_RC_ERR = AL_BIT(12), 109*f4b37ed0SZbigniew Bodek /** [RC only] Root Error Command register assertion notification With MSI or MSIX enabled */ 110*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_AER_RC_ERR_MSI = AL_BIT(13), 111*f4b37ed0SZbigniew Bodek /** [RC only] PME Status bit assertion in the Root Status register With INTA */ 112*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_PME_INT = AL_BIT(15), 113*f4b37ed0SZbigniew Bodek /** [RC only] PME Status bit assertion in the Root Status register With MSI or MSIX enabled */ 114*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_PME_MSI = AL_BIT(16), 115*f4b37ed0SZbigniew Bodek /** [RC/EP] The core assert link down event, whenever the link is going down */ 116*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_LINK_DOWN = AL_BIT(21), 117*f4b37ed0SZbigniew Bodek /** [EP only] When the EP gets a command to shut down, signal the software to block any new TLP. */ 118*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_PM_XTLH_BLOCK_TLP = AL_BIT(22), 119*f4b37ed0SZbigniew Bodek /** [RC/EP] PHY/MAC link up */ 120*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_XMLH_LINK_UP = AL_BIT(23), 121*f4b37ed0SZbigniew Bodek /** [RC/EP] Data link up */ 122*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_RDLH_LINK_UP = AL_BIT(24), 123*f4b37ed0SZbigniew Bodek /** [RC/EP] The LTSSM is in RCVRY_LOCK state. */ 124*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_LTSSM_RCVRY_STATE = AL_BIT(25), 125*f4b37ed0SZbigniew Bodek /** 126*f4b37ed0SZbigniew Bodek * [RC/EP] CFG write transaction to the configuration space by the RC peer 127*f4b37ed0SZbigniew Bodek * For RC the int/ will be set from DBI write (internal SoC write)] 128*f4b37ed0SZbigniew Bodek */ 129*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_CFG_WR = AL_BIT(26), 130*f4b37ed0SZbigniew Bodek /** [EP only] CFG access in EP mode */ 131*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_CFG_ACCESS = AL_BIT(31), 132*f4b37ed0SZbigniew Bodek }; 133*f4b37ed0SZbigniew Bodek 134*f4b37ed0SZbigniew Bodek /** 135*f4b37ed0SZbigniew Bodek * App group B interrupts mask - don't change 136*f4b37ed0SZbigniew Bodek * All interrupts not listed below should be masked 137*f4b37ed0SZbigniew Bodek */ 138*f4b37ed0SZbigniew Bodek enum al_pcie_app_int_grp_b { 139*f4b37ed0SZbigniew Bodek /** [RC only] PM_PME Message received */ 140*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_PM_PME_MSG_RCVD = AL_BIT(0), 141*f4b37ed0SZbigniew Bodek /** [RC only] PME_TO_Ack Message received */ 142*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_PME_TO_ACK_MSG_RCVD = AL_BIT(1), 143*f4b37ed0SZbigniew Bodek /** [EP only] PME_Turn_Off Message received */ 144*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_PME_TURN_OFF_MSG_RCVD = AL_BIT(2), 145*f4b37ed0SZbigniew Bodek /** [RC only] ERR_CORR Message received */ 146*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_CORR_ERR_MSG_RCVD = AL_BIT(3), 147*f4b37ed0SZbigniew Bodek /** [RC only] ERR_NONFATAL Message received */ 148*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_NON_FTL_ERR_MSG_RCVD = AL_BIT(4), 149*f4b37ed0SZbigniew Bodek /** [RC only] ERR_FATAL Message received */ 150*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_FTL_ERR_MSG_RCVD = AL_BIT(5), 151*f4b37ed0SZbigniew Bodek /** 152*f4b37ed0SZbigniew Bodek * [RC/EP] Vendor Defined Message received 153*f4b37ed0SZbigniew Bodek * Asserted when a vevdor message is received (with no data), buffers 2 154*f4b37ed0SZbigniew Bodek * messages only, and latch the headers in registers 155*f4b37ed0SZbigniew Bodek */ 156*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_VNDR_MSG_A_RCVD = AL_BIT(6), 157*f4b37ed0SZbigniew Bodek /** 158*f4b37ed0SZbigniew Bodek * [RC/EP] Vendor Defined Message received 159*f4b37ed0SZbigniew Bodek * Asserted when a vevdor message is received (with no data), buffers 2 160*f4b37ed0SZbigniew Bodek * messages only, and latch the headers in registers 161*f4b37ed0SZbigniew Bodek */ 162*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_VNDR_MSG_B_RCVD = AL_BIT(7), 163*f4b37ed0SZbigniew Bodek /** [EP only] Link Autonomous Bandwidth Status is updated */ 164*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_LNK_BW_UPD = AL_BIT(12), 165*f4b37ed0SZbigniew Bodek /** [EP only] Link Equalization Request bit in the Link Status 2 Register has been set */ 166*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_LNK_EQ_REQ = AL_BIT(13), 167*f4b37ed0SZbigniew Bodek /** [RC/EP] OB Vendor message request is granted by the PCIe core */ 168*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_OB_VNDR_MSG_REQ_GRNT = AL_BIT(14), 169*f4b37ed0SZbigniew Bodek /** [RC only] CPL timeout from the PCIe core indiication */ 170*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_CPL_TO = AL_BIT(15), 171*f4b37ed0SZbigniew Bodek /** [RC/EP] Slave Response Composer Lookup Error */ 172*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_SLV_RESP_COMP_LKUP_ERR = AL_BIT(16), 173*f4b37ed0SZbigniew Bodek /** [RC/EP] Parity Error */ 174*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_PARITY_ERR = AL_BIT(17), 175*f4b37ed0SZbigniew Bodek /** [EP only] Speed change request */ 176*f4b37ed0SZbigniew Bodek AL_PCIE_APP_INT_GRP_B_SPEED_CHANGE = AL_BIT(31), 177*f4b37ed0SZbigniew Bodek }; 178*f4b37ed0SZbigniew Bodek 179*f4b37ed0SZbigniew Bodek /** 180*f4b37ed0SZbigniew Bodek * AXI interrupts mask - don't change 181*f4b37ed0SZbigniew Bodek * These are internal errors that can happen on the internal chip interface 182*f4b37ed0SZbigniew Bodek * between the PCIe port and the I/O Fabric over the AXI bus. The notion of 183*f4b37ed0SZbigniew Bodek * master and slave refer to the PCIe port master interface towards the I/O 184*f4b37ed0SZbigniew Bodek * Fabric (i.e. for inbound PCIe writes/reads toward the I/O Fabric), while the 185*f4b37ed0SZbigniew Bodek * slave interface refer to the I/O Fabric to PCIe port interface where the 186*f4b37ed0SZbigniew Bodek * internal chip DMAs and CPU cluster is initiating transactions. 187*f4b37ed0SZbigniew Bodek * All interrupts not listed below should be masked. 188*f4b37ed0SZbigniew Bodek */ 189*f4b37ed0SZbigniew Bodek enum al_pcie_axi_int { 190*f4b37ed0SZbigniew Bodek /** [RC/EP] Master Response Composer Lookup Error */ 191*f4b37ed0SZbigniew Bodek AL_PCIE_AXI_INT_MSTR_RESP_COMP_LKUP_ERR = AL_BIT(0), 192*f4b37ed0SZbigniew Bodek /** [RC/EP] PARITY ERROR on the master data read channel */ 193*f4b37ed0SZbigniew Bodek AL_PCIE_AXI_INT_PARITY_ERR_MSTR_DATA_RD_CHNL = AL_BIT(2), 194*f4b37ed0SZbigniew Bodek /** [RC/EP] PARITY ERROR on the slave addr read channel */ 195*f4b37ed0SZbigniew Bodek AL_PCIE_AXI_INT_PARITY_ERR_SLV_ADDR_RD_CHNL = AL_BIT(3), 196*f4b37ed0SZbigniew Bodek /** [RC/EP] PARITY ERROR on the slave addr write channel */ 197*f4b37ed0SZbigniew Bodek AL_PCIE_AXI_INT_PARITY_ERR_SLV_ADDR_WR_CHNL = AL_BIT(4), 198*f4b37ed0SZbigniew Bodek /** [RC/EP] PARITY ERROR on the slave data write channel */ 199*f4b37ed0SZbigniew Bodek AL_PCIE_AXI_INT_PARITY_ERR_SLV_DATA_WR_CHNL = AL_BIT(5), 200*f4b37ed0SZbigniew Bodek /** [RC only] Software error: ECAM write request with invalid bus number */ 201*f4b37ed0SZbigniew Bodek AL_PCIE_AXI_INT_ECAM_WR_REQ_INVLD_BUS_NUM = AL_BIT(7), 202*f4b37ed0SZbigniew Bodek /** [RC only] Software error: ECAM read request with invalid bus number */ 203*f4b37ed0SZbigniew Bodek AL_PCIE_AXI_INT_ECAM_RD_REQ_INVLD_BUS_NUM = AL_BIT(8), 204*f4b37ed0SZbigniew Bodek /** [RC/EP] Read AXI completion has ERROR */ 205*f4b37ed0SZbigniew Bodek AL_PCIE_AXI_INT_RD_AXI_COMPL_ERR = AL_BIT(11), 206*f4b37ed0SZbigniew Bodek /** [RC/EP] Write AXI completion has ERROR */ 207*f4b37ed0SZbigniew Bodek AL_PCIE_AXI_INT_WR_AXI_COMPL_ERR = AL_BIT(12), 208*f4b37ed0SZbigniew Bodek /** [RC/EP] Read AXI completion has timed out */ 209*f4b37ed0SZbigniew Bodek AL_PCIE_AXI_INT_RD_AXI_COMPL_TO = AL_BIT(13), 210*f4b37ed0SZbigniew Bodek /** [RC/EP] Write AXI completion has timed out */ 211*f4b37ed0SZbigniew Bodek AL_PCIE_AXI_INT_WR_AXI_COMPL_TO = AL_BIT(14), 212*f4b37ed0SZbigniew Bodek /** [RC/EP] Parity error AXI domain */ 213*f4b37ed0SZbigniew Bodek AL_PCIE_AXI_INT_AXI_DOM_PARITY_ERR = AL_BIT(15), 214*f4b37ed0SZbigniew Bodek /** [RC/EP] POS error interrupt */ 215*f4b37ed0SZbigniew Bodek AL_PCIE_AXI_INT_POS_ERR = AL_BIT(16), 216*f4b37ed0SZbigniew Bodek }; 217*f4b37ed0SZbigniew Bodek 218*f4b37ed0SZbigniew Bodek /** 219*f4b37ed0SZbigniew Bodek * @brief Initialize and configure PCIe controller interrupts 220*f4b37ed0SZbigniew Bodek * Doesn't change the mask state of the interrupts 221*f4b37ed0SZbigniew Bodek * The reset mask state of all interrupts is: Masked 222*f4b37ed0SZbigniew Bodek * 223*f4b37ed0SZbigniew Bodek * @param pcie_port pcie port handle 224*f4b37ed0SZbigniew Bodek */ 225*f4b37ed0SZbigniew Bodek void al_pcie_ints_config(struct al_pcie_port *pcie_port); 226*f4b37ed0SZbigniew Bodek 227*f4b37ed0SZbigniew Bodek /** 228*f4b37ed0SZbigniew Bodek * Unmask PCIe app group interrupts 229*f4b37ed0SZbigniew Bodek * @param pcie_port pcie_port pcie port handle 230*f4b37ed0SZbigniew Bodek * @param int_group interrupt group 231*f4b37ed0SZbigniew Bodek * @param int_mask int_mask interrupts to unmask ('1' to unmask) 232*f4b37ed0SZbigniew Bodek */ 233*f4b37ed0SZbigniew Bodek void al_pcie_app_int_grp_unmask( 234*f4b37ed0SZbigniew Bodek struct al_pcie_port *pcie_port, 235*f4b37ed0SZbigniew Bodek enum al_pcie_int_group int_group, 236*f4b37ed0SZbigniew Bodek uint32_t int_mask); 237*f4b37ed0SZbigniew Bodek 238*f4b37ed0SZbigniew Bodek /** 239*f4b37ed0SZbigniew Bodek * Mask PCIe app group interrupts 240*f4b37ed0SZbigniew Bodek * @param pcie_port pcie_port pcie port handle 241*f4b37ed0SZbigniew Bodek * @param int_group interrupt group 242*f4b37ed0SZbigniew Bodek * @param int_mask int_mask interrupts to unmask ('1' to mask) 243*f4b37ed0SZbigniew Bodek */ 244*f4b37ed0SZbigniew Bodek void al_pcie_app_int_grp_mask( 245*f4b37ed0SZbigniew Bodek struct al_pcie_port *pcie_port, 246*f4b37ed0SZbigniew Bodek enum al_pcie_int_group int_group, 247*f4b37ed0SZbigniew Bodek uint32_t int_mask); 248*f4b37ed0SZbigniew Bodek 249*f4b37ed0SZbigniew Bodek /** 250*f4b37ed0SZbigniew Bodek * Clear the PCIe app group interrupt cause 251*f4b37ed0SZbigniew Bodek * @param pcie_port pcie port handle 252*f4b37ed0SZbigniew Bodek * @param int_group interrupt group 253*f4b37ed0SZbigniew Bodek * @param int_cause interrupt cause 254*f4b37ed0SZbigniew Bodek */ 255*f4b37ed0SZbigniew Bodek void al_pcie_app_int_grp_cause_clear( 256*f4b37ed0SZbigniew Bodek struct al_pcie_port *pcie_port, 257*f4b37ed0SZbigniew Bodek enum al_pcie_int_group int_group, 258*f4b37ed0SZbigniew Bodek uint32_t int_cause); 259*f4b37ed0SZbigniew Bodek 260*f4b37ed0SZbigniew Bodek /** 261*f4b37ed0SZbigniew Bodek * Read PCIe app group interrupt cause 262*f4b37ed0SZbigniew Bodek * @param pcie_port pcie port handle 263*f4b37ed0SZbigniew Bodek * @param int_group interrupt group 264*f4b37ed0SZbigniew Bodek * @return interrupt cause or 0 in case the group is not supported 265*f4b37ed0SZbigniew Bodek */ 266*f4b37ed0SZbigniew Bodek uint32_t al_pcie_app_int_grp_cause_read( 267*f4b37ed0SZbigniew Bodek struct al_pcie_port *pcie_port, 268*f4b37ed0SZbigniew Bodek enum al_pcie_int_group int_group); 269*f4b37ed0SZbigniew Bodek 270*f4b37ed0SZbigniew Bodek #endif 271*f4b37ed0SZbigniew Bodek /** @} end of group_pcie_interrupts group */ 272