1 |
1633 |
jcastillo |
#ifndef _LINUX_AMIGARDB_H
|
2 |
|
|
#define _LINUX_AMIGARDB_H 1
|
3 |
|
|
|
4 |
|
|
#define ULONG u_long
|
5 |
|
|
#define LONG long
|
6 |
|
|
#define UBYTE u_char
|
7 |
|
|
|
8 |
|
|
/* definitions for the Amiga RigidDiskBlock layout, which always starts in
|
9 |
|
|
cylinder 0 of a medium. Taken from page 254f of the RKM: Devices */
|
10 |
|
|
|
11 |
|
|
struct RigidDiskBlock {
|
12 |
|
|
ULONG rdb_ID; /* 4 character identifier */
|
13 |
|
|
ULONG rdb_SummedLongs; /* size of this checksummed structure */
|
14 |
|
|
LONG rdb_ChkSum; /* block checksum (longword sum to zero) */
|
15 |
|
|
ULONG rdb_HostID; /* SCSI Target ID of host */
|
16 |
|
|
ULONG rdb_BlockBytes; /* size of disk blocks */
|
17 |
|
|
ULONG rdb_Flags; /* see below for defines */
|
18 |
|
|
/* block list heads */
|
19 |
|
|
ULONG rdb_BadBlockList; /* optional bad block list */
|
20 |
|
|
ULONG rdb_PartitionList; /* optional first partition block */
|
21 |
|
|
ULONG rdb_FileSysHeaderList; /* optional file system header block */
|
22 |
|
|
ULONG rdb_DriveInit; /* optional drive-specific init code */
|
23 |
|
|
/* DriveInit(lun,rdb,ior): "C" stk & d0/a0/a1 */
|
24 |
|
|
ULONG rdb_Reserved1[6]; /* set to $ffffffff */
|
25 |
|
|
/* physical drive characteristics */
|
26 |
|
|
ULONG rdb_Cylinders; /* number of drive cylinders */
|
27 |
|
|
ULONG rdb_Sectors; /* sectors per track */
|
28 |
|
|
ULONG rdb_Heads; /* number of drive heads */
|
29 |
|
|
ULONG rdb_Interleave; /* interleave */
|
30 |
|
|
ULONG rdb_Park; /* landing zone cylinder */
|
31 |
|
|
ULONG rdb_Reserved2[3];
|
32 |
|
|
ULONG rdb_WritePreComp; /* starting cylinder: write precompensation */
|
33 |
|
|
ULONG rdb_ReducedWrite; /* starting cylinder: reduced write current */
|
34 |
|
|
ULONG rdb_StepRate; /* drive step rate */
|
35 |
|
|
ULONG rdb_Reserved3[5];
|
36 |
|
|
/* logical drive characteristics */
|
37 |
|
|
ULONG rdb_RDBBlocksLo; /* low block of range reserved for hardblocks */
|
38 |
|
|
ULONG rdb_RDBBlocksHi; /* high block of range for these hardblocks */
|
39 |
|
|
ULONG rdb_LoCylinder; /* low cylinder of partitionable disk area */
|
40 |
|
|
ULONG rdb_HiCylinder; /* high cylinder of partitionable data area */
|
41 |
|
|
ULONG rdb_CylBlocks; /* number of blocks available per cylinder */
|
42 |
|
|
ULONG rdb_AutoParkSeconds; /* zero for no auto park */
|
43 |
|
|
ULONG rdb_HighRDSKBlock; /* highest block used by RDSK */
|
44 |
|
|
/* (not including replacement bad blocks) */
|
45 |
|
|
ULONG rdb_Reserved4;
|
46 |
|
|
/* drive identification */
|
47 |
|
|
char rdb_DiskVendor[8];
|
48 |
|
|
char rdb_DiskProduct[16];
|
49 |
|
|
char rdb_DiskRevision[4];
|
50 |
|
|
char rdb_ControllerVendor[8];
|
51 |
|
|
char rdb_ControllerProduct[16];
|
52 |
|
|
char rdb_ControllerRevision[4];
|
53 |
|
|
ULONG rdb_Reserved5[10];
|
54 |
|
|
};
|
55 |
|
|
|
56 |
|
|
#define IDNAME_RIGIDDISK 0x5244534B /* 'RDSK' */
|
57 |
|
|
|
58 |
|
|
#define RDB_LOCATION_LIMIT 16
|
59 |
|
|
|
60 |
|
|
#define RDBFB_LAST 0 /* no disks exist to be configured after */
|
61 |
|
|
#define RDBFF_LAST 0x01L /* this one on this controller */
|
62 |
|
|
#define RDBFB_LASTLUN 1 /* no LUNs exist to be configured greater */
|
63 |
|
|
#define RDBFF_LASTLUN 0x02L /* than this one at this SCSI Target ID */
|
64 |
|
|
#define RDBFB_LASTTID 2 /* no Target IDs exist to be configured */
|
65 |
|
|
#define RDBFF_LASTTID 0x04L /* greater than this one on this SCSI bus */
|
66 |
|
|
#define RDBFB_NORESELECT 3 /* don't bother trying to perform reselection */
|
67 |
|
|
#define RDBFF_NORESELECT 0x08L /* when talking to this drive */
|
68 |
|
|
#define RDBFB_DISKID 4 /* rdb_Disk... identification valid */
|
69 |
|
|
#define RDBFF_DISKID 0x10L
|
70 |
|
|
#define RDBFB_CTRLRID 5 /* rdb_Controller... identification valid */
|
71 |
|
|
#define RDBFF_CTRLRID 0x20L
|
72 |
|
|
/* added 7/20/89 by commodore: */
|
73 |
|
|
#define RDBFB_SYNCH 6 /* drive supports scsi synchronous mode */
|
74 |
|
|
#define RDBFF_SYNCH 0x40L /* CAN BE DANGEROUS TO USE IF IT DOESN'T! */
|
75 |
|
|
|
76 |
|
|
struct PartitionBlock {
|
77 |
|
|
ULONG pb_ID; /* 4 character identifier */
|
78 |
|
|
ULONG pb_SummedLongs; /* size of this checksummed structure */
|
79 |
|
|
LONG pb_ChkSum; /* block checksum (longword sum to zero) */
|
80 |
|
|
ULONG pb_HostID; /* SCSI Target ID of host */
|
81 |
|
|
ULONG pb_Next; /* block number of the next PartitionBlock */
|
82 |
|
|
ULONG pb_Flags; /* see below for defines */
|
83 |
|
|
ULONG pb_Reserved1[2];
|
84 |
|
|
ULONG pb_DevFlags; /* preferred flags for OpenDevice */
|
85 |
|
|
UBYTE pb_DriveName[32]; /* preferred DOS device name: BSTR form */
|
86 |
|
|
/* (not used if this name is in use) */
|
87 |
|
|
ULONG pb_Reserved2[15]; /* filler to 32 longwords */
|
88 |
|
|
ULONG pb_Environment[17]; /* environment vector for this partition */
|
89 |
|
|
ULONG pb_EReserved[15]; /* reserved for future environment vector */
|
90 |
|
|
};
|
91 |
|
|
|
92 |
|
|
#define IDNAME_PARTITION 0x50415254 /* 'PART' */
|
93 |
|
|
|
94 |
|
|
#define PBFB_BOOTABLE 0 /* this partition is intended to be bootable */
|
95 |
|
|
#define PBFF_BOOTABLE 1L /* (expected directories and files exist) */
|
96 |
|
|
#define PBFB_NOMOUNT 1 /* do not mount this partition (e.g. manually */
|
97 |
|
|
#define PBFF_NOMOUNT 2L /* mounted, but space reserved here) */
|
98 |
|
|
|
99 |
|
|
/* this is from <dos/filehandler.h> */
|
100 |
|
|
|
101 |
|
|
#define DE_TABLESIZE 0 /* minimum value is 11 (includes NumBuffers) */
|
102 |
|
|
#define DE_SIZEBLOCK 1 /* in longwords: standard value is 128 */
|
103 |
|
|
#define DE_SECORG 2 /* not used; must be 0 */
|
104 |
|
|
#define DE_NUMHEADS 3 /* # of heads (surfaces). drive specific */
|
105 |
|
|
#define DE_SECSPERBLK 4 /* not used; must be 1 */
|
106 |
|
|
#define DE_BLKSPERTRACK 5 /* blocks per track. drive specific */
|
107 |
|
|
#define DE_RESERVEDBLKS 6 /* unavailable blocks at start. usually 2 */
|
108 |
|
|
#define DE_PREFAC 7 /* not used; must be 0 */
|
109 |
|
|
#define DE_INTERLEAVE 8 /* usually 0 */
|
110 |
|
|
#define DE_LOWCYL 9 /* starting cylinder. typically 0 */
|
111 |
|
|
#define DE_UPPERCYL 10 /* max cylinder. drive specific */
|
112 |
|
|
#define DE_NUMBUFFERS 11 /* starting # of buffers. typically 5 */
|
113 |
|
|
#define DE_MEMBUFTYPE 12 /* type of mem to allocate for buffers. */
|
114 |
|
|
#define DE_BUFMEMTYPE 12 /* same as above, better name
|
115 |
|
|
* 1 is public, 3 is chip, 5 is fast */
|
116 |
|
|
#define DE_MAXTRANSFER 13 /* Max number bytes to transfer at a time */
|
117 |
|
|
#define DE_MASK 14 /* Address Mask to block out certain memory */
|
118 |
|
|
#define DE_BOOTPRI 15 /* Boot priority for autoboot */
|
119 |
|
|
#define DE_DOSTYPE 16 /* ASCII (HEX) string showing filesystem type;
|
120 |
|
|
* 0X444F5300 is old filesystem,
|
121 |
|
|
* 0X444F5301 is fast file system */
|
122 |
|
|
#define DE_BAUD 17 /* Baud rate for serial handler */
|
123 |
|
|
#define DE_CONTROL 18 /* Control word for handler/filesystem */
|
124 |
|
|
#define DE_BOOTBLOCKS 19 /* Number of blocks containing boot code */
|
125 |
|
|
|
126 |
|
|
#endif /* _LINUX_AMIGARDB_H */
|