Hi all, I have merged rc2 and some improvements, mainly for the Pyra.
The most notable thing is that I have added a hack suggested by Andrey to enable the interrupt gpio input of the tca6424 that comes from the ts3a227 headset switch.
Details: the tca6424 is a 24 bit gpio expander connected through I2C and it can detect changes on each of the gpios and trigger an interrupt gpio (gpio3_76 on EVM and gpio6_161 on Pyra) of the OMAP5.
Device tree sets up the tca6424 to pass this omap5 gpio interrupt to the tca6424 driver (pca953x.c) and this driver detects which input has changed and should then forward the interrupt to the driver associated with that gpio. In our case the ts3a227 asks through the device tree to receive these interrupt notifications.
Unfortunately this does not work.
The probe function of the ts3a227 correctly identifies the interrupt in DT, but the bit mask in the tca6424 driver is not set to make the tca6424 interrupt handler recognize the change as an interrupt.
I have added a really dirty hack [1] to enable this mask in the tca6424 probe function and then, the interrupt is partially recognised. But it is not forwarded to the interrupt handler of the ts3a227.
So I suspect that the setup of the tca6424 as an interrupt controller is missing something.
Anyways, with this workaround I was able to debug the ts3a227 hardware so that inserting or unplugging a headset makes the tca6424 driver (but not yet the ts3a227 driver) do some printk I have added [2].
This means that the hardware will be ok and we only have to fix the tca6424 driver to do what it promises as interrupt controller.
The latest kernel is available for testing/comments through:
http://download.goldelico.com/letux-kernel/letux-4.9-rc2/
BR, Nikolaus
[1]: http://git.goldelico.com/?p=gta04-kernel.git;a=commit;h=386b14b9bc17ab7ef07c... [2]: http://git.goldelico.com/?p=gta04-kernel.git;a=commit;h=3b091d7ea2c2c3a1d279...