menu "Infrared-port device drivers"
	depends on IRDA!=n

comment "SIR device drivers"

config IRTTY_SIR
	tristate "IrTTY (uses Linux serial driver)"
	depends on IRDA && TTY
	help
	  Say Y here if you want to build support for the IrTTY line
	  discipline.  To compile it as a module, choose M here: the module
	  will be called irtty-sir. IrTTY makes it possible to use Linux's
	  own serial driver for all IrDA ports that are 16550 compatible.
	  Most IrDA chips are 16550 compatible so you should probably say Y
	  to this option.  Using IrTTY will however limit the speed of the
	  connection to 115200 bps (IrDA SIR mode).

	  If unsure, say Y.

config BFIN_SIR
	tristate "Blackfin SIR on UART"
	depends on BLACKFIN && IRDA
	default n
	help
	  Say Y here if your want to enable SIR function on Blackfin UART
	  devices.

	  To activate this driver you can start irattach like:
	  "irattach irda0 -s"

	  Saying M, it will be built as a module named bfin_sir.

	  Note that you need to turn off one of the serial drivers for SIR
	  to use that UART.

config BFIN_SIR0
	bool "Blackfin SIR on UART0"
	depends on BFIN_SIR && !SERIAL_BFIN_UART0

config BFIN_SIR1
	bool "Blackfin SIR on UART1"
	depends on BFIN_SIR && !SERIAL_BFIN_UART1 && (!BF531 && !BF532 && !BF533 && !BF561)

config BFIN_SIR2
	bool "Blackfin SIR on UART2"
	depends on BFIN_SIR && !SERIAL_BFIN_UART2 && (BF54x || BF538 || BF539)

config BFIN_SIR3
	bool "Blackfin SIR on UART3"
	depends on BFIN_SIR && !SERIAL_BFIN_UART3 && (BF54x)

choice
	prompt "SIR Mode"
	depends on BFIN_SIR
	default SIR_BFIN_DMA

config SIR_BFIN_DMA
	bool "DMA mode"
	depends on !DMA_UNCACHED_NONE

config SIR_BFIN_PIO
	bool "PIO mode"
endchoice

comment "Dongle support"

config SH_SIR
	tristate "SuperH SIR on UART"
	depends on IRDA && SUPERH && \
		(CPU_SUBTYPE_SH7722 || CPU_SUBTYPE_SH7723 || \
		 CPU_SUBTYPE_SH7724)
	default n
	help
	  Say Y here if your want to enable SIR function on SuperH UART
	  devices.

config DONGLE
	bool "Serial dongle support"
	depends on IRTTY_SIR
	help
	  Say Y here if you have an infrared device that connects to your
	  computer's serial port. These devices are called dongles. Then say Y
	  or M to the driver for your particular dongle below.

	  Note that the answer to this question won't directly affect the
	  kernel: saying N will just cause the configurator to skip all
	  the questions about serial dongles.

config ESI_DONGLE
	tristate "ESI JetEye PC dongle"
	depends on IRTTY_SIR && DONGLE && IRDA
	help
	  Say Y here if you want to build support for the Extended Systems
	  JetEye PC dongle.  To compile it as a module, choose M here. The ESI
	  dongle attaches to the normal 9-pin serial port connector, and can
	  currently only be used by IrTTY.  To activate support for ESI
	  dongles you will have to start irattach like this:
	  "irattach -d esi".

config ACTISYS_DONGLE
	tristate "ACTiSYS IR-220L and IR220L+ dongle"
	depends on IRTTY_SIR && DONGLE && IRDA
	help
	  Say Y here if you want to build support for the ACTiSYS IR-220L and
	  IR220L+ dongles.  To compile it as a module, choose M here. The
	  ACTiSYS dongles attaches to the normal 9-pin serial port connector,
	  and can currently only be used by IrTTY.  To activate support for
	  ACTiSYS dongles you will have to start irattach like this:
	  "irattach -d actisys" or "irattach -d actisys+".

