Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 03 Nov 1997 18:40:16 +0100
From:      Tommy Hallgren <md6tommy@mdstud.chalmers.se>
To:        freebsd-hackers@freebsd.org
Subject:   IDE util
Message-ID:  <345E0C80.41C67EA6@mdstud.chalmers.se>

next in thread | raw e-mail | index | archive | help
Hi!

I've made a small utility so one can set the spindown times on IDE
drives. Works great for me. I hope this helps those who wishes to keep
the drives quiet. I start it in autoexec.bat. I guess most people have
this functionality in their BIOS's. Well, my old computer don't have it.
:-/

Please take a look at the source, maybe I'm doing something wrong, I'm
not an expert coding IDE hardware.

regards, Tommy Hallgren(md6tommy@mdstud.chalmers.se)

/*
 * Program to set IDE drive spindown times. Made in November 1997 by
Tommy
 * Hallgren(md6tommy@mdstud.chalmers.se)
 * 
 * Please note that the drive spins down immediately when this program
is run.
 * 
 * Do whatever you feel like with this sourcecode.
 */

#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include "wdreg.h"		/* /sys/i386/isa/wdreg.h */

#define WDCC_STANDBY_APD 0xe2

void
wdwait(int base)
{
   unsigned char   status;


   status = inp(base + wd_status);

   while ((status & WDCS_BUSY) != 0)
      status = inp(base + wd_status);

}

void
wdsetsleep(int base, int drive, int mins)
{

   wdwait(base);

   printf("Setting sleep delay... ");

   outp(base + wd_seccnt, mins * 60 / 5);

   outp(base + wd_sdh, (drive & 1) << 4);

   outp(base + wd_command, WDCC_STANDBY_APD);

   wdwait(base);

   puts("ok");

}

int
main(int argc, char *argv[])
{

   int             base, drive, mins;


   if (argc != 4) {

      printf("Usage: %s base drive minutes", argv[0]);

      puts(" base: Portbase. 0x1f0 primary, 0x170 secondary.");

      puts("drive: 0 or 1.");

      puts(" mins: delay in minutes.");

      return (1);

   }
   sscanf(argv[1], "%x", &base);

   sscanf(argv[2], "%d", &drive);

   sscanf(argv[3], "%d", &mins);

   wdsetsleep(base, drive, mins);
   return 0;

}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?345E0C80.41C67EA6>