ss.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:4k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * ss.h 1.28 2000/06/12 21:55:40
  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.  * <dahinds@users.sourceforge.net>.  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 which
  20.  * 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. #ifndef _LINUX_SS_H
  30. #define _LINUX_SS_H
  31. #include <pcmcia/cs_types.h>
  32. /* Definitions for card status flags for GetStatus */
  33. #define SS_WRPROT 0x0001
  34. #define SS_CARDLOCK 0x0002
  35. #define SS_EJECTION 0x0004
  36. #define SS_INSERTION 0x0008
  37. #define SS_BATDEAD 0x0010
  38. #define SS_BATWARN 0x0020
  39. #define SS_READY 0x0040
  40. #define SS_DETECT 0x0080
  41. #define SS_POWERON 0x0100
  42. #define SS_GPI 0x0200
  43. #define SS_STSCHG 0x0400
  44. #define SS_CARDBUS 0x0800
  45. #define SS_3VCARD 0x1000
  46. #define SS_XVCARD 0x2000
  47. #define SS_PENDING 0x4000
  48. /* for InquireSocket */
  49. typedef struct socket_cap_t {
  50.     u_int features;
  51.     u_int irq_mask;
  52.     u_int map_size;
  53.     ioaddr_t io_offset;
  54.     u_char pci_irq;
  55.     struct pci_dev *cb_dev;
  56.     struct bus_operations *bus;
  57. } socket_cap_t;
  58. /* InquireSocket capabilities */
  59. #define SS_CAP_PAGE_REGS 0x0001
  60. #define SS_CAP_VIRTUAL_BUS 0x0002
  61. #define SS_CAP_MEM_ALIGN 0x0004
  62. #define SS_CAP_STATIC_MAP 0x0008
  63. #define SS_CAP_PCCARD 0x4000
  64. #define SS_CAP_CARDBUS 0x8000
  65. /* for GetSocket, SetSocket */
  66. typedef struct socket_state_t {
  67.     u_int flags;
  68.     u_int csc_mask;
  69.     u_char Vcc, Vpp;
  70.     u_char io_irq;
  71. } socket_state_t;
  72. extern socket_state_t dead_socket;
  73. /* Socket configuration flags */
  74. #define SS_PWR_AUTO 0x0010
  75. #define SS_IOCARD 0x0020
  76. #define SS_RESET 0x0040
  77. #define SS_DMA_MODE 0x0080
  78. #define SS_SPKR_ENA 0x0100
  79. #define SS_OUTPUT_ENA 0x0200
  80. #define SS_DEBOUNCED 0x0400 /* Tell driver that the debounce delay has ended */
  81. #define SS_ZVCARD 0x0800
  82. /* Flags for I/O port and memory windows */
  83. #define MAP_ACTIVE 0x01
  84. #define MAP_16BIT 0x02
  85. #define MAP_AUTOSZ 0x04
  86. #define MAP_0WS 0x08
  87. #define MAP_WRPROT 0x10
  88. #define MAP_ATTRIB 0x20
  89. #define MAP_USE_WAIT 0x40
  90. #define MAP_PREFETCH 0x80
  91. /* Use this just for bridge windows */
  92. #define MAP_IOSPACE 0x20
  93. typedef struct pccard_io_map {
  94.     u_char map;
  95.     u_char flags;
  96.     u_short speed;
  97.     ioaddr_t start, stop;
  98. } pccard_io_map;
  99. typedef struct pccard_mem_map {
  100.     u_char map;
  101.     u_char flags;
  102.     u_short speed;
  103.     u_long sys_start, sys_stop;
  104.     u_int card_start;
  105. } pccard_mem_map;
  106. typedef struct cb_bridge_map {
  107.     u_char map;
  108.     u_char flags;
  109.     u_int start, stop;
  110. } cb_bridge_map;
  111. /*
  112.  * Socket operations.
  113.  */
  114. struct pccard_operations {
  115. int (*init)(unsigned int sock);
  116. int (*suspend)(unsigned int sock);
  117. int (*register_callback)(unsigned int sock, void (*handler)(void *, unsigned int), void * info);
  118. int (*inquire_socket)(unsigned int sock, socket_cap_t *cap);
  119. int (*get_status)(unsigned int sock, u_int *value);
  120. int (*get_socket)(unsigned int sock, socket_state_t *state);
  121. int (*set_socket)(unsigned int sock, socket_state_t *state);
  122. int (*get_io_map)(unsigned int sock, struct pccard_io_map *io);
  123. int (*set_io_map)(unsigned int sock, struct pccard_io_map *io);
  124. int (*get_mem_map)(unsigned int sock, struct pccard_mem_map *mem);
  125. int (*set_mem_map)(unsigned int sock, struct pccard_mem_map *mem);
  126. void (*proc_setup)(unsigned int sock, struct proc_dir_entry *base);
  127. };
  128. /*
  129.  *  Calls to set up low-level "Socket Services" drivers
  130.  */
  131. extern int register_ss_entry(int nsock, struct pccard_operations *ops);
  132. extern void unregister_ss_entry(struct pccard_operations *ops);
  133. #endif /* _LINUX_SS_H */