#
# HID driver configuration
#
menuconfig HID_SUPPORT
	bool "HID Devices"
	depends on INPUT
	default y
	---help---
	  Say Y here to get to see options for various computer-human interface
	  device drivers. This option alone does not add any kernel code.

	  If you say N, all options in this submenu will be skipped and disabled.

if HID_SUPPORT

config HID
	tristate "Generic HID support"
	depends on INPUT
	default y
	---help---
	  A human interface device (HID) is a type of computer device that
	  interacts directly with and takes input from humans. The term "HID"
	  most commonly used to refer to the USB-HID specification, but other
	  devices (such as, but not strictly limited to, Bluetooth) are
	  designed using HID specification (this involves certain keyboards,
	  mice, tablets, etc). This option compiles into kernel the generic
	  HID layer code (parser, usages, etc.), which can then be used by
	  transport-specific HID implementation (like USB or Bluetooth).

	  For docs and specs, see http://www.usb.org/developers/hidpage/

	  If unsure, say Y.

config HIDRAW
	bool "/dev/hidraw raw HID device support"
	depends on HID
	---help---
	Say Y here if you want to support HID devices (from the USB
	specification standpoint) that aren't strictly user interface
	devices, like monitor controls and Uninterruptable Power Supplies.

	This module supports these devices separately using a separate
	event interface on /dev/hidraw.

	There is also a /dev/hiddev configuration option in the USB HID
	configuration menu. In comparison to hiddev, this device does not process
	the hid events at all (no parsing, no lookups). This lets applications
	to work on raw hid events when they want to, and avoid using transport-specific
	userspace libhid/libusb libraries.

	If unsure, say Y.

source "drivers/hid/usbhid/Kconfig"

menu "Special HID drivers"
	depends on HID

config HID_3M_PCT
	tristate "3M PCT" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for 3M PCT touch screens.

config HID_A4TECH
	tristate "A4 tech" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for A4 tech X5 and WOP-35 / Trust 450L mice.

config HID_APPLE
	tristate "Apple" if EMBEDDED
	depends on (USB_HID || BT_HIDP)
	default !EMBEDDED
	---help---
	Support for some Apple devices which less or more break
	HID specification.

	Say Y here if you want support for keyboards of	Apple iBooks, PowerBooks,
	MacBooks, MacBook Pros and Apple Aluminum.

config HID_BELKIN
	tristate "Belkin" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Belkin Flip KVM and Wireless keyboard.

config HID_CHERRY
	tristate "Cherry" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Cherry Cymotion keyboard.

config HID_CHICONY
	tristate "Chicony" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Chicony Tactical pad.

config HID_CYPRESS
	tristate "Cypress" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for cypress mouse and barcode readers.

config HID_DRAGONRISE
	tristate "DragonRise Inc. support" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Say Y here if you have DragonRise Inc.game controllers.

config DRAGONRISE_FF
	bool "DragonRise Inc. force feedback support"
	depends on HID_DRAGONRISE
	select INPUT_FF_MEMLESS
	---help---
	Say Y here if you want to enable force feedback support for DragonRise Inc.
	game controllers.

config HID_EZKEY
	tristate "Ezkey" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Ezkey BTC 8193 keyboard.

config HID_KYE
	tristate "Kye" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Kye/Genius Ergo Mouse.

config HID_GYRATION
	tristate "Gyration" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Gyration remote control.

config HID_TWINHAN
	tristate "Twinhan" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Twinhan IR remote control.

config HID_KENSINGTON
	tristate "Kensington" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Kensington Slimblade Trackball.

config HID_LOGITECH
	tristate "Logitech" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Logitech devices that are not fully compliant with HID standard.

config LOGITECH_FF
	bool "Logitech force feedback support"
	depends on HID_LOGITECH
	select INPUT_FF_MEMLESS
	help
	  Say Y here if you have one of these devices:
	  - Logitech WingMan Cordless RumblePad
	  - Logitech WingMan Cordless RumblePad 2
	  - Logitech WingMan Force 3D
	  - Logitech Formula Force EX
	  - Logitech WingMan Formula Force GP
	  - Logitech MOMO Force wheel

	  and if you want to enable force feedback for them.
	  Note: if you say N here, this device will still be supported, but without
	  force feedback.

