Annotation of Gnu-Mach/linux/pcmcia-cs/include/pcmcia/cs.h, revision 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.