Kernel crash while initialising PCI
Janaka Subhawickrama
JanakaS at optiscan.com
Fri Sep 5 10:31:55 EST 2008
> -----Original Message-----
> From: Scott Wood [mailto:scottwood at freescale.com]
> Sent: Thursday, 4 September 2008 3:15 AM
> To: Janaka Subhawickrama
> Cc: 'linuxppc-dev at ozlabs.org'
> Subject: Re: Kernel crash while initialising PCI
>
> On Wed, Sep 03, 2008 at 05:50:10PM +1000, Janaka Subhawickrama wrote:
> > My DTS file entries for PCI are as follows:
> >
> > pci at 8500 {
> > interrupt-map-mask = < // Mask the child
> UnitIrqSpec
> > //ff00 0 0 7
> > ffff ff ff f
> > >;
> > interrupt-map = <
> > // Child UnitIrqSpec, Parent
> PIC handle, Parent UnitIrqSpec
> > // PCI unit address (0000 0
> 0), Interrupt specifier IDSEL 0x0D (CRX board hard wired to IDSEL 13),
> > // parent Phandle,
> IRQ7=0x17 (jumper based) level sensitive(8)
> > //0d00 0 0 1 &ipic 17 8
> > 00006800 0 0 1 &ipic 17 8
> > >;
> > interrupt-parent = < &ipic >;
> > interrupts = <42 8>; //PCI1
> interrupt, level sensitive
> > bus-range = <0 0>; //Bus number
> and largest bus under this
> > /*
> > struct ranges_pci {
> > unsigned int pci_space;
> //Prefechable/relocatable .... IEEE1275
> > u64 pci_addr;
> > phys_addr_t phys_addr;
> > u64 size;
> > };
> > */
> > ranges = < 02000000 0 A0000000 A0000000 0
> 20000000
> > 01000000 0 D8000000 D8000000 0
> 01000000 >;
> > clock-frequency = <1FCA055>; //33333333Hz
> > #interrupt-cells = <1>; //PCI
> aparently uses 1
> > #size-cells = <2>; //Max of 2
> ints
> > #address-cells = <3>; //int size
> > reg = <8500 100>; //??
> > compatible = "fsl,mpc8349-pci";
> > device_type = "pci";
> > };
> >
> >
> > What am I doing wrong ?
>
> The PCI node needs to go under the root node, rather than under the soc
> node. Otherwise, the kernel will try to translate ranges through the
> IMMR
> window. In older kernels, there was a bug in the PCI code that let you
> get
> away with this.
>
> See current in-kernel device trees for examples.
>
> -Scott
Yep. That fixed my immediate problem. Thank you very much.
Kernel boots now and I can do lspci and see the basic information of the graphics card.
Now I have to trace through why I get "PCI: Calling quirk c01a9db8 for 0000:00:0d.0". Any pointers are greatly appreciated.
Cheers
Janaka
More information about the Linuxppc-dev
mailing list