ARM SMP cores are often associated with a GIC, providing per processor
interrupts (PPI), shared processor interrupts (SPI) and software
generated interrupts (SGI).
GIC driver called from device tree file. You can check the entry for same in your .dtsi file (arch/arm/boot/dts/imx6qdl.dtsi)
intc: interrupt-controller@0x00a01000 {
compatible = "arm,cortex-a9-gic";
#interrupt-cells = <3>;
interrupt-controller;
reg = <0x00a01000 0x1000>,
<0x00a00100 0x100>;
interrupt-parent = <&intc>;
};
You can make the entry for your driver in the device tree:
my_driver my_driver@0x0{
compatible = "eeti,egalax_ts";
interrupt-parent = <&intc>;
interrupts = <X Y Z>
};
X: 0 for SPI interrupts, 1 for PPI.
Y: interrupt number for the interrupt type.
Z: trigger type and level flags
You need to enable the interrupts(which you mentioned above) from your driver through function:
request_irq(IRQ_NUM, my_interrupt_handler,IRQ_FLAG, "my_driver", my_dev);
Once your interrupt will be register then you can see the entry for the same in cat /proc/interrupts.
To distribute your interrupt to core 0 then you have to bind it to core 0.
[root@maverick]# echo 1 > /proc/irq/24/smp_affinity
You can varify the same with
[root@maverick]# cat /proc/irq/24/smp_affinity
00000001
For more understanding about GIC have a look into you mainline kernel
Documentation/devicetree/bindings/arm/gic.txt