openpic_init() functionality

Eugene Surovegin ebs at ebshome.net
Mon Aug 1 13:44:28 EST 2005


On Mon, Aug 01, 2005 at 11:00:29AM +0900, Daniel Ann wrote:
> Hi folks,
> 
> Just been reading openpic_init() function and found something weird,
> so I thought I might turn to pro.
> It's a part where it initialises all external sources. Code goes
> something like this,
> [begin]
>     /* Init all external sources, including possibly the cascade. */
>     for (i = 0; i < NumSources; i++) {
>         int sense;
> 
>         if (ISR[i] == 0)
>             continue;
> [snip]
>       openpic_initirq(i, 8, i+offset, (sense & IRQ_POLARITY_MASK),
>               (sense & IRQ_SENSE_MASK));
> [end]
> 
> I can see what openpic_initirq does. But what I dont see is enable
> part. openpic_initirq only configures interrupt but does not enable
> it. And going thru the rest of the code, nothing calls
> openpic_enable_irq().
> Can somebody tell me how should these interrupts get enabled ?
> 
> Reason is, if I dont force openpic_enable_irq() after
> openpic_initirq(), then at the end of booting, I see none of my
> interrupts enabled. Im sure somewhere down the line it should get
> enabled, but where ?

It's enabled when somebody calls request_irq, for example.

Generic IRQ code is linked to OpenPIC implementation through 
'struct hw_interrupt_type open_pic'.

Next time, try adding printk to a function at question and you'll 
easily see that it's being called.

-- 
Eugene




More information about the Linuxppc-embedded mailing list