1 #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 */