diff options
-rw-r--r-- | usr.sbin/pccard/pccardd/Makefile | 4 | ||||
-rw-r--r-- | usr.sbin/pccard/pccardd/cardd.c | 18 | ||||
-rw-r--r-- | usr.sbin/pccard/pccardd/sample.config | 25 |
3 files changed, 30 insertions, 17 deletions
diff --git a/usr.sbin/pccard/pccardd/Makefile b/usr.sbin/pccard/pccardd/Makefile index 4a2c192..b1b0eb6 100644 --- a/usr.sbin/pccard/pccardd/Makefile +++ b/usr.sbin/pccard/pccardd/Makefile @@ -1,10 +1,12 @@ # Makefile for pccardd PROG= pccardd -SRCS= cardd.c file.c util.c readcis.c +SRCS= cardd.c file.c util.c readcis.c printcis.c MAN8= pccardd.8 MAN5= pccard.conf.5 DPADD= ${LIBUTIL} LDADD= -lutil +CFLAGS= -I${.CURDIR} -I${.CURDIR}/../pccardc +.PATH: ${.CURDIR}/../pccardc .include <bsd.prog.mk> diff --git a/usr.sbin/pccard/pccardd/cardd.c b/usr.sbin/pccard/pccardd/cardd.c index b705d15..bcb1f47 100644 --- a/usr.sbin/pccard/pccardd/cardd.c +++ b/usr.sbin/pccard/pccardd/cardd.c @@ -275,12 +275,14 @@ card_inserted(struct slot *sp) { struct card *cp; + sleep(5); sp->cis = readcis(sp->fd); if (sp->cis == 0) { log_1s("Error reading CIS on %s\n", sp->name); return; } + dumpcis(sp->cis); for (cp = cards; cp; cp = cp->next) if (strcmp(cp->manuf, sp->cis->manuf) == 0 && strcmp(cp->version, sp->cis->vers) == 0) @@ -291,7 +293,8 @@ struct card *cp; */ if (cp == 0) { - log_1s("No card in database for %s", sp->cis->manuf); + log_1s("No card in database for \"%s\"", sp->cis->manuf); + log_1s("vers: \"%s\"", sp->cis->vers); return; } if (cp->ether) @@ -339,6 +342,9 @@ unsigned char net_addr[12]; sp->eaddr[3] = net_addr[6]; sp->eaddr[4] = net_addr[8]; sp->eaddr[5] = net_addr[10]; + printf("Ether=%02x:%02x:%02x:%02x:%02x:%02x\n", + sp->eaddr[0], sp->eaddr[1], sp->eaddr[2], + sp->eaddr[3], sp->eaddr[4], sp->eaddr[5]); } /* * assign_driver - Assign driver to card. @@ -491,6 +497,7 @@ struct cis_config *cisconf, *defconf; #ifdef DEBUG fprintf(stderr, "Using mem addr 0x%x, size %d, card addr 0x%x\n", sp->mem.addr, sp->mem.cardaddr, sp->mem.size); + sp->mem.cardaddr = 0x4000; #endif /* DEBUG */ } /* @@ -614,10 +621,13 @@ int rw_flags; #endif } mem.window = 0; - if (sp->mem.size) +#ifdef DEBUG + printf("Mem@ %x %d %x\n",sp->mem.addr, sp->mem.size, sp->mem.cardaddr); +#endif + if (sp->mem.addr) { mem.window = 0; - mem.flags = sp->mem.flags; + mem.flags = sp->mem.flags | MDF_ACTIVE; mem.start = (caddr_t)sp->mem.addr; mem.card = sp->mem.cardaddr; mem.size = sp->mem.size; @@ -656,7 +666,6 @@ int rw_flags; strcpy(drv.name, drvp->kernel); drv.unit = drvp->unit; drv.irqmask = 1 << sp->irq; - drv.irqmask = 0; drv.flags = 0x80; if (sp->mem.size) { @@ -680,6 +689,7 @@ int rw_flags; * If the driver fails to be connected to the device, * then it may mean that the driver did not recognise it. */ + memcpy(drv.misc,sp->eaddr,6); if (ioctl(sp->fd, PIOCSDRV, &drv)) { #ifdef DEBUG diff --git a/usr.sbin/pccard/pccardd/sample.config b/usr.sbin/pccard/pccardd/sample.config index cb9552f..9072f52 100644 --- a/usr.sbin/pccard/pccardd/sample.config +++ b/usr.sbin/pccard/pccardd/sample.config @@ -3,20 +3,21 @@ # # Pool parameters. # -io 0x2F8 - 0x360 -irq 5 6 8 9 10 15 +io 0x280 - 0x360 +irq 3 5 6 8 9 10 15 memory 0xd4000 96k # # Card database. # -card "RPTI LTD." "EP400" # NE2000 clone - ether 0x110 - config 0x30 "ed0" 5 - config 0x31 "ed1" 6 - insert ifconfig $device physical $ether - insert ifconfig $device bean +# card "RPTI LTD." "EP400" # NE2000 clone +# ether 0x110 +# config 0x30 "ed0" 5 +# config 0x31 "ed1" 6 +# insert ifconfig $device physical $ether +# insert ifconfig $device bean -card "RIPICAA" "RC144ACL" - config 0x21 "sio1" 10 20 - insert echo start getty here - remove echo stop getty +card "MEGAHERTZ" "CC3144" + config 0x21 "sio1" 5 + +card "Digital" "PCMCIA 28,800 V.34 " + config 0x03 "sio1" 10 |