Am Sun, 26 Jan 2014 17:48:17 +0100 hat "Dr. H. Nikolaus Schaller" hns@goldelico.com geschrieben:
Hi,
okay, I now connected the DragonAdaptor to the Pyra as well, with mixed results. Upgraded to the latest kernel.
As soon as it's connected, the serial shell spits out hundreds of messages: omap_i2c 4807a000.i2c: timeout waiting for bus ready
I guess that's what you're talking about in this post, right?
Nub buttons as well as shoulder buttons do work well, as they trigger characters.
What does NOT seem to work is mouse movement for the nubs. /proc/pandora is empty (should be nub0 and nub1 in there), and I also didn't find that anywhere else. I am not sure what settings the nubs are in and how I can change that.
Another thing I don't know about yet are the keyboard LEDs. Didn't find anything in userspace and they don't do anything on boot.
Is that what's expected?
Hi all, I have added the latest patches and now it works!
But only if I either add an alias for tca8418 - or modprobe tca8418_keypad.
So there is still some confusion in the driver binding/matching/loading.
I tried to fgrep for tca8418 in the whole source tree - but did only find references to tca8418_keypad. Including my device tree.
modprobe -c also only knows tca8418_keypad
But still the kernel reports:
root@gta04:~# more /sys/devices/ocp.3/4807a000.i2c/i2c-3/3-0034/name tca8418 root@gta04:~# root@more /proc/device-tree/ocp/i2c@4807a000/tca8418_keypad@34/name tca8418_keypad root@gta04:~#
I don't know where the name entry in /sys/devices comes from. So I start to think there is some hidden code to strip off the _keypad from the DT node name...
Maybe something in the i2c driver is forming the name "i2c:tca8418" *and* stripping off the _keypad from the DT node name. This would be an unexpected strange side-effect of choosing a driver file name with an underscore.
So I now understand why the 0006-add-tca8418_keypad-tca8418-alias.patch makes it work as a work-around. But I don't understand why we really should need it...
Ok, after some more grepping around I found this in drivers/of/base.c:
/**
- of_modalias_node - Lookup appropriate modalias for a device node
- @node: pointer to a device tree node
- @modalias: Pointer to buffer that modalias value will be
copied into
- @len: Length of modalias value
- Based on the value of the compatible property, this routine will
attempt
- to choose an appropriate modalias value for a particular device
tree node.
- It does this by stripping the manufacturer prefix (as delimited by
a ',')
- from the first entry in the compatible list property.
- This routine returns 0 on success, <0 on failure.
*/
So this means that the module name is finally formed by
"i2c:" + second_component_of(property("compatible"))
Therefore it is indeed "i2c:tca8418" what the DT loader looks for! And it is *not* the "name" property of the DT node which is what I had expected in my ignorance :)
Now, since the module has a different name, we need this alias and those people who made the driver "DT ready" did not recognise.
And I have added a comment to the device tree/driver.
Anyways, this it is a good piece of knowledge about the guts of the Linux kernel.
BR, Nikolaus
PS: sources and kernel binary are pushed _______________________________________________ Kernel mailing list Kernel@pyra-handheld.com http://pyra-handheld.com/cgi-bin/mailman/listinfo/kernel