Requesting a GPIO that hasn't been registered yet
Bill Gatliff
bgat at billgatliff.com
Wed Mar 31 14:05:01 EST 2010
Guys:
I'm sure this is a FAQ, but I can't seem to find the answer. I'm happy
to RTFM, if someone can please tell me where the FM is. :)
I'm adding device table support to gpio_keys. The target is an
MPC5200B. I have statements in my dts file that look like this:
...
i2c at 3d40 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
reg = <0x3d40 0x40>;
interrupts = <2 16 0>;
...
lext60: max7314 at 60 {
compatible = "maxim,max7314","phillips,pca953x";
reg = <0x60>;
gpio-controller;
#gpio-cells = <2>;
};
};
...
gpio-keys {
compatible = "gpio-keys";
encoder_button {
gpios = <&lext60 12 0>;
code = <28>;
type = <1>;
active-low = <0>;
wakeup = <0>;
debounce-interval = <0>;
rep = <0>;
};
};
In other words, the GPIO pin I'm using for the key is one of the bits on
my pca953x GPIO expander chip.
The above would all be great, except that I haven't come up with a way
to make sure that my encoder_button doesn't try to probe before lext60
is available. In fact, I'm consistently getting initialization in the
wrong order!
Eventually the GPIO expander chip gets plugged in, because I can see it
show up in sysfs. And what's really odd is, I recently made similar
mods to gpio_leds and they are working fine--- although the GPIO pin is
on a pca953x at address 20, instead of 60. I'm at a loss to explain why
one works, but the other doesn't. And I don't know how to really fix
this problem for good!
Any suggestions? Thanks!!
b.g.
--
Bill Gatliff
bgat at billgatliff.com
More information about the Linuxppc-dev
mailing list