Merge branch 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
[platform/adaptation/renesas_rcar/renesas_kernel.git] / include / pcmcia / cs.h
1 /*
2  * cs.h
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * The initial developer of the original code is David A. Hinds
9  * <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds
10  * are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.
11  *
12  * (C) 1999             David A. Hinds
13  */
14
15 #ifndef _LINUX_CS_H
16 #define _LINUX_CS_H
17
18 #ifdef __KERNEL__
19 #include <linux/interrupt.h>
20 #endif
21
22 /* For AccessConfigurationRegister */
23 typedef struct conf_reg_t {
24     u_char      Function;
25     u_int       Action;
26     off_t       Offset;
27     u_int       Value;
28 } conf_reg_t;
29
30 /* Actions */
31 #define CS_READ         1
32 #define CS_WRITE        2
33
34 /* for AdjustResourceInfo */
35 /* Action field */
36 #define REMOVE_MANAGED_RESOURCE         1
37 #define ADD_MANAGED_RESOURCE            2
38
39
40 typedef struct event_callback_args_t {
41         struct pcmcia_device    *client_handle;
42         void                    *client_data;
43 } event_callback_args_t;
44
45 /* For CardValues field */
46 #define CV_OPTION_VALUE         0x01
47 #define CV_STATUS_VALUE         0x02
48 #define CV_PIN_REPLACEMENT      0x04
49 #define CV_COPY_VALUE           0x08
50 #define CV_EXT_STATUS           0x10
51
52 /* For GetFirst/NextClient */
53 typedef struct client_req_t {
54     socket_t    Socket;
55     u_int       Attributes;
56 } client_req_t;
57
58 #define CLIENT_THIS_SOCKET      0x01
59
60 /* ModifyConfiguration */
61 typedef struct modconf_t {
62     u_int       Attributes;
63     u_int       Vcc, Vpp1, Vpp2;
64 } modconf_t;
65
66 /* Attributes for ModifyConfiguration */
67 #define CONF_IRQ_CHANGE_VALID   0x0100
68 #define CONF_VCC_CHANGE_VALID   0x0200
69 #define CONF_VPP1_CHANGE_VALID  0x0400
70 #define CONF_VPP2_CHANGE_VALID  0x0800
71 #define CONF_IO_CHANGE_WIDTH    0x1000
72
73 /* For RequestConfiguration */
74 typedef struct config_req_t {
75     u_int       Attributes;
76     u_int       Vpp; /* both Vpp1 and Vpp2 */
77     u_int       IntType;
78     u_int       ConfigBase;
79     u_char      Status, Pin, Copy, ExtStatus;
80     u_char      ConfigIndex;
81     u_int       Present;
82 } config_req_t;
83
84 /* Attributes for RequestConfiguration */
85 #define CONF_ENABLE_IRQ         0x01
86 #define CONF_ENABLE_DMA         0x02
87 #define CONF_ENABLE_SPKR        0x04
88 #define CONF_ENABLE_PULSE_IRQ   0x08
89 #define CONF_VALID_CLIENT       0x100
90
91 /* IntType field */
92 #define INT_MEMORY              0x01
93 #define INT_MEMORY_AND_IO       0x02
94 #define INT_CARDBUS             0x04
95 #define INT_ZOOMED_VIDEO        0x08
96
97 /* For RequestIO and ReleaseIO */
98 typedef struct io_req_t {
99     u_int       BasePort1;
100     u_int       NumPorts1;
101     u_int       Attributes1;
102     u_int       BasePort2;
103     u_int       NumPorts2;
104     u_int       Attributes2;
105     u_int       IOAddrLines;
106 } io_req_t;
107
108 /* Attributes for RequestIO and ReleaseIO */
109 #define IO_SHARED               0x01
110 #define IO_FIRST_SHARED         0x02
111 #define IO_FORCE_ALIAS_ACCESS   0x04
112 #define IO_DATA_PATH_WIDTH      0x18
113 #define IO_DATA_PATH_WIDTH_8    0x00
114 #define IO_DATA_PATH_WIDTH_16   0x08
115 #define IO_DATA_PATH_WIDTH_AUTO 0x10
116
117 /* Bits in IRQInfo1 field */
118 #define IRQ_NMI_ID              0x01
119 #define IRQ_IOCK_ID             0x02
120 #define IRQ_BERR_ID             0x04
121 #define IRQ_VEND_ID             0x08
122 #define IRQ_INFO2_VALID         0x10
123 #define IRQ_LEVEL_ID            0x20
124 #define IRQ_PULSE_ID            0x40
125 #define IRQ_SHARE_ID            0x80
126
127 typedef struct eventmask_t {
128     u_int       Attributes;
129     u_int       EventMask;
130 } eventmask_t;
131
132 #define CONF_EVENT_MASK_VALID   0x01
133
134 /* Configuration registers present */
135 #define PRESENT_OPTION          0x001
136 #define PRESENT_STATUS          0x002
137 #define PRESENT_PIN_REPLACE     0x004
138 #define PRESENT_COPY            0x008
139 #define PRESENT_EXT_STATUS      0x010
140 #define PRESENT_IOBASE_0        0x020
141 #define PRESENT_IOBASE_1        0x040
142 #define PRESENT_IOBASE_2        0x080
143 #define PRESENT_IOBASE_3        0x100
144 #define PRESENT_IOSIZE          0x200
145
146 /* For GetMemPage, MapMemPage */
147 typedef struct memreq_t {
148     u_int       CardOffset;
149     page_t      Page;
150 } memreq_t;
151
152 /* For ModifyWindow */
153 typedef struct modwin_t {
154     u_int       Attributes;
155     u_int       AccessSpeed;
156 } modwin_t;
157
158 /* For RequestWindow */
159 typedef struct win_req_t {
160     u_int       Attributes;
161     u_long      Base;
162     u_int       Size;
163     u_int       AccessSpeed;
164 } win_req_t;
165
166 /* Attributes for RequestWindow */
167 #define WIN_ADDR_SPACE          0x0001
168 #define WIN_ADDR_SPACE_MEM      0x0000
169 #define WIN_ADDR_SPACE_IO       0x0001
170 #define WIN_MEMORY_TYPE         0x0002
171 #define WIN_MEMORY_TYPE_CM      0x0000
172 #define WIN_MEMORY_TYPE_AM      0x0002
173 #define WIN_ENABLE              0x0004
174 #define WIN_DATA_WIDTH          0x0018
175 #define WIN_DATA_WIDTH_8        0x0000
176 #define WIN_DATA_WIDTH_16       0x0008
177 #define WIN_DATA_WIDTH_32       0x0010
178 #define WIN_PAGED               0x0020
179 #define WIN_SHARED              0x0040
180 #define WIN_FIRST_SHARED        0x0080
181 #define WIN_USE_WAIT            0x0100
182 #define WIN_STRICT_ALIGN        0x0200
183 #define WIN_MAP_BELOW_1MB       0x0400
184 #define WIN_PREFETCH            0x0800
185 #define WIN_CACHEABLE           0x1000
186 #define WIN_BAR_MASK            0xe000
187 #define WIN_BAR_SHIFT           13
188
189 typedef struct error_info_t {
190     int         func;
191     int         retcode;
192 } error_info_t;
193
194 /* Flag to bind to all functions */
195 #define BIND_FN_ALL     0xff
196
197 /* Events */
198 #define CS_EVENT_PRI_LOW                0
199 #define CS_EVENT_PRI_HIGH               1
200
201 #define CS_EVENT_WRITE_PROTECT          0x000001
202 #define CS_EVENT_CARD_LOCK              0x000002
203 #define CS_EVENT_CARD_INSERTION         0x000004
204 #define CS_EVENT_CARD_REMOVAL           0x000008
205 #define CS_EVENT_BATTERY_DEAD           0x000010
206 #define CS_EVENT_BATTERY_LOW            0x000020
207 #define CS_EVENT_READY_CHANGE           0x000040
208 #define CS_EVENT_CARD_DETECT            0x000080
209 #define CS_EVENT_RESET_REQUEST          0x000100
210 #define CS_EVENT_RESET_PHYSICAL         0x000200
211 #define CS_EVENT_CARD_RESET             0x000400
212 #define CS_EVENT_REGISTRATION_COMPLETE  0x000800
213 #define CS_EVENT_PM_SUSPEND             0x002000
214 #define CS_EVENT_PM_RESUME              0x004000
215 #define CS_EVENT_INSERTION_REQUEST      0x008000
216 #define CS_EVENT_EJECTION_REQUEST       0x010000
217 #define CS_EVENT_MTD_REQUEST            0x020000
218 #define CS_EVENT_ERASE_COMPLETE         0x040000
219 #define CS_EVENT_REQUEST_ATTENTION      0x080000
220 #define CS_EVENT_CB_DETECT              0x100000
221 #define CS_EVENT_3VCARD                 0x200000
222 #define CS_EVENT_XVCARD                 0x400000
223
224 #endif /* _LINUX_CS_H */