1 /*- 2 * Copyright (c) 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * William Jolitz. 7 * 8 * %sccs.include.redist.c% 9 * 10 * @(#)wdreg.h 8.1 (Berkeley) 06/11/93 11 */ 12 13 /* 14 * Disk Controller register definitions. 15 */ 16 #define wd_data 0x0 /* data register (R/W - 16 bits) */ 17 #define wd_error 0x1 /* error register (R) */ 18 #define wd_precomp wd_error /* write precompensation (W) */ 19 #define wd_seccnt 0x2 /* sector count (R/W) */ 20 #define wd_sector 0x3 /* first sector number (R/W) */ 21 #define wd_cyl_lo 0x4 /* cylinder address, low byte (R/W) */ 22 #define wd_cyl_hi 0x5 /* cylinder address, high byte (R/W)*/ 23 #define wd_sdh 0x6 /* sector size/drive/head (R/W)*/ 24 #define wd_command 0x7 /* command register (W) */ 25 #define wd_status wd_command /* immediate status (R) */ 26 27 #define wd_altsts 0x206 /*alternate fixed disk status(via 1015) (R)*/ 28 #define wd_ctlr 0x206 /*fixed disk controller control(via 1015) (W)*/ 29 #define wd_digin 0x207 /* disk controller input(via 1015) (R)*/ 30 31 /* 32 * Status Bits. 33 */ 34 #define WDCS_BUSY 0x80 /* Controller busy bit. */ 35 #define WDCS_READY 0x40 /* Selected drive is ready */ 36 #define WDCS_WRTFLT 0x20 /* Write fault */ 37 #define WDCS_SEEKCMPLT 0x10 /* Seek complete */ 38 #define WDCS_DRQ 0x08 /* Data request bit. */ 39 #define WDCS_ECCCOR 0x04 /* ECC correction made in data */ 40 #define WDCS_INDEX 0x02 /* Index pulse from selected drive */ 41 #define WDCS_ERR 0x01 /* Error detect bit. */ 42 43 #define WDCS_BITS "\020\010busy\006rdy\006wrtflt\005seekdone\004drq\003ecc_cor\002index\001err" 44 45 #define WDERR_BITS "\020\010badblk\007uncorr\006id_crc\005no_id\003abort\002tr000\001no_dam" 46 47 /* 48 * Commands for Disk Controller. 49 */ 50 #define WDCC_READ 0x20 /* disk read code */ 51 #define WDCC_WRITE 0x30 /* disk write code */ 52 #define WDCC_RESTORE 0x10 /* disk restore code -- resets cntlr */ 53 #define WDCC_FORMAT 0x50 /* disk format code */ 54 55 #define WD_STEP 0 /* winchester- default 35us step */ 56 57 #define WDSD_IBM 0xa0 /* forced to 512 byte sector, ecc */ 58 59