[Lcdproc] Fixing non portable code in picolcd

Markus Dolze bsdfan@nurfuerspam.de
Wed Sep 26 20:20:02 2007


--========GMX310671190837924462773
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

Hello,

I tried to fix the use of non portable libusb functions in the picolcd driver (usb_get_driver_np() and usb_detach_kernel_driver_np()).

Actually it ended in a rewrite of the USB initialization phase. It is now more similar to the code of other drivers using libusb (IOWarrior, bwct, lcd2usb).

As a side effect it does not core dump anymore if no picolcd device is connected.

As I do not have a picolcd device. So can someone test the attached patch, please?

Regards,
Markus Dolze

--========GMX310671190837924462773
Content-Type: application/octet-stream; name="patch-server__drivers__picolcd.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="patch-server__drivers__picolcd.c"

LS0tIC4vc2VydmVyL2RyaXZlcnMvcGljb2xjZC5jLm9yaWcJV2VkIFNlcCAyNiAxODoxMzoyNyAy
MDA3CisrKyAuL3NlcnZlci9kcml2ZXJzL3BpY29sY2QuYwlXZWQgU2VwIDI2IDIyOjE2OjM4IDIw
MDcKQEAgLTEwMiw3ICsxMDIsNiBAQAogfTsKIAogLyogUHJpdmF0ZSBmdW5jdGlvbiBkZWZpbml0
aW9ucyAqLwotc3RhdGljIHVzYl9kZXZfaGFuZGxlICpwaWNvbGNkX29wZW4odm9pZCk7CiBzdGF0
aWMgdm9pZCBwaWNvbGNkX3NlbmQodXNiX2Rldl9oYW5kbGUgKmxjZCwgdW5zaWduZWQgY2hhciAq
ZGF0YSwgaW50IHNpemUpOwogc3RhdGljIHZvaWQgcGljb2xjZF93cml0ZSh1c2JfZGV2X2hhbmRs
ZSAqbGNkLCBjb25zdCBpbnQgcm93LCBjb25zdCBpbnQgY29sLCBjb25zdCB1bnNpZ25lZCBjaGFy
ICpkYXRhKTsKIHN0YXRpYyB2b2lkIGdldF9rZXlfZXZlbnQgICh1c2JfZGV2X2hhbmRsZSAqbGNk
LCBsY2RfcGFja2V0ICpwYWNrZXQsIGludCB0aW1lb3V0KTsKQEAgLTExOCw2ICsxMTcsOCBAQAog
TU9EVUxFX0VYUE9SVCBpbnQgIHBpY29MQ0RfaW5pdChEcml2ZXIgKmRydnRoaXMpIHsKIAlQcml2
YXRlRGF0YSAqcGQ7CiAJaW50IHg7CisJc3RydWN0IHVzYl9idXMgKmJ1czsKKwlzdHJ1Y3QgdXNi
X2RldmljZSAqZGV2OwogCiAJcGQgPSAoUHJpdmF0ZURhdGEgKikgbWFsbG9jKHNpemVvZihQcml2
YXRlRGF0YSkpOwogCkBAIC0xMjcsNyArMTI4LDYyIEBACiAJaWYgKGRydnRoaXMtPnN0b3JlX3By
aXZhdGVfcHRyKGRydnRoaXMsIHBkKSkKIAkJcmV0dXJuIC0xOwogCi0JcGQtPmxjZCA9IHBpY29s
Y2Rfb3BlbigpOworCS8qIFRyeSB0byBmaW5kIHBpY29sY2QgZGV2aWNlICovCisJdXNiX2luaXQo
KTsKKwl1c2JfZmluZF9idXNzZXMoKTsKKwl1c2JfZmluZF9kZXZpY2VzKCk7CisKKwlwZC0+bGNk
ID0gTlVMTDsKKwlmb3IgKGJ1cyA9IHVzYl9nZXRfYnVzc2VzKCk7IGJ1cyAhPSBOVUxMOyBidXMg
PSBidXMtPm5leHQpIHsKKwkJZm9yIChkZXYgPSBidXMtPmRldmljZXM7IGRldiAhPSBOVUxMOyBk
ZXYgPSBkZXYtPm5leHQpIHsKKwkJCWlmICgoZGV2LT5kZXNjcmlwdG9yLmlkVmVuZG9yID09IHBp
Y29MQ0RfVkVORE9SKSAmJgorCQkJCShkZXYtPmRlc2NyaXB0b3IuaWRQcm9kdWN0ID09IHBpY29M
Q0RfREVWSUNFKSkgeworCQkJCQorCQkJCXJlcG9ydChSUFRfSU5GTywgIkZvdW5kIHBpY29MQ0Qg
b24gYnVzICVzIGRldmljZSAlcyIsIGJ1cy0+ZGlybmFtZSwgZGV2LT5maWxlbmFtZSk7CisJCQkJ
cGQtPmxjZCA9IHVzYl9vcGVuKGRldik7CisJCQkJZ290byBkb25lOworCQkJfQorCQl9CisJfQor
CWRvbmU6CisKKwlpZiAocGQtPmxjZCAhPSBOVUxMKSB7CisJCWRlYnVnKFJQVF9ERUJVRywgIiVz
OiBvcGVuaW5nIGRldmljZSBzdWNjZWVkZWQiLCBkcnZ0aGlzLT5uYW1lKTsKKworCQlpZiAodXNi
X3NldF9jb25maWd1cmF0aW9uKHBkLT5sY2QsIDApIDwgMCkgeworCQkJdXNiX2Nsb3NlKHBkLT5s
Y2QpOworCQkJcmVwb3J0KFJQVF9FUlIsICIlczogdW5hYmxlIHRvIHNldCBjb25maWd1cmF0aW9u
IiwgZHJ2dGhpcy0+bmFtZSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJdXNsZWVwKDEwMCk7CisK
KwkJaWYgKHVzYl9jbGFpbV9pbnRlcmZhY2UocGQtPmxjZCwgMCkgPCAwKSB7CisjaWZkZWYgTElC
VVNCX0hBU19ERVRBQ0hfS0VSTkVMX0RSSVZFUl9OUAorCQkJaWYgKCh1c2JfZGV0YWNoX2tlcm5l
bF9kcml2ZXJfbnAobGNkLCAwKSA8IDApIHx8CisJCQkJKHVzYl9jbGFpbV9pbnRlcmZhY2UocGQt
PmxjZCwgMCkgPCAwKSkgeworI2lmZGVmIExJQlVTQl9IQVNfR0VUX0RSSVZFUl9OUAorCQkJCWNo
YXIgZHJpdmVyWzEwMjRdOworCQkJCWlmICh1c2JfZ2V0X2RyaXZlcl9ucChsY2QsIDAsIGRyaXZl
ciwgc2l6ZW9mKGRyaXZlcikpID09IDApCisJCQkJCXJlcG9ydChSUFRfV0FSTklORywgIkludGVy
ZmFjZSAwIGFscmVhZHkgY2xhaW1lZCBieSAnJXMnIiwgZHJpdmVyKTsKKyNlbmRpZgorCQkJCXVz
Yl9jbG9zZShwZC0+bGNkKTsKKwkJCQlyZXBvcnQoUlBUX0VSUiwgIiVzOiB1bmFibGUgdG8gcmUt
Y2xhaW0gaW50ZXJmYWNlIiwgZHJ2dGhpcy0+bmFtZSk7CisJCQkgICAgICAgIHJldHVybiAtMTsK
KwkJCX0KKyNlbHNlCisJCQlyZXBvcnQoUlBUX0VSUiwgIiVzOiBmYWlsZWQgdG8gY2xhaW0gaW50
ZXJmYWNlIiwgZHJ2dGhpcy0+bmFtZSk7CisJCQl1c2JfY2xvc2UocGQtPmxjZCk7CisJCQlyZXR1
cm4gLTE7CisjZW5kaWYKKwkJfQorCisJCWlmICh1c2Jfc2V0X2FsdGludGVyZmFjZShwZC0+bGNk
LCAwKSA8IDApCisJCQlyZXBvcnQoUlBUX1dBUk5JTkcsICIlczogdW5hYmxlIHRvIHNldCBhbHRl
cm5hdGUgY29uZmlndXJhdGlvbiIsIGRydnRoaXMtPm5hbWUpOworCX0gZWxzZSB7CisJCXJlcG9y
dChSUFRfRVJSLCAiJXM6IG5vIGRldmljZSBmb3VuZCIsIGRydnRoaXMtPm5hbWUpOworCQlyZXR1
cm4gLTE7CisJfQkJCisJCiAJcGQtPndpZHRoICA9IDIwOyAvKiBoYXJkIGNvZGVkIChtZmcgc3Bl
YykgKi8KIAlwZC0+aGVpZ2h0ID0gMjsgIC8qIGhhcmQgY29kZWQgKG1mZyBzcGVjKSAqLwogCXBk
LT5pbmZvID0gInBpY29MQ0Q6IFN1cHBvcnRzIHRoZSBMQ0QgYXMgaW5zdGFsbGVkIG9uIHRoZSBN
MzAwIChodHRwOi8vd3d3Lm1pbmktYm94LmNvbS9NaW5pLUJveC1NMzAwLUxDRCkgIjsKQEAgLTYx
MSw1NiArNjY3LDYgQEAKIH0KIAogLyogUHJpdmF0ZSBmdW5jdGlvbnMgKi8KLQotc3RhdGljIHVz
Yl9kZXZfaGFuZGxlICpwaWNvbGNkX29wZW4odm9pZCkKLXsKLSAgICAKLQl1c2JfZGV2X2hhbmRs
ZSAqbGNkOwotICAgICAgICBzdHJ1Y3QgdXNiX2J1cyAqYnVzc2VzLCAqYnVzOwotCXN0cnVjdCB1
c2JfZGV2aWNlICpkZXY7Ci0gICAgICAgIGNoYXIgZHJpdmVyWzEwMjRdOwotICAgICAgICBpbnQg
cmV0OwotICAgIAotCWxjZCA9IE5VTEw7Ci0KLSAgICAgICAgZGVidWcoUlBUX0RFQlVHLCAicGlj
b2xjZDogc2Nhbm5pbmcgZm9yIGRldmljZXMuLi4iKTsKLQotCXVzYl9pbml0KCk7Ci0JdXNiX2Zp
bmRfYnVzc2VzKCk7Ci0JdXNiX2ZpbmRfZGV2aWNlcygpOwotCWJ1c3NlcyA9IHVzYl9nZXRfYnVz
c2VzKCk7Ci0KLQlmb3IgKGJ1cyA9IGJ1c3NlczsgYnVzOyBidXMgPSBidXMtPm5leHQpIHsKLQkJ
Zm9yIChkZXYgPSBidXMtPmRldmljZXM7IGRldjsgZGV2ID0gZGV2LT5uZXh0KSB7Ci0JCQlpZiAo
KGRldi0+ZGVzY3JpcHRvci5pZFZlbmRvciA9PSBwaWNvTENEX1ZFTkRPUikgJiYgKGRldi0+ZGVz
Y3JpcHRvci5pZFByb2R1Y3QgPT0gcGljb0xDRF9ERVZJQ0UpKSB7Ci0JCQkJZGVidWcoUlBUX0RF
QlVHLCAiRm91bmQgcGljb0xDRCBvbiBidXMgJXMgZGV2aWNlICVzIiwgYnVzLT5kaXJuYW1lLCBk
ZXYtPmZpbGVuYW1lKTsKLQkJCQlsY2QgPSB1c2Jfb3BlbihkZXYpOwotCQkJCXJldCA9IHVzYl9n
ZXRfZHJpdmVyX25wKGxjZCwgMCwgZHJpdmVyLCBzaXplb2YoZHJpdmVyKSk7Ci0JCQkJaWYgKHJl
dCA9PSAwKSB7Ci0JCQkJCWRlYnVnKFJQVF9ERUJVRywgIkludGVyZmFjZSAwIGFscmVhZHkgY2xh
aW1lZCBieSAnJXMnIGF0dGVtcHRpbmcgdG8gZGV0YWNoIGRyaXZlci4uLiIsIGRyaXZlcik7Ci0J
CQkJCWlmICh1c2JfZGV0YWNoX2tlcm5lbF9kcml2ZXJfbnAobGNkLCAwKSA8IDApIHsKLQkJCQkJ
CWRlYnVnKFJQVF9ERUJVRywgIkZhaWxlZCB0byBkZXRhY2ggJyVzJyBkcml2ZXIgISIsIGRyaXZl
cik7Ci0JCQkJCQlyZXR1cm4gTlVMTDsKLQkJCQkJfQotCQkJCX0KLQotCQkJCXVzYl9zZXRfY29u
ZmlndXJhdGlvbihsY2QsIDEpOwotCQkJCXVzbGVlcCgxMDApOwotCi0JCQkJaWYgKHVzYl9jbGFp
bV9pbnRlcmZhY2UobGNkLCAwKSA8IDApIHsKLQkJCQkJZGVidWcoUlBUX0RFQlVHLCAiRmFpbGVk
IHRvIGNsYWltIGludGVyZmFjZSAhIik7Ci0JCQkJCXJldHVybiBOVUxMOwotCQkJCX0KLQotCQkJ
CXVzYl9zZXRfYWx0aW50ZXJmYWNlKGxjZCwgMCk7Ci0JCQkJcmV0dXJuIGxjZDsKLQkJCX0KLQkJ
fQotCX0KLQkKLQlkZWJ1ZyhSUFRfREVCVUcsICJDb3VsZCBub3QgZmluZCBhIHBpY29MQ0QgISIp
OwotCXJldHVybiBOVUxMOwotfQogCiBzdGF0aWMgdm9pZCBwaWNvbGNkX3NlbmQodXNiX2Rldl9o
YW5kbGUgKmxjZCwgdW5zaWduZWQgY2hhciAqZGF0YSwgaW50IHNpemUpCiB7Cg==
--========GMX310671190837924462773--