Device tree and /proc/iomem question

Kumar Gala galak at kernel.crashing.org
Wed Nov 28 18:02:19 EST 2007


On Nov 26, 2007, at 12:26 PM, robert lazarski wrote:

> Hi all, I'm using a recent pull of the paulus tree 2.6.24RC2 on my
> custom 85xx board. I'm trying to test my PCI1, PCI2 and PCIe . My
> device tree for PCI is:
>
> 		pci at 8000 {
> 			compatible = "fsl,mpc8540-pci";
> 			device_type = "pci";
> 			interrupt-map-mask = <f800 0 0 7>;
> 			interrupt-map = <
>
> 				/* IDSEL 0x11 J17 Slot 1 */
> 				8800 0 0 1 &mpic 2 1
> 				8800 0 0 2 &mpic 3 1
> 				8800 0 0 3 &mpic 4 1
> 				8800 0 0 4 &mpic 1 1
>
> 				/* IDSEL 0x12 J16 Slot 2 */
>
> 				9000 0 0 1 &mpic 3 1
> 				9000 0 0 2 &mpic 4 1
> 				9000 0 0 3 &mpic 2 1
> 				9000 0 0 4 &mpic 1 1>;
>
> 			interrupt-parent = <&mpic>;
> 			interrupts = <18 2>;
> 			bus-range = <0 ff>;
> 			ranges = <02000000 0 80000000 80000000 0 20000000
> 				  01000000 0 00000000 e2000000 0 00100000>;
> 			clock-frequency = <3f940aa>;
> 			#interrupt-cells = <1>;
> 			#size-cells = <2>;
> 			#address-cells = <3>;
> 			reg = <8000 1000>;
> 		};
>
> 		pci at c000 {
> 			compatible = "fsl,mpc8540-pci";
> 			device_type = "pci";
> 			interrupt-map-mask = <f800 0 0 7>;
> 			interrupt-map = <
>
> 				/* IDSEL 0x11 J17 Slot 1 */
> 				8800 0 0 1 &mpic 2 1
> 				8800 0 0 2 &mpic 3 1
> 				8800 0 0 3 &mpic 4 1
> 				8800 0 0 4 &mpic 1 1
>
> 				/* IDSEL 0x12 J16 Slot 2 */
>
> 				9000 0 0 1 &mpic 3 1
> 				9000 0 0 2 &mpic 4 1
> 				9000 0 0 3 &mpic 2 1
> 				9000 0 0 4 &mpic 1 1>;
>
> 			interrupt-parent = <&mpic>;
> 			interrupts = <18 2>;
> 			bus-range = <0 ff>;
> 			ranges = <02000000 0 c0000000 c0000000 0 20000000
> 				  01000000 0 00000000 e2800000 0 00100000>;
> 			clock-frequency = <3f940aa>;
> 			#interrupt-cells = <1>;
> 			#size-cells = <2>;
> 			#address-cells = <3>;
> 			reg = <c000 1000>;
> 		};
>
> 		pcie at a000 {
> 			compatible = "fsl,mpc8548-pcie";
> 			device_type = "pci";
> 			#interrupt-cells = <1>;
> 			#size-cells = <2>;
> 			#address-cells = <3>;
> 			reg = <a000 1000>;
> 			bus-range = <0 ff>;
> 			ranges = <02000000 0 a0000000 a0000000 0 20000000
> 				  01000000 0 00000000 e3000000 0 00100000>;
> 			clock-frequency = <1fca055>;
> 			interrupt-parent = <&mpic>;
> 			interrupts = <19 2>;
> 			interrupt-map-mask = <f800 0 0 7>;
> 			interrupt-map = <
> 				/* IDSEL 0x0 */
> 				0000 0 0 1 &mpic 0 1
> 				0000 0 0 2 &mpic 1 1
> 				0000 0 0 3 &mpic 2 1
> 				0000 0 0 4 &mpic 3 1
> 				>;
> 		};

Take a look at the device trees in the kernel source.  You'll see we  
moved PCI around so its at the root level.  Not sure if that's your  
issue.

> I see all the above in /proc/device-tree/soc8548 at e0000000 when booting
> the kernel. I double checked my memory mapping in u-boot and it
> appears to match my device tree. Yet I don't see any pci here:
>
> root:~> cat /proc/iomem
> e0004500-e0004507 : serial
> e0004600-e0004607 : serial
> e0024000-e0024fff : ethernet
>  e0024520-e002453f : mdio
> e0025000-e0025fff : ethernet
> e0026000-e0026fff : ethernet
> e0027000-e0027fff : ethernet
>
> cat /proc/bus/pci/devices shows nothing though I have a card in PCI1,
> and all I see from dmesg is "PCI: Probing PCI hardware" . Any ideas?

It seems like its not even really probing or finding the buses.

Can you post what your board/platform code looks like?

- k


More information about the Linuxppc-embedded mailing list