You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
HID: i2c-hid: introduce HID over i2c specification implementation
Microsoft published the protocol specification of HID over i2c: http://msdn.microsoft.com/en-us/library/windows/hardware/hh852380.aspx This patch introduces an implementation of this protocol. This implementation does not includes the ACPI part of the specification. This will come when ACPI 5.0 devices enumeration will be available. Once the ACPI part is done, OEM will not have to declare HID over I2C devices in their platform specific driver. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
committed by
Jiri Kosina
parent
1a1e8c6fad
commit
4a200c3b9a
@@ -728,4 +728,6 @@ endif # HID
|
||||
|
||||
source "drivers/hid/usbhid/Kconfig"
|
||||
|
||||
source "drivers/hid/i2c-hid/Kconfig"
|
||||
|
||||
endmenu
|
||||
|
||||
@@ -118,3 +118,4 @@ obj-$(CONFIG_USB_HID) += usbhid/
|
||||
obj-$(CONFIG_USB_MOUSE) += usbhid/
|
||||
obj-$(CONFIG_USB_KBD) += usbhid/
|
||||
|
||||
obj-$(CONFIG_I2C_HID) += i2c-hid/
|
||||
|
||||
21
drivers/hid/i2c-hid/Kconfig
Normal file
21
drivers/hid/i2c-hid/Kconfig
Normal file
@@ -0,0 +1,21 @@
|
||||
menu "I2C HID support"
|
||||
depends on I2C
|
||||
|
||||
config I2C_HID
|
||||
tristate "HID over I2C transport layer"
|
||||
default n
|
||||
depends on I2C && INPUT
|
||||
select HID
|
||||
---help---
|
||||
Say Y here if you want to use the HID over i2c protocol
|
||||
implementation.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
This support is also available as a module. If so, the module
|
||||
will be called i2c-hid.
|
||||
|
||||
comment "Input core support is needed for HID over I2C input layer"
|
||||
depends on I2C_HID && INPUT=n
|
||||
|
||||
endmenu
|
||||
5
drivers/hid/i2c-hid/Makefile
Normal file
5
drivers/hid/i2c-hid/Makefile
Normal file
@@ -0,0 +1,5 @@
|
||||
#
|
||||
# Makefile for the I2C input drivers
|
||||
#
|
||||
|
||||
obj-$(CONFIG_I2C_HID) += i2c-hid.o
|
||||
974
drivers/hid/i2c-hid/i2c-hid.c
Normal file
974
drivers/hid/i2c-hid/i2c-hid.c
Normal file
File diff suppressed because it is too large
Load Diff
35
include/linux/i2c/i2c-hid.h
Normal file
35
include/linux/i2c/i2c-hid.h
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* HID over I2C protocol implementation
|
||||
*
|
||||
* Copyright (c) 2012 Benjamin Tissoires <benjamin.tissoires@gmail.com>
|
||||
* Copyright (c) 2012 Ecole Nationale de l'Aviation Civile, France
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file COPYING in the main directory of this archive for
|
||||
* more details.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_I2C_HID_H
|
||||
#define __LINUX_I2C_HID_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/**
|
||||
* struct i2chid_platform_data - used by hid over i2c implementation.
|
||||
* @hid_descriptor_address: i2c register where the HID descriptor is stored.
|
||||
*
|
||||
* Note that it is the responsibility of the platform driver (or the acpi 5.0
|
||||
* driver) to setup the irq related to the gpio in the struct i2c_board_info.
|
||||
* The platform driver should also setup the gpio according to the device:
|
||||
*
|
||||
* A typical example is the following:
|
||||
* irq = gpio_to_irq(intr_gpio);
|
||||
* hkdk4412_i2c_devs5[0].irq = irq; // store the irq in i2c_board_info
|
||||
* gpio_request(intr_gpio, "elan-irq");
|
||||
* s3c_gpio_setpull(intr_gpio, S3C_GPIO_PULL_UP);
|
||||
*/
|
||||
struct i2c_hid_platform_data {
|
||||
u16 hid_descriptor_address;
|
||||
};
|
||||
|
||||
#endif /* __LINUX_I2C_HID_H */
|
||||
Reference in New Issue
Block a user