Hello people, I have a little problem with the isr routine. The interrupt handler is installed and working fine, but I can not clear the interrupt flag in ICTL-Register.
Is that right way to get interrupt controller register ? Thanks in advance, Andreas Friesen Hier is my ISR-Handler and probe functions : static irqreturn_t mess_isr (int irq, void *data) { struct qxcpld_drvdata *drvdata ; drvdata = (struct qxcpld_drvdata *)data ; struct mpc52xx_intr __iomem *intr; int i ; u32 intr_ctrl; intr = drvdata->intr intr_ctrl = intr->ctrl ; intr_ctrl = in_be32(&intr->ctrl); intr_ctrl |= 0x04000000; out_be32 (&intr->ctrl,intr_ctrl); // set gpio .... return IRQ_HANDLED; } /* MPC5200 device tree match tables */ static struct of_device_id mpc52xx_pic_ids[] __initdata = { { .compatible = "fsl,mpc5200b-pic", }, { .compatible = "mpc5200-pic", }, {} }; static int __devinit qxcpld_of_probe (struct platform_device *ofdev) { ..... /* Remap the necessary zones */ np = of_find_matching_node(NULL, mpc52xx_pic_ids); drvdata->intr = of_iomap(np, 0); if (!drvdata->intr) panic(__FILE__ ": find_and_map failed on 'mpc5200-pic'. " "Check node !"); of_node_put (np); .... /* request irq */ drvdata->mess_irq = irq_of_parse_and_map(ofdev->dev.of_node,0); if (drvdata->mess_irq == NO_IRQ ) { dev_err (&ofdev->dev, "failed to attach interrupt\n"); goto reg_unmap ; } .... if ( request_irq( drvdata->mess_irq, qxcpld_mess_isr, IRQF_DISABLED|IRQF_SHARED, "qxcpld-mess-irq", (void *)drvdata ) ) { dev_err(&ofdev->dev, "Can't request irq\n") ; goto reg_unmap ; } ... } _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev