Commit a58357862e71919555ea96cd272e535593a8b3da

Authored by Dominik Brodowski
1 parent c23889ca5a

pcmcia: cleanup device driver header file

The header file primarily used for (in-kernel) PCMCIA device drivers
also deserved a major cleanup. This header file also serves as the dumping
ground for all typedefs and definitions only used by the deprecated PCMCIA
ioctl and the deprecated PCMCIA userspace tools using this ioctl.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

Showing 3 changed files with 202 additions and 164 deletions Side-by-side Diff

include/pcmcia/ciscode.h
... ... @@ -119,7 +119,7 @@
119 119  
120 120 #define MANFID_TOSHIBA 0x0098
121 121  
122   -#define MANFID_UNGERMANN 0x02c0
  122 +#define MANFID_UNGERMANN 0x02c0
123 123  
124 124 #define MANFID_XIRCOM 0x0105
125 125  
... ... @@ -28,45 +28,10 @@
28 28 #define CS_WRITE 2
29 29  
30 30 /* for AdjustResourceInfo */
31   -typedef struct adjust_t {
32   - u_int Action;
33   - u_int Resource;
34   - u_int Attributes;
35   - union {
36   - struct memory {
37   - u_long Base;
38   - u_long Size;
39   - } memory;
40   - struct io {
41   - ioaddr_t BasePort;
42   - ioaddr_t NumPorts;
43   - u_int IOAddrLines;
44   - } io;
45   - struct irq {
46   - u_int IRQ;
47   - } irq;
48   - } resource;
49   -} adjust_t;
50   -
51 31 /* Action field */
52 32 #define REMOVE_MANAGED_RESOURCE 1
53 33 #define ADD_MANAGED_RESOURCE 2
54   -#define GET_FIRST_MANAGED_RESOURCE 3
55   -#define GET_NEXT_MANAGED_RESOURCE 4
56   -/* Resource field */
57   -#define RES_MEMORY_RANGE 1
58   -#define RES_IO_RANGE 2
59   -#define RES_IRQ 3
60   -/* Attribute field */
61   -#define RES_IRQ_TYPE 0x03
62   -#define RES_IRQ_TYPE_EXCLUSIVE 0
63   -#define RES_IRQ_TYPE_TIME 1
64   -#define RES_IRQ_TYPE_DYNAMIC 2
65   -#define RES_IRQ_CSC 0x04
66   -#define RES_SHARED 0x08
67   -#define RES_RESERVED 0x10
68   -#define RES_ALLOCATED 0x20
69   -#define RES_REMOVED 0x40
  34 +
