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 */ 23typedef 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 40typedef 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 */ 53typedef 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 */ 61typedef 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 */ 74typedef 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_VALID_CLIENT 0x100 89 90/* IntType field */ 91#define INT_MEMORY 0x01 92#define INT_MEMORY_AND_IO 0x02 93#define INT_CARDBUS 0x04 94#define INT_ZOOMED_VIDEO 0x08 95 96/* For RequestIO and ReleaseIO */ 97typedef struct io_req_t { 98 u_int BasePort1; 99 u_int NumPorts1; 100 u_int Attributes1; 101 u_int BasePort2; 102 u_int NumPorts2; 103 u_int Attributes2; 104 u_int IOAddrLines; 105} io_req_t; 106 107/* Attributes for RequestIO and ReleaseIO */ 108#define IO_SHARED 0x01 109#define IO_FIRST_SHARED 0x02 110#define IO_FORCE_ALIAS_ACCESS 0x04 111#define IO_DATA_PATH_WIDTH 0x18 112#define IO_DATA_PATH_WIDTH_8 0x00 113#define IO_DATA_PATH_WIDTH_16 0x08 114#define IO_DATA_PATH_WIDTH_AUTO 0x10 115 116/* For RequestIRQ and ReleaseIRQ */ 117typedef struct irq_req_t { 118 u_int Attributes; 119 u_int AssignedIRQ; 120 irq_handler_t Handler; 121} irq_req_t; 122 123/* Attributes for RequestIRQ and ReleaseIRQ */ 124#define IRQ_TYPE 0x03 125#define IRQ_TYPE_EXCLUSIVE 0x00 126#define IRQ_TYPE_TIME 0x01 127#define IRQ_TYPE_DYNAMIC_SHARING 0x02 128#define IRQ_FORCED_PULSE 0x04 129#define IRQ_FIRST_SHARED 0x08 /* unused */ 130#define IRQ_HANDLE_PRESENT 0x10 /* unused */ 131#define IRQ_PULSE_ALLOCATED 0x100 132 133/* Bits in IRQInfo1 field */ 134#define IRQ_MASK 0x0f 135#define IRQ_NMI_ID 0x01 136#define IRQ_IOCK_ID 0x02 137#define IRQ_BERR_ID 0x04 138#define IRQ_VEND_ID 0x08 139#define IRQ_INFO2_VALID 0x10 140#define IRQ_LEVEL_ID 0x20 141#define IRQ_PULSE_ID 0x40 142#define IRQ_SHARE_ID 0x80 143 144typedef struct eventmask_t { 145 u_int Attributes; 146 u_int EventMask; 147} eventmask_t; 148 149#define CONF_EVENT_MASK_VALID 0x01 150 151/* Configuration registers present */ 152#define PRESENT_OPTION 0x001 153#define PRESENT_STATUS 0x002 154#define PRESENT_PIN_REPLACE 0x004 155#define PRESENT_COPY 0x008 156#define PRESENT_EXT_STATUS 0x010 157#define PRESENT_IOBASE_0 0x020 158#define PRESENT_IOBASE_1 0x040 159#define PRESENT_IOBASE_2 0x080 160#define PRESENT_IOBASE_3 0x100 161#define PRESENT_IOSIZE 0x200 162 163/* For GetMemPage, MapMemPage */ 164typedef struct memreq_t { 165 u_int CardOffset; 166 page_t Page; 167} memreq_t; 168 169/* For ModifyWindow */ 170typedef struct modwin_t { 171 u_int Attributes; 172 u_int AccessSpeed; 173} modwin_t; 174 175/* For RequestWindow */ 176typedef struct win_req_t { 177 u_int Attributes; 178 u_long Base; 179 u_int Size; 180 u_int AccessSpeed; 181} win_req_t; 182 183/* Attributes for RequestWindow */ 184#define WIN_ADDR_SPACE 0x0001 185#define WIN_ADDR_SPACE_MEM 0x0000 186#define WIN_ADDR_SPACE_IO 0x0001 187#define WIN_MEMORY_TYPE 0x0002 188#define WIN_MEMORY_TYPE_CM 0x0000 189#define WIN_MEMORY_TYPE_AM 0x0002 190#define WIN_ENABLE 0x0004 191#define WIN_DATA_WIDTH 0x0018 192#define WIN_DATA_WIDTH_8 0x0000 193#define WIN_DATA_WIDTH_16 0x0008 194#define WIN_DATA_WIDTH_32 0x0010 195#define WIN_PAGED 0x0020 196#define WIN_SHARED 0x0040 197#define WIN_FIRST_SHARED 0x0080 198#define WIN_USE_WAIT 0x0100 199#define WIN_STRICT_ALIGN 0x0200 200#define WIN_MAP_BELOW_1MB 0x0400 201#define WIN_PREFETCH 0x0800 202#define WIN_CACHEABLE 0x1000 203#define WIN_BAR_MASK 0xe000 204#define WIN_BAR_SHIFT 13 205 206typedef struct error_info_t { 207 int func; 208 int retcode; 209} error_info_t; 210 211/* Flag to bind to all functions */ 212#define BIND_FN_ALL 0xff 213 214/* Events */ 215#define CS_EVENT_PRI_LOW 0 216#define CS_EVENT_PRI_HIGH 1 217 218#define CS_EVENT_WRITE_PROTECT 0x000001 219#define CS_EVENT_CARD_LOCK 0x000002 220#define CS_EVENT_CARD_INSERTION 0x000004 221#define CS_EVENT_CARD_REMOVAL 0x000008 222#define CS_EVENT_BATTERY_DEAD 0x000010 223#define CS_EVENT_BATTERY_LOW 0x000020 224#define CS_EVENT_READY_CHANGE 0x000040 225#define CS_EVENT_CARD_DETECT 0x000080 226#define CS_EVENT_RESET_REQUEST 0x000100 227#define CS_EVENT_RESET_PHYSICAL 0x000200 228#define CS_EVENT_CARD_RESET 0x000400 229#define CS_EVENT_REGISTRATION_COMPLETE 0x000800 230#define CS_EVENT_PM_SUSPEND 0x002000 231#define CS_EVENT_PM_RESUME 0x004000 232#define CS_EVENT_INSERTION_REQUEST 0x008000 233#define CS_EVENT_EJECTION_REQUEST 0x010000 234#define CS_EVENT_MTD_REQUEST 0x020000 235#define CS_EVENT_ERASE_COMPLETE 0x040000 236#define CS_EVENT_REQUEST_ATTENTION 0x080000 237#define CS_EVENT_CB_DETECT 0x100000 238#define CS_EVENT_3VCARD 0x200000 239#define CS_EVENT_XVCARD 0x400000 240 241#endif /* _LINUX_CS_H */ 242

