Date: Mon, 01 Apr 96 13:44:39 PST From: "Brett Glass" <Brett_Glass@ccgate.infoworld.com> To: freebsd-hardware@freebsd.org Subject: Diffs, created using -c option this time Message-ID: <9603018283.AA828393031@ccgate.infoworld.com>
next in thread | raw e-mail | index | archive | help
At the request of Garrett Wollman, I'm sending the diffs again -- this
time, using diff -c. Note that x.y.orig is the original source, and x.y
is the new source.
--Brett
*** wd.c.orig Sun Mar 31 21:21:00 1996
--- wd.c Mon Apr 1 00:36:01 1996
***************
*** 103,108 ****
--- 103,114 ----
#define WDOPT_SLEEPHACK 0x4000
#define WDOPT_MULTIMASK 0x00ff
+ #define WDOPT_NO_IDLE_0 0x0100 /* Flags added by Brett Glass to shut off */
+ #define WDOPT_NO_IDLE_1 0x0200 /* inactivity timeout on some IDE drives, */
+ /* such as ST5660A. On each interface, */
+ /* 0x0100 and 0x0200 are for master and */
+ /* slave, respectively. */
+
static int wd_goaway(struct kern_devconf *, int);
static int wdc_goaway(struct kern_devconf *, int);
static int wd_externalize(struct proc *, struct kern_devconf *, void *,
size_t);
***************
*** 227,232 ****
--- 233,240 ----
#define DKFL_32BIT 0x00100 /* use 32-bit i/o mode */
#define DKFL_MULTI 0x00200 /* use multi-i/o mode */
#define DKFL_BADSCAN 0x00400 /* report all errors */
+ #define DKFL_NO_IDLE 0x00800 /* disk has had inactivity timer
+ turned off -BG */
struct wdparams dk_params; /* ESDI/IDE drive/controller parameters */
int dk_dkunit; /* disk stats unit number */
int dk_multi; /* multi transfers */
***************
*** 441,446 ****
--- 449,456 ----
printf(", multi-block-%d", du->dk_multi);
if (du->cfg_flags & WDOPT_SLEEPHACK)
printf(", sleep-hack");
+ if (du->dk_flags & DKFL_NO_IDLE)
+ printf(", inactivity timer disabled");
printf("\n");
if (du->dk_params.wdp_heads == 0)
printf("wd%d: size unknown, using %s values\n",
***************
*** 1608,1613 ****
--- 1618,1636 ----
}
} else {
du->dk_multi = 1;
+ }
+
+ /* If this drive should have its inactivity timer turned off, issue
+ the command to do it. If the command succeeds, then set a flag
+ in the disk's struct so that this can be displayed. -BG */
+
+ du->dk_flags &= ~DKFL_NO_IDLE; /* Assume command will fail */
+
+ /* Shift WDOPT_NO_IDLE_0 left if unit 1 to get WDOPT_NO_IDLE_1*/
+ if (flags & (WDOPT_NO_IDLE_0 << (du->dk_unit))) {
+ if (wdcommand(du, 0, 0, 0, 0, WDCC_IDLEMODE) == 0) {
+ du->dk_flags |= DKFL_NO_IDLE;
+ }
}
#ifdef NOTYET
------------------ Cut here ----------------
*** wdreg.h.orig Sun Mar 31 21:20:52 1996
--- wdreg.h Sun Mar 31 21:24:42 1996
***************
*** 97,102 ****
--- 97,105 ----
#define WDCC_EXTDCMD 0xE0 /* send extended command */
#define WDCC_READP 0xEC /* read parameters from controller */
#define WDCC_FEATURES 0xEF /* features control */
+ /* Following constant added by Brett Glass for the command that
+ disables/enables "green" mode on drives such as the Seagate ST5660A */
+ #define WDCC_IDLEMODE 0xFB /* configure active/idle mode -BG*/
#define WDFEA_RCACHE 0xAA /* read cache enable */
#define WDFEA_WCACHE 0x02 /* write cache enable */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9603018283.AA828393031>
