|
|
1.1 root 1: /*
2: * ds.h 1.58 2001/10/04 03:15:22
3: *
4: * The contents of this file are subject to the Mozilla Public License
5: * Version 1.1 (the "License"); you may not use this file except in
6: * compliance with the License. You may obtain a copy of the License
7: * at http://www.mozilla.org/MPL/
8: *
9: * Software distributed under the License is distributed on an "AS IS"
10: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
11: * the License for the specific language governing rights and
12: * limitations under the License.
13: *
14: * The initial developer of the original code is David A. Hinds
15: * <[email protected]>. Portions created by David A. Hinds
16: * are Copyright (C) 1999 David A. Hinds. All Rights Reserved.
17: *
18: * Alternatively, the contents of this file may be used under the
19: * terms of the GNU General Public License version 2 (the "GPL"), in
20: * which case the provisions of the GPL are applicable instead of the
21: * above. If you wish to allow the use of your version of this file
22: * only under the terms of the GPL and not to allow others to use
23: * your version of this file under the MPL, indicate your decision by
24: * deleting the provisions above and replace them with the notice and
25: * other provisions required by the GPL. If you do not delete the
26: * provisions above, a recipient may use your version of this file
27: * under either the MPL or the GPL.
28: */
29:
30: #ifndef _LINUX_DS_H
31: #define _LINUX_DS_H
32:
33: #include <pcmcia/driver_ops.h>
34: #include <pcmcia/bulkmem.h>
35:
36: typedef struct tuple_parse_t {
37: tuple_t tuple;
38: cisdata_t data[255];
39: cisparse_t parse;
40: } tuple_parse_t;
41:
42: typedef struct win_info_t {
43: window_handle_t handle;
44: win_req_t window;
45: memreq_t map;
46: } win_info_t;
47:
48: typedef struct bind_info_t {
49: dev_info_t dev_info;
50: u_char function;
51: struct dev_link_t *instance;
52: char name[DEV_NAME_LEN];
53: u_short major, minor;
54: void *next;
55: } bind_info_t;
56:
57: typedef struct mtd_info_t {
58: dev_info_t dev_info;
59: u_int Attributes;
60: u_int CardOffset;
61: } mtd_info_t;
62:
63: typedef union ds_ioctl_arg_t {
64: servinfo_t servinfo;
65: adjust_t adjust;
66: config_info_t config;
67: tuple_t tuple;
68: tuple_parse_t tuple_parse;
69: client_req_t client_req;
70: cs_status_t status;
71: conf_reg_t conf_reg;
72: cisinfo_t cisinfo;
73: region_info_t region;
74: bind_info_t bind_info;
75: mtd_info_t mtd_info;
76: win_info_t win_info;
77: cisdump_t cisdump;
78: } ds_ioctl_arg_t;
79:
80: #define DS_GET_CARD_SERVICES_INFO _IOR ('d', 1, servinfo_t)
81: #define DS_ADJUST_RESOURCE_INFO _IOWR('d', 2, adjust_t)
82: #define DS_GET_CONFIGURATION_INFO _IOWR('d', 3, config_info_t)
83: #define DS_GET_FIRST_TUPLE _IOWR('d', 4, tuple_t)
84: #define DS_GET_NEXT_TUPLE _IOWR('d', 5, tuple_t)
85: #define DS_GET_TUPLE_DATA _IOWR('d', 6, tuple_parse_t)
86: #define DS_PARSE_TUPLE _IOWR('d', 7, tuple_parse_t)
87: #define DS_RESET_CARD _IO ('d', 8)
88: #define DS_GET_STATUS _IOWR('d', 9, cs_status_t)
89: #define DS_ACCESS_CONFIGURATION_REGISTER _IOWR('d', 10, conf_reg_t)
90: #define DS_VALIDATE_CIS _IOR ('d', 11, cisinfo_t)
91: #define DS_SUSPEND_CARD _IO ('d', 12)
92: #define DS_RESUME_CARD _IO ('d', 13)
93: #define DS_EJECT_CARD _IO ('d', 14)
94: #define DS_INSERT_CARD _IO ('d', 15)
95: #define DS_GET_FIRST_REGION _IOWR('d', 16, region_info_t)
96: #define DS_GET_NEXT_REGION _IOWR('d', 17, region_info_t)
97: #define DS_REPLACE_CIS _IOWR('d', 18, cisdump_t)
98: #define DS_GET_FIRST_WINDOW _IOR ('d', 19, win_info_t)
99: #define DS_GET_NEXT_WINDOW _IOWR('d', 20, win_info_t)
100: #define DS_GET_MEM_PAGE _IOWR('d', 21, win_info_t)
101:
102: #define DS_BIND_REQUEST _IOWR('d', 60, bind_info_t)
103: #define DS_GET_DEVICE_INFO _IOWR('d', 61, bind_info_t)
104: #define DS_GET_NEXT_DEVICE _IOWR('d', 62, bind_info_t)
105: #define DS_UNBIND_REQUEST _IOW ('d', 63, bind_info_t)
106: #define DS_BIND_MTD _IOWR('d', 64, mtd_info_t)
107:
108: #ifdef __KERNEL__
109:
110: typedef struct dev_link_t {
111: dev_node_t *dev;
112: u_int state, open;
113: wait_queue_head_t pending;
114: struct timer_list release;
115: client_handle_t handle;
116: io_req_t io;
117: irq_req_t irq;
118: config_req_t conf;
119: window_handle_t win;
120: void *priv;
121: struct dev_link_t *next;
122: } dev_link_t;
123:
124: /* Flags for device state */
125: #define DEV_PRESENT 0x01
126: #define DEV_CONFIG 0x02
127: #define DEV_STALE_CONFIG 0x04 /* release on close */
128: #define DEV_STALE_LINK 0x08 /* detach on release */
129: #define DEV_CONFIG_PENDING 0x10
130: #define DEV_RELEASE_PENDING 0x20
131: #define DEV_SUSPEND 0x40
132: #define DEV_BUSY 0x80
133:
134: #define DEV_OK(l) \
135: ((l) && ((l->state & ~DEV_BUSY) == (DEV_CONFIG|DEV_PRESENT)))
136:
137: int register_pccard_driver(dev_info_t *dev_info,
138: dev_link_t *(*attach)(void),
139: void (*detach)(dev_link_t *));
140:
141: int unregister_pccard_driver(dev_info_t *dev_info);
142:
143: #define register_pcmcia_driver register_pccard_driver
144: #define unregister_pcmcia_driver unregister_pccard_driver
145:
146: #endif /* __KERNEL__ */
147:
148: #endif /* _LINUX_DS_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.