11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _ALPHA_AGP_BACKEND_H
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _ALPHA_AGP_BACKEND_H 1
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef	union _alpha_agp_mode {
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct {
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		u32 rate : 3;
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		u32 reserved0 : 1;
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		u32 fw : 1;
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		u32 fourgb : 1;
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		u32 reserved1 : 2;
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		u32 enable : 1;
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		u32 sba : 1;
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		u32 reserved2 : 14;
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		u32 rq : 8;
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	} bits;
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u32 lw;
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} alpha_agp_mode;
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _alpha_agp_info {
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct pci_controller *hose;
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct {
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		dma_addr_t bus_base;
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		unsigned long size;
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		void *sysdata;
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	} aperture;
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	alpha_agp_mode capability;
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	alpha_agp_mode mode;
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void *private;
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct alpha_agp_ops *ops;
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} alpha_agp_info;
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct alpha_agp_ops {
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int (*setup)(alpha_agp_info *);
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*cleanup)(alpha_agp_info *);
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int (*configure)(alpha_agp_info *);
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int (*bind)(alpha_agp_info *, off_t, struct agp_memory *);
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int (*unbind)(alpha_agp_info *, off_t, struct agp_memory *);
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long (*translate)(alpha_agp_info *, dma_addr_t);
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* _ALPHA_AGP_BACKEND_H */
43