When using dm365's keypad module, I came acourse a problem.
The key may become invalid after be pressed server times, then no matter press which key, it has no response.
By add some debug info, I found that the dm365_keypad never enter the interrupt again,and the keypad INTFLG
register always be 0x00000007 in this case, other registers are normal, as follow:
./readl 0x01c69400 0 a
00000 00000009 00000001 00000007 00000000
00010 00000005 00000002 00000001 0000FFFF
00020 0000FBFF 00000003
The corresponding bit of INTFLG register define as follow:
bit2 OFFFLG Key Data All Off Interrupt Flag
0 No interrupt
1 Interrupt
bit1 ONFLG Key Data On Interrupt Flag
0 No interrupt
1 Interrupt
bit0 CHNGFLG Key Data Change Interrupt Flag
0 No interrupt
1 Interrupt
when I clear the INTFLG register manully, the keypad module resume immediately.
I would like to know what cause the INTFLG register become 0x00000007?
Is it caused by new interrupt appear before the previous one be processed?
And why the dm365_keypad can't enter interrupt in this case?