This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[TDA4VM] TDA4EVM GPIO Interrupt Generation Problem

Hi, in TDA4 TRM, 12.1.2.4.3 GPIO Interrupt and Event Generation, says that CPU can write GPIO data reg to trigger an interrupt. Since we are doing a real time notification in kernel, this mechanism is what we want. One module(maybe a module on another CPU) write a reg, then irq handler fires.

This is what I do with TDA4 EVM and ti-processor-sdk-linux-automotive-j7-evm-06_01_00_05

1) press SW10 USER1 button on the common processer board

2) cat /proc/interrupts, "GPIO Key USER1" with irq number 139 do has some interrupt event

3) devmem2 0x00600010, shows the GPIO0_0 connected with USER1 button is configured as in direction
4) devmem2 0x00600010 w 0xfffffffe, swith GPIO0_0 to out direction
5) devmem2 0x00600014 w 0x00 && devmem2 0x00600014 w 0x01, to toggle GPIO state
6) cat /proc/interrupts, "GPIO Key USER1" interrupt event counter has no change
7) press SW10 USER1 button
8) cat /proc/interrupts, "GPIO Key USER1", interrupt event counter increased


Would you please give me some hint about how to trigger a local interrupt with a write to GPIO data reg?

Or, is there any other regs that could trigger an interrupt when CPU do some write to them?

Thanks

  • Hi,

    I have tried to reproduce this.

    First, you cannot write to the GPIO_OUT_DATA register.

    You should use the GPIO_SET_DATA and GPIO_CLR_DATA registers to drive the value.

    However, I tried by writing to the SET/CLR registers, still the value does not reflect in the GPIO_IN_DATA register, no interrupt fired.

    That is because the signal might be driven high externally, since the external pull is high, setting it low from GPIO won't help.

    You should try this with some other PAD which is open and not pulled high/low externally.

    Regards,

    Nikhil D