aboutsummaryrefslogtreecommitdiff
path: root/hid-tmt300rs.c
diff options
context:
space:
mode:
authorkimi <kimi.h.kuparinen@gmail.com>2020-11-05 14:15:05 -0500
committerkimi <kimi.h.kuparinen@gmail.com>2020-11-05 14:15:05 -0500
commit4d2c50126e6e8d0f1b870c4a239a1703c8d75f61 (patch)
tree1c3bd0de2520227b53f5c1962465e668563aa837 /hid-tmt300rs.c
parented8584c26ebba6d15204ddc8e1805eb4f5b6c1dc (diff)
downloadhid-tmff2-4d2c50126e6e8d0f1b870c4a239a1703c8d75f61.tar.gz
hid-tmff2-4d2c50126e6e8d0f1b870c4a239a1703c8d75f61.zip
Changed report card
Diffstat (limited to 'hid-tmt300rs.c')
-rw-r--r--hid-tmt300rs.c35
1 files changed, 24 insertions, 11 deletions
diff --git a/hid-tmt300rs.c b/hid-tmt300rs.c
index e11cab9..832bcfb 100644
--- a/hid-tmt300rs.c
+++ b/hid-tmt300rs.c
@@ -1,13 +1,13 @@
#include "hid-tmt300rs.h"
-DEFINE_MUTEX(mtx);
+struct hid_report *greport;
+struct list_head *greport_list;
static void t300rs_int_callback(struct urb *urb){
if(urb->status){
hid_warn(urb->dev, "urb status %i received\n", urb->status);
}
- mutex_unlock(&mtx);
usb_free_urb(urb);
}
@@ -38,14 +38,14 @@ static int t300rs_send_int(struct input_dev *dev, u8 *send_buffer, int *trans){
struct usb_interface *usbif;
struct usb_host_endpoint *ep;
struct urb *urb = usb_alloc_urb(0, GFP_ATOMIC);
- int ret;
+ int ret, i;
t300rs = t300rs_get_device(hdev);
if(!t300rs){
hid_err(hdev, "could not get device\n");
}
- usbdev = t300rs->usbdev;
+ /* usbdev = t300rs->usbdev;
usbif = t300rs->usbif;
ep = &usbif->cur_altsetting->endpoint[1];
@@ -59,10 +59,22 @@ static int t300rs_send_int(struct input_dev *dev, u8 *send_buffer, int *trans){
hdev,
ep->desc.bInterval
);
+ */
- mutex_lock(&mtx);
+ //ret = hid_hw_raw_request(t300rs->hdev, 0, send_buffer, T300RS_BUFFER_LENGTH, 73, HID_REQ_SET_REPORT);
+ s32 *value = greport->field[0]->value;
+ if(!value)
+ hid_err(t300rs->hdev, "fuck\n");
- return usb_submit_urb(urb, GFP_ATOMIC);
+ for(i = 0; i < 63; ++i){
+ value[i] = send_buffer[i + 1];
+ }
+ hid_hw_request(t300rs->hdev, greport, HID_REQ_SET_REPORT);
+
+ return 0;
+
+
+ // return usb_submit_urb(urb, GFP_ATOMIC);
}
static int t300rs_play_effect(struct t300rs_device_entry *t300rs, struct t300rs_effect_state *state){
@@ -1166,7 +1178,7 @@ static void t300rs_set_gain(struct input_dev *dev, u16 gain){
ret = t300rs_send_int(dev, send_buffer, &trans);
if(ret){
- hid_err(hdev, "failed setting gain\n");
+ hid_err(hdev, "failed setting gain: %i\n", ret);
}
kfree(send_buffer);
@@ -1613,8 +1625,6 @@ int t300rs_init(struct hid_device *hdev, const signed short *ff_bits){
char range[10] = "900"; /* max */
int i, ret;
- mutex_init(&mtx);
-
drv_data = hid_get_drvdata(hdev);
if(!drv_data){
hid_err(hdev, "private driver data not allocated\n");
@@ -1659,7 +1669,7 @@ int t300rs_init(struct hid_device *hdev, const signed short *ff_bits){
}
switch(field->usage[0].hid){
- case 0xff00000a:
+ case -16777120:
if(field->report_count < 2){
hid_warn(hdev, "ignoring FF field with report_count < 2\n");
continue;
@@ -1690,7 +1700,7 @@ int t300rs_init(struct hid_device *hdev, const signed short *ff_bits){
break;
default:
- hid_warn(hdev, "ignoring unknown output usage\n");
+ hid_warn(hdev, "ignoring unknown output usage: %i\n", field->usage[0].hid);
continue;
}
}
@@ -1727,6 +1737,9 @@ int t300rs_init(struct hid_device *hdev, const signed short *ff_bits){
goto out;
}
+ greport_list = &t300rs->hdev->report_enum[HID_OUTPUT_REPORT].report_list;
+ greport = list_entry(report_list->next, struct hid_report, list);;
+
tmt300rs_controls(t300rs->hdev);
t300rs_init_interrupts(t300rs);