config RC_CORE
	tristate
	depends on m
	depends on MEDIA_RC_SUPPORT
	depends on INPUT
	default y

source "drivers/media/rc/keymaps/Kconfig"

menuconfig RC_DECODERS
        bool "Remote controller decoders"
	depends on RC_CORE
	default y

if RC_DECODERS
config LIRC
	tristate "LIRC interface driver"
	depends on m
	depends on RC_CORE

	---help---
	   Enable this option to build the Linux Infrared Remote
	   Control (LIRC) core device interface driver. The LIRC
	   interface passes raw IR to and from userspace, where the
	   LIRC daemon handles protocol decoding for IR reception and
	   encoding for IR transmitting (aka "blasting").

config IR_LIRC_CODEC
	tristate "Enable IR to LIRC bridge"
	depends on m
	depends on RC_CORE
	depends on LIRC
	default y

	---help---
	   Enable this option to pass raw IR to and from userspace via
	   the LIRC interface.


config IR_NEC_DECODER
	tristate "Enable IR raw decoder for the NEC protocol"
	depends on m
	depends on RC_CORE
	depends on BITREVERSE
	default y

	---help---
	   Enable this option if you have IR with NEC protocol, and
	   if the IR is decoded in software

config IR_RC5_DECODER
	tristate "Enable IR raw decoder for the RC-5 protocol"
	depends on m
	depends on RC_CORE
	depends on BITREVERSE
	default y

	---help---
	   Enable this option if you have IR with RC-5 protocol, and
	   if the IR is decoded in software

config IR_RC6_DECODER
	tristate "Enable IR raw decoder for the RC6 protocol"
	depends on m
	depends on RC_CORE
	depends on BITREVERSE
	default y

	---help---
	   Enable this option if you have an infrared remote control which
	   uses the RC6 protocol, and you need software decoding support.

config IR_JVC_DECODER
	tristate "Enable IR raw decoder for the JVC protocol"
	depends on m
	depends on RC_CORE
	depends on BITREVERSE
	default y

	---help---
	   Enable this option if you have an infrared remote control which
	   uses the JVC protocol, and you need software decoding support.

config IR_SONY_DECODER
	tristate "Enable IR raw decoder for the Sony protocol"
	depends on m
	depends on RC_CORE
	depends on BITREVERSE
	default y

	---help---
	   Enable this option if you have an infrared remote control which
	   uses the Sony protocol, and you need software decoding support.

config IR_RC5_SZ_DECODER
	tristate "Enable IR raw decoder for the RC-5 (streamzap) protocol"
	depends on m
	depends on RC_CORE
	depends on BITREVERSE
	default y

	---help---
	   Enable this option if you have IR with RC-5 (streamzap) protocol,
	   and if the IR is decoded in software. (The Streamzap PC Remote
	   uses an IR protocol that is almost standard RC-5, but not quite,
	   as it uses an additional bit).

config IR_SANYO_DECODER
	tristate "Enable IR raw decoder for the Sanyo protocol"
	depends on m
	depends on RC_CORE
	default y

	---help---
	   Enable this option if you have an infrared remote control which
	   uses the Sanyo protocol (Sanyo, Aiwa, Chinon remotes),
	   and you need software decoding support.

config IR_MCE_KBD_DECODER
	tristate "Enable IR raw decoder for the MCE keyboard/mouse protocol"
	depends on m
	depends on RC_CORE
	depends on BITREVERSE
	default y

	---help---
	   Enable this option if you have a Microsoft Remote Keyboard for
	   Windows Media Center Edition, which you would like to use with
	   a raw IR receiver in your system.
endif #RC_DECODERS

menuconfig RC_DEVICES
	bool "Remote Controller devices"
	depends on RC_CORE

if RC_DEVICES

config RC_ATI_REMOTE
	tristate "ATI / X10 based USB RF remote controls"
	depends on m
	depends on USB_ARCH_HAS_HCD
	depends on RC_CORE
	depends on USB
	help
	   Say Y here if you want to use an X10 based USB remote control.
	   These are RF remotes with USB receivers.

	   Such devices include the ATI remote that comes with many of ATI's
	   All-In-Wonder video cards, the X10 "Lola" remote, NVIDIA RF remote,
	   Medion RF remote, and SnapStream FireFly remote.

	   This driver provides mouse pointer, left and right mouse buttons,
	   and maps all the other remote buttons to keypress events.

	   To compile this driver as a module, choose M here: the module will be
	   called ati_remote.

config IR_ENE
	tristate "ENE eHome Receiver/Transceiver (pnp id: ENE0100/ENE02xxx)"
	depends on m
	depends on PNP
	depends on RC_CORE
	---help---
	   Say Y here to enable support for integrated infrared receiver
	   /transceiver made by ENE.

	   You can see if you have it by looking at lspnp output.
	   Output should include ENE0100 ENE0200 or something similar.

	   To compile this driver as a module, choose M here: the
	   module will be called ene_ir.

config IR_IMON
	tristate "SoundGraph iMON Receiver and Display"
	depends on m
	depends on USB_ARCH_HAS_HCD
	depends on RC_CORE
	depends on USB
	---help---
	   Say Y here if you want to use a SoundGraph iMON (aka Antec Veris)
	   IR Receiver and/or LCD/VFD/VGA display.

	   To compile this driver as a module, choose M here: the
	   module will be called imon.

