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

endmenu

