deebul nair wrote: > Hi all > > I am trying to use the external interrupts on the Powerpc architecture > MPC8542 . > > My problem is that my driver is trying to request the external > interrupt IRQ1, and I dont know what number use in INTR_NUM: > > request_irq(INTR_NUM, , , , ) > > As per the MPC85xx documentation > Documentation/powerpc/dts-bindings/fsl/mpic.txt > about the implementation of interrupts virtual numbers > the external interrupt virtual irq number for IRQ1 should be 1 > > but when i try to give INTR_NUM ins request_irq as 1 it gives error . > > When i use irq_create_mapping() it gives me output as 16.. and it registers > .. but the problem is it is not fixed > neither it gives interrupts . > when i remove and add it registers to some other addresses > > i even tried irq_of_parse_map() > > for_each_node_by_type(np,"interrupt-controller"){ > if(of_device_is_compatible(np,"chrp,open-pic")){ > found=np; > break; > } > } > > virq = irq_of_parse_and_map(found, irq); > > this always returns 0 > whatever may be the irq value.. > as a result the driver gives error for irq 0
Anyway the following path should be the correct path: request_irq(virq) | + virq = irq_of_parse_and_map(hw_irq) | + We get this from the dts file. So you should define the appropriate node for your device. Then convert your hw_irq to vir_irq via irq_of_parse_and_map() to pass that to reuest_irq() on your device driver. Sometime this process is wrapped by some functions so I recommend you refer to the files on the directory, arch/powerpc/sysdev/. But I think the root cause to your problem is that you cannot pass the proper arguments to irq_of_parse_and_map(). ------ unsigned int irq_of_parse_and_map(struct device_node *dev, int index) You should do this like the following: ------ struct device_node *np; unsigned int virq; np = of_find_compatible_node(NULL, NULL, "<the compatible property of your device node on dts>"); if (np) { irq_of_parse_and_map(np, 0); } request_irq(virq,......); Here I assume you have only one irq property so set 'index' as '0' on the function, irq_of_parse_and_map(). Cheers Tiejun > > > > > > ------------------------------------------------------------------------ > > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@lists.ozlabs.org > https://lists.ozlabs.org/listinfo/linuxppc-dev _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev