📄 pci.h
字号:
/* PCI.h - PCI functions header file *//* Copyright - Galileo technology. */#ifndef __INCpcih#define __INCpcih/* includes */#include "core.h"#include "memory.h"/* According to PCI REV 2.1 MAX agents allowed on the bus are -21- */#define PCI_MAX_DEVICES 22/* Macros */#define SELF 32/* Defines for the access regions. */#define PREFETCH_ENABLE BIT12#define PREFETCH_DISABLE NO_BIT#define DELAYED_READ_ENABLE BIT13/* #define CACHING_ENABLE BIT14 *//* aggressive prefetch: PCI slave prefetch two burst in advance*/#define AGGRESSIVE_PREFETCH BIT16/* read line aggresive prefetch: PCI slave prefetch two burst in advance*/#define READ_LINE_AGGRESSIVE_PREFETCH BIT17/* read multiple aggresive prefetch: PCI slave prefetch two burst in advance*/#define READ_MULTI_AGGRESSIVE_PREFETCH BIT18#define MAX_BURST_4 NO_BIT#define MAX_BURST_8 BIT20 /* Bits[21:20] = 01 */#define MAX_BURST_16 BIT21 /* Bits[21:20] = 10 */#define PCI_BYTE_SWAP NO_BIT /* Bits[25:24] = 00 */#define PCI_NO_SWAP BIT24 /* Bits[25:24] = 01 */#define PCI_BYTE_AND_WORD_SWAP BIT25 /* Bits[25:24] = 10 */#define PCI_WORD_SWAP (BIT24 | BIT25) /* Bits[25:24] = 11 */#define PCI_ACCESS_PROTECT BIT28#define PCI_WRITE_PROTECT BIT29/* typedefs */typedef enum __pciAccessRegions{REGION0,REGION1,REGION2,REGION3,REGION4,REGION5, REGION6,REGION7} PCI_ACCESS_REGIONS;typedef enum __pciAgentPrio{LOW_AGENT_PRIO,HI_AGENT_PRIO} PCI_AGENT_PRIO;typedef enum __pciAgentPark{PARK_ON_AGENT,DONT_PARK_ON_AGENT} PCI_AGENT_PARK;typedef enum __pciSnoopType{PCI_NO_SNOOP,PCI_SNOOP_WT,PCI_SNOOP_WB} PCI_SNOOP_TYPE;typedef enum __pciSnoopRegion{PCI_SNOOP_REGION0,PCI_SNOOP_REGION1, PCI_SNOOP_REGION2,PCI_SNOOP_REGION3} PCI_SNOOP_REGION;typedef enum __memPciHost{PCI_HOST0,PCI_HOST1} PCI_HOST;typedef enum __memPciRegion{PCI_REGION0,PCI_REGION1, PCI_REGION2,PCI_REGION3, PCI_IO} PCI_REGION;/* read/write configuration registers on local PCI bus. */void pciWriteConfigReg(PCI_HOST host, unsigned int regOffset, unsigned int pciDevNum, unsigned int data);unsigned int pciReadConfigReg (PCI_HOST host, unsigned int regOffset, unsigned int pciDevNum);/* read/write configuration registers on another PCI bus. */void pciOverBridgeWriteConfigReg(PCI_HOST host, unsigned int regOffset, unsigned int pciDevNum, unsigned int busNum,unsigned int data);unsigned int pciOverBridgeReadConfigReg(PCI_HOST host, unsigned int regOffset, unsigned int pciDevNum, unsigned int busNum);/* Master`s memory space */bool pciMapSpace(PCI_HOST host, PCI_REGION region, unsigned int remapBase, unsigned int deviceBase, unsigned int deviceLength);unsigned int pciGetSpaceBase(PCI_HOST host, PCI_REGION region);unsigned int pciGetSpaceSize(PCI_HOST host, PCI_REGION region);/* Slave`s memory space */void pciMapMemoryBank(PCI_HOST host, MEMORY_BANK bank, unsigned int pci0Dram0Base, unsigned int pci0Dram0Size);/* PCI region options */bool pciSetRegionFeatures(PCI_HOST host, PCI_ACCESS_REGIONS region, unsigned int features, unsigned int baseAddress, unsigned int regionLength);void pciDisableAccessRegion(PCI_HOST host, PCI_ACCESS_REGIONS region);/* PCI arbiter */bool pciArbiterEnable(PCI_HOST host);bool pciArbiterDisable(PCI_HOST host);bool pciParkingDisable(PCI_HOST host, PCI_AGENT_PARK internalAgent, PCI_AGENT_PARK externalAgent0, PCI_AGENT_PARK externalAgent1, PCI_AGENT_PARK externalAgent2, PCI_AGENT_PARK externalAgent3, PCI_AGENT_PARK externalAgent4, PCI_AGENT_PARK externalAgent5);bool pciSetRegionSnoopMode(PCI_HOST host, PCI_SNOOP_REGION region, PCI_SNOOP_TYPE snoopType, unsigned int baseAddress, unsigned int regionLength);#endif /* __INCpcih */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -