Annotation of Gnu-Mach/linux/pcmcia-cs/include/pcmcia/cs.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * cs.h 1.74 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_CS_H
                     31: #define _LINUX_CS_H
                     32: 
                     33: /* For AccessConfigurationRegister */
                     34: typedef struct conf_reg_t {
                     35:     u_char     Function;
                     36:     u_int      Action;
                     37:     off_t      Offset;
                     38:     u_int      Value;
                     39: } conf_reg_t;
                     40: 
                     41: /* Actions */
                     42: #define CS_READ                1
                     43: #define CS_WRITE       2
                     44: 
                     45: /* for AdjustResourceInfo */
                     46: typedef struct adjust_t {
                     47:     u_int      Action;
                     48:     u_int      Resource;
                     49:     u_int      Attributes;
                     50:     union {
                     51:        struct memory {
                     52:            u_long      Base;
                     53:            u_long      Size;
                     54:        } memory;
                     55:        struct io {
                     56:            ioaddr_t    BasePort;
                     57:            ioaddr_t    NumPorts;
                     58:            u_int       IOAddrLines;
                     59:        } io;
                     60:        struct irq {
                     61:            u_int       IRQ;
                     62:        } irq;
                     63:     } resource;
                     64: } adjust_t;
                     65: 
                     66: /* Action field */
                     67: #define REMOVE_MANAGED_RESOURCE                1
                     68: #define ADD_MANAGED_RESOURCE           2
                     69: #define GET_FIRST_MANAGED_RESOURCE     3
                     70: #define GET_NEXT_MANAGED_RESOURCE      4
                     71: /* Resource field */
                     72: #define RES_MEMORY_RANGE               1
                     73: #define RES_IO_RANGE                   2
                     74: #define RES_IRQ                                3
                     75: /* Attribute field */
                     76: #define RES_IRQ_TYPE                   0x03
                     77: #define RES_IRQ_TYPE_EXCLUSIVE         0
                     78: #define RES_IRQ_TYPE_TIME              1
                     79: #define RES_IRQ_TYPE_DYNAMIC           2
                     80: #define RES_IRQ_CSC                    0x04
                     81: #define RES_SHARED                     0x08
                     82: #define RES_RESERVED                   0x10
                     83: #define RES_ALLOCATED                  0x20
                     84: #define RES_REMOVED                    0x40
                     85: 
                     86: typedef struct servinfo_t {
                     87:     char       Signature[2];
                     88:     u_int      Count;
                     89:     u_int      Revision;
                     90:     u_int      CSLevel;
                     91:     char       *VendorString;
                     92: } servinfo_t;
                     93: 
                     94: typedef struct event_callback_args_t {
                     95:     client_handle_t client_handle;
                     96:     void       *info;
                     97:     void       *mtdrequest;
                     98:     void       *buffer;
                     99:     void       *misc;
                    100:     void       *client_data;
                    101:     struct bus_operations *bus;
                    102: } event_callback_args_t;
                    103: 
                    104: /* for GetConfigurationInfo */
                    105: typedef struct config_info_t {
                    106:     u_char     Function;
                    107:     u_int      Attributes;
                    108:     u_int      Vcc, Vpp1, Vpp2;
                    109:     u_int      IntType;
                    110:     u_int      ConfigBase;
                    111:     u_char     Status, Pin, Copy, Option, ExtStatus;
                    112:     u_int      Present;
                    113:     u_int      CardValues;
                    114:     u_int      AssignedIRQ;
                    115:     u_int      IRQAttributes;
                    116:     ioaddr_t   BasePort1;
                    117:     ioaddr_t   NumPorts1;
                    118:     u_int      Attributes1;
                    119:     ioaddr_t   BasePort2;
                    120:     ioaddr_t   NumPorts2;
                    121:     u_int      Attributes2;
                    122:     u_int      IOAddrLines;
                    123: } config_info_t;
                    124: 
                    125: /* For CardValues field */
                    126: #define CV_OPTION_VALUE                0x01
                    127: #define CV_STATUS_VALUE                0x02
                    128: #define CV_PIN_REPLACEMENT     0x04
                    129: #define CV_COPY_VALUE          0x08
                    130: #define CV_EXT_STATUS          0x10
                    131: 
                    132: /* For GetFirst/NextClient */
                    133: typedef struct client_req_t {
                    134:     socket_t   Socket;
                    135:     u_int      Attributes;
                    136: } client_req_t;
                    137: 
                    138: #define CLIENT_THIS_SOCKET     0x01
                    139: 
                    140: /* For RegisterClient */
                    141: typedef struct client_reg_t {
                    142:     dev_info_t *dev_info;
                    143:     u_int      Attributes;
                    144:     u_int      EventMask;
                    145:     int                (*event_handler)(event_t event, int priority,
                    146:                                 event_callback_args_t *);
                    147:     event_callback_args_t event_callback_args;
                    148:     u_int      Version;
                    149: } client_reg_t;
                    150: 
                    151: /* ModifyConfiguration */
                    152: typedef struct modconf_t {
                    153:     u_int      Attributes;
                    154:     u_int      Vcc, Vpp1, Vpp2;
                    155: } modconf_t;
                    156: 
                    157: /* Attributes for ModifyConfiguration */
                    158: #define CONF_IRQ_CHANGE_VALID  0x100
                    159: #define CONF_VCC_CHANGE_VALID  0x200
                    160: #define CONF_VPP1_CHANGE_VALID 0x400
                    161: #define CONF_VPP2_CHANGE_VALID 0x800
                    162: 
                    163: /* For RequestConfiguration */
                    164: typedef struct config_req_t {
                    165:     u_int      Attributes;
                    166:     u_int      Vcc, Vpp1, Vpp2;
                    167:     u_int      IntType;
                    168:     u_int      ConfigBase;
                    169:     u_char     Status, Pin, Copy, ExtStatus;
                    170:     u_char     ConfigIndex;
                    171:     u_int      Present;
                    172: } config_req_t;
                    173: 
                    174: /* Attributes for RequestConfiguration */
                    175: #define CONF_ENABLE_IRQ                0x01
                    176: #define CONF_ENABLE_DMA                0x02
                    177: #define CONF_ENABLE_SPKR       0x04
                    178: #define CONF_VALID_CLIENT      0x100
                    179: 
                    180: /* IntType field */
                    181: #define INT_MEMORY             0x01
                    182: #define INT_MEMORY_AND_IO      0x02
                    183: #define INT_CARDBUS            0x04
                    184: #define INT_ZOOMED_VIDEO       0x08
                    185: 
                    186: /* For RequestIO and ReleaseIO */
                    187: typedef struct io_req_t {
                    188:     ioaddr_t   BasePort1;
                    189:     ioaddr_t   NumPorts1;
                    190:     u_int      Attributes1;
                    191:     ioaddr_t   BasePort2;
                    192:     ioaddr_t   NumPorts2;
                    193:     u_int      Attributes2;
                    194:     u_int      IOAddrLines;
                    195: } io_req_t;
                    196: 
                    197: /* Attributes for RequestIO and ReleaseIO */
                    198: #define IO_SHARED              0x01
                    199: #define IO_FIRST_SHARED                0x02
                    200: #define IO_FORCE_ALIAS_ACCESS  0x04
                    201: #define IO_DATA_PATH_WIDTH     0x18
                    202: #define IO_DATA_PATH_WIDTH_8   0x00
                    203: #define IO_DATA_PATH_WIDTH_16  0x08
                    204: #define IO_DATA_PATH_WIDTH_AUTO        0x10
                    205: 
                    206: /* For RequestIRQ and ReleaseIRQ */
                    207: typedef struct irq_req_t {
                    208:     u_int      Attributes;
                    209:     u_int      AssignedIRQ;
                    210:     u_int      IRQInfo1, IRQInfo2;
                    211:     void       *Handler;
                    212:     void       *Instance;
                    213: } irq_req_t;
                    214: 
                    215: /* Attributes for RequestIRQ and ReleaseIRQ */
                    216: #define IRQ_TYPE                       0x03
                    217: #define IRQ_TYPE_EXCLUSIVE             0x00
                    218: #define IRQ_TYPE_TIME                  0x01
                    219: #define IRQ_TYPE_DYNAMIC_SHARING       0x02
                    220: #define IRQ_FORCED_PULSE               0x04
                    221: #define IRQ_FIRST_SHARED               0x08
                    222: #define IRQ_HANDLE_PRESENT             0x10
                    223: #define IRQ_PULSE_ALLOCATED            0x100
                    224: 
                    225: /* Bits in IRQInfo1 field */
                    226: #define IRQ_MASK               0x0f
                    227: #define IRQ_NMI_ID             0x01
                    228: #define IRQ_IOCK_ID            0x02
                    229: #define IRQ_BERR_ID            0x04
                    230: #define IRQ_VEND_ID            0x08
                    231: #define IRQ_INFO2_VALID                0x10
                    232: #define IRQ_LEVEL_ID           0x20
                    233: #define IRQ_PULSE_ID           0x40
                    234: #define IRQ_SHARE_ID           0x80
                    235: 
                    236: typedef struct eventmask_t {
                    237:     u_int      Attributes;
                    238:     u_int      EventMask;
                    239: } eventmask_t;
                    240: 
                    241: #define CONF_EVENT_MASK_VALID  0x01
                    242: 
                    243: /* Configuration registers present */
                    244: #define PRESENT_OPTION         0x001
                    245: #define PRESENT_STATUS         0x002
                    246: #define PRESENT_PIN_REPLACE    0x004
                    247: #define PRESENT_COPY           0x008
                    248: #define PRESENT_EXT_STATUS     0x010
                    249: #define PRESENT_IOBASE_0       0x020
                    250: #define PRESENT_IOBASE_1       0x040
                    251: #define PRESENT_IOBASE_2       0x080
                    252: #define PRESENT_IOBASE_3       0x100
                    253: #define PRESENT_IOSIZE         0x200
                    254: 
                    255: /* For GetMemPage, MapMemPage */
                    256: typedef struct memreq_t {
                    257:     u_int      CardOffset;
                    258:     page_t     Page;
                    259: } memreq_t;
                    260: 
                    261: /* For ModifyWindow */
                    262: typedef struct modwin_t {
                    263:     u_int      Attributes;
                    264:     u_int      AccessSpeed;
                    265: } modwin_t;
                    266: 
                    267: /* For RequestWindow */
                    268: typedef struct win_req_t {
                    269:     u_int      Attributes;
                    270:     u_long     Base;
                    271:     u_int      Size;
                    272:     u_int      AccessSpeed;
                    273: } win_req_t;
                    274: 
                    275: /* Attributes for RequestWindow */
                    276: #define WIN_ADDR_SPACE         0x0001
                    277: #define WIN_ADDR_SPACE_MEM     0x0000
                    278: #define WIN_ADDR_SPACE_IO      0x0001
                    279: #define WIN_MEMORY_TYPE                0x0002
                    280: #define WIN_MEMORY_TYPE_CM     0x0000
                    281: #define WIN_MEMORY_TYPE_AM     0x0002
                    282: #define WIN_ENABLE             0x0004
                    283: #define WIN_DATA_WIDTH         0x0018
                    284: #define WIN_DATA_WIDTH_8       0x0000
                    285: #define WIN_DATA_WIDTH_16      0x0008
                    286: #define WIN_DATA_WIDTH_32      0x0010
                    287: #define WIN_PAGED              0x0020
                    288: #define WIN_SHARED             0x0040
                    289: #define WIN_FIRST_SHARED       0x0080
                    290: #define WIN_USE_WAIT           0x0100
                    291: #define WIN_STRICT_ALIGN       0x0200
                    292: #define WIN_MAP_BELOW_1MB      0x0400
                    293: #define WIN_PREFETCH           0x0800
                    294: #define WIN_CACHEABLE          0x1000
                    295: #define WIN_BAR_MASK           0xe000
                    296: #define WIN_BAR_SHIFT          13
                    297: 
                    298: /* Attributes for RegisterClient */
                    299: #define INFO_MASTER_CLIENT     0x01
                    300: #define INFO_IO_CLIENT         0x02
                    301: #define INFO_MTD_CLIENT                0x04
                    302: #define INFO_MEM_CLIENT                0x08
                    303: #define MAX_NUM_CLIENTS                3
                    304: 
                    305: #define INFO_CARD_SHARE                0x10
                    306: #define INFO_CARD_EXCL         0x20
                    307: 
                    308: typedef struct cs_status_t {
                    309:     u_char     Function;
                    310:     event_t    CardState;
                    311:     event_t    SocketState;
                    312: } cs_status_t;
                    313: 
                    314: typedef struct error_info_t {
                    315:     int                func;
                    316:     int                retcode;
                    317: } error_info_t;
                    318: 
                    319: /* Special stuff for binding drivers to sockets */
                    320: typedef struct bind_req_t {
                    321:     socket_t   Socket;
                    322:     u_char     Function;
                    323:     dev_info_t *dev_info;
                    324: } bind_req_t;
                    325: 
                    326: /* Flag to bind to all functions */
                    327: #define BIND_FN_ALL    0xff
                    328: 
                    329: typedef struct mtd_bind_t {
                    330:     socket_t   Socket;
                    331:     u_int      Attributes;
                    332:     u_int      CardOffset;
                    333:     dev_info_t *dev_info;
                    334: } mtd_bind_t;
                    335: 
                    336: /* Events */
                    337: #define CS_EVENT_PRI_LOW               0
                    338: #define CS_EVENT_PRI_HIGH              1
                    339: 
                    340: #define CS_EVENT_WRITE_PROTECT         0x000001
                    341: #define CS_EVENT_CARD_LOCK             0x000002
                    342: #define CS_EVENT_CARD_INSERTION                0x000004
                    343: #define CS_EVENT_CARD_REMOVAL          0x000008
                    344: #define CS_EVENT_BATTERY_DEAD          0x000010
                    345: #define CS_EVENT_BATTERY_LOW           0x000020
                    346: #define CS_EVENT_READY_CHANGE          0x000040
                    347: #define CS_EVENT_CARD_DETECT           0x000080
                    348: #define CS_EVENT_RESET_REQUEST         0x000100
                    349: #define CS_EVENT_RESET_PHYSICAL                0x000200
                    350: #define CS_EVENT_CARD_RESET            0x000400
                    351: #define CS_EVENT_REGISTRATION_COMPLETE 0x000800
                    352: #define CS_EVENT_RESET_COMPLETE                0x001000
                    353: #define CS_EVENT_PM_SUSPEND            0x002000
                    354: #define CS_EVENT_PM_RESUME             0x004000
                    355: #define CS_EVENT_INSERTION_REQUEST     0x008000
                    356: #define CS_EVENT_EJECTION_REQUEST      0x010000
                    357: #define CS_EVENT_MTD_REQUEST           0x020000
                    358: #define CS_EVENT_ERASE_COMPLETE                0x040000
                    359: #define CS_EVENT_REQUEST_ATTENTION     0x080000
                    360: #define CS_EVENT_CB_DETECT             0x100000
                    361: #define CS_EVENT_3VCARD                        0x200000
                    362: #define CS_EVENT_XVCARD                        0x400000
                    363: 
                    364: /* Return codes */
                    365: #define CS_SUCCESS             0x00
                    366: #define CS_BAD_ADAPTER         0x01
                    367: #define CS_BAD_ATTRIBUTE       0x02
                    368: #define CS_BAD_BASE            0x03
                    369: #define CS_BAD_EDC             0x04
                    370: #define CS_BAD_IRQ             0x06
                    371: #define CS_BAD_OFFSET          0x07
                    372: #define CS_BAD_PAGE            0x08
                    373: #define CS_READ_FAILURE                0x09
                    374: #define CS_BAD_SIZE            0x0a
                    375: #define CS_BAD_SOCKET          0x0b
                    376: #define CS_BAD_TYPE            0x0d
                    377: #define CS_BAD_VCC             0x0e
                    378: #define CS_BAD_VPP             0x0f
                    379: #define CS_BAD_WINDOW          0x11
                    380: #define CS_WRITE_FAILURE       0x12
                    381: #define CS_NO_CARD             0x14
                    382: #define CS_UNSUPPORTED_FUNCTION        0x15
                    383: #define CS_UNSUPPORTED_MODE    0x16
                    384: #define CS_BAD_SPEED           0x17
                    385: #define CS_BUSY                        0x18
                    386: #define CS_GENERAL_FAILURE     0x19
                    387: #define CS_WRITE_PROTECTED     0x1a
                    388: #define CS_BAD_ARG_LENGTH      0x1b
                    389: #define CS_BAD_ARGS            0x1c
                    390: #define CS_CONFIGURATION_LOCKED        0x1d
                    391: #define CS_IN_USE              0x1e
                    392: #define CS_NO_MORE_ITEMS       0x1f
                    393: #define CS_OUT_OF_RESOURCE     0x20
                    394: #define CS_BAD_HANDLE          0x21
                    395: 
                    396: #define CS_BAD_TUPLE           0x40
                    397: 
                    398: #ifdef __KERNEL__
                    399: 
                    400: /*
                    401:  *  Calls to set up low-level "Socket Services" drivers
                    402:  */
                    403: 
                    404: typedef int (*ss_entry_t)(u_int sock, u_int cmd, void *arg);
                    405: extern int register_ss_entry(int nsock, ss_entry_t entry);
                    406: extern void unregister_ss_entry(ss_entry_t entry);
                    407: 
                    408: /*
                    409:  *  The main Card Services entry point
                    410:  */
                    411: 
                    412: enum service {
                    413:     AccessConfigurationRegister, AddSocketServices,
                    414:     AdjustResourceInfo, CheckEraseQueue, CloseMemory, CopyMemory,
                    415:     DeregisterClient, DeregisterEraseQueue, GetCardServicesInfo,
                    416:     GetClientInfo, GetConfigurationInfo, GetEventMask,
                    417:     GetFirstClient, GetFirstPartion, GetFirstRegion, GetFirstTuple,
                    418:     GetNextClient, GetNextPartition, GetNextRegion, GetNextTuple,
                    419:     GetStatus, GetTupleData, MapLogSocket, MapLogWindow, MapMemPage,
                    420:     MapPhySocket, MapPhyWindow, ModifyConfiguration, ModifyWindow,
                    421:     OpenMemory, ParseTuple, ReadMemory, RegisterClient,
                    422:     RegisterEraseQueue, RegisterMTD, RegisterTimer,
                    423:     ReleaseConfiguration, ReleaseExclusive, ReleaseIO, ReleaseIRQ,
                    424:     ReleaseSocketMask, ReleaseWindow, ReplaceSocketServices,
                    425:     RequestConfiguration, RequestExclusive, RequestIO, RequestIRQ,
                    426:     RequestSocketMask, RequestWindow, ResetCard, ReturnSSEntry,
                    427:     SetEventMask, SetRegion, ValidateCIS, VendorSpecific,
                    428:     WriteMemory, BindDevice, BindMTD, ReportError,
                    429:     SuspendCard, ResumeCard, EjectCard, InsertCard, ReplaceCIS,
                    430:     GetFirstWindow, GetNextWindow, GetMemPage
                    431: };
                    432: 
                    433: #ifdef IN_CARD_SERVICES
                    434: extern int CardServices(int func, void *a1, void *a2, void *a3);
                    435: #else
                    436: extern int CardServices(int func, ...);
                    437: #endif
                    438: 
                    439: #endif /* __KERNEL__ */
                    440: 
                    441: #endif /* _LINUX_CS_H */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.