Skip to content

Commit

Permalink
Merge branch 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/k…
Browse files Browse the repository at this point in the history
…ernel/git/jikos/hid

Pull HID fixes from Jiri Kosina:
 "The most important one is a purification of Kconfig for CONFIG_HID;
  the inclusion of HID groups and autoloading didn't leave the Kconfig
  in a really consistent state.  Henrik's patch fixes that.  In addition
  to that, there are two small fixes for logitech and magicmouse
  drivers."

* 'upstream-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
  HID: Fix the generic Kconfig options
  HID: magicmouse: Correct report range of major / minor axes
  HID: logitech: don't use stack based dj_report structures
  • Loading branch information
Linus Torvalds committed Jun 26, 2012
2 parents aace99e + 1f41a6a commit 60d2c25
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 44 deletions.
43 changes: 20 additions & 23 deletions drivers/hid/Kconfig
Original file line number Diff line number Diff line change
@@ -1,20 +1,11 @@
#
# 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
menu "HID support"
depends on INPUT

config HID
tristate "Generic HID support"
tristate "HID bus support"
depends on INPUT
default y
---help---
Expand All @@ -23,14 +14,17 @@ config 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).
mice, tablets, etc). This option adds the HID bus to the kernel,
together with generic HID layer code. The HID devices are added and
removed from the HID bus by the transport-layer drivers, such as
usbhid (USB_HID) and hidp (BT_HIDP).

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

If unsure, say Y.

if HID

config HID_BATTERY_STRENGTH
bool "Battery level reporting for HID devices"
depends on HID && POWER_SUPPLY && HID = POWER_SUPPLY
Expand Down Expand Up @@ -59,23 +53,22 @@ config HIDRAW

If unsure, say Y.

source "drivers/hid/usbhid/Kconfig"

menu "Special HID drivers"
depends on HID

config HID_GENERIC
tristate "Generic HID driver"
depends on HID
default y
default HID
---help---
Support for generic HID devices.
Support for generic devices on the HID bus. This includes most
keyboards and mice, joysticks, tablets and digitizers.

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

If unsure, say Y.

menu "Special HID drivers"
depends on HID

config HID_A4TECH
tristate "A4 tech mice" if EXPERT
depends on USB_HID
Expand Down Expand Up @@ -662,4 +655,8 @@ config HID_ZYDACRON

endmenu

endif # HID_SUPPORT
endif # HID

source "drivers/hid/usbhid/Kconfig"

endmenu
38 changes: 24 additions & 14 deletions drivers/hid/hid-logitech-dj.c
Original file line number Diff line number Diff line change
Expand Up @@ -436,27 +436,37 @@ static int logi_dj_recv_send_report(struct dj_receiver_dev *djrcv_dev,

static int logi_dj_recv_query_paired_devices(struct dj_receiver_dev *djrcv_dev)
{
struct dj_report dj_report;
struct dj_report *dj_report;
int retval;

memset(&dj_report, 0, sizeof(dj_report));
dj_report.report_id = REPORT_ID_DJ_SHORT;
dj_report.device_index = 0xFF;
dj_report.report_type = REPORT_TYPE_CMD_GET_PAIRED_DEVICES;
return logi_dj_recv_send_report(djrcv_dev, &dj_report);
dj_report = kzalloc(sizeof(dj_report), GFP_KERNEL);
if (!dj_report)
return -ENOMEM;
dj_report->report_id = REPORT_ID_DJ_SHORT;
dj_report->device_index = 0xFF;
dj_report->report_type = REPORT_TYPE_CMD_GET_PAIRED_DEVICES;
retval = logi_dj_recv_send_report(djrcv_dev, dj_report);
kfree(dj_report);
return retval;
}

static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev,
unsigned timeout)
{
struct dj_report dj_report;
struct dj_report *dj_report;
int retval;

memset(&dj_report, 0, sizeof(dj_report));
dj_report.report_id = REPORT_ID_DJ_SHORT;
dj_report.device_index = 0xFF;
dj_report.report_type = REPORT_TYPE_CMD_SWITCH;
dj_report.report_params[CMD_SWITCH_PARAM_DEVBITFIELD] = 0x3F;
dj_report.report_params[CMD_SWITCH_PARAM_TIMEOUT_SECONDS] = (u8)timeout;
return logi_dj_recv_send_report(djrcv_dev, &dj_report);
dj_report = kzalloc(sizeof(dj_report), GFP_KERNEL);
if (!dj_report)
return -ENOMEM;
dj_report->report_id = REPORT_ID_DJ_SHORT;
dj_report->device_index = 0xFF;
dj_report->report_type = REPORT_TYPE_CMD_SWITCH;
dj_report->report_params[CMD_SWITCH_PARAM_DEVBITFIELD] = 0x3F;
dj_report->report_params[CMD_SWITCH_PARAM_TIMEOUT_SECONDS] = (u8)timeout;
retval = logi_dj_recv_send_report(djrcv_dev, dj_report);
kfree(dj_report);
return retval;
}


Expand Down
6 changes: 4 additions & 2 deletions drivers/hid/hid-magicmouse.c
Original file line number Diff line number Diff line change
Expand Up @@ -426,8 +426,10 @@ static void magicmouse_setup_input(struct input_dev *input, struct hid_device *h
__set_bit(EV_ABS, input->evbit);

input_set_abs_params(input, ABS_MT_TRACKING_ID, 0, 15, 0, 0);
input_set_abs_params(input, ABS_MT_TOUCH_MAJOR, 0, 255, 4, 0);
input_set_abs_params(input, ABS_MT_TOUCH_MINOR, 0, 255, 4, 0);
input_set_abs_params(input, ABS_MT_TOUCH_MAJOR, 0, 255 << 2,
4, 0);
input_set_abs_params(input, ABS_MT_TOUCH_MINOR, 0, 255 << 2,
4, 0);
input_set_abs_params(input, ABS_MT_ORIENTATION, -31, 32, 1, 0);

/* Note: Touch Y position from the device is inverted relative
Expand Down
8 changes: 4 additions & 4 deletions drivers/hid/usbhid/Kconfig
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
comment "USB Input Devices"
menu "USB HID support"
depends on USB

config USB_HID
tristate "USB Human Interface Device (full HID) support"
tristate "USB HID transport layer"
default y
depends on USB && INPUT
select HID
---help---
Say Y here if you want full HID support to connect USB keyboards,
Say Y here if you want to connect USB keyboards,
mice, joysticks, graphic tablets, or any other HID based devices
to your computer via USB, as well as Uninterruptible Power Supply
(UPS) and monitor control devices.
Expand Down Expand Up @@ -81,4 +81,4 @@ config USB_MOUSE

endmenu


endmenu
2 changes: 1 addition & 1 deletion net/bluetooth/hidp/Kconfig
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
config BT_HIDP
tristate "HIDP protocol support"
depends on BT && INPUT && HID_SUPPORT
depends on BT && INPUT
select HID
help
HIDP (Human Interface Device Protocol) is a transport layer
Expand Down

0 comments on commit 60d2c25

Please sign in to comment.