config TEKRAM_DONGLE
	tristate "Tekram IrMate 210B dongle"
	depends on IRTTY_SIR && DONGLE && IRDA
	help
	  Say Y here if you want to build support for the Tekram IrMate 210B
	  dongle.  To compile it as a module, choose M here. The Tekram dongle
	  attaches to the normal 9-pin serial port connector, and can
	  currently only be used by IrTTY.  To activate support for Tekram
	  dongles you will have to start irattach like this:
	  "irattach -d tekram".

config TOIM3232_DONGLE
	tristate "TOIM3232 IrDa dongle"
	depends on IRTTY_SIR && DONGLE && IRDA
	help
	  Say Y here if you want to build support for the Vishay/Temic
	  TOIM3232 and TOIM4232 based dongles.
	  To compile it as a module, choose M here.

config LITELINK_DONGLE
	tristate "Parallax LiteLink dongle"
	depends on IRTTY_SIR && DONGLE && IRDA
	help
	  Say Y here if you want to build support for the Parallax Litelink
	  dongle.  To compile it as a module, choose M here.  The Parallax
	  dongle attaches to the normal 9-pin serial port connector, and can
	  currently only be used by IrTTY.  To activate support for Parallax
	  dongles you will have to start irattach like this:
	  "irattach -d litelink".

config MA600_DONGLE
	tristate "Mobile Action MA600 dongle"
	depends on IRTTY_SIR && DONGLE && IRDA
	help
	  Say Y here if you want to build support for the Mobile Action MA600
	  dongle.  To compile it as a module, choose M here. The MA600 dongle
	  attaches to the normal 9-pin serial port connector, and can
	  currently only be used by IrTTY.  The driver should also support
	  the MA620 USB version of the dongle, if the integrated USB-to-RS232
	  converter is supported by usbserial. To activate support for
	  MA600 dongle you will have to start irattach like this:
	  "irattach -d ma600".

config GIRBIL_DONGLE
	tristate "Greenwich GIrBIL dongle"
	depends on IRTTY_SIR && DONGLE && IRDA
	help
	  Say Y here if you want to build support for the Greenwich GIrBIL
	  dongle.  If you want to compile it as a module, choose M here.
	  The Greenwich dongle attaches to the normal 9-pin serial port
	  connector, and can currently only be used by IrTTY.  To activate
	  support for Greenwich dongles you will have to start irattach
	  like this: "irattach -d girbil".

config MCP2120_DONGLE
	tristate "Microchip MCP2120"
	depends on IRTTY_SIR && DONGLE && IRDA
	help
	  Say Y here if you want to build support for the Microchip MCP2120
	  dongle.  If you want to compile it as a module, choose M here.
	  The MCP2120 dongle attaches to the normal 9-pin serial port
	  connector, and can currently only be used by IrTTY.  To activate
	  support for MCP2120 dongles you will have to start irattach
	  like this: "irattach -d mcp2120".

	  You must build this dongle yourself.  For more information see:
	  <http://www.eyetap.org/~tangf/irda_sir_linux.html>

config OLD_BELKIN_DONGLE
	tristate "Old Belkin dongle"
	depends on IRTTY_SIR && DONGLE && IRDA
	help
	  Say Y here if you want to build support for the Adaptec Airport 1000
	  and 2000 dongles.  If you want to compile it as a module, choose
	  M here. Some information is contained in the comments
	  at the top of <file:drivers/net/irda/old_belkin-sir.c>.

config ACT200L_DONGLE
	tristate "ACTiSYS IR-200L dongle"
	depends on IRTTY_SIR && DONGLE && IRDA
	help
	  Say Y here if you want to build support for the ACTiSYS IR-200L
	  dongle. If you want to compile it as a module, choose M here.
	  The ACTiSYS IR-200L dongle attaches to the normal 9-pin serial
	  port connector, and can currently only be used by IrTTY.
	  To activate support for ACTiSYS IR-200L dongle you will have to
	  start irattach like this: "irattach -d act200l".

