| /******************************************************************************** |
| * Marvell GPL License Option |
| * |
| * If you received this File from Marvell, you may opt to use, redistribute and/or |
| * modify this File in accordance with the terms and conditions of the General |
| * Public License Version 2, June 1991 (the "GPL License"), a copy of which is |
| * available along with the File in the license.txt file or by writing to the Free |
| * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or |
| * on the worldwide web at http://www.gnu.org/licenses/gpl.txt. |
| * |
| * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED |
| * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY |
| * DISCLAIMED. The GPL License provides additional details about this warranty |
| * disclaimer. |
| ******************************************************************************/ |
| |
| ////// |
| /// don't edit! auto-generated by docc: pcie.h |
| //////////////////////////////////////////////////////////// |
| #ifndef pcie_h |
| #define pcie_h (){} |
| |
| |
| #include "ctypes.h" |
| |
| #pragma pack(1) |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #ifndef _DOCC_H_BITOPS_ |
| #define _DOCC_H_BITOPS_ (){} |
| |
| #define _bSETMASK_(b) ((b)<32 ? (1<<((b)&31)) : 0) |
| #define _NSETMASK_(msb,lsb) (_bSETMASK_((msb)+1)-_bSETMASK_(lsb)) |
| #define _bCLRMASK_(b) (~_bSETMASK_(b)) |
| #define _NCLRMASK_(msb,lsb) (~_NSETMASK_(msb,lsb)) |
| #define _BFGET_(r,msb,lsb) (_NSETMASK_((msb)-(lsb),0)&((r)>>(lsb))) |
| #define _BFSET_(r,msb,lsb,v) do{ (r)&=_NCLRMASK_(msb,lsb); (r)|=_NSETMASK_(msb,lsb)&((v)<<(lsb)); }while(0) |
| |
| #endif |
| |
| |
| |
| ////// |
| /// |
| /// $INTERFACE oneReg (4,4) |
| /// ### |
| /// * To create SRAM-like interface creating one 32-bit register (Hier:1) |
| /// ### |
| /// # # ---------------------------------------------------------- |
| /// @ 0x00000 (R-) |
| /// %unsigned 32 0x00000000 |
| /// ### |
| /// * One Register in an external IP block (i.e., PEX) |
| /// ### |
| /// # # ---------------------------------------------------------- |
| /// $ENDOFINTERFACE # size: 4B, bits: 32b, padding: 0B |
| //////////////////////////////////////////////////////////// |
| #ifndef h_oneReg |
| #define h_oneReg (){} |
| |
| #define BA_oneReg_0x00000000 0x0000 |
| #define B16oneReg_0x00000000 0x0000 |
| #define LSb32oneReg_0x00000000 0 |
| #define LSb16oneReg_0x00000000 0 |
| #define boneReg_0x00000000 32 |
| #define MSK32oneReg_0x00000000 0xFFFFFFFF |
| /////////////////////////////////////////////////////////// |
| |
| typedef struct SIE_oneReg { |
| /////////////////////////////////////////////////////////// |
| #define GET32oneReg_0x00000000(r32) _BFGET_(r32,31, 0) |
| #define SET32oneReg_0x00000000(r32,v) _BFSET_(r32,31, 0,v) |
| |
| UNSG32 u_0x00000000 : 32; |
| /////////////////////////////////////////////////////////// |
| } SIE_oneReg; |
| |
| /////////////////////////////////////////////////////////// |
| SIGN32 oneReg_drvrd(SIE_oneReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst); |
| SIGN32 oneReg_drvwr(SIE_oneReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd); |
| void oneReg_reset(SIE_oneReg *p); |
| SIGN32 oneReg_cmp (SIE_oneReg *p, SIE_oneReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst); |
| #define oneReg_check(p,pie,pfx,hLOG) oneReg_cmp(p,pie,pfx,(void*)(hLOG),0,0) |
| #define oneReg_print(p, pfx,hLOG) oneReg_cmp(p,0, pfx,(void*)(hLOG),0,0) |
| |
| #endif |
| ////// |
| /// ENDOFINTERFACE: oneReg |
| //////////////////////////////////////////////////////////// |
| |
| ////// |
| /// |
| /// $INTERFACE IP_REGSP_0 (4,4) |
| /// ### |
| /// * To create SRAM-like interface for PCI-E 3 IP Register access – Creating 32KB address space (Hier:2) |
| /// ### |
| /// # # ---------------------------------------------------------- |
| /// @ 0x00000 (P) |
| /// # 0x00000 dummy |
| /// $oneReg dummy REG [8192] |
| /// # # ---------------------------------------------------------- |
| /// $ENDOFINTERFACE # size: 32768B, bits: 262144b, padding: 0B |
| //////////////////////////////////////////////////////////// |
| #ifndef h_IP_REGSP_0 |
| #define h_IP_REGSP_0 (){} |
| |
| #define RA_IP_REGSP_0_dummy 0x0000 |
| /////////////////////////////////////////////////////////// |
| |
| typedef struct SIE_IP_REGSP_0 { |
| /////////////////////////////////////////////////////////// |
| SIE_oneReg ie_dummy[8192]; |
| /////////////////////////////////////////////////////////// |
| } SIE_IP_REGSP_0; |
| |
| /////////////////////////////////////////////////////////// |
| SIGN32 IP_REGSP_0_drvrd(SIE_IP_REGSP_0 *p, UNSG32 base, SIGN32 mem, SIGN32 tst); |
| SIGN32 IP_REGSP_0_drvwr(SIE_IP_REGSP_0 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd); |
| void IP_REGSP_0_reset(SIE_IP_REGSP_0 *p); |
| SIGN32 IP_REGSP_0_cmp (SIE_IP_REGSP_0 *p, SIE_IP_REGSP_0 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst); |
| #define IP_REGSP_0_check(p,pie,pfx,hLOG) IP_REGSP_0_cmp(p,pie,pfx,(void*)(hLOG),0,0) |
| #define IP_REGSP_0_print(p, pfx,hLOG) IP_REGSP_0_cmp(p,0, pfx,(void*)(hLOG),0,0) |
| |
| #endif |
| ////// |
| /// ENDOFINTERFACE: IP_REGSP_0 |
| //////////////////////////////////////////////////////////// |
| |
| ////// |
| /// |
| /// $INTERFACE IP_REGSP_1 (4,4) |
| /// ### |
| /// * To create SRAM-like interface for PCI-E 3 IP Register access – creating 4KB address space. (Hier:2) |
| /// ### |
| /// # # ---------------------------------------------------------- |
| /// @ 0x00000 (P) |
| /// # 0x00000 dummy |
| /// $oneReg dummy REG [2048] |
| /// # # ---------------------------------------------------------- |
| /// $ENDOFINTERFACE # size: 8192B, bits: 65536b, padding: 0B |
| //////////////////////////////////////////////////////////// |
| #ifndef h_IP_REGSP_1 |
| #define h_IP_REGSP_1 (){} |
| |
| #define RA_IP_REGSP_1_dummy 0x0000 |
| /////////////////////////////////////////////////////////// |
| |
| typedef struct SIE_IP_REGSP_1 { |
| /////////////////////////////////////////////////////////// |
| SIE_oneReg ie_dummy[2048]; |
| /////////////////////////////////////////////////////////// |
| } SIE_IP_REGSP_1; |
| |
| /////////////////////////////////////////////////////////// |
| SIGN32 IP_REGSP_1_drvrd(SIE_IP_REGSP_1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst); |
| SIGN32 IP_REGSP_1_drvwr(SIE_IP_REGSP_1 *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd); |
| void IP_REGSP_1_reset(SIE_IP_REGSP_1 *p); |
| SIGN32 IP_REGSP_1_cmp (SIE_IP_REGSP_1 *p, SIE_IP_REGSP_1 *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst); |
| #define IP_REGSP_1_check(p,pie,pfx,hLOG) IP_REGSP_1_cmp(p,pie,pfx,(void*)(hLOG),0,0) |
| #define IP_REGSP_1_print(p, pfx,hLOG) IP_REGSP_1_cmp(p,0, pfx,(void*)(hLOG),0,0) |
| |
| #endif |
| ////// |
| /// ENDOFINTERFACE: IP_REGSP_1 |
| //////////////////////////////////////////////////////////// |
| |
| ////// |
| /// |
| /// $INTERFACE REFCLK (4,4) |
| /// ### |
| /// * PCI-E reference clock buffer control register. This buffer can act in both RX and TX mode. |
| /// * In RX mode: This buffer takes in 100 Mhz differential clock and generates the single ended 100 Mhz Clock for PCI-E PHY |
| /// * In TX mode: This buffer receives the single ended 100 Mhz clock from PHY and sends out the differential 100 Mhz clock to Pad |
| /// * Note: Since the same registers are duplicated for all the 3 PCIE cores. Only the PCIE0 BIU registers are used to control the REFCLK. |
| /// ### |
| /// # # ---------------------------------------------------------- |
| /// @ 0x00000 CTRL (P-) |
| /// %unsigned 2 PHY_SEL_FOR_RX_EN_PU_CTRL 0x0 |
| /// ### |
| /// * Selects which PHY should control the PU and RX_EN for reference clock buffer when operating in RX mode |
| /// * 00 : Phy 0 (PCIE0) |
| /// * 01 : Phy 1 (PCIE0) |
| /// * 10 : Phy 2 (PCIE1) |
| /// * 11 : Phy 3 (PCIE2) |
| /// ### |
| /// %unsigned 1 SW_CTRL_RX_EN_PU 0x0 |
| /// ### |
| /// * Software controls the PU and RX_EN for reference clock buffer when operating in RX mode |
| /// * 0 : PHY controls the RX_EN and PU |
| /// * 1: SW controls the RX_EN and PU |
| /// ### |
| /// %unsigned 1 PU 0x0 |
| /// ### |
| /// * 0: Power down for minimum power consumption |
| /// * 1: Power UP |
| /// * Note: If PU = 0 , REFCLK_OUT_RX = 0 and REFCLK_OUT_RX_DIG = 0 |
| /// * Must be set to 0 if there are no input clocks |
| /// ### |
| /// %unsigned 1 SEL_EXT 0x1 |
| /// ### |
| /// * 1: Use external 50Ohm termination |
| /// * 0: Use internal 50Ohm termination. |
| /// ### |
| /// %unsigned 3 SEL_AMP 0x3 |
| /// ### |
| /// * 111: 0.933V |
| /// * 110: 0.866V |
| /// * 101: 0.800V |
| /// * 100: 0.733V |
| /// * 011: 0.700V |
| /// * 010: 0.666V |
| /// * 001: 0.600V |
| /// * 000: 0.533V |
| /// * Default use 0.7V |
| /// * This choose the output amplitude of the PCIE Reference Clock Buffer |
| /// * Note: If in RX mode only, don't care. |
| /// ### |
| /// %unsigned 2 SEL_REG_LVL 0x1 |
| /// ### |
| /// * PHY Reserved |
| /// ### |
| /// %unsigned 1 RX_EN 0x0 |
| /// ### |
| /// * 1: Enable RX. The block will act as a receiver and sends clock to PHY. |
| /// * 0: Disable RX. |
| /// * Note: |
| /// * 1) Must be set to 0 if the are no input clocks |
| /// * If RX_EN = 0: then REFCLK_OUT_RX = 0 and REFCLK_OUT_RX_DIG = 0 |
| /// * 2) After PU = 1 for 12µs, then only set RX_EN = 1. |
| /// * 3) To turn off RX glitch-lessly, set RX = 0 while maintaining PU = 1 for at least 5 falling edges |
| /// ### |
| /// %unsigned 1 TX_EN 0x0 |
| /// ### |
| /// * 1: Enable TX. The block will act as a transmitter and sends clock out. |
| /// * 0: Disable TX. |
| /// ### |
| /// %unsigned 3 TEST_ANA 0x0 |
| /// ### |
| /// * * Analog Test Point: |
| /// * 001: LV regulator output: 0.9V |
| /// * 010: Regulator reference: 0.55V |
| /// * 011: Driver reference: 0.525V |
| /// * 100: AVDD18 1.8V |
| /// * 101: AVSS 0V |
| /// * 110: PD18_RX |
| /// * 111: PD18_TX |
| /// ### |
| /// %% 17 # Stuffing bits... |
| /// # # ---------------------------------------------------------- |
| /// $ENDOFINTERFACE # size: 4B, bits: 15b, padding: 0B |
| //////////////////////////////////////////////////////////// |
| #ifndef h_REFCLK |
| #define h_REFCLK (){} |
| |
| #define RA_REFCLK_CTRL 0x0000 |
| |
| #define BA_REFCLK_CTRL_PHY_SEL_FOR_RX_EN_PU_CTRL 0x0000 |
| #define B16REFCLK_CTRL_PHY_SEL_FOR_RX_EN_PU_CTRL 0x0000 |
| #define LSb32REFCLK_CTRL_PHY_SEL_FOR_RX_EN_PU_CTRL 0 |
| #define LSb16REFCLK_CTRL_PHY_SEL_FOR_RX_EN_PU_CTRL 0 |
| #define bREFCLK_CTRL_PHY_SEL_FOR_RX_EN_PU_CTRL 2 |
| #define MSK32REFCLK_CTRL_PHY_SEL_FOR_RX_EN_PU_CTRL 0x00000003 |
| |
| #define BA_REFCLK_CTRL_SW_CTRL_RX_EN_PU 0x0000 |
| #define B16REFCLK_CTRL_SW_CTRL_RX_EN_PU 0x0000 |
| #define LSb32REFCLK_CTRL_SW_CTRL_RX_EN_PU 2 |
| #define LSb16REFCLK_CTRL_SW_CTRL_RX_EN_PU 2 |
| #define bREFCLK_CTRL_SW_CTRL_RX_EN_PU 1 |
| #define MSK32REFCLK_CTRL_SW_CTRL_RX_EN_PU 0x00000004 |
| |
| #define BA_REFCLK_CTRL_PU 0x0000 |
| #define B16REFCLK_CTRL_PU 0x0000 |
| #define LSb32REFCLK_CTRL_PU 3 |
| #define LSb16REFCLK_CTRL_PU 3 |
| #define bREFCLK_CTRL_PU 1 |
| #define MSK32REFCLK_CTRL_PU 0x00000008 |
| |
| #define BA_REFCLK_CTRL_SEL_EXT 0x0000 |
| #define B16REFCLK_CTRL_SEL_EXT 0x0000 |
| #define LSb32REFCLK_CTRL_SEL_EXT 4 |
| #define LSb16REFCLK_CTRL_SEL_EXT 4 |
| #define bREFCLK_CTRL_SEL_EXT 1 |
| #define MSK32REFCLK_CTRL_SEL_EXT 0x00000010 |
| |
| #define BA_REFCLK_CTRL_SEL_AMP 0x0000 |
| #define B16REFCLK_CTRL_SEL_AMP 0x0000 |
| #define LSb32REFCLK_CTRL_SEL_AMP 5 |
| #define LSb16REFCLK_CTRL_SEL_AMP 5 |
| #define bREFCLK_CTRL_SEL_AMP 3 |
| #define MSK32REFCLK_CTRL_SEL_AMP 0x000000E0 |
| |
| #define BA_REFCLK_CTRL_SEL_REG_LVL 0x0001 |
| #define B16REFCLK_CTRL_SEL_REG_LVL 0x0000 |
| #define LSb32REFCLK_CTRL_SEL_REG_LVL 8 |
| #define LSb16REFCLK_CTRL_SEL_REG_LVL 8 |
| #define bREFCLK_CTRL_SEL_REG_LVL 2 |
| #define MSK32REFCLK_CTRL_SEL_REG_LVL 0x00000300 |
| |
| #define BA_REFCLK_CTRL_RX_EN 0x0001 |
| #define B16REFCLK_CTRL_RX_EN 0x0000 |
| #define LSb32REFCLK_CTRL_RX_EN 10 |
| #define LSb16REFCLK_CTRL_RX_EN 10 |
| #define bREFCLK_CTRL_RX_EN 1 |
| #define MSK32REFCLK_CTRL_RX_EN 0x00000400 |
| |
| #define BA_REFCLK_CTRL_TX_EN 0x0001 |
| #define B16REFCLK_CTRL_TX_EN 0x0000 |
| #define LSb32REFCLK_CTRL_TX_EN 11 |
| #define LSb16REFCLK_CTRL_TX_EN 11 |
| #define bREFCLK_CTRL_TX_EN 1 |
| #define MSK32REFCLK_CTRL_TX_EN 0x00000800 |
| |
| #define BA_REFCLK_CTRL_TEST_ANA 0x0001 |
| #define B16REFCLK_CTRL_TEST_ANA 0x0000 |
| #define LSb32REFCLK_CTRL_TEST_ANA 12 |
| #define LSb16REFCLK_CTRL_TEST_ANA 12 |
| #define bREFCLK_CTRL_TEST_ANA 3 |
| #define MSK32REFCLK_CTRL_TEST_ANA 0x00007000 |
| /////////////////////////////////////////////////////////// |
| |
| typedef struct SIE_REFCLK { |
| /////////////////////////////////////////////////////////// |
| #define GET32REFCLK_CTRL_PHY_SEL_FOR_RX_EN_PU_CTRL(r32) _BFGET_(r32, 1, 0) |
| #define SET32REFCLK_CTRL_PHY_SEL_FOR_RX_EN_PU_CTRL(r32,v) _BFSET_(r32, 1, 0,v) |
| #define GET16REFCLK_CTRL_PHY_SEL_FOR_RX_EN_PU_CTRL(r16) _BFGET_(r16, 1, 0) |
| #define SET16REFCLK_CTRL_PHY_SEL_FOR_RX_EN_PU_CTRL(r16,v) _BFSET_(r16, 1, 0,v) |
| |
| #define GET32REFCLK_CTRL_SW_CTRL_RX_EN_PU(r32) _BFGET_(r32, 2, 2) |
| #define SET32REFCLK_CTRL_SW_CTRL_RX_EN_PU(r32,v) _BFSET_(r32, 2, 2,v) |
| #define GET16REFCLK_CTRL_SW_CTRL_RX_EN_PU(r16) _BFGET_(r16, 2, 2) |
| #define SET16REFCLK_CTRL_SW_CTRL_RX_EN_PU(r16,v) _BFSET_(r16, 2, 2,v) |
| |
| #define GET32REFCLK_CTRL_PU(r32) _BFGET_(r32, 3, 3) |
| #define SET32REFCLK_CTRL_PU(r32,v) _BFSET_(r32, 3, 3,v) |
| #define GET16REFCLK_CTRL_PU(r16) _BFGET_(r16, 3, 3) |
| #define SET16REFCLK_CTRL_PU(r16,v) _BFSET_(r16, 3, 3,v) |
| |
| #define GET32REFCLK_CTRL_SEL_EXT(r32) _BFGET_(r32, 4, 4) |
| #define SET32REFCLK_CTRL_SEL_EXT(r32,v) _BFSET_(r32, 4, 4,v) |
| #define GET16REFCLK_CTRL_SEL_EXT(r16) _BFGET_(r16, 4, 4) |
| #define SET16REFCLK_CTRL_SEL_EXT(r16,v) _BFSET_(r16, 4, 4,v) |
| |
| #define GET32REFCLK_CTRL_SEL_AMP(r32) _BFGET_(r32, 7, 5) |
| #define SET32REFCLK_CTRL_SEL_AMP(r32,v) _BFSET_(r32, 7, 5,v) |
| #define GET16REFCLK_CTRL_SEL_AMP(r16) _BFGET_(r16, 7, 5) |
| #define SET16REFCLK_CTRL_SEL_AMP(r16,v) _BFSET_(r16, 7, 5,v) |
| |
| #define GET32REFCLK_CTRL_SEL_REG_LVL(r32) _BFGET_(r32, 9, 8) |
| #define SET32REFCLK_CTRL_SEL_REG_LVL(r32,v) _BFSET_(r32, 9, 8,v) |
| #define GET16REFCLK_CTRL_SEL_REG_LVL(r16) _BFGET_(r16, 9, 8) |
| #define SET16REFCLK_CTRL_SEL_REG_LVL(r16,v) _BFSET_(r16, 9, 8,v) |
| |
| #define GET32REFCLK_CTRL_RX_EN(r32) _BFGET_(r32,10,10) |
| #define SET32REFCLK_CTRL_RX_EN(r32,v) _BFSET_(r32,10,10,v) |
| #define GET16REFCLK_CTRL_RX_EN(r16) _BFGET_(r16,10,10) |
| #define SET16REFCLK_CTRL_RX_EN(r16,v) _BFSET_(r16,10,10,v) |
| |
| #define GET32REFCLK_CTRL_TX_EN(r32) _BFGET_(r32,11,11) |
| #define SET32REFCLK_CTRL_TX_EN(r32,v) _BFSET_(r32,11,11,v) |
| #define GET16REFCLK_CTRL_TX_EN(r16) _BFGET_(r16,11,11) |
| #define SET16REFCLK_CTRL_TX_EN(r16,v) _BFSET_(r16,11,11,v) |
| |
| #define GET32REFCLK_CTRL_TEST_ANA(r32) _BFGET_(r32,14,12) |
| #define SET32REFCLK_CTRL_TEST_ANA(r32,v) _BFSET_(r32,14,12,v) |
| #define GET16REFCLK_CTRL_TEST_ANA(r16) _BFGET_(r16,14,12) |
| #define SET16REFCLK_CTRL_TEST_ANA(r16,v) _BFSET_(r16,14,12,v) |
| |
| #define w32REFCLK_CTRL {\ |
| UNSG32 uCTRL_PHY_SEL_FOR_RX_EN_PU_CTRL : 2;\ |
| UNSG32 uCTRL_SW_CTRL_RX_EN_PU : 1;\ |
| UNSG32 uCTRL_PU : 1;\ |
| UNSG32 uCTRL_SEL_EXT : 1;\ |
| UNSG32 uCTRL_SEL_AMP : 3;\ |
| UNSG32 uCTRL_SEL_REG_LVL : 2;\ |
| UNSG32 uCTRL_RX_EN : 1;\ |
| UNSG32 uCTRL_TX_EN : 1;\ |
| UNSG32 uCTRL_TEST_ANA : 3;\ |
| UNSG32 RSVDx0_b15 : 17;\ |
| } |
| union { UNSG32 u32REFCLK_CTRL; |
| struct w32REFCLK_CTRL; |
| }; |
| /////////////////////////////////////////////////////////// |
| } SIE_REFCLK; |
| |
| typedef union T32REFCLK_CTRL |
| { UNSG32 u32; |
| struct w32REFCLK_CTRL; |
| } T32REFCLK_CTRL; |
| /////////////////////////////////////////////////////////// |
| |
| typedef union TREFCLK_CTRL |
| { UNSG32 u32[1]; |
| struct { |
| struct w32REFCLK_CTRL; |
| }; |
| } TREFCLK_CTRL; |
| |
| /////////////////////////////////////////////////////////// |
| SIGN32 REFCLK_drvrd(SIE_REFCLK *p, UNSG32 base, SIGN32 mem, SIGN32 tst); |
| SIGN32 REFCLK_drvwr(SIE_REFCLK *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd); |
| void REFCLK_reset(SIE_REFCLK *p); |
| SIGN32 REFCLK_cmp (SIE_REFCLK *p, SIE_REFCLK *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst); |
| #define REFCLK_check(p,pie,pfx,hLOG) REFCLK_cmp(p,pie,pfx,(void*)(hLOG),0,0) |
| #define REFCLK_print(p, pfx,hLOG) REFCLK_cmp(p,0, pfx,(void*)(hLOG),0,0) |
| |
| #endif |
| ////// |
| /// ENDOFINTERFACE: REFCLK |
| //////////////////////////////////////////////////////////// |
| |
| ////// |
| /// |
| /// $INTERFACE PCIE biu (4,4) |
| /// ### |
| /// * PCI-E module register space |
| /// ### |
| /// # # ---------------------------------------------------------- |
| /// @ 0x00000 (P) |
| /// # 0x00000 IP_REGSP_0 |
| /// $IP_REGSP_0 IP_REGSP_0 MEM |
| /// ### |
| /// * PCIE 3 IP First 32KB register Space |
| /// ### |
| /// @ 0x08000 (P) |
| /// # 0x08000 IP_REGSP_1 |
| /// $IP_REGSP_1 IP_REGSP_1 MEM |
| /// ### |
| /// * PCIE 3 IP Second 8KB register Space, So total IP Register space is 40KB |
| /// ### |
| /// @ 0x0A000 MSI_INTR_RX (RW-) |
| /// ### |
| /// * PCI-E MSI Received register |
| /// ### |
| /// %unsigned 32 DATA 0x0 |
| /// ### |
| /// * Data Received register |
| /// * The received data decides which function generated the interrupt. This data is used to set the corresponding bits in the INTR Status register |
| /// * Note: Software should use the [15:13] bits as the function ID while programming the MSI DATA register in the endpoint |
| /// * Endpoint should use the [1:0] bits to indicate what type of interrupt is this. |
| /// ### |
| /// @ 0x0A004 MSI_INTR_STATUS (WOC-) |
| /// ### |
| /// * PCI-E MSI Interrupt Status register |
| /// * BG3 supports MSI for 8 functions and each function can have 4 types of interrupts. |
| /// * The register implements 4 Interrupt bits for each function. |
| /// * A value of 1 : indicates that the interrupt is pending for that function |
| /// * A value of 0 : indicates no interrupt pending |
| /// * Note: Write-1-to clear the interrupt in this register |
| /// ### |
| /// %unsigned 32 VALUE 0x0 |
| /// ### |
| /// * MSI Interrupt status |
| /// * The bits in this register indicates MSI Interrupt status for the 8 functions. |
| /// * For each bit : |
| /// * 0 : means Interrupt is not pending |
| /// * 1 : means Interrupt is pending |
| /// * The following is the mapping between function and interrupt bits: |
| /// * Bits [3:0] : MSI Interrupt status for Function 0 interrupts |
| /// * Bits [7:4] : MSI Interrupt status for Function 1 interrupts |
| /// * Bits [11:8] : MSI Interrupt status for Function 2 interrupts |
| /// * Bits [15:12] : MSI Interrupt status for Function 3 interrupts |
| /// * Bits [19:16] : MSI Interrupt status for Function 4 interrupts |
| /// * Bits [23:20] : MSI Interrupt status for Function 5 interrupts |
| /// * Bits [27:24] : MSI Interrupt status for Function 6 interrupts |
| /// * Bits [31:28] : MSI Interrupt status for Function 7 interrupts |
| /// * Each function has 4-bits each (so can have 4 different types of interrupts). If any of them is set, it means corresponding Interrupt for that function is pending. |
| /// ### |
| /// @ 0x0A008 MSI_INTR_MASK (RW) |
| /// ### |
| /// * PCI-E MSI Interrupt Mask register |
| /// ### |
| /// %unsigned 32 VALUE 0x0 |
| /// ### |
| /// * Interrupt Mask |
| /// * 0 : Interrupt enabled |
| /// * 1 : Interrupt disabled (masked) |
| /// * Bits [3:0] : Interrupt Mask for Function 0 interrupts |
| /// * Bits [7:4] : Interrupt Mask for Function 1 interrupts |
| /// * Bits [11:8] : Interrupt Mask for Function 2 interrupts |
| /// * Bits [15:12] : Interrupt Mask for Function 3 interrupts |
| /// * Bits [19:16] : Interrupt Mask for Function 4 interrupts |
| /// * Bits [23:20] : Interrupt Mask for Function 5 interrupts |
| /// * Bits [27:24] : Interrupt Mask for Function 6 interrupts |
| /// * Bits [31:28] : Interrupt Mask for Function 7 interrupts |
| /// ### |
| /// @ 0x0A00C MAC_CTRL (RW) |
| /// ### |
| /// * PCIE MAC control register |
| /// ### |
| /// %unsigned 1 SYSWREQ 0x0 |
| /// ### |
| /// * AXI Lower power control bit |
| /// ### |
| /// %unsigned 1 CPU_INTERFACE_SEL 0x0 |
| /// ### |
| /// * CPU Interface selection bit |
| /// * 0 : Use AHB to access PCIE registers |
| /// * 1 : Use SIF Serial interface to access the registers |
| /// ### |
| /// %unsigned 1 CFG_TYPE 0x0 |
| /// ### |
| /// * Register bit to indicate whether outbound CFG cycles are Type 0 or Type1 |
| /// * 0 : Type 0 configuration cycles (default) |
| /// * 1 : Type 1 configuration cycles cd |
| /// ### |
| /// %unsigned 1 MEMMAP_CFG_VALID 0x1 |
| /// ### |
| /// * Register bit to indicate whether Memory Mapped CFG cycles are supported or not. |
| /// * 0 : Memory mapped CFG cycles are not supported |
| /// * 1 : Memory mapped CFG cycles are supported |
| /// * Note: When this bit 0 : All the AXI transactions on the outbound will be send as Memory TLPs |
| /// * When this bit is 1 : The 512MB address space for PCIE in the chip is divided into parts, with lower 256MB for MEM and upper 256MB for CFG access. |
| /// ### |
| /// %% 28 # Stuffing bits... |
| /// @ 0x0A010 MAC_STATUS (R-) |
| /// ### |
| /// * PCIE MAC misc status register |
| /// ### |
| /// %unsigned 1 DWACK |
| /// ### |
| /// * AXI low power status |
| /// ### |
| /// %% 31 # Stuffing bits... |
| /// @ 0x0A014 MAC_CLK_CTRL (RW) |
| /// ### |
| /// * PCIE MAC clock control register |
| /// ### |
| /// %unsigned 1 AXI_CLKEN 0x1 |
| /// ### |
| /// * AXI clock enable |
| /// * 0: CLK is not enabled (OFF ) |
| /// * 1: CLK is enabled (ON) |
| /// ### |
| /// %unsigned 1 AHB_CLKEN 0x1 |
| /// ### |
| /// * AHB clock enable |
| /// * 0: CLK is not enabled (OFF ) |
| /// * 1: CLK is enabled (ON) |
| /// ### |
| /// %unsigned 1 CORE_CLKEN 0x1 |
| /// ### |
| /// * PCIE Core clock enable |
| /// * 0: CLK is not enabled (OFF ) |
| /// * 1: CLK is enabled (ON) |
| /// ### |
| /// %unsigned 1 PIPE_CLKEN 0x1 |
| /// ### |
| /// * PPIE clock enable |
| /// * 0: CLK is not enabled (OFF ) |
| /// * 1: CLK is enabled (ON) |
| /// ### |
| /// %% 28 # Stuffing bits... |
| /// @ 0x0A018 (P) |
| /// # 0x0A018 REFCLK |
| /// $REFCLK REFCLK REG |
| /// ### |
| /// * Reference clock buffer control registers |
| /// ### |
| /// @ 0x0A01C PHY_CTRL (RW) |
| /// ### |
| /// * PHY control register |
| /// ### |
| /// %unsigned 1 RXEIDETECT_DIS 0x0 |
| /// ### |
| /// * Rx electrical idle (or squelch) detect disable: |
| /// * 0 : Squelch detector is enabled |
| /// * 1 : Squelch detector is disabled |
| /// ### |
| /// %unsigned 1 TXCMN_MODE_DIS 0x0 |
| /// ### |
| /// * Tx common mode disable |
| /// * 0 : Tx common mode circuit is enabled |
| /// * 1: Tx common mode circuit is disabled |
| /// ### |
| /// %unsigned 2 SIF_MUX_SEL 0x0 |
| /// ### |
| /// * Register bits to select which PHY SIF interface is being used out of the 4 PHY |
| /// * 00 : PHY 0 selected |
| /// * 01 ; PHY 1 Selected |
| /// * 10 ; PHY 2 Selected |
| /// * 11 ; PHY 3 Selected |
| /// ### |
| /// %unsigned 2 SIF_DEV_SEL 0x1 |
| /// ### |
| /// * Device select for serial interface |
| /// * 00 : SIF is disabled |
| /// * 01 : SIF is enabled for PHY (For multi-lanes this bit selects the PHY0) |
| /// * 10 : SIF enabled for PHY1 (Only for multi-lane MAC (PCIE0)) |
| /// ### |
| /// %unsigned 1 ISOLATION_ENB 0x1 |
| /// ### |
| /// * Control bit for isolation function |
| /// * 0 : Power down mode |
| /// * 1: Normal function mode |
| /// ### |
| /// %% 25 # Stuffing bits... |
| /// @ 0x0A020 HWDBG_CTRL (RW) |
| /// ### |
| /// * Hardware Debug control. This register is used to select the Debug Bus coming out of the PCIE subsystem to the chip pins. |
| /// ### |
| /// %unsigned 2 PCIESEL 0x0 |
| /// ### |
| /// * Bit used to select which PCIE debug bus needs to be selected to be observed on the Chip debug port |
| /// * 0 : PCIE 0 (x2 MAC) |
| /// * 1 : PCIE 1 (x1 MAC) |
| /// * 2 : PCIE 2 (x1 MAC) |
| /// * Note: Only PCIE0 register bits are used others are not used |
| /// ### |
| /// %unsigned 1 DATASEL 0x0 |
| /// ### |
| /// * Bit to select the upper or lower 16-bits of the debug data. |
| /// * 0: Selects the [15:0] data |
| /// * 1: Selects the [31:16] data |
| /// * Note: Only PCIE0 register bits are used others are not used |
| /// ### |
| /// %unsigned 8 SIGSEL 0x0 |
| /// ### |
| /// * These bits selects the debug signals from each PCIE IP. |
| /// * Note: All the PCIE0/1/2 register bits are used since the debug data from all the 3 PCIE is stored in the HWDBG_DATA regitser |
| /// ### |
| /// %% 21 # Stuffing bits... |
| /// @ 0x0A024 HWDBG_DATA (R-) |
| /// ### |
| /// * Debug data from IP |
| /// ### |
| /// %unsigned 32 VAL |
| /// @ 0x0A028 SPARE_0 (RW) |
| /// %unsigned 32 REGBITS 0x0 |
| /// @ 0x0A02C SPARE_1 (RW) |
| /// %unsigned 32 REGBITS 0x0 |
| /// @ 0x0A030 SPARE_2 (RW) |
| /// %unsigned 32 REGBITS 0x0 |
| /// @ 0x0A034 SPARE_3 (RW) |
| /// %unsigned 32 REGBITS 0x0 |
| /// ### |
| /// * **INTERNAL_ONLY** |
| /// * Spare register bits for future use |
| /// ### |
| /// @ 0x0A038 (W-) |
| /// # # Stuffing bytes... |
| /// %% 196160 |
| /// # # ---------------------------------------------------------- |
| /// $ENDOFINTERFACE # size: 65536B, bits: 362b, padding: 0B |
| //////////////////////////////////////////////////////////// |
| #ifndef h_PCIE |
| #define h_PCIE (){} |
| |
| #define RA_PCIE_IP_REGSP_0 0x0000 |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_IP_REGSP_1 0x8000 |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_MSI_INTR_RX 0xA000 |
| |
| #define BA_PCIE_MSI_INTR_RX_DATA 0xA000 |
| #define B16PCIE_MSI_INTR_RX_DATA 0xA000 |
| #define LSb32PCIE_MSI_INTR_RX_DATA 0 |
| #define LSb16PCIE_MSI_INTR_RX_DATA 0 |
| #define bPCIE_MSI_INTR_RX_DATA 32 |
| #define MSK32PCIE_MSI_INTR_RX_DATA 0xFFFFFFFF |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_MSI_INTR_STATUS 0xA004 |
| |
| #define BA_PCIE_MSI_INTR_STATUS_VALUE 0xA004 |
| #define B16PCIE_MSI_INTR_STATUS_VALUE 0xA004 |
| #define LSb32PCIE_MSI_INTR_STATUS_VALUE 0 |
| #define LSb16PCIE_MSI_INTR_STATUS_VALUE 0 |
| #define bPCIE_MSI_INTR_STATUS_VALUE 32 |
| #define MSK32PCIE_MSI_INTR_STATUS_VALUE 0xFFFFFFFF |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_MSI_INTR_MASK 0xA008 |
| |
| #define BA_PCIE_MSI_INTR_MASK_VALUE 0xA008 |
| #define B16PCIE_MSI_INTR_MASK_VALUE 0xA008 |
| #define LSb32PCIE_MSI_INTR_MASK_VALUE 0 |
| #define LSb16PCIE_MSI_INTR_MASK_VALUE 0 |
| #define bPCIE_MSI_INTR_MASK_VALUE 32 |
| #define MSK32PCIE_MSI_INTR_MASK_VALUE 0xFFFFFFFF |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_MAC_CTRL 0xA00C |
| |
| #define BA_PCIE_MAC_CTRL_SYSWREQ 0xA00C |
| #define B16PCIE_MAC_CTRL_SYSWREQ 0xA00C |
| #define LSb32PCIE_MAC_CTRL_SYSWREQ 0 |
| #define LSb16PCIE_MAC_CTRL_SYSWREQ 0 |
| #define bPCIE_MAC_CTRL_SYSWREQ 1 |
| #define MSK32PCIE_MAC_CTRL_SYSWREQ 0x00000001 |
| |
| #define BA_PCIE_MAC_CTRL_CPU_INTERFACE_SEL 0xA00C |
| #define B16PCIE_MAC_CTRL_CPU_INTERFACE_SEL 0xA00C |
| #define LSb32PCIE_MAC_CTRL_CPU_INTERFACE_SEL 1 |
| #define LSb16PCIE_MAC_CTRL_CPU_INTERFACE_SEL 1 |
| #define bPCIE_MAC_CTRL_CPU_INTERFACE_SEL 1 |
| #define MSK32PCIE_MAC_CTRL_CPU_INTERFACE_SEL 0x00000002 |
| |
| #define BA_PCIE_MAC_CTRL_CFG_TYPE 0xA00C |
| #define B16PCIE_MAC_CTRL_CFG_TYPE 0xA00C |
| #define LSb32PCIE_MAC_CTRL_CFG_TYPE 2 |
| #define LSb16PCIE_MAC_CTRL_CFG_TYPE 2 |
| #define bPCIE_MAC_CTRL_CFG_TYPE 1 |
| #define MSK32PCIE_MAC_CTRL_CFG_TYPE 0x00000004 |
| |
| #define BA_PCIE_MAC_CTRL_MEMMAP_CFG_VALID 0xA00C |
| #define B16PCIE_MAC_CTRL_MEMMAP_CFG_VALID 0xA00C |
| #define LSb32PCIE_MAC_CTRL_MEMMAP_CFG_VALID 3 |
| #define LSb16PCIE_MAC_CTRL_MEMMAP_CFG_VALID 3 |
| #define bPCIE_MAC_CTRL_MEMMAP_CFG_VALID 1 |
| #define MSK32PCIE_MAC_CTRL_MEMMAP_CFG_VALID 0x00000008 |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_MAC_STATUS 0xA010 |
| |
| #define BA_PCIE_MAC_STATUS_DWACK 0xA010 |
| #define B16PCIE_MAC_STATUS_DWACK 0xA010 |
| #define LSb32PCIE_MAC_STATUS_DWACK 0 |
| #define LSb16PCIE_MAC_STATUS_DWACK 0 |
| #define bPCIE_MAC_STATUS_DWACK 1 |
| #define MSK32PCIE_MAC_STATUS_DWACK 0x00000001 |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_MAC_CLK_CTRL 0xA014 |
| |
| #define BA_PCIE_MAC_CLK_CTRL_AXI_CLKEN 0xA014 |
| #define B16PCIE_MAC_CLK_CTRL_AXI_CLKEN 0xA014 |
| #define LSb32PCIE_MAC_CLK_CTRL_AXI_CLKEN 0 |
| #define LSb16PCIE_MAC_CLK_CTRL_AXI_CLKEN 0 |
| #define bPCIE_MAC_CLK_CTRL_AXI_CLKEN 1 |
| #define MSK32PCIE_MAC_CLK_CTRL_AXI_CLKEN 0x00000001 |
| |
| #define BA_PCIE_MAC_CLK_CTRL_AHB_CLKEN 0xA014 |
| #define B16PCIE_MAC_CLK_CTRL_AHB_CLKEN 0xA014 |
| #define LSb32PCIE_MAC_CLK_CTRL_AHB_CLKEN 1 |
| #define LSb16PCIE_MAC_CLK_CTRL_AHB_CLKEN 1 |
| #define bPCIE_MAC_CLK_CTRL_AHB_CLKEN 1 |
| #define MSK32PCIE_MAC_CLK_CTRL_AHB_CLKEN 0x00000002 |
| |
| #define BA_PCIE_MAC_CLK_CTRL_CORE_CLKEN 0xA014 |
| #define B16PCIE_MAC_CLK_CTRL_CORE_CLKEN 0xA014 |
| #define LSb32PCIE_MAC_CLK_CTRL_CORE_CLKEN 2 |
| #define LSb16PCIE_MAC_CLK_CTRL_CORE_CLKEN 2 |
| #define bPCIE_MAC_CLK_CTRL_CORE_CLKEN 1 |
| #define MSK32PCIE_MAC_CLK_CTRL_CORE_CLKEN 0x00000004 |
| |
| #define BA_PCIE_MAC_CLK_CTRL_PIPE_CLKEN 0xA014 |
| #define B16PCIE_MAC_CLK_CTRL_PIPE_CLKEN 0xA014 |
| #define LSb32PCIE_MAC_CLK_CTRL_PIPE_CLKEN 3 |
| #define LSb16PCIE_MAC_CLK_CTRL_PIPE_CLKEN 3 |
| #define bPCIE_MAC_CLK_CTRL_PIPE_CLKEN 1 |
| #define MSK32PCIE_MAC_CLK_CTRL_PIPE_CLKEN 0x00000008 |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_REFCLK 0xA018 |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_PHY_CTRL 0xA01C |
| |
| #define BA_PCIE_PHY_CTRL_RXEIDETECT_DIS 0xA01C |
| #define B16PCIE_PHY_CTRL_RXEIDETECT_DIS 0xA01C |
| #define LSb32PCIE_PHY_CTRL_RXEIDETECT_DIS 0 |
| #define LSb16PCIE_PHY_CTRL_RXEIDETECT_DIS 0 |
| #define bPCIE_PHY_CTRL_RXEIDETECT_DIS 1 |
| #define MSK32PCIE_PHY_CTRL_RXEIDETECT_DIS 0x00000001 |
| |
| #define BA_PCIE_PHY_CTRL_TXCMN_MODE_DIS 0xA01C |
| #define B16PCIE_PHY_CTRL_TXCMN_MODE_DIS 0xA01C |
| #define LSb32PCIE_PHY_CTRL_TXCMN_MODE_DIS 1 |
| #define LSb16PCIE_PHY_CTRL_TXCMN_MODE_DIS 1 |
| #define bPCIE_PHY_CTRL_TXCMN_MODE_DIS 1 |
| #define MSK32PCIE_PHY_CTRL_TXCMN_MODE_DIS 0x00000002 |
| |
| #define BA_PCIE_PHY_CTRL_SIF_MUX_SEL 0xA01C |
| #define B16PCIE_PHY_CTRL_SIF_MUX_SEL 0xA01C |
| #define LSb32PCIE_PHY_CTRL_SIF_MUX_SEL 2 |
| #define LSb16PCIE_PHY_CTRL_SIF_MUX_SEL 2 |
| #define bPCIE_PHY_CTRL_SIF_MUX_SEL 2 |
| #define MSK32PCIE_PHY_CTRL_SIF_MUX_SEL 0x0000000C |
| |
| #define BA_PCIE_PHY_CTRL_SIF_DEV_SEL 0xA01C |
| #define B16PCIE_PHY_CTRL_SIF_DEV_SEL 0xA01C |
| #define LSb32PCIE_PHY_CTRL_SIF_DEV_SEL 4 |
| #define LSb16PCIE_PHY_CTRL_SIF_DEV_SEL 4 |
| #define bPCIE_PHY_CTRL_SIF_DEV_SEL 2 |
| #define MSK32PCIE_PHY_CTRL_SIF_DEV_SEL 0x00000030 |
| |
| #define BA_PCIE_PHY_CTRL_ISOLATION_ENB 0xA01C |
| #define B16PCIE_PHY_CTRL_ISOLATION_ENB 0xA01C |
| #define LSb32PCIE_PHY_CTRL_ISOLATION_ENB 6 |
| #define LSb16PCIE_PHY_CTRL_ISOLATION_ENB 6 |
| #define bPCIE_PHY_CTRL_ISOLATION_ENB 1 |
| #define MSK32PCIE_PHY_CTRL_ISOLATION_ENB 0x00000040 |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_HWDBG_CTRL 0xA020 |
| |
| #define BA_PCIE_HWDBG_CTRL_PCIESEL 0xA020 |
| #define B16PCIE_HWDBG_CTRL_PCIESEL 0xA020 |
| #define LSb32PCIE_HWDBG_CTRL_PCIESEL 0 |
| #define LSb16PCIE_HWDBG_CTRL_PCIESEL 0 |
| #define bPCIE_HWDBG_CTRL_PCIESEL 2 |
| #define MSK32PCIE_HWDBG_CTRL_PCIESEL 0x00000003 |
| |
| #define BA_PCIE_HWDBG_CTRL_DATASEL 0xA020 |
| #define B16PCIE_HWDBG_CTRL_DATASEL 0xA020 |
| #define LSb32PCIE_HWDBG_CTRL_DATASEL 2 |
| #define LSb16PCIE_HWDBG_CTRL_DATASEL 2 |
| #define bPCIE_HWDBG_CTRL_DATASEL 1 |
| #define MSK32PCIE_HWDBG_CTRL_DATASEL 0x00000004 |
| |
| #define BA_PCIE_HWDBG_CTRL_SIGSEL 0xA020 |
| #define B16PCIE_HWDBG_CTRL_SIGSEL 0xA020 |
| #define LSb32PCIE_HWDBG_CTRL_SIGSEL 3 |
| #define LSb16PCIE_HWDBG_CTRL_SIGSEL 3 |
| #define bPCIE_HWDBG_CTRL_SIGSEL 8 |
| #define MSK32PCIE_HWDBG_CTRL_SIGSEL 0x000007F8 |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_HWDBG_DATA 0xA024 |
| |
| #define BA_PCIE_HWDBG_DATA_VAL 0xA024 |
| #define B16PCIE_HWDBG_DATA_VAL 0xA024 |
| #define LSb32PCIE_HWDBG_DATA_VAL 0 |
| #define LSb16PCIE_HWDBG_DATA_VAL 0 |
| #define bPCIE_HWDBG_DATA_VAL 32 |
| #define MSK32PCIE_HWDBG_DATA_VAL 0xFFFFFFFF |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_SPARE_0 0xA028 |
| |
| #define BA_PCIE_SPARE_0_REGBITS 0xA028 |
| #define B16PCIE_SPARE_0_REGBITS 0xA028 |
| #define LSb32PCIE_SPARE_0_REGBITS 0 |
| #define LSb16PCIE_SPARE_0_REGBITS 0 |
| #define bPCIE_SPARE_0_REGBITS 32 |
| #define MSK32PCIE_SPARE_0_REGBITS 0xFFFFFFFF |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_SPARE_1 0xA02C |
| |
| #define BA_PCIE_SPARE_1_REGBITS 0xA02C |
| #define B16PCIE_SPARE_1_REGBITS 0xA02C |
| #define LSb32PCIE_SPARE_1_REGBITS 0 |
| #define LSb16PCIE_SPARE_1_REGBITS 0 |
| #define bPCIE_SPARE_1_REGBITS 32 |
| #define MSK32PCIE_SPARE_1_REGBITS 0xFFFFFFFF |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_SPARE_2 0xA030 |
| |
| #define BA_PCIE_SPARE_2_REGBITS 0xA030 |
| #define B16PCIE_SPARE_2_REGBITS 0xA030 |
| #define LSb32PCIE_SPARE_2_REGBITS 0 |
| #define LSb16PCIE_SPARE_2_REGBITS 0 |
| #define bPCIE_SPARE_2_REGBITS 32 |
| #define MSK32PCIE_SPARE_2_REGBITS 0xFFFFFFFF |
| /////////////////////////////////////////////////////////// |
| #define RA_PCIE_SPARE_3 0xA034 |
| |
| #define BA_PCIE_SPARE_3_REGBITS 0xA034 |
| #define B16PCIE_SPARE_3_REGBITS 0xA034 |
| #define LSb32PCIE_SPARE_3_REGBITS 0 |
| #define LSb16PCIE_SPARE_3_REGBITS 0 |
| #define bPCIE_SPARE_3_REGBITS 32 |
| #define MSK32PCIE_SPARE_3_REGBITS 0xFFFFFFFF |
| /////////////////////////////////////////////////////////// |
| |
| typedef struct SIE_PCIE { |
| /////////////////////////////////////////////////////////// |
| SIE_IP_REGSP_0 ie_IP_REGSP_0; |
| /////////////////////////////////////////////////////////// |
| SIE_IP_REGSP_1 ie_IP_REGSP_1; |
| /////////////////////////////////////////////////////////// |
| #define GET32PCIE_MSI_INTR_RX_DATA(r32) _BFGET_(r32,31, 0) |
| #define SET32PCIE_MSI_INTR_RX_DATA(r32,v) _BFSET_(r32,31, 0,v) |
| |
| #define w32PCIE_MSI_INTR_RX {\ |
| UNSG32 uMSI_INTR_RX_DATA : 32;\ |
| } |
| union { UNSG32 u32PCIE_MSI_INTR_RX; |
| struct w32PCIE_MSI_INTR_RX; |
| }; |
| /////////////////////////////////////////////////////////// |
| #define GET32PCIE_MSI_INTR_STATUS_VALUE(r32) _BFGET_(r32,31, 0) |
| #define SET32PCIE_MSI_INTR_STATUS_VALUE(r32,v) _BFSET_(r32,31, 0,v) |
| |
| #define w32PCIE_MSI_INTR_STATUS {\ |
| UNSG32 uMSI_INTR_STATUS_VALUE : 32;\ |
| } |
| union { UNSG32 u32PCIE_MSI_INTR_STATUS; |
| struct w32PCIE_MSI_INTR_STATUS; |
| }; |
| /////////////////////////////////////////////////////////// |
| #define GET32PCIE_MSI_INTR_MASK_VALUE(r32) _BFGET_(r32,31, 0) |
| #define SET32PCIE_MSI_INTR_MASK_VALUE(r32,v) _BFSET_(r32,31, 0,v) |
| |
| #define w32PCIE_MSI_INTR_MASK {\ |
| UNSG32 uMSI_INTR_MASK_VALUE : 32;\ |
| } |
| union { UNSG32 u32PCIE_MSI_INTR_MASK; |
| struct w32PCIE_MSI_INTR_MASK; |
| }; |
| /////////////////////////////////////////////////////////// |
| #define GET32PCIE_MAC_CTRL_SYSWREQ(r32) _BFGET_(r32, 0, 0) |
| #define SET32PCIE_MAC_CTRL_SYSWREQ(r32,v) _BFSET_(r32, 0, 0,v) |
| #define GET16PCIE_MAC_CTRL_SYSWREQ(r16) _BFGET_(r16, 0, 0) |
| #define SET16PCIE_MAC_CTRL_SYSWREQ(r16,v) _BFSET_(r16, 0, 0,v) |
| |
| #define GET32PCIE_MAC_CTRL_CPU_INTERFACE_SEL(r32) _BFGET_(r32, 1, 1) |
| #define SET32PCIE_MAC_CTRL_CPU_INTERFACE_SEL(r32,v) _BFSET_(r32, 1, 1,v) |
| #define GET16PCIE_MAC_CTRL_CPU_INTERFACE_SEL(r16) _BFGET_(r16, 1, 1) |
| #define SET16PCIE_MAC_CTRL_CPU_INTERFACE_SEL(r16,v) _BFSET_(r16, 1, 1,v) |
| |
| #define GET32PCIE_MAC_CTRL_CFG_TYPE(r32) _BFGET_(r32, 2, 2) |
| #define SET32PCIE_MAC_CTRL_CFG_TYPE(r32,v) _BFSET_(r32, 2, 2,v) |
| #define GET16PCIE_MAC_CTRL_CFG_TYPE(r16) _BFGET_(r16, 2, 2) |
| #define SET16PCIE_MAC_CTRL_CFG_TYPE(r16,v) _BFSET_(r16, 2, 2,v) |
| |
| #define GET32PCIE_MAC_CTRL_MEMMAP_CFG_VALID(r32) _BFGET_(r32, 3, 3) |
| #define SET32PCIE_MAC_CTRL_MEMMAP_CFG_VALID(r32,v) _BFSET_(r32, 3, 3,v) |
| #define GET16PCIE_MAC_CTRL_MEMMAP_CFG_VALID(r16) _BFGET_(r16, 3, 3) |
| #define SET16PCIE_MAC_CTRL_MEMMAP_CFG_VALID(r16,v) _BFSET_(r16, 3, 3,v) |
| |
| #define w32PCIE_MAC_CTRL {\ |
| UNSG32 uMAC_CTRL_SYSWREQ : 1;\ |
| UNSG32 uMAC_CTRL_CPU_INTERFACE_SEL : 1;\ |
| UNSG32 uMAC_CTRL_CFG_TYPE : 1;\ |
| UNSG32 uMAC_CTRL_MEMMAP_CFG_VALID : 1;\ |
| UNSG32 RSVDxA00C_b4 : 28;\ |
| } |
| union { UNSG32 u32PCIE_MAC_CTRL; |
| struct w32PCIE_MAC_CTRL; |
| }; |
| /////////////////////////////////////////////////////////// |
| #define GET32PCIE_MAC_STATUS_DWACK(r32) _BFGET_(r32, 0, 0) |
| #define SET32PCIE_MAC_STATUS_DWACK(r32,v) _BFSET_(r32, 0, 0,v) |
| #define GET16PCIE_MAC_STATUS_DWACK(r16) _BFGET_(r16, 0, 0) |
| #define SET16PCIE_MAC_STATUS_DWACK(r16,v) _BFSET_(r16, 0, 0,v) |
| |
| #define w32PCIE_MAC_STATUS {\ |
| UNSG32 uMAC_STATUS_DWACK : 1;\ |
| UNSG32 RSVDxA010_b1 : 31;\ |
| } |
| union { UNSG32 u32PCIE_MAC_STATUS; |
| struct w32PCIE_MAC_STATUS; |
| }; |
| /////////////////////////////////////////////////////////// |
| #define GET32PCIE_MAC_CLK_CTRL_AXI_CLKEN(r32) _BFGET_(r32, 0, 0) |
| #define SET32PCIE_MAC_CLK_CTRL_AXI_CLKEN(r32,v) _BFSET_(r32, 0, 0,v) |
| #define GET16PCIE_MAC_CLK_CTRL_AXI_CLKEN(r16) _BFGET_(r16, 0, 0) |
| #define SET16PCIE_MAC_CLK_CTRL_AXI_CLKEN(r16,v) _BFSET_(r16, 0, 0,v) |
| |
| #define GET32PCIE_MAC_CLK_CTRL_AHB_CLKEN(r32) _BFGET_(r32, 1, 1) |
| #define SET32PCIE_MAC_CLK_CTRL_AHB_CLKEN(r32,v) _BFSET_(r32, 1, 1,v) |
| #define GET16PCIE_MAC_CLK_CTRL_AHB_CLKEN(r16) _BFGET_(r16, 1, 1) |
| #define SET16PCIE_MAC_CLK_CTRL_AHB_CLKEN(r16,v) _BFSET_(r16, 1, 1,v) |
| |
| #define GET32PCIE_MAC_CLK_CTRL_CORE_CLKEN(r32) _BFGET_(r32, 2, 2) |
| #define SET32PCIE_MAC_CLK_CTRL_CORE_CLKEN(r32,v) _BFSET_(r32, 2, 2,v) |
| #define GET16PCIE_MAC_CLK_CTRL_CORE_CLKEN(r16) _BFGET_(r16, 2, 2) |
| #define SET16PCIE_MAC_CLK_CTRL_CORE_CLKEN(r16,v) _BFSET_(r16, 2, 2,v) |
| |
| #define GET32PCIE_MAC_CLK_CTRL_PIPE_CLKEN(r32) _BFGET_(r32, 3, 3) |
| #define SET32PCIE_MAC_CLK_CTRL_PIPE_CLKEN(r32,v) _BFSET_(r32, 3, 3,v) |
| #define GET16PCIE_MAC_CLK_CTRL_PIPE_CLKEN(r16) _BFGET_(r16, 3, 3) |
| #define SET16PCIE_MAC_CLK_CTRL_PIPE_CLKEN(r16,v) _BFSET_(r16, 3, 3,v) |
| |
| #define w32PCIE_MAC_CLK_CTRL {\ |
| UNSG32 uMAC_CLK_CTRL_AXI_CLKEN : 1;\ |
| UNSG32 uMAC_CLK_CTRL_AHB_CLKEN : 1;\ |
| UNSG32 uMAC_CLK_CTRL_CORE_CLKEN : 1;\ |
| UNSG32 uMAC_CLK_CTRL_PIPE_CLKEN : 1;\ |
| UNSG32 RSVDxA014_b4 : 28;\ |
| } |
| union { UNSG32 u32PCIE_MAC_CLK_CTRL; |
| struct w32PCIE_MAC_CLK_CTRL; |
| }; |
| /////////////////////////////////////////////////////////// |
| SIE_REFCLK ie_REFCLK; |
| /////////////////////////////////////////////////////////// |
| #define GET32PCIE_PHY_CTRL_RXEIDETECT_DIS(r32) _BFGET_(r32, 0, 0) |
| #define SET32PCIE_PHY_CTRL_RXEIDETECT_DIS(r32,v) _BFSET_(r32, 0, 0,v) |
| #define GET16PCIE_PHY_CTRL_RXEIDETECT_DIS(r16) _BFGET_(r16, 0, 0) |
| #define SET16PCIE_PHY_CTRL_RXEIDETECT_DIS(r16,v) _BFSET_(r16, 0, 0,v) |
| |
| #define GET32PCIE_PHY_CTRL_TXCMN_MODE_DIS(r32) _BFGET_(r32, 1, 1) |
| #define SET32PCIE_PHY_CTRL_TXCMN_MODE_DIS(r32,v) _BFSET_(r32, 1, 1,v) |
| #define GET16PCIE_PHY_CTRL_TXCMN_MODE_DIS(r16) _BFGET_(r16, 1, 1) |
| #define SET16PCIE_PHY_CTRL_TXCMN_MODE_DIS(r16,v) _BFSET_(r16, 1, 1,v) |
| |
| #define GET32PCIE_PHY_CTRL_SIF_MUX_SEL(r32) _BFGET_(r32, 3, 2) |
| #define SET32PCIE_PHY_CTRL_SIF_MUX_SEL(r32,v) _BFSET_(r32, 3, 2,v) |
| #define GET16PCIE_PHY_CTRL_SIF_MUX_SEL(r16) _BFGET_(r16, 3, 2) |
| #define SET16PCIE_PHY_CTRL_SIF_MUX_SEL(r16,v) _BFSET_(r16, 3, 2,v) |
| |
| #define GET32PCIE_PHY_CTRL_SIF_DEV_SEL(r32) _BFGET_(r32, 5, 4) |
| #define SET32PCIE_PHY_CTRL_SIF_DEV_SEL(r32,v) _BFSET_(r32, 5, 4,v) |
| #define GET16PCIE_PHY_CTRL_SIF_DEV_SEL(r16) _BFGET_(r16, 5, 4) |
| #define SET16PCIE_PHY_CTRL_SIF_DEV_SEL(r16,v) _BFSET_(r16, 5, 4,v) |
| |
| #define GET32PCIE_PHY_CTRL_ISOLATION_ENB(r32) _BFGET_(r32, 6, 6) |
| #define SET32PCIE_PHY_CTRL_ISOLATION_ENB(r32,v) _BFSET_(r32, 6, 6,v) |
| #define GET16PCIE_PHY_CTRL_ISOLATION_ENB(r16) _BFGET_(r16, 6, 6) |
| #define SET16PCIE_PHY_CTRL_ISOLATION_ENB(r16,v) _BFSET_(r16, 6, 6,v) |
| |
| #define w32PCIE_PHY_CTRL {\ |
| UNSG32 uPHY_CTRL_RXEIDETECT_DIS : 1;\ |
| UNSG32 uPHY_CTRL_TXCMN_MODE_DIS : 1;\ |
| UNSG32 uPHY_CTRL_SIF_MUX_SEL : 2;\ |
| UNSG32 uPHY_CTRL_SIF_DEV_SEL : 2;\ |
| UNSG32 uPHY_CTRL_ISOLATION_ENB : 1;\ |
| UNSG32 RSVDxA01C_b7 : 25;\ |
| } |
| union { UNSG32 u32PCIE_PHY_CTRL; |
| struct w32PCIE_PHY_CTRL; |
| }; |
| /////////////////////////////////////////////////////////// |
| #define GET32PCIE_HWDBG_CTRL_PCIESEL(r32) _BFGET_(r32, 1, 0) |
| #define SET32PCIE_HWDBG_CTRL_PCIESEL(r32,v) _BFSET_(r32, 1, 0,v) |
| #define GET16PCIE_HWDBG_CTRL_PCIESEL(r16) _BFGET_(r16, 1, 0) |
| #define SET16PCIE_HWDBG_CTRL_PCIESEL(r16,v) _BFSET_(r16, 1, 0,v) |
| |
| #define GET32PCIE_HWDBG_CTRL_DATASEL(r32) _BFGET_(r32, 2, 2) |
| #define SET32PCIE_HWDBG_CTRL_DATASEL(r32,v) _BFSET_(r32, 2, 2,v) |
| #define GET16PCIE_HWDBG_CTRL_DATASEL(r16) _BFGET_(r16, 2, 2) |
| #define SET16PCIE_HWDBG_CTRL_DATASEL(r16,v) _BFSET_(r16, 2, 2,v) |
| |
| #define GET32PCIE_HWDBG_CTRL_SIGSEL(r32) _BFGET_(r32,10, 3) |
| #define SET32PCIE_HWDBG_CTRL_SIGSEL(r32,v) _BFSET_(r32,10, 3,v) |
| #define GET16PCIE_HWDBG_CTRL_SIGSEL(r16) _BFGET_(r16,10, 3) |
| #define SET16PCIE_HWDBG_CTRL_SIGSEL(r16,v) _BFSET_(r16,10, 3,v) |
| |
| #define w32PCIE_HWDBG_CTRL {\ |
| UNSG32 uHWDBG_CTRL_PCIESEL : 2;\ |
| UNSG32 uHWDBG_CTRL_DATASEL : 1;\ |
| UNSG32 uHWDBG_CTRL_SIGSEL : 8;\ |
| UNSG32 RSVDxA020_b11 : 21;\ |
| } |
| union { UNSG32 u32PCIE_HWDBG_CTRL; |
| struct w32PCIE_HWDBG_CTRL; |
| }; |
| /////////////////////////////////////////////////////////// |
| #define GET32PCIE_HWDBG_DATA_VAL(r32) _BFGET_(r32,31, 0) |
| #define SET32PCIE_HWDBG_DATA_VAL(r32,v) _BFSET_(r32,31, 0,v) |
| |
| #define w32PCIE_HWDBG_DATA {\ |
| UNSG32 uHWDBG_DATA_VAL : 32;\ |
| } |
| union { UNSG32 u32PCIE_HWDBG_DATA; |
| struct w32PCIE_HWDBG_DATA; |
| }; |
| /////////////////////////////////////////////////////////// |
| #define GET32PCIE_SPARE_0_REGBITS(r32) _BFGET_(r32,31, 0) |
| #define SET32PCIE_SPARE_0_REGBITS(r32,v) _BFSET_(r32,31, 0,v) |
| |
| #define w32PCIE_SPARE_0 {\ |
| UNSG32 uSPARE_0_REGBITS : 32;\ |
| } |
| union { UNSG32 u32PCIE_SPARE_0; |
| struct w32PCIE_SPARE_0; |
| }; |
| /////////////////////////////////////////////////////////// |
| #define GET32PCIE_SPARE_1_REGBITS(r32) _BFGET_(r32,31, 0) |
| #define SET32PCIE_SPARE_1_REGBITS(r32,v) _BFSET_(r32,31, 0,v) |
| |
| #define w32PCIE_SPARE_1 {\ |
| UNSG32 uSPARE_1_REGBITS : 32;\ |
| } |
| union { UNSG32 u32PCIE_SPARE_1; |
| struct w32PCIE_SPARE_1; |
| }; |
| /////////////////////////////////////////////////////////// |
| #define GET32PCIE_SPARE_2_REGBITS(r32) _BFGET_(r32,31, 0) |
| #define SET32PCIE_SPARE_2_REGBITS(r32,v) _BFSET_(r32,31, 0,v) |
| |
| #define w32PCIE_SPARE_2 {\ |
| UNSG32 uSPARE_2_REGBITS : 32;\ |
| } |
| union { UNSG32 u32PCIE_SPARE_2; |
| struct w32PCIE_SPARE_2; |
| }; |
| /////////////////////////////////////////////////////////// |
| #define GET32PCIE_SPARE_3_REGBITS(r32) _BFGET_(r32,31, 0) |
| #define SET32PCIE_SPARE_3_REGBITS(r32,v) _BFSET_(r32,31, 0,v) |
| |
| #define w32PCIE_SPARE_3 {\ |
| UNSG32 uSPARE_3_REGBITS : 32;\ |
| } |
| union { UNSG32 u32PCIE_SPARE_3; |
| struct w32PCIE_SPARE_3; |
| }; |
| /////////////////////////////////////////////////////////// |
| UNSG8 RSVDxA038 [24520]; |
| /////////////////////////////////////////////////////////// |
| } SIE_PCIE; |
| |
| typedef union T32PCIE_MSI_INTR_RX |
| { UNSG32 u32; |
| struct w32PCIE_MSI_INTR_RX; |
| } T32PCIE_MSI_INTR_RX; |
| typedef union T32PCIE_MSI_INTR_STATUS |
| { UNSG32 u32; |
| struct w32PCIE_MSI_INTR_STATUS; |
| } T32PCIE_MSI_INTR_STATUS; |
| typedef union T32PCIE_MSI_INTR_MASK |
| { UNSG32 u32; |
| struct w32PCIE_MSI_INTR_MASK; |
| } T32PCIE_MSI_INTR_MASK; |
| typedef union T32PCIE_MAC_CTRL |
| { UNSG32 u32; |
| struct w32PCIE_MAC_CTRL; |
| } T32PCIE_MAC_CTRL; |
| typedef union T32PCIE_MAC_STATUS |
| { UNSG32 u32; |
| struct w32PCIE_MAC_STATUS; |
| } T32PCIE_MAC_STATUS; |
| typedef union T32PCIE_MAC_CLK_CTRL |
| { UNSG32 u32; |
| struct w32PCIE_MAC_CLK_CTRL; |
| } T32PCIE_MAC_CLK_CTRL; |
| typedef union T32PCIE_PHY_CTRL |
| { UNSG32 u32; |
| struct w32PCIE_PHY_CTRL; |
| } T32PCIE_PHY_CTRL; |
| typedef union T32PCIE_HWDBG_CTRL |
| { UNSG32 u32; |
| struct w32PCIE_HWDBG_CTRL; |
| } T32PCIE_HWDBG_CTRL; |
| typedef union T32PCIE_HWDBG_DATA |
| { UNSG32 u32; |
| struct w32PCIE_HWDBG_DATA; |
| } T32PCIE_HWDBG_DATA; |
| typedef union T32PCIE_SPARE_0 |
| { UNSG32 u32; |
| struct w32PCIE_SPARE_0; |
| } T32PCIE_SPARE_0; |
| typedef union T32PCIE_SPARE_1 |
| { UNSG32 u32; |
| struct w32PCIE_SPARE_1; |
| } T32PCIE_SPARE_1; |
| typedef union T32PCIE_SPARE_2 |
| { UNSG32 u32; |
| struct w32PCIE_SPARE_2; |
| } T32PCIE_SPARE_2; |
| typedef union T32PCIE_SPARE_3 |
| { UNSG32 u32; |
| struct w32PCIE_SPARE_3; |
| } T32PCIE_SPARE_3; |
| /////////////////////////////////////////////////////////// |
| |
| typedef union TPCIE_MSI_INTR_RX |
| { UNSG32 u32[1]; |
| struct { |
| struct w32PCIE_MSI_INTR_RX; |
| }; |
| } TPCIE_MSI_INTR_RX; |
| typedef union TPCIE_MSI_INTR_STATUS |
| { UNSG32 u32[1]; |
| struct { |
| struct w32PCIE_MSI_INTR_STATUS; |
| }; |
| } TPCIE_MSI_INTR_STATUS; |
| typedef union TPCIE_MSI_INTR_MASK |
| { UNSG32 u32[1]; |
| struct { |
| struct w32PCIE_MSI_INTR_MASK; |
| }; |
| } TPCIE_MSI_INTR_MASK; |
| typedef union TPCIE_MAC_CTRL |
| { UNSG32 u32[1]; |
| struct { |
| struct w32PCIE_MAC_CTRL; |
| }; |
| } TPCIE_MAC_CTRL; |
| typedef union TPCIE_MAC_STATUS |
| { UNSG32 u32[1]; |
| struct { |
| struct w32PCIE_MAC_STATUS; |
| }; |
| } TPCIE_MAC_STATUS; |
| typedef union TPCIE_MAC_CLK_CTRL |
| { UNSG32 u32[1]; |
| struct { |
| struct w32PCIE_MAC_CLK_CTRL; |
| }; |
| } TPCIE_MAC_CLK_CTRL; |
| typedef union TPCIE_PHY_CTRL |
| { UNSG32 u32[1]; |
| struct { |
| struct w32PCIE_PHY_CTRL; |
| }; |
| } TPCIE_PHY_CTRL; |
| typedef union TPCIE_HWDBG_CTRL |
| { UNSG32 u32[1]; |
| struct { |
| struct w32PCIE_HWDBG_CTRL; |
| }; |
| } TPCIE_HWDBG_CTRL; |
| typedef union TPCIE_HWDBG_DATA |
| { UNSG32 u32[1]; |
| struct { |
| struct w32PCIE_HWDBG_DATA; |
| }; |
| } TPCIE_HWDBG_DATA; |
| typedef union TPCIE_SPARE_0 |
| { UNSG32 u32[1]; |
| struct { |
| struct w32PCIE_SPARE_0; |
| }; |
| } TPCIE_SPARE_0; |
| typedef union TPCIE_SPARE_1 |
| { UNSG32 u32[1]; |
| struct { |
| struct w32PCIE_SPARE_1; |
| }; |
| } TPCIE_SPARE_1; |
| typedef union TPCIE_SPARE_2 |
| { UNSG32 u32[1]; |
| struct { |
| struct w32PCIE_SPARE_2; |
| }; |
| } TPCIE_SPARE_2; |
| typedef union TPCIE_SPARE_3 |
| { UNSG32 u32[1]; |
| struct { |
| struct w32PCIE_SPARE_3; |
| }; |
| } TPCIE_SPARE_3; |
| |
| /////////////////////////////////////////////////////////// |
| SIGN32 PCIE_drvrd(SIE_PCIE *p, UNSG32 base, SIGN32 mem, SIGN32 tst); |
| SIGN32 PCIE_drvwr(SIE_PCIE *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd); |
| void PCIE_reset(SIE_PCIE *p); |
| SIGN32 PCIE_cmp (SIE_PCIE *p, SIE_PCIE *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst); |
| #define PCIE_check(p,pie,pfx,hLOG) PCIE_cmp(p,pie,pfx,(void*)(hLOG),0,0) |
| #define PCIE_print(p, pfx,hLOG) PCIE_cmp(p,0, pfx,(void*)(hLOG),0,0) |
| |
| #endif |
| ////// |
| /// ENDOFINTERFACE: PCIE |
| //////////////////////////////////////////////////////////// |
| |
| |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #pragma pack() |
| |
| #endif |
| ////// |
| /// ENDOFFILE: pcie.h |
| //////////////////////////////////////////////////////////// |
| |