Re: New Force Feedback device support - GreenAsia 0x12

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2008/11/29 Jiri Kosina <jkosina@xxxxxxx>:
> On Fri, 28 Nov 2008, Łukasz Lubojański wrote:
>
>> > It seems the protocol resembles more the hid-lg2ff one. The differences
>> > are the additional 0xfa 0xfe 0x0 report sent to the device, and the
>> > missing 0xf3 stop command.
>> Yep - different reports are send in case of Pantherlord and GreenAsia
>> 0x12 - It could be implemented in it but it will require checking what
>> hardware is used and send different reports.
>
> OK, so as the reports are not really identical, and in the future we might
> discover that there are many more other Greenasia devices which require a
> slightly different handling as well, I would rather prefer to have it as a
> separate driver, to avoid additions of here-and-there device-specific
> quirks to random places in the code. That's exactly what we are trying to
> avoid with the HID bus approach in the first place.
>
> So I think separate driver is fine.
>
> Thanks to both of you.
>
> --
> Jiri Kosina
> SUSE Labs

Hi,

Here is new version of the GreenAsia patch - I hope this time
everything will be OK. It is based on the Pantherlord.

Sorry to take so long but I have problems with the 2.6.28 (2.6.28-rc6
was not loading my driver and 2.6.28-rc7 is crashing when IO APIC is
enabled). Anyway I done it and I'm waiting for your feedback :D

regards
Lukasz Lubojanski
Signed-off-by: Lukasz Lubojanski <lukasz@xxxxxxxxxxxxxxx>
diff --git a/drivers/hid/hid-ga.c b/drivers/hid/hid-ga.c
index 33c9a19..e821898 100644
--- a/drivers/hid/hid-ga.c
+++ b/drivers/hid/hid-ga.c
@@ -65,7 +65,7 @@ static int hid_gaff_play(struct input_dev *dev, void *data,
 	debug("called with 0x%04x 0x%04x", left, right);
 
 	left = left * 0xfe / 0xffff;
-    	right = right * 0xfe / 0xffff;
+	right = right * 0xfe / 0xffff;
 
 	gaff->report->field[0]->value[0] = 0x51;
 	gaff->report->field[0]->value[1] = 0x0;
@@ -79,8 +79,8 @@ static int hid_gaff_play(struct input_dev *dev, void *data,
 	gaff->report->field[0]->value[0] = 0xfa;
 	gaff->report->field[0]->value[1] = 0xfe;
 	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);
 
 	return 0;
@@ -136,14 +136,14 @@ static int gaff_init(struct hid_device *hid)
 			kfree(gaff);
 			return error;
 		}
-		
+
 		gaff->report = report;
 		gaff->report->field[0]->value[0] = 0x51;
 		gaff->report->field[0]->value[1] = 0x00;
 		gaff->report->field[0]->value[2] = 0x00;
 		gaff->report->field[0]->value[3] = 0x00;
 		usbhid_submit_report(hid, gaff->report, USB_DIR_OUT);
-		
+
 		gaff->report->field[0]->value[0] = 0xfa;
 		gaff->report->field[0]->value[1] = 0xfe;
 
@@ -169,7 +169,7 @@ static inline int gaff_init(struct hid_device *hid)
 static int ga_probe(struct hid_device *hdev, const struct hid_device_id *id)
 {
 	int ret;
-	
+
 	debug("Greenasia HID hardware probe...");
 
 	if (id->driver_data)

[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux