Subject: Re: ARCH=ppc -> ARCH=powerpc : help needed for dts file

From: Philippe De Muyter <[email-masked]>
Date: Tue, 4 Mar 2008 09:34:47 +0100

Hi Ben,

On Tue, Mar 04, 2008 at 08:26:14AM +1100, Benjamin Herrenschmidt wrote:
> 
> > > Maybe your PCI interrupt-map is wrong...
> > 
> > Is the PCI-interrupt map that part of the dts file :
> > 
> >                 interrupt-map = <
> > 
> >                         /* IDSEL 0x02 */
> >                         1000 0 0 1 &mpic 1 1
> >                         1000 0 0 2 &mpic 2 1
> >                         1000 0 0 3 &mpic 3 1
> >                         1000 0 0 4 &mpic 4 1
> > 
> >                         /* IDSEL 0x03 */
> >                         1800 0 0 1 &mpic 4 1
> >                         1800 0 0 2 &mpic 1 1
> >                         1800 0 0 3 &mpic 2 1
> >                         1800 0 0 4 &mpic 3 1
> > 
> > 			...
> > 
> > I do not understand anything there :(
> 
> It's documented in booting-without-of.txt afaik... The interrupt-map
> goes along with the interrupt-map-mask. The later defines which bits of
> the map are relevant.

Maybe I should read my mail in time-of-arrival order :)

> 
> The first part of the map is 3 cells containing a PCI address, followed
> by a cell containing a PCI IRQ line (1=A....4=D). The next is the parent
> interrupt controller, followed by the IRQ specification, which for MPIC
> is the interrupt number on that controller, followed by an encoding of
> the interrupt polarity & trigger type (1 for level-low).
> 
> The first part, the PCI address, has a special format, which should be
> documented as well in the document I pointed out. For readability, we
> ommited the top 16 bits of the first cell, which are the address type
> and bus number, mostly irrelevant for interrupt mapping. The next bits
> are the device/function. Usually only the device part is unmasked.

1. Can all that info be found in /proc in a running system or even in the
sources, or do I need an hardware doc for that ?

2. Maybe you could explain the conversion between the kernel/lsusb notation
(0000:00:12.0, 0000:00:12.1, 0000:00:12.2)

or /proc/bus/pci notation :
0090    104cac46        35              9ffff000                       0                      0                0                       0                       0
                       0                    1000                       0                      0                0                       0                       0
                       0        yenta_cardbus
0091    104cac46        36              9fbfe000                       0                      0                0                       0                       0
                       0                    1000                       0                      0                0                       0                       0
                       0        yenta_cardbus
0092    104c802a        37              9f7fd800                9f7f8000                      0                0                       0                       0
                       0                     800                    4000                      0                0                       0                       0
                       0        ohci1394

and dts-notation ?

Thanks for listening

Philippe