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