linux/include/pcmcia/cs.h
<<
>>
Prefs
   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 */
  19typedef 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
  36typedef 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 */
  49typedef 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 */
  57typedef 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 */
  70typedef 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 */
  93typedef 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 */
 113typedef 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
 142typedef 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 */
 162typedef struct memreq_t {
 163    u_int       CardOffset;
 164    page_t      Page;
 165} memreq_t;
 166
 167/* For ModifyWindow */
 168typedef struct modwin_t {
 169    u_int       Attributes;
 170    u_int       AccessSpeed;
 171} modwin_t;
 172
 173/* For RequestWindow */
 174typedef 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
 204typedef 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