Date: Tue, 13 May 2014 22:26:12 +0100 From: Maxim Ignatenko <gelraen.ua@gmail.com> To: Ruslan Bukin <br@bsdpad.com> Cc: freebsd-hackers@freebsd.org Subject: Re: Keyboard drivers, polling vs. non-polling mode Message-ID: <CABWTX-a79Y=zg8VcTcYsOJjB7JmuO=GSHYcyDTDSG8NO7UUCQw@mail.gmail.com> In-Reply-To: <CABWTX-Z7Kh1QHCgBeVs6NGzDkfYRCtfctJ5oij-Og5POqB5jEA@mail.gmail.com> References: <CABWTX-YViLKRS62cuWcJh=Ma_n3TjU2EEaAcijBzSFXGqiuMDQ@mail.gmail.com> <20140513084008.GA71115@machdep.com> <CABWTX-Z7Kh1QHCgBeVs6NGzDkfYRCtfctJ5oij-Og5POqB5jEA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--e89a8f3baa07d546e204f94eb7eb Content-Type: text/plain; charset=UTF-8 On 13 May 2014 11:17, Maxim Ignatenko <gelraen.ua@gmail.com> wrote: > On 13 May 2014 09:40, Ruslan Bukin <br@bsdpad.com> wrote: >> On Sun, May 11, 2014 at 11:33:42PM +0100, Maxim Ignatenko wrote: >>> Hello, >>> >>> I'm trying trying to get keyboard working in DDB on HP Chromebook 11 (ARM). >>> br@ said that it doesn't work there because polling mode is not implemented yet. >>> Where can I read about the difference between polling and non-polling >>> modes (and about keyboard drivers in general)? >>> sys/dev/kbd/kbdreg.h describes some structures and method signatures, >>> but I have no clue what is the expected behaviour of those methods. >>> >>> My current guess is that in polling mode keyboard driver just queues >>> up all the input coming from keyboard and then gives it to consumer >>> upon request, while in non-polling mode it invokes some callback >>> instead of queueing. But I cannot find any documentation to confirm or >>> disprove that. >>> >> >> Chrome Embedded Controller (EC) provides interrupt (KB_GPIO_INT pin, active low) >> reporting that there are pending data and you need to read the data using >> ec_command(..). After all data was read, pin comes to 1 (not active). >> >> We have no interrupts in KDB, so you have to check pin status manually and >> if status == 0 (active) then read new data. >> >> Probably you can start with patch attached (I did't tested). > > Thanks, I've tried something like that, except with invoking > ec_command immediately and comparing returned state to previous one > rather than reading status bit from GPIO pin. > I keep getting "fdb0: i2c transfer returned 6" and none of the printfs > I've added to iicbus_transfer_gen in sys/dev/iicbus/iiconf.c. Here's what I have now. After booting kernel from flash drive I get kdb prompt (because of panic() call in exynos5_ehci.c) and when I press any key - screen gets spammed with "fdb0: i2c transfer returned 6". printfs added to dev/iicbus/*.c are not triggered. Any ideas? -- Best regards, Maxim --e89a8f3baa07d546e204f94eb7eb Content-Type: text/plain; charset=US-ASCII; name="chromebook.diff" Content-Disposition: attachment; filename="chromebook.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hv5pajnb0 SW5kZXg6IGFybS9zYW1zdW5nL2V4eW5vcy9jaHJvbWVfa2IuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhcm0v c2Ftc3VuZy9leHlub3MvY2hyb21lX2tiLmMJKHJldmlzaW9uIDI2NTkxNSkKKysrIGFybS9zYW1z dW5nL2V4eW5vcy9jaHJvbWVfa2IuYwkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBA CiAJaW50CQkJcm93czsKIAlpbnQJCQljb2xzOwogCWRldmljZV90CQlkZXY7CisJZGV2aWNlX3QJ CWdwaW9fZGV2OwogCXN0cnVjdCB0aHJlYWQJCSpzY19wb2xsX3RocmVhZDsKIAogCXVpbnQ4X3QJ CQkqc2Nhbl9sb2NhbDsKQEAgLTMzMSw2ICszMzIsNyBAQAogCXVpbnQxNl90IGtleTsKIAlpbnQg b2xkYml0OwogCWludCBuZXdiaXQ7CisJaW50IHN0YXR1czsKIAogCXNjID0ga2JkLT5rYl9kYXRh OwogCkBAIC0zNDcsNyArMzQ5LDIwIEBACiAJfTsKIAogCWlmIChzYy0+c2NfZmxhZ3MgJiBDS0Jf RkxBR19QT0xMSU5HKSB7Ci0JCS8qIFRPRE8gKi8KKwkJZm9yICg7OykgeworCQkJR1BJT19QSU5f R0VUKHNjLT5ncGlvX2RldiwgS0JfR1BJT19JTlQsICZzdGF0dXMpOworCQkJaWYgKHN0YXR1cyA9 PSAwKSB7CisJCQkJaWYgKGVjX2NvbW1hbmQoRUNfQ01EX01LQlBfU1RBVEUsIHNjLT5zY2FuLCBz Yy0+Y29scywKKwkJCQkgICAgc2MtPnNjYW4sIHNjLT5jb2xzKSkgeworCQkJCQlyZXR1cm4gKE5P S0VZKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisJCQlpZiAoIXdhaXQpIHsKKwkJCQlyZXR1 cm4gKE5PS0VZKTsKKwkJCX0KKwkJCURFTEFZKDEwMDApOworCQl9CiAJfTsKIAogCWZvciAoaSA9 IDA7IGkgPCBzYy0+Y29sczsgaSsrKSB7CkBAIC03MTAsNyArNzI1LDEyIEBACiAJaWYgKChlcnJv ciA9IHBhcnNlX2R0cyhzYykpICE9IDApCiAJCXJldHVybiBlcnJvcjsKIAotI2lmIDAKKwlzYy0+ Z3Bpb19kZXYgPSBkZXZjbGFzc19nZXRfZGV2aWNlKGRldmNsYXNzX2ZpbmQoImdwaW8iKSwgMCk7 CisJaWYgKHNjLT5ncGlvX2RldiA9PSBOVUxMKSB7CisJCWRldmljZV9wcmludGYoc2MtPmRldiwg ImNhbnQgZmluZCBncGlvX2RldlxuIik7CisJCXJldHVybiAoMSk7CisJfQorI2lmIDEKIAlkZXZp Y2VfcHJpbnRmKHNjLT5kZXYsICJLZXlib2FyZCBtYXRyaXggWyVkeCVkXVxuIiwKIAkgICAgc2Mt PmNvbHMsIHNjLT5yb3dzKTsKICNlbmRpZgpJbmRleDogYXJtL3NhbXN1bmcvZXh5bm9zL2V4eW5v czVfZWhjaS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIGFybS9zYW1zdW5nL2V4eW5vcy9leHlub3M1X2VoY2ku YwkocmV2aXNpb24gMjY1OTE1KQorKysgYXJtL3NhbXN1bmcvZXh5bm9zL2V4eW5vczVfZWhjaS5j CSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiAjZGVmaW5lCUdQSU9fT1VUUFVUCTEK ICNkZWZpbmUJR1BJT19JTlBVVAkwCiAjZGVmaW5lCVBJTl9VU0IJCTE2MQorI2RlZmluZSBQSU5f UkVTRVRfSFVCICAgMTgxCiAKIC8qIFBXUiBjb250cm9sICovCiAjZGVmaW5lCUVYWU5PUzVfUFdS X1VTQkhPU1RfUEhZCQkweDcwOApAQCAtMTc5LDExICsxODEsMjMgQEAKIAlyZXR1cm4gKDApOwog fQogCitzdGF0aWMgdm9pZAorZG9fcGFuaWModm9pZCAqdW51c2VkKSB7CisJcGFuaWMoInBhbmlx IHJlcXVlc3RlZCIpOworfQorCiBzdGF0aWMgaW50CiBwaHlfaW5pdChzdHJ1Y3QgZXh5bm9zX2Vo Y2lfc29mdGMgKmVzYykKIHsKIAlpbnQgcmVnOworCWRldmljZV90IGdwaW9fZGV2OwogCisJLyog R2V0IHRoZSBHUElPIGRldmljZSwgd2UgbmVlZCB0aGlzIHRvIGdpdmUgcG93ZXIgdG8gVVNCICov CisJZ3Bpb19kZXYgPSBkZXZjbGFzc19nZXRfZGV2aWNlKGRldmNsYXNzX2ZpbmQoImdwaW8iKSwg MCk7CisJaWYgKGdwaW9fZGV2ID09IE5VTEwpIHsKKwkJZGV2aWNlX3ByaW50Zihlc2MtPmRldiwg ImNhbnQgZmluZCBncGlvX2RldlxuIik7CisJCXJldHVybiAoMSk7CisJfQogCWdwaW9fY3RybChl c2MsIEdQSU9fSU5QVVQsIDEpOwogCiAJLyogc2V0IFVTQiBIT1NUIG1vZGUgKi8KQEAgLTIwMCwy MCArMjE0LDQ1IEBACiAJICAgIEhPU1RfQ1RSTF9SRVNFVF9QSFlfQUxMIHwKIAkgICAgSE9TVF9D VFJMX1NJRERRIHwKIAkgICAgSE9TVF9DVFJMX1NVU1BFTkQgfAotCSAgICBIT1NUX0NUUkxfU0xF RVApOworCSAgICBIT1NUX0NUUkxfU0xFRVAgfCAoMTw8OSkpOwogCiAJcmVnIHw9IChIT1NUX0NU UkxfQ0xLXzI0TUhaIHwKLQkgICAgSE9TVF9DVFJMX1JFU0VUX0xJTkspOworCSAgICBIT1NUX0NU UkxfUkVTRVRfTElOSyB8IDB4MDQpOwogCWJ1c19zcGFjZV93cml0ZV80KGVzYy0+aG9zdF9ic3Qs IGVzYy0+aG9zdF9ic2gsIDB4MCwgcmVnKTsKIAogCURFTEFZKDEwKTsKIAogCXJlZyA9IGJ1c19z cGFjZV9yZWFkXzQoZXNjLT5ob3N0X2JzdCwgZXNjLT5ob3N0X2JzaCwgMHgwKTsKLQlyZWcgJj0g fihIT1NUX0NUUkxfUkVTRVRfTElOSyk7CisJcmVnICY9IH4oSE9TVF9DVFJMX1JFU0VUX0xJTksg fCAweDA0KTsKIAlidXNfc3BhY2Vfd3JpdGVfNChlc2MtPmhvc3RfYnN0LCBlc2MtPmhvc3RfYnNo LCAweDAsIHJlZyk7CiAKKwlERUxBWSgyMCk7CisJcmVnID0gYnVzX3NwYWNlX3JlYWRfNChlc2Mt Pmhvc3RfYnN0LCBlc2MtPmhvc3RfYnNoLCAweDMwKTsKKwlyZWcgfD0gKDE8PDI5KSB8ICgxPDwy OCkgfCAoMTw8MjcpIHwgKDE8PDI2KTsKKwlidXNfc3BhY2Vfd3JpdGVfNChlc2MtPmhvc3RfYnN0 LCBlc2MtPmhvc3RfYnNoLCAweDMwLCByZWcpOworCisJaWYgKDEpIHsKKwkJR1BJT19QSU5fU0VU RkxBR1MoZ3Bpb19kZXYsIFBJTl9SRVNFVF9IVUIsIEdQSU9fUElOX09VVFBVVCk7CisJCUdQSU9f UElOX1NFVChncGlvX2RldiwgUElOX1JFU0VUX0hVQiwgR1BJT19QSU5fTE9XKTsKKwkJREVMQVko MTAwKTsKKwkJR1BJT19QSU5fU0VUKGdwaW9fZGV2LCBQSU5fUkVTRVRfSFVCLCBHUElPX1BJTl9I SUdIKTsKKwkJREVMQVkoNTAwMCk7CisKKwkJcmVnID0gYnVzX3NwYWNlX3JlYWRfNChlc2MtPmhv c3RfYnN0LCBlc2MtPmhvc3RfYnNoLCAweDEwKTsKKwkJcmVnICY9IH4oSE9TVF9DVFJMX1NJRERR IHwgSE9TVF9DVFJMX1NVU1BFTkQgfCBIT1NUX0NUUkxfU0xFRVApOworCQlyZWcgfD0gSE9TVF9D VFJMX1JFU0VUX1BIWTsKKwkJYnVzX3NwYWNlX3dyaXRlXzQoZXNjLT5ob3N0X2JzdCwgZXNjLT5o b3N0X2JzaCwgMHgxMCwgcmVnKTsKKwkJREVMQVkoMTApOworCQlyZWcgPSBidXNfc3BhY2VfcmVh ZF80KGVzYy0+aG9zdF9ic3QsIGVzYy0+aG9zdF9ic2gsIDB4MTApOworCQlyZWcgJj0gfkhPU1Rf Q1RSTF9SRVNFVF9QSFk7CisJCWJ1c19zcGFjZV93cml0ZV80KGVzYy0+aG9zdF9ic3QsIGVzYy0+ aG9zdF9ic2gsIDB4MTAsIHJlZyk7CisJfQorCURFTEFZKDUwMDAwKTsKKwogCWdwaW9fY3RybChl c2MsIEdQSU9fT1VUUFVULCAxKTsKIAorCXRpbWVvdXQoZG9fcGFuaWMsIE5VTEwsIDEwKTsKKwog CXJldHVybiAoMCk7CiB9CiAKSW5kZXg6IGFybS9zYW1zdW5nL2V4eW5vcy9leHlub3M1X2kyYy5j Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGFybS9zYW1zdW5nL2V4eW5vcy9leHlub3M1X2kyYy5jCShyZXZpc2lv biAyNjU5MTUpCisrKyBhcm0vc2Ftc3VuZy9leHlub3MvZXh5bm9zNV9pMmMuYwkod29ya2luZyBj b3B5KQpAQCAtOTMsNyArOTMsNyBAQAogI2RlZmluZQkgU0RBT1VUX0RFTEFZX00JMHgzCQkvKiBT REEgTGluZSBEZWxheSBMZW5ndGggKi8KICNkZWZpbmUJIFNEQU9VVF9ERUxBWV9TCTAKIAotI2lm ZGVmIERFQlVHCisjaWYgMQogI2RlZmluZSBEUFJJTlRGKGZtdCwgYXJncy4uLikgXAogCXByaW50 ZihmbXQsICMjYXJncykKICNlbHNlCkluZGV4OiBkZXYvaWljYnVzL2lpY2JiLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gZGV2L2lpY2J1cy9paWNiYi5jCShyZXZpc2lvbiAyNjU5MTUpCisrKyBkZXYvaWljYnVz L2lpY2JiLmMJKHdvcmtpbmcgY29weSkKQEAgLTQ1NiwxMCArNDU2LDE1IEBACiAJaW50IGVycm9y OwogCiAJZXJyb3IgPSBJSUNCQl9QUkVfWEZFUihkZXZpY2VfZ2V0X3BhcmVudChkZXYpKTsKLQlp ZiAoZXJyb3IpCisJaWYgKGVycm9yKSB7CisJCXByaW50ZigiSUlDQkJfUFJFX1hGRVIoZGV2aWNl X2dldF9wYXJlbnQoZGV2KSkgcmV0dXJuZWQgJWRcbiIsIGVycm9yKTsKIAkJcmV0dXJuIChlcnJv cik7CisJfQogCiAJZXJyb3IgPSBpaWNidXNfdHJhbnNmZXJfZ2VuKGRldiwgbXNncywgbm1zZ3Mp OworCWlmIChlcnJvcikgeworCQlwcmludGYoImlpY2J1c190cmFuc2Zlcl9nZW4gcmV0dXJuZWQg JWRcbiIsIGVycm9yKTsKKwl9CiAKIAlJSUNCQl9QT1NUX1hGRVIoZGV2aWNlX2dldF9wYXJlbnQo ZGV2KSk7CiAJcmV0dXJuIChlcnJvcik7CkluZGV4OiBkZXYvaWljYnVzL2lpY29uZi5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGRldi9paWNidXMvaWljb25mLmMJKHJldmlzaW9uIDI2NTkxNSkKKysrIGRldi9p aWNidXMvaWljb25mLmMJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw4ICszNjYsMTEgQEAKIAlpbnQg aSwgZXJyb3IsIGxlbnJlYWQsIGxlbndyb3RlLCBua2lkLCBycHN0YXJ0LCBhZGRyOwogCWRldmlj ZV90ICpjaGlsZHJlbiwgYnVzOwogCi0JaWYgKChlcnJvciA9IGRldmljZV9nZXRfY2hpbGRyZW4o ZGV2LCAmY2hpbGRyZW4sICZua2lkKSkgIT0gMCkKKwlkZXZpY2VfcHJpbnRmKGRldiwgImlpY2J1 c190cmFuc2Zlcl9nZW4gY2FsbGVkXG4iKTsKKwlpZiAoKGVycm9yID0gZGV2aWNlX2dldF9jaGls ZHJlbihkZXYsICZjaGlsZHJlbiwgJm5raWQpKSAhPSAwKSB7CisJCXByaW50ZigiZGV2aWNlX2dl dF9jaGlsZHJlbiByZXR1cm5lZCAlZFxuIiwgZXJyb3IpOwogCQlyZXR1cm4gKGVycm9yKTsKKwl9 CiAJaWYgKG5raWQgIT0gMSkgewogCQlmcmVlKGNoaWxkcmVuLCBNX1RFTVApOwogCQlyZXR1cm4g KEVJTyk7CkBAIC0zODMsMjEgKzM4NiwyNyBAQAogCQkJYWRkciAmPSB+TFNCOwogCiAJCWlmICgh KG1zZ3NbaV0uZmxhZ3MgJiBJSUNfTV9OT1NUQVJUKSkgewotCQkJaWYgKHJwc3RhcnQpCisJCQlp ZiAocnBzdGFydCkgewogCQkJCWVycm9yID0gaWljYnVzX3JlcGVhdGVkX3N0YXJ0KGJ1cywgYWRk ciwgMCk7Ci0JCQllbHNlCisJCQkJaWYgKGVycm9yKSB7IHByaW50ZigiaWljYnVzX3JlcGVhdGVk X3N0YXJ0IHJldHVybmVkICVkXG4iLCBlcnJvcik7IH0KKwkJCX0gZWxzZSB7CiAJCQkJZXJyb3Ig PSBpaWNidXNfc3RhcnQoYnVzLCBhZGRyLCAwKTsKKwkJCQlpZiAoZXJyb3IpIHsgcHJpbnRmKCJp aWNidXNfc3RhcnQgcmV0dXJuZWQgJWRcbiIsIGVycm9yKTsgfQorCQkJfQogCQl9CiAKIAkJaWYg KGVycm9yKQogCQkJYnJlYWs7CiAKLQkJaWYgKG1zZ3NbaV0uZmxhZ3MgJiBJSUNfTV9SRCkKKwkJ aWYgKG1zZ3NbaV0uZmxhZ3MgJiBJSUNfTV9SRCkgewogCQkJZXJyb3IgPSBpaWNidXNfcmVhZChi dXMsIG1zZ3NbaV0uYnVmLCBtc2dzW2ldLmxlbiwKIAkJCSAgICAmbGVucmVhZCwgSUlDX0xBU1Rf UkVBRCwgMCk7Ci0JCWVsc2UKKwkJCWlmIChlcnJvcikgeyBwcmludGYoImlpY2J1c19yZWFkIHJl dHVybmVkICVkXG4iLCBlcnJvcik7IH0KKwkJfSBlbHNlIHsKIAkJCWVycm9yID0gaWljYnVzX3dy aXRlKGJ1cywgbXNnc1tpXS5idWYsIG1zZ3NbaV0ubGVuLAogCQkJICAgICZsZW53cm90ZSwgMCk7 CisJCQlpZiAoZXJyb3IpIHsgcHJpbnRmKCJpaWNidXNfd3JpdGUgcmV0dXJuZWQgJWRcbiIsIGVy cm9yKTsgfQorCQl9CiAKIAkJaWYgKCEobXNnc1tpXS5mbGFncyAmIElJQ19NX05PU1RPUCkpIHsK IAkJCXJwc3RhcnQgPSAwOwpAQCAtNDA2LDUgKzQxNSw2IEBACiAJCQlycHN0YXJ0ID0gMTsJLyog TmV4dCBtZXNzYWdlIGdldHMgcmVwZWF0ZWQgc3RhcnQgKi8KIAkJfQogCX0KKwlpZiAoZXJyb3Ip IHtwcmludGYoImlpY2J1c190cmFuc2Zlcl9nZW4gcmV0dXJucyAlZFxuIiwgZXJyb3IpO30KIAly ZXR1cm4gKGVycm9yKTsKIH0KCg== --e89a8f3baa07d546e204f94eb7eb--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CABWTX-a79Y=zg8VcTcYsOJjB7JmuO=GSHYcyDTDSG8NO7UUCQw>