[PATCH 1/5] ARM: gic: Add hooks for architecture specific extensions
From: Colin Cross <hidden>
Date: 2011-01-25 03:03:42
Also in:
linux-omap
On Mon, Jan 24, 2011 at 12:51 AM, Santosh Shilimkar [off-list ref] wrote:
Few architectures combine the GIC with an external interrupt controller. On such systems it may be necessary to update both the GIC registers and the external controller's registers to control IRQ behavior. This can be addressed in couple of possible methods. ?1. ? ? Export common GIC routines along with 'struct irq_chip gic_chip' ? ? ? ?and allow architectures to have custom function by override. ?2. ? ? Provide architecture specific function pointer hooks ? ? ? ?within GIC library and leave platforms to add the necessary ? ? ? ?code as part of these hooks. First one might be non-intrusive but have few shortcomings like arch needs to have there own custom gic library. Locks used should be common since it caters to same IRQs etc. Maintenance point of view also it leads to multiple file fixes. The second probably is cleaner and portable. It ensures that all the common GIC infrastructure is not touched and also provides archs to address their specific issue.
This method would work for most of Tegra's needs, although we would need gic_set_type and gic_ack_irq to have arch extensions as well. However, it does not allow for irq_retrigger, which can be implemented on Tegra.