From owner-freebsd-mobile Tue Aug 6 15:31:48 1996 Return-Path: owner-mobile Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id PAA05956 for mobile-outgoing; Tue, 6 Aug 1996 15:31:48 -0700 (PDT) Received: from rocky.mt.sri.com (rocky.mt.sri.com [206.127.76.100]) by freefall.freebsd.org (8.7.5/8.7.3) with ESMTP id PAA05950 for ; Tue, 6 Aug 1996 15:31:39 -0700 (PDT) Received: (from nate@localhost) by rocky.mt.sri.com (8.7.5/8.7.3) id QAA29192; Tue, 6 Aug 1996 16:31:36 -0600 (MDT) Date: Tue, 6 Aug 1996 16:31:36 -0600 (MDT) Message-Id: <199608062231.QAA29192@rocky.mt.sri.com> From: Nate Williams To: mobile@freebsd.org Cc: hosokawa@mt.cs.keio.ac.jp, Nate Williams Subject: Pccardc complete diffs Sender: owner-mobile@freebsd.org X-Loop: FreeBSD.org Precedence: bulk OK, here's a resend of the pccardc patches. If you have the first set you can ignore these as I've made only minor-formatting changes (fixed a mis-spelling, etc..) and no functional changes. I'm resending these so folks can grab them again if they missed them the first time. Again, these should be applied against a FreeBSD-current system as of today (8/6/96), and when I make changes against -current I'll provide a new set of patches for folks to apply. Nate ----- # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # cdif # beep.c # power.c # rdattr.c # echo x - cdif sed 's/^X//' >cdif << 'END-of-cdif' XIndex: Makefile X=================================================================== XRCS file: /home/CVS/src/usr.sbin/pccard/pccardc/Makefile,v Xretrieving revision 1.2 Xdiff -c -r1.2 Makefile X*** Makefile 1996/04/09 23:31:51 1.2 X--- Makefile 1996/08/06 17:19:32 X*************** X*** 5,12 **** X # X PROG= pccardc X NOMAN= noman X! SRCS= pccardc.c dumpcis.c readcis.c printcis.c enabler.c pccardmem.c \ X! rdmap.c rdreg.c wrattr.c wrreg.c X X CFLAGS+= -I. -I${.CURDIR}/../pccardd X X--- 5,12 ---- X # X PROG= pccardc X NOMAN= noman X! SRCS= beep.c dumpcis.c enabler.c pccardc.c pccardmem.c power.c printcis.c \ X! rdattr.c rdmap.c rdreg.c readcis.c wrattr.c wrreg.c X X CFLAGS+= -I. -I${.CURDIR}/../pccardd X XIndex: pccardc.c X=================================================================== XRCS file: /home/CVS/src/usr.sbin/pccard/pccardc/pccardc.c,v Xretrieving revision 1.3 Xdiff -c -r1.3 pccardc.c X*** pccardc.c 1996/04/18 04:24:54 1.3 X--- pccardc.c 1996/08/06 17:27:38 X*************** X*** 31,40 **** X--- 31,43 ---- X typedef int (*main_t)(int, char **); X X #define DECL(foo) int foo(int, char**); X+ DECL(beep_main); X DECL(dumpcis_main); X DECL(enabler_main); X DECL(help_main); X DECL(pccardmem_main); X+ DECL(power_main); X+ DECL(rdattr_main); X DECL(rdmap_main); X DECL(rdreg_main); X DECL(wrattr_main); X*************** X*** 45,54 **** X--- 48,60 ---- X main_t func; X char *help; X } subcommands[] = { X+ { "beep", beep_main, "Beep type" }, X { "dumpcis", dumpcis_main, "Prints CIS for all cards" }, X { "enabler", enabler_main, "Device driver enabler" }, X { "help", help_main, "Prints command summary" }, X { "pccardmem", pccardmem_main, "Allocate memory for pccard driver" }, X+ { "power", power_main, "Power on/off slots" }, X+ { "rdattr", rdattr_main, "Read attribute memory" }, X { "rdmap", rdmap_main, "Read pcic mappings" }, X { "rdreg", rdreg_main, "Read pcic register" }, X { "wrattr", wrattr_main, "Write byte to attribute memory" }, X*************** X*** 81,87 **** X fprintf(stderr, "\t%s ...\n", argv[0]); X fprintf(stderr, "Subcommands:\n"); X for (i = 0; subcommands[i].name; i++) X! fprintf(stderr, "\t%s\n\t\t%s\n", X subcommands[i].name, subcommands[i].help); X return 1; X } X--- 87,93 ---- X fprintf(stderr, "\t%s ...\n", argv[0]); X fprintf(stderr, "Subcommands:\n"); X for (i = 0; subcommands[i].name; i++) X! fprintf(stderr, "\t%s\t: %s\n", X subcommands[i].name, subcommands[i].help); X return 1; X } XIndex: printcis.c X=================================================================== XRCS file: /home/CVS/src/usr.sbin/pccard/pccardc/printcis.c,v Xretrieving revision 1.5 Xdiff -c -r1.5 printcis.c X*** printcis.c 1996/08/01 15:45:46 1.5 X--- printcis.c 1996/08/06 17:21:22 X*************** X*** 25,30 **** X--- 25,36 ---- X * X * $Id: printcis.c,v 1.5 1996/08/01 15:45:46 nate Exp $ X */ X+ X+ /* X+ * Code cleanup, bug-fix and extension X+ * by Tatsumi Hosokawa X+ */ X+ X #include X #include X #include X*************** X*** 236,242 **** X case 5: X case 6: X case 7: X- case 8: X printf("(custom)"); X break; X } X--- 242,247 ---- X*************** X*** 282,304 **** X break; X } X if (feat & CIS_FEAT_TIMING) { X! i = CIS_WAIT_SCALE(*p); X! j = CIS_READY_SCALE(*p); X! p++; X! if (i != 3) { X printf("\tWait scale "); X! print_ext_speed(*p, i); X! while (*p & 0x80) X! p++; X printf("\n"); X } X if (j != 7) { X printf("\tRDY/BSY scale "); X! print_ext_speed(*p, j); X! while (*p & 0x80) X! p++; X printf("\n"); X } X } X if (feat & CIS_FEAT_I_O) { X if (CIS_IO_ADDR(*p)) X--- 287,311 ---- X break; X } X if (feat & CIS_FEAT_TIMING) { X! i = *p++; X! j = CIS_WAIT_SCALE(i); X! if (j != 3) { X printf("\tWait scale "); X! print_ext_speed(*p++, j); X printf("\n"); X } X+ j = CIS_READY_SCALE(i); X if (j != 7) { X printf("\tRDY/BSY scale "); X! print_ext_speed(*p++, j); X printf("\n"); X } X+ j = CIS_RESERVED_SCALE(i); X+ if (j != 7) { X+ printf("\tExternal scale "); X+ print_ext_speed(*p++, j); X+ printf("\n"); X+ } X } X if (feat & CIS_FEAT_I_O) { X if (CIS_IO_ADDR(*p)) X*************** X*** 320,327 **** X break; X } X printf("\n"); X! if (*p & CIS_IO_RANGE) { X! p++; X c = *p++; X for (i = 0; i <= CIS_IO_BLKS(c); i++) { X printf("\t\tI/O address # %d: ", i + 1); X--- 327,333 ---- X break; X } X printf("\n"); X! if (*p++ & CIS_IO_RANGE) { X c = *p++; X for (i = 0; i <= CIS_IO_BLKS(c); i++) { X printf("\t\tI/O address # %d: ", i + 1); X*************** X*** 380,386 **** X printf("%c Shared", c); X printf("\n"); X if (*p & CIS_IRQ_MASK) { X! i = p[0] | (p[1] << 8); X printf("\t\tIRQs: "); X if (*p & 1) X printf(" NMI"); X--- 386,392 ---- X printf("%c Shared", c); X printf("\n"); X if (*p & CIS_IRQ_MASK) { X! i = p[1] | (p[2] << 8); X printf("\t\tIRQs: "); X if (*p & 1) X printf(" NMI"); X*************** X*** 589,595 **** X len--; X if (*p) { X printf("\t\t"); X! print_ext_speed(*p, 0); X while (*p & 0x80) { X p++; X len--; X--- 595,601 ---- X len--; X if (*p) { X printf("\t\t"); X! print_ext_speed(*p++, 0); X while (*p & 0x80) { X p++; X len--; END-of-cdif echo x - beep.c sed 's/^X//' >beep.c << 'END-of-beep.c' X/* X * Copyright (c) 1995 Andrew McRae. All rights reserved. X * X * Redistribution and use in source and binary forms, with or without X * modification, are permitted provided that the following conditions X * are met: X * 1. Redistributions of source code must retain the above copyright X * notice, this list of conditions and the following disclaimer. X * 2. Redistributions in binary form must reproduce the above copyright X * notice, this list of conditions and the following disclaimer in the X * documentation and/or other materials provided with the distribution. X * 3. The name of the author may not be used to endorse or promote products X * derived from this software without specific prior written permission. X * X * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR X * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES X * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. X * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, X * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT X * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, X * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY X * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT X * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF X * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. X */ X X/* X * Code cleanup, bug-fix and extension X * by Tatsumi Hosokawa X */ X X#include X#include X#include X#include X#include X#include X#include X X#include X Xint Xbeep_main(argc, argv) X int argc; X char *argv[]; X{ X int fd, newstat, valid = 1; X char name[64], *p; X X if (argc != 2) X valid = 0; X if (valid) { X for (p = argv[1]; *p; p++) { X if (!isdigit(*p)) { X valid = 0; X break; X } X } X } X if (!valid) { X fprintf(stderr, "usage: %s beep newstat\n", argv[0]); X exit(1); X } X sscanf(argv[1], "%d", &newstat); X sprintf(name, CARD_DEVICE, 0); X fd = open(name, O_RDWR); X if (fd < 0) { X perror(name); X exit(1); X } X X if (ioctl(fd, PIOCSBEEP, &newstat) < 0) { X perror("beep"); X exit(1); X } X X return 0; X} END-of-beep.c echo x - power.c sed 's/^X//' >power.c << 'END-of-power.c' X/* X * Copyright (c) 1995 Andrew McRae. All rights reserved. X * X * Redistribution and use in source and binary forms, with or without X * modification, are permitted provided that the following conditions X * are met: X * 1. Redistributions of source code must retain the above copyright X * notice, this list of conditions and the following disclaimer. X * 2. Redistributions in binary form must reproduce the above copyright X * notice, this list of conditions and the following disclaimer in the X * documentation and/or other materials provided with the distribution. X * 3. The name of the author may not be used to endorse or promote products X * derived from this software without specific prior written permission. X * X * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR X * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES X * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. X * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, X * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT X * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, X * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY X * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT X * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF X * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. X */ X X/* X * Code cleanup, bug-fix and extension X * by Tatsumi Hosokawa X */ X X#include X#include X#include X#include X#include X#include X#include X X#include X Xint Xpower_main(argc, argv) X int argc; X char *argv[]; X{ X int fd, i, newstat, valid = 1; X char name[64], *p; X X if (argc != 3) X valid = 0; X for (i = 1; i <= 2; i++) { X if (valid) { X for (p = argv[i]; *p; p++) { X if (!isdigit(*p)) { X valid = 0; X break; X } X } X } X } X if (!valid) { X fprintf(stderr, "usage: %s power slot newstat\n", argv[0]); X exit(1); X } X sscanf(argv[2], "%d", &newstat); X sprintf(name, CARD_DEVICE, atoi(argv[1])); X fd = open(name, O_RDWR); X if (fd < 0) { X perror(name); X exit(1); X } X X newstat = newstat ? 1 : 0; X if (ioctl(fd, PIOCSVIR, &newstat) < 0) { X perror("ioctl"); X exit(1); X } X X return 0; X} END-of-power.c echo x - rdattr.c sed 's/^X//' >rdattr.c << 'END-of-rdattr.c' X/* X * Copyright (c) 1995 Andrew McRae. All rights reserved. X * X * Redistribution and use in source and binary forms, with or without X * modification, are permitted provided that the following conditions X * are met: X * 1. Redistributions of source code must retain the above copyright X * notice, this list of conditions and the following disclaimer. X * 2. Redistributions in binary form must reproduce the above copyright X * notice, this list of conditions and the following disclaimer in the X * documentation and/or other materials provided with the distribution. X * 3. The name of the author may not be used to endorse or promote products X * derived from this software without specific prior written permission. X * X * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR X * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES X * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. X * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, X * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT X * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, X * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY X * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT X * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF X * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. X */ X X/* X * Code cleanup, bug-fix and extension X * by Tatsumi Hosokawa X */ X X#include X#include X#include X#include X#include X#include X X#include X Xint Xrdattr_main(argc, argv) X int argc; X char *argv[]; X{ X int i, reg, length; X char name[64]; X u_char *buf; X int fd; X off_t offs; X X if (argc != 4) { X fprintf(stderr, "usage: %s rdattr slot offs length\n", argv[0]); X exit(1); X } X sprintf(name, CARD_DEVICE, atoi(argv[1])); X fd = open(name, 2); X if (fd < 0) { X perror(name); X exit(1); X } X reg = MDF_ATTR; X if (ioctl(fd, PIOCRWFLAG, ®)) { X perror("ioctl (PIOCRWFLAG)"); X exit(1); X } X if (sscanf(argv[2], "%x", ®) != 1 || X sscanf(argv[3], "%x", &length) != 1) { X fprintf(stderr, "arg error\n"); X exit(1); X } X offs = reg; X if ((buf = malloc(length)) == 0) { X perror(name); X exit(1); X } X lseek(fd, offs, SEEK_SET); X if (read(fd, buf, length) != length) { X perror(name); X exit(1); X } X for (i = 0; i < length; i++) { X if (i % 16 == 0) { X printf("%04x: ", (int) offs + i); X } X printf("%02x ", buf[i]); X if (i % 16 == 15) { X printf("\n"); X } X } X if (i % 16 != 0) { X printf("\n"); X } X return 0; X} END-of-rdattr.c exit