Dears,
I want test gpio interrput function on 816x/389x EVM Rev-J, but that can't work, what's wrong for our set as below? (using GPIO0[24] pin)
1. Set CM_ALWON_GPIO_0_CLKCTRL :
(*(volatile uint32_t*)(0x4818155C) = 0x00000102;
2. // Pull Up & Enable
__raw_writel(0x00000012, GPIO_0_24_PINCTRL199);
3. /* Input */
__raw_writel(PIN24, (GPIO0_BASE+GPIO_OE));
4. // GPIO_IRQSTATUS_SET_0
__raw_writel(PIN24, (GPIO0_BASE+GPIO_IRQSTATUS_SET_0));
5. // GPIO_FALLINGDETECT
__raw_writel(PIN24, (GPIO0_BASE+GPIO_FALLINGDETECT));
6. // GPIO_DEBOUNCENABLE
__raw_writel(PIN24, (GPIO0_BASE+GPIO_DEBOUNCENABLE));
7. // GPIO_DEBOUNCINGTIME
__raw_writel(150, (GPIO0_BASE+GPIO_DEBOUNCINGTIME));
8. INTCPS_MIR_CLEAR3 = 0x01; /*GPIOINT0A = 96*/
9. (*(volatile uint32_t*)( INTCPS_ILR_BASE + (0x180) )) |= ((0x1F-2)<<2);
void IRQHandler ( void )
{
if( (INTCPS_SIR_IRQ) == GPIOINT0A )
{
GPIO0A_ISR();
__raw_writel(PIN24, (GPIO0_BASE+GPIO_IRQSTATUS_0));
}
}
void GPIO0A_ISR(void)
{
INTCPS_CONTROL = 0x1; /* re-enable IRQ */
}
After set, short gpio0_24 pin and ground pin, I can't get any response in the IRQHandler.