diff options
author | christos <christos@pkgsrc.org> | 2006-12-04 04:42:03 +0000 |
---|---|---|
committer | christos <christos@pkgsrc.org> | 2006-12-04 04:42:03 +0000 |
commit | de8c712f62094aa551c8342f278ac4c2f4de8c7a (patch) | |
tree | 0f3f0ab406a096605e7a2709a3f3d2e135a20087 /sysutils | |
parent | 0c62619a4a1b623714f1ebfd7dbec96bf258e4b0 (diff) | |
download | pkgsrc-de8c712f62094aa551c8342f278ac4c2f4de8c7a.tar.gz |
Utility to switch on and off the lcd and external crt for intel 8xx graphics
chips.
Diffstat (limited to 'sysutils')
-rw-r--r-- | sysutils/i810switch/DESCR | 2 | ||||
-rw-r--r-- | sysutils/i810switch/Makefile | 16 | ||||
-rw-r--r-- | sysutils/i810switch/PLIST | 5 | ||||
-rw-r--r-- | sysutils/i810switch/distinfo | 8 | ||||
-rw-r--r-- | sysutils/i810switch/patches/patch-aa | 40 | ||||
-rw-r--r-- | sysutils/i810switch/patches/patch-ab | 24 | ||||
-rw-r--r-- | sysutils/i810switch/patches/patch-ac | 207 |
7 files changed, 302 insertions, 0 deletions
diff --git a/sysutils/i810switch/DESCR b/sysutils/i810switch/DESCR new file mode 100644 index 00000000000..798626524ff --- /dev/null +++ b/sysutils/i810switch/DESCR @@ -0,0 +1,2 @@ +Control the External CRT and LCD display on 810/855/865/915 Intel +graphics chips. diff --git a/sysutils/i810switch/Makefile b/sysutils/i810switch/Makefile new file mode 100644 index 00000000000..3e45aaba6bf --- /dev/null +++ b/sysutils/i810switch/Makefile @@ -0,0 +1,16 @@ +# $NetBSD: Makefile,v 1.1 2006/12/04 04:42:03 christos Exp $ +# + +DISTNAME= i810switch-0.6.5 +CATEGORIES= sysutils +MASTER_SITES= http://www16.plala.or.jp/mano-a-mano/i810switch/ + +MAINTAINER= christos@NetBSD.org +HOMEPAGE= http://www16.plala.or.jp/mano-a-mano/i810switch/ +COMMENT= Switch LCD/CRT 855/865/915 Intel chips + +ONLY_FOR_PLATFORM= NetBSD-*-i386 NetBSD-*-x86_64 Linux-*-i386 + +.include "../../mk/bsd.prefs.mk" + +.include "../../mk/bsd.pkg.mk" diff --git a/sysutils/i810switch/PLIST b/sysutils/i810switch/PLIST new file mode 100644 index 00000000000..09b00d68038 --- /dev/null +++ b/sysutils/i810switch/PLIST @@ -0,0 +1,5 @@ +@comment $NetBSD: PLIST,v 1.1 2006/12/04 04:42:03 christos Exp $ +sbin/i810switch +sbin/i810rotate +man/man1/i810switch.1 +man/man1/i810rotate.1 diff --git a/sysutils/i810switch/distinfo b/sysutils/i810switch/distinfo new file mode 100644 index 00000000000..8f6b1ca09f0 --- /dev/null +++ b/sysutils/i810switch/distinfo @@ -0,0 +1,8 @@ +$NetBSD: distinfo,v 1.1 2006/12/04 04:42:03 christos Exp $ + +SHA1 (i810switch-0.6.5.tar.gz) = 437adeb38f6530b5e68810fc5ee65fb5adaafd97 +RMD160 (i810switch-0.6.5.tar.gz) = 4acaea0c7c4197cdff30885a51f65cda3d3a6df9 +Size (i810switch-0.6.5.tar.gz) = 24287 bytes +SHA1 (patch-aa) = b4c7d7ab390e62d44ad08d9d15ce21748e6c46b8 +SHA1 (patch-ab) = 2f1635cc81e409043a6cd63d0609983428564f68 +SHA1 (patch-ac) = 7fab3fadeaabb34372a63b8bd0b7f10492a7fffe diff --git a/sysutils/i810switch/patches/patch-aa b/sysutils/i810switch/patches/patch-aa new file mode 100644 index 00000000000..6850b0c4eff --- /dev/null +++ b/sysutils/i810switch/patches/patch-aa @@ -0,0 +1,40 @@ +$NetBSD: patch-aa,v 1.1 2006/12/04 04:42:03 christos Exp $ +--- Makefile.orig 2003-12-31 09:51:40.000000000 -0500 ++++ Makefile 2006-12-03 23:40:16.000000000 -0500 +@@ -1,7 +1,4 @@ +-OBJECTS = i810switch.o +- +-%.o: %.c +- $(CC) $(CFLAGS) -c -o $@ $< ++OBJECTS = i810switch.o getline.o + + all: i810switch + +@@ -9,16 +6,19 @@ + $(CC) $(CFLAGS) -o $@ $(OBJECTS) + + install: i810switch +- install -d $(DESTDIR)/usr/bin +- install -d $(DESTDIR)/usr/share/man/man1 +- install i810switch i810rotate $(DESTDIR)/usr/bin +- install i810switch.1.gz i810rotate.1.gz $(DESTDIR)/usr/share/man/man1 ++ install -d $(PREFIX)/bin ++ install -d $(PREFIX)/man/man1 ++ install i810switch $(PREFIX)/sbin ++ ln $(PREFIX)/sbin/i810switch $(PREFIX)/sbin/i810rotate ++ install i810switch.1.gz i810rotate.1.gz $(PREFIX)/man/man1 ++ gunzip $(PREFIX)/man/man1/i810switch.1.gz ++ gunzip $(PREFIX)/man/man1/i810rotate.1.gz + + uninstall: +- rm -f $(DESTDIR)/usr/bin/i810switch +- rm -f $(DESTDIR)/usr/bin/i810rotate +- rm -f $(DESTDIR)/usr/share/man/man1/i810switch.1.gz +- rm -f $(DESTDIR)/usr/share/man/man1/i810rotate.1.gz ++ rm -f $(PREFIX)/usr/bin/i810switch ++ rm -f $(PREFIX)/usr/bin/i810rotate ++ rm -f $(PREFIX)/usr/share/man/man1/i810switch.1.gz ++ rm -f $(PREFIX)/usr/share/man/man1/i810rotate.1.gz + + clean: + @rm -f $(OBJECTS) i810switch diff --git a/sysutils/i810switch/patches/patch-ab b/sysutils/i810switch/patches/patch-ab new file mode 100644 index 00000000000..83a5d07b634 --- /dev/null +++ b/sysutils/i810switch/patches/patch-ab @@ -0,0 +1,24 @@ +$NetBSD: patch-ab,v 1.1 2006/12/04 04:42:03 christos Exp $ +--- getline.c 1969-12-31 19:00:00.000000000 -0500 ++++ getline.c 2006-12-03 23:16:23.000000000 -0500 +@@ -0,0 +1,20 @@ ++#include <stdio.h> ++#ifdef __NetBSD__ ++int ++getline(char **buf, size_t *len, FILE *fp) ++{ ++ static char *b; ++ if (b) ++ free(b); ++ for (;;) { ++ if ((*buf = fparseln(fp, len, NULL, NULL, 0)) == NULL) ++ return 0; ++ if (*len == 0) { ++ free(*buf); ++ continue; ++ } ++ b = *buf; ++ return *len; ++ } ++} ++#endif diff --git a/sysutils/i810switch/patches/patch-ac b/sysutils/i810switch/patches/patch-ac new file mode 100644 index 00000000000..53937f5fed2 --- /dev/null +++ b/sysutils/i810switch/patches/patch-ac @@ -0,0 +1,207 @@ +$NetBSD: patch-ac,v 1.1 2006/12/04 04:42:03 christos Exp $ +--- i810switch.c 2005-06-12 00:36:36.000000000 -0400 ++++ i810switch.c 2006-12-03 23:12:44.000000000 -0500 +@@ -1,3 +1,4 @@ ++#include <assert.h> + #include <stdarg.h> + #include <stdlib.h> + #include <fcntl.h> +@@ -9,7 +10,11 @@ + #include <errno.h> + + #define VERSION "0.6.5beta" ++#ifdef __NetBSD__ ++#define CMD_LSPCI "pcictl /dev/pci0" ++#else + #define CMD_LSPCI "lspci" ++#endif + + static const char *Opt_lcd = NULL; + static const char *Opt_crt = NULL; +@@ -49,19 +54,31 @@ + + + /* PCI IDs */ +-#define I810STR "8086:7121" +-#define I810ESTR "8086:7123" +-#define I810_DC100STR_1 "8086:7125" +-#define I810_DC100STR_2 "8086:1102" +-#define I810_IGSTR "8086:1112" +-#define I810_CFCSTR "8086:1132" +-#define I830STR "8086:3577" +-#define I845STR "8086:2562" +-#define I855STR "8086:3582" +-//#define I865STR "8086:2572" +-#define I915STR "8086:2592" +-#define MEMSTR "Memory at" ++static const struct { ++ char *id; ++ int type; ++} i8xx[] = { ++/* I810STR */ { "7121", I810 }, ++/* I810ESTR */ { "7123", I810 }, ++/* I810_DC100STR_1 */ { "7125", I810 }, ++/* I810_DC100STR_2 */ { "1102", I810 }, ++/* I810_IGSTR */ { "1112", I810 }, ++/* I810_CFCSTR */ { "1132", I810 }, ++/* I830STR */ { "3577", I830 }, ++/* I845STR */ { "2562", I855 }, ++/* I855STR */ { "3582", I855 }, ++/* I865STR { "2572", I865 }, */ ++/* I915STR */ { "2592", I915 }, ++ { NULL, 0 }, ++}; ++ ++#ifdef __NetBSD__ ++#define NONPRSTR "32-bit nonprefetchable memory" ++#define MEMSTR "base:" ++#else + #define NONPRSTR "32-bit, non-prefetchable" ++#define MEMSTR "Memory at" ++#endif + + /* I810 registers */ + #define I810_HVSYNC 0x05000 +@@ -247,43 +264,25 @@ + { + int i; + char *p; ++ char buf[10]; + + while (getline(buff_ptr, len_ptr, pci_f) > 0) { +- i = (p = strstr(*buff_ptr, I810STR)) != NULL || +- (p = strstr(*buff_ptr, I810ESTR)) != NULL || +- (p = strstr(*buff_ptr, I810_DC100STR_1)) != NULL || +- (p = strstr(*buff_ptr, I810_DC100STR_2)) != NULL || +- (p = strstr(*buff_ptr, I810_IGSTR)) != NULL || +- (p = strstr(*buff_ptr, I810_CFCSTR)) != NULL; +- if (i) +- { +- *chiptype = I810; +- return p; +- } +- +- i = (p = strstr(*buff_ptr, I830STR)) != NULL || +-#if defined (I865STR) +- (p = strstr(*buff_ptr, I865STR)) != NULL || +-#endif /*defined (I865STR)*/ +- (p = strstr(*buff_ptr, I845STR)) != NULL; +- if (i) +- { +- *chiptype = I830; +- return p; +- } +- +- i = (p = strstr(*buff_ptr, I855STR)) != NULL; +- if (i) +- { +- *chiptype = I855; +- return p; +- } +- +- i = (p = strstr(*buff_ptr, I915STR)) != NULL; +- if (i) +- { +- *chiptype = I915; ++ for (i = 0; i8xx[i].id != NULL; i++) { ++#ifdef __NetBSD__ ++ snprintf(buf, sizeof(buf), "%s8086", i8xx[i].id); ++#else ++ snprintf(buf, sizeof(buf), "8086:%s", i8xx[i].id); ++#endif ++ if ((p = strstr(*buff_ptr, buf)) != NULL) ++ break; ++ } ++ if (i8xx[i].id) { ++ *chiptype = i8xx[i].type; ++#ifdef __NetBSD__ ++ return *buff_ptr; ++#else + return p; ++#endif + } + } + return NULL; +@@ -293,12 +292,16 @@ + { + char *p; + +- while (getline(buff_ptr, len_ptr, pci_f) > 0) ++ while (getline(buff_ptr, len_ptr, pci_f) > 0) { + if (strstr(*buff_ptr, NONPRSTR) != NULL) { ++#ifdef __NetBSD__ ++ assert(getline(buff_ptr, len_ptr, pci_f) > 0); ++#endif + p = strstr(*buff_ptr, MEMSTR); + if (p != NULL) + return strtoul(p+sizeof(MEMSTR), NULL, 16); + } ++ } + return 0; + } + +@@ -319,7 +322,11 @@ + int i, crt = -1, lcd = -1, probe = 0, err = 0, count = 0, chiptype, len = 0; + FILE *pci_f; + char *buff = NULL; ++#ifdef __NetBSD__ ++ char lspcistr[] = CMD_LSPCI " dump -d %d -f %d"; ++#else + char lspcistr[] = CMD_LSPCI " -v -d xxxx:xxxx"; ++#endif + char *chip; + + putenv("PATH=/sbin:/usr/sbin:/bin:/usr/bin"); +@@ -357,7 +364,11 @@ + } + } + +- pci_f = popen(CMD_LSPCI " -n", "r"); ++ pci_f = popen(CMD_LSPCI ++#ifdef __NetBSD__ ++ " list" ++#endif ++ " -n", "r"); + if (!pci_f) { + fprintf(stderr, "Something is wrong with lspci.\n"); + exit(1); +@@ -369,6 +380,19 @@ + } + pclose(pci_f); + ++#ifdef __NetBSD__ ++ { ++ char cmd[100]; ++ int dev = -1, fun = -1; ++ sscanf(chip, "000:%d:%d:", &dev, &fun); ++ if (dev == -1 || fun == -1) { ++ fprintf(stderr, "CMD_LSPCI is wrong.\n"); ++ exit(1); ++ } ++ snprintf(cmd, sizeof(cmd), lspcistr, dev, fun); ++ pci_f = popen(cmd, "r"); ++ } ++#else + { + char *p = strstr(lspcistr, "xxxx:xxxx"); + if (p == 0) { +@@ -376,16 +400,17 @@ + exit(1); + } + memcpy(p, chip, 9); ++ pci_f = popen(lspcistr, "r"); + } ++#endif + +- pci_f = popen(lspcistr, "r"); + if (!pci_f) { + fprintf(stderr, "Something is wrong with lspci.\n"); + exit(1); + } + addr = i810_addr(&buff, &len, pci_f); + if (addr == 0) { +- fprintf(stderr, "Something is wrong with lspci.\n"); ++ fprintf(stderr, "Something is wrong with lspci.\n"); + exit(1); + } + pclose(pci_f); |