config KINGSUN_DONGLE
	tristate "KingSun/DonShine DS-620 IrDA-USB dongle"
	depends on IRDA && USB
	help
	  Say Y or M here if you want to build support for the KingSun/DonShine
	  DS-620 IrDA-USB bridge device driver.

	  This USB bridge does not conform to the IrDA-USB device class
	  specification, and therefore needs its own specific driver. This
	  dongle supports SIR speed only (9600 bps).

	  To compile it as a module, choose M here: the module will be called
	  kingsun-sir.

config EP7211_DONGLE
	tristate "Cirrus Logic clps711x I/R support"
	depends on IRTTY_SIR && ARCH_CLPS711X && IRDA
	help
	  Say Y here if you want to build support for the Cirrus logic
	  EP7211 chipset's infrared module.

config KSDAZZLE_DONGLE
	tristate "KingSun Dazzle IrDA-USB dongle"
	depends on IRDA && USB
	help
	  Say Y or M here if you want to build support for the KingSun Dazzle
	  IrDA-USB bridge device driver.

	  This USB bridge does not conform to the IrDA-USB device class
	  specification, and therefore needs its own specific driver. This
	  dongle supports SIR speeds only (9600 through 115200 bps).

	  To compile it as a module, choose M here: the module will be called
	  ksdazzle-sir.

config KS959_DONGLE
	tristate "KingSun KS-959 IrDA-USB dongle"
	depends on IRDA && USB
	help
	  Say Y or M here if you want to build support for the KingSun KS-959
	  IrDA-USB bridge device driver.

	  This USB bridge does not conform to the IrDA-USB device class
	  specification, and therefore needs its own specific driver. This
	  dongle supports SIR speeds only (9600 through 57600 bps).

	  To compile it as a module, choose M here: the module will be called
	  ks959-sir.

comment "FIR device drivers"

config USB_IRDA
	tristate "IrDA USB dongles"
	depends on IRDA && USB
	select FW_LOADER
	---help---
	  Say Y here if you want to build support for the USB IrDA FIR Dongle
	  device driver.  To compile it as a module, choose M here: the module
	  will be called irda-usb.  IrDA-USB support the various IrDA USB
	  dongles available and most of their peculiarities.  Those dongles
	  plug in the USB port of your computer, are plug and play, and
	  support SIR and FIR (4Mbps) speeds.  On the other hand, those
	  dongles tend to be less efficient than a FIR chipset.

	  Please note that the driver is still experimental.  And of course,
	  you will need both USB and IrDA support in your kernel...

config SIGMATEL_FIR
	tristate "SigmaTel STIr4200 bridge"
	depends on IRDA && USB
	select CRC32
	---help---
	  Say Y here if you want to build support for the SigmaTel STIr4200
	  USB IrDA FIR bridge device driver.  

	  USB bridge based on the SigmaTel STIr4200 don't conform to the
	  IrDA-USB device class specification, and therefore need their
	  own specific driver. Those dongles support SIR and FIR (4Mbps)
	  speeds. 

	  To compile it as a module, choose M here: the module will be called
	  stir4200.

config NSC_FIR
	tristate "NSC PC87108/PC87338"
	depends on IRDA && ISA_DMA_API
	help
	  Say Y here if you want to build support for the NSC PC87108 and
	  PC87338 IrDA chipsets.  This driver supports SIR,
	  MIR and FIR (4Mbps) speeds.

	  To compile it as a module, choose M here: the module will be called
	  nsc-ircc.

config WINBOND_FIR
	tristate "Winbond W83977AF (IR)"
	depends on IRDA && ISA_DMA_API
	help
	  Say Y here if you want to build IrDA support for the Winbond
	  W83977AF super-io chipset.  This driver should be used for the IrDA
	  chipset in the Corel NetWinder.  The driver supports SIR, MIR and
	  FIR (4Mbps) speeds.

	  To compile it as a module, choose M here: the module will be called
	  w83977af_ir.

