141057Swilliam /*- 2*63364Sbostic * Copyright (c) 1991, 1993 3*63364Sbostic * The Regents of the University of California. All rights reserved. 441057Swilliam * 541057Swilliam * This code is derived from software contributed to Berkeley by 641057Swilliam * William Jolitz. 741057Swilliam * 849617Sbostic * %sccs.include.redist.c% 941057Swilliam * 10*63364Sbostic * @(#)wdreg.h 8.1 (Berkeley) 06/11/93 1141057Swilliam */ 1241057Swilliam 1341057Swilliam /* 1441057Swilliam * Disk Controller register definitions. 1541057Swilliam */ 1641057Swilliam #define wd_data 0x0 /* data register (R/W - 16 bits) */ 1741057Swilliam #define wd_error 0x1 /* error register (R) */ 1841057Swilliam #define wd_precomp wd_error /* write precompensation (W) */ 1941057Swilliam #define wd_seccnt 0x2 /* sector count (R/W) */ 2041057Swilliam #define wd_sector 0x3 /* first sector number (R/W) */ 2141057Swilliam #define wd_cyl_lo 0x4 /* cylinder address, low byte (R/W) */ 2241057Swilliam #define wd_cyl_hi 0x5 /* cylinder address, high byte (R/W)*/ 2341057Swilliam #define wd_sdh 0x6 /* sector size/drive/head (R/W)*/ 2441057Swilliam #define wd_command 0x7 /* command register (W) */ 2541057Swilliam #define wd_status wd_command /* immediate status (R) */ 2641057Swilliam 2741057Swilliam #define wd_altsts 0x206 /*alternate fixed disk status(via 1015) (R)*/ 2841057Swilliam #define wd_ctlr 0x206 /*fixed disk controller control(via 1015) (W)*/ 2941057Swilliam #define wd_digin 0x207 /* disk controller input(via 1015) (R)*/ 3041057Swilliam 3141057Swilliam /* 3241057Swilliam * Status Bits. 3341057Swilliam */ 3441057Swilliam #define WDCS_BUSY 0x80 /* Controller busy bit. */ 3541057Swilliam #define WDCS_READY 0x40 /* Selected drive is ready */ 3641057Swilliam #define WDCS_WRTFLT 0x20 /* Write fault */ 3741057Swilliam #define WDCS_SEEKCMPLT 0x10 /* Seek complete */ 3841057Swilliam #define WDCS_DRQ 0x08 /* Data request bit. */ 3941057Swilliam #define WDCS_ECCCOR 0x04 /* ECC correction made in data */ 4041057Swilliam #define WDCS_INDEX 0x02 /* Index pulse from selected drive */ 4141057Swilliam #define WDCS_ERR 0x01 /* Error detect bit. */ 4241057Swilliam 4341057Swilliam #define WDCS_BITS "\020\010busy\006rdy\006wrtflt\005seekdone\004drq\003ecc_cor\002index\001err" 4441057Swilliam 4541057Swilliam #define WDERR_BITS "\020\010badblk\007uncorr\006id_crc\005no_id\003abort\002tr000\001no_dam" 4641057Swilliam 4741057Swilliam /* 4841057Swilliam * Commands for Disk Controller. 4941057Swilliam */ 5041057Swilliam #define WDCC_READ 0x20 /* disk read code */ 5141057Swilliam #define WDCC_WRITE 0x30 /* disk write code */ 5241057Swilliam #define WDCC_RESTORE 0x10 /* disk restore code -- resets cntlr */ 5341057Swilliam #define WDCC_FORMAT 0x50 /* disk format code */ 5441057Swilliam 5541057Swilliam #define WD_STEP 0 /* winchester- default 35us step */ 5641057Swilliam 5741057Swilliam #define WDSD_IBM 0xa0 /* forced to 512 byte sector, ecc */ 5841057Swilliam 59