tie-fei.zang at freescale.com
Thu Oct 26 17:59:38 EST 2006
On Wed, 2006-10-25 at 21:45, Benjamin Herrenschmidt wrote:
> On Wed, 2006-10-25 at 17:31 +0800, Zang Roy-r61911 wrote:
> > On Wed, 2006-10-25 at 13:20, Benjamin Herrenschmidt wrote:
> > >
> > > Cannot be replaced by:
> > >
> > > pci_read_irq_line(dev);
> > When I use pci_read_irq_line(), the pci interrupt number exceeds the
> > limit of mpic-> irq_count. my mpic->irq_count = 0x18, which is
> > from on chip register.
> > mpic_host_map() can not return successful value.
> That is not normal... Something must be wrong with your code or your
> DT... can you get more details about what precisely is happening in
> cases ?
I think I have gotten the point. For tsi108/9, there are 24 internal
interrupt. PCI/INTA to PCI/INTD are routed to interrupt 23 with a
special mechanism on the chip. INTA to INTD are assiged to nubmer 36 to
39, which are exceed the nubmer irq number assigned in mpic_alloc().
This cause abnormal return in function pci_read_irq_line().
I have worked out a patch. after a test, I will publish it.
More information about the Linuxppc-dev