Fw: Regarding Device tree PCI binding on Linux-2.6.30 kernels

Thirumalai thirumalai.p at datapatterns.co.in
Wed Aug 12 21:45:03 EST 2009


> Hi,
>    Is there any changes on PCI Device tree binding has happened? Because i 
> am trying to port linux 2.6.30 to my MPC7448 based custom board. The 
> target is getting hanged at ethernet initialization. Also i have seen on 
> the debug message of kernel that the PCI MEM/IO resources are not getting 
> assigned. So when searched the reason for not assigning the PCI MEM/IO 
> spaces.  I have seen the implemetation of 
> /linux/arch/powerpc/kernel/pci-common.c/ pci_process_bridge_OF_ranges() is 
> some what different from the old kernels. The CPU address is taken using 
> of_translate_address() function which is in prom_parse.c. This step is not 
> included on the previous implementations. This particular implementation 
> causing me problem of not finding PCI MEM/IO spaces. I have taken the dts 
> file of arch/powerpc/boot/dts/MPC7448hpc2.dts as my base dts file and 
> started to port for my hardware.
>    Kindly let me know any changes that i need to know.
> My dts file,
>
> / {
>        model = "dpvme0447";
>        compatible = "mpc74xx";
>        #address-cells = <1>;
>        #size-cells = <1>;
>
>        aliases {
>                ethernet0 = &enet0;
>                ethernet1 = &enet1;
>
>                serial0 = &serial0;
>                serial1 = &serial1;
>
>        };
>
>        cpus {
>                #address-cells = <1>;
>                #size-cells =<0>;
>
>                PowerPC,7448 at 0 {
>                        device_type = "cpu";
>                        reg = <0>;
>                        d-cache-line-size = <0x20>;     // 32 bytes
>                        i-cache-line-size = <0x20>;     // 32 bytes
>                        d-cache-size = <0x8000>;                // L1, 32K 
> bytes
>                        i-cache-size = <0x8000>;                // L1, 32K 
> bytes
>                        timebase-frequency = <0>;       // 33 MHz, from 
> uboot
>                        clock-frequency = <0>;          // From U-Boot
>                        bus-frequency = <0>;            // From U-Boot
>                        32-bit;
>                };
>        };
>
>        memory {
>                device_type = "memory";
>                reg = <0x00000000 0x20000000    // DDR2   512M at 0
>                       >;
>        };
>
>     tsi108 at 50000000 {
>                #address-cells = <1>;
>                #size-cells = <1>;
>                device_type = "tsi-bridge";
>                ranges = <0x00000000 0x50000000 0x00010000>;
>                reg = <0x50000000 0x00010000>;
>                assigned-addresses = <0>;
>                bus-frequency = <0>;
>
>                i2c at 7000 {
>                        interrupt-parent = <&mpic>;
>                        interrupts = <0xE 0>;
>                        reg = <0x7000 0x400>;
>                        device_type = "i2c";
>                        compatible  = "tsi108-i2c";
>                };
>
>                MDIO: mdio at 6000 {
>                        device_type = "mdio";
>                        compatible = "tsi108-mdio";
>                        reg = <0x6000 0x50>;
>                        #address-cells = <1>;
>                        #size-cells = <0>;
>
>                        phy8: ethernet-phy at 6000 {
>                                interrupt-parent = <&mpic>;
>                                interrupts = <2 1>;
>                                reg = <8>;
>                                device_type = "ethernet-phy";
>                        };
>
>                        phy9: ethernet-phy at 6400 {
>                                interrupt-parent = <&mpic>;
>                                interrupts = <2 1>;
>                                reg = <9>;
>                                device_type = "ethernet-phy"; enet0: 
> ethernet at 6200 {
>                        linux,network-index = <0>;
>                        #size-cells = <0>;
>                        device_type = "network";
>                        compatible = "tsi108-ethernet";
>                        reg = <0x6000 0x200>;
>                        address = [ 00 06 D2 00 00 01 ];
>                        interrupts = <0x10 2>;
>                        interrupt-parent = <&mpic>;
>                        mdio-handle = <&MDIO>;
>                        phy-handle = <&phy8>;
>                };
>
>                enet1: ethernet at 6600 {
>                        linux,network-index = <1>;
>                        #address-cells = <1>;
>                        #size-cells = <0>;
>                        device_type = "network";
>                        compatible = "tsi108-ethernet";
>                        reg = <0x6400 0x200>;
>                        address = [ 00 06 D2 00 00 02 ];
>                        interrupts = <0x11 2>;
>                        interrupt-parent = <&mpic>;
>                        mdio-handle = <&MDIO>;
>                        phy-handle = <&phy9>;
>                };
>
>                serial0: serial at 7808 {
>                        device_type = "serial";
>                        compatible = "ns16550";
>                        reg = <0x7808 0x200>;
>                        clock-frequency = <0x3f6b5a00>;
>                        interrupts = <0xc 0>;
>                        interrupt-parent = <&mpic>;
>                };
>
>                serial1: serial at 7c08 {
>                        device_type = "serial";
>                        compatible = "ns16550";
>                        reg = <0x7c08 0x200>;
>                        clock-frequency = <0x3f6b5a00>;
>                        interrupts = <0xd 0>;
>                        interrupt-parent = <&mpic>;
>                };
> mpic: pic at 7400 {
>                        clock-frequency = <0>;
>                        interrupt-controller;
>                        #address-cells = <0>;
>                        #interrupt-cells = <2>;
>                        reg = <0x7400 0x400>;
>                        built-in;
>                        compatible = "chrp,open-pic";
>                        device_type = "open-pic";
>                        big-endian;
>                };
>                pci at 1000 {
>                        device_type = "pci";
>                        compatible = "tsi108-pci";
>                        #interrupt-cells = <1>;
>                        #size-cells = <2>;
>                        #address-cells = <3>;
>                        reg = <0x1000 0x1000>;
>                        big-endian;
>                        bus-range = <0x0 0xff>;
>                        /* RANGE_TYPE UNKNOWN PCI_ADD PROC_ADDR UNKNOWN 
> SIZE
>                         02000000 - PCIMEM
>                         42000000 - PCI-MEM-PREFETCH
>                         01000000 - PCIIO
>                        */
>                        ranges = <0x02000000 0x0 0xe0000000 0xe0000000 0x0 
> 0x10000000
>                                  0x42000000 0x0 0x80000000 0x80000000 0x0 
> 0x40000000
>                                  0x01000000 0x0 0x00000000 0xf0000000 0x0 
> 0x00010000>;
>                        clock-frequency = <0x7f28154>;
>                        interrupt-parent = <&mpic>;
>                        interrupts = <0x17 2>;
>                        interrupt-map-mask = <0xf800 0 0 7>;
>                        interrupt-map = <
>
>                                /* IDSEL 0x11 */
>                                0x0800 0x0 0x0 0x1 &RT0 0x24 0x0
>                                0x0800 0x0 0x0 0x2 &RT0 0x25 0x0
>                                0x0800 0x0 0x0 0x3 &RT0 0x26 0x0
>                                0x0800 0x0 0x0 0x4 &RT0 0x27 0x0
>
>                                /* IDSEL 0x12 */
>                                0x1000 0x0 0x0 0x1 &RT0 0x25 0x0
>                                0x1000 0x0 0x0 0x2 &RT0 0x26 0x0
>                                0x1000 0x0 0x0 0x3 &RT0 0x27 0x0
>                                0x1000 0x0 0x0 0x4 &RT0 0x24 0x0
>
>                                /* IDSEL 0x13 */
>                                0x1800 0x0 0x0 0x1 &RT0 0x26 0x0
>                                0x1800 0x0 0x0 0x2 &RT0 0x27 0x0
>                                0x1800 0x0 0x0 0x3 &RT0 0x26 0x0
>                                0x1800 0x0 0x0 0x4 &RT0 0x26 0x0
>
>                                /* IDSEL 0x14 */
>                                0x2000 0x0 0x0 0x1 &RT0 0x27 0x0
>                                0x2000 0x0 0x0 0x2 &RT0 0x24 0x0
>                                0x2000 0x0 0x0 0x3 &RT0 0x25 0x0
>                                0x2000 0x0 0x0 0x4 &RT0 0x26 0x0
>                                >;
>
>                        RT0: router at 1180 {
>                                clock-frequency = <0>;
>                                interrupt-controller;
>                                device_type = "pic-router";
>                                #address-cells = <0>;
>                                #interrupt-cells = <2>;
>                                built-in;
>                                big-endian;
>                                interrupts = <0x17 2>;
>                                interrupt-parent = <&mpic>;
>                        };
>                };
>        };
> };
>
> Regards,
> T.
>                        };
>
>                };
>

