Date: Sun, 10 Dec 2000 15:19:06 -0800 (PST) From: Nick Sayer <nsayer@freebsd.org> To: freebsd-current@freebsd.org Subject: Sony jog dial driver Message-ID: <Pine.BSF.4.21.0012101506350.47060-300000@medusa.kfu.com>
next in thread | raw e-mail | index | archive | help
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --0-2008051343-976490346=:47060 Content-Type: TEXT/PLAIN; charset=US-ASCII Attached is a preliminary driver for the Sony jog dial. It's enough that you can create a /dev/jogdial and watch letters come out. It needs a lot of improvement: 1. Use interrupts instead of polling. 2. Present mouse-oriented events instead of letters. 3. Fix the probe routine so that it tries to detect the presence of the device rather than the magic 0x10a0 port location. 4. Eventual ACPIification of the driver. 5. Create a 2nd device to deal with other devices like the lid switch, capture button, etc. But I wanted to get this much out there for people to play with. --0-2008051343-976490346=:47060 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="spic.c" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.BSF.4.21.0012101519060.47060@medusa.kfu.com> Content-Description: Content-Disposition: attachment; filename="spic.c" LyoNCiAqIEluc2VydCBzdGFuZGFyZCBGcmVlQlNEIENvcHlyaWdodCBub3Rp Y2UgaGVyZQ0KICoNCiAqIHNwaWMgLS0gdGhlIFNvbnkgUHJvZ3JhbW1hYmxl IEkvTyBDb250cm9sbGVyDQogKg0KICogVGhpcyBkZXZpY2UgZXhpc3RzIG9u IG1vc3QgcmVjZW50IFNvbnkgbGFwdG9wcy4gSXQgaXMgdGhlIG1lYW5zIGJ5 IHdoaWNoDQogKiB5b3UgY2FuIHdhdGNoIHRoZSBKb2cgRGlhbCBhbmQgc29t ZSBvdGhlciBmdW5jdGlvbnMuDQogKg0KICogQXQgdGhlIG1vbWVudCwgdGhp cyBkcml2ZXIgbWVyZWx5IHRyaWVzIHRvIHR1cm4gdGhlIGpvZyBkaWFsIGlu dG8gYQ0KICogZGV2aWNlIHRoYXQgbW91c2VkIGNhbiBwYXJrIG9uLCB3aXRo IHRoZSBpbnRlbnQgb2Ygc3VwcGx5aW5nIGEgWiBheGlzDQogKiBhbmQgbW91 c2UgYnV0dG9uIG91dCBvZiB0aGUgam9nIGRpYWwuIEkgc3VzcGVjdCB0aGF0 IHRoaXMgZGV2aWNlIHdpbGwNCiAqIGVuZCB1cCBoYXZpbmcgdG8gc3VwcG9y dCBhdCBsZWFzdCAyIGRpZmZlcmVudCBtaW5vciBkZXZpY2VzOiBPbmUgdG8g YmUNCiAqIHRoZSBqb2cgd2hlZWwgZGV2aWNlIGZvciBtb3VzZWQgdG8gY2Ft cCBvdXQgb24gYW5kIHRoZSBvdGhlciB0byBwZXJmb3JtDQogKiBhbGwgb2Yg dGhlIG90aGVyIG1pc2NlbGFuZW91cyBmdW5jdGlvbnMgb2YgdGhpcyBkZXZp Y2UuIEJ1dCBmb3Igbm93LA0KICogdGhlIGpvZyB3aGVlbCBpcyBhbGwgeW91 IGdldC4NCiAqDQogKiBXaGF0IGRvY3VtZW50YXRpb24gZXhpc3RzIGlzIHRo YW5rcyB0byBBbmRyZXcgVHJpZGdlLCBhbmQgaGlzIHBhZ2UgYXQNCiAqIGh0 dHA6Ly9zYW1iYS5vcmcvcGljdHVyZWJvb2svDQogKg0KICogJEZyZWVCU0Qk DQogKi8NCg0KI2luY2x1ZGUgPHN5cy9wYXJhbS5oPg0KI2luY2x1ZGUgPHN5 cy9zeXN0bS5oPg0KI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4NCiNpbmNsdWRl IDxzeXMvYnVzLmg+DQojaW5jbHVkZSA8bWFjaGluZS9idXMuaD4NCiNpbmNs dWRlIDxzeXMvcm1hbi5oPg0KI2luY2x1ZGUgPG1hY2hpbmUvcmVzb3VyY2Uu aD4NCiNpbmNsdWRlIDxpc2EvaXNhdmFyLmg+DQojaW5jbHVkZSA8c3lzL3Bv bGwuaD4NCiNpbmNsdWRlIDxtYWNoaW5lL3BjaV9jZmdyZWcuaD4NCiNpbmNs dWRlIDxtYWNoaW5lL2Nsb2NrLmg+DQojaW5jbHVkZSA8c3lzL3R0eS5oPg0K I2luY2x1ZGUgPHN5cy9jb25mLmg+DQojaW5jbHVkZSA8c3lzL2ZjbnRsLmg+ DQojaW5jbHVkZSA8c3lzL2Rrc3RhdC5oPg0KI2luY2x1ZGUgPHN5cy9tYWxs b2MuaD4NCiNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+DQojaW5jbHVkZSA8c3lz L3Vpby5oPg0KDQojaW5jbHVkZSA8ZGV2L3NwaWMvc3BpY3JlZy5oPg0KDQpz dGF0aWMgaW50IHNwaWNfcG9sbHJhdGU7DQoNClNZU0NUTF9JTlQoX21hY2hk ZXAsIE9JRF9BVVRPLCBzcGljX3BvbGxyYXRlLCBDVExGTEFHX1JXLCAmc3Bp Y19wb2xscmF0ZSwgMCwgIiIpDQo7DQoNCmRldmNsYXNzX3Qgc3BpY19kZXZj bGFzczsNCg0Kc3RhdGljIGRfb3Blbl90CQlzcGljb3BlbjsNCnN0YXRpYyBk X2Nsb3NlX3QJc3BpY2Nsb3NlOw0Kc3RhdGljIGRfcmVhZF90CQlzcGljcmVh ZDsNCnN0YXRpYyBkX2lvY3RsX3QJc3BpY2lvY3RsOw0Kc3RhdGljIGRfcG9s bF90CQlzcGljcG9sbDsNCg0Kc3RhdGljIHN0cnVjdCBjZGV2c3cgc3BpY19j ZGV2c3cgPSB7DQogICAgICAgIC8qIG9wZW4gKi8gICAgICBzcGljb3BlbiwN CiAgICAgICAgLyogY2xvc2UgKi8gICAgIHNwaWNjbG9zZSwNCiAgICAgICAg LyogcmVhZCAqLyAgICAgIHNwaWNyZWFkLA0KICAgICAgICAvKiB3cml0ZSAq LyAgICAgbm93cml0ZSwNCiAgICAgICAgLyogaW9jdGwgKi8gICAgIHNwaWNp b2N0bCwNCiAgICAgICAgLyogcG9sbCAqLyAgICAgIHNwaWNwb2xsLA0KICAg ICAgICAvKiBtbWFwICovICAgICAgbm9tbWFwLA0KICAgICAgICAvKiBzdHJh dGVneSAqLyAgbm9zdHJhdGVneSwNCiAgICAgICAgLyogbmFtZSAqLyAgICAg ICJzcGljIiwNCiAgICAgICAgLyogbWFqICovICAgICAgIENERVZfTUFKT1Is DQogICAgICAgIC8qIGR1bXAgKi8gICAgICBub2R1bXAsDQogICAgICAgIC8q IHBzaXplICovICAgICBub3BzaXplLA0KICAgICAgICAvKiBmbGFncyAqLyAg ICAgMCwNCiAgICAgICAgLyogYm1haiAqLyAgICAgIC0xDQp9Ow0KDQojZGVm aW5lIFNDQlVGTEVOIDEyOA0KDQpzdHJ1Y3Qgc3BpY19zb2Z0YyB7DQoJdV9z aG9ydCBzY19wb3J0X2FkZHI7DQoJdV9jaGFyIHNjX2ludHI7DQoJc3RydWN0 IHJlc291cmNlICpzY19wb3J0X3Jlcywqc2NfaW50cl9yZXM7DQoJaW50CXNj X3BvcnRfcmlkLHNjX2ludHJfcmlkOw0KCWludCBzY19vcGVuZWQ7DQoJaW50 IHNjX3NsZWVwaW5nOw0KCWludCBzY19idXR0b25sYXN0Ow0KCXN0cnVjdCBj YWxsb3V0X2hhbmRsZSBzY190aW1lb3V0X2NoOw0KCWRldmljZV90IHNjX2Rl djsNCglzdHJ1Y3Qgc2VsaW5mbyBzY19yc2VsOw0KCXVfY2hhciBzY19idWZb U0NCVUZMRU5dOw0KCWludCBzY19jb3VudDsNCn07DQoNCnN0YXRpYyB2b2lk DQp3cml0ZV9wb3J0MShzdHJ1Y3Qgc3BpY19zb2Z0YyAqc2MsIHVfY2hhciB2 YWwpDQp7DQoJREVMQVkoMTApOw0KCW91dGIoc2MtPnNjX3BvcnRfYWRkciwg dmFsKTsNCn0NCg0Kc3RhdGljIHZvaWQNCndyaXRlX3BvcnQyKHN0cnVjdCBz cGljX3NvZnRjICpzYywgdV9jaGFyIHZhbCkNCnsNCglERUxBWSgxMCk7DQoJ b3V0YihzYy0+c2NfcG9ydF9hZGRyICsgNCwgdmFsKTsNCn0NCg0Kc3RhdGlj IHVfY2hhcg0KcmVhZF9wb3J0MShzdHJ1Y3Qgc3BpY19zb2Z0YyAqc2MpDQp7 DQoJREVMQVkoMTApOw0KCXJldHVybiBpbmIoc2MtPnNjX3BvcnRfYWRkcik7 DQp9DQoNCnN0YXRpYyB1X2NoYXINCnJlYWRfcG9ydDIoc3RydWN0IHNwaWNf c29mdGMgKnNjKQ0Kew0KCURFTEFZKDEwKTsNCglyZXR1cm4gaW5iKHNjLT5z Y19wb3J0X2FkZHIgKyA0KTsNCn0NCg0Kc3RhdGljIHZvaWQNCmJ1c3lfd2Fp dChzdHJ1Y3Qgc3BpY19zb2Z0YyAqc2MpDQp7DQoJaW50IGk9MDsNCg0KCXdo aWxlKHJlYWRfcG9ydDIoc2MpICYgMikgew0KCQlERUxBWSgxMCk7DQoJCWlm IChpKys+MTAwMDApIHsNCgkJCXByaW50Zigic3BpYyBidXN5IHdhaXQgYWJv cnRcbiIpOw0KCQkJcmV0dXJuOw0KCQl9DQoJfQ0KfQ0KDQpzdGF0aWMgdV9j aGFyDQpzcGljX2NhbGwxKHN0cnVjdCBzcGljX3NvZnRjICpzYywgdV9jaGFy IGRldikgew0KCWJ1c3lfd2FpdChzYyk7DQoJd3JpdGVfcG9ydDIoc2MsIGRl dik7DQoJcmVhZF9wb3J0MihzYyk7DQoJcmV0dXJuIHJlYWRfcG9ydDEoc2Mp Ow0KfQ0KDQpzdGF0aWMgdV9jaGFyDQpzcGljX2NhbGwyKHN0cnVjdCBzcGlj X3NvZnRjICpzYywgdV9jaGFyIGRldiwgdV9jaGFyIGZuKQ0Kew0KCWJ1c3lf d2FpdChzYyk7DQoJd3JpdGVfcG9ydDIoc2MsIGRldik7DQoJYnVzeV93YWl0 KHNjKTsNCgl3cml0ZV9wb3J0MShzYywgZm4pOw0KCXJldHVybiByZWFkX3Bv cnQxKHNjKTsNCn0NCg0Kc3RhdGljIGludA0Kc3BpY19wcm9iZShkZXZpY2Vf dCBkZXYpDQp7DQogICAgICAgIHN0cnVjdCBzcGljX3NvZnRjICpzYzsNCgl1 X2NoYXIgdCwgc3BpY19pcnE7DQoNCiAgICAgICAgc2MgPSBkZXZpY2VfZ2V0 X3NvZnRjKGRldik7DQoNCgliemVybyhzYywgc2l6ZW9mKHN0cnVjdCBzcGlj X3NvZnRjKSk7DQoNCglpZiAoIShzYy0+c2NfcG9ydF9yZXMgPSBidXNfYWxs b2NfcmVzb3VyY2UoZGV2LCBTWVNfUkVTX0lPUE9SVCwNCgkJJnNjLT5zY19w b3J0X3JpZCwgMCwgfjAsIDUsIFJGX0FDVElWRSkpKSB7DQoJCWRldmljZV9w cmludGYoZGV2LCJDb3VsZG4ndCBtYXAgSS9PXG4iKTsNCgkJcmV0dXJuIEVO WElPOw0KCX0NCglzYy0+c2NfcG9ydF9hZGRyID0gKHVfc2hvcnQpcm1hbl9n ZXRfc3RhcnQoc2MtPnNjX3BvcnRfcmVzKTsNCg0KCWlmICghKHNjLT5zY19p bnRyX3JlcyA9IGJ1c19hbGxvY19yZXNvdXJjZShkZXYsIFNZU19SRVNfSVJR LA0KCQkmc2MtPnNjX2ludHJfcmlkLCAwLCB+MCwgMSwgUkZfQUNUSVZFKSkp IHsNCgkJZGV2aWNlX3ByaW50ZihkZXYsIkNvdWxkbid0IG1hcCBJUlFcbiIp Ow0KCQlidXNfcmVsZWFzZV9yZXNvdXJjZShkZXYsIFNZU19SRVNfSU9QT1JU LA0KCQkJc2MtPnNjX3BvcnRfcmlkLCBzYy0+c2NfcG9ydF9yZXMpOw0KCQly ZXR1cm4gRU5YSU87DQoJfQ0KCXNjLT5zY19pbnRyID0gKHVfc2hvcnQpcm1h bl9nZXRfc3RhcnQoc2MtPnNjX2ludHJfcmVzKTsNCg0KCXN3aXRjaCAoc2Mt PnNjX2ludHIpIHsNCgkJY2FzZSAwOiBzcGljX2lycSA9IDM7IGJyZWFrOw0K CQljYXNlIDU6IHNwaWNfaXJxID0gMDsgYnJlYWs7DQoJCWNhc2UgMHhhOiBz cGljX2lycSA9IDE7IGJyZWFrOw0KCQljYXNlIDB4Yjogc3BpY19pcnEgPSAy OyBicmVhazsNCgkJZGVmYXVsdDogZGV2aWNlX3ByaW50ZihkZXYsIkludmFs aWQgSVJRXG4iKTsNCgkJCWJ1c19yZWxlYXNlX3Jlc291cmNlKGRldiwgU1lT X1JFU19JT1BPUlQsDQoJCQkJc2MtPnNjX3BvcnRfcmlkLCBzYy0+c2NfcG9y dF9yZXMpOw0KCQkJYnVzX3JlbGVhc2VfcmVzb3VyY2UoZGV2LCBTWVNfUkVT X0lSUSwNCgkJCQlzYy0+c2NfaW50cl9yaWQsIHNjLT5zY19pbnRyX3Jlcyk7 DQoJCQlyZXR1cm4gRU5YSU87DQoJfQ0KDQoJaWYgKHNjLT5zY19wb3J0X2Fk ZHIgIT0gMHgxMEEwKSB7DQoJCWJ1c19yZWxlYXNlX3Jlc291cmNlKGRldiwg U1lTX1JFU19JT1BPUlQsDQoJCQlzYy0+c2NfcG9ydF9yaWQsIHNjLT5zY19w b3J0X3Jlcyk7DQoJCWJ1c19yZWxlYXNlX3Jlc291cmNlKGRldiwgU1lTX1JF U19JUlEsDQoJCQlzYy0+c2NfaW50cl9yaWQsIHNjLT5zY19pbnRyX3Jlcyk7 DQoJCXJldHVybiBFTlhJTzsNCgl9DQoJLyoNCgkgKiBUaGlzIGlzIGFuIHVn bHkgaGFjay4gSXQgaXMgbmVjZXNzYXJ5IHVudGlsIEFDUEkgd29ya3MgY29y cmVjdGx5Lg0KCSAqDQoJICogVGhlIFNQSUMgY29uc2lzdHMgb2YgMiByZWdp c3RlcnMuIFRoZXkgYXJlIG1hcHBlZCBvbnRvIEkvTyBieSB0aGUNCgkgKiBQ SUlYNCdzIEdlbmVyYWwgRGV2aWNlIDEwIGZ1bmN0aW9uLiBUaGVyZSBpcyBh bHNvIGFuIGludGVycnVwdA0KCSAqIGNvbnRyb2wgcG9ydCBhdCBhIHNvbWV3 aGF0IG1hZ2ljIGxvY2F0aW9uLCBidXQgdGhpcyBmaXJzdCBwYXNzIGlzDQoJ ICogcG9sbGVkLg0KCSAqDQoJICogU28gdGhlIGZpcnN0IHRoaW5nIHdlIG5l ZWQgdG8gZG8gaXMgbWFwIHRoZSBHMTAgc3BhY2UgaW4uDQoJICoNCgkgKi8N Cg0KCXBjaV9jZmdyZWd3cml0ZShQSUlYNF9CVVMsIFBJSVg0X1NMT1QsIFBJ SVg0X0ZVTkMsIEcxMEEsDQoJCXNjLT5zY19wb3J0X2FkZHIsIDIpOw0KCXQg PSBwY2lfY2ZncmVncmVhZChQSUlYNF9CVVMsIFBJSVg0X1NMT1QsIFBJSVg0 X0ZVTkMsIEcxMEwsIDEpOw0KCXQgJj0gMHhmMDsNCgl0IHw9IDQ7DQoJcGNp X2NmZ3JlZ3dyaXRlKFBJSVg0X0JVUywgUElJWDRfU0xPVCwgUElJWDRfRlVO QywgRzEwTCwgdCwgMSk7DQoJb3V0dyhTUElDX0lSUV9QT1JULCAoaW53KFNQ SUNfSVJRX1BPUlQpICYgfigweDMgPDwgU1BJQ19JUlFfU0hJRlQpKSB8IChz cGljX2lycSA8PCBTUElDX0lSUV9TSElGVCkpOw0KCXQgPSBwY2lfY2ZncmVn cmVhZChQSUlYNF9CVVMsIFBJSVg0X1NMT1QsIFBJSVg0X0ZVTkMsIEcxMEws IDEpOw0KCXQgJj0gMHgxZjsNCgl0IHw9IDB4YzA7DQoJcGNpX2NmZ3JlZ3dy aXRlKFBJSVg0X0JVUywgUElJWDRfU0xPVCwgUElJWDRfRlVOQywgRzEwTCwg dCwgMSk7DQoNCglkZXZpY2Vfc2V0X2Rlc2MoZGV2LCAiU29ueSBQcm9ncmFt bWFibGUgSS9PIENvbnRyb2xsZXIiKTsNCg0KCXJldHVybiAwOw0KfQ0KDQpz dGF0aWMgaW50DQpzcGljX2F0dGFjaChkZXZpY2VfdCBkZXYpDQp7DQogICAg ICAgIHN0cnVjdCBzcGljX3NvZnRjICpzYzsNCg0KICAgICAgICBzYyA9IGRl dmljZV9nZXRfc29mdGMoZGV2KTsNCg0KCXNjLT5zY19kZXYgPSBkZXY7DQoJ DQoJc3BpY19wb2xscmF0ZSA9IChoei81MCk7IC8qIEV2ZXJ5IDUwdGggb2Yg YSBzZWNvbmQgKi8NCg0KCXNwaWNfY2FsbDEoc2MsIDB4ODIpOw0KCXNwaWNf Y2FsbDIoc2MsIDB4ODEsIDB4ZmYpOw0KCXNwaWNfY2FsbDEoc2MsIDB4OTIp Ow0KDQogICAgICAgIC8qIFRoZXJlIGNhbiBiZSBvbmx5IG9uZSAqLw0KICAg ICAgICBtYWtlX2Rldigmc3BpY19jZGV2c3csIDAsIDAsIDAsIDA2MDAsICJq b2dkaWFsIik7DQoNCglyZXR1cm4gMDsNCn0NCg0Kc3RhdGljIHZvaWQNCnNw aWN0aW1lb3V0KHZvaWQgKmFyZykNCnsNCiAgICAgICAgc3RydWN0IHNwaWNf c29mdGMgKnNjID0gYXJnOw0KCXVfY2hhciBiLCBldmVudCwgcGFyYW07DQoJ aW50IGo7DQoNCiAgICAgICAgaWYgKCFzYy0+c2Nfb3BlbmVkKSB7DQogICAg ICAgICAgICAgICAgZGV2aWNlX3ByaW50ZihzYy0+c2NfZGV2LCAidGltZW91 dCBjYWxsZWQgd2hpbGUgY2xvc2VkIVxuIik7DQogICAgICAgICAgICAgICAg cmV0dXJuOw0KICAgICAgICB9DQoNCglldmVudCA9IHJlYWRfcG9ydDIoc2Mp Ow0KCXBhcmFtID0gcmVhZF9wb3J0MShzYyk7DQoNCglpZiAoKGV2ZW50ICE9 IDQpICYmICghKGV2ZW50ICYgMHgxKSkpDQoJCXN3aXRjaChldmVudCkgew0K CQkJY2FzZSAweDEwOiAvKiBqb2cgd2hlZWwgZXZlbnQgKi8NCgkJCQliID0g ISEocGFyYW0gJiAweDQwKTsNCgkJCQlpZiAoYiAhPSBzYy0+c2NfYnV0dG9u bGFzdCkgew0KCQkJCQlzYy0+c2NfYnV0dG9ubGFzdCA9IGI7DQoJCQkJCXNj LT5zY19idWZbc2MtPnNjX2NvdW50KytdID0NCgkJCQkJCWI/J2QnOid1JzsN CgkJCQl9DQoJCQkJaiA9IChwYXJhbSAmIDB4ZikgfCAoKHBhcmFtICYgMHgx MCk/IH4weGY6MCk7DQoJCQkJaWYgKGo8MCkNCgkJCQkJd2hpbGUoaisrIT0w KSB7DQoJCQkJCQlzYy0+c2NfYnVmW3NjLT5zY19jb3VudCsrXSA9DQoJCQkJ CQkJJ2wnOw0KCQkJCQl9DQoJCQkJZWxzZSBpZiAoaj4wKQ0KCQkJCQl3aGls ZShqLS0hPTApIHsNCgkJCQkJCXNjLT5zY19idWZbc2MtPnNjX2NvdW50Kytd ID0NCgkJCQkJCQkncic7DQoJCQkJCX0NCgkJCQlnb3RvIGdvdF9ldmVudDsN CgkJCWNhc2UgMHg2MDogLyogQ2FwdHVyZSBidXR0b24gKi8NCgkJCQlwcmlu dGYoIkNhcHR1cmUgYnV0dG9uIGV2ZW50OiAleFxuIixwYXJhbSk7DQoJCQkJ Z290byBnb3RfZXZlbnQ7DQoJCQljYXNlIDB4MzA6IC8qIExpZCBzd2l0Y2gg Ki8NCgkJCQlwcmludGYoIkxpZCBzd2l0Y2ggZXZlbnQ6ICV4XG4iLHBhcmFt KTsNCgkJCQlnb3RvIGdvdF9ldmVudDsNCgkJCWRlZmF1bHQ6DQoJCQkJcHJp bnRmKCJVbmtub3duIGV2ZW50OiAleCAleFxuIiwgZXZlbnQsIHBhcmFtKTsN CgkJCQlnb3RvIGdvdF9ldmVudDsNCgkJfQ0KCS8qIE5vIGV2ZW50LiBXYWl0 IHNvbWUgbW9yZSAqLw0KICAgICAgICBzYy0+c2NfdGltZW91dF9jaCA9IHRp bWVvdXQoc3BpY3RpbWVvdXQsIHNjLCBzcGljX3BvbGxyYXRlKTsNCglyZXR1 cm47DQoNCmdvdF9ldmVudDoNCglpZiAoc2MtPnNjX2NvdW50KSB7DQoJCWlm IChzYy0+c2Nfc2xlZXBpbmcpIHsNCgkJCXNjLT5zY19zbGVlcGluZyA9IDA7 DQoJCQl3YWtldXAoKGNhZGRyX3QpIHNjKTsNCgkJfQ0KCQlzZWx3YWtldXAo JnNjLT5zY19yc2VsKTsNCgl9DQoNCglzcGljX2NhbGwyKHNjLCAweDgxLCAw eGZmKTsgLyogQ2xlYXIgZXZlbnQgKi8NCg0KICAgICAgICBzYy0+c2NfdGlt ZW91dF9jaCA9IHRpbWVvdXQoc3BpY3RpbWVvdXQsIHNjLCBzcGljX3BvbGxy YXRlKTsNCn0NCg0Kc3RhdGljIGludA0Kc3BpY29wZW4oZGV2X3QgZGV2LCBp bnQgZmxhZywgaW50IGZtdCwgc3RydWN0IHByb2MgKnApDQp7DQogICAgICAg IHN0cnVjdCBzcGljX3NvZnRjICpzYzsNCg0KICAgICAgICBzYyA9IGRldmNs YXNzX2dldF9zb2Z0YyhzcGljX2RldmNsYXNzLCAwKTsNCg0KICAgICAgICBp ZiAoc2MtPnNjX29wZW5lZCkNCiAgICAgICAgICAgICAgICByZXR1cm4gRUJV U1k7DQoNCglzYy0+c2Nfb3BlbmVkKys7DQoJc2MtPnNjX2NvdW50PTA7DQoN CiAgICAgICAgLyogU3RhcnQgdGhlIHBvbGxpbmcgKi8NCiAgICAgICAgdGlt ZW91dChzcGljdGltZW91dCwgc2MsIHNwaWNfcG9sbHJhdGUpOw0KICAgICAg ICByZXR1cm4gMDsNCn0NCg0Kc3RhdGljIGludA0Kc3BpY2Nsb3NlKGRldl90 IGRldiwgaW50IGZsYWcsIGludCBmbXQsIHN0cnVjdCBwcm9jICpwKQ0Kew0K ICAgICAgICBzdHJ1Y3Qgc3BpY19zb2Z0YyAqc2M7DQoNCiAgICAgICAgc2Mg PSBkZXZjbGFzc19nZXRfc29mdGMoc3BpY19kZXZjbGFzcywgMCk7DQoNCiAg ICAgICAgLyogU3RvcCBwb2xsaW5nICovDQogICAgICAgIHVudGltZW91dChz cGljdGltZW91dCwgc2MsIHNjLT5zY190aW1lb3V0X2NoKTsNCiAgICAgICAg c2MtPnNjX29wZW5lZCA9IDA7DQogICAgICAgIHJldHVybiAwOw0KfQ0KDQpz dGF0aWMgaW50DQpzcGljcmVhZChkZXZfdCBkZXYsIHN0cnVjdCB1aW8gKnVp bywgaW50IGZsYWcpDQp7DQogICAgICAgIHN0cnVjdCBzcGljX3NvZnRjICpz YzsNCglpbnQgbCwgcywgZXJyb3I7DQoJdV9jaGFyIGJ1ZltTQ0JVRkxFTl07 DQoNCiAgICAgICAgc2MgPSBkZXZjbGFzc19nZXRfc29mdGMoc3BpY19kZXZj bGFzcywgMCk7DQoNCglzID0gc3BsdHR5KCk7DQoJd2hpbGUgKCEoc2MtPnNj X2NvdW50KSkgew0KCQlzYy0+c2Nfc2xlZXBpbmc9MTsNCgkJZXJyb3IgPSB0 c2xlZXAoKGNhZGRyX3QpIHNjLCBQWkVSTyB8IFBDQVRDSCwgImpvZ3JlYSIs IDApOw0KCQlzYy0+c2Nfc2xlZXBpbmc9MDsNCgkJaWYgKGVycm9yKSB7DQoJ CQlzcGx4KHMpOw0KCQkJcmV0dXJuIGVycm9yOw0KCQl9DQoJfQ0KCXNwbHgo cyk7DQoNCgkvKg0KCSAqIFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBkZXZpY2Uu IFdlIHNlbmQgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzDQoJICogb24gZXZl bnRzOg0KCSAqIHUgPSB1cCwgZCA9IGRvd24gLS0gdGhhdCdzIHRoZSBqb2cg YnV0dG9uDQoJICogbCA9IGxlZnQsIHIgPSByaWdodCAtLSB0aGF0J3MgdGhl IGRpYWwuDQoJICogImxlZnQiIGFuZCAicmlnaHQiIGFyZSByYXRoZXIgY2Fw cmVjaW91cy4gVGhleSBhY3R1YWxseSByZXByZXNlbnQNCgkgKiBjY3cgYW5k IGN3LCByZXNwZWN0aXZlbHkNCgkgKg0KCSAqLw0KDQoJcyA9IHNwbHR0eSgp Ow0KCWwgPSBtaW4odWlvLT51aW9fcmVzaWQsIHNjLT5zY19jb3VudCk7DQoJ YmNvcHkoc2MtPnNjX2J1ZiwgYnVmLCBsKTsNCglzYy0+c2NfY291bnQgLT0g bDsNCgliY29weShzYy0+c2NfYnVmICsgbCwgc2MtPnNjX2J1ZiwgbCk7DQoJ c3BseChzKTsNCglyZXR1cm4gdWlvbW92ZShidWYsIGwsIHVpbyk7DQoNCn0N Cg0Kc3RhdGljIGludA0Kc3BpY2lvY3RsKGRldl90IGRldiwgdV9sb25nIGNt ZCwgY2FkZHJfdCBhZGRyLCBpbnQgZmxhZywgc3RydWN0IHByb2MgKnApDQp7 DQogICAgICAgIHN0cnVjdCBzcGljX3NvZnRjICpzYzsNCg0KICAgICAgICBz YyA9IGRldmNsYXNzX2dldF9zb2Z0YyhzcGljX2RldmNsYXNzLCAwKTsNCg0K CXJldHVybiBFSU87DQp9DQoNCnN0YXRpYyBpbnQNCnNwaWNwb2xsKGRldl90 IGRldiwgaW50IGV2ZW50cywgc3RydWN0IHByb2MgKnApDQp7DQogICAgICAg IHN0cnVjdCBzcGljX3NvZnRjICpzYzsNCiAgICAgICAgaW50IHJldmVudHMg PSAwLCBzOw0KDQogICAgICAgIHNjID0gZGV2Y2xhc3NfZ2V0X3NvZnRjKHNw aWNfZGV2Y2xhc3MsIDApOw0KICAgICAgICBzID0gc3BsdHR5KCk7DQogICAg ICAgIGlmIChldmVudHMgJiAoUE9MTElOIHwgUE9MTFJETk9STSkpIHsNCiAg ICAgICAgICAgICAgICBpZiAoc2MtPnNjX2NvdW50KQ0KICAgICAgICAgICAg ICAgICAgICAgICAgcmV2ZW50cyB8PSBldmVudHMgJiAoUE9MTElOIHwgUE9M TFJETk9STSk7DQogICAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAg ICAgICAgICAgICAgc2VscmVjb3JkKHAsICZzYy0+c2NfcnNlbCk7IC8qIFdo byBzaGFsbCB3ZSB3YWtlPyAqLw0KICAgICAgICB9DQogICAgICAgIHNwbHgo cyk7DQoNCiAgICAgICAgcmV0dXJuIHJldmVudHM7DQp9DQoNCg0Kc3RhdGlj IGRldmljZV9tZXRob2RfdCBzcGljX21ldGhvZHNbXSA9IHsNCglERVZNRVRI T0QoZGV2aWNlX3Byb2JlLAkJc3BpY19wcm9iZSksDQoJREVWTUVUSE9EKGRl dmljZV9hdHRhY2gsCXNwaWNfYXR0YWNoKSwNCg0KCXsgMCwgMCB9DQp9Ow0K DQpzdGF0aWMgZHJpdmVyX3Qgc3BpY19kcml2ZXIgPSB7DQoJInNwaWMiLA0K CXNwaWNfbWV0aG9kcywNCglzaXplb2Yoc3RydWN0IHNwaWNfc29mdGMpLA0K fTsNCg0KRFJJVkVSX01PRFVMRShzcGljLCBpc2EsIHNwaWNfZHJpdmVyLCBz cGljX2RldmNsYXNzLCAwLCAwKTsNCg0K --0-2008051343-976490346=:47060 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="spicreg.h" Content-Transfer-Encoding: BASE64 Content-ID: <Pine.BSF.4.21.0012101519061.47060@medusa.kfu.com> Content-Description: Content-Disposition: attachment; filename="spicreg.h" DQojZGVmaW5lIENERVZfTUFKT1IJMTYwDQoNCi8qDQogKiBGaW5kIHRoZSBQ Q0kgZGV2aWNlIHRoYXQgaG9sZHMgdGhlIEcxMCByZWdpc3RlciBuZWVkZWQg dG8gbWFwIGluIHRoZSBTUElDDQogKi8NCiNkZWZpbmUgUElJWDRfQlVTCTAN CiNkZWZpbmUgUElJWDRfU0xPVAk3DQojZGVmaW5lIFBJSVg0X0ZVTkMJMw0K DQojZGVmaW5lIEcxMEEJKDB4NjQpDQojZGVmaW5lIEcxMEwJKEcxMEEgKyAy KQ0KDQojZGVmaW5lIEJVVFRPTl9VUAkxDQojZGVmaW5lIEJVVFRPTl9ET1dO CTINCiNkZWZpbmUgSk9HX0NXCQkzDQojZGVmaW5lIEpPR19DQ1cJCTQNCg0K I2RlZmluZSBTUElDX0lSUV9QT1JUCTB4ODAzNA0KI2RlZmluZSBTUElDX0lS UV9TSElGVAkyMg0K --0-2008051343-976490346=:47060-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0012101506350.47060-300000>