⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i80312pci.h

📁 VXWORKS BSP开发包,初始化 驱动文件
💻 H
📖 第 1 页 / 共 2 页
字号:
    UINT32	ATU_Configuration;				/* 0x88 */    UINT32	ATU_reserved7;					/* 0x8C */    UINT32	ATU_PrimaryInterrupt_Status;			/* 0x90 */    UINT32	ATU_SecondaryInterrupt_Status;			/* 0x94 */    UINT16	ATU_SecondaryCommand;				/* 0x98 */    UINT16	ATU_SecondaryStatus;				/* 0x9A */    UINT32	ATU_Secondary_Outbound_DAC_Window_Value;	/* 0x9C */    UINT32	ATU_Secondary_Outbound_Upper_64_bit_DAC;	/* 0xA0 *//*  * NOTE: * The Configuration cycle registers are not included * in this structure to allow reading the structure  * within the debugger. */    } ATU_CFG_SPACE;typedef struct   {    UINT32	ATU_primaryQueueControl;				/* 0xb4 */    UINT32	ATU_secondaryQueueControl;				/* 0xb8 */    UINT32	ATU_primaryInterruptMask;				/* 0xbc */    UINT32	ATU_secondaryInterruptMask;				/* 0xc0 */   } ATU_CFG_SPACE_END;typedef struct    {    UINT32              cfgType:2;    UINT32              regNum:6;    UINT32              funcNum:3;    UINT32              devNum:5;    UINT32              busNum:8;    UINT32              regPos:2;    UINT32              regLen:3;    UINT32              reserved:2;    UINT32              cfgEnable:1;    } PCI_CFG;typedef struct    {    union        {        PCI_CFG     bit;        UINT32          whole;        } u;    } PCI_CFG_ADDR;#define CONFIG_WORD_PACK(type,reg,func,dev,bus,accessLen) \(type | (reg&0xfc)| ((func&0x7)<<8) | ((dev&0x1f)<<11) | ((bus&0xff)<<16) | \((reg&0x3)<<24) | ((accessLen&0x7)<<26) | 0x80000000)/* * type : configuration access type: TYPE 0  or TYPE 1  * reg:   configuration space register address  * func:  device's function number * dev:   device number * bus:   PCI bus number where the device is sitting * accessLen:  PCI_BYTE_ACCESS,PCI_UINT16_ACCESS and PCI_UINT32_ACCESS */#define CONFIG_REG_ADDR(cfgAddr,regAddr)  \	cfgAddr.u.bit.regNum = regAddr >> 2;  \	cfgAddr.u.bit.regPos = (regAddr&0x3)#define PCI_BYTE_ACCESS     1#define PCI_UINT16_ACCESS   2#define PCI_UINT32_ACCESS   4#define PCI_CFG_TYP0        0#define PCI_CFG_TYP1        1#define PRIMARY_BUS_INDEX		0#define SECONDARY_BUS_INDEX             (PRIMARY_BUS_INDEX + 1)#define I80312_OUTBOUND_PRI_MEM_WIN	0x80000000#define I80312_OUTBOUND_SEC_MEM_WIN	0x88000000#define I80312_OUTBOUND_MEM_MASK	0x03FFFFFF#define I80312_OUTBOUND_PRI_IO_WIN	0x90000000#define I80312_OUTBOUND_SEC_IO_WIN	0x90010000#define I80312_OUTBOUND_IO_MASK		0x0000FFFF#define I80312_BRIDGE_CFG_BASE		0x1000#define I80312_ATU_CFG_BASE		0x1200/* Bridge control registers */#define BRIDGE_VIDR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x00)#define BRIDGE_DIDR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x02)#define BRIDGE_PCR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x04)#define BRIDGE_PSR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x06)#define BRIDGE_RID		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x08)#define BRIDGE_CCR		U24P_CAST	(I80312_BRIDGE_CFG_BASE +0x09)#define BRIDGE_PIF		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x09)#define BRIDGE_SUBCLASS		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x0A)#define BRIDGE_BASECLASS	U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x0B)#define BRIDGE_CLSR		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x0C)#define BRIDGE_PLTR		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x0D)#define BRIDGE_HTR		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x0E)#define BRIDGE_PBNR		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x18)#define BRIDGE_SBNR		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x19)#define BRIDGE_SubBNR		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x1A)#define BRIDGE_SLTR		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x1B)#define BRIDGE_IOBR		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x1C)#define BRIDGE_IOLR		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x1D)#define BRIDGE_SSR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x1E)#define BRIDGE_MBR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x20)#define BRIDGE_MLR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x22)#define BRIDGE_PMBR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x24)#define BRIDGE_PMLR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x26)#define BRIDGE_Cap_Ptr		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x34)#define BRIDGE_BCR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x3E)#define BRIDGE_EBCR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x40)#define BRIDGE_SISR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x42)#define BRIDGE_PBISR		U32P_CAST	(I80312_BRIDGE_CFG_BASE +0x44)#define BRIDGE_SBISR		U32P_CAST	(I80312_BRIDGE_CFG_BASE +0x48)#define BRIDGE_SACR		U32P_CAST	(I80312_BRIDGE_CFG_BASE +0x4C)#define BRIDGE_PIRSR		U32P_CAST	(I80312_BRIDGE_CFG_BASE +0x50)#define BRIDGE_SIOBR		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x54)#define BRIDGE_SIOLR		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x55)#define BRIDGE_SCDR		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x56)#define BRIDGE_SMBR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x58)#define BRIDGE_SMLR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x5A)#define BRIDGE_SDER		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x5C)#define BRIDGE_QCR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x5E)#define BRIDGE_Cap_ID		U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x68)#define BRIDGE_Next_Item_Ptr	U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x69)#define BRIDGE_PMCR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x6A)#define BRIDGE_PMCSR		U16P_CAST	(I80312_BRIDGE_CFG_BASE +0x6C)#define BRIDGE_PMCSR_BSE	U8P_CAST	(I80312_BRIDGE_CFG_BASE +0x6E)#define ATU_VID			U16P_CAST	(I80312_ATU_CFG_BASE + 0x00)#define ATU_DID			U16P_CAST	(I80312_ATU_CFG_BASE + 0x02)#define ATU_PATUCMD		U16P_CAST	(I80312_ATU_CFG_BASE + 0x04)#define ATU_PATUSR		U16P_CAST	(I80312_ATU_CFG_BASE + 0x06)#define ATU_RID			U8P_CAST	(I80312_ATU_CFG_BASE + 0x08)#define ATU_CCR			U24P_CAST	(I80312_ATU_CFG_BASE + 0x09)#define ATU_PIF			U8P_CAST	(I80312_ATU_CFG_BASE + 0x09)#define ATU_SUBCLASS		U8P_CAST	(I80312_ATU_CFG_BASE + 0x0A)#define ATU_BASECLASS		U8P_CAST	(I80312_ATU_CFG_BASE + 0x0B)#define ATU_CLSR		U8P_CAST	(I80312_ATU_CFG_BASE + 0x0C)#define ATU_LT			U8P_CAST	(I80312_ATU_CFG_BASE + 0x0D)#define ATU_HTR			U8P_CAST	(I80312_ATU_CFG_BASE + 0x0E)#define ATU_PIABAR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x10)#define ATU_ASVIR		U16P_CAST	(I80312_ATU_CFG_BASE + 0x2C)#define ATU_ASIR		U16P_CAST	(I80312_ATU_CFG_BASE + 0x2E)#define ATU_ERBAR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x30)#define ATU_Cap_Ptr		U8P_CAST	(I80312_ATU_CFG_BASE + 0x34)#define ATU_ILR			U8P_CAST	(I80312_ATU_CFG_BASE + 0x3C)#define ATU_IPR			U8P_CAST	(I80312_ATU_CFG_BASE + 0x3D)#define ATU_MGNT		U8P_CAST	(I80312_ATU_CFG_BASE + 0x3E)#define ATU_MLAT		U8P_CAST	(I80312_ATU_CFG_BASE + 0x3F)#define ATU_PIALR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x40)#define ATU_PIATVR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x44)#define ATU_SIABAR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x48)#define ATU_SIALR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x4C)#define ATU_SIATVR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x50)#define ATU_POMWVR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x54)#define ATU_POIOWVR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x5C)#define ATU_PODWVR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x60)#define ATU_POUDR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x64)#define ATU_SOMWVR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x68)#define ATU_SOIOWVR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x6C)#define ATU_ERLR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x74)#define ATU_ERTVR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x78)#define ATU_Cap_ID		U8P_CAST	(I80312_ATU_CFG_BASE + 0x80)#define ATU_Next_Item_Ptr	U8P_CAST	(I80312_ATU_CFG_BASE + 0x81)#define ATU_APMCR		U16P_CAST	(I80312_ATU_CFG_BASE + 0x82)#define ATU_APMCSR		U16P_CAST	(I80312_ATU_CFG_BASE + 0x84)#define ATU_ATUCR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x88)#define ATU_PATUISR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x90)#define ATU_SATUISR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x94)#define ATU_SATUCMD		U16P_CAST	(I80312_ATU_CFG_BASE + 0x98)#define ATU_SATUSR		U16P_CAST	(I80312_ATU_CFG_BASE + 0x9A)#define ATU_SODWVR		U32P_CAST	(I80312_ATU_CFG_BASE + 0x9C)#define ATU_SOUDR		U32P_CAST	(I80312_ATU_CFG_BASE + 0xA0)#define ATU_POCCAR		U32P_CAST	(I80312_ATU_CFG_BASE + 0xA4)#define ATU_SOCCAR		U32P_CAST	(I80312_ATU_CFG_BASE + 0xA8)#define ATU_POCCDR		U32P_CAST	(I80312_ATU_CFG_BASE + 0xAC)#define ATU_SOCCDR		U32P_CAST	(I80312_ATU_CFG_BASE + 0xB0)#define ATU_PAQCR		U32P_CAST	(I80312_ATU_CFG_BASE + 0xB4)#define ATU_SAQCR		U32P_CAST	(I80312_ATU_CFG_BASE + 0xB8)#define ATU_PATUIMR		U32P_CAST	(I80312_ATU_CFG_BASE + 0xBC)#define ATU_SATUIMR		U32P_CAST	(I80312_ATU_CFG_BASE + 0xC0)/* Primary ATU command register */#define PATUCMD_MEM_ENABLE              0x2/* private slot info */#define I80312_NUM_PRIVATE_SLOTS		15#define I80312_NUM_DEFAULT_PRIVATE		5#define I80312_DEFAULT_PRIVATE_MASK		0x1F#define I80312_PRIVATE_SLOT_MASK                0x3FF#define I80312_NUM_PRIVATE_SELECT               10/* ATU configuration register (0x1288) settings */#define ATUCR_PRI_OUTBOUND_ENABLE		0x0002#define ATUCR_SEC_OUTBOUND_ENABLE		0x0004#define ATUCR_BIST_ENABLE			0x0008#define ATUCR_PRI_PCI_ERROR_INT_ENABLE		0x0010#define ATUCR_SEC_PCI_ERROR_INT_ENABLE		0x0020#define ATUCR_EXPANSION_ROM_WIDTH		0x0040#define ATUCR_SEC_DIRECT_ADDR_SELECT		0x0080#define ATUCR_DIRECT_ADDR_ENABLE		0x0100#define ATUCR_SEC_OUTBOUND_FORWARD_ENABLE	0x0200#define ATUCR_SEC_PCI_BOOT_MODE			0x0800	#define ATUCR_BRIDGE_FUNC_NUM                   (1<<21)/* ATU IMR registers */#define PATUIMR_MASK               0xFC#define SATUIMR_MASK               0xFC#define ATUIMR_TARGET_ABORT_ENABLE 1/* Bridge Control Register settings */#define PARITY_ENABLE		0x0001#define SERR_ENABLE		0x0002#define ISA_ENABLE		0x0004#define VGA_ENABLE		0x0008#define MASTER_ABORT_MODE	0x0020#define SECONDARY_RESET		0x0040#define FAST_BACK_TO_BACK	0x0080/* Extended Bridge Control Register settings */#define POSTING_DISABLE			0x0001#define CORE_RESET			0x0002#define CFG_RETRY			0x0004#define UPSTREAM_PREFETCH_ENABLE	0x0008#define SYNC_MODE			0x0010#define LOCAL_RESET			0x0020#define SECONDARY_DAC_ENABLE		0x0040/* Secondary Bridge Interrupt Status Register */#define I80312_BRIDGE_TARGET_ABORT          0x02#define I80312_BRIDGE_MASTER_TARGET_ABORT	0x04#define I80312_BRIDGE_MASTER_ABORT          0x08/* Secondary Decode Enable Register (0x105C) settings */#define SDER_SECONDARY_BUS_RESET_INT_MASK               0x0008#define SDER_PRIMARY_DET_PARITY_INT_MASK                0x0010#define SDER_SECONDARY_DET_PARITY_INT_MASK              0x0020/* valid Secondary ATU Command Register settings */#define SCMD_MEM_ENABLE			0x00000002#define SCMD_BUS_MASTER_ENABLE		0x00000004#define SCMD_MWI_ENABLE			0x00000010#define SCMD_PARITY_CHECK_ENABLE	0x00000040#define SCMD_SERR_ENABLE		0x00000100#define SCMD_FAST_B_TO_B_ENABLE		0x00000200/* Zero maintains processor default arbitration. */#define I80312_SECONDARY_ARBITRATION_MASK           0x0#define I80312_PRIVATE_EXPANSION_DEFAULT            0x100000#define I80312_NUM_PRIVATE_SELECT                   10/******************** I80312 specific PCI defines **********************/#define I80312_PRIVATE_INT_SIZE      10  /* interrupt pin routing table size *//* identify which PCI interface on the RP: Primary or Secondary */#define I80312_PCI_PRIMARY_MASTER          0#define I80312_PCI_SECONDARY_MASTER        1#define PCI_INTA    0#define PCI_INTB    1#define PCI_INTC    2#define PCI_INTD    3#define I80312_PRIVATE_DEVICE_SELECT                0x0F#define I80312_PCI_DEVICE_MAX_NUM  20#define NO_DEVICE              0#define FUNC0_DEVICE           1#define MULTI_FUNC_DEVICE      8/* address translation defines */#define I80312_INBOUND             0#define I80312_OUTBOUND            1#define I80312_MEM_WINDOW          0#define I80312_DAC_WINDOW          1#define I80312_DIRECT_WINDOW       2#define I80312_IO_WINDOW           3/* Outbound window defines */#define I80312_POUTB_SIZE       0x04000000#define I80312_POUTB_BASE       0x80000000#define I80312_SOUTB_SIZE       0x04000000#define I80312_SOUTB_BASE       0x88000000#define I80312_DOUTB_BASE       0x2000#define I80312_DOUTB_TOP        0x7fffffff#define I80312_POUTB_IO_BASE    0x90000000#define I80312_POUTB_IO_SIZE    0x10000#define I80312_SOUTB_IO_BASE    0x90010000#define I80312_SOUTB_IO_SIZE    0x10000#define I80312_POUTB_DAC_SIZE   0x04000000#define I80312_POUTB_DAC_BASE   0x84000000#define I80312_SOUTB_DAC_SIZE   0x04000000#define I80312_SOUTB_DAC_BASE   0x8C000000#ifndef _ASMLANGUAGE/* Node for list of base address register's and requirements */typedef struct    {    DL_NODE             node;    UINT32              memReq;    PCI_CFG_ADDR        cfgAddr;    } PCI_BAR_NODE;typedef struct {    /* dynamic address translation */    volatile UINT32 * tran;	     UINT32   range;	     UINT32   base;             UINT32   current;    /* one on one direct address translation */             int      dTran;    /* direct address translation, TRUE or FALSE */	     UINT32   dBase;    /* direct address translation base */	     UINT32   dTop;     /* direct address translation top address */             UINT32   dCurrent;    /* PCI I/O space address translation */    volatile UINT32 * ioTran;	     UINT32   ioRange;  	     UINT32   ioBase;             UINT32   ioCurrent;    /* PCI DAC memory space address translation */    volatile UINT32 * dacTran;	     UINT32   dacRange;	     UINT32   dacBase;             UINT32   dacCurrent;    } OUTBOUND_ADDRESS_TRAN;typedef struct {    volatile UINT32 * tran;    volatile UINT32 * limit;    volatile UINT32 * base;    } INBOUND_ADDRESS_TRAN;typedef struct {    volatile UINT32 * addrReg;   /* configuration cycle address register */             UINT32   dataReg;   /* configuration cycle data register    */    } I80312_PCI_CFG_REGS;typedef struct {    UINT32 top;                 /* top address of the window            */    UINT32 base;                /* base address of the window           */    } I80312_WINDOW_TOP_BASE;extern UINT32 i80312_PriBusNumber;extern UINT32 i80312_SecBusNumber;extern UINT32 i80312_SubBusNumber;extern UINT32 i80312_BusNumbers[];#if defined(__STDC__) || defined(__cplusplus)extern void i80312PrivateDevInit(void);extern void pciConfigQuery(int , PCI_CFG_ADDR , UINT32 *);extern void sysPciInit (void);extern int i80312PciDeviceProbe (int busMaster, PCI_CFG_ADDR cfgAddr);extern void i80312PciSecIntSet (UINT8 slot,UINT8 xintA,UINT8 xintB,UINT8 xintC,			    UINT8 xintD);extern STATUS i80312PciFindDevice (int vendorId, int deviceId,		               int index, UINT32 *  pBusNo,                               UINT32 *  pDeviceNo, UINT32 *  pFuncNo);extern int i80312PciCfgRd (int,PCI_CFG_ADDR,UINT32 * );extern int i80312PciCfgWr (int,PCI_CFG_ADDR, UINT32);extern STATUS pciDeviceFind    (int,int, int, int *, int *, int *);extern STATUS pciConfigInByte  (int, int, int, int, char * );extern STATUS pciConfigInWord  (int, int, int, int, short * );extern STATUS pciConfigInLong  (int, int, int, int, int *);extern STATUS pciConfigOutByte  (int, int, int, int, char);extern STATUS pciConfigOutWord  (int, int, int, int, short);extern STATUS pciConfigOutLong  (int, int, int, int, int);#else   /* __STDC__ */extern void i80312PciAutoConfig();extern void pciConfigQuery();extern void sysPciInit ();extern void sysPciInit2 ();extern int i80312PciDeviceProbe ();extern void i80312PciSecIntSet ();extern STATUS i80312PciFindDevice ();extern int i80312PciCfgRd ();extern int i80312PciCfgWr ();extern STATUS pciDeviceFind    ();extern STATUS pciConfigInByte  ();extern STATUS pciConfigInWord  ();extern STATUS pciConfigInLong  ();extern STATUS pciConfigOutByte  ();extern STATUS pciConfigOutWord  ();extern STATUS pciConfigOutLong  ();#endif  /* __STDC__ */#endif /* _ASMLANGUAGE */#ifdef __cplusplus}#endif#endif  /* __INCi80312Pcih */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -