1*734527fbSandvar /* $NetBSD: rdreg.h,v 1.7 2024/02/10 08:24:51 andvar Exp $ */ 2aad01611Sagc 3aad01611Sagc /* 49b6bd2d9Srmind * Copyright (c) 1988 University of Utah. 5aad01611Sagc * Copyright (c) 1982, 1990, 1993 6aad01611Sagc * The Regents of the University of California. All rights reserved. 7aad01611Sagc * 8aad01611Sagc * This code is derived from software contributed to Berkeley by 9aad01611Sagc * the Systems Programming Group of the University of Utah Computer 10aad01611Sagc * Science Department. 11aad01611Sagc * 12aad01611Sagc * Redistribution and use in source and binary forms, with or without 13aad01611Sagc * modification, are permitted provided that the following conditions 14aad01611Sagc * are met: 15aad01611Sagc * 1. Redistributions of source code must retain the above copyright 16aad01611Sagc * notice, this list of conditions and the following disclaimer. 17aad01611Sagc * 2. Redistributions in binary form must reproduce the above copyright 18aad01611Sagc * notice, this list of conditions and the following disclaimer in the 19aad01611Sagc * documentation and/or other materials provided with the distribution. 20aad01611Sagc * 3. Neither the name of the University nor the names of its contributors 21aad01611Sagc * may be used to endorse or promote products derived from this software 22aad01611Sagc * without specific prior written permission. 23aad01611Sagc * 24aad01611Sagc * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 25aad01611Sagc * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26aad01611Sagc * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27aad01611Sagc * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 28aad01611Sagc * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29aad01611Sagc * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30aad01611Sagc * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31aad01611Sagc * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32aad01611Sagc * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33aad01611Sagc * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34aad01611Sagc * SUCH DAMAGE. 35aad01611Sagc * 36aad01611Sagc * from: Utah $Hdr: rdreg.h 1.2 90/10/12$ 37aad01611Sagc * 38aad01611Sagc * @(#)rdreg.h 8.1 (Berkeley) 6/10/93 39aad01611Sagc */ 40473eb467Sgmcgarry 41473eb467Sgmcgarry struct rd_iocmd { 42473eb467Sgmcgarry u_int8_t c_pad; /* alignment */ 43473eb467Sgmcgarry u_int8_t c_unit; /* punit */ 44473eb467Sgmcgarry u_int8_t c_volume; /* CS80CMD_SVOL(0) */ 45473eb467Sgmcgarry u_int8_t c_saddr; /* CS80CMD_SADDR */ 46473eb467Sgmcgarry u_int16_t c_hiaddr; /* always 0 */ 47473eb467Sgmcgarry u_int32_t c_addr; /* blkno */ 48473eb467Sgmcgarry u_int8_t c_nop2; /* CS80CMD_NOP - 32-bit alignment */ 49473eb467Sgmcgarry u_int8_t c_slen; /* CS80CMD_SLEN */ 50473eb467Sgmcgarry u_int32_t c_len; /* number of sectors */ 51473eb467Sgmcgarry u_int8_t c_cmd; /* CS80CMD_READ/CS80CMD_WRITE */ 52b6a2ef75Sperry } __packed; 53473eb467Sgmcgarry 54473eb467Sgmcgarry struct rd_rscmd { /* different */ 55473eb467Sgmcgarry u_int8_t c_unit; 56473eb467Sgmcgarry u_int8_t c_sram; 57473eb467Sgmcgarry u_int8_t c_ram; 58473eb467Sgmcgarry u_int8_t c_cmd; 59b6a2ef75Sperry } __packed; 60473eb467Sgmcgarry 61473eb467Sgmcgarry /* HW ids */ 62473eb467Sgmcgarry #define RD7946AID 0x220 /* also 7945A */ 63473eb467Sgmcgarry #define RD9134DID 0x221 /* also 9122S */ 64473eb467Sgmcgarry #define RD9134LID 0x222 /* also 9122D */ 65473eb467Sgmcgarry #define RD7912PID 0x209 66473eb467Sgmcgarry #define RD7914CTID 0x20A 67473eb467Sgmcgarry #define RD7914PID 0x20B 68473eb467Sgmcgarry #define RD7958AID 0x22B 69473eb467Sgmcgarry #define RD7957AID 0x22A 70473eb467Sgmcgarry #define RD7933HID 0x212 71473eb467Sgmcgarry #define RD7936HID 0x213 /* just guessing -- as of yet unknown */ 72473eb467Sgmcgarry #define RD7937HID 0x214 73473eb467Sgmcgarry #define RD7957BID 0x22C /* another guess based on 7958B */ 74473eb467Sgmcgarry #define RD7958BID 0x22D 75473eb467Sgmcgarry #define RD7959BID 0x22E /* another guess based on 7958B */ 76473eb467Sgmcgarry #define RD2200AID 0x22F 77473eb467Sgmcgarry #define RD2203AID 0x230 /* yet another guess */ 78473eb467Sgmcgarry 79*734527fbSandvar /* SW ids -- indices into rdidentinfo, order is arbitrary */ 80473eb467Sgmcgarry #define RD7945A 0 81473eb467Sgmcgarry #define RD9134D 1 82473eb467Sgmcgarry #define RD9122S 2 83473eb467Sgmcgarry #define RD7912P 3 84473eb467Sgmcgarry #define RD7914P 4 85473eb467Sgmcgarry #define RD7958A 5 86473eb467Sgmcgarry #define RD7957A 6 87473eb467Sgmcgarry #define RD7933H 7 88473eb467Sgmcgarry #define RD9134L 8 89473eb467Sgmcgarry #define RD7936H 9 90473eb467Sgmcgarry #define RD7937H 10 91473eb467Sgmcgarry #define RD7914CT 11 92473eb467Sgmcgarry #define RD7946A 12 93473eb467Sgmcgarry #define RD9122D 13 94473eb467Sgmcgarry #define RD7957B 14 95473eb467Sgmcgarry #define RD7958B 15 96473eb467Sgmcgarry #define RD7959B 16 97473eb467Sgmcgarry 98473eb467Sgmcgarry #define NRD7945ABPT 16 99473eb467Sgmcgarry #define NRD7945ATRK 7 100473eb467Sgmcgarry #define NRD9134DBPT 16 101473eb467Sgmcgarry #define NRD9134DTRK 6 102473eb467Sgmcgarry #define NRD9122SBPT 8 103473eb467Sgmcgarry #define NRD9122STRK 2 104473eb467Sgmcgarry #define NRD7912PBPT 32 105473eb467Sgmcgarry #define NRD7912PTRK 7 106473eb467Sgmcgarry #define NRD7914PBPT 32 107473eb467Sgmcgarry #define NRD7914PTRK 7 108473eb467Sgmcgarry #define NRD7933HBPT 46 109473eb467Sgmcgarry #define NRD7933HTRK 13 110473eb467Sgmcgarry #define NRD9134LBPT 16 111473eb467Sgmcgarry #define NRD9134LTRK 5 112473eb467Sgmcgarry 113473eb467Sgmcgarry /* 114473eb467Sgmcgarry * Several HP drives have an odd number of 256 byte sectors per track. 115473eb467Sgmcgarry * This makes it rather difficult to break them into 512 and 1024 byte blocks. 116473eb467Sgmcgarry * So...we just do like HPUX and don't bother to respect hardware track/head 117d88f7b1dSwiz * boundaries -- we just mold the disk so that we use the entire capacity. 118d88f7b1dSwiz * HPUX also sometimes doesn't abide by cylinder boundaries, we attempt to 119473eb467Sgmcgarry * whenever possible. 120473eb467Sgmcgarry * 121473eb467Sgmcgarry * DISK REAL (256 BPS) HPUX (1024 BPS) BSD (512 BPS) 122473eb467Sgmcgarry * SPT x HD x CYL SPT x HD x CYL SPT x HD x CYL 123473eb467Sgmcgarry * ----- --------------- --------------- -------------- 124473eb467Sgmcgarry * 7936: 123 x 7 x 1396 25 x 7 x 1716 123 x 7 x 698 125473eb467Sgmcgarry * 7937: 123 x 13 x 1396 25 x 16 x 1395 123 x 13 x 698 126473eb467Sgmcgarry * 127473eb467Sgmcgarry * 7957A: 63 x 5 x 1013 11 x 7 x 1036 22 x 7 x 1036 128473eb467Sgmcgarry * 7958A: 63 x 8 x 1013 21 x 6 x 1013 36 x 7 x 1013 129473eb467Sgmcgarry * 130473eb467Sgmcgarry * 7957B: 63 x 4 x 1269 9 x 7 x 1269 18 x 7 x 1269 131473eb467Sgmcgarry * 7958B: 63 x 6 x 1572 21 x 9 x 786 42 x 9 x 786 132473eb467Sgmcgarry * 7959B: 63 x 12 x 1572 21 x 9 x 1572 42 x 9 x 1572 133473eb467Sgmcgarry * 134473eb467Sgmcgarry * 2200A: 113 x 8 x 1449 113 x 2 x 1449 113 x 4 x 1449 135473eb467Sgmcgarry * 2203A: 113 x 16 x 1449 113 x 4 x 1449 113 x 8 x 1449 136473eb467Sgmcgarry */ 137473eb467Sgmcgarry #define NRD7936HBPT 123 138473eb467Sgmcgarry #define NRD7936HTRK 7 139473eb467Sgmcgarry #define NRD7937HBPT 123 140473eb467Sgmcgarry #define NRD7937HTRK 13 141473eb467Sgmcgarry #define NRD7957ABPT 22 142473eb467Sgmcgarry #define NRD7957ATRK 7 143473eb467Sgmcgarry #define NRD7958ABPT 36 144473eb467Sgmcgarry #define NRD7958ATRK 7 145473eb467Sgmcgarry #define NRD7957BBPT 18 146473eb467Sgmcgarry #define NRD7957BTRK 7 147473eb467Sgmcgarry #define NRD7958BBPT 42 148473eb467Sgmcgarry #define NRD7958BTRK 9 149473eb467Sgmcgarry #define NRD7959BBPT 42 150473eb467Sgmcgarry #define NRD7959BTRK 9 151473eb467Sgmcgarry #define NRD2200ABPT 113 152473eb467Sgmcgarry #define NRD2200ATRK 4 153473eb467Sgmcgarry #define NRD2203ABPT 113 154473eb467Sgmcgarry #define NRD2203ATRK 8 155473eb467Sgmcgarry 156473eb467Sgmcgarry /* convert 512 byte count into DEV_BSIZE count */ 157473eb467Sgmcgarry #define RDSZ(x) ((x) >> (DEV_BSHIFT-9)) 158473eb467Sgmcgarry 159473eb467Sgmcgarry /* convert block number into sector number and back */ 160473eb467Sgmcgarry #define RDBTOS(x) ((x) << (DEV_BSHIFT-8)) 161473eb467Sgmcgarry #define RDSTOB(x) ((x) >> (DEV_BSHIFT-8)) 162473eb467Sgmcgarry 163473eb467Sgmcgarry /* extract cyl/head/sect info from three-vector address */ 164473eb467Sgmcgarry #define RDCYL(tva) ((u_int32_t)(tva).cu_cyhd >> 8) 165473eb467Sgmcgarry #define RDHEAD(tva) ((tva).cu_cyhd & 0xFF) 166473eb467Sgmcgarry #define RDSECT(tva) ((tva).cu_sect) 167