#
# PCCARD (PCMCIA/CardBus) bus subsystem configuration
#

menuconfig PCCARD
	tristate "PCCard (PCMCIA/CardBus) support"
	depends on HOTPLUG
	---help---
	  Say Y here if you want to attach PCMCIA- or PC-cards to your Linux
	  computer.  These are credit-card size devices such as network cards,
	  modems or hard drives often used with laptops computers.  There are
	  actually two varieties of these cards: 16 bit PCMCIA and 32 bit
	  CardBus cards.

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

if PCCARD

config PCMCIA_DEBUG
	bool "Enable PCCARD debugging"
	help
	  Say Y here to enable PCMCIA subsystem debugging.  You
	  will need to choose the debugging level either via the
	  kernel command line, or module options depending whether
	  you build the PCMCIA as modules.

	  The kernel command line options are:
	    pcmcia_core.pc_debug=N
	    pcmcia.pc_debug=N
	    sa11xx_core.pc_debug=N

	  The module option is called pc_debug=N

	  In all the above examples, N is the debugging verbosity
	  level.

config PCMCIA
	tristate "16-bit PCMCIA support"
	select CRC32
	select HAVE_IDE
	default y
	---help---
	   This option enables support for 16-bit PCMCIA cards. Most older
	   PC-cards are such 16-bit PCMCIA cards, so unless you know you're
	   only using 32-bit CardBus cards, say Y or M here.

	   To use 16-bit PCMCIA cards, you will need supporting software in
	   most cases. (see the file <file:Documentation/Changes> for
	   location and details).

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

	   If unsure, say Y.

config PCMCIA_LOAD_CIS
	bool "Load CIS updates from userspace (EXPERIMENTAL)"
	depends on PCMCIA && EXPERIMENTAL
	select FW_LOADER
	default y
	help
	  Some PCMCIA cards require an updated Card Information Structure (CIS)
	  to be loaded from userspace to work correctly. If you say Y here,
	  and your userspace is arranged correctly, this will be loaded
	  automatically using the in-kernel firmware loader and the hotplug
	  subsystem, instead of relying on cardmgr from pcmcia-cs to do so.

	  If unsure, say Y.

config PCMCIA_IOCTL
	bool "PCMCIA control ioctl (obsolete)"
	depends on PCMCIA
	default y
	help
	  If you say Y here, the deprecated ioctl interface to the PCMCIA
	  subsystem will be built. It is needed by cardmgr and cardctl
	  (pcmcia-cs) to function properly.

	  You should use the new pcmciautils package instead (see
	  <file:Documentation/Changes> for location and details).

	  If unsure, say Y.

config CARDBUS
	bool "32-bit CardBus support"	
	depends on PCI
	default y
	---help---
	  CardBus is a bus mastering architecture for PC-cards, which allows
	  for 32 bit PC-cards (the original PCMCIA standard specifies only
	  a 16 bit wide bus). Many newer PC-cards are actually CardBus cards.

	  To use 32 bit PC-cards, you also need a CardBus compatible host
	  bridge. Virtually all modern PCMCIA bridges do this, and most of
	  them are "yenta-compatible", so say Y or M there, too.

	  If unsure, say Y.

comment "PC-card bridges"

config YENTA
	tristate "CardBus yenta-compatible bridge support"
	depends on PCI
	select CARDBUS if !EMBEDDED
	select PCCARD_NONSTATIC
	---help---
	  This option enables support for CardBus host bridges.  Virtually
	  all modern PCMCIA bridges are CardBus compatible.  A "bridge" is 
	  the hardware inside your computer that PCMCIA cards are plugged 
	  into.

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

	  If unsure, say Y.

config YENTA_O2
	default y
	bool "Special initialization for O2Micro bridges" if EMBEDDED
	depends on YENTA

config YENTA_RICOH
	default y
	bool "Special initialization for Ricoh bridges" if EMBEDDED
	depends on YENTA

config YENTA_TI
	default y
	bool "Special initialization for TI and EnE bridges" if EMBEDDED
	depends on YENTA

config YENTA_ENE_TUNE
	default y
	bool "Auto-tune EnE bridges for CB cards" if EMBEDDED
	depends on YENTA_TI && CARDBUS

config YENTA_TOSHIBA
	default y
	bool "Special initialization for Toshiba ToPIC bridges" if EMBEDDED
	depends on YENTA

config PD6729
	tristate "Cirrus PD6729 compatible bridge support"
	depends on PCMCIA && PCI
	select PCCARD_NONSTATIC
	help
	  This provides support for the Cirrus PD6729 PCI-to-PCMCIA bridge
	  device, found in some older laptops and PCMCIA card readers.

config I82092
	tristate "i82092 compatible bridge support"
	depends on PCMCIA && PCI
	select PCCARD_NONSTATIC
	help
	  This provides support for the Intel I82092AA PCI-to-PCMCIA bridge device,
	  found in some older laptops and more commonly in evaluation boards for the
	  chip.

