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