config TOSHIBA_FIR
	tristate "Toshiba Type-O IR Port"
	depends on IRDA && PCI && !64BIT && VIRT_TO_BUS
	help
	  Say Y here if you want to build support for the Toshiba Type-O IR
	  and Donau oboe chipsets. These chipsets are used by the Toshiba
	  Libretto 100/110CT, Tecra 8100, Portege 7020 and many more laptops.
	  To compile it as a module, choose M here: the module will be called
	  donauboe.

config AU1000_FIR
	tristate "Alchemy IrDA SIR/FIR"
	depends on IRDA && MIPS_ALCHEMY
	help
	  Say Y/M here to build support the IrDA peripheral on the
	  Alchemy Au1000 and Au1100 SoCs.
	  Say M to build a module; it will be called au1k_ir.ko

config SMC_IRCC_FIR
	tristate "SMSC IrCC"
	depends on IRDA && ISA_DMA_API
	help
	  Say Y here if you want to build support for the SMC Infrared
	  Communications Controller.  It is used in a wide variety of
	  laptops (Fujitsu, Sony, Compaq and some Toshiba).
	  To compile it as a module, choose M here: the module will be called
	  smsc-ircc2.o.

config ALI_FIR
	tristate "ALi M5123 FIR"
	depends on IRDA && ISA_DMA_API
	help
	  Say Y here if you want to build support for the ALi M5123 FIR
	  Controller.  The ALi M5123 FIR Controller is embedded in ALi M1543C,
	  M1535, M1535D, M1535+, M1535D South Bridge.  This driver supports
	  SIR, MIR and FIR (4Mbps) speeds.

	  To compile it as a module, choose M here: the module will be called
	  ali-ircc.

config VLSI_FIR
	tristate "VLSI 82C147 SIR/MIR/FIR"
	depends on IRDA && PCI
	help
	  Say Y here if you want to build support for the VLSI 82C147
	  PCI-IrDA Controller. This controller is used by the HP OmniBook 800
	  and 5500 notebooks. The driver provides support for SIR, MIR and
	  FIR (4Mbps) speeds.

	  To compile it as a module, choose M here: the module will be called
	  vlsi_ir.

config SA1100_FIR
	tristate "SA1100 Internal IR"
	depends on ARCH_SA1100 && IRDA && DMA_SA11X0

config VIA_FIR
	tristate "VIA VT8231/VT1211 SIR/MIR/FIR"
	depends on IRDA && ISA_DMA_API
	help
	  Say Y here if you want to build support for the VIA VT8231
	  and VIA VT1211 IrDA controllers, found on the motherboards using
	  those VIA chipsets. To use this controller, you will need
	  to plug a specific 5 pins FIR IrDA dongle in the specific
	  motherboard connector. The driver provides support for SIR, MIR
	  and FIR (4Mbps) speeds.

	  You will need to specify the 'dongle_id' module parameter to
	  indicate the FIR dongle attached to the controller.

	  To compile it as a module, choose M here: the module will be called
	  via-ircc.

config PXA_FICP
	tristate "Intel PXA2xx Internal FICP"
	depends on ARCH_PXA && IRDA
	help
	  Say Y or M here if you want to build support for the PXA2xx
	  built-in IRDA interface which can support both SIR and FIR.
	  This driver relies on platform specific helper routines so
	  available capabilities may vary from one PXA2xx target to
	  another.

config MCS_FIR
	tristate "MosChip MCS7780 IrDA-USB dongle"
	depends on IRDA && USB
	select CRC32
	help
	  Say Y or M here if you want to build support for the MosChip
	  MCS7780 IrDA-USB bridge device driver.

	  USB bridge based on the MosChip MCS7780 don't conform to the
	  IrDA-USB device class specification, and therefore need their
	  own specific driver. Those dongles support SIR and FIR (4Mbps)
	  speeds.

	  To compile it as a module, choose M here: the module will be called
	  mcs7780.

config SH_IRDA
	tristate "SuperH IrDA driver"
	depends on IRDA && ARCH_SHMOBILE
	help
	  Say Y here if your want to enable SuperH IrDA devices.

endmenu