config IR_MCEUSB
	tristate "Windows Media Center Ed. eHome Infrared Transceiver"
	depends on m
	depends on USB_ARCH_HAS_HCD
	depends on RC_CORE
	depends on USB
	---help---
	   Say Y here if you want to use a Windows Media Center Edition
	   eHome Infrared Transceiver.

	   To compile this driver as a module, choose M here: the
	   module will be called mceusb.

config IR_ITE_CIR
	tristate "ITE Tech Inc. IT8712/IT8512 Consumer Infrared Transceiver"
	depends on m
	depends on PNP
	depends on RC_CORE
	---help---
	   Say Y here to enable support for integrated infrared receivers
	   /transceivers made by ITE Tech Inc. These are found in
	   several ASUS devices, like the ASUS Digimatrix or the ASUS
	   EEEBox 1501U.

	   To compile this driver as a module, choose M here: the
	   module will be called ite-cir.

config IR_FINTEK
	tristate "Fintek Consumer Infrared Transceiver"
	depends on m
	depends on PNP
	depends on RC_CORE
	---help---
	   Say Y here to enable support for integrated infrared receiver
	   /transciever made by Fintek. This chip is found on assorted
	   Jetway motherboards (and of course, possibly others).

	   To compile this driver as a module, choose M here: the
	   module will be called fintek-cir.

config IR_NUVOTON
	tristate "Nuvoton w836x7hg Consumer Infrared Transceiver"
	depends on m
	depends on PNP
	depends on RC_CORE
	---help---
	   Say Y here to enable support for integrated infrared receiver
	   /transciever made by Nuvoton (formerly Winbond). This chip is
	   found in the ASRock ION 330HT, as well as assorted Intel
	   DP55-series motherboards (and of course, possibly others).

	   To compile this driver as a module, choose M here: the
	   module will be called nuvoton-cir.

config IR_REDRAT3
	tristate "RedRat3 IR Transceiver"
	depends on m
	depends on USB_ARCH_HAS_HCD
	depends on RC_CORE
	select BACKPORT_NEW_LEDS
	select BACKPORT_LEDS_CLASS
	depends on USB
	---help---
	   Say Y here if you want to use a RedRat3 Infrared Transceiver.

	   To compile this driver as a module, choose M here: the
	   module will be called redrat3.

config IR_STREAMZAP
	tristate "Streamzap PC Remote IR Receiver"
	depends on m
	depends on USB_ARCH_HAS_HCD
	depends on RC_CORE
	depends on USB
	---help---
	   Say Y here if you want to use a Streamzap PC Remote
	   Infrared Receiver.

	   To compile this driver as a module, choose M here: the
	   module will be called streamzap.

config IR_WINBOND_CIR
	tristate "Winbond IR remote control"
	depends on m
	depends on X86 && PNP
	depends on RC_CORE
	select BACKPORT_NEW_LEDS
	select BACKPORT_LEDS_CLASS
	depends on BITREVERSE
	---help---
	   Say Y here if you want to use the IR remote functionality found
	   in some Winbond SuperI/O chips. Currently only the WPCD376I
	   chip is supported (included in some Intel Media series
	   motherboards).

	   To compile this driver as a module, choose M here: the module will
	   be called winbond_cir.

config IR_IGUANA
	tristate "IguanaWorks USB IR Transceiver"
	depends on m
	depends on USB_ARCH_HAS_HCD
	depends on RC_CORE
	depends on USB
	---help---
	   Say Y here if you want to use the IguanaWorks USB IR Transceiver.
	   Both infrared receive and send are supported. If you want to
	   change the ID or the pin config, use the user space driver from
	   IguanaWorks.

	   Only firmware 0x0205 and later is supported.

	   To compile this driver as a module, choose M here: the module will
	   be called iguanair.

config IR_TTUSBIR
	tristate "TechnoTrend USB IR Receiver"
	depends on m
	depends on USB_ARCH_HAS_HCD
	depends on RC_CORE
	depends on USB
	select BACKPORT_NEW_LEDS
	select BACKPORT_LEDS_CLASS
	---help---
	   Say Y here if you want to use the TechnoTrend USB IR Receiver. The
	   driver can control the led.

	   To compile this driver as a module, choose M here: the module will
	   be called ttusbir.

config IR_RX51
	tristate "Nokia N900 IR transmitter diode"
	depends on m
	depends on OMAP_DM_TIMER && ARCH_OMAP2PLUS && LIRC && !ARCH_MULTIPLATFORM
	---help---
	   Say Y or M here if you want to enable support for the IR
	   transmitter diode built in the Nokia N900 (RX51) device.

	   The driver uses omap DM timers for generating the carrier
	   wave and pulses.

config RC_LOOPBACK
	tristate "Remote Control Loopback Driver"
	depends on m
	depends on RC_CORE
	---help---
	   Say Y here if you want support for the remote control loopback
	   driver which allows TX data to be sent back as RX data.
	   This is mostly useful for debugging purposes.

	   If you're not sure, select N here.

	   To compile this driver as a module, choose M here: the module will
	   be called rc_loopback.

config IR_GPIO_CIR
	depends on !BACKPORT_KERNEL_3_4
	tristate "GPIO IR remote control"
	depends on m
	depends on RC_CORE
	---help---
	   Say Y if you want to use GPIO based IR Receiver.

	   To compile this driver as a module, choose M here: the module will
	   be called gpio-ir-recv.

config RC_ST
	tristate "ST remote control receiver"
	depends on m
	depends on ARCH_STI && RC_CORE
	help
	 Say Y here if you want support for ST remote control driver
	 which allows both IR and UHF RX.
	 The driver passes raw pulse and space information to the LIRC decoder.

	 If you're not sure, select N here.

endif #RC_DEVICES
