#
# PCMCIA Network device configuration
#

menuconfig NET_PCMCIA
	bool "PCMCIA network device support"
	depends on PCMCIA
	---help---
	  Say Y if you would like to include support for any PCMCIA or CardBus
	  network adapters, then say Y to the driver for your particular card
	  below.  PCMCIA- or PC-cards are credit-card size devices often used
	  with laptops computers; CardBus is the newer and faster version of
	  PCMCIA.

	  To use your PC-cards, you will need supporting software from David
	  Hinds' pcmcia-cs package (see the file <file:Documentation/Changes>
	  for location).  You also want to check out the PCMCIA-HOWTO,
	  available from <http://www.tldp.org/docs.html#howto>.

	  If unsure, say N.

if NET_PCMCIA && PCMCIA

config PCMCIA_3C589
	tristate "3Com 3c589 PCMCIA support"
	help
	  Say Y here if you intend to attach a 3Com 3c589 or compatible PCMCIA
	  (PC-card) Ethernet card to your computer.

	  To compile this driver as a module, choose M here: the module will be
	  called 3c589_cs.  If unsure, say N.

config PCMCIA_3C574
	tristate "3Com 3c574 PCMCIA support"
	help
	  Say Y here if you intend to attach a 3Com 3c574 or compatible PCMCIA
	  (PC-card) Fast Ethernet card to your computer.

	  To compile this driver as a module, choose M here: the module will be
	  called 3c574_cs.  If unsure, say N.

config PCMCIA_FMVJ18X
	tristate "Fujitsu FMV-J18x PCMCIA support"
	select CRC32
	help
	  Say Y here if you intend to attach a Fujitsu FMV-J18x or compatible
	  PCMCIA (PC-card) Ethernet card to your computer.

	  To compile this driver as a module, choose M here: the module will be
	  called fmvj18x_cs.  If unsure, say N.

config PCMCIA_PCNET
	tristate "NE2000 compatible PCMCIA support"
	select CRC32
	help
	  Say Y here if you intend to attach an NE2000 compatible PCMCIA
	  (PC-card) Ethernet or Fast Ethernet card to your computer.

	  To compile this driver as a module, choose M here: the module will be
	  called pcnet_cs.  If unsure, say N.

config PCMCIA_NMCLAN
	tristate "New Media PCMCIA support"
	help
	  Say Y here if you intend to attach a New Media Ethernet or LiveWire
	  PCMCIA (PC-card) Ethernet card to your computer.

	  To compile this driver as a module, choose M here: the module will be
	  called nmclan_cs.  If unsure, say N.

config PCMCIA_SMC91C92
	tristate "SMC 91Cxx PCMCIA support"
	select CRC32
	select MII
	help
	  Say Y here if you intend to attach an SMC 91Cxx compatible PCMCIA
	  (PC-card) Ethernet or Fast Ethernet card to your computer.

	  To compile this driver as a module, choose M here: the module will be
	  called smc91c92_cs.  If unsure, say N.

config PCMCIA_XIRC2PS
	tristate "Xircom 16-bit PCMCIA support"
	help
	  Say Y here if you intend to attach a Xircom 16-bit PCMCIA (PC-card)
	  Ethernet or Fast Ethernet card to your computer.

	  To compile this driver as a module, choose M here: the module will be
	  called xirc2ps_cs.  If unsure, say N.

config PCMCIA_AXNET
	tristate "Asix AX88190 PCMCIA support"
	---help---
	  Say Y here if you intend to attach an Asix AX88190-based PCMCIA
	  (PC-card) Fast Ethernet card to your computer.  These cards are
	  nearly NE2000 compatible but need a separate driver due to a few
	  misfeatures.

	  To compile this driver as a module, choose M here: the module will be
	  called axnet_cs.  If unsure, say N.

config ARCNET_COM20020_CS
	tristate "COM20020 ARCnet PCMCIA support"
	depends on ARCNET_COM20020
	help
	  Say Y here if you intend to attach this type of ARCnet PCMCIA card
	  to your computer.

	  To compile this driver as a module, choose M here: the module will be
	  called com20020_cs.  If unsure, say N.

config PCMCIA_IBMTR
	tristate "IBM PCMCIA tokenring adapter support"
	depends on IBMTR!=y && TR
	help
	  Say Y here if you intend to attach this type of Token Ring PCMCIA
	  card to your computer. You then also need to say Y to "Token Ring
	  driver support".

	  To compile this driver as a module, choose M here: the module will be
	  called ibmtr_cs.

endif # NET_PCMCIA
