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.

comment "Dongle support"

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 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 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 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 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 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 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 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 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 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 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".

comment "Old SIR device drivers"

config IRPORT_SIR
	tristate "IrPORT (IrDA serial driver)"
	depends on IRDA && BROKEN_ON_SMP
	---help---
	  Say Y here if you want to build support for the IrPORT IrDA device
	  driver.  To compile it as a module, choose M here: the module will be
	  called irport. IrPORT can be used instead of IrTTY and sometimes
	  this can be better.  One example is if your IrDA port does not
	  have echo-canceling, which will work OK with IrPORT since this
	  driver is working in half-duplex mode only.  You don't need to use
	  irattach with IrPORT, but you just insert it the same way as FIR
	  drivers (insmod irport io=0x3e8 irq=11).  Notice that IrPORT is a
	  SIR device driver which means that speed is limited to 115200 bps.

	  If unsure, say Y.

comment "Old Serial dongle support"

config DONGLE_OLD
	bool "Old Serial dongle support"
	depends on IRPORT_SIR && BROKEN_ON_SMP
	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_OLD
	tristate "ESI JetEye PC dongle"
	depends on DONGLE_OLD && 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_OLD
	tristate "ACTiSYS IR-220L and IR220L+ dongle"
	depends on DONGLE_OLD && 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_OLD
	tristate "Tekram IrMate 210B dongle"
	depends on DONGLE_OLD && 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 GIRBIL_DONGLE_OLD
	tristate "Greenwich GIrBIL dongle"
	depends on DONGLE_OLD && IRDA
	help
	  Say Y here if you want to build support for the Greenwich GIrBIL
	  dongle.  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 insert "irattach -d girbil" in the
	  /etc/irda/drivers script.

config LITELINK_DONGLE_OLD
	tristate "Parallax LiteLink dongle"
	depends on DONGLE_OLD && 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 MCP2120_DONGLE_OLD
	tristate "Microchip MCP2120"
	depends on DONGLE_OLD && IRDA
	help
	  Say Y here if you want to build support for the Microchip MCP2120
	  dongle.  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 insert "irattach -d mcp2120" in the
	  /etc/irda/drivers script.

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

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

config ACT200L_DONGLE_OLD
	tristate "ACTiSYS IR-200L dongle (EXPERIMENTAL)"
	depends on DONGLE_OLD && EXPERIMENTAL && IRDA
	help
	  Say Y here if you want to build support for the ACTiSYS IR-200L
	  dongle.  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 dongles you will have to start irattach like this:
	  "irattach -d act200l".

config MA600_DONGLE_OLD
	tristate "Mobile Action MA600 dongle (EXPERIMENTAL)"
	depends on DONGLE_OLD && EXPERIMENTAL && 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 tested on IrCOMM.  To activate support for MA600
	  dongles you will have to insert "irattach -d ma600" in the
	  /etc/irda/drivers script.  Note: irutils 0.9.15 requires no
	  modification. irutils 0.9.9 needs modification. For more
	  information, download the following tar gzip file.

	  There is a pre-compiled module on
	  <http://engsvr.ust.hk/~eetwl95/ma600.html>

config EP7211_IR
	tristate "EP7211 I/R support"
	depends on DONGLE_OLD && ARCH_EP7211 && IRDA

comment "FIR device drivers"

config USB_IRDA
	tristate "IrDA USB dongles"
	depends on IRDA && USB
	---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
	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 MIPS_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.

endmenu

