From f009429503ec5714fe7d40f1eba504b980586ede Mon Sep 17 00:00:00 2001 From: christos Date: Mon, 4 Dec 2006 04:42:03 +0000 Subject: Utility to switch on and off the lcd and external crt for intel 8xx graphics chips. --- sysutils/i810switch/patches/patch-aa | 40 +++++++ sysutils/i810switch/patches/patch-ab | 24 ++++ sysutils/i810switch/patches/patch-ac | 207 +++++++++++++++++++++++++++++++++++ 3 files changed, 271 insertions(+) create mode 100644 sysutils/i810switch/patches/patch-aa create mode 100644 sysutils/i810switch/patches/patch-ab create mode 100644 sysutils/i810switch/patches/patch-ac (limited to 'sysutils/i810switch/patches') 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 ++#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 + #include + #include + #include +@@ -9,7 +10,11 @@ + #include + + #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); -- cgit v1.2.3