1#ifndef _GDTH_IOCTL_H 2#define _GDTH_IOCTL_H 3 4/* gdth_ioctl.h 5 * $Id: gdth_ioctl.h,v 1.1.1.1 2008/10/15 03:26:52 james26_jang Exp $ 6 */ 7 8/* IOCTLs */ 9#define GDTIOCTL_MASK ('J'<<8) 10#define GDTIOCTL_GENERAL (GDTIOCTL_MASK | 0) /* general IOCTL */ 11#define GDTIOCTL_DRVERS (GDTIOCTL_MASK | 1) /* get driver version */ 12#define GDTIOCTL_CTRTYPE (GDTIOCTL_MASK | 2) /* get controller type */ 13#define GDTIOCTL_OSVERS (GDTIOCTL_MASK | 3) /* get OS version */ 14#define GDTIOCTL_HDRLIST (GDTIOCTL_MASK | 4) /* get host drive list */ 15#define GDTIOCTL_CTRCNT (GDTIOCTL_MASK | 5) /* get controller count */ 16#define GDTIOCTL_LOCKDRV (GDTIOCTL_MASK | 6) /* lock host drive */ 17#define GDTIOCTL_LOCKCHN (GDTIOCTL_MASK | 7) /* lock channel */ 18#define GDTIOCTL_EVENT (GDTIOCTL_MASK | 8) /* read controller events */ 19#define GDTIOCTL_SCSI (GDTIOCTL_MASK | 9) /* SCSI command */ 20#define GDTIOCTL_RESET_BUS (GDTIOCTL_MASK |10) /* reset SCSI bus */ 21#define GDTIOCTL_RESCAN (GDTIOCTL_MASK |11) /* rescan host drives */ 22#define GDTIOCTL_RESET_DRV (GDTIOCTL_MASK |12) /* reset (remote) drv. res. */ 23 24#define GDTIOCTL_MAGIC 0xaffe0004 25#define EVENT_SIZE 294 26#define MAX_HDRIVES 100 27 28/* IOCTL structure (write) */ 29typedef struct { 30 ulong32 magic; /* IOCTL magic */ 31 ushort ioctl; /* IOCTL */ 32 ushort ionode; /* controller number */ 33 ushort service; /* controller service */ 34 ushort timeout; /* timeout */ 35 union { 36 struct { 37 unchar command[512]; /* controller command */ 38 unchar data[1]; /* add. data */ 39 } general; 40 struct { 41 unchar lock; /* lock/unlock */ 42 unchar drive_cnt; /* drive count */ 43 ushort drives[MAX_HDRIVES];/* drives */ 44 } lockdrv; 45 struct { 46 unchar lock; /* lock/unlock */ 47 unchar channel; /* channel */ 48 } lockchn; 49 struct { 50 int erase; /* erase event ? */ 51 int handle; 52 unchar evt[EVENT_SIZE]; /* event structure */ 53 } event; 54 struct { 55 unchar bus; /* SCSI bus */ 56 unchar target; /* target ID */ 57 unchar lun; /* LUN */ 58 unchar cmd_len; /* command length */ 59 unchar cmd[12]; /* SCSI command */ 60 } scsi; 61 struct { 62 ushort hdr_no; /* host drive number */ 63 unchar flag; /* old meth./add/remove */ 64 } rescan; 65 } iu; 66} gdth_iowr_str; 67 68/* IOCTL structure (read) */ 69typedef struct { 70 ulong32 size; /* buffer size */ 71 ulong32 status; /* IOCTL error code */ 72 union { 73 struct { 74 unchar data[1]; /* data */ 75 } general; 76 struct { 77 ushort version; /* driver version */ 78 } drvers; 79 struct { 80 unchar type; /* controller type */ 81 ushort info; /* slot etc. */ 82 ushort oem_id; /* OEM ID */ 83 ushort bios_ver; /* not used */ 84 ushort access; /* not used */ 85 ushort ext_type; /* extended type */ 86 ushort device_id; /* device ID */ 87 ushort sub_device_id; /* sub device ID */ 88 } ctrtype; 89 struct { 90 unchar version; /* OS version */ 91 unchar subversion; /* OS subversion */ 92 ushort revision; /* revision */ 93 } osvers; 94 struct { 95 ushort count; /* controller count */ 96 } ctrcnt; 97 struct { 98 int handle; 99 unchar evt[EVENT_SIZE]; /* event structure */ 100 } event; 101 struct { 102 unchar bus; /* SCSI bus, 0xff: invalid */ 103 unchar target; /* target ID */ 104 unchar lun; /* LUN */ 105 unchar cluster_type; /* cluster properties */ 106 } hdr_list[MAX_HDRIVES]; /* index is host drive number */ 107 } iu; 108} gdth_iord_str; 109 110 111#endif 112 113