mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 05:11:48 +00:00
HID: use hid_hw_request() instead of direct call to usbhid
This allows the hid drivers to be independent from the transport layer. The patch was constructed by replacing all occurences of usbhid_submit_report() by its hid_hw_request() counterpart. Then, drivers not requiring USB_HID anymore have their USB_HID dependency cleaned in the Kconfig file. Finally, few drivers still depends on USB_HID. Many of them are requiring the io wait callback. They are found in the next patch. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> For the sensor-hub part: Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
f3757cea18
commit
d881427253
@ -99,7 +99,7 @@ config HID_A4TECH
|
|||||||
|
|
||||||
config HID_ACRUX
|
config HID_ACRUX
|
||||||
tristate "ACRUX game controller support"
|
tristate "ACRUX game controller support"
|
||||||
depends on USB_HID
|
depends on HID
|
||||||
---help---
|
---help---
|
||||||
Say Y here if you want to enable support for ACRUX game controllers.
|
Say Y here if you want to enable support for ACRUX game controllers.
|
||||||
|
|
||||||
@ -151,7 +151,7 @@ config HID_CHICONY
|
|||||||
|
|
||||||
config HID_PRODIKEYS
|
config HID_PRODIKEYS
|
||||||
tristate "Prodikeys PC-MIDI Keyboard support"
|
tristate "Prodikeys PC-MIDI Keyboard support"
|
||||||
depends on USB_HID && SND
|
depends on HID && SND
|
||||||
select SND_RAWMIDI
|
select SND_RAWMIDI
|
||||||
---help---
|
---help---
|
||||||
Support for Prodikeys PC-MIDI Keyboard device support.
|
Support for Prodikeys PC-MIDI Keyboard device support.
|
||||||
@ -173,7 +173,7 @@ config HID_CYPRESS
|
|||||||
|
|
||||||
config HID_DRAGONRISE
|
config HID_DRAGONRISE
|
||||||
tristate "DragonRise Inc. game controller"
|
tristate "DragonRise Inc. game controller"
|
||||||
depends on USB_HID
|
depends on HID
|
||||||
---help---
|
---help---
|
||||||
Say Y here if you have DragonRise Inc. game controllers.
|
Say Y here if you have DragonRise Inc. game controllers.
|
||||||
These might be branded as:
|
These might be branded as:
|
||||||
@ -192,7 +192,7 @@ config DRAGONRISE_FF
|
|||||||
|
|
||||||
config HID_EMS_FF
|
config HID_EMS_FF
|
||||||
tristate "EMS Production Inc. force feedback support"
|
tristate "EMS Production Inc. force feedback support"
|
||||||
depends on USB_HID
|
depends on HID
|
||||||
select INPUT_FF_MEMLESS
|
select INPUT_FF_MEMLESS
|
||||||
---help---
|
---help---
|
||||||
Say Y here if you want to enable force feedback support for devices by
|
Say Y here if you want to enable force feedback support for devices by
|
||||||
@ -215,7 +215,7 @@ config HID_EZKEY
|
|||||||
|
|
||||||
config HID_HOLTEK
|
config HID_HOLTEK
|
||||||
tristate "Holtek HID devices"
|
tristate "Holtek HID devices"
|
||||||
depends on USB_HID
|
depends on HID
|
||||||
---help---
|
---help---
|
||||||
Support for Holtek based devices:
|
Support for Holtek based devices:
|
||||||
- Holtek On Line Grip based game controller
|
- Holtek On Line Grip based game controller
|
||||||
@ -239,7 +239,7 @@ config HID_KEYTOUCH
|
|||||||
|
|
||||||
config HID_KYE
|
config HID_KYE
|
||||||
tristate "KYE/Genius devices"
|
tristate "KYE/Genius devices"
|
||||||
depends on USB_HID
|
depends on HID
|
||||||
---help---
|
---help---
|
||||||
Support for KYE/Genius devices not fully compliant with HID standard:
|
Support for KYE/Genius devices not fully compliant with HID standard:
|
||||||
- Ergo Mouse
|
- Ergo Mouse
|
||||||
@ -397,7 +397,7 @@ config HID_MONTEREY
|
|||||||
|
|
||||||
config HID_MULTITOUCH
|
config HID_MULTITOUCH
|
||||||
tristate "HID Multitouch panels"
|
tristate "HID Multitouch panels"
|
||||||
depends on USB_HID
|
depends on HID
|
||||||
---help---
|
---help---
|
||||||
Generic support for HID multitouch panels.
|
Generic support for HID multitouch panels.
|
||||||
|
|
||||||
@ -458,7 +458,7 @@ config HID_ORTEK
|
|||||||
|
|
||||||
config HID_PANTHERLORD
|
config HID_PANTHERLORD
|
||||||
tristate "Pantherlord/GreenAsia game controller"
|
tristate "Pantherlord/GreenAsia game controller"
|
||||||
depends on USB_HID
|
depends on HID
|
||||||
---help---
|
---help---
|
||||||
Say Y here if you have a PantherLord/GreenAsia based game controller
|
Say Y here if you have a PantherLord/GreenAsia based game controller
|
||||||
or adapter.
|
or adapter.
|
||||||
@ -592,13 +592,13 @@ config HID_SONY
|
|||||||
|
|
||||||
config HID_SPEEDLINK
|
config HID_SPEEDLINK
|
||||||
tristate "Speedlink VAD Cezanne mouse support"
|
tristate "Speedlink VAD Cezanne mouse support"
|
||||||
depends on USB_HID
|
depends on HID
|
||||||
---help---
|
---help---
|
||||||
Support for Speedlink Vicious and Divine Cezanne mouse.
|
Support for Speedlink Vicious and Divine Cezanne mouse.
|
||||||
|
|
||||||
config HID_STEELSERIES
|
config HID_STEELSERIES
|
||||||
tristate "Steelseries SRW-S1 steering wheel support"
|
tristate "Steelseries SRW-S1 steering wheel support"
|
||||||
depends on USB_HID
|
depends on HID
|
||||||
---help---
|
---help---
|
||||||
Support for Steelseries SRW-S1 steering wheel
|
Support for Steelseries SRW-S1 steering wheel
|
||||||
|
|
||||||
@ -610,7 +610,7 @@ config HID_SUNPLUS
|
|||||||
|
|
||||||
config HID_GREENASIA
|
config HID_GREENASIA
|
||||||
tristate "GreenAsia (Product ID 0x12) game controller support"
|
tristate "GreenAsia (Product ID 0x12) game controller support"
|
||||||
depends on USB_HID
|
depends on HID
|
||||||
---help---
|
---help---
|
||||||
Say Y here if you have a GreenAsia (Product ID 0x12) based game
|
Say Y here if you have a GreenAsia (Product ID 0x12) based game
|
||||||
controller or adapter.
|
controller or adapter.
|
||||||
@ -632,7 +632,7 @@ config HID_HYPERV_MOUSE
|
|||||||
|
|
||||||
config HID_SMARTJOYPLUS
|
config HID_SMARTJOYPLUS
|
||||||
tristate "SmartJoy PLUS PS2/USB adapter support"
|
tristate "SmartJoy PLUS PS2/USB adapter support"
|
||||||
depends on USB_HID
|
depends on HID
|
||||||
---help---
|
---help---
|
||||||
Support for SmartJoy PLUS PS2/USB adapter, Super Dual Box,
|
Support for SmartJoy PLUS PS2/USB adapter, Super Dual Box,
|
||||||
Super Joy Box 3 Pro, Super Dual Box Pro, and Super Joy Box 5 Pro.
|
Super Joy Box 3 Pro, Super Dual Box Pro, and Super Joy Box 5 Pro.
|
||||||
@ -673,7 +673,7 @@ config HID_THINGM
|
|||||||
|
|
||||||
config HID_THRUSTMASTER
|
config HID_THRUSTMASTER
|
||||||
tristate "ThrustMaster devices support"
|
tristate "ThrustMaster devices support"
|
||||||
depends on USB_HID
|
depends on HID
|
||||||
---help---
|
---help---
|
||||||
Say Y here if you have a THRUSTMASTER FireStore Dual Power 2 or
|
Say Y here if you have a THRUSTMASTER FireStore Dual Power 2 or
|
||||||
a THRUSTMASTER Ferrari GT Rumble Wheel.
|
a THRUSTMASTER Ferrari GT Rumble Wheel.
|
||||||
@ -715,7 +715,7 @@ config HID_WIIMOTE_EXT
|
|||||||
|
|
||||||
config HID_ZEROPLUS
|
config HID_ZEROPLUS
|
||||||
tristate "Zeroplus based game controller support"
|
tristate "Zeroplus based game controller support"
|
||||||
depends on USB_HID
|
depends on HID
|
||||||
---help---
|
---help---
|
||||||
Say Y here if you have a Zeroplus based game controller.
|
Say Y here if you have a Zeroplus based game controller.
|
||||||
|
|
||||||
@ -735,7 +735,7 @@ config HID_ZYDACRON
|
|||||||
|
|
||||||
config HID_SENSOR_HUB
|
config HID_SENSOR_HUB
|
||||||
tristate "HID Sensors framework support"
|
tristate "HID Sensors framework support"
|
||||||
depends on USB_HID && GENERIC_HARDIRQS
|
depends on HID && GENERIC_HARDIRQS
|
||||||
select MFD_CORE
|
select MFD_CORE
|
||||||
default n
|
default n
|
||||||
-- help---
|
-- help---
|
||||||
|
@ -29,14 +29,12 @@
|
|||||||
|
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
|
|
||||||
#ifdef CONFIG_HID_ACRUX_FF
|
#ifdef CONFIG_HID_ACRUX_FF
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
|
|
||||||
struct axff_device {
|
struct axff_device {
|
||||||
struct hid_report *report;
|
struct hid_report *report;
|
||||||
@ -68,7 +66,7 @@ static int axff_play(struct input_dev *dev, void *data, struct ff_effect *effect
|
|||||||
}
|
}
|
||||||
|
|
||||||
dbg_hid("running with 0x%02x 0x%02x", left, right);
|
dbg_hid("running with 0x%02x 0x%02x", left, right);
|
||||||
usbhid_submit_report(hid, axff->report, USB_DIR_OUT);
|
hid_hw_request(hid, axff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -114,7 +112,7 @@ static int axff_init(struct hid_device *hid)
|
|||||||
goto err_free_mem;
|
goto err_free_mem;
|
||||||
|
|
||||||
axff->report = report;
|
axff->report = report;
|
||||||
usbhid_submit_report(hid, axff->report, USB_DIR_OUT);
|
hid_hw_request(hid, axff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
hid_info(hid, "Force Feedback for ACRUX game controllers by Sergei Kolzun <x0r@dv-life.ru>\n");
|
hid_info(hid, "Force Feedback for ACRUX game controllers by Sergei Kolzun <x0r@dv-life.ru>\n");
|
||||||
|
|
||||||
|
@ -29,14 +29,12 @@
|
|||||||
|
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
|
|
||||||
#ifdef CONFIG_DRAGONRISE_FF
|
#ifdef CONFIG_DRAGONRISE_FF
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
|
|
||||||
struct drff_device {
|
struct drff_device {
|
||||||
struct hid_report *report;
|
struct hid_report *report;
|
||||||
@ -68,7 +66,7 @@ static int drff_play(struct input_dev *dev, void *data,
|
|||||||
drff->report->field[0]->value[1] = 0x00;
|
drff->report->field[0]->value[1] = 0x00;
|
||||||
drff->report->field[0]->value[2] = weak;
|
drff->report->field[0]->value[2] = weak;
|
||||||
drff->report->field[0]->value[4] = strong;
|
drff->report->field[0]->value[4] = strong;
|
||||||
usbhid_submit_report(hid, drff->report, USB_DIR_OUT);
|
hid_hw_request(hid, drff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
drff->report->field[0]->value[0] = 0xfa;
|
drff->report->field[0]->value[0] = 0xfa;
|
||||||
drff->report->field[0]->value[1] = 0xfe;
|
drff->report->field[0]->value[1] = 0xfe;
|
||||||
@ -80,7 +78,7 @@ static int drff_play(struct input_dev *dev, void *data,
|
|||||||
drff->report->field[0]->value[2] = 0x00;
|
drff->report->field[0]->value[2] = 0x00;
|
||||||
drff->report->field[0]->value[4] = 0x00;
|
drff->report->field[0]->value[4] = 0x00;
|
||||||
dbg_hid("running with 0x%02x 0x%02x", strong, weak);
|
dbg_hid("running with 0x%02x 0x%02x", strong, weak);
|
||||||
usbhid_submit_report(hid, drff->report, USB_DIR_OUT);
|
hid_hw_request(hid, drff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -132,7 +130,7 @@ static int drff_init(struct hid_device *hid)
|
|||||||
drff->report->field[0]->value[4] = 0x00;
|
drff->report->field[0]->value[4] = 0x00;
|
||||||
drff->report->field[0]->value[5] = 0x00;
|
drff->report->field[0]->value[5] = 0x00;
|
||||||
drff->report->field[0]->value[6] = 0x00;
|
drff->report->field[0]->value[6] = 0x00;
|
||||||
usbhid_submit_report(hid, drff->report, USB_DIR_OUT);
|
hid_hw_request(hid, drff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
hid_info(hid, "Force Feedback for DragonRise Inc. "
|
hid_info(hid, "Force Feedback for DragonRise Inc. "
|
||||||
"game controllers by Richard Walmsley <richwalm@gmail.com>\n");
|
"game controllers by Richard Walmsley <richwalm@gmail.com>\n");
|
||||||
|
@ -23,11 +23,9 @@
|
|||||||
|
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
|
|
||||||
struct emsff_device {
|
struct emsff_device {
|
||||||
struct hid_report *report;
|
struct hid_report *report;
|
||||||
@ -52,7 +50,7 @@ static int emsff_play(struct input_dev *dev, void *data,
|
|||||||
emsff->report->field[0]->value[2] = strong;
|
emsff->report->field[0]->value[2] = strong;
|
||||||
|
|
||||||
dbg_hid("running with 0x%02x 0x%02x\n", strong, weak);
|
dbg_hid("running with 0x%02x 0x%02x\n", strong, weak);
|
||||||
usbhid_submit_report(hid, emsff->report, USB_DIR_OUT);
|
hid_hw_request(hid, emsff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -104,7 +102,7 @@ static int emsff_init(struct hid_device *hid)
|
|||||||
emsff->report->field[0]->value[4] = 0x00;
|
emsff->report->field[0]->value[4] = 0x00;
|
||||||
emsff->report->field[0]->value[5] = 0x00;
|
emsff->report->field[0]->value[5] = 0x00;
|
||||||
emsff->report->field[0]->value[6] = 0x00;
|
emsff->report->field[0]->value[6] = 0x00;
|
||||||
usbhid_submit_report(hid, emsff->report, USB_DIR_OUT);
|
hid_hw_request(hid, emsff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
hid_info(hid, "force feedback for EMS based devices by Ignaz Forster <ignaz.forster@gmx.de>\n");
|
hid_info(hid, "force feedback for EMS based devices by Ignaz Forster <ignaz.forster@gmx.de>\n");
|
||||||
|
|
||||||
|
@ -29,13 +29,11 @@
|
|||||||
|
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
|
|
||||||
#ifdef CONFIG_GREENASIA_FF
|
#ifdef CONFIG_GREENASIA_FF
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
|
|
||||||
struct gaff_device {
|
struct gaff_device {
|
||||||
struct hid_report *report;
|
struct hid_report *report;
|
||||||
@ -63,14 +61,14 @@ static int hid_gaff_play(struct input_dev *dev, void *data,
|
|||||||
gaff->report->field[0]->value[4] = left;
|
gaff->report->field[0]->value[4] = left;
|
||||||
gaff->report->field[0]->value[5] = 0;
|
gaff->report->field[0]->value[5] = 0;
|
||||||
dbg_hid("running with 0x%02x 0x%02x", left, right);
|
dbg_hid("running with 0x%02x 0x%02x", left, right);
|
||||||
usbhid_submit_report(hid, gaff->report, USB_DIR_OUT);
|
hid_hw_request(hid, gaff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
gaff->report->field[0]->value[0] = 0xfa;
|
gaff->report->field[0]->value[0] = 0xfa;
|
||||||
gaff->report->field[0]->value[1] = 0xfe;
|
gaff->report->field[0]->value[1] = 0xfe;
|
||||||
gaff->report->field[0]->value[2] = 0x0;
|
gaff->report->field[0]->value[2] = 0x0;
|
||||||
gaff->report->field[0]->value[4] = 0x0;
|
gaff->report->field[0]->value[4] = 0x0;
|
||||||
|
|
||||||
usbhid_submit_report(hid, gaff->report, USB_DIR_OUT);
|
hid_hw_request(hid, gaff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -122,12 +120,12 @@ static int gaff_init(struct hid_device *hid)
|
|||||||
gaff->report->field[0]->value[1] = 0x00;
|
gaff->report->field[0]->value[1] = 0x00;
|
||||||
gaff->report->field[0]->value[2] = 0x00;
|
gaff->report->field[0]->value[2] = 0x00;
|
||||||
gaff->report->field[0]->value[3] = 0x00;
|
gaff->report->field[0]->value[3] = 0x00;
|
||||||
usbhid_submit_report(hid, gaff->report, USB_DIR_OUT);
|
hid_hw_request(hid, gaff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
gaff->report->field[0]->value[0] = 0xfa;
|
gaff->report->field[0]->value[0] = 0xfa;
|
||||||
gaff->report->field[0]->value[1] = 0xfe;
|
gaff->report->field[0]->value[1] = 0xfe;
|
||||||
|
|
||||||
usbhid_submit_report(hid, gaff->report, USB_DIR_OUT);
|
hid_hw_request(hid, gaff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
hid_info(hid, "Force Feedback for GreenAsia 0x12 devices by Lukasz Lubojanski <lukasz@lubojanski.info>\n");
|
hid_info(hid, "Force Feedback for GreenAsia 0x12 devices by Lukasz Lubojanski <lukasz@lubojanski.info>\n");
|
||||||
|
|
||||||
|
@ -27,12 +27,10 @@
|
|||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
|
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
|
|
||||||
#ifdef CONFIG_HOLTEK_FF
|
#ifdef CONFIG_HOLTEK_FF
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
|
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_AUTHOR("Anssi Hannula <anssi.hannula@iki.fi>");
|
MODULE_AUTHOR("Anssi Hannula <anssi.hannula@iki.fi>");
|
||||||
@ -102,7 +100,7 @@ static void holtekff_send(struct holtekff_device *holtekff,
|
|||||||
|
|
||||||
dbg_hid("sending %*ph\n", 7, data);
|
dbg_hid("sending %*ph\n", 7, data);
|
||||||
|
|
||||||
usbhid_submit_report(hid, holtekff->field->report, USB_DIR_OUT);
|
hid_hw_request(hid, holtekff->field->report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int holtekff_play(struct input_dev *dev, void *data,
|
static int holtekff_play(struct input_dev *dev, void *data,
|
||||||
|
@ -16,8 +16,6 @@
|
|||||||
#include <linux/device.h>
|
#include <linux/device.h>
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
|
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
|
|
||||||
@ -361,7 +359,7 @@ static int kye_tablet_enable(struct hid_device *hdev)
|
|||||||
value[4] = 0x00;
|
value[4] = 0x00;
|
||||||
value[5] = 0x00;
|
value[5] = 0x00;
|
||||||
value[6] = 0x00;
|
value[6] = 0x00;
|
||||||
usbhid_submit_report(hdev, report, USB_DIR_OUT);
|
hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ static int tpkbd_features_set(struct hid_device *hdev)
|
|||||||
report->field[2]->value[0] = data_pointer->sensitivity;
|
report->field[2]->value[0] = data_pointer->sensitivity;
|
||||||
report->field[3]->value[0] = data_pointer->press_speed;
|
report->field[3]->value[0] = data_pointer->press_speed;
|
||||||
|
|
||||||
usbhid_submit_report(hdev, report, USB_DIR_OUT);
|
hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -332,7 +332,7 @@ static void tpkbd_led_brightness_set(struct led_classdev *led_cdev,
|
|||||||
report = hdev->report_enum[HID_OUTPUT_REPORT].report_id_hash[3];
|
report = hdev->report_enum[HID_OUTPUT_REPORT].report_id_hash[3];
|
||||||
report->field[0]->value[0] = (data_pointer->led_state >> 0) & 1;
|
report->field[0]->value[0] = (data_pointer->led_state >> 0) & 1;
|
||||||
report->field[0]->value[1] = (data_pointer->led_state >> 1) & 1;
|
report->field[0]->value[1] = (data_pointer->led_state >> 1) & 1;
|
||||||
usbhid_submit_report(hdev, report, USB_DIR_OUT);
|
hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tpkbd_probe_tp(struct hid_device *hdev)
|
static int tpkbd_probe_tp(struct hid_device *hdev)
|
||||||
|
@ -23,10 +23,8 @@
|
|||||||
|
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
|
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
#include "hid-lg.h"
|
#include "hid-lg.h"
|
||||||
|
|
||||||
struct lg2ff_device {
|
struct lg2ff_device {
|
||||||
@ -56,7 +54,7 @@ static int play_effect(struct input_dev *dev, void *data,
|
|||||||
lg2ff->report->field[0]->value[4] = 0x00;
|
lg2ff->report->field[0]->value[4] = 0x00;
|
||||||
}
|
}
|
||||||
|
|
||||||
usbhid_submit_report(hid, lg2ff->report, USB_DIR_OUT);
|
hid_hw_request(hid, lg2ff->report, HID_REQ_SET_REPORT);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,7 +106,7 @@ int lg2ff_init(struct hid_device *hid)
|
|||||||
report->field[0]->value[5] = 0x00;
|
report->field[0]->value[5] = 0x00;
|
||||||
report->field[0]->value[6] = 0x00;
|
report->field[0]->value[6] = 0x00;
|
||||||
|
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
hid_info(hid, "Force feedback for Logitech RumblePad/Rumblepad 2 by Anssi Hannula <anssi.hannula@gmail.com>\n");
|
hid_info(hid, "Force feedback for Logitech RumblePad/Rumblepad 2 by Anssi Hannula <anssi.hannula@gmail.com>\n");
|
||||||
|
|
||||||
|
@ -22,10 +22,8 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
|
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
#include "hid-lg.h"
|
#include "hid-lg.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -92,7 +90,7 @@ static int hid_lg3ff_play(struct input_dev *dev, void *data,
|
|||||||
report->field[0]->value[1] = (unsigned char)(-x);
|
report->field[0]->value[1] = (unsigned char)(-x);
|
||||||
report->field[0]->value[31] = (unsigned char)(-y);
|
report->field[0]->value[31] = (unsigned char)(-y);
|
||||||
|
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -118,7 +116,7 @@ static void hid_lg3ff_set_autocenter(struct input_dev *dev, u16 magnitude)
|
|||||||
report->field[0]->value[33] = 0x7F;
|
report->field[0]->value[33] = 0x7F;
|
||||||
report->field[0]->value[34] = 0x7F;
|
report->field[0]->value[34] = 0x7F;
|
||||||
|
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -202,7 +202,7 @@ static int hid_lg4ff_play(struct input_dev *dev, void *data, struct ff_effect *e
|
|||||||
value[5] = 0x00;
|
value[5] = 0x00;
|
||||||
value[6] = 0x00;
|
value[6] = 0x00;
|
||||||
|
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -225,7 +225,7 @@ static void hid_lg4ff_set_autocenter_default(struct input_dev *dev, u16 magnitud
|
|||||||
value[5] = 0x00;
|
value[5] = 0x00;
|
||||||
value[6] = 0x00;
|
value[6] = 0x00;
|
||||||
|
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sends autocentering command compatible with Formula Force EX */
|
/* Sends autocentering command compatible with Formula Force EX */
|
||||||
@ -245,7 +245,7 @@ static void hid_lg4ff_set_autocenter_ffex(struct input_dev *dev, u16 magnitude)
|
|||||||
value[5] = 0x00;
|
value[5] = 0x00;
|
||||||
value[6] = 0x00;
|
value[6] = 0x00;
|
||||||
|
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sends command to set range compatible with G25/G27/Driving Force GT */
|
/* Sends command to set range compatible with G25/G27/Driving Force GT */
|
||||||
@ -265,7 +265,7 @@ static void hid_lg4ff_set_range_g25(struct hid_device *hid, u16 range)
|
|||||||
value[5] = 0x00;
|
value[5] = 0x00;
|
||||||
value[6] = 0x00;
|
value[6] = 0x00;
|
||||||
|
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Sends commands to set range compatible with Driving Force Pro wheel */
|
/* Sends commands to set range compatible with Driving Force Pro wheel */
|
||||||
@ -294,7 +294,7 @@ static void hid_lg4ff_set_range_dfp(struct hid_device *hid, __u16 range)
|
|||||||
report->field[0]->value[1] = 0x02;
|
report->field[0]->value[1] = 0x02;
|
||||||
full_range = 200;
|
full_range = 200;
|
||||||
}
|
}
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
/* Prepare "fine" limit command */
|
/* Prepare "fine" limit command */
|
||||||
value[0] = 0x81;
|
value[0] = 0x81;
|
||||||
@ -306,7 +306,7 @@ static void hid_lg4ff_set_range_dfp(struct hid_device *hid, __u16 range)
|
|||||||
value[6] = 0x00;
|
value[6] = 0x00;
|
||||||
|
|
||||||
if (range == 200 || range == 900) { /* Do not apply any fine limit */
|
if (range == 200 || range == 900) { /* Do not apply any fine limit */
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,7 +320,7 @@ static void hid_lg4ff_set_range_dfp(struct hid_device *hid, __u16 range)
|
|||||||
value[5] = (start_right & 0xe) << 4 | (start_left & 0xe);
|
value[5] = (start_right & 0xe) << 4 | (start_left & 0xe);
|
||||||
value[6] = 0xff;
|
value[6] = 0xff;
|
||||||
|
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void hid_lg4ff_switch_native(struct hid_device *hid, const struct lg4ff_native_cmd *cmd)
|
static void hid_lg4ff_switch_native(struct hid_device *hid, const struct lg4ff_native_cmd *cmd)
|
||||||
@ -334,7 +334,7 @@ static void hid_lg4ff_switch_native(struct hid_device *hid, const struct lg4ff_n
|
|||||||
for (i = 0; i < 7; i++)
|
for (i = 0; i < 7; i++)
|
||||||
report->field[0]->value[i] = cmd->cmd[j++];
|
report->field[0]->value[i] = cmd->cmd[j++];
|
||||||
|
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,7 +410,7 @@ static void lg4ff_set_leds(struct hid_device *hid, __u8 leds)
|
|||||||
value[4] = 0x00;
|
value[4] = 0x00;
|
||||||
value[5] = 0x00;
|
value[5] = 0x00;
|
||||||
value[6] = 0x00;
|
value[6] = 0x00;
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lg4ff_led_set_brightness(struct led_classdev *led_cdev,
|
static void lg4ff_led_set_brightness(struct led_classdev *led_cdev,
|
||||||
|
@ -30,10 +30,8 @@
|
|||||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||||
|
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
|
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
#include "hid-lg.h"
|
#include "hid-lg.h"
|
||||||
|
|
||||||
struct dev_type {
|
struct dev_type {
|
||||||
@ -89,7 +87,7 @@ static int hid_lgff_play(struct input_dev *dev, void *data, struct ff_effect *ef
|
|||||||
report->field[0]->value[2] = x;
|
report->field[0]->value[2] = x;
|
||||||
report->field[0]->value[3] = y;
|
report->field[0]->value[3] = y;
|
||||||
dbg_hid("(x, y)=(%04x, %04x)\n", x, y);
|
dbg_hid("(x, y)=(%04x, %04x)\n", x, y);
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FF_RUMBLE:
|
case FF_RUMBLE:
|
||||||
@ -104,7 +102,7 @@ static int hid_lgff_play(struct input_dev *dev, void *data, struct ff_effect *ef
|
|||||||
report->field[0]->value[2] = left;
|
report->field[0]->value[2] = left;
|
||||||
report->field[0]->value[3] = right;
|
report->field[0]->value[3] = right;
|
||||||
dbg_hid("(left, right)=(%04x, %04x)\n", left, right);
|
dbg_hid("(left, right)=(%04x, %04x)\n", left, right);
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -124,7 +122,7 @@ static void hid_lgff_set_autocenter(struct input_dev *dev, u16 magnitude)
|
|||||||
*value++ = 0x80;
|
*value++ = 0x80;
|
||||||
*value++ = 0x00;
|
*value++ = 0x00;
|
||||||
*value = 0x00;
|
*value = 0x00;
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
int lgff_init(struct hid_device* hid)
|
int lgff_init(struct hid_device* hid)
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/usb.h>
|
#include <linux/usb.h>
|
||||||
#include <asm/unaligned.h>
|
#include <asm/unaligned.h>
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
#include "hid-logitech-dj.h"
|
#include "hid-logitech-dj.h"
|
||||||
|
|
||||||
@ -638,7 +637,7 @@ static int logi_dj_ll_input_event(struct input_dev *dev, unsigned int type,
|
|||||||
hid_set_field(report->field[0], 1, REPORT_TYPE_LEDS);
|
hid_set_field(report->field[0], 1, REPORT_TYPE_LEDS);
|
||||||
hid_set_field(report->field[0], 2, data[1]);
|
hid_set_field(report->field[0], 2, data[1]);
|
||||||
|
|
||||||
usbhid_submit_report(dj_rcv_hiddev, report, USB_DIR_OUT);
|
hid_hw_request(dj_rcv_hiddev, report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -736,7 +736,7 @@ static void mt_set_input_mode(struct hid_device *hdev)
|
|||||||
r = re->report_id_hash[td->inputmode];
|
r = re->report_id_hash[td->inputmode];
|
||||||
if (r) {
|
if (r) {
|
||||||
r->field[0]->value[td->inputmode_index] = 0x02;
|
r->field[0]->value[td->inputmode_index] = 0x02;
|
||||||
usbhid_submit_report(hdev, r, USB_DIR_OUT);
|
hid_hw_request(hdev, r, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -761,7 +761,7 @@ static void mt_set_maxcontacts(struct hid_device *hdev)
|
|||||||
max = min(fieldmax, max);
|
max = min(fieldmax, max);
|
||||||
if (r->field[0]->value[0] != max) {
|
if (r->field[0]->value[0] != max) {
|
||||||
r->field[0]->value[0] = max;
|
r->field[0]->value[0] = max;
|
||||||
usbhid_submit_report(hdev, r, USB_DIR_OUT);
|
hid_hw_request(hdev, r, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ static inline int ntrig_get_mode(struct hid_device *hdev)
|
|||||||
if (!report)
|
if (!report)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
usbhid_submit_report(hdev, report, USB_DIR_IN);
|
hid_hw_request(hdev, report, HID_REQ_GET_REPORT);
|
||||||
usbhid_wait_io(hdev);
|
usbhid_wait_io(hdev);
|
||||||
return (int)report->field[0]->value[0];
|
return (int)report->field[0]->value[0];
|
||||||
}
|
}
|
||||||
@ -137,7 +137,7 @@ static inline void ntrig_set_mode(struct hid_device *hdev, const int mode)
|
|||||||
if (!report)
|
if (!report)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
usbhid_submit_report(hdev, report, USB_DIR_IN);
|
hid_hw_request(hdev, report, HID_REQ_GET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ntrig_report_version(struct hid_device *hdev)
|
static void ntrig_report_version(struct hid_device *hdev)
|
||||||
@ -938,7 +938,7 @@ static int ntrig_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
|||||||
/* Let the device settle to ensure the wakeup message gets
|
/* Let the device settle to ensure the wakeup message gets
|
||||||
* through */
|
* through */
|
||||||
usbhid_wait_io(hdev);
|
usbhid_wait_io(hdev);
|
||||||
usbhid_submit_report(hdev, report, USB_DIR_IN);
|
hid_hw_request(hdev, report, HID_REQ_GET_REPORT);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sanity check: if the current mode is invalid reset it to
|
* Sanity check: if the current mode is invalid reset it to
|
||||||
|
@ -142,10 +142,10 @@ struct hid_report *picolcd_report(int id, struct hid_device *hdev, int dir);
|
|||||||
#ifdef CONFIG_DEBUG_FS
|
#ifdef CONFIG_DEBUG_FS
|
||||||
void picolcd_debug_out_report(struct picolcd_data *data,
|
void picolcd_debug_out_report(struct picolcd_data *data,
|
||||||
struct hid_device *hdev, struct hid_report *report);
|
struct hid_device *hdev, struct hid_report *report);
|
||||||
#define usbhid_submit_report(a, b, c) \
|
#define hid_hw_request(a, b, c) \
|
||||||
do { \
|
do { \
|
||||||
picolcd_debug_out_report(hid_get_drvdata(a), a, b); \
|
picolcd_debug_out_report(hid_get_drvdata(a), a, b); \
|
||||||
usbhid_submit_report(a, b, c); \
|
hid_hw_request(a, b, c); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
void picolcd_debug_raw_event(struct picolcd_data *data,
|
void picolcd_debug_raw_event(struct picolcd_data *data,
|
||||||
|
@ -18,8 +18,6 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
#include <linux/usb.h>
|
|
||||||
|
|
||||||
#include <linux/fb.h>
|
#include <linux/fb.h>
|
||||||
#include <linux/backlight.h>
|
#include <linux/backlight.h>
|
||||||
@ -46,7 +44,7 @@ static int picolcd_set_brightness(struct backlight_device *bdev)
|
|||||||
spin_lock_irqsave(&data->lock, flags);
|
spin_lock_irqsave(&data->lock, flags);
|
||||||
hid_set_field(report->field[0], 0, data->lcd_power == FB_BLANK_UNBLANK ? data->lcd_brightness : 0);
|
hid_set_field(report->field[0], 0, data->lcd_power == FB_BLANK_UNBLANK ? data->lcd_brightness : 0);
|
||||||
if (!(data->status & PICOLCD_FAILED))
|
if (!(data->status & PICOLCD_FAILED))
|
||||||
usbhid_submit_report(data->hdev, report, USB_DIR_OUT);
|
hid_hw_request(data->hdev, report, HID_REQ_SET_REPORT);
|
||||||
spin_unlock_irqrestore(&data->lock, flags);
|
spin_unlock_irqrestore(&data->lock, flags);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -21,8 +21,6 @@
|
|||||||
#include <linux/hid-debug.h>
|
#include <linux/hid-debug.h>
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
#include <linux/usb.h>
|
|
||||||
|
|
||||||
#include <linux/fb.h>
|
#include <linux/fb.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
|
@ -21,8 +21,6 @@
|
|||||||
#include <linux/hid-debug.h>
|
#include <linux/hid-debug.h>
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
#include <linux/usb.h>
|
|
||||||
|
|
||||||
#include <linux/fb.h>
|
#include <linux/fb.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
@ -110,7 +108,7 @@ struct picolcd_pending *picolcd_send_and_wait(struct hid_device *hdev,
|
|||||||
work = NULL;
|
work = NULL;
|
||||||
} else {
|
} else {
|
||||||
data->pending = work;
|
data->pending = work;
|
||||||
usbhid_submit_report(data->hdev, report, USB_DIR_OUT);
|
hid_hw_request(data->hdev, report, HID_REQ_SET_REPORT);
|
||||||
spin_unlock_irqrestore(&data->lock, flags);
|
spin_unlock_irqrestore(&data->lock, flags);
|
||||||
wait_for_completion_interruptible_timeout(&work->ready, HZ*2);
|
wait_for_completion_interruptible_timeout(&work->ready, HZ*2);
|
||||||
spin_lock_irqsave(&data->lock, flags);
|
spin_lock_irqsave(&data->lock, flags);
|
||||||
@ -244,7 +242,7 @@ int picolcd_reset(struct hid_device *hdev)
|
|||||||
spin_unlock_irqrestore(&data->lock, flags);
|
spin_unlock_irqrestore(&data->lock, flags);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
usbhid_submit_report(hdev, report, USB_DIR_OUT);
|
hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
|
||||||
spin_unlock_irqrestore(&data->lock, flags);
|
spin_unlock_irqrestore(&data->lock, flags);
|
||||||
|
|
||||||
error = picolcd_check_version(hdev);
|
error = picolcd_check_version(hdev);
|
||||||
@ -303,7 +301,7 @@ static ssize_t picolcd_operation_mode_store(struct device *dev,
|
|||||||
spin_lock_irqsave(&data->lock, flags);
|
spin_lock_irqsave(&data->lock, flags);
|
||||||
hid_set_field(report->field[0], 0, timeout & 0xff);
|
hid_set_field(report->field[0], 0, timeout & 0xff);
|
||||||
hid_set_field(report->field[0], 1, (timeout >> 8) & 0xff);
|
hid_set_field(report->field[0], 1, (timeout >> 8) & 0xff);
|
||||||
usbhid_submit_report(data->hdev, report, USB_DIR_OUT);
|
hid_hw_request(data->hdev, report, HID_REQ_SET_REPORT);
|
||||||
spin_unlock_irqrestore(&data->lock, flags);
|
spin_unlock_irqrestore(&data->lock, flags);
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
@ -19,8 +19,6 @@
|
|||||||
|
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include <linux/hid-debug.h>
|
#include <linux/hid-debug.h>
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
#include <linux/usb.h>
|
|
||||||
|
|
||||||
#include <linux/fb.h>
|
#include <linux/fb.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
#include "usbhid/usbhid.h"
|
#include "usbhid/usbhid.h"
|
||||||
#include <linux/usb.h>
|
|
||||||
|
|
||||||
#include <linux/fb.h>
|
#include <linux/fb.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
@ -143,8 +142,8 @@ static int picolcd_fb_send_tile(struct picolcd_data *data, u8 *vbitmap,
|
|||||||
else
|
else
|
||||||
hid_set_field(report2->field[0], 4 + i - 32, tdata[i]);
|
hid_set_field(report2->field[0], 4 + i - 32, tdata[i]);
|
||||||
|
|
||||||
usbhid_submit_report(data->hdev, report1, USB_DIR_OUT);
|
hid_hw_request(data->hdev, report1, HID_REQ_SET_REPORT);
|
||||||
usbhid_submit_report(data->hdev, report2, USB_DIR_OUT);
|
hid_hw_request(data->hdev, report2, HID_REQ_SET_REPORT);
|
||||||
spin_unlock_irqrestore(&data->lock, flags);
|
spin_unlock_irqrestore(&data->lock, flags);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -214,7 +213,7 @@ int picolcd_fb_reset(struct picolcd_data *data, int clear)
|
|||||||
hid_set_field(report->field[0], j, mapcmd[j]);
|
hid_set_field(report->field[0], j, mapcmd[j]);
|
||||||
else
|
else
|
||||||
hid_set_field(report->field[0], j, 0);
|
hid_set_field(report->field[0], j, 0);
|
||||||
usbhid_submit_report(data->hdev, report, USB_DIR_OUT);
|
hid_hw_request(data->hdev, report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
spin_unlock_irqrestore(&data->lock, flags);
|
spin_unlock_irqrestore(&data->lock, flags);
|
||||||
|
|
||||||
|
@ -18,8 +18,6 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
#include <linux/usb.h>
|
|
||||||
|
|
||||||
#include <linux/fb.h>
|
#include <linux/fb.h>
|
||||||
#include <linux/lcd.h>
|
#include <linux/lcd.h>
|
||||||
@ -48,7 +46,7 @@ static int picolcd_set_contrast(struct lcd_device *ldev, int contrast)
|
|||||||
spin_lock_irqsave(&data->lock, flags);
|
spin_lock_irqsave(&data->lock, flags);
|
||||||
hid_set_field(report->field[0], 0, data->lcd_contrast);
|
hid_set_field(report->field[0], 0, data->lcd_contrast);
|
||||||
if (!(data->status & PICOLCD_FAILED))
|
if (!(data->status & PICOLCD_FAILED))
|
||||||
usbhid_submit_report(data->hdev, report, USB_DIR_OUT);
|
hid_hw_request(data->hdev, report, HID_REQ_SET_REPORT);
|
||||||
spin_unlock_irqrestore(&data->lock, flags);
|
spin_unlock_irqrestore(&data->lock, flags);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -21,8 +21,6 @@
|
|||||||
#include <linux/hid-debug.h>
|
#include <linux/hid-debug.h>
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
#include <linux/usb.h>
|
|
||||||
|
|
||||||
#include <linux/fb.h>
|
#include <linux/fb.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
@ -55,7 +53,7 @@ void picolcd_leds_set(struct picolcd_data *data)
|
|||||||
spin_lock_irqsave(&data->lock, flags);
|
spin_lock_irqsave(&data->lock, flags);
|
||||||
hid_set_field(report->field[0], 0, data->led_state);
|
hid_set_field(report->field[0], 0, data->led_state);
|
||||||
if (!(data->status & PICOLCD_FAILED))
|
if (!(data->status & PICOLCD_FAILED))
|
||||||
usbhid_submit_report(data->hdev, report, USB_DIR_OUT);
|
hid_hw_request(data->hdev, report, HID_REQ_SET_REPORT);
|
||||||
spin_unlock_irqrestore(&data->lock, flags);
|
spin_unlock_irqrestore(&data->lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,13 +43,11 @@
|
|||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
|
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
|
|
||||||
#ifdef CONFIG_PANTHERLORD_FF
|
#ifdef CONFIG_PANTHERLORD_FF
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
|
|
||||||
struct plff_device {
|
struct plff_device {
|
||||||
struct hid_report *report;
|
struct hid_report *report;
|
||||||
@ -75,7 +73,7 @@ static int hid_plff_play(struct input_dev *dev, void *data,
|
|||||||
*plff->strong = left;
|
*plff->strong = left;
|
||||||
*plff->weak = right;
|
*plff->weak = right;
|
||||||
debug("running with 0x%02x 0x%02x", left, right);
|
debug("running with 0x%02x 0x%02x", left, right);
|
||||||
usbhid_submit_report(hid, plff->report, USB_DIR_OUT);
|
hid_hw_request(hid, plff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -169,7 +167,7 @@ static int plff_init(struct hid_device *hid)
|
|||||||
|
|
||||||
*strong = 0x00;
|
*strong = 0x00;
|
||||||
*weak = 0x00;
|
*weak = 0x00;
|
||||||
usbhid_submit_report(hid, plff->report, USB_DIR_OUT);
|
hid_hw_request(hid, plff->report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
hid_info(hid, "Force feedback for PantherLord/GreenAsia devices by Anssi Hannula <anssi.hannula@gmail.com>\n");
|
hid_info(hid, "Force feedback for PantherLord/GreenAsia devices by Anssi Hannula <anssi.hannula@gmail.com>\n");
|
||||||
|
@ -26,7 +26,6 @@
|
|||||||
#include <sound/core.h>
|
#include <sound/core.h>
|
||||||
#include <sound/initval.h>
|
#include <sound/initval.h>
|
||||||
#include <sound/rawmidi.h>
|
#include <sound/rawmidi.h>
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
|
|
||||||
|
|
||||||
@ -306,7 +305,7 @@ static void pcmidi_submit_output_report(struct pcmidi_snd *pm, int state)
|
|||||||
report->field[0]->value[0] = 0x01;
|
report->field[0]->value[0] = 0x01;
|
||||||
report->field[0]->value[1] = state;
|
report->field[0]->value[1] = state;
|
||||||
|
|
||||||
usbhid_submit_report(hdev, report, USB_DIR_OUT);
|
hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pcmidi_handle_report1(struct pcmidi_snd *pm, u8 *data)
|
static int pcmidi_handle_report1(struct pcmidi_snd *pm, u8 *data)
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/device.h>
|
#include <linux/device.h>
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
#include "usbhid/usbhid.h"
|
#include "usbhid/usbhid.h"
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
@ -204,7 +203,7 @@ int sensor_hub_set_feature(struct hid_sensor_hub_device *hsdev, u32 report_id,
|
|||||||
goto done_proc;
|
goto done_proc;
|
||||||
}
|
}
|
||||||
hid_set_field(report->field[field_index], 0, value);
|
hid_set_field(report->field[field_index], 0, value);
|
||||||
usbhid_submit_report(hsdev->hdev, report, USB_DIR_OUT);
|
hid_hw_request(hsdev->hdev, report, HID_REQ_SET_REPORT);
|
||||||
usbhid_wait_io(hsdev->hdev);
|
usbhid_wait_io(hsdev->hdev);
|
||||||
|
|
||||||
done_proc:
|
done_proc:
|
||||||
@ -227,7 +226,7 @@ int sensor_hub_get_feature(struct hid_sensor_hub_device *hsdev, u32 report_id,
|
|||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto done_proc;
|
goto done_proc;
|
||||||
}
|
}
|
||||||
usbhid_submit_report(hsdev->hdev, report, USB_DIR_IN);
|
hid_hw_request(hsdev->hdev, report, HID_REQ_GET_REPORT);
|
||||||
usbhid_wait_io(hsdev->hdev);
|
usbhid_wait_io(hsdev->hdev);
|
||||||
*value = report->field[field_index]->value[0];
|
*value = report->field[field_index]->value[0];
|
||||||
|
|
||||||
@ -262,7 +261,7 @@ int sensor_hub_input_attr_get_raw_value(struct hid_sensor_hub_device *hsdev,
|
|||||||
spin_unlock_irqrestore(&data->lock, flags);
|
spin_unlock_irqrestore(&data->lock, flags);
|
||||||
goto err_free;
|
goto err_free;
|
||||||
}
|
}
|
||||||
usbhid_submit_report(hsdev->hdev, report, USB_DIR_IN);
|
hid_hw_request(hsdev->hdev, report, HID_REQ_GET_REPORT);
|
||||||
spin_unlock_irqrestore(&data->lock, flags);
|
spin_unlock_irqrestore(&data->lock, flags);
|
||||||
wait_for_completion_interruptible_timeout(&data->pending.ready, HZ*5);
|
wait_for_completion_interruptible_timeout(&data->pending.ready, HZ*5);
|
||||||
switch (data->pending.raw_size) {
|
switch (data->pending.raw_size) {
|
||||||
|
@ -28,13 +28,11 @@
|
|||||||
|
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
|
|
||||||
#ifdef CONFIG_SMARTJOYPLUS_FF
|
#ifdef CONFIG_SMARTJOYPLUS_FF
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
|
|
||||||
struct sjoyff_device {
|
struct sjoyff_device {
|
||||||
struct hid_report *report;
|
struct hid_report *report;
|
||||||
@ -57,7 +55,7 @@ static int hid_sjoyff_play(struct input_dev *dev, void *data,
|
|||||||
sjoyff->report->field[0]->value[1] = right;
|
sjoyff->report->field[0]->value[1] = right;
|
||||||
sjoyff->report->field[0]->value[2] = left;
|
sjoyff->report->field[0]->value[2] = left;
|
||||||
dev_dbg(&dev->dev, "running with 0x%02x 0x%02x\n", left, right);
|
dev_dbg(&dev->dev, "running with 0x%02x 0x%02x\n", left, right);
|
||||||
usbhid_submit_report(hid, sjoyff->report, USB_DIR_OUT);
|
hid_hw_request(hid, sjoyff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -115,7 +113,7 @@ static int sjoyff_init(struct hid_device *hid)
|
|||||||
sjoyff->report->field[0]->value[0] = 0x01;
|
sjoyff->report->field[0]->value[0] = 0x01;
|
||||||
sjoyff->report->field[0]->value[1] = 0x00;
|
sjoyff->report->field[0]->value[1] = 0x00;
|
||||||
sjoyff->report->field[0]->value[2] = 0x00;
|
sjoyff->report->field[0]->value[2] = 0x00;
|
||||||
usbhid_submit_report(hid, sjoyff->report, USB_DIR_OUT);
|
hid_hw_request(hid, sjoyff->report, HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
hid_info(hid, "Force feedback for SmartJoy PLUS PS2/USB adapter\n");
|
hid_info(hid, "Force feedback for SmartJoy PLUS PS2/USB adapter\n");
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
|
|
||||||
#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE)
|
#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE)
|
||||||
@ -132,7 +131,7 @@ static void steelseries_srws1_set_leds(struct hid_device *hdev, __u16 leds)
|
|||||||
value[14] = 0x00;
|
value[14] = 0x00;
|
||||||
value[15] = 0x00;
|
value[15] = 0x00;
|
||||||
|
|
||||||
usbhid_submit_report(hdev, report, USB_DIR_OUT);
|
hid_hw_request(hdev, report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
/* Note: LED change does not show on device until the device is read/polled */
|
/* Note: LED change does not show on device until the device is read/polled */
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,6 @@
|
|||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
@ -46,7 +45,6 @@ static const signed short ff_joystick[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_THRUSTMASTER_FF
|
#ifdef CONFIG_THRUSTMASTER_FF
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
|
|
||||||
/* Usages for thrustmaster devices I know about */
|
/* Usages for thrustmaster devices I know about */
|
||||||
#define THRUSTMASTER_USAGE_FF (HID_UP_GENDESK | 0xbb)
|
#define THRUSTMASTER_USAGE_FF (HID_UP_GENDESK | 0xbb)
|
||||||
@ -103,7 +101,7 @@ static int tmff_play(struct input_dev *dev, void *data,
|
|||||||
dbg_hid("(x, y)=(%04x, %04x)\n", x, y);
|
dbg_hid("(x, y)=(%04x, %04x)\n", x, y);
|
||||||
ff_field->value[0] = x;
|
ff_field->value[0] = x;
|
||||||
ff_field->value[1] = y;
|
ff_field->value[1] = y;
|
||||||
usbhid_submit_report(hid, tmff->report, USB_DIR_OUT);
|
hid_hw_request(hid, tmff->report, HID_REQ_SET_REPORT);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FF_RUMBLE:
|
case FF_RUMBLE:
|
||||||
@ -117,7 +115,7 @@ static int tmff_play(struct input_dev *dev, void *data,
|
|||||||
dbg_hid("(left,right)=(%08x, %08x)\n", left, right);
|
dbg_hid("(left,right)=(%08x, %08x)\n", left, right);
|
||||||
ff_field->value[0] = left;
|
ff_field->value[0] = left;
|
||||||
ff_field->value[1] = right;
|
ff_field->value[1] = right;
|
||||||
usbhid_submit_report(hid, tmff->report, USB_DIR_OUT);
|
hid_hw_request(hid, tmff->report, HID_REQ_SET_REPORT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -24,13 +24,11 @@
|
|||||||
#include <linux/hid.h>
|
#include <linux/hid.h>
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/usb.h>
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
|
||||||
#include "hid-ids.h"
|
#include "hid-ids.h"
|
||||||
|
|
||||||
#ifdef CONFIG_ZEROPLUS_FF
|
#ifdef CONFIG_ZEROPLUS_FF
|
||||||
#include "usbhid/usbhid.h"
|
|
||||||
|
|
||||||
struct zpff_device {
|
struct zpff_device {
|
||||||
struct hid_report *report;
|
struct hid_report *report;
|
||||||
@ -59,7 +57,7 @@ static int zpff_play(struct input_dev *dev, void *data,
|
|||||||
zpff->report->field[2]->value[0] = left;
|
zpff->report->field[2]->value[0] = left;
|
||||||
zpff->report->field[3]->value[0] = right;
|
zpff->report->field[3]->value[0] = right;
|
||||||
dbg_hid("running with 0x%02x 0x%02x\n", left, right);
|
dbg_hid("running with 0x%02x 0x%02x\n", left, right);
|
||||||
usbhid_submit_report(hid, zpff->report, USB_DIR_OUT);
|
hid_hw_request(hid, zpff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -104,7 +102,7 @@ static int zpff_init(struct hid_device *hid)
|
|||||||
zpff->report->field[1]->value[0] = 0x02;
|
zpff->report->field[1]->value[0] = 0x02;
|
||||||
zpff->report->field[2]->value[0] = 0x00;
|
zpff->report->field[2]->value[0] = 0x00;
|
||||||
zpff->report->field[3]->value[0] = 0x00;
|
zpff->report->field[3]->value[0] = 0x00;
|
||||||
usbhid_submit_report(hid, zpff->report, USB_DIR_OUT);
|
hid_hw_request(hid, zpff->report, HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
hid_info(hid, "force feedback for Zeroplus based devices by Anssi Hannula <anssi.hannula@gmail.com>\n");
|
hid_info(hid, "force feedback for Zeroplus based devices by Anssi Hannula <anssi.hannula@gmail.com>\n");
|
||||||
|
|
||||||
|
@ -639,7 +639,7 @@ static void __usbhid_submit_report(struct hid_device *hid, struct hid_report *re
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void usbhid_submit_report(struct hid_device *hid, struct hid_report *report, unsigned char dir)
|
static void usbhid_submit_report(struct hid_device *hid, struct hid_report *report, unsigned char dir)
|
||||||
{
|
{
|
||||||
struct usbhid_device *usbhid = hid->driver_data;
|
struct usbhid_device *usbhid = hid->driver_data;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
@ -648,7 +648,6 @@ void usbhid_submit_report(struct hid_device *hid, struct hid_report *report, uns
|
|||||||
__usbhid_submit_report(hid, report, dir);
|
__usbhid_submit_report(hid, report, dir);
|
||||||
spin_unlock_irqrestore(&usbhid->lock, flags);
|
spin_unlock_irqrestore(&usbhid->lock, flags);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(usbhid_submit_report);
|
|
||||||
|
|
||||||
/* Workqueue routine to send requests to change LEDs */
|
/* Workqueue routine to send requests to change LEDs */
|
||||||
static void hid_led(struct work_struct *work)
|
static void hid_led(struct work_struct *work)
|
||||||
|
@ -263,8 +263,8 @@ static void pidff_set_envelope_report(struct pidff_device *pidff,
|
|||||||
envelope->attack_level,
|
envelope->attack_level,
|
||||||
pidff->set_envelope[PID_ATTACK_LEVEL].value[0]);
|
pidff->set_envelope[PID_ATTACK_LEVEL].value[0]);
|
||||||
|
|
||||||
usbhid_submit_report(pidff->hid, pidff->reports[PID_SET_ENVELOPE],
|
hid_hw_request(pidff->hid, pidff->reports[PID_SET_ENVELOPE],
|
||||||
USB_DIR_OUT);
|
HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -290,8 +290,8 @@ static void pidff_set_constant_force_report(struct pidff_device *pidff,
|
|||||||
pidff_set_signed(&pidff->set_constant[PID_MAGNITUDE],
|
pidff_set_signed(&pidff->set_constant[PID_MAGNITUDE],
|
||||||
effect->u.constant.level);
|
effect->u.constant.level);
|
||||||
|
|
||||||
usbhid_submit_report(pidff->hid, pidff->reports[PID_SET_CONSTANT],
|
hid_hw_request(pidff->hid, pidff->reports[PID_SET_CONSTANT],
|
||||||
USB_DIR_OUT);
|
HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -325,8 +325,8 @@ static void pidff_set_effect_report(struct pidff_device *pidff,
|
|||||||
pidff->effect_direction);
|
pidff->effect_direction);
|
||||||
pidff->set_effect[PID_START_DELAY].value[0] = effect->replay.delay;
|
pidff->set_effect[PID_START_DELAY].value[0] = effect->replay.delay;
|
||||||
|
|
||||||
usbhid_submit_report(pidff->hid, pidff->reports[PID_SET_EFFECT],
|
hid_hw_request(pidff->hid, pidff->reports[PID_SET_EFFECT],
|
||||||
USB_DIR_OUT);
|
HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -357,8 +357,8 @@ static void pidff_set_periodic_report(struct pidff_device *pidff,
|
|||||||
pidff_set(&pidff->set_periodic[PID_PHASE], effect->u.periodic.phase);
|
pidff_set(&pidff->set_periodic[PID_PHASE], effect->u.periodic.phase);
|
||||||
pidff->set_periodic[PID_PERIOD].value[0] = effect->u.periodic.period;
|
pidff->set_periodic[PID_PERIOD].value[0] = effect->u.periodic.period;
|
||||||
|
|
||||||
usbhid_submit_report(pidff->hid, pidff->reports[PID_SET_PERIODIC],
|
hid_hw_request(pidff->hid, pidff->reports[PID_SET_PERIODIC],
|
||||||
USB_DIR_OUT);
|
HID_REQ_SET_REPORT);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -399,8 +399,8 @@ static void pidff_set_condition_report(struct pidff_device *pidff,
|
|||||||
effect->u.condition[i].left_saturation);
|
effect->u.condition[i].left_saturation);
|
||||||
pidff_set(&pidff->set_condition[PID_DEAD_BAND],
|
pidff_set(&pidff->set_condition[PID_DEAD_BAND],
|
||||||
effect->u.condition[i].deadband);
|
effect->u.condition[i].deadband);
|
||||||
usbhid_submit_report(pidff->hid, pidff->reports[PID_SET_CONDITION],
|
hid_hw_request(pidff->hid, pidff->reports[PID_SET_CONDITION],
|
||||||
USB_DIR_OUT);
|
HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -440,8 +440,8 @@ static void pidff_set_ramp_force_report(struct pidff_device *pidff,
|
|||||||
effect->u.ramp.start_level);
|
effect->u.ramp.start_level);
|
||||||
pidff_set_signed(&pidff->set_ramp[PID_RAMP_END],
|
pidff_set_signed(&pidff->set_ramp[PID_RAMP_END],
|
||||||
effect->u.ramp.end_level);
|
effect->u.ramp.end_level);
|
||||||
usbhid_submit_report(pidff->hid, pidff->reports[PID_SET_RAMP],
|
hid_hw_request(pidff->hid, pidff->reports[PID_SET_RAMP],
|
||||||
USB_DIR_OUT);
|
HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -465,8 +465,8 @@ static int pidff_request_effect_upload(struct pidff_device *pidff, int efnum)
|
|||||||
int j;
|
int j;
|
||||||
|
|
||||||
pidff->create_new_effect_type->value[0] = efnum;
|
pidff->create_new_effect_type->value[0] = efnum;
|
||||||
usbhid_submit_report(pidff->hid, pidff->reports[PID_CREATE_NEW_EFFECT],
|
hid_hw_request(pidff->hid, pidff->reports[PID_CREATE_NEW_EFFECT],
|
||||||
USB_DIR_OUT);
|
HID_REQ_SET_REPORT);
|
||||||
hid_dbg(pidff->hid, "create_new_effect sent, type: %d\n", efnum);
|
hid_dbg(pidff->hid, "create_new_effect sent, type: %d\n", efnum);
|
||||||
|
|
||||||
pidff->block_load[PID_EFFECT_BLOCK_INDEX].value[0] = 0;
|
pidff->block_load[PID_EFFECT_BLOCK_INDEX].value[0] = 0;
|
||||||
@ -475,8 +475,8 @@ static int pidff_request_effect_upload(struct pidff_device *pidff, int efnum)
|
|||||||
|
|
||||||
for (j = 0; j < 60; j++) {
|
for (j = 0; j < 60; j++) {
|
||||||
hid_dbg(pidff->hid, "pid_block_load requested\n");
|
hid_dbg(pidff->hid, "pid_block_load requested\n");
|
||||||
usbhid_submit_report(pidff->hid, pidff->reports[PID_BLOCK_LOAD],
|
hid_hw_request(pidff->hid, pidff->reports[PID_BLOCK_LOAD],
|
||||||
USB_DIR_IN);
|
HID_REQ_GET_REPORT);
|
||||||
usbhid_wait_io(pidff->hid);
|
usbhid_wait_io(pidff->hid);
|
||||||
if (pidff->block_load_status->value[0] ==
|
if (pidff->block_load_status->value[0] ==
|
||||||
pidff->status_id[PID_BLOCK_LOAD_SUCCESS]) {
|
pidff->status_id[PID_BLOCK_LOAD_SUCCESS]) {
|
||||||
@ -513,8 +513,8 @@ static void pidff_playback_pid(struct pidff_device *pidff, int pid_id, int n)
|
|||||||
pidff->effect_operation[PID_LOOP_COUNT].value[0] = n;
|
pidff->effect_operation[PID_LOOP_COUNT].value[0] = n;
|
||||||
}
|
}
|
||||||
|
|
||||||
usbhid_submit_report(pidff->hid, pidff->reports[PID_EFFECT_OPERATION],
|
hid_hw_request(pidff->hid, pidff->reports[PID_EFFECT_OPERATION],
|
||||||
USB_DIR_OUT);
|
HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -535,8 +535,8 @@ static int pidff_playback(struct input_dev *dev, int effect_id, int value)
|
|||||||
static void pidff_erase_pid(struct pidff_device *pidff, int pid_id)
|
static void pidff_erase_pid(struct pidff_device *pidff, int pid_id)
|
||||||
{
|
{
|
||||||
pidff->block_free[PID_EFFECT_BLOCK_INDEX].value[0] = pid_id;
|
pidff->block_free[PID_EFFECT_BLOCK_INDEX].value[0] = pid_id;
|
||||||
usbhid_submit_report(pidff->hid, pidff->reports[PID_BLOCK_FREE],
|
hid_hw_request(pidff->hid, pidff->reports[PID_BLOCK_FREE],
|
||||||
USB_DIR_OUT);
|
HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -718,8 +718,8 @@ static void pidff_set_gain(struct input_dev *dev, u16 gain)
|
|||||||
struct pidff_device *pidff = dev->ff->private;
|
struct pidff_device *pidff = dev->ff->private;
|
||||||
|
|
||||||
pidff_set(&pidff->device_gain[PID_DEVICE_GAIN_FIELD], gain);
|
pidff_set(&pidff->device_gain[PID_DEVICE_GAIN_FIELD], gain);
|
||||||
usbhid_submit_report(pidff->hid, pidff->reports[PID_DEVICE_GAIN],
|
hid_hw_request(pidff->hid, pidff->reports[PID_DEVICE_GAIN],
|
||||||
USB_DIR_OUT);
|
HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pidff_autocenter(struct pidff_device *pidff, u16 magnitude)
|
static void pidff_autocenter(struct pidff_device *pidff, u16 magnitude)
|
||||||
@ -744,8 +744,8 @@ static void pidff_autocenter(struct pidff_device *pidff, u16 magnitude)
|
|||||||
pidff->set_effect[PID_DIRECTION_ENABLE].value[0] = 1;
|
pidff->set_effect[PID_DIRECTION_ENABLE].value[0] = 1;
|
||||||
pidff->set_effect[PID_START_DELAY].value[0] = 0;
|
pidff->set_effect[PID_START_DELAY].value[0] = 0;
|
||||||
|
|
||||||
usbhid_submit_report(pidff->hid, pidff->reports[PID_SET_EFFECT],
|
hid_hw_request(pidff->hid, pidff->reports[PID_SET_EFFECT],
|
||||||
USB_DIR_OUT);
|
HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1158,18 +1158,18 @@ static void pidff_reset(struct pidff_device *pidff)
|
|||||||
|
|
||||||
pidff->device_control->value[0] = pidff->control_id[PID_RESET];
|
pidff->device_control->value[0] = pidff->control_id[PID_RESET];
|
||||||
/* We reset twice as sometimes hid_wait_io isn't waiting long enough */
|
/* We reset twice as sometimes hid_wait_io isn't waiting long enough */
|
||||||
usbhid_submit_report(hid, pidff->reports[PID_DEVICE_CONTROL], USB_DIR_OUT);
|
hid_hw_request(hid, pidff->reports[PID_DEVICE_CONTROL], HID_REQ_SET_REPORT);
|
||||||
usbhid_wait_io(hid);
|
usbhid_wait_io(hid);
|
||||||
usbhid_submit_report(hid, pidff->reports[PID_DEVICE_CONTROL], USB_DIR_OUT);
|
hid_hw_request(hid, pidff->reports[PID_DEVICE_CONTROL], HID_REQ_SET_REPORT);
|
||||||
usbhid_wait_io(hid);
|
usbhid_wait_io(hid);
|
||||||
|
|
||||||
pidff->device_control->value[0] =
|
pidff->device_control->value[0] =
|
||||||
pidff->control_id[PID_ENABLE_ACTUATORS];
|
pidff->control_id[PID_ENABLE_ACTUATORS];
|
||||||
usbhid_submit_report(hid, pidff->reports[PID_DEVICE_CONTROL], USB_DIR_OUT);
|
hid_hw_request(hid, pidff->reports[PID_DEVICE_CONTROL], HID_REQ_SET_REPORT);
|
||||||
usbhid_wait_io(hid);
|
usbhid_wait_io(hid);
|
||||||
|
|
||||||
/* pool report is sometimes messed up, refetch it */
|
/* pool report is sometimes messed up, refetch it */
|
||||||
usbhid_submit_report(hid, pidff->reports[PID_POOL], USB_DIR_IN);
|
hid_hw_request(hid, pidff->reports[PID_POOL], HID_REQ_GET_REPORT);
|
||||||
usbhid_wait_io(hid);
|
usbhid_wait_io(hid);
|
||||||
|
|
||||||
if (pidff->pool[PID_SIMULTANEOUS_MAX].value) {
|
if (pidff->pool[PID_SIMULTANEOUS_MAX].value) {
|
||||||
@ -1181,8 +1181,8 @@ static void pidff_reset(struct pidff_device *pidff)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
hid_dbg(pidff->hid, "pid_pool requested again\n");
|
hid_dbg(pidff->hid, "pid_pool requested again\n");
|
||||||
usbhid_submit_report(hid, pidff->reports[PID_POOL],
|
hid_hw_request(hid, pidff->reports[PID_POOL],
|
||||||
USB_DIR_IN);
|
HID_REQ_GET_REPORT);
|
||||||
usbhid_wait_io(hid);
|
usbhid_wait_io(hid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1269,8 +1269,8 @@ int hid_pidff_init(struct hid_device *hid)
|
|||||||
|
|
||||||
if (test_bit(FF_GAIN, dev->ffbit)) {
|
if (test_bit(FF_GAIN, dev->ffbit)) {
|
||||||
pidff_set(&pidff->device_gain[PID_DEVICE_GAIN_FIELD], 0xffff);
|
pidff_set(&pidff->device_gain[PID_DEVICE_GAIN_FIELD], 0xffff);
|
||||||
usbhid_submit_report(hid, pidff->reports[PID_DEVICE_GAIN],
|
hid_hw_request(hid, pidff->reports[PID_DEVICE_GAIN],
|
||||||
USB_DIR_OUT);
|
HID_REQ_SET_REPORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
error = pidff_check_autocenter(pidff, dev);
|
error = pidff_check_autocenter(pidff, dev);
|
||||||
|
@ -705,7 +705,7 @@ static long hiddev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
|||||||
if (report == NULL)
|
if (report == NULL)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
usbhid_submit_report(hid, report, USB_DIR_IN);
|
hid_hw_request(hid, report, HID_REQ_GET_REPORT);
|
||||||
usbhid_wait_io(hid);
|
usbhid_wait_io(hid);
|
||||||
|
|
||||||
r = 0;
|
r = 0;
|
||||||
@ -724,7 +724,7 @@ static long hiddev_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
|||||||
if (report == NULL)
|
if (report == NULL)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
usbhid_submit_report(hid, report, USB_DIR_OUT);
|
hid_hw_request(hid, report, HID_REQ_SET_REPORT);
|
||||||
usbhid_wait_io(hid);
|
usbhid_wait_io(hid);
|
||||||
|
|
||||||
r = 0;
|
r = 0;
|
||||||
|
@ -38,8 +38,6 @@ int usbhid_wait_io(struct hid_device* hid);
|
|||||||
void usbhid_close(struct hid_device *hid);
|
void usbhid_close(struct hid_device *hid);
|
||||||
int usbhid_open(struct hid_device *hid);
|
int usbhid_open(struct hid_device *hid);
|
||||||
void usbhid_init_reports(struct hid_device *hid);
|
void usbhid_init_reports(struct hid_device *hid);
|
||||||
void usbhid_submit_report
|
|
||||||
(struct hid_device *hid, struct hid_report *report, unsigned char dir);
|
|
||||||
int usbhid_get_power(struct hid_device *hid);
|
int usbhid_get_power(struct hid_device *hid);
|
||||||
void usbhid_put_power(struct hid_device *hid);
|
void usbhid_put_power(struct hid_device *hid);
|
||||||
struct usb_interface *usbhid_find_interface(int minor);
|
struct usb_interface *usbhid_find_interface(int minor);
|
||||||
|
Loading…
Reference in New Issue
Block a user