using IRQ1 in mpc5121ads

sylvain louchez sylvain.louchez at gmail.com
Tue Mar 31 01:33:11 EST 2009


Hello, I'm a newbie looking for where the documentation and implementation
model can be found.

 

My custom driver is looking for an interrupt notification from the kernel -
and it registers in the /proc/interrupts file as expected when installed,
i.e.

$insmod custom_driver.ko gps_irq=<n>

**Note - this part's OK, I see the instance in /proc/interrupts after I load
it**

 

On the hardware side the actual signal is a 1 Hz pulse (from GPS) routed to
IRQ1 through the board's CPLD. This is the only interrupt on IRQ_1 so we can
keep the logic simple i.e. on IRQ1 we can just jump to the service routine
in a custom driver.

 

I understand 2 things have to be done:

 

1. create an entry in the dts file; I think we've got this understood
through advice already received - for example the new interrupt entry can be
created in the dts file - something like:

 

gps at 0 {      // there is no address so just make it 0

    compatible = "gps_interrupt";

    interrupts = <17 0x8>;         // 17 is irq1, 8 is level low, see
include/linux/irq.h for others

    interrupt-parent = < &ipic >;

};

 

2. but now we need to relate the actual interrupt to the virtual interrupt
called in the driver... by invoking the function irq_of_parse_and_map - but
we don't know how to do it - nor have we found how to do it in browsing
through the open source documentation

A secondary question: where to properly add this function call in the file
system?

 

Are we on the right track here? Is there sample/ tutorial code you could
point us to?

 

Thanks in advance for any pointers - documentation on these mechanisms,
sample code.

 

Sylvain Louchez

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20090330/bef88ed5/attachment.htm>


More information about the Linuxppc-dev mailing list