Panic Message that i got

------------[ cut here ]------------
Kernel BUG at c0190764 [verbose debug info unavailable]
Oops: Exception in kernel mode, sig: 5 [#1]
DPVME0447
NIP: c0190764 LR: c0190764 CTR: c014ea54
REGS: df82bd80 TRAP: 0700   Not tainted  (2.6.30)
MSR: 00029032 <EE,ME,CE,IR,DR>  CR: 24000022  XER: 20000000
TASK = df82c000[1] 'swapper' THREAD: df82a000
GPR00: c0190764 df82be30 df82c000 0000001a 00001509 ffffffff c014e9a4 
00000034
GPR08: c02f4af0 c02e9bb8 00001509 c02cf8f4 24000022 00000000 00000002 
00000000
GPR16: c02c0000 00000000 00000000 00000000 00000000 0ffaa41c c0300000 
00000004
GPR24: 00000000 00000000 c02f0000 c02f0000 df821030 00000000 df821000 
df821300
NIP [c0190764] tsi108_open+0x68/0x9c
LR [c0190764] tsi108_open+0x68/0x9c
Call Trace:
[df82be30] [c0190764] tsi108_open+0x68/0x9c (unreliable)
[df82be50] [c01b157c] dev_open+0xac/0x11c
[df82be70] [c01b147c] dev_change_flags+0x160/0x1b4
[df82be90] [c02bd8f4] ip_auto_config+0x18c/0xe5c
[df82bf50] [c0003c8c] do_one_initcall+0x34/0x1a8
[df82bfd0] [c02a2848] kernel_init+0x9c/0x100
[df82bff0] [c0012024] kernel_thread+0x4c/0x68
Instruction dump:
7c7d1b79 40820034 80bf003c 3c60c029 7fc6f378 38632ad8 90be0028 809f0040
4be90669 3c60c029 38632b08 4be9065d <0fe00000> 48000000 80bf003c 3c60c029
---[ end trace a900fd7f842065b9 ]---
Kernel panic - not syncing: Attempted to kill init!
Rebooting in 180 seconds..

Regards,
T. 


**************** CAUTION - Disclaimer *****************This email may contain confidential and privileged material for the
sole use of the intended recipient(s). Any review, use, retention, distribution or disclosure by others is strictly prohibited. If you are not the intended recipient (or authorized to receive for the recipient), please contact the sender by reply email and delete all copies of this message. Also, email is susceptible to data corruption, interception, tampering, unauthorized amendment and viruses. We only send and receive emails on the basis that we are not liable for any such corruption, interception, tampering, amendment or viruses or any consequence thereof. 
*********** End of Disclaimer ***********DataPatterns ITS Group**********



More information about the Linuxppc-dev mailing list