[sane-devel] UMAX 2200 USB support

Frank Zago fzago@greshamstorage.com
Tue, 20 Nov 2001 21:47:52 -0600 (CST)


  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.

---171960392-1423184503-1006314472=:10970
Content-Type: TEXT/PLAIN; charset=US-ASCII


Hi,

I've hacked the umax backend to support that scanner. It works fine, at
least on linux.

My main problem is the integration into SANE.

* I had to disable the other scanners support to redirect the 6 sanei_scsi_*
functions to some usb functions.  Since this scanner is a scsi scanner
based on the powervision 8630, the rest of the code is virtually
unchanged.  That why I'd like to change the umax backed to support both
scsi and usb scanners. I think this can be solved by using some function
ptr magic. I'd like to have some comments from the maintainer of that
backend.

* I used the libusb library to support usb. As a result, the backend
autodetect the scanner and does not use /dev/usbscanner nor the
configuration files. And it does not use the scanner driver. Is the use of
the libusb a good idea?

To use the scanner, apply the patch, rebuild and install Sane.
type "setenv LD_PRELOAD /usr/local/lib/libusb-0.1.so.4" (or whatever the
path is) so the libusb will be preloaded. and then "xscanimage umax:"

This is a usable but unfinished work. Patch attached.

Frank.

---171960392-1423184503-1006314472=:10970
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="umaxusb-backend.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.33.0111202147520.10970@janus.openmic.com>
Content-Description: 
Content-Disposition: attachment; filename="umaxusb-backend.diff"

