#
# 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 HID_DEBUG
	bool "HID debugging support"
	default y if !EMBEDDED
	depends on HID
	---help---
	This option lets the HID layer output diagnostics about its internal
	state, resolve HID usages, dump HID fields, etc. Individual HID drivers
	use this debugging facility to output information about individual HID
	devices, etc.

	This feature is useful for those who are either debugging the HID parser
	or any HID hardware device.

	If unsure, say N

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_COMPAT
	bool "Load all HID drivers on hid core load"
	default y
	---help---
	Compatible option for older userspace. If you have system without udev
	support of module loading through aliases and also old
	module-init-tools which can't handle hid bus, choose Y here. Otherwise
	say N. If you say N and your userspace is old enough, the only
	functionality you loose is modules autoloading.

	If unsure, say Y.

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

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

	Say Y here if you want support for the special keys (Fn, Numlock) on
	Apple iBooks, PowerBooks, MacBooks, MacBook Pros and aluminum USB
	keyboards.

	If unsure, say M.

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

config HID_CHERRY
	tristate "Cherry"
	default m
	depends on USB_HID
	---help---
	Support for Cherry Cymotion.

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

config HID_CYPRESS
	tristate "Cypress"
	default m
	depends on USB_HID
	---help---
	Support for Cypress mouse and barcodes.

config HID_EZKEY
	tristate "Ezkey"
	default m
	depends on USB_HID
	---help---
	Support for Ezkey mouse and barcodes.

config HID_LOGITECH
	tristate "Logitech"
	default m
	depends on USB_HID
	---help---
	Support for some Logitech devices which breaks less or more
	HID specification.

config HID_MICROSOFT
	tristate "Microsoft"
	default m
	depends on USB_HID
	---help---
	Support for some Microsoft devices which breaks less or more
	HID specification.

config HID_PETALYNX
	tristate "Petalynx"
	default m
	depends on USB_HID
	---help---
	Support for Petalynx Maxter remote.

config HID_SUNPLUS
	tristate "Sunplus"
	default m
	depends on USB_HID
	---help---
	Support for Sunplus WDesktop input device.

endmenu

endif # HID_SUPPORT
