blob: ee6eb78a59b518a2256e30b0ceebf0a15978603d [file] [log] [blame]
#ifndef _GDTH_IOCTL_H
#define _GDTH_IOCTL_H
/* gdth_ioctl.h
* $Id: gdth_ioctl.h,v 1.10 2001/05/22 06:28:59 achim Exp $
*/
/* IOCTLs */
#define GDTIOCTL_MASK ('J'<<8)
#define GDTIOCTL_GENERAL (GDTIOCTL_MASK | 0) /* general IOCTL */
#define GDTIOCTL_DRVERS (GDTIOCTL_MASK | 1) /* get driver version */
#define GDTIOCTL_CTRTYPE (GDTIOCTL_MASK | 2) /* get controller type */
#define GDTIOCTL_OSVERS (GDTIOCTL_MASK | 3) /* get OS version */
#define GDTIOCTL_HDRLIST (GDTIOCTL_MASK | 4) /* get host drive list */
#define GDTIOCTL_CTRCNT (GDTIOCTL_MASK | 5) /* get controller count */
#define GDTIOCTL_LOCKDRV (GDTIOCTL_MASK | 6) /* lock host drive */
#define GDTIOCTL_LOCKCHN (GDTIOCTL_MASK | 7) /* lock channel */
#define GDTIOCTL_EVENT (GDTIOCTL_MASK | 8) /* read controller events */
#define GDTIOCTL_SCSI (GDTIOCTL_MASK | 9) /* SCSI command */
#define GDTIOCTL_RESET_BUS (GDTIOCTL_MASK |10) /* reset SCSI bus */
#define GDTIOCTL_RESCAN (GDTIOCTL_MASK |11) /* rescan host drives */
#define GDTIOCTL_RESET_DRV (GDTIOCTL_MASK |12) /* reset (remote) drv. res. */
#define GDTIOCTL_MAGIC 0xaffe0004
#define EVENT_SIZE 294
#define MAX_HDRIVES 100
/* IOCTL structure (write) */
typedef struct {
ulong32 magic; /* IOCTL magic */
ushort ioctl; /* IOCTL */
ushort ionode; /* controller number */
ushort service; /* controller service */
ushort timeout; /* timeout */
union {
struct {
unchar command[512]; /* controller command */
unchar data[1]; /* add. data */
} general;
struct {
unchar lock; /* lock/unlock */
unchar drive_cnt; /* drive count */
ushort drives[MAX_HDRIVES];/* drives */
} lockdrv;
struct {
unchar lock; /* lock/unlock */
unchar channel; /* channel */
} lockchn;
struct {
int erase; /* erase event ? */
int handle;
unchar evt[EVENT_SIZE]; /* event structure */
} event;
struct {
unchar bus; /* SCSI bus */
unchar target; /* target ID */
unchar lun; /* LUN */
unchar cmd_len; /* command length */
unchar cmd[12]; /* SCSI command */
} scsi;
struct {
ushort hdr_no; /* host drive number */
unchar flag; /* old meth./add/remove */
} rescan;
} iu;
} gdth_iowr_str;
/* IOCTL structure (read) */
typedef struct {
ulong32 size; /* buffer size */
ulong32 status; /* IOCTL error code */
union {
struct {
unchar data[1]; /* data */
} general;
struct {
ushort version; /* driver version */
} drvers;
struct {
unchar type; /* controller type */
ushort info; /* slot etc. */
ushort oem_id; /* OEM ID */
ushort bios_ver; /* not used */
ushort access; /* not used */
ushort ext_type; /* extended type */
ushort device_id; /* device ID */
ushort sub_device_id; /* sub device ID */
} ctrtype;
struct {
unchar version; /* OS version */
unchar subversion; /* OS subversion */
ushort revision; /* revision */
} osvers;
struct {
ushort count; /* controller count */
} ctrcnt;
struct {
int handle;
unchar evt[EVENT_SIZE]; /* event structure */
} event;
struct {
unchar bus; /* SCSI bus, 0xff: invalid */
unchar target; /* target ID */
unchar lun; /* LUN */
unchar cluster_type; /* cluster properties */
} hdr_list[MAX_HDRIVES]; /* index is host drive number */
} iu;
} gdth_iord_str;
#endif