Mac OS 9
PCCardAdapterPlugin.h
Go to the documentation of this file.
1 
20 #ifndef __PCCARDADAPTERPLUGIN__
21 #define __PCCARDADAPTERPLUGIN__
22 
23 #ifndef __MACTYPES__
24 #include <MacTypes.h>
25 #endif
26 
27 #ifndef __NAMEREGISTRY__
28 #include <NameRegistry.h>
29 #endif
30 
31 #ifndef __INTERRUPTS__
32 #include <Interrupts.h>
33 #endif
34 
35 #ifndef __PCCARD__
36 #include <PCCard.h>
37 #endif
38 
39 #if PRAGMA_ONCE
40 #pragma once
41 #endif
42 
43 #ifdef __cplusplus
44 extern "C"
45 {
46 #endif
47 
48 #if PRAGMA_IMPORT
49 #pragma import on
50 #endif
51 
52 #if PRAGMA_STRUCT_ALIGN
53 #pragma options align = power
54 #elif PRAGMA_STRUCT_PACKPUSH
55 #pragma pack(push, 2)
56 #elif PRAGMA_STRUCT_PACK
57 #pragma pack(2)
58 #endif
59 
60  /*------------------------------------------------------------------------------------
61  Types
62  ------------------------------------------------------------------------------------*/
63  /* Interrupt Status Change bits*/
64 
65  enum
66  {
67  kSCBatteryDead = 0x01, /* Battery Dead Status Change*/
68  kSCBatteryLow = 0x02, /* Battery Warning Status Change*/
69  kSCReady = 0x04, /* Ready Status Change*/
70  kSCCardDetect = 0x08, /* Card Detect Status Change*/
71  kSCCardEjected = 0x10, /* Card Ejected*/
72  kSCStatusChange = 0x20, /* PC Card Status Change Signal Asserted*/
73  kSCRingIndicate = 0x40 /* PC Card Ring Indicate Signal Asserted*/
74  };
75 
76  /* IRQ bits */
77  enum
78  {
79  kIRQLevelMask = 0x1F,
80  kIRQInvalid = 0x20,
81  kIRQHigh = 0x40,
82  kIRQEnable = 0x80
83  };
84 
85  /* bits for adapter characteristics flags*/
86 
87  enum
88  {
89  SS_ADPT_FLG_IND = 0x01, /* indicators for write-protect, card lock,*/
90  /* battery status, busy status, and XIP*/
91  /* are shared for all sockets*/
92  SS_ADPT_FLG_PWR = 0x02, /* if set indicates that the sockets*/
93  /* share the same power control*/
94  SS_ADPT_FLG_DBW = 0x04, /* all windows on the adapter must use*/
95  /* the same Data Bus Width*/
96  SS_ADPT_FLG_CARDBUS = 0x08, /* all sockets are CardBus PC Card capable*/
97  SS_ADPT_FLG_DMA = 0x10, /* the adapter has DMA capability*/
98  /* bits for adapter power characteristics*/
99  SS_ADPT_FLG_V33 = 0x20, /* adapter supports 3.3 volt power to socket*/
100  SS_ADPT_FLG_V50 = 0x40, /* adapter supports 5.0 volt power to socket*/
101  SS_ADPT_FLG_V12 = 0x80 /* adapter supports 12.0 volt power to socket*/
102  };
103 
104 /*------------------------------------------------------------------------------------
105  Calls exported by the Family
106 ------------------------------------------------------------------------------------*/
107 #if CALL_NOT_IN_CARBON
116  OSStatus
117  CSReportStatusChange(const RegEntryID *adapterRef, PCCardSocket whichSocket,
118  PCCardSCEvents statusChange,
119  PCCardSocketStatus socketStatus);
120 
121 /*------------------------------------------------------------------------------------
122  Plugin Dispatch Table
123 ------------------------------------------------------------------------------------*/
124 #endif /* CALL_NOT_IN_CARBON */
125 
126  typedef CALLBACK_API_C(OSStatus,
127  SSValidateHardwareProc)(const RegEntryID *deviceID);
128  typedef CALLBACK_API_C(OSStatus, SSInitializeProc)(const RegEntryID *deviceID,
129  Boolean replacingOldDriver);
130  typedef CALLBACK_API_C(OSStatus, SSSuspendProc)(const RegEntryID *deviceID);
131  typedef CALLBACK_API_C(OSStatus, SSResumeProc)(const RegEntryID *deviceID);
132  typedef CALLBACK_API_C(OSStatus, SSFinalizeProc)(const RegEntryID *deviceID,
133  Boolean beingReplaced);
134  typedef CALLBACK_API_C(OSStatus, SSInquireAdapterProc)(
135  ItemCount *numberOfSockets, ItemCount *numberOfWindows,
136  ItemCount *numberOfBridgeWindow, PCCardAdapterCapabilities *capabilities);
137  typedef CALLBACK_API_C(OSStatus, SSInquireSocketProc)(
138  PCCardSocket socket, ItemCount *numberOfWindows,
139  PCCardSocketStatus *supportedSocketStatus,
140  PCCardSCEvents *supportedStatusChange);
141  typedef CALLBACK_API_C(OSStatus, SSGetSocketProc)(
142  PCCardSocket socket, PCCardVoltage *Vcc, PCCardVoltage *Vpp,
143  PCCardVoltage *Vs, PCCardInterfaceType *socketIF,
144  PCCardCustomInterfaceID *customIFID, PCCardSocketStatus *socketStatus,
145  PCCardSCEvents *SCEventsMask, PCCardIRQ *IRQ, PCCardDMA *DMA);
146  typedef CALLBACK_API_C(OSStatus, SSSetSocketProc)(
147  PCCardSocket socket, PCCardVoltage Vcc, PCCardVoltage Vpp,
148  PCCardInterfaceType socketIF, PCCardCustomInterfaceID customIFID,
149  PCCardSocketStatus statusReset, PCCardSCEvents SCEventsMask, PCCardIRQ IRQ,
150  PCCardDMA DMA);
151  typedef CALLBACK_API_C(OSStatus, SSResetSocketProc)(PCCardSocket socket);
152  typedef CALLBACK_API_C(OSStatus,
153  SSGetStatusProc)(PCCardSocket socket,
154  PCCardSocketStatus *currentStatus,
155  PCCardSocketStatus *changedStatus);
156  typedef CALLBACK_API_C(OSStatus, SSInquireWindowProc)(
157  PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState,
158  PCCardWindowSize *windowSize, PCCardWindowAlign *windowAlign);
159  typedef CALLBACK_API_C(OSStatus, SSGetWindowProc)(
160  PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState,
161  PhysicalAddress *startAddress, PCCardWindowSize *windowSize,
162  PCCardWindowOffset *windowOffset, PCCardAccessSpeed *memSpeed);
163  typedef CALLBACK_API_C(OSStatus, SSSetWindowProc)(
164  PCCardSocket socket, PCCardWindow window, PCCardWindowState windowState,
165  PhysicalAddress startAddress, PCCardWindowSize windowSize,
166  PCCardWindowOffset windowOffset, PCCardAccessSpeed memSpeed);
167  typedef CALLBACK_API_C(OSStatus,
168  SSGetWindowOffsetProc)(PCCardSocket *socket,
169  PCCardWindow window,
170  PCCardWindowState *windowState,
171  PCCardWindowOffset *windowOffset);
172  typedef CALLBACK_API_C(OSStatus,
173  SSSetWindowOffsetProc)(PCCardSocket socket,
174  PCCardWindow window,
175  PCCardWindowState windowState,
176  PCCardWindowOffset windowOffset);
177  typedef CALLBACK_API_C(OSStatus, SSInquireBridgeWindowProc)(
178  PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState,
179  PCCardWindowSize *windowSize, PCCardWindowAlign *windowAlign);
180  typedef CALLBACK_API_C(OSStatus, SSGetBridgeWindowProc)(
181  PCCardSocket *socket, PCCardWindow window, PCCardWindowState *windowState,
182  PhysicalAddress *startAddress, PCCardWindowSize *windowSize);
183  typedef CALLBACK_API_C(OSStatus, SSSetBridgeWindowProc)(
184  PCCardSocket socket, PCCardWindow window, PCCardWindowState windowState,
185  PhysicalAddress startAddress, PCCardWindowSize windowSize);
186  typedef CALLBACK_API_C(OSStatus, SSGetInterruptSetMemberProc)(
187  PCCardSocket socket, InterruptSetMember *interruptSetMember);
188  typedef CALLBACK_API_C(OSStatus, SSEjectCardProc)(PCCardSocket socket);
189  enum
190  {
191  kServiceTypePCCardAdapter = FOUR_CHAR_CODE('sock'),
192  kPCCardAdapterPluginVersion = 0x00000001,
193  kPCCardAdapterPluginCurrentVersion = kPCCardAdapterPluginVersion
194  };
195 
197  {
198  UInt32 version;
199  UInt32 reserved1;
200  UInt32 reserved2;
201  UInt32 reserved3;
202  };
205  {
207 
208  SSValidateHardwareProc validateHardware;
209 
210  SSInitializeProc initialize;
211  SSSuspendProc suspend;
212  SSResumeProc resume;
213  SSFinalizeProc finalize;
214 
215  SSInquireAdapterProc inquireAdapter;
216  SSInquireSocketProc inquireSocket;
217  SSGetSocketProc getSocket;
218  SSSetSocketProc setSocket;
219  SSResetSocketProc resetSocket;
220  SSGetStatusProc getStatus;
221  SSInquireWindowProc inquireWindow;
222  SSGetWindowProc getWindow;
223  SSSetWindowProc setWindow;
224  SSGetWindowOffsetProc getWindowOffset;
225  SSSetWindowOffsetProc setWindowOffset;
226  SSInquireBridgeWindowProc inquireBridgeWindow;
227  SSGetBridgeWindowProc getBridgeWindow;
228  SSSetBridgeWindowProc setBridgeWindow;
229  SSGetInterruptSetMemberProc getInterruptSetMember;
230  SSEjectCardProc ejectCard;
231  };
232  typedef struct PCCardAdapterPluginDispatchTable
235 
236 #if PRAGMA_STRUCT_ALIGN
237 #pragma options align = reset
238 #elif PRAGMA_STRUCT_PACKPUSH
239 #pragma pack(pop)
240 #elif PRAGMA_STRUCT_PACK
241 #pragma pack()
242 #endif
243 
244 #ifdef PRAGMA_IMPORT_OFF
245 #pragma import off
246 #elif PRAGMA_IMPORT
247 #pragma import reset
248 #endif
249 
250 #ifdef __cplusplus
251 }
252 #endif
253 
254 #endif /* __PCCARDADAPTERPLUGIN__ */
Public Interface to the Interrupt Manager.
Basic Macintosh data types.
unsigned char Boolean
Definition: MacTypes.h:318
NameRegistry Interfaces.
OSStatus CSReportStatusChange(const RegEntryID *adapterRef, PCCardSocket whichSocket, PCCardSCEvents statusChange, PCCardSocketStatus socketStatus)
PC Card Family Programming interface.
Definition: Components.h:266
Definition: Quickdraw.h:1648
Definition: DriverServices.h:1084
Definition: PCCardAdapterPlugin.h:205
Definition: PCCardAdapterPlugin.h:197
Definition: NameRegistry.h:62