SPRUI30H November 2015 – May 2024 DRA745 , DRA746 , DRA750 , DRA756
The keyboard controller generates the KBD_IRQ interrupt signal connected to the IRQ_CROSSBAR_115 input. Each functional mode generates dedicated interrupt events (logged in the KBD_IRQSTATUS register) that can be masked using the KBD_IRQENABLE_CLR register or unmasked using the KBD_IRQENABLE_SET register.
The KBD_IRQSTATUS register is updated when the selected functional mode generates an interrupt event. However, the KBD_IRQ signal is asserted on the related event only if the corresponding bit is set to 0x1 in the KBD_IRQENABLE_SET register.
To reset the interrupt status bit, 1 must be written to the appropriate bit of the KBD_IRQSTATUS read/write register.
Figure 28-6 shows the different interrupt events generated in each keyboard controller functional mode and details the relationships between them.
Depending on the selected mode, some interrupt events cannot be generated.
While running in hardware-decoding mode, the keyboard controller performs automatic scans when not in IDLE state. When a key-press event occurs on the keyboard matrix, the keyboard controller leaves IDLE state and an interrupt event (the KBD_IRQSTATUS[0] IT_EVENT bit) is set after the timer counts down the debouncing delay. An IT_EVENT is generated when a key is pressed or released.
An IT_EVENT is generated regardless of the selected functional mode. If no time-out is set and no more keys are pressed, the keyboard controller returns to IDLE state.
If long-key detection mode is set when the timer counts down the long-key delay, an interrupt long key (the KBD_IRQSTATUS[1] IT_LONG_KEY bit) is generated. If the repeat mode is set, the IT_LONG_KEY interrupt is generated periodically every long-key delay.
A time-out can also be set in event detection or long-key detection mode. In this case, a time-out interrupt (the KBD_IRQSTATUS[2] IT_TIMEOUT bit) is generated after the time-out delay timer expires. After such an interrupt, the keyboard controller always returns to IDLE state.
No time-out can be set in repeat mode. Only a keyboard event can stop the periodic interrupt generation.