From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Dmitry Torokhov" Subject: Re: Force Feedback: Thrustmaster FGT Wheel quick-and-dirty in hid-lgff.c or hid-tmff.c Date: Mon, 16 Jul 2007 16:50:14 -0400 Message-ID: References: <469B7721.9070705@free.fr> <469BA787.8080700@free.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_63298_12813390.1184619014107" Return-path: In-Reply-To: <469BA787.8080700@free.fr> Sender: owner-linux-input@atrey.karlin.mff.cuni.cz List-Help: List-Owner: List-Post: List-Unsubscribe: To: Gerald Folcher Cc: linux-input@atrey.karlin.mff.cuni.cz List-Id: linux-input@vger.kernel.org ------=_Part_63298_12813390.1184619014107 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 7/16/07, Gerald Folcher wrote: > Dmitry Torokhov wrote: > > I wonder if the attached is all that is needed for your wheel to work... > > No, but I think I understand where is the confusion: > It won't work because my wheel is the "Force Feedback" model, not the > "Rumble Force" model which is cheaper but looks exactly the same. With > your patch applied as is, my wheel will neither do rumble effects nor > constant force effects, the force feedback test utilities 'ffcfstress' > and 'ffmvforce' will spit an error message on startup and exit. And > 'fftest' will think my wheel can do Rumble but trying such effects will > effectively trigger hazardous constant forces on my wheel. > > But your patch would maybe work for the actual Rumble wheel if you > change the id to 0x651, which is the id of the Rumble version according > to the MS-Windows registry on a machine where I installed the > Thrustmaster drivers (the registry is full of id's of the wheels > supported by the driver). > > While the id of my wheel (Force Feedback) is: 0x654 (and according to > the aforementioned MS-Windows registry there is also an id 0x652 for a > Thrustmaster wheel with the same name). > OK, how about this then? -- Dmitry ------=_Part_63298_12813390.1184619014107 Content-Type: application/octet-stream; name="hid-add-thrustmaster-fgt-wheel.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="hid-add-thrustmaster-fgt-wheel.patch" X-Attachment-Id: f_f47fkhee SW5wdXQ6IEhJRCAtIGFkZCBzdXBwb3J0IGZvciBUaHJ1c3RtYXN0ZXIgRkdUIEZvcmNlIEZlZWRi YWNrIHdoZWVsCgpSZXdvcmsgdGhydXN0bWFzdGVyIGZvcmNlLWZlZWRiYWNrIG1vZHVsZSB0byBz dXBwb3J0IGRldmljZXMgaGF2aW5nCmRpZmZlcmVudCB0eXBlcyBvZiBmb3JjZSBmZWVkYmFjayBl ZmZlY3RzLiBBZGQgc2lnbmF0dXJlcyBvZgpUaHJ1c3RtYXN0ZXIgRkdUIFJ1bWJsZSBGb3JjZSBh bmQgVGhydXN0bWFzdGVyIEZHVCBGb3JjZSBGZWVkYmFjawp3aGVlbHMgdG8gdGhlIGxpc3Qgb2Yg ZGV2aWNlcyBkdXBwb3J0ZWQgYnkgdHRoZSBtb2R1bGUuCgpTaWduZWQtb2ZmLWJ5OiBEbWl0cnkg VG9yb2tob3YgPGR0b3JAbWFpbC5ydT4KLS0tCiBkcml2ZXJzL2hpZC91c2JoaWQvaGlkLWZmLmMg ICB8ICAgIDIgCiBkcml2ZXJzL2hpZC91c2JoaWQvaGlkLXRtZmYuYyB8ICAxMzYgKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDk5IGlu c2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQoKSW5kZXg6IGxpbnV4L2RyaXZlcnMvaGlkL3Vz YmhpZC9oaWQtZmYuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC5vcmlnL2RyaXZlcnMvaGlkL3VzYmhp ZC9oaWQtZmYuYworKysgbGludXgvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC1mZi5jCkBAIC02Nyw2 ICs2Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgaGlkX2ZmX2luaXRpYWxpemVyIGluaXRzW10KICNpZmRl ZiBDT05GSUdfVEhSVVNUTUFTVEVSX0ZGCiAJeyAweDQ0ZiwgMHhiMzAwLCBoaWRfdG1mZl9pbml0 IH0sCiAJeyAweDQ0ZiwgMHhiMzA0LCBoaWRfdG1mZl9pbml0IH0sCisJeyAweDQ0ZiwgMHhiNjUx LCBoaWRfdG1mZl9pbml0IH0sIC8qIEZHVCBSdW1ibGUgRm9yY2UgV2hlZWwgKi8KKwl7IDB4NDRm LCAweGI2NTQsIGhpZF90bWZmX2luaXQgfSwgLyogRkdUIEZvcmNlIEZlZWRiYWNrIFdoZWVsICov CiAjZW5kaWYKICNpZmRlZiBDT05GSUdfWkVST1BMVVNfRkYKIAl7IDB4YzEyLCAweDAwMDUsIGhp ZF96cGZmX2luaXQgfSwKSW5kZXg6IGxpbnV4L2RyaXZlcnMvaGlkL3VzYmhpZC9oaWQtdG1mZi5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGxpbnV4Lm9yaWcvZHJpdmVycy9oaWQvdXNiaGlkL2hpZC10bWZmLmMK KysrIGxpbnV4L2RyaXZlcnMvaGlkL3VzYmhpZC9oaWQtdG1mZi5jCkBAIC0zNiwxNiArMzYsMzkg QEAKICNpbmNsdWRlICJ1c2JoaWQuaCIKIAogLyogVXNhZ2VzIGZvciB0aHJ1c3RtYXN0ZXIgZGV2 aWNlcyBJIGtub3cgYWJvdXQgKi8KLSNkZWZpbmUgVEhSVVNUTUFTVEVSX1VTQUdFX1JVTUJMRV9M UgkoSElEX1VQX0dFTkRFU0sgfCAweGJiKQorI2RlZmluZSBUSFJVU1RNQVNURVJfVVNBR0VfRk9S Q0VGRUVEQkFDSwkoSElEX1VQX0dFTkRFU0sgfCAweGJiKQogCitzdHJ1Y3QgZGV2X3R5cGUgewor CXUxNiBpZFZlbmRvcjsKKwl1MTYgaWRQcm9kdWN0OworCWNvbnN0IHNpZ25lZCBzaG9ydCAqZmY7 Cit9OworCitzdGF0aWMgY29uc3Qgc2lnbmVkIHNob3J0IGZmX3J1bWJsZVtdID0geworCUZGX1JV TUJMRSwKKwktMQorfTsKKworc3RhdGljIGNvbnN0IHNpZ25lZCBzaG9ydCBmZl9qb3lzdGlja1td ID0geworCUZGX0NPTlNUQU5ULAorCS0xCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRldl90 eXBlIGRldmljZXNbXSA9IHsKKwl7IDB4NDRmLCAweGIzMDAsIGZmX3J1bWJsZSB9LAorCXsgMHg0 NGYsIDB4YjMwNCwgZmZfcnVtYmxlIH0sCisJeyAweDQ0ZiwgMHhiNjUxLCBmZl9ydW1ibGUgfSwJ LyogRkdUIFJ1bWJsZSBGb3JjZSBXaGVlbCAqLworCXsgMHg0NGYsIDB4YjY1NCwgZmZfam95c3Rp Y2sgfSwJLyogRkdUIEZvcmNlIEZlZWRiYWNrIFdoZWVsICovCit9OwogCiBzdHJ1Y3QgdG1mZl9k ZXZpY2UgewogCXN0cnVjdCBoaWRfcmVwb3J0ICpyZXBvcnQ7Ci0Jc3RydWN0IGhpZF9maWVsZCAq cnVtYmxlOworCXN0cnVjdCBoaWRfZmllbGQgKmZmX2ZpZWxkOwogfTsKIAogLyogQ2hhbmdlcyB2 YWx1ZXMgZnJvbSAwIHRvIDB4ZmZmZiBpbnRvIHZhbHVlcyBmcm9tIG1pbmltdW0gdG8gbWF4aW11 bSAqLwotc3RhdGljIGlubGluZSBpbnQgaGlkX3RtZmZfc2NhbGUodW5zaWduZWQgaW50IGluLCBp bnQgbWluaW11bSwgaW50IG1heGltdW0pCitzdGF0aWMgaW5saW5lIGludCBoaWRfdG1mZl9zY2Fs ZV91MTYodW5zaWduZWQgaW50IGluLAorCQkJCWludCBtaW5pbXVtLCBpbnQgbWF4aW11bSkKIHsK IAlpbnQgcmV0OwogCkBAIC01NywyMiArODAsNTcgQEAgc3RhdGljIGlubGluZSBpbnQgaGlkX3Rt ZmZfc2NhbGUodW5zaWduZQogCXJldHVybiByZXQ7CiB9CiAKKy8qIENoYW5nZXMgdmFsdWVzIGZy b20gLTB4ODAgdG8gMHg3ZiBpbnRvIHZhbHVlcyBmcm9tIG1pbmltdW0gdG8gbWF4aW11bSAqLwor c3RhdGljIGlubGluZSBpbnQgaGlkX3RtZmZfc2NhbGVfczgoaW50IGluLAorCQkJCSAgICBpbnQg bWluaW11bSwgaW50IG1heGltdW0pCit7CisJaW50IHJldDsKKworCXJldCA9ICgoKGluICsgMHg4 MCkgKiAobWF4aW11bSAtIG1pbmltdW0pKSAvIDB4ZmYpICsgbWluaW11bTsKKwlpZiAocmV0IDwg bWluaW11bSkKKwkJcmV0dXJuIG1pbmltdW07CisJaWYgKHJldCA+IG1heGltdW0pCisJCXJldHVy biBtYXhpbXVtOworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBpbnQgaGlkX3RtZmZfcGxheShz dHJ1Y3QgaW5wdXRfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBmZl9lZmZlY3QgKmVmZmVj dCkKIHsKIAlzdHJ1Y3QgaGlkX2RldmljZSAqaGlkID0gaW5wdXRfZ2V0X2RydmRhdGEoZGV2KTsK IAlzdHJ1Y3QgdG1mZl9kZXZpY2UgKnRtZmYgPSBkYXRhOworCXN0cnVjdCBoaWRfZmllbGQgKmZm X2ZpZWxkID0gdG1mZi0+ZmZfZmllbGQ7CisJaW50IHgsIHk7CiAJaW50IGxlZnQsIHJpZ2h0Owkv KiBSdW1ibGluZyAqLwogCi0JbGVmdCA9IGhpZF90bWZmX3NjYWxlKGVmZmVjdC0+dS5ydW1ibGUu d2Vha19tYWduaXR1ZGUsCi0JCXRtZmYtPnJ1bWJsZS0+bG9naWNhbF9taW5pbXVtLCB0bWZmLT5y dW1ibGUtPmxvZ2ljYWxfbWF4aW11bSk7Ci0JcmlnaHQgPSBoaWRfdG1mZl9zY2FsZShlZmZlY3Qt PnUucnVtYmxlLnN0cm9uZ19tYWduaXR1ZGUsCi0JCXRtZmYtPnJ1bWJsZS0+bG9naWNhbF9taW5p bXVtLCB0bWZmLT5ydW1ibGUtPmxvZ2ljYWxfbWF4aW11bSk7Ci0KLQl0bWZmLT5ydW1ibGUtPnZh bHVlWzBdID0gbGVmdDsKLQl0bWZmLT5ydW1ibGUtPnZhbHVlWzFdID0gcmlnaHQ7Ci0JZGJnX2hp ZCgiKGxlZnQscmlnaHQpPSglMDh4LCAlMDh4KVxuIiwgbGVmdCwgcmlnaHQpOwotCXVzYmhpZF9z dWJtaXRfcmVwb3J0KGhpZCwgdG1mZi0+cmVwb3J0LCBVU0JfRElSX09VVCk7Ci0KKwlzd2l0Y2gg KGVmZmVjdC0+dHlwZSkgeworCWNhc2UgRkZfQ09OU1RBTlQ6CisJCXggPSBoaWRfdG1mZl9zY2Fs ZV9zOChlZmZlY3QtPnUucmFtcC5zdGFydF9sZXZlbCwKKwkJCQkJZmZfZmllbGQtPmxvZ2ljYWxf bWluaW11bSwKKwkJCQkJZmZfZmllbGQtPmxvZ2ljYWxfbWF4aW11bSk7CisJCXkgPSBoaWRfdG1m Zl9zY2FsZV9zOChlZmZlY3QtPnUucmFtcC5lbmRfbGV2ZWwsCisJCQkJCWZmX2ZpZWxkLT5sb2dp Y2FsX21pbmltdW0sCisJCQkJCWZmX2ZpZWxkLT5sb2dpY2FsX21heGltdW0pOworCisJCWRiZ19o aWQoIih4LCB5KT0oJTA0eCwgJTA0eClcbiIsIHgsIHkpOworCQlmZl9maWVsZC0+dmFsdWVbMF0g PSB4OworCQlmZl9maWVsZC0+dmFsdWVbMV0gPSB5OworCQl1c2JoaWRfc3VibWl0X3JlcG9ydCho aWQsIHRtZmYtPnJlcG9ydCwgVVNCX0RJUl9PVVQpOworCQlicmVhazsKKworCWNhc2UgRkZfUlVN QkxFOgorCQlsZWZ0ID0gaGlkX3RtZmZfc2NhbGVfdTE2KGVmZmVjdC0+dS5ydW1ibGUud2Vha19t YWduaXR1ZGUsCisJCQkJCWZmX2ZpZWxkLT5sb2dpY2FsX21pbmltdW0sCisJCQkJCWZmX2ZpZWxk LT5sb2dpY2FsX21heGltdW0pOworCQlyaWdodCA9IGhpZF90bWZmX3NjYWxlX3UxNihlZmZlY3Qt PnUucnVtYmxlLnN0cm9uZ19tYWduaXR1ZGUsCisJCQkJCWZmX2ZpZWxkLT5sb2dpY2FsX21pbmlt dW0sCisJCQkJCWZmX2ZpZWxkLT5sb2dpY2FsX21heGltdW0pOworCisJCWRiZ19oaWQoIihsZWZ0 LHJpZ2h0KT0oJTA4eCwgJTA4eClcbiIsIGxlZnQsIHJpZ2h0KTsKKwkJZmZfZmllbGQtPnZhbHVl WzBdID0gbGVmdDsKKwkJZmZfZmllbGQtPnZhbHVlWzFdID0gcmlnaHQ7CisJCXVzYmhpZF9zdWJt aXRfcmVwb3J0KGhpZCwgdG1mZi0+cmVwb3J0LCBVU0JfRElSX09VVCk7CisJCWJyZWFrOworCX0K IAlyZXR1cm4gMDsKIH0KIApAQCAtODksNyArMTQ3LDcgQEAgaW50IGhpZF90bWZmX2luaXQoc3Ry dWN0IGhpZF9kZXZpY2UgKmhpZAogCQlyZXR1cm4gLUVOT01FTTsKIAogCS8qIEZpbmQgdGhlIHJl cG9ydCB0byB1c2UgKi8KLQlfX2xpc3RfZm9yX2VhY2gocG9zLCAmaGlkLT5yZXBvcnRfZW51bVtI SURfT1VUUFVUX1JFUE9SVF0ucmVwb3J0X2xpc3QpIHsKKwlsaXN0X2Zvcl9lYWNoKHBvcywgJmhp ZC0+cmVwb3J0X2VudW1bSElEX09VVFBVVF9SRVBPUlRdLnJlcG9ydF9saXN0KSB7CiAJCXN0cnVj dCBoaWRfcmVwb3J0ICpyZXBvcnQgPSAoc3RydWN0IGhpZF9yZXBvcnQgKilwb3M7CiAJCWludCBm aWVsZG51bTsKIApAQCAtMTAwLDM2ICsxNTgsMzYgQEAgaW50IGhpZF90bWZmX2luaXQoc3RydWN0 IGhpZF9kZXZpY2UgKmhpZAogCQkJCWNvbnRpbnVlOwogCiAJCQlzd2l0Y2ggKGZpZWxkLT51c2Fn ZVswXS5oaWQpIHsKLQkJCQljYXNlIFRIUlVTVE1BU1RFUl9VU0FHRV9SVU1CTEVfTFI6Ci0JCQkJ CWlmIChmaWVsZC0+cmVwb3J0X2NvdW50IDwgMikgewotCQkJCQkJd2FybigiaWdub3JpbmcgVEhS VVNUTUFTVEVSX1VTQUdFX1JVTUJMRV9MUiB3aXRoIHJlcG9ydF9jb3VudCA8IDIiKTsKLQkJCQkJ CWNvbnRpbnVlOwotCQkJCQl9Ci0KLQkJCQkJaWYgKGZpZWxkLT5sb2dpY2FsX21heGltdW0gPT0g ZmllbGQtPmxvZ2ljYWxfbWluaW11bSkgewotCQkJCQkJd2FybigiaWdub3JpbmcgVEhSVVNUTUFT VEVSX1VTQUdFX1JVTUJMRV9MUiB3aXRoIGxvZ2ljYWxfbWF4aW11bSA9PSBsb2dpY2FsX21pbmlt dW0iKTsKLQkJCQkJCWNvbnRpbnVlOwotCQkJCQl9Ci0KLQkJCQkJaWYgKHRtZmYtPnJlcG9ydCAm JiB0bWZmLT5yZXBvcnQgIT0gcmVwb3J0KSB7Ci0JCQkJCQl3YXJuKCJpZ25vcmluZyBUSFJVU1RN QVNURVJfVVNBR0VfUlVNQkxFX0xSIGluIG90aGVyIHJlcG9ydCIpOwotCQkJCQkJY29udGludWU7 Ci0JCQkJCX0KLQotCQkJCQlpZiAodG1mZi0+cnVtYmxlICYmIHRtZmYtPnJ1bWJsZSAhPSBmaWVs ZCkgewotCQkJCQkJd2FybigiaWdub3JpbmcgZHVwbGljYXRlIFRIUlVTVE1BU1RFUl9VU0FHRV9S VU1CTEVfTFIiKTsKLQkJCQkJCWNvbnRpbnVlOwotCQkJCQl9CisJCQljYXNlIFRIUlVTVE1BU1RF Ul9VU0FHRV9GT1JDRUZFRURCQUNLOgorCQkJCWlmIChmaWVsZC0+cmVwb3J0X2NvdW50IDwgMikg eworCQkJCQl3YXJuKCJpZ25vcmluZyBGRiBmaWVsZCB3aXRoIHJlcG9ydF9jb3VudCA8IDIiKTsK KwkJCQkJY29udGludWU7CisJCQkJfQorCisJCQkJaWYgKGZpZWxkLT5sb2dpY2FsX21heGltdW0g PT0gZmllbGQtPmxvZ2ljYWxfbWluaW11bSkgeworCQkJCQl3YXJuKCJpZ25vcmluZyBGRiBmaWVs ZCB3aXRoIGxvZ2ljYWxfbWF4aW11bSA9PSBsb2dpY2FsX21pbmltdW0iKTsKKwkJCQkJY29udGlu dWU7CisJCQkJfQorCisJCQkJaWYgKHRtZmYtPnJlcG9ydCAmJiB0bWZmLT5yZXBvcnQgIT0gcmVw b3J0KSB7CisJCQkJCXdhcm4oImlnbm9yaW5nIEZGIGZpZWxkIGluIG90aGVyIHJlcG9ydCIpOwor CQkJCQljb250aW51ZTsKKwkJCQl9CiAKLQkJCQkJdG1mZi0+cmVwb3J0ID0gcmVwb3J0OwotCQkJ CQl0bWZmLT5ydW1ibGUgPSBmaWVsZDsKKwkJCQlpZiAodG1mZi0+ZmZfZmllbGQgJiYgdG1mZi0+ ZmZfZmllbGQgIT0gZmllbGQpIHsKKwkJCQkJd2FybigiaWdub3JpbmcgZHVwbGljYXRlIEZGIGZp ZWxkIik7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKworCQkJCXRtZmYtPnJlcG9ydCA9IHJlcG9y dDsKKwkJCQl0bWZmLT5mZl9maWVsZCA9IGZpZWxkOwogCiAJCQkJCXNldF9iaXQoRkZfUlVNQkxF LCBpbnB1dF9kZXYtPmZmYml0KTsKIAkJCQkJYnJlYWs7CiAKLQkJCQlkZWZhdWx0OgotCQkJCQl3 YXJuKCJpZ25vcmluZyB1bmtub3duIG91dHB1dCB1c2FnZSAlMDh4IiwgZmllbGQtPnVzYWdlWzBd LmhpZCk7Ci0JCQkJCWNvbnRpbnVlOworCQkJZGVmYXVsdDoKKwkJCQl3YXJuKCJpZ25vcmluZyB1 bmtub3duIG91dHB1dCB1c2FnZSAlMDh4IiwgZmllbGQtPnVzYWdlWzBdLmhpZCk7CisJCQkJY29u dGludWU7CiAJCQl9CiAJCX0KIAl9Cg== ------=_Part_63298_12813390.1184619014107--