summaryrefslogtreecommitdiffstats
path: root/sys/i386
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1996-06-08 10:03:38 +0000
committerbde <bde@FreeBSD.org>1996-06-08 10:03:38 +0000
commitc27d4a25c1d410d1684b845e6b902c83d998e523 (patch)
treead82268a79b6e5ff2f569fbc05101e94fe9fe9e6 /sys/i386
parentff26b11d11d393fc0363aee1059370938fde1bbb (diff)
downloadFreeBSD-src-c27d4a25c1d410d1684b845e6b902c83d998e523.zip
FreeBSD-src-c27d4a25c1d410d1684b845e6b902c83d998e523.tar.gz
Fixed calculation of the number of cylinders. wdp_cylinders (was
wdp_fixedcyl) gives it directly. wdp_removedcyl is "reserved" except in ancient ATA-1 drafts and shouldn't be added. This fixes PR 1288. Changed some fields and comments in struct wdparams to match a less- ancient ATA draft. Fixed bit number for `rdy' in status string.
Diffstat (limited to 'sys/i386')
-rw-r--r--sys/i386/isa/wd.c11
-rw-r--r--sys/i386/isa/wdreg.h22
2 files changed, 15 insertions, 18 deletions
diff --git a/sys/i386/isa/wd.c b/sys/i386/isa/wd.c
index df0a0d8..d508982 100644
--- a/sys/i386/isa/wd.c
+++ b/sys/i386/isa/wd.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)wd.c 7.2 (Berkeley) 5/9/91
- * $Id: wd.c,v 1.107 1996/05/02 10:43:10 phk Exp $
+ * $Id: wd.c,v 1.108 1996/05/03 14:57:27 phk Exp $
*/
/* TODO:
@@ -1617,15 +1617,14 @@ failed:
#ifdef WDDEBUG
printf(
"\nwd(%d,%d): wdgetctlr: gc %x cyl %d trk %d sec %d type %d sz %d model %s\n",
- du->dk_ctrlr, du->dk_unit, wp->wdp_config,
- wp->wdp_fixedcyl + wp->wdp_removcyl, wp->wdp_heads,
- wp->wdp_sectors, wp->wdp_cntype, wp->wdp_cnsbsz,
- wp->wdp_model);
+ du->dk_ctrlr, du->dk_unit, wp->wdp_config, wp->wdp_cylinders,
+ wp->wdp_heads, wp->wdp_sectors, wp->wdp_buffertype,
+ wp->wdp_buffersize, wp->wdp_model);
#endif
/* update disklabel given drive information */
du->dk_dd.d_secsize = DEV_BSIZE;
- du->dk_dd.d_ncylinders = wp->wdp_fixedcyl + wp->wdp_removcyl /*+- 1*/ ;
+ du->dk_dd.d_ncylinders = wp->wdp_cylinders; /* +- 1 */
du->dk_dd.d_ntracks = wp->wdp_heads;
du->dk_dd.d_nsectors = wp->wdp_sectors;
du->dk_dd.d_secpercyl = du->dk_dd.d_ntracks * du->dk_dd.d_nsectors;
diff --git a/sys/i386/isa/wdreg.h b/sys/i386/isa/wdreg.h
index 426d2ff..20d37da 100644
--- a/sys/i386/isa/wdreg.h
+++ b/sys/i386/isa/wdreg.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)wdreg.h 7.1 (Berkeley) 5/9/91
- * $Id: wdreg.h,v 1.10 1995/11/04 17:07:58 bde Exp $
+ * $Id: wdreg.h,v 1.11 1996/01/28 22:16:20 wollman Exp $
*/
/*
@@ -71,7 +71,7 @@
#define WDCS_INDEX 0x02 /* Index pulse from selected drive */
#define WDCS_ERR 0x01 /* Error detect bit. */
-#define WDCS_BITS "\020\010busy\006rdy\006wrtflt\005seekdone\004drq\003ecc_cor\002index\001err"
+#define WDCS_BITS "\020\010busy\007rdy\006wrtflt\005seekdone\004drq\003ecc_cor\002index\001err"
#define WDERR_ABORT 0x04
#define WDERR_BITS "\020\010badblk\007uncorr\006id_crc\005no_id\003abort\002tr000\001no_dam"
@@ -111,23 +111,21 @@
*/
struct wdparams {
/* drive info */
- short wdp_config; /* general configuration */
- short wdp_fixedcyl; /* number of non-removable cylinders */
- short wdp_removcyl; /* number of removable cylinders */
+ short wdp_config; /* general configuration bits */
+ short wdp_cylinders; /* number of cylinders */
+ short wdp_reserved;
short wdp_heads; /* number of heads */
short wdp_unfbytespertrk; /* number of unformatted bytes/track */
short wdp_unfbytes; /* number of unformatted bytes/sector */
- short wdp_sectors; /* number of sectors */
- short wdp_minisg; /* minimum bytes in inter-sector gap*/
- short wdp_minplo; /* minimum bytes in postamble */
- short wdp_vendstat; /* number of words of vendor status */
+ short wdp_sectors; /* number of sectors per track */
+ short wdp_vendorunique[3];
/* controller info */
- char wdp_cnsn[20]; /* controller serial number */
- short wdp_cntype; /* controller type */
+ char wdp_serial[20]; /* serial number */
+ short wdp_buffertype; /* buffer type */
#define WDTYPE_SINGLEPORTSECTOR 1 /* single port, single sector buffer */
#define WDTYPE_DUALPORTMULTI 2 /* dual port, multiple sector buffer */
#define WDTYPE_DUALPORTMULTICACHE 3 /* above plus track cache */
- short wdp_cnsbsz; /* sector buffer size, in sectors */
+ short wdp_buffersize; /* buffer size, in 512-byte units */
short wdp_necc; /* ecc bytes appended */
char wdp_rev[8]; /* firmware revision */
char wdp_model[40]; /* model name */
OpenPOWER on IntegriCloud