aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2020-11-02 20:21:31 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2020-11-02 20:21:31 +0200
commita1f8db1a34227007ed2b1918081aea4d20fa9d96 (patch)
tree16e5a8dcf7875ac934e95a1e004dbb8d8b7edba9
parente925429b21fe64429c3b002a681b462d709f7033 (diff)
downloadhid-tmff2-a1f8db1a34227007ed2b1918081aea4d20fa9d96.tar.gz
hid-tmff2-a1f8db1a34227007ed2b1918081aea4d20fa9d96.zip
Possibly chasing a red herring, but oh well.
-rw-r--r--hid-tmt300rs.c112
1 files changed, 56 insertions, 56 deletions
diff --git a/hid-tmt300rs.c b/hid-tmt300rs.c
index 7a271ab..2bf19ba 100644
--- a/hid-tmt300rs.c
+++ b/hid-tmt300rs.c
@@ -1171,6 +1171,49 @@ static void t300rs_destroy(struct ff_device *ff){
return;
}
+void t300rs_open_interrupts(struct t300rs_device_entry *t300rs){
+ int ret;
+ int trans;
+ u8 *send_buffer = kzalloc(T300RS_BUFFER_LENGTH, GFP_ATOMIC);
+
+ send_buffer[0] = 0x0a;
+ send_buffer[1] = 0x04;
+ send_buffer[2] = 0x12;
+ send_buffer[3] = 0x10;
+
+ ret = t300rs_send_int(t300rs->input_dev, send_buffer, &trans);
+ if(ret){
+ hid_err(t300rs->hdev, "failed sending interrupts\n");
+ goto err;
+ }
+ memset(send_buffer, 0, T300RS_BUFFER_LENGTH);
+
+ send_buffer[0] = 0x0a;
+ send_buffer[1] = 0x04;
+ send_buffer[2] = 0x00;
+ send_buffer[3] = 0x0c;
+
+ ret = t300rs_send_int(t300rs->input_dev, send_buffer, &trans);
+ if(ret){
+ hid_err(t300rs->hdev, "failed sending interrupts\n");
+ goto err;
+ }
+ memset(send_buffer, 0, T300RS_BUFFER_LENGTH);
+
+ send_buffer[0] = 0x0a;
+ send_buffer[1] = 0x04;
+ send_buffer[2] = 0x03;
+
+ ret = t300rs_send_int(t300rs->input_dev, send_buffer, &trans);
+ if(ret){
+ hid_err(t300rs->hdev, "failed sending interrupts\n");
+ goto err;
+ }
+
+err:
+ kzfree(send_buffer);
+ return;
+}
static int t300rs_open(struct input_dev *dev){
struct t300rs_device_entry *t300rs;
@@ -1180,6 +1223,7 @@ static int t300rs_open(struct input_dev *dev){
t300rs = t300rs_get_device(hdev);
+
send_buffer[0] = 0x60;
send_buffer[1] = 0x01;
send_buffer[2] = 0x04;
@@ -1189,7 +1233,7 @@ static int t300rs_open(struct input_dev *dev){
hid_err(hdev, "failed sending interrupts\n");
goto err;
}
- /*
+
memset(send_buffer, 0, T300RS_BUFFER_LENGTH);
send_buffer[0] = 0x60;
@@ -1207,6 +1251,8 @@ static int t300rs_open(struct input_dev *dev){
}
memset(send_buffer, 0, T300RS_BUFFER_LENGTH);
+ t300rs_open_interrupts(t300rs);
+
send_buffer[0] = 0x60;
send_buffer[1] = 0x01;
send_buffer[2] = 0x05;
@@ -1216,7 +1262,7 @@ static int t300rs_open(struct input_dev *dev){
hid_err(hdev, "failed sending interrupts\n");
goto err;
}
-*/
+
err:
kfree(send_buffer);
@@ -1245,55 +1291,13 @@ err:
return;
}
-char* response;
-
-void t300rs_ctrl_handler(struct urb *urb){
- struct hid_device *hdev = urb->context;
- if(urb->status){
- hid_err(hdev, "ctrl failed");
- return;
- }
-
- hid_info(hdev, "Response: %hhx %hhx %hhx %hhx",
- response[0],
- response[1],
- response[2],
- response[3]);
-
- usb_free_urb(urb);
- kzfree(response);
-}
void t300rs_init_interrupts(struct t300rs_device_entry *t300rs){
int ret;
- //int trans;
- //u8 *send_buffer = kzalloc(T300RS_BUFFER_LENGTH, GFP_ATOMIC);
- struct urb *urb = usb_alloc_urb(0, GFP_ATOMIC);
- struct usb_ctrlrequest* rq = kzalloc(sizeof(struct usb_ctrlrequest), GFP_ATOMIC);
- response = kzalloc(4, GFP_ATOMIC);
-
- if(!rq){
- ret = -1;
- hid_err(t300rs->hdev, "failed allocating usb_ctrlrequest\n");
- goto err;
- }
-
- rq->bRequestType = 0xc1;
- rq->bRequest = 86;
- rq->wLength = 8;
-
- usb_fill_control_urb(urb,
- t300rs->usbdev,
- usb_rcvctrlpipe(t300rs->usbdev, 0),
- (char*)rq,
- response,
- 4,
- t300rs_ctrl_handler,
- t300rs->hdev);
-
- usb_submit_urb(urb, GFP_ATOMIC);
+ int trans;
+ u8 *send_buffer = kzalloc(T300RS_BUFFER_LENGTH, GFP_ATOMIC);
- /*
+
send_buffer[0] = 0x42;
send_buffer[1] = 0x01;
@@ -1384,14 +1388,9 @@ void t300rs_init_interrupts(struct t300rs_device_entry *t300rs){
goto err;
}
memset(send_buffer, 0, T300RS_BUFFER_LENGTH);
+
err:
- */
- //kfree(send_buffer);
- return;
-
-err:
- usb_free_urb(urb);
- kzfree(response);
+ kfree(send_buffer);
return;
}
@@ -1515,7 +1514,6 @@ int t300rs_init(struct hid_device *hdev, const signed short *ff_bits){
// input_dev->open = t300rs_open;
// input_dev->close = t300rs_close;
- t300rs_open(input_dev);
ret = device_create_file(&hdev->dev, &dev_attr_range);
if(ret){
@@ -1531,7 +1529,9 @@ int t300rs_init(struct hid_device *hdev, const signed short *ff_bits){
//spin_unlock_irqrestore(&lock, lock_flags);
t300rs_range_store(dev, &dev_attr_range, range, 10);
- t300rs_set_gain(input_dev, 0xffff);
+ t300rs_set_gain(input_dev, 0xeeee);
+
+ t300rs_open(input_dev);
hid_info(hdev, "force feedback for T300RS\n");
return 0;