On Tue, 2008-09-23 at 13:08 +0200, Joakim Tjernlund wrote: > On Tue, 2008-09-23 at 11:08 +0200, Andre Schwarz wrote: > > I can only tell how I do on MPC834x : > > > > Table 8-6. IVEC/CVEC/MVEC Field Definition > > > > Interrupt ID Number Interrupt Meaning > > 17 IRQ1 > > 18 IRQ2 > > 19 IRQ3 > > 20 IRQ4 > > 21 IRQ5 > > 22 IRQ6 > > 23 IRQ7 > > 48 IRQ0 > > > > > > Given this I can use this dts section for PCI devices connected @ IRQ0 > > and IRQ1 > > > > interrupt-map = <0x5800 0 0 1 &ipic 0x30 0x8 > > 0x6000 0 0 1 &ipic 0x11 0x8 > > 0x6000 0 0 2 &ipic 0x11 0x8>; > > > > You should be able to use IRQ-Nr 18-20 for IRQ2-4. > > Yes, that makes sense. Thanks. > > Jocke
OK, finally figured it out, see below, but I get a SEGV if I use IRQ_TYPE_EDGE_FALLING as below. IRQ_TYPE_EDGE_FALLING works. info->irq = irq_create_mapping(NULL, 19); /* IRQ3 */ printk(KERN_ERR "IRQ map from %d to %ld\n", 19, info->irq); info->irq_flags = IRQ_TYPE_EDGE_FALLING; pdev = platform_device_register_simple("uio_irq", 3, r, 0); if (IS_ERR(pdev)) { ret = PTR_ERR(pdev); printk("uio_irq: simple returned :%d\n", ret); goto err_out; } if ((ret = uio_register_device(&pdev->dev, info))) { printk("uio_register_device: returned :%d\n", ret); goto err_out; } The SEGV is in kernel/irq/manage.c, around line 375. Both desc->chip->enable and desc->chip->startup are NULL: if (!(desc->status & IRQ_NOAUTOEN)) { desc->depth = 0; desc->status &= ~IRQ_DISABLED; if (desc->chip->startup) desc->chip->startup(irq); else desc->chip->enable(irq); } else What am I missing? Kernel is 2.6.25 Jocke _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev