
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 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 (IRTTY_OLD || 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 pecularities.  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
	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
	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
	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
	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 Sourth 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 && PCI
	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 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.

endmenu

