Re: DTS configuration of external interrupts on 8347
From: Richard Whitlock <hidden>
Date: 2008-07-24 15:07:32
Sean MacLennan wrote:
On Wed, 23 Jul 2008 15:58:38 +0100 "Richard Whitlock" [off-list ref] wrote:quoted
I have a small problem with a port of linux 2.6.26 to a custom board. Our board is almost identical to the Analogue & Micro asp 8347 board, so I'm using Kumar Gala's excellent fsl tree (thank you Kumar) as it already has a defconfig for the asp. Thanks also to Bryan O'Donoghue for pointing us in the direction of the asp port in the first place. The problem we have is I am unable to request an external interrupt. We have an FPGA which has an interrupt line - HW IRQ_0, so thats linux IRQ 48. I have added the following to the dts file: fpgaKFAF@0xF8000000 { interrupts = <48 8>; interrupt-parent = <&ipic>; } but whenever I call request_irq() it returns -ENOSYS. The driver loads fine, and the open function does very little - a call to ioremap() - which works, and a call to request_irq() which does not. Is there anything else I have to do to configure this interrupt?I don't think you have enough information in the dts. We do the same thing on the warp (you can look at the warp.dts): fpga@2,0 { compatible = "pika,fpga"; reg = <0x00000002 0x00000000 0x00001000>; interrupts = <0x18 0x8>; interrupt-parent = <&UIC0>; }; You need the compatible, maybe "kfaf,fpga", and I believe the reg entry although you could try without it. You then can use: of_find_compatible_node irq_of_parse_and_map request_irq platforms/44x/warp.c shows an example using the ad7414. Just change the ad7414 string to your compatible string. Cheers, Sean
Sean, Thanks for that - our original code had no call to irq_of_parse_and_map(). We've put that in, as well as a call to of_find_compatible_node(), and now everything works fine. We have also modified our dts file along the lines you suggested. Cheers, Richard.