* Additional IRQ handlers in ppc4xx_init_IRQ()
@ 2001-10-23 7:10 David Müller (ELSOFT AG)
2001-10-23 18:32 ` Dan Malek
0 siblings, 1 reply; 3+ messages in thread
From: David Müller (ELSOFT AG) @ 2001-10-23 7:10 UTC (permalink / raw)
To: linuxppc-embedded
Hello
I have a question regarding the registration of additional IRQ handlers
for a PPC405GP based board. The board uses the PIC inside the PIIX4 too,
so i have set NR_BOARD_IRQ to 16 in my board specific include file and
extended ppc4xx_init_IRQ as follows:
static void __init
ppc4xx_init_IRQ(void)
{
int i;
ppc4xx_pic_init();
#if !defined(CONFIG_PIP405) && !defined(CONFIG_MIP405)
for (i = 0; i < NR_IRQS; i++)
irq_desc[i].handler = ppc4xx_pic;
#else
/* MPL PIP405 / MIP405 uses PIIX4 PIC too */
for (i = 0; i < NR_AIC_IRQS; i++)
irq_desc[i].handler = ppc4xx_pic;
for (i = NR_AIC_IRQS; i < NR_IRQS; i++)
irq_desc[i].handler = &i8259_pic;
i8259_pic_irq_offset = NR_AIC_IRQS;
i8259_init();
request_irq(ISA_BRIDGE_INT, pip405_mip405_i8259_action, 0,
"i8259 cascade", NULL);
#endif
return;
}
Perhaps something like the following would be a better solution:
static void __init
ppc4xx_init_IRQ(void)
{
int i;
ppc4xx_pic_init();
for (i = 0; i < NR_IRQS; i++)
irq_desc[i].handler = ppc4xx_pic;
#if defined(CONFIG_IRQ_FIXUP)
board_fixup_irq();
#endif
return;
}
Which is the way to go?
Dave
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: Additional IRQ handlers in ppc4xx_init_IRQ()
2001-10-23 7:10 Additional IRQ handlers in ppc4xx_init_IRQ() David Müller (ELSOFT AG)
@ 2001-10-23 18:32 ` Dan Malek
2001-10-24 9:26 ` David Müller (ELSOFT AG)
0 siblings, 1 reply; 3+ messages in thread
From: Dan Malek @ 2001-10-23 18:32 UTC (permalink / raw)
To: David Müller; +Cc: linuxppc-embedded
"David Müller (ELSOFT AG)" wrote:
> I have a question regarding the registration of additional IRQ handlers
> for a PPC405GP based board.
Where are Matt's changes for the Tivo? It would address this and give
us another example of how this should be structured.
> extended ppc4xx_init_IRQ as follows:
This is not an appealing solution. We should change ppc4xx_pic_init()
to initialize the internal interrupt controller irq descriptor, and then
create a standard board initialization call for board specific changes.
> static void __init
> ppc4xx_init_IRQ(void)
> {
> int i;
>
> ppc4xx_pic_init();
>
+ ppc4xx_pic_board_init();
> return;
> }
>
The '...board_init()' function can be empty for those boards that don't
require any additional controller initialization.
> for (i = 0; i < NR_IRQS; i++)
> irq_desc[i].handler = ppc4xx_pic;
The NR_IRQS should represent the total number of interrupts across all
controllers. The pic_init() should change this loop to initialize either
NR_AIC or NR_UIC depending upon a 403 or 405 interrupt controller. No
#ifdefs necessary.
Thanks.
-- Dan
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: Additional IRQ handlers in ppc4xx_init_IRQ()
2001-10-23 18:32 ` Dan Malek
@ 2001-10-24 9:26 ` David Müller (ELSOFT AG)
0 siblings, 0 replies; 3+ messages in thread
From: David Müller (ELSOFT AG) @ 2001-10-24 9:26 UTC (permalink / raw)
To: Dan Malek; +Cc: linuxppc-embedded
Dan Malek wrote:
> "David Müller (ELSOFT AG)" wrote:
>
>
>>I have a question regarding the registration of additional IRQ handlers
>>for a PPC405GP based board.
>>
>
> Where are Matt's changes for the Tivo? It would address this and give
> us another example of how this should be structured.
>
>
>
>>extended ppc4xx_init_IRQ as follows:
>>
>
> This is not an appealing solution. We should change ppc4xx_pic_init()
> to initialize the internal interrupt controller irq descriptor, and then
> create a standard board initialization call for board specific changes.
>
>
>
>>static void __init
>>ppc4xx_init_IRQ(void)
>>{
>> int i;
>>
>> ppc4xx_pic_init();
>>
>>
> + ppc4xx_pic_board_init();
>
>> return;
>>}
>>
>>
>
> The '...board_init()' function can be empty for those boards that don't
> require any additional controller initialization.
>
>
>
>> for (i = 0; i < NR_IRQS; i++)
>> irq_desc[i].handler = ppc4xx_pic;
>>
>
> The NR_IRQS should represent the total number of interrupts across all
> controllers. The pic_init() should change this loop to initialize either
> NR_AIC or NR_UIC depending upon a 403 or 405 interrupt controller. No
> #ifdefs necessary.
>
This seems to be pretty much the same as my second proposal (except for the
#defines) if i understand you correctly.
Dave
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2001-10-24 9:26 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2001-10-23 7:10 Additional IRQ handlers in ppc4xx_init_IRQ() David Müller (ELSOFT AG)
2001-10-23 18:32 ` Dan Malek
2001-10-24 9:26 ` David Müller (ELSOFT AG)
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.