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
	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 && EXPERIMENTAL
	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 && EXPERIMENTAL
	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 && EXPERIMENTAL
	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 && EXPERIMENTAL
	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.c>.

config ACT200L_DONGLE
	tristate "ACTiSYS IR-200L dongle"
	depends on IRTTY_SIR && DONGLE && IRDA && EXPERIMENTAL
	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 && EXPERIMENTAL
	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 "EP7211 I/R support"
	depends on IRTTY_SIR && ARCH_EP7211 && IRDA && EXPERIMENTAL
	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 (EXPERIMENTAL)"
	depends on IRDA && USB && EXPERIMENTAL
	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 (EXPERIMENTAL)"
	depends on IRDA && USB && EXPERIMENTAL
	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 (EXPERIMENTAL)"
	depends on IRDA && USB && EXPERIMENTAL
	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 Au1000 SIR/FIR"
	depends on SOC_AU1000 && IRDA

config SMC_IRCC_FIR
	tristate "SMSC IrCC (EXPERIMENTAL)"
	depends on EXPERIMENTAL && 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 (EXPERIMENTAL)"
	depends on EXPERIMENTAL && 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 (EXPERIMENTAL)"
	depends on EXPERIMENTAL && 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

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 && EXPERIMENTAL
	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

