Skip site navigation (1)Skip section navigation (2)
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>