pciconfig.h

来自「大名鼎鼎的mpc8260的bsp源代码」· C头文件 代码 · 共 380 行 · 第 1/2 页

H
380
字号
#define QSPAN_CLR_QEL_IS	0x40000000 /* QBus error log interrupt status */
#define QSPAN_CLR_DPD_IS	0x20000000 /* data parity interrupt status */
#define QSPAN_CLR_IPE_IS	0x08000000 /* IDMA PCI error interrupt status */
#define QSPAN_CLR_IQE_IS	0x04000000 /* IDMA QBus error int. status */
#define QSPAN_CLR_IRST_IS	0x02000000 /* IDMA reset interrupt status */
#define QSPAN_CLR_DONE_IS	0x01000000 /* IDMA done interrupt status */
#define QSPAN_CLR_SI1_IS	0x00000002 /* Software interrupt 1 status */
#define QSPAN_CLR_SI0_IS	0x00000001 /* Software interrupt 0 status */
#define QSPAN_CLR_IRST		0x00400000 /* clear the IDMA reset status */
#define QSPAN_CLR_DONE		0x00200000 /* clear the IDMA Done status */
#define QSPAN_CLR_IPE		0x00100000 /* clear the IDMA PCI error status */
#define QSPAN_CLR_IQE		0x00080000 /* clear the IDMA Qbus err. status */
#define QSPAN_SET_IMODE		0x00000008 /* set IDMA transfer for MBX */

/* size in bytes of QSPAN register space */

#define QSPAN_REG_SIZE	0x1000	/* 4KB register space */


#define PCI_CS_MS				0x00000002		/*MEMORY SPACE*/
#define PCI_CS_IOS				0x00000001		/*IO SPACE */


#define QBSI0_CTL_PAS			0X01000000
#define	QBSI0_CTL_PWEN			0X80000000
#define	QBSI0_CTL_PREN			0X08000000
#define	QBSI0_AT_EN				0X00000001
#define	QBSI0_AT_BS				0X00000080		/*2M  block size*/
#define	QBSI0_AT_TA				0X80000000

#define QSPAN_QBSI0_PWEN		0x80000000

#define QSPAN_IDMA_WRITE 	0x01
#define QSPAN_IDMA_READ  	0x02

#define QSPAN_BASE_ADRS 	CPU_PCI_BRIDGE_BA
#define CT69K_BASE_ADRS		CPU_PCI_CT69000_BA
#define PCI_MSTR_IO_LOCAL 	0

#define QSPAN_PCI_CHNL0 	0
#define QSPAN_PCI_CHNL1		1

#define PCI_CS_MS				0x00000002		/*MEMORY SPACE*/
#define PCI_CS_IOS				0x00000001		/*IO SPACE */

#define CON_ADD_BUS		0x00FF0000	/* Bus Number */
#define CON_ADD_DEV		0x00007800	/* Device Number */
#define CON_ADD_FUNC	0x00000700	/* Function Number */
#define CON_ADD_REG		0x000000FC	/* Register Number */
#define CON_ADD_TYPE	0x00000001	/* Configuration Cycle Type */
#define CON_ADD_RESRV	0xFF008002	/* Reserved Bits */

/*
 * QBus Slave Image X Address Translation Register
 */
#define QBSI_AT_TA			0xFFFF0000	/* Translation Address */
#define QBSI_AT_BS			0x000000F0	/* Block Size */
#define QBSI_AT_EN			0x00000001	/* Enable Address Translation */
#define QBSI_AT_RESRVD	0x0000FF0E	/* Reserved Bits */


#define PCI_DEVICE_NUM	1