config I82365
	tristate "i82365 compatible bridge support"
	depends on PCMCIA && ISA
	select PCCARD_NONSTATIC
	help
	  Say Y here to include support for ISA-bus PCMCIA host bridges that
	  are register compatible with the Intel i82365.  These are found on
	  older laptops and ISA-bus card readers for desktop systems.  A
	  "bridge" is the hardware inside your computer that PCMCIA cards are
	  plugged into. If unsure, say N.

config TCIC
	tristate "Databook TCIC host bridge support"
	depends on PCMCIA && ISA
	select PCCARD_NONSTATIC
	help
	  Say Y here to include support for the Databook TCIC family of PCMCIA
	  host bridges. These are only found on a handful of old systems.
	  "Bridge" is the name used for the hardware inside your computer that
	  PCMCIA cards are plugged into. If unsure, say N.

config PCMCIA_M8XX
	tristate "MPC8xx PCMCIA support"
	depends on PCMCIA && PPC && 8xx
	select PCCARD_IODYN
	select PCCARD_NONSTATIC
	help
	  Say Y here to include support for PowerPC 8xx series PCMCIA
	  controller.

	  This driver is also available as a module called m8xx_pcmcia.

config HD64465_PCMCIA
	tristate "HD64465 host bridge support"
	depends on HD64465 && PCMCIA

config PCMCIA_AU1X00
	tristate "Au1x00 pcmcia support"
	depends on SOC_AU1X00 && PCMCIA

config PCMCIA_SA1100
	tristate "SA1100 support"
	depends on ARM && ARCH_SA1100 && PCMCIA
	depends on ARCH_LUBBOCK || MACH_MAINSTONE || PXA_SHARPSL || MACH_ARMCORE
	help
	  Say Y here to include support for SA11x0-based PCMCIA or CF
	  sockets, found on HP iPAQs, Yopy, and other StrongARM(R)/
	  Xscale(R) embedded machines.

	  This driver is also available as a module called sa1100_cs.

config PCMCIA_SA1111
	tristate "SA1111 support"
	depends on ARM && ARCH_SA1100 && SA1111 && PCMCIA
	help
	  Say Y  here to include support for SA1111-based PCMCIA or CF
	  sockets, found on the Jornada 720, Graphicsmaster and other
	  StrongARM(R)/Xscale(R) embedded machines.

	  This driver is also available as a module called sa1111_cs.

config PCMCIA_PXA2XX
	tristate "PXA2xx support"
	depends on ARM && ARCH_PXA && PCMCIA
	help
	  Say Y here to include support for the PXA2xx PCMCIA controller

config PCMCIA_PROBE
	bool
	default y if ISA && !ARCH_SA1100 && !ARCH_CLPS711X && !PARISC

config M32R_PCC
	bool "M32R PCMCIA I/F"
	depends on M32R && CHIP_M32700 && PCMCIA
	select PCCARD_NONSTATIC
	help
	  Say Y here to use the M32R PCMCIA controller.

config M32R_CFC
	bool "M32R CF I/F Controller"
	depends on M32R && (PLAT_USRV || PLAT_M32700UT || PLAT_MAPPI2 || PLAT_MAPPI3 || PLAT_OPSPUT)
	select PCCARD_NONSTATIC
	help
	  Say Y here to use the M32R CompactFlash controller.

config M32R_CFC_NUM
	int "M32R CF I/F number"
	depends on M32R_CFC
	default "1" if PLAT_USRV || PLAT_M32700UT || PLAT_MAPPI2 || PLAT_MAPPI3 || PLAT_OPSPUT
	help
	  Set the number of M32R CF slots.

config PCMCIA_VRC4171
	tristate "NEC VRC4171 Card Controllers support"
	depends on CPU_VR41XX && ISA && PCMCIA

config PCMCIA_VRC4173
	tristate "NEC VRC4173 CARDU support"
	depends on CPU_VR41XX && PCI && PCMCIA

config OMAP_CF
	tristate "OMAP CompactFlash Controller"
	depends on PCMCIA && ARCH_OMAP16XX
	help
	  Say Y here to support the CompactFlash controller on OMAP.
	  Note that this doesn't support "True IDE" mode.

config AT91_CF
	tristate "AT91 CompactFlash Controller"
	depends on PCMCIA && ARCH_AT91RM9200
	help
	  Say Y here to support the CompactFlash controller on AT91 chips.
	  Or choose M to compile the driver as a module named "at91_cf".

config ELECTRA_CF
	tristate "Electra CompactFlash Controller"
	depends on PCMCIA && PPC_PASEMI
	help
	  Say Y here to support the CompactFlash controller on the
	  PA Semi Electra eval board.

config PCCARD_NONSTATIC
	tristate

config PCCARD_IODYN
	bool

endif	# PCCARD
