1 /*
2  * drivers/pcmcia/pci_socket.h
3  *
4  * (C) Copyright 1999 Linus Torvalds
5  */
6 
7 #ifndef __PCI_SOCKET_H
8 #define __PCI_SOCKET_H
9 
10 struct pci_socket_ops;
11 struct socket_info_t;
12 
13 typedef struct pci_socket {
14 	struct pci_dev *dev;
15 	int cb_irq, io_irq;
16 	void *base;
17 	void (*handler)(void *, unsigned int);
18 	void *info;
19 	struct pci_socket_ops *op;
20 	socket_cap_t cap;
21 	spinlock_t event_lock;
22 	unsigned int events;
23 	struct socket_info_t *pcmcia_socket;
24 	struct tq_struct tq_task;
25 	struct timer_list poll_timer;
26 	/* Zoom video behaviour is so chip specific its not worth adding
27   	   this to _ops */
28 	void (*zoom_video)(struct pci_socket *, int);
29 	/* A few words of private data for the low-level driver.. */
30 	unsigned int private[8];
31 } pci_socket_t;
32 
33 struct pci_socket_ops {
34 	int (*open)(struct pci_socket *);
35 	void (*close)(struct pci_socket *);
36 
37 	int (*init)(struct pci_socket *);
38 	int (*suspend)(struct pci_socket *);
39 	int (*get_status)(struct pci_socket *, unsigned int *);
40 	int (*get_socket)(struct pci_socket *, socket_state_t *);
41 	int (*set_socket)(struct pci_socket *, socket_state_t *);
42 	int (*get_io_map)(struct pci_socket *, struct pccard_io_map *);
43 	int (*set_io_map)(struct pci_socket *, struct pccard_io_map *);
44 	int (*get_mem_map)(struct pci_socket *, struct pccard_mem_map *);
45 	int (*set_mem_map)(struct pci_socket *, struct pccard_mem_map *);
46 	void (*proc_setup)(struct pci_socket *, struct proc_dir_entry *base);
47 };
48 
49 extern struct pci_socket_ops yenta_operations;
50 extern struct pci_socket_ops ricoh_operations;
51 
52 #endif
53