typedef struct qspan {
	VUINT32  pci_id;		/* PCI Configuration Space ID Reg */
	VUINT32  pci_cs;		/* PCI Configuration CS Reg */
	VUINT32  pci_class;		/* PCI Configuration Class Reg */
	VUINT32  pci_misc0;		/* PCI Configuration Misc 0 Reg*/
	VUINT32  pci_bsm;		/* PCI Configuration BA for Regs */
  	UINT8 RESERVED1[0x4];
	VUINT32  pci_bst0;		/* PCI Configuration BA for TI0 */
	VUINT32  pci_bst1;		/* PCI Configuration BA for TI1 */
	UINT8 RESERVED2[0xC];
	VUINT32  pci_sid;		/* PCI Configuration Subsystem ID */
	VUINT32  pci_bsrom;		/* PCI Configuration ExpROM BA */
  	VUINT32  pci_cp;    	/* 2.0+ PCI Capabilities Pointer Register */
  	UINT8 RESERVED3[0x4];
	VUINT32  pci_misc1;		/* PCI Configuration Misc 1 Reg */
  	UINT8 RESERVED4[0x9C];
  	VUINT32  pci_pmc;   	/* 2.0+ PCI Power Management Capabilities Reg */
  	VUINT32  pci_pmcs;  	/* 2.0+ PCI Power Management CS Reg*/
  	VUINT32  cpci_hs;   	/* 2.0+ Compact PCI Hot Swap Register */
	VUINT32  pci_vpd;   	/* 2.0+ PCI Vital Product Data (VPD) Register */
  	VUINT32  vpd_data;  	/* 2.0+ PCI VPD Data Register */
  	UINT8 RESERVED5[0x10];
	VUINT32  pbti0_ctl;		/* PCI Bus Target Image 0 Control Reg */
	VUINT32  pbti0_add;		/* PCI Bus Target Image 0 Address Reg */
  	UINT8 RESERVED6[0x8];
	VUINT32  pbti1_ctl;		/* PCI Bus Target Image 1 Control Reg */
	VUINT32  pbti1_add;		/* PCI Bus Target Image 1 Address Reg */
  	UINT8 RESERVED7[0x24];
	VUINT32  pbrom_ctl;		/* PCI Bus Exp Rom Control Reg  */
	VUINT32  pb_errcs;		/* PCI Bus Error CSR */
	VUINT32  pb_aerr;		/* PCI Bus Address Error Log Reg */
	VUINT32  pb_derr;		/* PCI Bus Data Error Log Reg */
  	UINT8 RESERVED8[0xB4];
  	VUINT32  i2o_cs;    	/* 2.0+ I2O Control and Status Register */
  	VUINT32  iif_tp;    	/* 2.0+ I2O Inbound Free_List Top Pointer Reg */
  	VUINT32  iif_bp;    	/* 2.0+ I2O Inbound Free_List Bottom Pointer Reg */
  	VUINT32  iip_tp;    	/* 2.0+ I2O Inbound Post_List Top Pointer Reg */
  	VUINT32  iip_bp;    	/* 2.0+ I2O Inbound Post_List Bottom Pointer Reg */
  	VUINT32  iof_tp;    	/* 2.0+ I2O Outbound Free_List Top Pointer Reg */
  	VUINT32  iof_bp;    	/* 2.0+ I2O Outbound Free_List Bottom Pointer Reg */
  	VUINT32  iop_tp;    	/* 2.0+ I2O Outbound Post_List Top Pointer Reg */
  	VUINT32  iop_bp;    	/* 2.0+ I2O Outbound Post_List Bottom Pointer Reg */
  	UINT8 RESERVED9[0x1DC];
	VUINT32  idma_cs;		/* IDMA Control and Status Reg */
	VUINT32  idma_add;		/* IDMA Address Reg */
	VUINT32  idma_cnt;		/* IDMA Transfer Count Reg */
  	VUINT32  dma_qadd;  	/* 2.0+ DMA QBus Address Register */
  	VUINT32  dma_cs;    	/* 2.0+ DMA Control and Status Register */
  	VUINT32  dma_cpp;   	/* 2.0+ DMA Command Packet Pointer Register */
  	UINT8 RESERVED10[0xE8];
	VUINT32  con_add;		/* PCI Configuration Cycle Addr Reg */
	VUINT32  con_data;		/* PCI Configuration Cycle Data Reg */
	VUINT32  iack_gen;		/* IACK Cycle Generation Reg */
  	UINT8 RESERVED11[0xF4];
	VUINT32  int_stat;		/* Interrupt Status Reg */
	VUINT32  int_ctl;		/* Interrupt Control Reg */
	VUINT32  int_dir;		/* Interrupt Direction Control Reg */
	VUINT32  int_ctl2;		/* 1.2+ Interrupt Control 2 Reg */
  	UINT8 RESERVED12[0xF0];
  	VUINT32  mbox0;     	/* 2.0+ Mailbox Register 0 */
  	VUINT32  mbox1;     	/* 2.0+ Mailbox Register 1 */
  	VUINT32  mbox2;     	/* 2.0+ Mailbox Register 2 */
  	VUINT32  mbox3;     	/* 2.0+ Mailbox Register 3 */
  	UINT8 RESERVED13[0xF0];
	VUINT32  misc_ctl;		/* Misc Control and Status Reg */
	VUINT32  eeprom_cs;		/* EEPROM Control and Status Reg */
	VUINT32  misc_ctl2;		/* 2.0+ Misc Control 2 Register */
  	UINT8 RESERVED14[0x6F4];
	VUINT32  qbsi0_ctl;		/* QBus Slave Image 0 Control Reg */
	VUINT32  qbsi0_at;		/* QBus SI0 Address Translation Reg */
  	UINT8 RESERVED15[0x8];
	VUINT32  qbsi1_ctl;		/* QBus Slave Image 1 Control Reg */
	VUINT32  qbsi1_at;		/* QBus SI1 Address Translation Reg */
  	UINT8 RESERVED16[0x68];
	VUINT32  qb_errcs;		/* QBus Error Log CSR  */
	VUINT32  qb_aerr;		/* QBus Address Error Log Reg */
	VUINT32  qb_derr;		/* QBus Data Error Log Reg */
  	UINT8 RESERVED17[0x74];
} QSPAN, *PQSPAN;



void SysQspanHwInit(PQSPAN qspanAdr);
void qspanHostReset
    (
    PQSPAN qspanAdr        	/* base address of the QSpan device regs. */
    );
void qspanHostEnable
    (
    PQSPAN      qspanAdr  	/* base address of the QSpan device regs. */
    );
void qspanSpaceAccesses
	(
	PQSPAN 	qspanAdr,		/* base address of the QSpan device regs. */
	UINT8 	status			/* assign the memory or IO space*/
	);
void qspanBurstConfigure
	(
	PQSPAN qspanAdr,		/* base address of the QSpan device regs. */
	UINT8 	image,			/* assign the image0 or image1*/
	UINT8	status			/* assign enable or disable*/
	);
void sysPCISpaceAssign();
UINT32 qspanPciConfigurationRead(
	PQSPAN qspan,
	UINT32 cycle_type,
	UINT32 bus_num,
	UINT32 dev_num,
	UINT32 func_num,
	UINT32 reg_num
	);
void qspanIOControl
	(
	PQSPAN qspanAdr,
	UINT32 status
	);




#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

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