1238add523bf9c89db1a191599fff2770af55e0fdMartyn Welch#ifndef _VME_USER_H_
2238add523bf9c89db1a191599fff2770af55e0fdMartyn Welch#define _VME_USER_H_
3238add523bf9c89db1a191599fff2770af55e0fdMartyn Welch
40a4b6b0279d903df2d62aaf92edf360fb5312532Manohar Vanga#define VME_USER_BUS_MAX	1
5f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch
6f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch/*
7f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch * VMEbus Master Window Configuration Structure
8f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch */
9238add523bf9c89db1a191599fff2770af55e0fdMartyn Welchstruct vme_master {
10238add523bf9c89db1a191599fff2770af55e0fdMartyn Welch	int enable;			/* State of Window */
11f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch	unsigned long long vme_addr;	/* Starting Address on the VMEbus */
12f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch	unsigned long long size;	/* Window Size */
136af04b065b048e47bbd5a6f2d9776c08206ef26cMartyn Welch	u32 aspace;			/* Address Space */
146af04b065b048e47bbd5a6f2d9776c08206ef26cMartyn Welch	u32 cycle;		/* Cycle properties */
156af04b065b048e47bbd5a6f2d9776c08206ef26cMartyn Welch	u32 dwidth;		/* Maximum Data Width */
16f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch#if 0
17f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch	char prefetchEnable;		/* Prefetch Read Enable State */
18f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch	int prefetchSize;		/* Prefetch Read Size (Cache Lines) */
19f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch	char wrPostEnable;		/* Write Post State */
20f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch#endif
21238add523bf9c89db1a191599fff2770af55e0fdMartyn Welch};
22f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch
23f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch
24f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch/*
25f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch * IOCTL Commands and structures
26f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch */
27f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch
28f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch/* Magic number for use in ioctls */
29f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch#define VME_IOC_MAGIC 0xAE
30f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch
31f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch
32f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch/* VMEbus Slave Window Configuration Structure */
33238add523bf9c89db1a191599fff2770af55e0fdMartyn Welchstruct vme_slave {
34238add523bf9c89db1a191599fff2770af55e0fdMartyn Welch	int enable;			/* State of Window */
35f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch	unsigned long long vme_addr;	/* Starting Address on the VMEbus */
36f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch	unsigned long long size;	/* Window Size */
376af04b065b048e47bbd5a6f2d9776c08206ef26cMartyn Welch	u32 aspace;			/* Address Space */
386af04b065b048e47bbd5a6f2d9776c08206ef26cMartyn Welch	u32 cycle;		/* Cycle properties */
39f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch#if 0
40f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch	char wrPostEnable;		/* Write Post State */
41f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch	char rmwLock;			/* Lock PCI during RMW Cycles */
42f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch	char data64BitCapable;		/* non-VMEbus capable of 64-bit Data */
43f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch#endif
44238add523bf9c89db1a191599fff2770af55e0fdMartyn Welch};
45238add523bf9c89db1a191599fff2770af55e0fdMartyn Welch
46dca22184262de0171bafdf613a8d3992a818b70fVincent Bossierstruct vme_irq_id {
47dca22184262de0171bafdf613a8d3992a818b70fVincent Bossier	__u8 level;
48dca22184262de0171bafdf613a8d3992a818b70fVincent Bossier	__u8 statid;
49dca22184262de0171bafdf613a8d3992a818b70fVincent Bossier};
50dca22184262de0171bafdf613a8d3992a818b70fVincent Bossier
51238add523bf9c89db1a191599fff2770af55e0fdMartyn Welch#define VME_GET_SLAVE _IOR(VME_IOC_MAGIC, 1, struct vme_slave)
52238add523bf9c89db1a191599fff2770af55e0fdMartyn Welch#define VME_SET_SLAVE _IOW(VME_IOC_MAGIC, 2, struct vme_slave)
53238add523bf9c89db1a191599fff2770af55e0fdMartyn Welch#define VME_GET_MASTER _IOR(VME_IOC_MAGIC, 3, struct vme_master)
54238add523bf9c89db1a191599fff2770af55e0fdMartyn Welch#define VME_SET_MASTER _IOW(VME_IOC_MAGIC, 4, struct vme_master)
55dca22184262de0171bafdf613a8d3992a818b70fVincent Bossier#define VME_IRQ_GEN _IOW(VME_IOC_MAGIC, 5, struct vme_irq_id)
56f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch
57238add523bf9c89db1a191599fff2770af55e0fdMartyn Welch#endif /* _VME_USER_H_ */
58f00a86d98a1ec3e99d352cda926fab767ba43b1fMartyn Welch
59