~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/linux/i2o-dev.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * I2O user space accessible structures/APIs
  3  * 
  4  * (c) Copyright 1999, 2000 Red Hat Software
  5  *
  6  * This program is free software; you can redistribute it and/or 
  7  * modify it under the terms of the GNU General Public License 
  8  * as published by the Free Software Foundation; either version 
  9  * 2 of the License, or (at your option) any later version.  
 10  * 
 11  *************************************************************************
 12  *
 13  * This header file defines the I2O APIs that are available to both
 14  * the kernel and user level applications.  Kernel specific structures
 15  * are defined in i2o_osm. OSMs should include _only_ i2o_osm.h which
 16  * automatically includs this file.
 17  *
 18  */
 19 
 20 #ifndef _I2O_DEV_H
 21 #define _I2O_DEV_H
 22 
 23 /* How many controllers are we allowing */
 24 #define MAX_I2O_CONTROLLERS     32
 25 
 26 #include <linux/ioctl.h>
 27 
 28 /*
 29  * I2O Control IOCTLs and structures
 30  */
 31 #define I2O_MAGIC_NUMBER        'i'
 32 #define I2OGETIOPS              _IOR(I2O_MAGIC_NUMBER,0,u8[MAX_I2O_CONTROLLERS])
 33 #define I2OHRTGET               _IOWR(I2O_MAGIC_NUMBER,1,struct i2o_cmd_hrtlct)
 34 #define I2OLCTGET               _IOWR(I2O_MAGIC_NUMBER,2,struct i2o_cmd_hrtlct)
 35 #define I2OPARMSET              _IOWR(I2O_MAGIC_NUMBER,3,struct i2o_cmd_psetget)
 36 #define I2OPARMGET              _IOWR(I2O_MAGIC_NUMBER,4,struct i2o_cmd_psetget)
 37 #define I2OSWDL                 _IOWR(I2O_MAGIC_NUMBER,5,struct i2o_sw_xfer)
 38 #define I2OSWUL                 _IOWR(I2O_MAGIC_NUMBER,6,struct i2o_sw_xfer)
 39 #define I2OSWDEL                _IOWR(I2O_MAGIC_NUMBER,7,struct i2o_sw_xfer)
 40 #define I2OVALIDATE             _IOR(I2O_MAGIC_NUMBER,8,u32)
 41 #define I2OHTML                 _IOWR(I2O_MAGIC_NUMBER,9,struct i2o_html)
 42 #define I2OEVTREG               _IOW(I2O_MAGIC_NUMBER,10,struct i2o_evt_id)
 43 #define I2OEVTGET               _IOR(I2O_MAGIC_NUMBER,11,struct i2o_evt_info)
 44 
 45 struct i2o_cmd_hrtlct
 46 {
 47         unsigned int iop;       /* IOP unit number */
 48         void *resbuf;           /* Buffer for result */
 49         unsigned int *reslen;   /* Buffer length in bytes */
 50 };
 51 
 52 struct i2o_cmd_psetget
 53 {
 54         unsigned int iop;       /* IOP unit number */
 55         unsigned int tid;       /* Target device TID */
 56         void *opbuf;            /* Operation List buffer */
 57         unsigned int oplen;     /* Operation List buffer length in bytes */
 58         void *resbuf;           /* Result List buffer */
 59         unsigned int *reslen;   /* Result List buffer length in bytes */
 60 };
 61 
 62 struct i2o_sw_xfer
 63 {
 64         unsigned int iop;       /* IOP unit number */
 65         unsigned char flags;    /* Flags field */
 66         unsigned char sw_type;  /* Software type */
 67         unsigned int sw_id;     /* Software ID */
 68         void *buf;              /* Pointer to software buffer */
 69         unsigned int *swlen;    /* Length of software data */
 70         unsigned int *maxfrag;  /* Maximum fragment count */
 71         unsigned int *curfrag;  /* Current fragment count */
 72 };
 73 
 74 struct i2o_html
 75 {
 76         unsigned int iop;       /* IOP unit number */
 77         unsigned int tid;       /* Target device ID */
 78         unsigned int page;      /* HTML page */
 79         void *resbuf;           /* Buffer for reply HTML page */
 80         unsigned int *reslen;   /* Length in bytes of reply buffer */
 81         void *qbuf;             /* Pointer to HTTP query string */
 82         unsigned int qlen;      /* Length in bytes of query string buffer */
 83 };
 84 
 85 #define I2O_EVT_Q_LEN 32
 86 
 87 struct i2o_evt_id
 88 {
 89         unsigned int iop;
 90         unsigned int tid;
 91         unsigned int evt_mask;
 92 };
 93 
 94 /* Event data size = frame size - message header + evt indicator */
 95 #define I2O_EVT_DATA_SIZE 88
 96 
 97 struct i2o_evt_info
 98 {
 99         struct i2o_evt_id id;
100         unsigned char evt_data[I2O_EVT_DATA_SIZE];
101         unsigned int data_size;
102 };
103 
104 struct i2o_evt_get
105 {
106         struct i2o_evt_info info;
107         int pending;
108         int lost;
109 };
110 
111 
112 /**************************************************************************
113  * HRT related constants and structures
114  **************************************************************************/
115 #define I2O_BUS_LOCAL   0
116 #define I2O_BUS_ISA     1
117 #define I2O_BUS_EISA    2
118 #define I2O_BUS_MCA     3
119 #define I2O_BUS_PCI     4
120 #define I2O_BUS_PCMCIA  5
121 #define I2O_BUS_NUBUS   6
122 #define I2O_BUS_CARDBUS 7
123 #define I2O_BUS_UNKNOWN 0x80
124 
125 #ifndef __KERNEL__
126 
127 typedef unsigned char u8;
128 typedef unsigned short u16;
129 typedef unsigned int u32;
130 
131 #endif /* __KERNEL__ */
132 
133 typedef struct _i2o_pci_bus {
134         u8 PciFunctionNumber;
135         u8 PciDeviceNumber;
136         u8 PciBusNumber;
137         u8 reserved;
138         u16 PciVendorID;
139         u16 PciDeviceID;
140 } i2o_pci_bus;
141 
142 typedef struct _i2o_local_bus {
143         u16 LbBaseIOPort;
144         u16 reserved;
145         u32 LbBaseMemoryAddress;
146 } i2o_local_bus;
147 
148 typedef struct _i2o_isa_bus {
149         u16 IsaBaseIOPort;
150         u8 CSN;
151         u8 reserved;
152         u32 IsaBaseMemoryAddress;
153 } i2o_isa_bus;
154 
155 typedef struct _i2o_eisa_bus_info {
156         u16 EisaBaseIOPort;
157         u8 reserved;
158         u8 EisaSlotNumber;
159         u32 EisaBaseMemoryAddress;
160 } i2o_eisa_bus;
161 
162 typedef struct _i2o_mca_bus {
163         u16 McaBaseIOPort;
164         u8 reserved;
165         u8 McaSlotNumber;
166         u32 McaBaseMemoryAddress;
167 } i2o_mca_bus;
168 
169 typedef struct _i2o_other_bus {
170         u16 BaseIOPort;
171         u16 reserved;
172         u32 BaseMemoryAddress;
173 } i2o_other_bus;
174 
175 typedef struct _i2o_hrt_entry {
176         u32 adapter_id;
177         u32 parent_tid:12;
178         u32 state:4;
179         u32 bus_num:8;
180         u32 bus_type:8;
181         union {
182                 i2o_pci_bus pci_bus;
183                 i2o_local_bus local_bus;
184                 i2o_isa_bus isa_bus;
185                 i2o_eisa_bus eisa_bus;
186                 i2o_mca_bus mca_bus;
187                 i2o_other_bus other_bus;
188         } bus;
189 } i2o_hrt_entry;
190 
191 typedef struct _i2o_hrt {
192         u16 num_entries;
193         u8 entry_len;
194         u8 hrt_version;
195         u32 change_ind;
196         i2o_hrt_entry hrt_entry[1];
197 } i2o_hrt;
198 
199 typedef struct _i2o_lct_entry {
200         u32 entry_size:16;
201         u32 tid:12;
202         u32 reserved:4;
203         u32 change_ind;
204         u32 device_flags;
205         u32 class_id:12;
206         u32 version:4;
207         u32 vendor_id:16;
208         u32 sub_class;
209         u32 user_tid:12;
210         u32 parent_tid:12;
211         u32 bios_info:8;
212         u8 identity_tag[8];
213         u32 event_capabilities;
214 } i2o_lct_entry;
215 
216 typedef struct _i2o_lct {
217         u32 table_size:16;
218         u32 boot_tid:12;
219         u32 lct_ver:4;
220         u32 iop_flags;
221         u32 change_ind;
222         i2o_lct_entry lct_entry[1];
223 } i2o_lct;
224 
225 typedef struct _i2o_status_block {
226         u16 org_id;
227         u16 reserved;
228         u16 iop_id:12;
229         u16 reserved1:4;
230         u16 host_unit_id;
231         u16 segment_number:12;
232         u16 i2o_version:4;
233         u8 iop_state;
234         u8 msg_type;
235         u16 inbound_frame_size;
236         u8 init_code;   
237         u8 reserved2;
238         u32 max_inbound_frames;
239         u32 cur_inbound_frames;
240         u32 max_outbound_frames;
241         char product_id[24];    
242         u32 expected_lct_size;
243         u32 iop_capabilities;
244         u32 desired_mem_size;
245         u32 current_mem_size;
246         u32 current_mem_base;
247         u32 desired_io_size;
248         u32 current_io_size;
249         u32 current_io_base;
250         u32 reserved3:24;
251         u32 cmd_status:8;
252 } i2o_status_block;
253  
254 /* Event indicator mask flags */
255 #define I2O_EVT_IND_STATE_CHANGE                0x80000000
256 #define I2O_EVT_IND_GENERAL_WARNING             0x40000000
257 #define I2O_EVT_IND_CONFIGURATION_FLAG          0x20000000
258 #define I2O_EVT_IND_LOCK_RELEASE                0x10000000
259 #define I2O_EVT_IND_CAPABILITY_CHANGE           0x08000000
260 #define I2O_EVT_IND_DEVICE_RESET                0x04000000
261 #define I2O_EVT_IND_EVT_MASK_MODIFIED           0x02000000
262 #define I2O_EVT_IND_FIELD_MODIFIED              0x01000000
263 #define I2O_EVT_IND_VENDOR_EVT                  0x00800000
264 #define I2O_EVT_IND_DEVICE_STATE                0x00400000
265 
266 /* Executive event indicitors */
267 #define I2O_EVT_IND_EXEC_RESOURCE_LIMITS        0x00000001
268 #define I2O_EVT_IND_EXEC_CONNECTION_FAIL        0x00000002
269 #define I2O_EVT_IND_EXEC_ADAPTER_FAULT          0x00000004
270 #define I2O_EVT_IND_EXEC_POWER_FAIL             0x00000008
271 #define I2O_EVT_IND_EXEC_RESET_PENDING          0x00000010
272 #define I2O_EVT_IND_EXEC_RESET_IMMINENT         0x00000020
273 #define I2O_EVT_IND_EXEC_HW_FAIL                0x00000040
274 #define I2O_EVT_IND_EXEC_XCT_CHANGE             0x00000080
275 #define I2O_EVT_IND_EXEC_NEW_LCT_ENTRY          0x00000100
276 #define I2O_EVT_IND_EXEC_MODIFIED_LCT           0x00000200
277 #define I2O_EVT_IND_EXEC_DDM_AVAILABILITY       0x00000400
278 
279 /* Random Block Storage Event Indicators */
280 #define I2O_EVT_IND_BSA_VOLUME_LOAD             0x00000001
281 #define I2O_EVT_IND_BSA_VOLUME_UNLOAD           0x00000002
282 #define I2O_EVT_IND_BSA_VOLUME_UNLOAD_REQ       0x00000004
283 #define I2O_EVT_IND_BSA_CAPACITY_CHANGE         0x00000008
284 #define I2O_EVT_IND_BSA_SCSI_SMART              0x00000010
285 
286 /* Event data for generic events */
287 #define I2O_EVT_STATE_CHANGE_NORMAL             0x00
288 #define I2O_EVT_STATE_CHANGE_SUSPENDED          0x01
289 #define I2O_EVT_STATE_CHANGE_RESTART            0x02
290 #define I2O_EVT_STATE_CHANGE_NA_RECOVER         0x03
291 #define I2O_EVT_STATE_CHANGE_NA_NO_RECOVER      0x04
292 #define I2O_EVT_STATE_CHANGE_QUIESCE_REQUEST    0x05
293 #define I2O_EVT_STATE_CHANGE_FAILED             0x10
294 #define I2O_EVT_STATE_CHANGE_FAULTED            0x11
295 
296 #define I2O_EVT_GEN_WARNING_NORMAL              0x00
297 #define I2O_EVT_GEN_WARNING_ERROR_THRESHOLD     0x01
298 #define I2O_EVT_GEN_WARNING_MEDIA_FAULT         0x02
299 
300 #define I2O_EVT_CAPABILITY_OTHER                0x01
301 #define I2O_EVT_CAPABILITY_CHANGED              0x02
302 
303 #define I2O_EVT_SENSOR_STATE_CHANGED            0x01
304 
305 /*
306  *      I2O classes / subclasses
307  */
308 
309 /*  Class ID and Code Assignments
310  *  (LCT.ClassID.Version field)
311  */
312 #define    I2O_CLASS_VERSION_10                        0x00
313 #define    I2O_CLASS_VERSION_11                        0x01
314 
315 /*  Class code names
316  *  (from v1.5 Table 6-1 Class Code Assignments.)
317  */
318  
319 #define    I2O_CLASS_EXECUTIVE                         0x000
320 #define    I2O_CLASS_DDM                               0x001
321 #define    I2O_CLASS_RANDOM_BLOCK_STORAGE              0x010
322 #define    I2O_CLASS_SEQUENTIAL_STORAGE                0x011
323 #define    I2O_CLASS_LAN                               0x020
324 #define    I2O_CLASS_WAN                               0x030
325 #define    I2O_CLASS_FIBRE_CHANNEL_PORT                0x040
326 #define    I2O_CLASS_FIBRE_CHANNEL_PERIPHERAL          0x041
327 #define    I2O_CLASS_SCSI_PERIPHERAL                   0x051
328 #define    I2O_CLASS_ATE_PORT                          0x060
329 #define    I2O_CLASS_ATE_PERIPHERAL                    0x061
330 #define    I2O_CLASS_FLOPPY_CONTROLLER                 0x070
331 #define    I2O_CLASS_FLOPPY_DEVICE                     0x071
332 #define    I2O_CLASS_BUS_ADAPTER_PORT                  0x080
333 #define    I2O_CLASS_PEER_TRANSPORT_AGENT              0x090
334 #define    I2O_CLASS_PEER_TRANSPORT                    0x091
335 
336 /* 
337  *  Rest of 0x092 - 0x09f reserved for peer-to-peer classes
338  */
339  
340 #define    I2O_CLASS_MATCH_ANYCLASS                    0xffffffff
341 
342 /* 
343  *  Subclasses
344  */
345 
346 #define    I2O_SUBCLASS_i960                           0x001
347 #define    I2O_SUBCLASS_HDM                            0x020
348 #define    I2O_SUBCLASS_ISM                            0x021
349  
350 /* Operation functions */
351 
352 #define I2O_PARAMS_FIELD_GET    0x0001
353 #define I2O_PARAMS_LIST_GET     0x0002
354 #define I2O_PARAMS_MORE_GET     0x0003
355 #define I2O_PARAMS_SIZE_GET     0x0004
356 #define I2O_PARAMS_TABLE_GET    0x0005
357 #define I2O_PARAMS_FIELD_SET    0x0006
358 #define I2O_PARAMS_LIST_SET     0x0007
359 #define I2O_PARAMS_ROW_ADD      0x0008
360 #define I2O_PARAMS_ROW_DELETE   0x0009
361 #define I2O_PARAMS_TABLE_CLEAR  0x000A
362 
363 /*
364  * I2O serial number conventions / formats 
365  * (circa v1.5)
366  */
367 
368 #define    I2O_SNFORMAT_UNKNOWN                        0
369 #define    I2O_SNFORMAT_BINARY                         1
370 #define    I2O_SNFORMAT_ASCII                          2
371 #define    I2O_SNFORMAT_UNICODE                        3
372 #define    I2O_SNFORMAT_LAN48_MAC                      4
373 #define    I2O_SNFORMAT_WAN                            5
374 
375 /* 
376  * Plus new in v2.0 (Yellowstone pdf doc)
377  */
378 
379 #define    I2O_SNFORMAT_LAN64_MAC                      6
380 #define    I2O_SNFORMAT_DDM                            7
381 #define    I2O_SNFORMAT_IEEE_REG64                     8
382 #define    I2O_SNFORMAT_IEEE_REG128                    9
383 #define    I2O_SNFORMAT_UNKNOWN2                       0xff
384 
385 /*
386  *      I2O Get Status State values 
387  */
388 
389 #define ADAPTER_STATE_INITIALIZING              0x01
390 #define ADAPTER_STATE_RESET                     0x02
391 #define ADAPTER_STATE_HOLD                      0x04
392 #define         ADAPTER_STATE_READY                     0x05
393 #define ADAPTER_STATE_OPERATIONAL               0x08
394 #define ADAPTER_STATE_FAILED                    0x10
395 #define ADAPTER_STATE_FAULTED                   0x11
396         
397 #endif /* _I2O_DEV_H */
398 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.