The system we are developing has a TPS65910A connected to an AM3359 based on the setup described in the swcu093a User's Guide. After looking at the drivers for the tps65910 provided in the PSP Linux Kernel, I am not sure how exactly PMIC Interrupts are handled.
As far as I can tell the tp65910 driver correctly sets up a threaded interrupt handler and will call "handle_nested_interrupt" if any of the respective bits in INT_STS2_REG are set. At this point I get lost because "handle_nested_irq" depends on an irq_action and corresponding action->thread_func to be registered with that IRQ in order to actually do anything. I cannot see anywhere within the arch/arm/mach-omap2 or drivers/mfd folder where these corresponding irq_actions are registered for the any of the TI PMICs.
Now it would seem to me that the whole point of settings up the PMIC IRQs in this manner is so that you can take action when they occur. Section 4 of the aforementioned TPS/AM335x User's Guide seems to imply this. In our use case if the processor is Active and the PWR button is pressed momentarily I expect that the corresponding INT_STS_REG.PWRON_IT interrupt would trigger a Linux halt procedure.
Does the PSP kernel do anything like this to correctly handle PMIC events? If it does I cannot find it. Or does the tps driver just provide infrastructure so that a seperate user-supplied driver can handle the interrupts as they see fit?
I would appreciate any assistance you can provide in this matter.
Thanks,
Ali