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 /* For AccessConfigurationRegister */ 19 typedef struct conf_reg_t { 20 u_char Function; 21 u_int Action; 22 off_t Offset; 23 u_int Value; 24 } conf_reg_t; 25 26 /* Actions */ 27 #define CS_READ 1 28 #define CS_WRITE 2 29 30 /* for AdjustResourceInfo */ 31 /* Action field */ 32 #define REMOVE_MANAGED_RESOURCE 1 33 #define ADD_MANAGED_RESOURCE 2 34 35 36 typedef struct event_callback_args_t { 37 struct pcmcia_device *client_handle; 38 void *client_data; 39 } event_callback_args_t; 40 41 /* For CardValues field */ 42 #define CV_OPTION_VALUE 0x01 43 #define CV_STATUS_VALUE 0x02 44 #define CV_PIN_REPLACEMENT 0x04 45 #define CV_COPY_VALUE 0x08 46 #define CV_EXT_STATUS 0x10 47 48 /* For GetFirst/NextClient */ 49 typedef struct client_req_t { 50 socket_t Socket; 51 u_int Attributes; 52 } client_req_t; 53 54 #define CLIENT_THIS_SOCKET 0x01 55 56 /* ModifyConfiguration */ 57 typedef struct modconf_t { 58 u_int Attributes; 59 u_int Vcc, Vpp1, Vpp2; 60 } modconf_t; 61 62 /* Attributes for ModifyConfiguration */ 63 #define CONF_IRQ_CHANGE_VALID 0x0100 64 #define CONF_VCC_CHANGE_VALID 0x0200 65 #define CONF_VPP1_CHANGE_VALID 0x0400 66 #define CONF_VPP2_CHANGE_VALID 0x0800 67 #define CONF_IO_CHANGE_WIDTH 0x1000 68 69 /* For RequestConfiguration */ 70 typedef struct config_req_t { 71 u_int Attributes; 72 u_int Vpp; /* both Vpp1 and Vpp2 */ 73 u_int IntType; 74 u_int ConfigBase; 75 u_char Status, Pin, Copy, ExtStatus; 76 u_char ConfigIndex; 77 u_int Present; 78 } config_req_t; 79 80 /* Attributes for RequestConfiguration */ 81 #define CONF_ENABLE_IRQ 0x01 82 #define CONF_ENABLE_DMA 0x02 83 #define CONF_ENABLE_SPKR 0x04 84 #define CONF_VALID_CLIENT 0x100 85 86 /* IntType field */ 87 #define INT_MEMORY 0x01 88 #define INT_MEMORY_AND_IO 0x02 89 #define INT_CARDBUS 0x04 90 #define INT_ZOOMED_VIDEO 0x08 91 92 /* For RequestIO and ReleaseIO */ 93 typedef struct io_req_t { 94 u_int BasePort1; 95 u_int NumPorts1; 96 u_int Attributes1; 97 u_int BasePort2; 98 u_int NumPorts2; 99 u_int Attributes2; 100 u_int IOAddrLines; 101 } io_req_t; 102 103 /* Attributes for RequestIO and ReleaseIO */ 104 #define IO_SHARED 0x01 105 #define IO_FIRST_SHARED 0x02 106 #define IO_FORCE_ALIAS_ACCESS 0x04 107 #define IO_DATA_PATH_WIDTH 0x18 108 #define IO_DATA_PATH_WIDTH_8 0x00 109 #define IO_DATA_PATH_WIDTH_16 0x08 110 #define IO_DATA_PATH_WIDTH_AUTO 0x10 111 112 /* For RequestIRQ and ReleaseIRQ */ 113 typedef struct irq_req_t { 114 u_int Attributes; 115 u_int AssignedIRQ; 116 u_int IRQInfo1, IRQInfo2; /* IRQInfo2 is ignored */ 117 void *Handler; 118 void *Instance; 119 } irq_req_t; 120 121 /* Attributes for RequestIRQ and ReleaseIRQ */ 122 #define IRQ_TYPE 0x03 123 #define IRQ_TYPE_EXCLUSIVE 0x00 124 #define IRQ_TYPE_TIME 0x01 125 #define IRQ_TYPE_DYNAMIC_SHARING 0x02 126 #define IRQ_FORCED_PULSE 0x04 127 #define IRQ_FIRST_SHARED 0x08 128 #define IRQ_HANDLE_PRESENT 0x10 129 #define IRQ_PULSE_ALLOCATED 0x100 130 131 /* Bits in IRQInfo1 field */ 132 #define IRQ_MASK 0x0f 133 #define IRQ_NMI_ID 0x01 134 #define IRQ_IOCK_ID 0x02 135 #define IRQ_BERR_ID 0x04 136 #define IRQ_VEND_ID 0x08 137 #define IRQ_INFO2_VALID 0x10 138 #define IRQ_LEVEL_ID 0x20 139 #define IRQ_PULSE_ID 0x40 140 #define IRQ_SHARE_ID 0x80 141 142 typedef struct eventmask_t { 143 u_int Attributes; 144 u_int EventMask; 145 } eventmask_t; 146 147 #define CONF_EVENT_MASK_VALID 0x01 148 149 /* Configuration registers present */ 150 #define PRESENT_OPTION 0x001 151 #define PRESENT_STATUS 0x002 152 #define PRESENT_PIN_REPLACE 0x004 153 #define PRESENT_COPY 0x008 154 #define PRESENT_EXT_STATUS 0x010 155 #define PRESENT_IOBASE_0 0x020 156 #define PRESENT_IOBASE_1 0x040 157 #define PRESENT_IOBASE_2 0x080 158 #define PRESENT_IOBASE_3 0x100 159 #define PRESENT_IOSIZE 0x200 160 161 /* For GetMemPage, MapMemPage */ 162 typedef struct memreq_t { 163 u_int CardOffset; 164 page_t Page; 165 } memreq_t; 166 167 /* For ModifyWindow */ 168 typedef struct modwin_t { 169 u_int Attributes; 170 u_int AccessSpeed; 171 } modwin_t; 172 173 /* For RequestWindow */ 174 typedef struct win_req_t { 175 u_int Attributes; 176 u_long Base; 177 u_int Size; 178 u_int AccessSpeed; 179 } win_req_t; 180 181 /* Attributes for RequestWindow */ 182 #define WIN_ADDR_SPACE 0x0001 183 #define WIN_ADDR_SPACE_MEM 0x0000 184 #define WIN_ADDR_SPACE_IO 0x0001 185 #define WIN_MEMORY_TYPE 0x0002 186 #define WIN_MEMORY_TYPE_CM 0x0000 187 #define WIN_MEMORY_TYPE_AM 0x0002 188 #define WIN_ENABLE 0x0004 189 #define WIN_DATA_WIDTH 0x0018 190 #define WIN_DATA_WIDTH_8 0x0000 191 #define WIN_DATA_WIDTH_16 0x0008 192 #define WIN_DATA_WIDTH_32 0x0010 193 #define WIN_PAGED 0x0020 194 #define WIN_SHARED 0x0040 195 #define WIN_FIRST_SHARED 0x0080 196 #define WIN_USE_WAIT 0x0100 197 #define WIN_STRICT_ALIGN 0x0200 198 #define WIN_MAP_BELOW_1MB 0x0400 199 #define WIN_PREFETCH 0x0800 200 #define WIN_CACHEABLE 0x1000 201 #define WIN_BAR_MASK 0xe000 202 #define WIN_BAR_SHIFT 13 203 204 typedef struct error_info_t { 205 int func; 206 int retcode; 207 } error_info_t; 208 209 /* Flag to bind to all functions */ 210 #define BIND_FN_ALL 0xff 211 212 /* Events */ 213 #define CS_EVENT_PRI_LOW 0 214 #define CS_EVENT_PRI_HIGH 1 215 216 #define CS_EVENT_WRITE_PROTECT 0x000001 217 #define CS_EVENT_CARD_LOCK 0x000002 218 #define CS_EVENT_CARD_INSERTION 0x000004 219 #define CS_EVENT_CARD_REMOVAL 0x000008 220 #define CS_EVENT_BATTERY_DEAD 0x000010 221 #define CS_EVENT_BATTERY_LOW 0x000020 222 #define CS_EVENT_READY_CHANGE 0x000040 223 #define CS_EVENT_CARD_DETECT 0x000080 224 #define CS_EVENT_RESET_REQUEST 0x000100 225 #define CS_EVENT_RESET_PHYSICAL 0x000200 226 #define CS_EVENT_CARD_RESET 0x000400 227 #define CS_EVENT_REGISTRATION_COMPLETE 0x000800 228 #define CS_EVENT_PM_SUSPEND 0x002000 229 #define CS_EVENT_PM_RESUME 0x004000 230 #define CS_EVENT_INSERTION_REQUEST 0x008000 231 #define CS_EVENT_EJECTION_REQUEST 0x010000 232 #define CS_EVENT_MTD_REQUEST 0x020000 233 #define CS_EVENT_ERASE_COMPLETE 0x040000 234 #define CS_EVENT_REQUEST_ATTENTION 0x080000 235 #define CS_EVENT_CB_DETECT 0x100000 236 #define CS_EVENT_3VCARD 0x200000 237 #define CS_EVENT_XVCARD 0x400000 238 239 #endif /* _LINUX_CS_H */ 240