Blame view
drivers/pcmcia/cs_internal.h
5.34 KB
1da177e4c Linux-2.6.12-rc2 |
1 |
/* |
dc953e550 pcmcia: cleanup c... |
2 |
* cs_internal.h -- definitions internal to the PCMCIA core modules |
1da177e4c Linux-2.6.12-rc2 |
3 4 5 6 7 8 9 10 11 12 |
* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * The initial developer of the original code is David A. Hinds * <dahinds@users.sourceforge.net>. Portions created by David A. Hinds * are Copyright (C) 1999 David A. Hinds. All Rights Reserved. * * (C) 1999 David A. Hinds |
7b24e7988 pcmcia: split up ... |
13 |
* (C) 2003 - 2010 Dominik Brodowski |
dc953e550 pcmcia: cleanup c... |
14 15 16 17 18 |
* * * This file contains definitions _only_ needed by the PCMCIA core modules. * It must not be included by PCMCIA socket drivers or by PCMCIA device * drivers. |
1da177e4c Linux-2.6.12-rc2 |
19 20 21 22 |
*/ #ifndef _LINUX_CS_INTERNAL_H #define _LINUX_CS_INTERNAL_H |
360b65b95 [PATCH] pcmcia: m... |
23 |
#include <linux/kref.h> |
1da177e4c Linux-2.6.12-rc2 |
24 |
|
1da177e4c Linux-2.6.12-rc2 |
25 |
/* Flags in client state */ |
e2d409636 [PATCH] pcmcia: u... |
26 |
#define CLIENT_WIN_REQ(i) (0x1<<(i)) |
1da177e4c Linux-2.6.12-rc2 |
27 |
|
a3d0d4d8d pcmcia: move loca... |
28 29 |
/* Flag to access all functions */ #define BIND_FN_ALL 0xff |
1da177e4c Linux-2.6.12-rc2 |
30 31 |
/* Each card function gets one of these guys */ typedef struct config_t { |
360b65b95 [PATCH] pcmcia: m... |
32 |
struct kref ref; |
dc953e550 pcmcia: cleanup c... |
33 |
unsigned int state; |
2ce4905e4 pcmcia: use struc... |
34 35 |
struct resource io[MAX_IO_WIN]; /* io ports */ |
0ca724d37 pcmcia: use struc... |
36 |
struct resource mem[MAX_WIN]; /* mem areas */ |
1da177e4c Linux-2.6.12-rc2 |
37 |
} config_t; |
dc953e550 pcmcia: cleanup c... |
38 |
|
1da177e4c Linux-2.6.12-rc2 |
39 40 41 42 43 44 45 |
struct cis_cache_entry { struct list_head node; unsigned int addr; unsigned int len; unsigned int attr; unsigned char cache[0]; }; |
c23889ca5 pcmcia: cleanup s... |
46 47 |
struct pccard_resource_ops { int (*validate_mem) (struct pcmcia_socket *s); |
b19a7275d pcmcia: clarify a... |
48 49 50 51 |
int (*find_io) (struct pcmcia_socket *s, unsigned int attr, unsigned int *base, unsigned int num, |
ad0c7be28 pcmcia: insert PC... |
52 53 |
unsigned int align, struct resource **parent); |
c23889ca5 pcmcia: cleanup s... |
54 55 56 |
struct resource* (*find_mem) (unsigned long base, unsigned long num, unsigned long align, int low, struct pcmcia_socket *s); |
c23889ca5 pcmcia: cleanup s... |
57 58 59 |
int (*init) (struct pcmcia_socket *s); void (*exit) (struct pcmcia_socket *s); }; |
1da177e4c Linux-2.6.12-rc2 |
60 61 62 63 64 65 66 67 68 69 |
/* Flags in config state */ #define CONFIG_LOCKED 0x01 #define CONFIG_IRQ_REQ 0x02 #define CONFIG_IO_REQ 0x04 /* Flags in socket state */ #define SOCKET_PRESENT 0x0008 #define SOCKET_INUSE 0x0010 #define SOCKET_SUSPEND 0x0080 #define SOCKET_WIN_REQ(i) (0x0100<<(i)) |
1da177e4c Linux-2.6.12-rc2 |
70 71 |
#define SOCKET_CARDBUS 0x8000 #define SOCKET_CARDBUS_CONFIG 0x10000 |
dc953e550 pcmcia: cleanup c... |
72 73 |
/* |
49b1153ad pcmcia: move all ... |
74 75 76 77 78 79 80 81 |
* Stuff internal to module "pcmcia_rsrc": */ extern int static_init(struct pcmcia_socket *s); extern struct resource *pcmcia_make_resource(unsigned long start, unsigned long end, int flags, const char *name); /* |
dc953e550 pcmcia: cleanup c... |
82 83 |
* Stuff internal to module "pcmcia_core": */ |
dc953e550 pcmcia: cleanup c... |
84 85 86 87 88 89 90 |
/* socket_sysfs.c */ extern int pccard_sysfs_add_socket(struct device *dev); extern void pccard_sysfs_remove_socket(struct device *dev); /* cardbus.c */ int cb_alloc(struct pcmcia_socket *s); void cb_free(struct pcmcia_socket *s); |
dc953e550 pcmcia: cleanup c... |
91 92 93 94 95 96 97 98 99 |
/* * Stuff exported by module "pcmcia_core" to module "pcmcia" */ struct pcmcia_callback{ struct module *owner; |
7b24e7988 pcmcia: split up ... |
100 101 |
int (*add) (struct pcmcia_socket *s); int (*remove) (struct pcmcia_socket *s); |
af461fc18 pcmcia: delay re-... |
102 |
void (*requery) (struct pcmcia_socket *s); |
6e7b51a73 pcmcia: move cist... |
103 |
int (*validate) (struct pcmcia_socket *s, unsigned int *i); |
dc953e550 pcmcia: cleanup c... |
104 |
int (*suspend) (struct pcmcia_socket *s); |
7b24e7988 pcmcia: split up ... |
105 |
int (*early_resume) (struct pcmcia_socket *s); |
dc953e550 pcmcia: cleanup c... |
106 107 108 109 110 111 |
int (*resume) (struct pcmcia_socket *s); }; /* cs.c */ extern struct rw_semaphore pcmcia_socket_list_rwsem; extern struct list_head pcmcia_socket_list; |
c23889ca5 pcmcia: cleanup s... |
112 |
extern struct class pcmcia_socket_class; |
dc953e550 pcmcia: cleanup c... |
113 |
int pccard_register_pcmcia(struct pcmcia_socket *s, struct pcmcia_callback *c); |
c23889ca5 pcmcia: cleanup s... |
114 |
struct pcmcia_socket *pcmcia_get_socket_by_nr(unsigned int nr); |
dc953e550 pcmcia: cleanup c... |
115 |
|
f971dbd5d pcmcia: use pccar... |
116 117 118 119 120 |
void pcmcia_parse_uevents(struct pcmcia_socket *socket, unsigned int events); #define PCMCIA_UEVENT_EJECT 0x0001 #define PCMCIA_UEVENT_INSERT 0x0002 #define PCMCIA_UEVENT_SUSPEND 0x0004 #define PCMCIA_UEVENT_RESUME 0x0008 |
af461fc18 pcmcia: delay re-... |
121 |
#define PCMCIA_UEVENT_REQUERY 0x0010 |
994917f8b pcmcia: card serv... |
122 123 124 |
struct pcmcia_socket *pcmcia_get_socket(struct pcmcia_socket *skt); void pcmcia_put_socket(struct pcmcia_socket *skt); |
6e7b51a73 pcmcia: move cist... |
125 126 127 128 129 |
/* * Stuff internal to module "pcmcia". */ /* ds.c */ extern struct bus_type pcmcia_bus_type; |
5716d415f pcmcia: remove ob... |
130 |
struct pcmcia_device; |
6e7b51a73 pcmcia: move cist... |
131 132 |
/* pcmcia_resource.c */ extern int pcmcia_release_configuration(struct pcmcia_device *p_dev); |
a3ac9af56 pcmcia: remove re... |
133 134 135 136 137 138 |
extern int pcmcia_validate_mem(struct pcmcia_socket *s); extern struct resource *pcmcia_find_mem_region(u_long base, u_long num, u_long align, int low, struct pcmcia_socket *s); |
6f0f38c45 pcmcia: setup IRQ... |
139 140 |
void pcmcia_cleanup_irq(struct pcmcia_socket *s); int pcmcia_setup_irq(struct pcmcia_device *p_dev); |
6e7b51a73 pcmcia: move cist... |
141 |
|
dc953e550 pcmcia: cleanup c... |
142 |
/* cistpl.c */ |
6e7b51a73 pcmcia: move cist... |
143 |
extern struct bin_attribute pccard_cis_attr; |
dc953e550 pcmcia: cleanup c... |
144 145 |
int pcmcia_read_cis_mem(struct pcmcia_socket *s, int attr, u_int addr, u_int len, void *ptr); |
1d5cc192d pcmcia: use pcmic... |
146 147 |
int pcmcia_write_cis_mem(struct pcmcia_socket *s, int attr, u_int addr, u_int len, void *ptr); |
dc953e550 pcmcia: cleanup c... |
148 149 150 151 |
void release_cis_mem(struct pcmcia_socket *s); void destroy_cis_cache(struct pcmcia_socket *s); int pccard_read_tuple(struct pcmcia_socket *s, unsigned int function, cisdata_t code, void *parse); |
994917f8b pcmcia: card serv... |
152 153 |
int pcmcia_replace_cis(struct pcmcia_socket *s, const u8 *data, const size_t len); |
84897fc05 pcmcia: pccard_re... |
154 |
int pccard_validate_cis(struct pcmcia_socket *s, unsigned int *count); |
6e7b51a73 pcmcia: move cist... |
155 |
int verify_cis_cache(struct pcmcia_socket *s); |
dc953e550 pcmcia: cleanup c... |
156 |
|
91284224d pcmcia: add new C... |
157 158 159 160 161 |
int pccard_loop_tuple(struct pcmcia_socket *s, unsigned int function, cisdata_t code, cisparse_t *parse, void *priv_data, int (*loop_tuple) (tuple_t *tuple, cisparse_t *parse, void *priv_data)); |
18a7a19b3 pcmcia: remove pc... |
162 163 164 165 166 167 168 |
int pccard_get_first_tuple(struct pcmcia_socket *s, unsigned int function, tuple_t *tuple); int pccard_get_next_tuple(struct pcmcia_socket *s, unsigned int function, tuple_t *tuple); int pccard_get_tuple_data(struct pcmcia_socket *s, tuple_t *tuple); |
1da177e4c Linux-2.6.12-rc2 |
169 |
#endif /* _LINUX_CS_INTERNAL_H */ |