static unsigned int sys_irq_startup(struct irq_data *d) { // unsigned long chip_id; // unsigned long tmp_u32; unsigned int irq = d->irq; printk("in sys_irq_startup (irq: %d).\n",irq); #if 0 tmp_u32 = *(volatile unsigned long*)0xB8000000; chip_id = tmp_u32 >> 16; if (chip_id == 0x3602) // 3603 interrupt polarity is ok, do nothing { if (irq >= 40) { *(u32 *)(0xB800002C) |= (u32)(1<<(irq - 32 - sys_irq_base)); /* Set polarity */ } else { *(u32 *)(0xB8000028) |= (u32)(1<<(irq - sys_irq_base)); /* Set polarity */ } } #endif sys_irq_enable(d); return 0; }
static void sys_irq_end(struct irq_data *d) { //printk("in sys_irq_end (irq: %d).\n",irq); if(!(d->state_use_accessors & (IRQD_IRQ_DISABLED | IRQD_IRQ_INPROGRESS))) sys_irq_enable(d); }
static void sys_irq_end(unsigned int irq) { if(!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) sys_irq_enable(irq); }
static unsigned int sys_irq_startup(unsigned int irq) { sys_irq_enable(irq); return 0; }