70 35  
71 36 typedef struct event_callback_args_t {
72 37 struct pcmcia_device *client_handle;
... ... @@ -10,7 +10,7 @@
10 10 * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
11 11 *
12 12 * (C) 1999 David A. Hinds
13   - * (C) 2003 - 2004 Dominik Brodowski
  13 + * (C) 2003 - 2008 Dominik Brodowski
14 14 */
15 15  
16 16 #ifndef _LINUX_DS_H
17 17  
18 18  
19 19  
... ... @@ -23,138 +23,21 @@
23 23 #include <pcmcia/cs_types.h>
24 24 #include <pcmcia/device_id.h>
25 25  
26   -typedef struct tuple_parse_t {
27   - tuple_t tuple;
28   - cisdata_t data[255];
29   - cisparse_t parse;
30   -} tuple_parse_t;
31   -
32   -typedef struct win_info_t {
33   - window_handle_t handle;
34   - win_req_t window;
35   - memreq_t map;
36   -} win_info_t;
37   -
38   -typedef struct bind_info_t {
39   - dev_info_t dev_info;
40   - u_char function;
41   - struct pcmcia_device *instance;
42   - char name[DEV_NAME_LEN];
43   - u_short major, minor;
44   - void *next;
45   -} bind_info_t;
46   -
47   -typedef struct mtd_info_t {
48   - dev_info_t dev_info;
49   - u_int Attributes;
50   - u_int CardOffset;
51   -} mtd_info_t;
52   -
53   -typedef struct region_info_t {
54   - u_int Attributes;
55   - u_int CardOffset;
56   - u_int RegionSize;
57   - u_int AccessSpeed;
58   - u_int BlockSize;
59   - u_int PartMultiple;
60   - u_char JedecMfr, JedecInfo;
61   - memory_handle_t next;
62   -} region_info_t;
63   -#define REGION_TYPE 0x0001
64   -#define REGION_TYPE_CM 0x0000
65   -#define REGION_TYPE_AM 0x0001
66   -#define REGION_PREFETCH 0x0008
67   -#define REGION_CACHEABLE 0x0010
68   -#define REGION_BAR_MASK 0xe000
69   -#define REGION_BAR_SHIFT 13
70   -
71   -/* For ReplaceCIS */
72   -typedef struct cisdump_t {
73   - u_int Length;
74   - cisdata_t Data[CISTPL_MAX_CIS_SIZE];
75   -} cisdump_t;
76   -
77   -/* for GetConfigurationInfo */
78   -typedef struct config_info_t {
79   - u_char Function;
80   - u_int Attributes;
81   - u_int Vcc, Vpp1, Vpp2;
82   - u_int IntType;
83   - u_int ConfigBase;
84   - u_char Status, Pin, Copy, Option, ExtStatus;
85   - u_int Present;
86   - u_int CardValues;
87   - u_int AssignedIRQ;
88   - u_int IRQAttributes;
89   - ioaddr_t BasePort1;
90   - ioaddr_t NumPorts1;
91   - u_int Attributes1;
92   - ioaddr_t BasePort2;
93   - ioaddr_t NumPorts2;
94   - u_int Attributes2;
95   - u_int IOAddrLines;
96   -} config_info_t;
97   -
98   -typedef union ds_ioctl_arg_t {
99   - adjust_t adjust;
100   - config_info_t config;
101   - tuple_t tuple;
102   - tuple_parse_t tuple_parse;
103   - client_req_t client_req;
104   - cs_status_t status;
105   - conf_reg_t conf_reg;
106   - cisinfo_t cisinfo;
107   - region_info_t region;
108   - bind_info_t bind_info;
109   - mtd_info_t mtd_info;
110   - win_info_t win_info;
111   - cisdump_t cisdump;
112   -} ds_ioctl_arg_t;
113   -
114   -#define DS_ADJUST_RESOURCE_INFO _IOWR('d', 2, adjust_t)
115   -#define DS_GET_CONFIGURATION_INFO _IOWR('d', 3, config_info_t)
116   -#define DS_GET_FIRST_TUPLE _IOWR('d', 4, tuple_t)
117   -#define DS_GET_NEXT_TUPLE _IOWR('d', 5, tuple_t)
118   -#define DS_GET_TUPLE_DATA _IOWR('d', 6, tuple_parse_t)
119   -#define DS_PARSE_TUPLE _IOWR('d', 7, tuple_parse_t)
120   -#define DS_RESET_CARD _IO ('d', 8)
121   -#define DS_GET_STATUS _IOWR('d', 9, cs_status_t)
122   -#define DS_ACCESS_CONFIGURATION_REGISTER _IOWR('d', 10, conf_reg_t)
123   -#define DS_VALIDATE_CIS _IOR ('d', 11, cisinfo_t)
124   -#define DS_SUSPEND_CARD _IO ('d', 12)
125   -#define DS_RESUME_CARD _IO ('d', 13)
126   -#define DS_EJECT_CARD _IO ('d', 14)
127   -#define DS_INSERT_CARD _IO ('d', 15)
128   -#define DS_GET_FIRST_REGION _IOWR('d', 16, region_info_t)
129   -#define DS_GET_NEXT_REGION _IOWR('d', 17, region_info_t)
130   -#define DS_REPLACE_CIS _IOWR('d', 18, cisdump_t)
131   -#define DS_GET_FIRST_WINDOW _IOR ('d', 19, win_info_t)
132   -#define DS_GET_NEXT_WINDOW _IOWR('d', 20, win_info_t)
133   -#define DS_GET_MEM_PAGE _IOWR('d', 21, win_info_t)
134   -
135   -#define DS_BIND_REQUEST _IOWR('d', 60, bind_info_t)
136   -#define DS_GET_DEVICE_INFO _IOWR('d', 61, bind_info_t)
137   -#define DS_GET_NEXT_DEVICE _IOWR('d', 62, bind_info_t)
138   -#define DS_UNBIND_REQUEST _IOW ('d', 63, bind_info_t)
139   -#define DS_BIND_MTD _IOWR('d', 64, mtd_info_t)
140   -
141   -/* used in userspace only */
142   -#define CS_IN_USE 0x1e
143   -
144 26 #ifdef __KERNEL__
145 27 #include <linux/device.h>
146 28 #include <pcmcia/ss.h>
147 29  
148   -typedef struct dev_node_t {
149   - char dev_name[DEV_NAME_LEN];
150   - u_short major, minor;
151   - struct dev_node_t *next;
152   -} dev_node_t;
153   -
154   -
  30 +/*
  31 + * PCMCIA device drivers (16-bit cards only; 32-bit cards require CardBus
  32 + * a.k.a. PCI drivers
  33 + */
155 34 struct pcmcia_socket;
  35 +struct pcmcia_device;
156 36 struct config_t;
157 37  
  38 +/* dynamic device IDs for PCMCIA device drivers. See
  39 + * Documentation/pcmcia/driver.txt for details.
  40 +*/
158 41 struct pcmcia_dynids {
159 42 spinlock_t lock;
160 43 struct list_head list;
... ... @@ -177,6 +60,14 @@
177 60 int pcmcia_register_driver(struct pcmcia_driver *driver);
178 61 void pcmcia_unregister_driver(struct pcmcia_driver *driver);
179 62  
  63 +/* Some drivers use dev_node_t to store char or block device information.
  64 + * Don't use this in new drivers, though.
  65 + */
  66 +typedef struct dev_node_t {
  67 + char dev_name[DEV_NAME_LEN];
  68 + u_short major, minor;
  69 + struct dev_node_t *next;
  70 +} dev_node_t;
180 71  
181 72 struct pcmcia_device {
182 73 /* the socket and the device_no [for multifunction devices]
183 74  
184 75  
... ... @@ -246,10 +137,15 @@
246 137 #define to_pcmcia_dev(n) container_of(n, struct pcmcia_device, dev)
247 138 #define to_pcmcia_drv(n) container_of(n, struct pcmcia_driver, drv)
248 139  
  140 +/* deprecated -- don't use! */
249 141 #define handle_to_dev(handle) (handle->dev)
250 142  
251   -/* error reporting */
252 143  
  144 +/* (deprecated) error reporting by PCMCIA devices. Use dev_printk()
  145 + * or dev_dbg() directly in the driver, without referring to pcmcia_error_func()
  146 + * and/or pcmcia_error_ret() for those functions will go away soon.
  147 + */
  148 +
253 149 const char *pcmcia_error_func(int func);
254 150 const char *pcmcia_error_ret(int ret);
255 151  
... ... @@ -263,5 +159,182 @@
263 159  
264 160  
265 161 #endif /* __KERNEL__ */
  162 +
  163 +
  164 +
  165 +/* Below, there are only definitions which are used by
  166 + * - the PCMCIA ioctl
  167 + * - deprecated PCMCIA userspace tools only
  168 + *
  169 + * here be dragons ... here be dragons ... here be dragons ... here be drag
  170 + */
  171 +
  172 +#if defined(CONFIG_PCMCIA_IOCTL) || !defined(__KERNEL__)
  173 +
  174 +/* for AdjustResourceInfo */
  175 +typedef struct adjust_t {
  176 + u_int Action;
  177 + u_int Resource;
  178 + u_int Attributes;
  179 + union {
  180 + struct memory {
  181 + u_long Base;
  182 + u_long Size;
  183 + } memory;
  184 + struct io {
  185 + ioaddr_t BasePort;
  186 + ioaddr_t NumPorts;
  187 + u_int IOAddrLines;
  188 + } io;
  189 + struct irq {
  190 + u_int IRQ;
  191 + } irq;
  192 + } resource;
  193 +} adjust_t;
  194 +
  195 +/* Action field */
  196 +#define REMOVE_MANAGED_RESOURCE 1
  197 +#define ADD_MANAGED_RESOURCE 2
  198 +#define GET_FIRST_MANAGED_RESOURCE 3
  199 +#define GET_NEXT_MANAGED_RESOURCE 4
  200 +/* Resource field */
  201 +#define RES_MEMORY_RANGE 1
  202 +#define RES_IO_RANGE 2
  203 +#define RES_IRQ 3
  204 +/* Attribute field */
  205 +#define RES_IRQ_TYPE 0x03
  206 +#define RES_IRQ_TYPE_EXCLUSIVE 0
  207 +#define RES_IRQ_TYPE_TIME 1
  208 +#define RES_IRQ_TYPE_DYNAMIC 2
  209 +#define RES_IRQ_CSC 0x04
  210 +#define RES_SHARED 0x08
  211 +#define RES_RESERVED 0x10
  212 +#define RES_ALLOCATED 0x20
  213 +#define RES_REMOVED 0x40
  214 +
  215 +
  216 +typedef struct tuple_parse_t {
  217 + tuple_t tuple;
  218 + cisdata_t data[255];
  219 + cisparse_t parse;
  220 +} tuple_parse_t;
  221 +
  222 +typedef struct win_info_t {
  223 + window_handle_t handle;
  224 + win_req_t window;
  225 + memreq_t map;
  226 +} win_info_t;
  227 +
  228 +typedef struct bind_info_t {
  229 + dev_info_t dev_info;
  230 + u_char function;
  231 + struct pcmcia_device *instance;
  232 + char name[DEV_NAME_LEN];
  233 + u_short major, minor;
  234 + void *next;
  235 +} bind_info_t;
  236 +
  237 +typedef struct mtd_info_t {
  238 + dev_info_t dev_info;
  239 + u_int Attributes;
  240 + u_int CardOffset;
  241 +} mtd_info_t;
  242 +
  243 +typedef struct region_info_t {
  244 + u_int Attributes;
  245 + u_int CardOffset;
  246 + u_int RegionSize;
  247 + u_int AccessSpeed;
  248 + u_int BlockSize;
  249 + u_int PartMultiple;
  250 + u_char JedecMfr, JedecInfo;
  251 + memory_handle_t next;
  252 +} region_info_t;
  253 +
  254 +#define REGION_TYPE 0x0001
  255 +#define REGION_TYPE_CM 0x0000
  256 +#define REGION_TYPE_AM 0x0001
  257 +#define REGION_PREFETCH 0x0008
  258 +#define REGION_CACHEABLE 0x0010
  259 +#define REGION_BAR_MASK 0xe000
  260 +#define REGION_BAR_SHIFT 13
  261 +
  262 +/* For ReplaceCIS */
  263 +typedef struct cisdump_t {
  264 + u_int Length;
  265 + cisdata_t Data[CISTPL_MAX_CIS_SIZE];
  266 +} cisdump_t;
  267 +
  268 +/* for GetConfigurationInfo */
  269 +typedef struct config_info_t {
  270 + u_char Function;
  271 + u_int Attributes;
  272 + u_int Vcc, Vpp1, Vpp2;
  273 + u_int IntType;
  274 + u_int ConfigBase;
  275 + u_char Status, Pin, Copy, Option, ExtStatus;
  276 + u_int Present;
  277 + u_int CardValues;
  278 + u_int AssignedIRQ;
  279 + u_int IRQAttributes;
  280 + ioaddr_t BasePort1;
  281 + ioaddr_t NumPorts1;
  282 + u_int Attributes1;
  283 + ioaddr_t BasePort2;
  284 + ioaddr_t NumPorts2;
  285 + u_int Attributes2;
  286 + u_int IOAddrLines;
  287 +} config_info_t;
  288 +
  289 +typedef union ds_ioctl_arg_t {
  290 + adjust_t adjust;
  291 + config_info_t config;
  292 + tuple_t tuple;
  293 + tuple_parse_t tuple_parse;
  294 + client_req_t client_req;
  295 + cs_status_t status;
  296 + conf_reg_t conf_reg;
  297 + cisinfo_t cisinfo;
  298 + region_info_t region;
  299 + bind_info_t bind_info;
  300 + mtd_info_t mtd_info;
  301 + win_info_t win_info;
  302 + cisdump_t cisdump;
  303 +} ds_ioctl_arg_t;
  304 +
  305 +#define DS_ADJUST_RESOURCE_INFO _IOWR('d', 2, adjust_t)
  306 +#define DS_GET_CONFIGURATION_INFO _IOWR('d', 3, config_info_t)
  307 +#define DS_GET_FIRST_TUPLE _IOWR('d', 4, tuple_t)
  308 +#define DS_GET_NEXT_TUPLE _IOWR('d', 5, tuple_t)
  309 +#define DS_GET_TUPLE_DATA _IOWR('d', 6, tuple_parse_t)
  310 +#define DS_PARSE_TUPLE _IOWR('d', 7, tuple_parse_t)
  311 +#define DS_RESET_CARD _IO ('d', 8)
  312 +#define DS_GET_STATUS _IOWR('d', 9, cs_status_t)
  313 +#define DS_ACCESS_CONFIGURATION_REGISTER _IOWR('d', 10, conf_reg_t)
  314 +#define DS_VALIDATE_CIS _IOR ('d', 11, cisinfo_t)
  315 +#define DS_SUSPEND_CARD _IO ('d', 12)
  316 +#define DS_RESUME_CARD _IO ('d', 13)
  317 +#define DS_EJECT_CARD _IO ('d', 14)
  318 +#define DS_INSERT_CARD _IO ('d', 15)
  319 +#define DS_GET_FIRST_REGION _IOWR('d', 16, region_info_t)
  320 +#define DS_GET_NEXT_REGION _IOWR('d', 17, region_info_t)
  321 +#define DS_REPLACE_CIS _IOWR('d', 18, cisdump_t)
  322 +#define DS_GET_FIRST_WINDOW _IOR ('d', 19, win_info_t)
  323 +#define DS_GET_NEXT_WINDOW _IOWR('d', 20, win_info_t)
  324 +#define DS_GET_MEM_PAGE _IOWR('d', 21, win_info_t)
  325 +
  326 +#define DS_BIND_REQUEST _IOWR('d', 60, bind_info_t)
  327 +#define DS_GET_DEVICE_INFO _IOWR('d', 61, bind_info_t)
  328 +#define DS_GET_NEXT_DEVICE _IOWR('d', 62, bind_info_t)
  329 +#define DS_UNBIND_REQUEST _IOW ('d', 63, bind_info_t)
  330 +#define DS_BIND_MTD _IOWR('d', 64, mtd_info_t)
  331 +
  332 +
  333 +/* used in userspace only */
  334 +#define CS_IN_USE 0x1e
  335 +
  336 +
  337 +#endif /* !defined(__KERNEL__) || defined(CONFIG_PCMCIA_IOCTL) */
  338 +
266 339 #endif /* _LINUX_DS_H */