Hey Experts
Got one basic question,
My IP generates edge trigger interrupt only , Can I program GIC to have level trigger IT
and vice versa
Thanks
uditknit said:But this can not convert the type of interrupt , correct ?
Correct. You need to configure the GIC to match how the device is driving the interrupt signal.
uditknit said:1) If IP generates level trigger interrupt then GIC can be used as level or edge both
No - that would likely cause you problems.
Let's take the Generic Timer as an example. The timer's interrupt uses level semantics and the interrupt is driven when:
Timer Condition Met: Comparator <= System Count
The timer interrupt is cleared by either disabling the timer or updating the comparator value to a bigger number.
Now imagine the timer goes off at time X:
Now this is the potentially problematic part - you'd assume that the new comparator value was enough into the future that the timer's interrupt condition was not met. But that's not guaranteed and there are reasons why it might not be true.
So let's assume that in this case the new comparator value means the timer IS STILL met and therefore the interrupt signal IS STILL asserted
And now we have a problem. The timer "thinks" it is sending an interrupt to the GIC, as it's asserting a level-sensitive signal. The GIC "thinks" there is no pending interrupt, as it "thinks" the signal is edge-triggered and it's only seen one edge.
Really the message is - software needs to program the GIC to match the sending devices. Having a miss-match will likely cause you interesting problems to debug
Thank you for answering, you made my day :)