From 378985a6c3007d9128fc32416cb2666f44dcf260 Mon Sep 17 00:00:00 2001 From: Stef Walter Date: Fri, 28 Nov 2008 16:36:58 +0000 Subject: Import project for detecting environment variables on net4826 and net4526 boxes. --- env4826.c | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 env4826.c (limited to 'env4826.c') diff --git a/env4826.c b/env4826.c new file mode 100644 index 0000000..ead49a9 --- /dev/null +++ b/env4826.c @@ -0,0 +1,129 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define BASE 0x200 + +static void +usage() +{ + fprintf(stderr, "usage: env4826 [-i seconds]\n"); + exit(2); +} + +static void +pollb(void) +{ + int j, k, l; + + j = 0; + do { + if (++j > 1000) + break; + l = inb (BASE + 1); + } while (!(l & 0x40)); +} + +static int +read_temp() +{ + u_int u; + + u = inl(0x6000 + 0x30); + u &= ~(1 << 19); + u |= 1 << 19; + outl(0x6000 + 0x30, u); + u = inl(0x6000 + 0x30); + + outb(0x15c, 0x07); outb(0x15d, 0x06); /* ACB2 */ + outb(0x15c, 0x60); outb(0x15d, BASE >> 8); /* base addr MSB */ + outb(0x15c, 0x61); outb(0x15d, BASE & 0xff); /* base addr LSB */ + outb(0x15c, 0x30); outb(0x15d, 0x01); /* enable */ + outb(0x15c, 0xf0); outb(0x15d, 0x02); /* internal pull-up */ + + outb(BASE + 5, 0); + + outb(BASE + 5, 0xfe | 0x01); + + usleep(100000); + outb(BASE + 3, 0x01); + pollb(); + outb(BASE + 0, 0x90); + pollb(); + outb(BASE + 0, 0x00); + pollb(); + outb(BASE + 3, 0x02); + + outb(BASE + 3, 0x01); + + pollb(); + + outb(BASE + 0, 0x91); + + pollb(); + + outb(BASE + 3, 0x10); + + u = inb(BASE + 0) << 8; + + pollb(); + + u |= inb(BASE + 0); + + outb(BASE + 3, 0x02); + + printf("lm75: %.2fC\n", u / 256.0); + + outb(BASE + 5, 0); + usleep(100000); + + return 0; +} + +int +main(int argc, char **argv) +{ + int seconds = 0; + char *t; + FILE *f; + int ch; + + while ((ch = getopt (argc, argv, "i:")) != -1) { + switch(ch) { + case 'i': + seconds = strtol (optarg, &t, 10); + if (*t || seconds < 0) + usage (); + break; + default: + usage (); + break; + } + } + + argc -= optind; + argv += optind; + + if (argc != 0) + usage (); + + f = fopen("/dev/io", "r"); + if (!f) + err (1, "couldn't open /dev/io"); + + for (;;) { + read_temp (); + fflush(stdout); + if (!seconds) + break; + sleep (seconds); + } + + return 0; +} -- cgit v1.2.3