Input: add appleir USB driver
Subsystems (3)
PATCH 1/1 Input: add appleir USB driver
This driver was originally written by James McKenzie, updated by Greg Kroah-Hartman, further updated by myself, with suspend support added.
More recent versions of the IR receiver are also supported through a patch by Alex Karpenko.
Tested on a MacbookAir1,1
Signed-off-by Bastien Nocera <[email protected]>
--- Documentation/input/appleir.txt | 45 +++++ drivers/hid/hid-apple.c | 4 - drivers/hid/hid-core.c | 5 +- drivers/hid/hid-ids.h | 1 + drivers/input/misc/Kconfig | 13 ++ drivers/input/misc/Makefile | 1 + drivers/input/misc/appleir.c | 399 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 462 insertions(+), 6 deletions(-) create mode 100644 Documentation/input/appleir.txt create mode 100644 drivers/input/misc/appleir.c
Documentation/input/appleir.txt new file +45 -0
@@ -0,0 +1,45 @@ +Apple IR receiver Driver (appleir) +---------------------------------- + Copyright (C) 2009 Bastien Nocera <[email protected]> + +The appleir driver is a kernel input driver to handle Apple's IR +receivers (and associated remotes) in the kernel. + +The driver is an input driver which only handles "official" remotes +as built and sold by Apple. + +Authors +------- + +James McKenzie (original driver) +Alex Karpenko (05ac:8242 support) +Greg Kroah-Hartman (cleanups and original submission) +Bastien Nocera (further cleanups and suspend support) + +Supported hardware +------------------ + +- All Apple laptops and desktops from 2005 onwards, except: + - the unibody Macbook (2009) + - Mac Pro (all versions) +- Apple TV (all revisions) + +The remote will only support the 6 buttons of the original remotes +as sold by Apple. See the next section if you want to use other remotes +or want to use lirc with the device instead of the kernel driver. + +Using lirc (native) instead of the kernel driver +------------------------------------------------ + +First, you will need to disable the kernel driver for the receiver. + +This can be achieved by passing quirks to the usbhid driver. +The quirk line would be: +usbhid.quirks=0x05ac:0x8242:0x40000010 + +With 0x05ac being the vendor ID (Apple, you shouldn't need to change this) +With 0x8242 being the product ID (check the output of lsusb for your hardware) +And 0x10 being "HID_QUIRK_HIDDEV_FORCE" and 0x40000000 being "HID_QUIRK_NO_IGNORE" + +This should force the creation of a hiddev device for the receiver, and +make it usable under lirc.
drivers/hid/hid-apple.c +0 -4
@@ -360,10 +360,6 @@ static void apple_remove(struct hid_device *hdev) }static const struct hid_device_id apple_devices[] = { - {HID_USB_DEVICE (USB_VENDOR_ID_APPLE ,USB_DEVICE_ID_APPLE_ATV_IRCONTROL ), - .driver_data =APPLE_HIDDEV |APPLE_IGNORE_HIDINPUT }, - {HID_USB_DEVICE (USB_VENDOR_ID_APPLE ,USB_DEVICE_ID_APPLE_IRCONTROL4 ), - .driver_data =APPLE_HIDDEV |APPLE_IGNORE_HIDINPUT }, {HID_USB_DEVICE (USB_VENDOR_ID_APPLE ,USB_DEVICE_ID_APPLE_MIGHTYMOUSE ), .driver_data =APPLE_MIGHTYMOUSE |APPLE_INVERT_HWHEEL },
drivers/hid/hid-core.c +3 -2
@@ -1253,8 +1253,6 @@ static const struct hid_device_id hid_blacklist[] = { { HID_USB_DEVICE(USB_VENDOR_ID_3M, USB_DEVICE_ID_3M1968) }, { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) }, { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) }, - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICMOUSE) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI) },
@@ -1553,6 +1551,9 @@ static const struct hid_device_id hid_ignore_list[] = { { HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_24) }, { HID_USB_DEVICE(USB_VENDOR_ID_AIRCABLE, USB_DEVICE_ID_AIRCABLE1) }, { HID_USB_DEVICE(USB_VENDOR_ID_ALCOR, USB_DEVICE_ID_ALCOR_USBRS232) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) }, { HID_USB_DEVICE(USB_VENDOR_ID_ASUS, USB_DEVICE_ID_ASUS_T91MT)}, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_LCM)}, { HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_LCM2)},
drivers/hid/hid-ids.h +1 -0
@@ -97,6 +97,7 @@#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b +#define USB_DEVICE_ID_APPLE_IRCONTROL 0x8240#define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242
drivers/input/misc/Kconfig +13 -0
@@ -159,6 +159,19 @@ config INPUT_KEYSPAN_REMOTE To compile this driver as a module, choose M here: the module will be called keyspan_remote. +config INPUT_APPLEIR + tristate "Apple infrared receiver (built in)" + depends on USB_ARCH_HAS_HCD + select USB + help + Say Y here if you want to use a Apple infrared remote control. All + the Apple computers from 2005 onwards include such a port, except + the unibody Macbook (2009), and Mac Pros. This receiver is also + used in the Apple TV set-top box. + + To compile this driver as a module, choose M here: the module will + be called appleir. + config INPUT_POWERMATE tristate "Griffin PowerMate and Contour Jog support" depends on USB_ARCH_HAS_HCD
drivers/input/misc/Makefile +1 -0
@@ -6,6 +6,7 @@ obj-$(CONFIG_INPUT_88PM860X_ONKEY) += 88pm860x_onkey.o obj-$(CONFIG_INPUT_APANEL) += apanel.o +obj-$(CONFIG_INPUT_APPLEIR) += appleir.o obj-$(CONFIG_INPUT_ATI_REMOTE) += ati_remote.o obj-$(CONFIG_INPUT_ATI_REMOTE2) += ati_remote2.o obj-$(CONFIG_INPUT_ATLAS_BTNS) += atlas_btns.o
drivers/input/misc/appleir.c new file +399 -0
399 lines not on this page · raw message
Signature · 1 line
1.6.6.1