diff options
-rw-r--r-- | sys/dev/pcmcia/files.pcmcia | 7 | ||||
-rw-r--r-- | sys/dev/pcmcia/pcmcia.c | 12 | ||||
-rw-r--r-- | sys/dev/pcmcia/pcmcia_conf.c | 5 |
3 files changed, 16 insertions, 8 deletions
diff --git a/sys/dev/pcmcia/files.pcmcia b/sys/dev/pcmcia/files.pcmcia index aed8e876568..725632921de 100644 --- a/sys/dev/pcmcia/files.pcmcia +++ b/sys/dev/pcmcia/files.pcmcia @@ -1,5 +1,5 @@ -# $OpenBSD: files.pcmcia,v 1.6 1996/11/30 13:39:25 niklas Exp $ -# $Id: files.pcmcia,v 1.6 1996/11/30 13:39:25 niklas Exp $ +# $OpenBSD: files.pcmcia,v 1.7 1997/08/19 21:59:49 angelos Exp $ +# $Id: files.pcmcia,v 1.7 1997/08/19 21:59:49 angelos Exp $ # # Config.new file and device description for machine-independent PCMCIA code. # Included by ports that need it. @@ -28,3 +28,6 @@ file dev/pcmcia/com_pcmcia.c com_pcmcia # device declaration in sys/conf/files attach ep at pcmcia with ep_pcmcia file dev/pcmcia/if_ep_pcmcia.c ep_pcmcia + +attach wlp at pcmcia with wlp_pcmcia +file dev/pcmcia/if_wlp_pcmcia.c wlp_pcmcia diff --git a/sys/dev/pcmcia/pcmcia.c b/sys/dev/pcmcia/pcmcia.c index dacf4250e70..16a80a669bd 100644 --- a/sys/dev/pcmcia/pcmcia.c +++ b/sys/dev/pcmcia/pcmcia.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pcmcia.c,v 1.9 1997/04/17 08:21:12 niklas Exp $ */ +/* $OpenBSD: pcmcia.c,v 1.10 1997/08/19 21:59:49 angelos Exp $ */ /* * Copyright (c) 1996 John T. Kohl. All rights reserved. @@ -853,6 +853,10 @@ pcmcia_read_cis(link, scratch, offs, len) u_char *p = SCRATCH_MEM(pca); int size = SCRATCH_SIZE(pca); volatile int *inuse = &SCRATCH_INUSE(pca); + int pgoff = offs / size; + int toff; + + toff = offs - (pgoff * size); PPRINTF(("- pcmcia_read_cis: mem %p size %d\n", p, size)); if (pca == NULL) @@ -865,9 +869,7 @@ pcmcia_read_cis(link, scratch, offs, len) splx(s); while (len > 0) { - int pgoff = offs / size; - int toff = offs - (pgoff * size); - int tlen = min(len + toff, size / 2) - toff; + int tlen = min(len, (size - toff) / 2); int i; if ((err = PCMCIA_MAP_MEM(pca, link, pca->pa_memt, p, pgoff, @@ -884,6 +886,8 @@ pcmcia_read_cis(link, scratch, offs, len) PCMCIA_MAP_MEM(pca, link, pca->pa_memt, p, 0, size, PCMCIA_LAST_WIN | PCMCIA_UNMAP); len -= tlen; + pgoff++; + toff = 0; } error: s = splbio(); diff --git a/sys/dev/pcmcia/pcmcia_conf.c b/sys/dev/pcmcia/pcmcia_conf.c index 754ae667371..d7b07b5aec7 100644 --- a/sys/dev/pcmcia/pcmcia_conf.c +++ b/sys/dev/pcmcia/pcmcia_conf.c @@ -1,4 +1,4 @@ -/* $Id: pcmcia_conf.c,v 1.4 1996/08/31 18:01:02 deraadt Exp $ */ +/* $Id: pcmcia_conf.c,v 1.5 1997/08/19 21:59:50 angelos Exp $ */ /* * Copyright (c) 1996 John T. Kohl. All rights reserved. * Copyright (c) 1994 Stefan Grefen. All rights reserved. @@ -502,7 +502,8 @@ pcmcia_get_cisver1(pc_link, data, len, manu, model, add_inf1, add_inf2) u_char *pp = p + 2; maj = *pp++; min = *pp++; - if (maj != 4 || min != 1) { + if ((maj != 4 || min != 1) && + (maj != 5 || min != 0)) { printf("wrong version id %d.%d for card in slot %d\n", maj, min, pc_link->slot); return ENODEV; |