config LOGIRUMBLEPAD2_FF
	bool "Logitech Rumblepad 2 force feedback support"
	depends on HID_LOGITECH
	select INPUT_FF_MEMLESS
	help
	  Say Y here if you want to enable force feedback support for Logitech
	  Rumblepad 2 devices.

config HID_MICROSOFT
	tristate "Microsoft" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Microsoft devices that are not fully compliant with HID standard.

config HID_MONTEREY
	tristate "Monterey" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Monterey Genius KB29E.

config HID_NTRIG
	tristate "NTrig" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for N-Trig touch screen.

config HID_PANTHERLORD
	tristate "Pantherlord support" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	  Say Y here if you have a PantherLord/GreenAsia based game controller
	  or adapter.

config PANTHERLORD_FF
	bool "Pantherlord force feedback support"
	depends on HID_PANTHERLORD
	select INPUT_FF_MEMLESS
	---help---
	  Say Y here if you have a PantherLord/GreenAsia based game controller
	  or adapter and want to enable force feedback support for it.

config HID_PETALYNX
	tristate "Petalynx" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Petalynx Maxter remote control.

config HID_SAMSUNG
	tristate "Samsung" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Samsung InfraRed remote control.

config HID_SONY
	tristate "Sony" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Sony PS3 controller.

config HID_SUNPLUS
	tristate "Sunplus" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for Sunplus wireless desktop.

config HID_GREENASIA
	tristate "GreenAsia (Product ID 0x12) support" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	  Say Y here if you have a GreenAsia (Product ID 0x12) based game
	  controller or adapter.

config GREENASIA_FF
	bool "GreenAsia (Product ID 0x12) force feedback support"
	depends on HID_GREENASIA
	select INPUT_FF_MEMLESS
	---help---
	Say Y here if you have a GreenAsia (Product ID 0x12) based game controller
	(like MANTA Warrior MM816 and SpeedLink Strike2 SL-6635) or adapter
	and want to enable force feedback support for it.

config HID_SMARTJOYPLUS
	tristate "SmartJoy PLUS PS2/USB adapter support" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Support for SmartJoy PLUS PS2/USB adapter.

config SMARTJOYPLUS_FF
	bool "SmartJoy PLUS PS2/USB adapter force feedback support"
	depends on HID_SMARTJOYPLUS
	select INPUT_FF_MEMLESS
	---help---
	Say Y here if you have a SmartJoy PLUS PS2/USB adapter and want to
	enable force feedback support for it.

config HID_TOPSEED
	tristate "TopSeed Cyberlink remote control support" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	Say Y if you have a TopSeed Cyberlink remote control.

config HID_THRUSTMASTER
	tristate "ThrustMaster devices support" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	  Say Y here if you have a THRUSTMASTER FireStore Dual Power 2 or
	  a THRUSTMASTER Ferrari GT Rumble Wheel.

config THRUSTMASTER_FF
	bool "ThrustMaster devices force feedback support"
	depends on HID_THRUSTMASTER
	select INPUT_FF_MEMLESS
	---help---
	  Say Y here if you have a THRUSTMASTER FireStore Dual Power 2 or 3,
	  a THRUSTMASTER Dual Trigger 3-in-1 or a THRUSTMASTER Ferrari GT
	  Rumble Force or Force Feedback Wheel.

config HID_WACOM
	tristate "Wacom Bluetooth devices support" if EMBEDDED
	depends on BT_HIDP
	default !EMBEDDED
	---help---
	Support for Wacom Graphire Bluetooth tablet.

config HID_ZEROPLUS
	tristate "Zeroplus based game controller support" if EMBEDDED
	depends on USB_HID
	default !EMBEDDED
	---help---
	  Say Y here if you have a Zeroplus based game controller.

config ZEROPLUS_FF
	bool "Zeroplus based game controller force feedback support"
	depends on HID_ZEROPLUS
	select INPUT_FF_MEMLESS
	---help---
	  Say Y here if you have a Zeroplus based game controller and want
	  to have force feedback support for it.

endmenu

endif # HID_SUPPORT
