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

📄 vmeuniverse.h

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 H
📖 第 1 页 / 共 3 页
字号:
/* $Id: vmeUniverse.h,v 1.1.4.2 2003/04/10 16:40:25 joel Exp $ */#ifndef VME_UNIVERSE_UTIL_H#define VME_UNIVERSE_UTIL_H/* Routines to configure and use the Tundra Universe VME bridge * Author: Till Straumann <strauman@slac.stanford.edu> *         Nov 2000, July 2001 *//* Register definitions *//* NOTE: all registers contents in PCI space are LITTLE ENDIAN */#ifdef __vxworks#include <vme.h>#else/* vxworks compatible addressing modes */#define	VME_AM_STD_SUP_ASCENDING	0x3f#define	VME_AM_STD_SUP_PGM	0x3e#define	VME_AM_STD_USR_ASCENDING	0x3b#define	VME_AM_STD_USR_PGM	0x3a#define	VME_AM_STD_SUP_DATA	0x3d#define	VME_AM_STD_USR_DATA	0x39#define	VME_AM_EXT_SUP_ASCENDING	0x0f#define	VME_AM_EXT_SUP_PGM	0x0e#define	VME_AM_EXT_USR_ASCENDING	0x0b#define	VME_AM_EXT_USR_PGM	0x0a#define	VME_AM_EXT_SUP_DATA	0x0d#define	VME_AM_EXT_USR_DATA	0x09#define	VME_AM_SUP_SHORT_IO	0x2d#define	VME_AM_USR_SHORT_IO	0x29#define VME_AM_IS_SHORT(a)	(((a) & 0xf0) == 0x20)#define VME_AM_IS_STD(a)	(((a) & 0xf0) == 0x30)#define VME_AM_IS_EXT(a)	(((a) & 0xf0) == 0x00)#endiftypedef unsigned long LERegister; /* emphasize contents are little endian *//* NOTE: DMA packet descriptors MUST be 32 byte aligned */typedef struct VmeUniverseDMAPacketRec_ {	LERegister	dctl	__attribute__((aligned(32)));	LERegister	dtbc	__attribute__((packed));	LERegister	dla		__attribute__((packed));	LERegister	dummy1	__attribute__((packed));	LERegister	dva		__attribute__((packed));	LERegister	dummy2	__attribute__((packed));	LERegister	dcpp	__attribute__((packed));	LERegister	dummy3	__attribute__((packed));} VmeUniverseDMAPacketRec, *VmeUniverseDMAPacket;/* PCI CSR register */#define		UNIV_REGOFF_PCI_CSR		0x4# define	UNIV_PCI_CSR_D_PE		(1<<31)	/* detected parity error; write 1 to clear */# define	UNIV_PCI_CSR_S_SERR		(1<<30)	/* SERR (signalled error) asserted; write 1 to clear */# define	UNIV_PCI_CSR_R_MA		(1<<29)	/* received master abort; write 1 to clear */# define	UNIV_PCI_CSR_R_TA		(1<<28)	/* received target abort; write 1 to clear */# define	UNIV_PCI_CSR_S_TA		(1<<27)	/* signalled target abort; write 1 to clear */# define	UNIV_PCI_CSR_DEVSEL_MASK (3<<25)	/* device select timing (RO) */# define	UNIV_PCI_CSR_DP_D		(1<<24)	/* data parity error detected; write 1 to clear */# define	UNIV_PCI_CSR_TFBBC		(1<<23)	/* target fast back to back capable (RO) */# define	UNIV_PCI_CSR_MFBBC		(1<<9)	/* master fast back to back capable (RO) */# define	UNIV_PCI_CSR_SERR_EN	(1<<8)	/* enable SERR driver */# define	UNIV_PCI_CSR_WAIT		(1<<7)	/* wait cycle control (RO) */# define	UNIV_PCI_CSR_PERESP		(1<<6)	/* parity error response enable */# define	UNIV_PCI_CSR_VGAPS		(1<<5)	/* VGA palette snoop (RO) */# define	UNIV_PCI_CSR_MWI_EN		(1<<4)	/* Memory write and invalidate enable (RO) */# define	UNIV_PCI_CSR_SC			(1<<3)	/* special cycles (RO) */# define	UNIV_PCI_CSR_BM			(1<<2)	/* master enable (MUST SET TO ENABLE VME SLAVES) */# define	UNIV_PCI_CSR_MS			(1<<1)	/* target memory enable */# define	UNIV_PCI_CSR_IOS		(1<<0)	/* target IO enable *//* Special cycle (ADOH, RMW) control register */#define		UNIV_REGOFF_SCYC_CTL	0x170	/* write 0 to disable */# define	UNIV_SCYC_CTL_LAS_IO	(1<<2)	/* PCI address space (1: IO, 0: mem) */# define	UNIV_SCYC_CTL_SCYC_RMW	(1<<0)	/* do a RMW cycle when reading  PCI address */# define	UNIV_SCYC_CTL_SCYC_ADOH	(2<<0)	/* do a ADOH cycle when reading/writing  PCI address *//* Special cycle address register */#define		UNIV_REGOFF_SCYC_ADDR	0x174	/* PCI address (must be long word aligned) *//* Special cycle Swap/Compare/Enable */#define		UNIV_REGOFF_SCYC_EN	0x178	/* mask determining the bits involved in the compare and swap operations for VME RMW cycles *//* Special cycle compare data register */#define		UNIV_REGOFF_SCYC_CMP	0x17c	/* data to compare with word returned from VME RMW read *//* Special cycle swap data register */#define		UNIV_REGOFF_SCYC_SWP	0x180	/* If enabled bits of CMP match, corresponding SWP bits are written back to VME (under control of EN) *//* PCI miscellaneous register */#define		UNIV_REGOFF_LMISC	0x184# define	UNIV_LMISC_CRT_MASK	(7<<28)	/* Univ. I only, not used on II */# define	UNIV_LMISC_CRT_INF	(0<<28)	/* Coupled Request Timeout */# define	UNIV_LMISC_CRT_128_US	(1<<28)	/* Coupled Request Timeout */# define	UNIV_LMISC_CRT_256_US	(2<<28)	/* Coupled Request Timeout */# define	UNIV_LMISC_CRT_512_US	(3<<28)	/* Coupled Request Timeout */# define	UNIV_LMISC_CRT_1024_US	(4<<28)	/* Coupled Request Timeout */# define	UNIV_LMISC_CRT_2048_US	(5<<28)	/* Coupled Request Timeout */# define	UNIV_LMISC_CRT_4096_US	(6<<28)	/* Coupled Request Timeout */# define	UNIV_LMISC_CWT_MASK	(7<<24)	/* coupled window timer */# define	UNIV_LMISC_CWT_DISABLE	0	/* disabled (release VME after 1 coupled xaction) */# define	UNIV_LMISC_CWT_16	(1<<24)	/* 16 PCI clock cycles */# define	UNIV_LMISC_CWT_32	(2<<24)	/* 32 PCI clock cycles */# define	UNIV_LMISC_CWT_64	(3<<24)	/* 64 PCI clock cycles */# define	UNIV_LMISC_CWT_128	(4<<24)	/* 128 PCI clock cycles */# define	UNIV_LMISC_CWT_256	(5<<24)	/* 256 PCI clock cycles */# define	UNIV_LMISC_CWT_512	(6<<24)	/* 512 PCI clock cycles *//* PCI Command Error Log Register */#define		UNIV_REGOFF_L_CMDERR	0x18c# define	UNIV_L_CMDERR_CMDERR(reg) (((reg)>>28)&0xf) /* extract PCI cmd error log */# define	UNIV_L_CMDERR_M_ERR	(1<<27)	/* multiple errors have occurred */# define	UNIV_L_CMDERR_L_STAT	(1<<23)	/* PCI error log status valid (write 1 to clear and enable logging) *//* PCI Address Error Log */#define		UNIV_REGOFF_LAERR	0x190	/* PCI fault address (if L_CMDERR_L_STAT valid) *//* DMA Xfer Control Register */#define		UNIV_REGOFF_DCTL	0x200# define	UNIV_DCTL_L2V		(1<<31)	/* PCI->VME if set */# define	UNIV_DCTL_VDW_MSK	(3<<22)	/* VME max. width mask 0x00c00000 */# define	UNIV_DCTL_VDW_8		(0<<22)	/* VME max. width 8 */# define	UNIV_DCTL_VDW_16	(1<<22)	/* VME max. width 16 */# define	UNIV_DCTL_VDW_32	(2<<22)	/* VME max. width 32 */# define	UNIV_DCTL_VDW_64	(3<<22)	/* VME max. width 64 */# define	UNIV_DCTL_VAS_MSK	(7<<16)	/* VME AS mask 0x00070000 */# define	UNIV_DCTL_VAS_A16	(0<<16)	/* VME A16 */# define	UNIV_DCTL_VAS_A24	(1<<16)	/* VME A24 */# define	UNIV_DCTL_VAS_A32	(2<<16)	/* VME A32 */# define	UNIV_DCTL_PGM_MSK	(3<<14)	/* VME PGM/DATA mask 0x0000c000 */# define	UNIV_DCTL_PGM		(1<<14)	/* VME PGM(1)/DATA(0) */# define	UNIV_DCTL_SUPER_MSK	(3<<12)	/* VME SUPER/USR mask 0x00003000 */# define	UNIV_DCTL_SUPER		(1<<12)	/* VME SUPER(1)/USR(0) */# define	UNIV_DCTL_VCT		(1<<8)	/* VME enable BLT */# define	UNIV_DCTL_LD64EN	(1<<7)	/* PCI 64 enable  *//* DMA Xfer byte count register (is updated by DMA) */#define		UNIV_REGOFF_DTBC	0x204/* DMA Xfer local (PCI) address (direction is  set in DCTL) */#define		UNIV_REGOFF_DLA		0x208/* DMA Xfer VME address (direction is  set in DCTL) * NOTE: (*UNIV_DVA) & ~7 == (*UNIV_DLA) & ~7 MUST HOLD */#define		UNIV_REGOFF_DVA		0x210/* DMA Xfer VME command packet pointer * NOTE: The address stored here MUST be 32-byte aligned */#define		UNIV_REGOFF_DCPP	0x218/* these bits are only used in linked lists */# define	UNIV_DCPP_IMG_NULL	(1<<0)	/* last packet in list */# define	UNIV_DCPP_IMG_PROCESSED (1<<1)	/* packet processed *//* DMA Xfer General Control/Status register */#define		UNIV_REGOFF_DGCS	0x220# define	UNIV_DGCS_GO		(1<<31)	/* start xfer */# define	UNIV_DGCS_STOP_REQ	(1<<30) /* stop xfer (immediate abort) */# define	UNIV_DGCS_HALT_REQ	(1<<29) /* halt xfer (abort after current packet) */# define	UNIV_DGCS_CHAIN		(1<<27) /* enable linked list mode */# define	UNIV_DGCS_VON_MSK	(7<<20) /* VON mask */# define	UNIV_DGCS_VON_DONE	(0<<20) /* VON counter disabled (do until done) */# define	UNIV_DGCS_VON_256	(1<<20) /* VON yield bus after 256 bytes */# define	UNIV_DGCS_VON_512	(2<<20) /* VON yield bus after 512 bytes */# define	UNIV_DGCS_VON_1024	(3<<20) /* VON yield bus after 512 bytes */# define	UNIV_DGCS_VON_2048	(4<<20) /* VON yield bus after 1024 bytes */# define	UNIV_DGCS_VON_4096	(5<<20) /* VON yield bus after 4096 bytes */# define	UNIV_DGCS_VON_8192	(6<<20) /* VON yield bus after 8192 bytes */# define	UNIV_DGCS_VOFF_MSK	(15<<16) /* VOFF mask */# define	UNIV_DGCS_VOFF_0_US	(0<<16)	/* re-request VME master after 0 us */# define	UNIV_DGCS_VOFF_2_US	(8<<16)	/* re-request VME master after 2 us */# define	UNIV_DGCS_VOFF_4_US	(9<<16)	/* re-request VME master after 4 us */# define	UNIV_DGCS_VOFF_8_US	(10<<16)/* re-request VME master after 8 us */# define	UNIV_DGCS_VOFF_16_US	(1<<16)	/* re-request VME master after 16 us */# define	UNIV_DGCS_VOFF_32_US	(2<<16)	/* re-request VME master after 32 us */# define	UNIV_DGCS_VOFF_64_US	(3<<16)	/* re-request VME master after 64 us */# define	UNIV_DGCS_VOFF_128_US	(4<<16)	/* re-request VME master after 128 us */# define	UNIV_DGCS_VOFF_256_US	(5<<16)	/* re-request VME master after 256 us */# define	UNIV_DGCS_VOFF_512_US	(6<<16)	/* re-request VME master after 512 us */# define	UNIV_DGCS_VOFF_1024_US	(7<<16)	/* re-request VME master after 1024 us *//* Status Bits (write 1 to clear) */# define	UNIV_DGCS_ACT		(1<<15)	/* DMA active */# define	UNIV_DGCS_STOP		(1<<14)	/* DMA stopped */# define	UNIV_DGCS_HALT		(1<<13)	/* DMA halted */# define	UNIV_DGCS_DONE		(1<<11)	/* DMA done (OK) */# define	UNIV_DGCS_LERR		(1<<10)	/* PCI bus error */# define	UNIV_DGCS_VERR		(1<<9)	/* VME bus error */# define	UNIV_DGCS_P_ERR		(1<<8)	/* programming protocol error (e.g. PCI master disabled) */# define	UNIV_DGCS_STATUS_CLEAR\	(UNIV_DGCS_ACT|UNIV_DGCS_STOP|UNIV_DGCS_HALT|\	 UNIV_DGCS_DONE|UNIV_DGCS_LERR|UNIV_DGCS_VERR|UNIV_DGCS_P_ERR)# define	UNIV_DGCS_P_ERR		(1<<8)	/* programming protocol error (e.g. PCI master disabled) *//* Interrupt Mask Bits */# define	UNIV_DGCS_INT_STOP	(1<<6)	/* interrupt when stopped */# define	UNIV_DGCS_INT_HALT	(1<<5)  /* interrupt when halted */# define	UNIV_DGCS_INT_DONE	(1<<3)	/* interrupt when done */# define	UNIV_DGCS_INT_LERR	(1<<2)	/* interrupt on LERR */# define	UNIV_DGCS_INT_VERR	(1<<1)	/* interrupt on VERR */# define	UNIV_DGCS_INT_P_ERR	(1<<0)	/* interrupt on P_ERR */# define	UNIV_DGCS_INT_MSK	(0x0000006f) /* interrupt mask *//* DMA Linked List Update Enable Register */#define		UNIV_REGOFF_D_LLUE	0x224# define	UNIV_D_LLUE_UPDATE	(1<<31)/* PCI (local) interrupt enable register */#define		UNIV_REGOFF_LINT_EN	0x300# define	UNIV_LINT_EN_LM3	(1<<23)	/* location monitor 3 mask */# define	UNIV_LINT_EN_LM2	(1<<22)	/* location monitor 2 mask */# define	UNIV_LINT_EN_LM1	(1<<21)	/* location monitor 1 mask */# define	UNIV_LINT_EN_LM0	(1<<20)	/* location monitor 0 mask */# define	UNIV_LINT_EN_MBOX3	(1<<19)	/* mailbox 3 mask */# define	UNIV_LINT_EN_MBOX2	(1<<18)	/* mailbox 2 mask */# define	UNIV_LINT_EN_MBOX1	(1<<17)	/* mailbox 1 mask */# define	UNIV_LINT_EN_MBOX0	(1<<16)	/* mailbox 0 mask */# define 	UNIV_LINT_EN_ACFAIL	(1<<15)	/* ACFAIL irq mask */# define 	UNIV_LINT_EN_SYSFAIL	(1<<14)	/* SYSFAIL irq mask */# define 	UNIV_LINT_EN_SW_INT	(1<<13)	/* PCI (local) software irq */# define 	UNIV_LINT_EN_SW_IACK	(1<<12)	/* VME software IACK mask */# define	UNIV_LINT_EN_VERR	(1<<10)	/* PCI VERR irq mask */# define	UNIV_LINT_EN_LERR	(1<<9)	/* PCI LERR irq mask */# define	UNIV_LINT_EN_DMA	(1<<8)	/* PCI DMA irq mask */# define	UNIV_LINT_EN_VIRQ7	(1<<7)	/* VIRQ7 mask (universe does IACK automatically) */# define	UNIV_LINT_EN_VIRQ6	(1<<6)	/* VIRQ6 mask */# define	UNIV_LINT_EN_VIRQ5	(1<<5)	/* VIRQ5 mask */# define	UNIV_LINT_EN_VIRQ4	(1<<4)	/* VIRQ4 mask */# define	UNIV_LINT_EN_VIRQ3	(1<<3)	/* VIRQ3 mask */# define	UNIV_LINT_EN_VIRQ2	(1<<2)	/* VIRQ2 mask */# define	UNIV_LINT_EN_VIRQ1	(1<<1)	/* VIRQ1 mask */# define	UNIV_LINT_EN_VOWN	(1<<0)	/* VOWN mask *//* PCI (local) interrupt status register */#define		UNIV_REGOFF_LINT_STAT	0x304# define	UNIV_LINT_STAT_LM3	(1<<23)	/* location monitor 3 status */# define	UNIV_LINT_STAT_LM2	(1<<22)	/* location monitor 2 status */# define	UNIV_LINT_STAT_LM1	(1<<21)	/* location monitor 1 status */# define	UNIV_LINT_STAT_LM0	(1<<20)	/* location monitor 0 status */# define	UNIV_LINT_STAT_MBOX3	(1<<19)	/* mailbox 3 status */# define	UNIV_LINT_STAT_MBOX2	(1<<18)	/* mailbox 2 status */# define	UNIV_LINT_STAT_MBOX1	(1<<17)	/* mailbox 1 status */

⌨️ 快捷键说明

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