summaryrefslogtreecommitdiff
path: root/sys/dev/pcmcia
diff options
context:
space:
mode:
authorAaron Campbell <aaron@cvs.openbsd.org>2000-04-08 05:50:54 +0000
committerAaron Campbell <aaron@cvs.openbsd.org>2000-04-08 05:50:54 +0000
commitbaf7d3528de2c205985708a2d97ec168af15aec2 (patch)
tree371d418fadef234b603efb1b2315a5924cc4ca81 /sys/dev/pcmcia
parent7c2b118d597d4335b6e7cffd5950cc45da0b0506 (diff)
Initial check-in for support of 32-bit CardBus PC Cards; from NetBSD. On many
machines, this code needs the new PCIBIOS* options enabled in the kernel config file to work, but your mileage may vary. Included is a working 3c575 driver for 3Com 10/100 CardBus PC Card NICs (tested only with the 'C' revision). The 3c575 is the pccard version of the PCI EtherLink XL cards, and thus the xl driver has been split into /sys/dev/ic.
Diffstat (limited to 'sys/dev/pcmcia')
-rw-r--r--sys/dev/pcmcia/files.pcmcia4
-rw-r--r--sys/dev/pcmcia/pcmcia.c8
-rw-r--r--sys/dev/pcmcia/pcmciachip.h13
3 files changed, 20 insertions, 5 deletions
diff --git a/sys/dev/pcmcia/files.pcmcia b/sys/dev/pcmcia/files.pcmcia
index a852cbc6322..c54a35d137a 100644
--- a/sys/dev/pcmcia/files.pcmcia
+++ b/sys/dev/pcmcia/files.pcmcia
@@ -1,4 +1,4 @@
-# $OpenBSD: files.pcmcia,v 1.28 2000/04/03 01:02:00 mickey Exp $
+# $OpenBSD: files.pcmcia,v 1.29 2000/04/08 05:50:51 aaron Exp $
# $NetBSD: files.pcmcia,v 1.9 1998/06/21 18:45:41 christos Exp $
#
# Config.new file and device description for machine-independent PCMCIA code.
@@ -10,7 +10,7 @@ file dev/pcmcia/pcmcia_cis.c pcmcia
file dev/pcmcia/pcmcia_cis_quirks.c pcmcia
# device declaration in sys/conf/files
-attach pcmcia at pcic
+attach pcmcia at pcmciabus
# 3Com 3c589 Ethernet, 3c562 multifunction Ethernet, and 3CXEM556
# multifunction Ethernet controllers
diff --git a/sys/dev/pcmcia/pcmcia.c b/sys/dev/pcmcia/pcmcia.c
index 24d2aefff23..f9b5710d5a0 100644
--- a/sys/dev/pcmcia/pcmcia.c
+++ b/sys/dev/pcmcia/pcmcia.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pcmcia.c,v 1.25 2000/02/05 22:10:50 deraadt Exp $ */
+/* $OpenBSD: pcmcia.c,v 1.26 2000/04/08 05:50:51 aaron Exp $ */
/* $NetBSD: pcmcia.c,v 1.9 1998/08/13 02:10:55 eeh Exp $ */
/*
@@ -102,6 +102,12 @@ pcmcia_match(parent, match, aux)
struct device *parent;
void *match, *aux;
{
+ struct cfdata *cf = match;
+ struct pcmciabus_attach_args *paa = aux;
+
+ if (strcmp(paa->paa_busname, cf->cf_driver->cd_name))
+ return 0;
+
/* If the autoconfiguration got this far, there's a socket here. */
return (1);
}
diff --git a/sys/dev/pcmcia/pcmciachip.h b/sys/dev/pcmcia/pcmciachip.h
index bbe25659f85..65821a53138 100644
--- a/sys/dev/pcmcia/pcmciachip.h
+++ b/sys/dev/pcmcia/pcmciachip.h
@@ -1,5 +1,5 @@
-/* $OpenBSD: pcmciachip.h,v 1.2 1999/08/08 01:00:14 niklas Exp $ */
-/* $NetBSD: pcmciachip.h,v 1.2 1997/10/16 23:27:36 thorpej Exp $ */
+/* $OpenBSD: pcmciachip.h,v 1.3 2000/04/08 05:50:51 aaron Exp $ */
+/* $NetBSD: pcmciachip.h,v 1.5 2000/01/13 08:58:51 joda Exp $ */
/*
* Copyright (c) 1997 Marc Horowitz. All rights reserved.
@@ -48,6 +48,11 @@ typedef int pcmcia_mem_handle_t;
#define PCMCIA_MEM_ATTR 1
#define PCMCIA_MEM_COMMON 2
+#define PCMCIA_WIDTH_MEM8 8
+#define PCMCIA_WIDTH_MEM16 16
+
+#define PCMCIA_WIDTH_MEM_MASK 24
+
#define PCMCIA_WIDTH_AUTO 0
#define PCMCIA_WIDTH_IO8 1
#define PCMCIA_WIDTH_IO16 2
@@ -84,6 +89,9 @@ struct pcmcia_chip_functions {
/* card enable/disable */
void (*socket_enable) __P((pcmcia_chipset_handle_t));
void (*socket_disable) __P((pcmcia_chipset_handle_t));
+
+ /* card detection */
+ int (*card_detect) __P((pcmcia_chipset_handle_t));
};
/* Memory space functions. */
@@ -130,6 +138,7 @@ struct pcmcia_chip_functions {
((*(tag)->socket_disable)((handle)))
struct pcmciabus_attach_args {
+ char *paa_busname; /* Bus name */
pcmcia_chipset_tag_t pct;
pcmcia_chipset_handle_t pch;
bus_addr_t iobase; /* start i/o space allocation here */