Re: [RFC PATCH v1 12/31] ARC: Interrupt Handling
From: Thomas Gleixner <hidden>
Date: 2012-11-12 20:08:11
Also in:
lkml
From: Thomas Gleixner <hidden>
Date: 2012-11-12 20:08:11
Also in:
lkml
On Wed, 7 Nov 2012, Vineet Gupta wrote:
+void __init init_IRQ(void)
+{
+ const int irq = TIMER0_IRQ;
+
+ /*
+ * Each CPU needs to register irq of it's private TIMER0.
+ * The APIs request_percpu_irq()/enable_percpu_irq() will not be
+ * functional, if we don't "prep" the generic IRQ sub-system with
+ * the following:
+ * -Ensure that devid passed to request_percpu_irq() is indeed per cpu
+ * -disable NOAUTOEN, w/o which the device handler never gets calledWhat sets NOAUTOEN in the first place? The core code definitely does not.
+ */ + irq_set_percpu_devid(irq); + irq_modify_status(irq, IRQ_NOAUTOEN, 0);
Aside of that we have irq_clear_status_flags() for this.
+ plat_init_IRQ(); +}
+int __init get_hw_config_num_irq(void)
How is that function used ?
+{
+ uint32_t val = read_aux_reg(ARC_REG_VECBASE_BCR);
+
+ switch (val & 0x03) {
+ case 0:
+ return 16;
+ case 1:
+ return 32;
+ case 2:
+ return 8;
+ default:
+ return 0;
+ }
+
+ return 0;
+}Thanks, tglx