Other Parts Discussed in Thread: TPS65217
We are using SDK version 06.00.00.07. We have the PMIC TPS65217 connected to an AM335x processor the same way as the Beaglebone schematic. The device runs on battery power and is put into standby when charging. The goal is to have the device wake up when the charging state changes.
The issue is that when the processor is waking up due to an interrupt from the PMIC, it gets an extreme number of errors. Two errors seem to come from the tps65217_charger driver, and one from the tps65217 driver itself.
Here is the error from the tps65217 driver:
[ 95.402258] PM: Wakeup source MPU_WAKE [ 95.405946] tps65217 0-0024: Failed to read IRQ status: -13 [ 96.414672] irq 54: nobody cared (try booting with the "irqpoll" option) [ 96.414708] CPU: 0 PID: 56 Comm: irq/54-tps65217 Tainted: G O 4.19.79-g525b6630e0 #1 [ 96.414719] Hardware name: Generic AM33XX (Flattened Device Tree) [ 96.414730] Backtrace: [ 96.414796] [<c010cb64>] (dump_backtrace) from [<c010ced4>] (show_stack+0x18/0x1c) [ 96.414821] r7:00000036 r6:dc5d8d00 r5:00000000 r4:dc5d8d00 [ 96.414850] [<c010cebc>] (show_stack) from [<c0911dd4>] (dump_stack+0x24/0x28) [ 96.414887] [<c0911db0>] (dump_stack) from [<c0171d40>] (__report_bad_irq+0x40/0x100) [ 96.414916] [<c0171d00>] (__report_bad_irq) from [<c0171b48>] (note_interrupt+0x114/0x29c) [ 96.414943] r9:dc776000 r8:dc008000 r7:00000036 r6:dc5d8d00 r5:00000000 r4:dc5d8d00 [ 96.414972] [<c0171a34>] (note_interrupt) from [<c016f118>] (handle_irq_event_percpu+0x80/0x88) [ 96.415000] r10:c0e03048 r9:dc776000 r8:dc008000 r7:00000000 r6:dc5d8d00 r5:00000002 [ 96.415014] r4:c0e03048 r3:00000000 [ 96.415040] [<c016f098>] (handle_irq_event_percpu) from [<c016f184>] (handle_irq_event+0x64/0x90) [ 96.415058] r6:00000001 r5:00000000 r4:dc5d8d00 [ 96.415087] [<c016f120>] (handle_irq_event) from [<c01729d4>] (handle_level_irq+0xc0/0x160) [ 96.415101] r5:00000000 r4:dc5d8d00 [ 96.415128] [<c0172914>] (handle_level_irq) from [<c016e120>] (generic_handle_irq+0x2c/0x3c) [ 96.415143] r5:00000000 r4:c0e4f480 [ 96.415168] [<c016e0f4>] (generic_handle_irq) from [<c016e900>] (__handle_domain_irq+0x5c/0xb0) [ 96.415211] [<c016e8a4>] (__handle_domain_irq) from [<c044024c>] (omap_intc_handle_irq+0x3c/0x94) [ 96.415239] r9:dc776000 r8:00000001 r7:dc777ecc r6:ffffffff r5:60000113 r4:c0e8358c [ 96.415270] [<c0440210>] (omap_intc_handle_irq) from [<c0101a0c>] (__irq_svc+0x6c/0xa8) [ 96.415283] Exception stack(0xdc777e98 to 0xdc777ee0) [ 96.415303] 7e80: 10065088 fa200088 [ 96.415332] 7ea0: dc5d8d00 dc777ee8 dc5d8d00 ffffe000 dc5d8d10 c0170440 00000001 00000000 [ 96.415361] 7ec0: c0e03048 dc777f0c dc777e98 dc777ee8 c0174d3c c01702d0 60000113 ffffffff [ 96.415376] r5:60000113 r4:c01702d0 [ 96.415405] [<c0170230>] (irq_finalize_oneshot.part.0) from [<c01704b8>] (irq_thread_fn+0x78/0x80) [ 96.415423] r6:00000000 r5:dc5d8d00 r4:dc758680 [ 96.415451] [<c0170440>] (irq_thread_fn) from [<c0170724>] (irq_thread+0x13c/0x234) [ 96.415472] r7:c0170440 r6:dc5d8d00 r5:ffffe000 r4:dc758680 [ 96.415499] [<c01705e8>] (irq_thread) from [<c0148918>] (kthread+0x158/0x160) [ 96.415526] r10:dc5e58e8 r9:c01705e8 r8:dc758680 r7:dc776000 r6:00000000 r5:dc7586c0 [ 96.415537] r4:dc758700 [ 96.415560] [<c01487c0>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c) [ 96.415573] Exception stack(0xdc777fb0 to 0xdc777ff8) [ 96.415592] 7fa0: 00000000 00000000 00000000 00000000 [ 96.415620] 7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 96.415643] 7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 96.415670] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c01487c0 [ 96.415680] r4:dc7586c0 [ 96.415688] handlers: [ 96.415713] [<1d6c9821>] irq_default_primary_handler threaded [<ca3d0912>] tps65217_irq_thread [ 96.415759] Disabling IRQ #54
Note: I modified the driver to only print the error once instead of spamming the error repeatedly, and the error is: tps65217 0-0024: Failed to read IRQ status: -13
When this error occurs, the interrupt becomes disabled and causes the wake-up to never occur again until the unit is restarted.
The other error that occurs if I suppress the error above is this: tps65217-charger tps65217-charger: tps65217_charger_irq: Error in reading reg 0xa
While this does not cause the interrupt to fail, it does cause a delay in wake-up due to this error spamming as it attempts to handle the interrupt.
Is there anything that can be done to eliminate these errors?
Thank you,
Jake