ZGlmZiAtdSAtciBzYW5lLWJhY2tlbmRzLTEuMC42Lm9yZy9iYWNrZW5kL3Vt
YXguYyBzYW5lLWJhY2tlbmRzLTEuMC42L2JhY2tlbmQvdW1heC5jDQotLS0g
c2FuZS1iYWNrZW5kcy0xLjAuNi5vcmcvYmFja2VuZC91bWF4LmMJU2F0IE9j
dCAyNyAwNjo1Nzo0NSAyMDAxDQorKysgc2FuZS1iYWNrZW5kcy0xLjAuNi9i
YWNrZW5kL3VtYXguYwlUdWUgTm92IDIwIDIxOjM4OjM3IDIwMDENCkBAIC0x
ODgsNyArMTg4LDcgQEANCiAvKiBudW1iZXIgb2YgbGluZXMgdGhhdCBzaGFs
bCBiZSBzY2FubmVkIGluIG9uZSBidWZmZXIgZm9yIHNjYW4gaWYgcG9zc2li
bGUgKi8NCiBzdGF0aWMgaW50IHVtYXhfc2Nhbl9saW5lcyAgICA9IDQwOyAv
KiBkZWZhdWx0OiA0MCBzY2FuIGxpbmVzICovDQogDQotc3RhdGljIGludCB1
bWF4X3Njc2lfbWF4cXVldWUgPSAyOyAvKiB1c2UgY29tbWFuZCBxdWV1ZWlu
ZyBkZXB0aCAyIGFzIGRlZmF1bHQgKi8NCitzdGF0aWMgaW50IHVtYXhfc2Nz
aV9tYXhxdWV1ZSA9IDE7IC8qIHVzZSBjb21tYW5kIHF1ZXVlaW5nIGRlcHRo
IDIgYXMgZGVmYXVsdCAqLw0KIHN0YXRpYyBpbnQgdW1heF9oYW5kbGVfYmFk
X3NlbnNlX2Vycm9yID0gMDsgLyogZGVmYXVsdDogaGFuZGxlIGJhZCBzZW5z
ZSBlcnJvciBjb2RlIGFzIGRldmljZSBidXN5ICovDQogc3RhdGljIGludCB1
bWF4X2V4ZWN1dGVfcmVxdWVzdF9zZW5zZSAgPSAwOyAvKiBkZWZhdWx0OiBk
byBub3QgdXNlIHJlcXVlc3Qgc2Vuc2UgaW4gZG9fY2FsaWJyYXRpb24gKi8N
CiBzdGF0aWMgaW50IHVtYXhfZm9yY2VfcHJldmlld19iaXRfcmdiICA9IDA7
IC8qIGRlZmF1bHQ6IGRvIG5vdCBmb3JjZSBwcmV2aWV3IGJpdCBpbiByZWFs
IGNvbG9yIHNjYW4gKi8NCkBAIC0yOTEsNiArMjkxLDM3MyBAQA0KICAgcmV0
dXJuIFNBTkVfRkFMU0U7DQogfQ0KIA0KKw0KKy8qIFVTQiBzcGVjaWZpYyBw
YXJ0cyAqLw0KKw0KKyNpbmNsdWRlIDx1c2IuaD4NCisNCisvKiBJZHMgZm9y
IHRoZSBVTUFYIDIyMDBVLiAqLw0KK3N0YXRpYyBpbnQgaWRWZW5kb3IgPSAw
eDE2MDY7DQorc3RhdGljIGludCBpZFByb2R1Y3QgPSAweDAyMzA7DQorDQor
DQorLyogcmVxdWVzdCAqLw0KKyNkZWZpbmUgUFY4NjMwX1JFUV9SRUFEQllU
RSAgICAgICAgIDB4MDANCisjZGVmaW5lIFBWODYzMF9SRVFfV1JJVEVCWVRF
ICAgICAgICAweDAxDQorI2RlZmluZSBQVjg2MzBfUkVRX0VQUEJVTEtSRUFE
ICAgICAgMHgwMg0KKyNkZWZpbmUgUFY4NjMwX1JFUV9FUFBCVUxLV1JJVEUg
ICAgIDB4MDMNCisjZGVmaW5lIFBWODYzMF9SRVFfRkxVU0hCVUZGRVIgICAg
ICAweDA0DQorI2RlZmluZSBQVjg2MzBfUkVRX0VOQUJMRUlOVEVSUlVQVCAg
MHgwNQ0KKyNkZWZpbmUgUFY4NjMwX1JFUV9ESVNBQkxFSU5URVJSVVBUIDB4
MDYNCisjZGVmaW5lIFBWODYzMF9SRVFfUkVBRFdPUkQgICAgICAgICAweDA4
DQorI2RlZmluZSBQVjg2MzBfUkVRX1dSSVRFV09SRCAgICAgICAgMHgwOQ0K
Kw0KKy8qIGluZGV4ICovDQorI2RlZmluZSBQVjg2MzBfUkRBVEEgICAgICAg
MHgwMA0KKyNkZWZpbmUgUFY4NjMwX1JFUFBBRERSRVNTIDB4MDENCisjZGVm
aW5lIFBWODYzMF9VTktOT1dOCSAgIDB4MDINCisjZGVmaW5lIFBWODYzMF9S
TU9ERSAgICAgICAweDAzDQorI2RlZmluZSBQVjg2MzBfUlNUQVRVUyAgICAg
MHgwNA0KKw0KK3ZvaWQgcHY4NjMwX3dyaXRlX2J5dGUodXNiX2Rldl9oYW5k
bGUgKmRldiwgaW50IHZhbHVlLCBpbnQgaW5kZXgpDQorew0KKwlpZiAodXNi
X2NvbnRyb2xfbXNnKGRldiwgMHg0MCwgUFY4NjMwX1JFUV9XUklURUJZVEUs
IHZhbHVlLCBpbmRleCwgTlVMTCwgMCwgMTAwMDApID09IC0xKSB7DQorCQlw
ZXJyb3IoInVzYl9jb250cm9sX21zZyBQVjg2MzBfUkVRX1dSSVRFQllURSIp
Ow0KKwkJZXhpdCgxKTsNCisJfQ0KK30NCisNCit2b2lkIHB2ODYzMF9yZWFk
X2J5dGUodXNiX2Rldl9oYW5kbGUgKmRldiwgdW5zaWduZWQgY2hhciAqZGF0
YSwgaW50IGluZGV4KQ0KK3sNCisJaWYgKHVzYl9jb250cm9sX21zZyhkZXYs
IDB4YzAsIFBWODYzMF9SRVFfUkVBREJZVEUsIDAsIGluZGV4LCBkYXRhLCAx
LCAxMDAwMCkgPT0gLTEpIHsNCisJCXBlcnJvcigidXNiX2NvbnRyb2xfbXNn
IFBWODYzMF9SRVFfUkVBREJZVEUiKTsNCisJCWV4aXQoMSk7DQorCX0NCit9
DQorDQordm9pZCBwdjg2MzBfZmx1c2hfYnVmZmVyKHVzYl9kZXZfaGFuZGxl
ICpkZXYpDQorew0KKwlpZiAodXNiX2NvbnRyb2xfbXNnKGRldiwgMHg0MCwg
UFY4NjMwX1JFUV9GTFVTSEJVRkZFUiwgMCwgMCwgTlVMTCwgMCwgMTAwMDAp
ID09IC0xKSB7DQorCQlwZXJyb3IoInVzYl9jb250cm9sX21zZyBQVjg2MzBf
UkVRX0ZMVVNIQlVGRkVSIik7DQorCQlleGl0KDEpOw0KKwl9DQorfQ0KKw0K
K3ZvaWQgcHY4NjMwX3ByZXBfYnVsa3dyaXRlKHVzYl9kZXZfaGFuZGxlICpk
ZXYsIGludCBsZW4pDQorew0KKwlpZiAodXNiX2NvbnRyb2xfbXNnKGRldiwg
MHg0MCwgUFY4NjMwX1JFUV9FUFBCVUxLV1JJVEUsIGxlbiAmIDB4ZmZmZiwg
bGVuID4+IDE2LCBOVUxMLCAwLCAxMDAwMCkgPT0gLTEpIHsNCisJCXBlcnJv
cigidXNiX2NvbnRyb2xfbXNnIFBWODYzMF9SRVFfRVBQQlVMS1dSSVRFIik7
DQorCQlleGl0KDEpOw0KKwl9DQorfQ0KKw0KK3ZvaWQgcHY4NjMwX3ByZXBf
YnVsa3JlYWQodXNiX2Rldl9oYW5kbGUgKmRldiwgaW50IGxlbikNCit7DQor
CWlmICh1c2JfY29udHJvbF9tc2coZGV2LCAweDQwLCBQVjg2MzBfUkVRX0VQ
UEJVTEtSRUFELCBsZW4gJiAweGZmZmYsIGxlbiA+PiAxNiwgTlVMTCwgMCwg
MTAwMDApID09IC0xKSB7DQorCQlwZXJyb3IoInVzYl9jb250cm9sX21zZyBQ
Vjg2MzBfUkVRX0VQUEJVTEtSRUFEIik7DQorCQlleGl0KDEpOw0KKwl9DQor
fQ0KKw0KK3ZvaWQgcHY4NjMwX2J1bGt3cml0ZSh1c2JfZGV2X2hhbmRsZSAq
ZGV2LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKQ0KK3sNCisJaWYgKHVz
Yl9idWxrX3dyaXRlKGRldiwgMHgwMSwgKGNoYXIgKilkYXRhLCBsZW4sIDEw
MDAwKSAhPSBsZW4pIHsNCisJCXBlcnJvcigidXNiX2J1bGtfd3JpdGUiKTsN
CisJCWV4aXQoLTEpOw0KKwl9DQorfQ0KKw0KK3NpemVfdCBwdjg2MzBfYnVs
a3JlYWQodXNiX2Rldl9oYW5kbGUgKmRldiwgdm9pZCAqZGF0YSwgc2l6ZV90
IGxlbikNCit7DQorCXNzaXplX3QgbGVuX3JldDsNCisNCisJaWYgKChsZW5f
cmV0ID0gdXNiX2J1bGtfcmVhZChkZXYsIDB4ODIsIGRhdGEsIGxlbiwgMTAw
MDApKSA9PSAtMSkgew0KKwkJcGVycm9yKCJ1c2JfYnVsa19yZWFkIik7DQor
CX0NCisNCisJcmV0dXJuKGxlbl9yZXQpOw0KK30NCisNCit2b2lkIHB2ODYz
MF9zdGF0dXNfd2FpdCh1c2JfZGV2X2hhbmRsZSAqZGV2LCB1bnNpZ25lZCBj
aGFyIHN0YXR1cykNCit7DQorCXVuc2lnbmVkIGNoYXIgczsNCisJaW50IGk7
DQorDQorCWZvciAoaT0wOyBpPDEwMDA7IGkrKykgew0KKwkJcHY4NjMwX3Jl
YWRfYnl0ZShkZXYsICZzLCBQVjg2MzBfUlNUQVRVUyk7DQorCQlpZiAocyA9
PSBzdGF0dXMpDQorCQkJcmV0dXJuOw0KKwkJdXNsZWVwKDEwMDAwMCk7DQor
CX0NCisJREJHKERCR19pbmZvLCAic3RhdHVzIG5ldmVyIG9rXG4iKTsNCisJ
ZXhpdCgxKTsNCit9DQorDQordm9pZCBtaW5pX2luaXRfc2Nhbm5lcih1c2Jf
ZGV2X2hhbmRsZSAqZGV2KQ0KK3sNCisJREJHKERCR19pbmZvLCAibWluaV9p
bml0X3NjYW5uZXJcbiIpOw0KKw0KKwkvKiBJbml0IHRoZSBkZXZpY2UgKD8p
ICovDQorCXB2ODYzMF93cml0ZV9ieXRlKGRldiwgMHgwNCwgUFY4NjMwX1VO
S05PV04pOw0KKwlwdjg2MzBfd3JpdGVfYnl0ZShkZXYsIDB4MDIsIFBWODYz
MF9STU9ERSk7DQorCXB2ODYzMF93cml0ZV9ieXRlKGRldiwgMHgwMiwgUFY4
NjMwX1JNT0RFKTsNCisNCisJcHY4NjMwX3N0YXR1c193YWl0KGRldiwgMHhk
MCk7DQorfQ0KKw0KKy8qIEZaOiBjZGJfc2l6ZXMgaXMgaW5jb3JyZWN0LiBh
dCBsZWFzdCBvbmUgMTYgYnl0ZSBpcyBtaXNzaW5nLiAqLw0KK3N0YXRpYyB1
X2NoYXIgY2RiX3NpemVzWzhdID0NCisgIHsNCisgICAgNiwgMTAsIDEwLCAx
MiwgMTIsIDEyLCAxMCwgMTANCisgIH07DQorI2RlZmluZSBDREJfU0laRShv
cGNvZGUpCWNkYl9zaXplc1soKChvcGNvZGUpID4+IDUpICYgNyldDQorDQor
c3RhdGljIFNBTkVfU3RhdHVzIHNhbmVpX3VtYXh1c2JfY21kKHVzYl9kZXZf
aGFuZGxlICpkZXYsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IHNyY19zaXpl
LCB2b2lkICpkc3QsIHNpemVfdCAqIGRzdF9zaXplKQ0KK3sNCisJdW5zaWdu
ZWQgY2hhciByZXN1bHQ7DQorCXNpemVfdCBjbWRfc2l6ZSA9IENEQl9TSVpF
ICgqKGNoYXIgKikgc3JjKTsNCisJc2l6ZV90IHBhcmFtX3NpemUgPSBzcmNf
c2l6ZSAtIGNtZF9zaXplOw0KKwljaGFyICogcGFyYW1fcHRyID0gKChjaGFy
ICopIHNyYykgKyBjbWRfc2l6ZTsNCisNCisJREJHKERCR19pbmZvLCAiU2Vu
ZGluZyBTQ1NJIGNtZCAweCUwMnggY2RiIGxlbiAlZCwgcGFyYW0gbGVuICVk
LCByZXN1bHQgbGVuICVkXG4iLCAoKHVuc2lnbmVkIGNoYXIgKilzcmMpWzBd
LCBjbWRfc2l6ZSwgcGFyYW1fc2l6ZSwgZHN0X3NpemU/ICpkc3Rfc2l6ZTow
KTsNCisNCisJcHY4NjMwX3dyaXRlX2J5dGUoZGV2LCAweDBjLCBQVjg2MzBf
VU5LTk9XTik7DQorCXB2ODYzMF9zdGF0dXNfd2FpdChkZXYsIDB4ZjApOw0K
Kwlwdjg2MzBfd3JpdGVfYnl0ZShkZXYsIDB4MDQsIFBWODYzMF9VTktOT1dO
KTsNCisNCisJLyogU2VuZCB0aGUgQ0RCIGFuZCBjaGVjayBpdCdzIGJlZW4g
cmVjZWl2ZWQgT0suICovDQorCXB2ODYzMF93cml0ZV9ieXRlKGRldiwgMHgx
NiwgUFY4NjMwX1JNT0RFKTsNCisJcHY4NjMwX2ZsdXNoX2J1ZmZlcihkZXYp
Ow0KKwlwdjg2MzBfcHJlcF9idWxrd3JpdGUoZGV2LCBjbWRfc2l6ZSk7DQor
CQ0KKwlwdjg2MzBfYnVsa3dyaXRlKGRldiwgc3JjLCBjbWRfc2l6ZSk7DQor
CXB2ODYzMF9zdGF0dXNfd2FpdChkZXYsIDB4ZjgpOw0KKw0KKwlwdjg2MzBf
Zmx1c2hfYnVmZmVyKGRldik7DQorCXB2ODYzMF9wcmVwX2J1bGtyZWFkKGRl
diwgMSk7DQorDQorCXJlc3VsdCA9IDB4QTU7CQkJCS8qIHRvIGJlIHN1cmUg
Ki8NCisJcHY4NjMwX2J1bGtyZWFkKGRldiwgJnJlc3VsdCwgMSk7DQorCWlm
IChyZXN1bHQgIT0gMCkgew0KKwkJREJHKERCR19pbmZvLCAiZXJyb3IgaW4g
cHY4NjMwX2J1bGtyZWFkIChnb3QgJTAyeClcbiIsIHJlc3VsdCk7DQorCQlp
ZiAocmVzdWx0ID09IDgpIHsNCisJCQltaW5pX2luaXRfc2Nhbm5lcihkZXYp
Ow0KKwkJfQ0KKwkJcmV0dXJuKFNBTkVfU1RBVFVTX0lPX0VSUk9SKTsNCisJ
fQ0KKwkNCisJLyogU2VuZCB0aGUgcGFyYW1ldGVycyBhbmQgY2hlY2sgdGhl
eSd2ZSBiZWVuIHJlY2VpdmVkIE9LLiAqLw0KKwlpZiAocGFyYW1fc2l6ZSkg
ew0KKwkJcHY4NjMwX2ZsdXNoX2J1ZmZlcihkZXYpOw0KKwkJcHY4NjMwX3By
ZXBfYnVsa3dyaXRlKGRldiwgcGFyYW1fc2l6ZSk7DQorCQkNCisJCXB2ODYz
MF9idWxrd3JpdGUoZGV2LCBwYXJhbV9wdHIsIHBhcmFtX3NpemUpOw0KKwkJ
cHY4NjMwX3N0YXR1c193YWl0KGRldiwgMHhmOCk7DQorCQkNCisJCXB2ODYz
MF9mbHVzaF9idWZmZXIoZGV2KTsNCisJCXB2ODYzMF9wcmVwX2J1bGtyZWFk
KGRldiwgMSk7DQorCQkNCisJCXJlc3VsdCA9IDB4QTU7CQkJCS8qIHRvIGJl
IHN1cmUgKi8NCisJCXB2ODYzMF9idWxrcmVhZChkZXYsICZyZXN1bHQsIDEp
Ow0KKwkJaWYgKHJlc3VsdCAhPSAwKSB7DQorCQkJREJHKERCR19pbmZvLCAi
ZXJyb3IgaW4gcHY4NjMwX2J1bGtyZWFkIChnb3QgJTAyeClcbiIsIHJlc3Vs
dCk7DQorCQkJaWYgKHJlc3VsdCA9PSA4KSB7DQorCQkJCW1pbmlfaW5pdF9z
Y2FubmVyKGRldik7DQorCQkJfQ0KKwkJCXJldHVybihTQU5FX1NUQVRVU19J
T19FUlJPUik7DQorCQl9DQorCX0NCisNCisJaWYgKGRzdF9zaXplICE9IE5V
TEwgJiYgKmRzdF9zaXplICE9IDAgJiYgZHN0ICE9IE5VTEwpIHsNCisJCS8q
IFRoaXMgY29tbWFuZCBleHBlY3QgYSByZXR1cm4uICovDQorCQlwdjg2MzBf
Zmx1c2hfYnVmZmVyKGRldik7DQorCQlwdjg2MzBfcHJlcF9idWxrcmVhZChk
ZXYsICpkc3Rfc2l6ZSk7DQorCQkqZHN0X3NpemUgPSBwdjg2MzBfYnVsa3Jl
YWQoZGV2LCBkc3QsICpkc3Rfc2l6ZSk7DQorDQorCQlEQkcoREJHX2luZm8s
ICIgIFNDU0kgY21kIHJldHVybmVkICVkIGJ5dGVzXG4iLCAqZHN0X3NpemUp
Ow0KKw0KKwkJcHY4NjMwX3N0YXR1c193YWl0KGRldiwgMHhmOCk7DQorDQor
CQlwdjg2MzBfZmx1c2hfYnVmZmVyKGRldik7DQorCQlwdjg2MzBfcHJlcF9i
dWxrcmVhZChkZXYsIDEpOw0KKw0KKwkJcmVzdWx0ID0gMHg1QTsJCQkvKiBq
dXN0IHRvIGJlIHN1cmUgKi8NCisJCXB2ODYzMF9idWxrcmVhZChkZXYsICZy
ZXN1bHQsIDEpOw0KKwkJaWYgKHJlc3VsdCAhPSAwKSB7DQorCQkJREJHKERC
R19pbmZvLCAiZXJyb3IgaW4gcHY4NjMwX2J1bGtyZWFkIChnb3QgJTAyeClc
biIsIHJlc3VsdCk7DQorCQkJaWYgKHJlc3VsdCA9PSA4KSB7DQorCQkJCW1p
bmlfaW5pdF9zY2FubmVyKGRldik7DQorCQkJfQ0KKwkJCXJldHVybihTQU5F
X1NUQVRVU19JT19FUlJPUik7DQorCQl9DQorCX0NCisNCisJcHY4NjMwX3dy
aXRlX2J5dGUoZGV2LCAweDA0LCBQVjg2MzBfVU5LTk9XTik7DQorCXB2ODYz
MF93cml0ZV9ieXRlKGRldiwgMHgwMiwgUFY4NjMwX1JNT0RFKTsNCisJcHY4
NjMwX3dyaXRlX2J5dGUoZGV2LCAweDAyLCBQVjg2MzBfUk1PREUpOw0KKwlw
djg2MzBfc3RhdHVzX3dhaXQoZGV2LCAweGQwKTsNCisNCisJREJHKERCR19p
bmZvLCAiICBTQ1NJIGNtZCAweCUwMnggc2VudFxuIiwgKChjaGFyICopc3Jj
KVswXSk7DQorIA0KKwlyZXR1cm4oU0FORV9TVEFUVVNfR09PRCk7DQorfQ0K
Kw0KKw0KK3ZvaWQgKnVtYXh1c2JfcmVxX2J1ZmZlcjsJCS8qIGtlZXAgdGhl
IGJ1ZmZlciBwdHIgYXMgYW4gSUQgKi8NCitTQU5FX1N0YXR1cw0KK3NhbmVp
X3VtYXh1c2JfcmVxX3dhaXQgKHZvaWQgKmlkKQ0KK3sNCisJaWYgKGlkICE9
IHVtYXh1c2JfcmVxX2J1ZmZlcikgew0KKwkJREJHKERCR19pbmZvLCAic2Fu
ZWlfdW1heHVzYl9yZXFfd2FpdDogQUlFLCBpbnZhbGlkIGlkXG4iKTsNCisJ
CXJldHVybihTQU5FX1NUQVRVU19JT19FUlJPUik7DQorCX0NCisJcmV0dXJu
KFNBTkVfU1RBVFVTX0dPT0QpOw0KK30NCisNCitTQU5FX1N0YXR1cyBzYW5l
aV91bWF4dXNiX3JlcV9lbnRlciAodXNiX2Rldl9oYW5kbGUgKmRldiwNCisJ
CQkJCQkJCSAgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgc3JjX3NpemUsDQor
CQkJCQkJCQkgIHZvaWQgKmRzdCwgc2l6ZV90ICogZHN0X3NpemUsIHZvaWQg
KippZHApDQorew0KKwl1bWF4dXNiX3JlcV9idWZmZXIgPSAqaWRwID0gZHN0
Ow0KKwlyZXR1cm4oc2FuZWlfdW1heHVzYl9jbWQoZGV2LCBzcmMsIHNyY19z
aXplLCBkc3QsIGRzdF9zaXplKSk7DQorfQ0KKw0KK2ludCBpbml0X3VtYXh1
c2Jfc2Nhbm5lcih1c2JfZGV2X2hhbmRsZSAqZGV2KQ0KK3sNCisJREJHKERC
R19pbmZvLCAiSW5pdGlhbGl6ZSB0aGUgZGV2aWNlXG4iKTsNCisNCisJLyog
SW5pdCB0aGUgZGV2aWNlICovDQorCXB2ODYzMF93cml0ZV9ieXRlKGRldiwg
MHgwNCwgUFY4NjMwX1VOS05PV04pOw0KKwlwdjg2MzBfd3JpdGVfYnl0ZShk
ZXYsIDB4MDIsIFBWODYzMF9STU9ERSk7DQorCXB2ODYzMF93cml0ZV9ieXRl
KGRldiwgMHgwMiwgUFY4NjMwX1JNT0RFKTsNCisNCisJcHY4NjMwX3N0YXR1
c193YWl0KGRldiwgMHhkMCk7DQorDQorCXB2ODYzMF93cml0ZV9ieXRlKGRl
diwgMHgwYywgUFY4NjMwX1VOS05PV04pOw0KKwlwdjg2MzBfc3RhdHVzX3dh
aXQoZGV2LCAweGYwKTsNCisNCisJcHY4NjMwX3dyaXRlX2J5dGUoZGV2LCAw
eDA0LCBQVjg2MzBfVU5LTk9XTik7DQorCXB2ODYzMF9zdGF0dXNfd2FpdChk
ZXYsIDB4ZjApOw0KKw0KKwlwdjg2MzBfd3JpdGVfYnl0ZShkZXYsIDB4MGMs
IFBWODYzMF9VTktOT1dOKTsNCisJcHY4NjMwX3N0YXR1c193YWl0KGRldiwg
MHhmMCk7DQorCXB2ODYzMF9zdGF0dXNfd2FpdChkZXYsIDB4ZjgpOw0KKw0K
Kwlwdjg2MzBfd3JpdGVfYnl0ZShkZXYsIDB4MDQsIFBWODYzMF9VTktOT1dO
KTsgLyogMTk3ICovDQorDQorCXB2ODYzMF93cml0ZV9ieXRlKGRldiwgMHgw
MiwgUFY4NjMwX1JNT0RFKTsNCisJcHY4NjMwX3dyaXRlX2J5dGUoZGV2LCAw
eDAyLCBQVjg2MzBfUk1PREUpOw0KKwlwdjg2MzBfc3RhdHVzX3dhaXQoZGV2
LCAweGQwKTsNCisNCisJcHY4NjMwX3dyaXRlX2J5dGUoZGV2LCAweDBjLCBQ
Vjg2MzBfVU5LTk9XTik7IC8qIDIwMSAqLw0KKwlwdjg2MzBfc3RhdHVzX3dh
aXQoZGV2LCAweGYwKTsNCisNCisJcHY4NjMwX3dyaXRlX2J5dGUoZGV2LCAw
eDA0LCBQVjg2MzBfVU5LTk9XTik7IC8qIDIwMyAqLw0KKw0KKwlwdjg2MzBf
d3JpdGVfYnl0ZShkZXYsIDB4MTYsIFBWODYzMF9STU9ERSk7CS8qIDIwNCAq
Lw0KKw0KKwlEQkcoREJHX2luZm8sICJEZXZpY2UgaW5pdGlhbGl6ZWRcbiIp
Ow0KKwkNCisJcmV0dXJuKDApOyANCit9DQorDQorDQordXNiX2Rldl9oYW5k
bGUgKg0KK29wZW5fZGV2aWNlIChzdHJ1Y3QgdXNiX2RldmljZSAqZGV2aWNl
KQ0KK3sNCisJdXNiX2Rldl9oYW5kbGUgKmhhbmRsZTsNCisNCisJREJHKERC
R19pbmZvLCAib3BlbmluZyBkZXZpY2UgJXMgb24gYnVzICVzXG4iLA0KKwkJ
CWRldmljZS0+ZmlsZW5hbWUsIGRldmljZS0+YnVzLT5kaXJuYW1lKTsNCisN
CisJaGFuZGxlID0gdXNiX29wZW4gKGRldmljZSk7DQorDQorCWlmICghaGFu
ZGxlKSB7DQorCQlwZXJyb3IoIm9wZW4iKTsNCisJCXJldHVybiAwOw0KKwl9
DQorDQorCXJldHVybiBoYW5kbGU7DQorfQ0KKw0KK3VzYl9kZXZfaGFuZGxl
ICoNCitzY2FuX2J1cyAoc3RydWN0IHVzYl9idXMgKmJ1cykNCit7DQorCXN0
cnVjdCB1c2JfZGV2aWNlICpyb290dHJlZSA9IGJ1cy0+ZGV2aWNlczsNCisJ
c3RydWN0IHVzYl9kZXZpY2UgKmRldmljZTsNCisJdXNiX2Rldl9oYW5kbGUg
KmRldmljZV9oYW5kbGU7DQorDQorCURCRyhEQkdfaW5mbywgInNjYW5uaW5n
IGJ1cyAlc1xuIiwgYnVzLT5kaXJuYW1lKTsNCisNCisJZm9yIChkZXZpY2Ug
PSByb290dHJlZTsgZGV2aWNlOyBkZXZpY2UgPSBkZXZpY2UtPm5leHQpIHsN
CisJCWlmICgoZGV2aWNlLT5kZXNjcmlwdG9yLmlkVmVuZG9yID09IGlkVmVu
ZG9yKSAmJiANCisJCQkoZGV2aWNlLT5kZXNjcmlwdG9yLmlkUHJvZHVjdCA9
PSBpZFByb2R1Y3QpKSB7DQorDQorCQkJREJHKERCR19pbmZvLCAiZm91bmQg
ZGV2aWNlICVzIG9uIGJ1cyAlcyAoaWRWZW5kb3IgMHgleCBpZFByb2R1Y3Qg
MHgleClcbiIsDQorCQkJCSBkZXZpY2UtPmZpbGVuYW1lLCBkZXZpY2UtPmJ1
cy0+ZGlybmFtZSwNCisJCQkJIGRldmljZS0+ZGVzY3JpcHRvci5pZFZlbmRv
ciwgZGV2aWNlLT5kZXNjcmlwdG9yLmlkUHJvZHVjdCk7DQorDQorCQkJaWYg
KChkZXZpY2VfaGFuZGxlID0gb3Blbl9kZXZpY2UgKGRldmljZSkpKSB7DQor
CQkJCXJldHVybihkZXZpY2VfaGFuZGxlKTsNCisJCQl9DQorDQorCQkJREJH
KERCR19pbmZvLCAiY29udGludWluZyB0byBzY2FuIGJ1cyAlc1xuIiwgYnVz
LT5kaXJuYW1lKTsNCisJCX0NCisJCWVsc2UNCisJCQlEQkcoREJHX2luZm8s
ICJkZXZpY2UgJXMgb24gYnVzICVzIGRvZXMgbm90IG1hdGNoXG4iLA0KKwkJ
CQkJZGV2aWNlLT5maWxlbmFtZSwgZGV2aWNlLT5idXMtPmRpcm5hbWUpOw0K
Kwl9DQorDQorCXJldHVybihOVUxMKTsNCit9DQorDQorLyogSWdub3JlIGRl
di4gUmV0dXJucyB0aGUgZmlyc3QgZ29vZCBkZXZpY2UuICovDQorU0FORV9T
dGF0dXMNCitzYW5laV91bWF4dXNiX29wZW4gKGNvbnN0IGNoYXIgKmRldiwg
dXNiX2Rldl9oYW5kbGUgKipmZHAsDQorCQkJCQlTQU5FSV9TQ1NJX1NlbnNl
X0hhbmRsZXIgaGFuZGxlciwgdm9pZCAqaGFuZGxlcl9hcmcpDQorew0KKwlz
dHJ1Y3QgdXNiX2J1cyogYnVzOw0KKw0KKwl1c2JfaW5pdCAoKTsNCisJdXNi
X2ZpbmRfYnVzc2VzICgpOw0KKwl1c2JfZmluZF9kZXZpY2VzICgpOw0KKw0K
Kwlmb3IoIGJ1cyA9IHVzYl9idXNzZXM7IGJ1czsgYnVzID0gYnVzLT5uZXh0
ICkgew0KKwkJDQorCQkqZmRwID0gc2Nhbl9idXMgKGJ1cyk7DQorCQlpZiAo
KmZkcCkgYnJlYWs7DQorCX0NCisNCisJaWYgKCpmZHAgPT0gTlVMTCkgew0K
KwkJcmV0dXJuKFNBTkVfU1RBVFVTX0lOVkFMKTsNCisJfSBlbHNlIHsNCisJ
CWluaXRfdW1heHVzYl9zY2FubmVyKCpmZHApOw0KKwkJcmV0dXJuKFNBTkVf
U1RBVFVTX0dPT0QpOw0KKwl9DQorfQ0KKw0KK1NBTkVfU3RhdHVzDQorc2Fu
ZWlfdW1heHVzYl9vcGVuX2V4dGVuZGVkIChjb25zdCBjaGFyICpkZXYsIHVz
Yl9kZXZfaGFuZGxlICoqZmRwLA0KKwkJCQkJU0FORUlfU0NTSV9TZW5zZV9I
YW5kbGVyIGhhbmRsZXIsIHZvaWQgKmhhbmRsZXJfYXJnLCBpbnQgKmJ1ZmZl
cnNpemUpDQorew0KKwlyZXR1cm4oc2FuZWlfdW1heHVzYl9vcGVuKGRldiwg
ZmRwLCBoYW5kbGVyLCBoYW5kbGVyX2FyZykpOw0KK30NCisNCit2b2lkDQor
c2FuZWlfdW1heHVzYl9jbG9zZSAodXNiX2Rldl9oYW5kbGUgKmZkcCkNCit7
DQorCXVzYl9jbG9zZShmZHApOw0KK30NCisNCisjZGVmaW5lIHNhbmVpX3Nj
c2lfY21kIHNhbmVpX3VtYXh1c2JfY21kDQorI2RlZmluZSBzYW5laV9zY3Np
X29wZW4gc2FuZWlfdW1heHVzYl9vcGVuDQorI2RlZmluZSBzYW5laV9zY3Np
X2Nsb3NlIHNhbmVpX3VtYXh1c2JfY2xvc2UNCisjZGVmaW5lIHNhbmVpX3Nj
c2lfb3Blbl9leHRlbmRlZCBzYW5laV91bWF4dXNiX29wZW5fZXh0ZW5kZWQN
CisjZGVmaW5lIHNhbmVpX3Njc2lfcmVxX2VudGVyIHNhbmVpX3VtYXh1c2Jf
cmVxX2VudGVyDQorI2RlZmluZSBzYW5laV9zY3NpX3JlcV93YWl0IHNhbmVp
X3VtYXh1c2JfcmVxX3dhaXQNCisNCisvKiBFbmQgb2YgVVNCIHNwZWNpZmlj
IHBhcnRzICovDQorDQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERCR19pbnFfbnog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQogDQogDQpA
QCAtMTI4OCw3ICsxNjU1LDcgQEANCiAgIH0NCiANCiAgIHNhbmVpX3Njc2lf
Y2xvc2Uoc2Nhbm5lci0+ZGV2aWNlLT5zZmQpOw0KLSAgc2Nhbm5lci0+ZGV2
aWNlLT5zZmQgPSAtMTsNCisgIHNjYW5uZXItPmRldmljZS0+c2ZkID0gTlVM
TDsNCiANCiAgcmV0dXJuIHN0YXR1czsNCiB9DQpAQCAtNDA1Miw3ICs0NDE5
LDcgQEANCiAgIERCRyhEQkdfcHJvYywiaW5pdFxuIik7DQogDQogICBkZXYt
PmRldmljZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICA9IE5VTEw7DQot
ICBkZXYtPnNmZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IC0x
Ow0KKyAgZGV2LT5zZmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBOVUxMOw0KICAgZGV2LT5waXhlbGJ1ZmZlciAgICAgICAgICAgICAgICAg
ICAgICAgPSBOVUxMOw0KIA0KICAgLyogY29uZmlnIGZpbGUgb3IgcHJlZGVm
aW5lZCBzZXR0aW5ncyAqLw0KQEAgLTQyMzQsMTIgKzQ2MDEsMTIgQEANCiAg
ICAgfQ0KICAgfQ0KIA0KLSAgaWYgKHNjYW5uZXItPmRldmljZS0+c2ZkID49
IDApDQorICBpZiAoc2Nhbm5lci0+ZGV2aWNlLT5zZmQpDQogICB7DQogICAg
IHVtYXhfZ2l2ZV9zY2FubmVyKHNjYW5uZXItPmRldmljZSk7IC8qIHJlcG9z
aXRpb24gYW5kIHJlbGVhc2Ugc2Nhbm5lciAqLw0KICAgICBEQkcoREJHX3Nh
bmVfaW5mbywiY2xvc2luZyBzY2FubmVyZGV2aWNlIGZpbGVkZXNjcmlwdG9y
XG4iKTsNCiAgICAgc2FuZWlfc2NzaV9jbG9zZShzY2FubmVyLT5kZXZpY2Ut
PnNmZCk7DQotICAgIHNjYW5uZXItPmRldmljZS0+c2ZkID0gLTE7DQorICAg
IHNjYW5uZXItPmRldmljZS0+c2ZkID0gTlVMTDsNCiAgIH0NCiANCiAgIHNj
YW5uZXItPmRldmljZS0+dGhyZWVfcGFzc19jb2xvciA9IDE7IC8qIHJlc2V0
IGNvbG9yIGluIGNvbG9yIHNjYW5uaW5nICovDQpAQCAtNDI1NCw3ICs0NjIx
LDcgQEANCiBzdGF0aWMgU0FORV9TdGF0dXMgYXR0YWNoX3NjYW5uZXIoY29u
c3QgY2hhciAqZGV2aWNlbmFtZSwgVW1heF9EZXZpY2UgKipkZXZwKQ0KIHsN
CiAgVW1heF9EZXZpY2UgKmRldjsNCi0gaW50IHNmZDsNCisgdXNiX2Rldl9o
YW5kbGUgKnNmZDsNCiAgaW50IGk7DQogDQogICBEQkcoREJHX3NhbmVfcHJv
YywiYXR0YWNoX3NjYW5uZXI6ICVzXG4iLCBkZXZpY2VuYW1lKTsNCkBAIC00
MzM4LDcgKzQ3MDUsNyBAQA0KICAgew0KICAgICBEQkcoREJHX2Vycm9yLCAi
RVJST1I6IGF0dGFjaF9zY2FubmVyOiBzY2FubmVyLWlkZW50aWZpY2F0aW9u
IGZhaWxlZFxuIik7DQogICAgIHNhbmVpX3Njc2lfY2xvc2UoZGV2LT5zZmQp
Ow0KLSAgICBkZXYtPnNmZD0tMTsNCisgICAgZGV2LT5zZmQ9TlVMTDsNCiAg
ICAgZnJlZShkZXYtPmJ1ZmZlclswXSk7DQogICAgIGZyZWUoZGV2KTsNCiAg
ICAgcmV0dXJuIFNBTkVfU1RBVFVTX0lOVkFMOw0KQEAgLTQzNjYsNyArNDcz
Myw3IEBADQogICBEQkcoREJHX2lucXVpcnksIlxuIik7DQogDQogICBzYW5l
aV9zY3NpX2Nsb3NlKGRldi0+c2ZkKTsNCi0gIGRldi0+c2ZkPS0xOw0KKyAg
ZGV2LT5zZmQ9TlVMTDsNCiANCiAgIGRldi0+c2FuZS5uYW1lICAgPSBkZXYt
PmRldmljZW5hbWU7DQogICBkZXYtPnNhbmUudmVuZG9yID0gZGV2LT52ZW5k
b3I7DQpAQCAtNTYyNSw3ICs1OTkyLDcgQEANCiAgIG1lbXNldChzY2FubmVy
LCAwLCBzaXplb2YgKCpzY2FubmVyKSk7DQogDQogICBzY2FubmVyLT5kZXZp
Y2UgICAgICA9IGRldjsNCi0gIHNjYW5uZXItPmRldmljZS0+c2ZkID0gLTE7
DQorICBzY2FubmVyLT5kZXZpY2UtPnNmZCA9IE5VTEw7DQogDQogICBpZiAo
c2Nhbm5lci0+ZGV2aWNlLT5pbnF1aXJ5X0dJQiAmIDMyKQ0KICAgew0KQEAg
LTY2NjYsNyArNzAzMyw3IEBADQogDQogICBtb2RlID0gc2Nhbm5lci0+dmFs
W09QVF9NT0RFXS5zOw0KIA0KLSAgaWYgKHNjYW5uZXItPmRldmljZS0+c2Zk
IDwgMCkgICAvKiBmaXJzdCBjYWxsLCBkb25gdCBydW4gdGhpcyByb3V0aW5l
IGFnYWluIG9uIG11bHRpIGZyYW1lIG9yIG11bHRpIGltYWdlIHNjYW4gKi8N
CisgIGlmIChzY2FubmVyLT5kZXZpY2UtPnNmZCA9PSBOVUxMKSAgIC8qIGZp
cnN0IGNhbGwsIGRvbmB0IHJ1biB0aGlzIHJvdXRpbmUgYWdhaW4gb24gbXVs
dGkgZnJhbWUgb3IgbXVsdGkgaW1hZ2Ugc2NhbiAqLw0KICAgew0KICAgICB1
bWF4X2luaXRpYWxpemVfdmFsdWVzKHNjYW5uZXItPmRldmljZSk7CQkJCQkJ
CQkgICAgLyogcmVzZXQgdmFsdWVzICovDQogDQpAQCAtNjY4NSw3ICs3MDUy
LDcgQEANCiAgICAgICB7DQogICAgICAgICBEQkcoREJHX2Vycm9yLCJFUlJP
UjogVHJhbnNwYXJlbmN5IEFkYXB0ZXIgbm90IGF2YWlsYWJsZVxuIik7DQog
ICAgICAgICBzYW5laV9zY3NpX2Nsb3NlKHNjYW5uZXItPmRldmljZS0+c2Zk
KTsNCi0gICAgICAgIHNjYW5uZXItPmRldmljZS0+c2ZkPS0xOw0KKyAgICAg
ICAgc2Nhbm5lci0+ZGV2aWNlLT5zZmQ9TlVMTDsNCiAgICAgICAgcmV0dXJu
IFNBTkVfU1RBVFVTX0lOVkFMOw0KICAgICAgIH0NCiAgICAgfQ0KQEAgLTY3
MDMsNyArNzA3MCw3IEBADQogICAgICAgICB7DQogICAgICAgICAgIERCRyhE
QkdfZXJyb3IsIkVSUk9SOiBBdXRvbWF0aWMgRG9jdW1lbnQgRmVlZGVyIG5v
dCBhdmFpbGFibGVcbiIpOw0KICAgICAgICAgIHNhbmVpX3Njc2lfY2xvc2Uo
c2Nhbm5lci0+ZGV2aWNlLT5zZmQpOw0KLSAgICAgICAgIHNjYW5uZXItPmRl
dmljZS0+c2ZkPS0xOw0KKyAgICAgICAgIHNjYW5uZXItPmRldmljZS0+c2Zk
PU5VTEw7DQogICAgICAgICAgcmV0dXJuIFNBTkVfU1RBVFVTX0lOVkFMOw0K
ICAgICAgICAgfQ0KICAgICAgIH0NCkBAIC03MTIxLDcgKzc0ODgsNyBAQA0K
ICAgICBpZiAodW1heF9ncmFiX3NjYW5uZXIoc2Nhbm5lci0+ZGV2aWNlKSkN
CiAgICAgew0KICAgICAgIHNhbmVpX3Njc2lfY2xvc2Uoc2Nhbm5lci0+ZGV2
aWNlLT5zZmQpOw0KLSAgICAgIHNjYW5uZXItPmRldmljZS0+c2ZkPS0xOw0K
KyAgICAgIHNjYW5uZXItPmRldmljZS0+c2ZkPU5VTEw7DQogICAgICAgc2Nh
bm5lci0+c2Nhbm5pbmcgPSBTQU5FX0ZBTFNFOw0KICAgICAgIERCRyhEQkdf
d2FybmluZywiV0FSTklORzogdW5hYmxlIHRvIHJlc2VydmUgc2Nhbm5lcjog
ZGV2aWNlIGJ1c3lcbiIpOw0KICAgICAgcmV0dXJuIFNBTkVfU1RBVFVTX0RF
VklDRV9CVVNZOw0KQEAgLTczMDUsNyArNzY3Miw3IEBADQogICAgIHNjYW5u
ZXItPnNjYW5uaW5nID0gU0FORV9GQUxTRTsNCiAgICAgdW1heF9naXZlX3Nj
YW5uZXIoc2Nhbm5lci0+ZGV2aWNlKTsgLyogcmVwb3NpdGlvbiBhbmQgcmVs
ZWFzZSBzY2FubmVyICovDQogICAgIHNhbmVpX3Njc2lfY2xvc2Uoc2Nhbm5l
ci0+ZGV2aWNlLT5zZmQpOw0KLSAgICBzY2FubmVyLT5kZXZpY2UtPnNmZD0t
MTsNCisgICAgc2Nhbm5lci0+ZGV2aWNlLT5zZmQ9TlVMTDsNCiAgICByZXR1
cm4gU0FORV9TVEFUVVNfSU9fRVJST1I7DQogICB9DQogDQpkaWZmIC11IC1y
IHNhbmUtYmFja2VuZHMtMS4wLjYub3JnL2JhY2tlbmQvdW1heC5oIHNhbmUt
YmFja2VuZHMtMS4wLjYvYmFja2VuZC91bWF4LmgNCi0tLSBzYW5lLWJhY2tl
bmRzLTEuMC42Lm9yZy9iYWNrZW5kL3VtYXguaAlTdW4gSnVuIDE3IDE3OjQ5
OjE3IDIwMDENCisrKyBzYW5lLWJhY2tlbmRzLTEuMC42L2JhY2tlbmQvdW1h
eC5oCVR1ZSBOb3YgMjAgMjE6MzU6MTEgMjAwMQ0KQEAgLTU0LDYgKzU0LDcg
QEANCiAjIGluY2x1ZGUgInNhbmUvc2FuZWlfaXBjLmgiDQogI2VuZGlmDQog
DQorI2luY2x1ZGUgPHVzYi5oPg0KIA0KIC8qIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAq
Lw0KIC8qIENPTVBJTEVSIE9QVElPTlM6ICovDQpAQCAtMTg4LDEwICsxODks
MTAgQEANCiANCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KIA0KLQ0KIC8qIExJ
U1QgT0YgQVZBSUxBQkxFIFNDQU5ORVJTLCBUSEUgVkFMVUVTIExJU1RFRCBI
RVJFIEFSRSBUSEUgU0FNRSBGT1IgRElGRkVSRU5UIEFQUExJQ0FUSU9OUw0K
ICAgIFRIQVQgVVNFIFRIRSBTQU1FIERFVklDRSAqLw0KLSAgIA0KKw0KKw0K
IC8qIFVtYXhfRGV2aWNlIGNvbnRhaW5zIHZhbHVlcyByZWxldmFudCBmb3Ig
dGhlIGRldmljZSB0aGF0IGFyZSBub3QgaW50ZXJzdGluZyBmb3IgdGhlIHNh
bmUgaW50ZXJmYWNlICovDQogDQogdHlwZWRlZiBzdHJ1Y3QgVW1heF9EZXZp
Y2UNCkBAIC0yMzYsNyArMjM3LDcgQEANCiAjICBkZWZpbmUgQ0NEX2NvbG9y
X2JsdWUgIDINCiANCiAgIGNoYXIJCQkqZGV2aWNlbmFtZTsJCQkJCSAgICAg
ICAvKiBuYW1lIG9mIHRoZSBzY2FubmVyIGRldmljZSAqLw0KLSAgaW50CQkJ
c2ZkOwkJCQkJICAgLyogb3V0cHV0IGZpbGUgZGVzY3JpcHRvciwgc2Nhbm5l
ciBkZXZpY2UgKi8NCisgIHVzYl9kZXZfaGFuZGxlICpzZmQ7CQkJCQkgICAv
KiBvdXRwdXQgZmlsZSBkZXNjcmlwdG9yLCBzY2FubmVyIGRldmljZSAqLw0K
IA0KICAgY2hhcgkJCXZlbmRvcls5XTsJCQkJCQkJICAgICAvKiB3aWxsIGJl
IFVNQVggKi8NCiAgIGNoYXIJCQlwcm9kdWN0WzE3XTsJCQkJCSAgICAgIC8q
IGUuZy4gIlN1cGVyVmlzdGFfUzEyIiBvciBzbyAqLw0K
---171960392-1423184503-1006314472=:10970--