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
10struct pci_socket_ops;
11struct socket_info_t;
12
13typedef 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
33struct 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
49extern struct pci_socket_ops yenta_operations;
50extern struct pci_socket_ops ricoh_operations;
51
52#endif
53