Thread (4 messages) 4 messages, 2 authors, 2007-06-01

RE: Where is initial console initialized ?

flat view

From: Daniel Schnell <hidden>
Date: 2007-06-01 12:15:00

Hmm, this is a bug in the U-Boot print-data() function. Normally you =
should see a 8 bytes field for "reg =3D  ", so I changed that function =
to dump the hexadecimal contents when data length is =3D=3D 8 and these =
reg =3D values look much better now:


Still no go to boot Linux.


Booting using flat device tree at 0x400000
 {
    model =3D "v38c";
    compatible =3D [76 33 38 63 00 6d 70 63 35 32 30 30 62 00 6d 70 63 =
35 32 78 78 00];
    #address-cells =3D <1>;
    #size-cells =3D <1>;
    cpus {
        #cpus =3D <1>;
        #address-cells =3D <1>;
        #size-cells =3D <0>;
        PowerPC,5200@0 {
            device_type =3D "cpu";
            reg =3D <0>;
            d-cache-line-size =3D <20>;
            i-cache-line-size =3D <20>;
            d-cache-size =3D <4000>;
            i-cache-size =3D <4000>;
            timebase-frequency =3D <1f78a40>;
            bus-frequency =3D <7de2900>;
            clock-frequency =3D <179a7b00>;
            32-bit;
        };
    };
    memory {
        device_type =3D "memory";
        reg =3D [00 00 00 00 08 00 00 00];
    };
    soc5200@f0000000 {
        #interrupt-cells =3D <3>;
        device_type =3D "soc";
        ranges =3D [00 00 00 00 f0 00 00 00 f0 01 00 00];
        reg =3D [f0 00 00 00 00 01 00 00];
        bus-frequency =3D <3ef1480>;
        cdm@200 {
            compatible =3D [6d 70 63 35 32 30 30 62 2d 63 64 6d 00 6d 70 =
63 35 32 78 78 2d 63 64 6d 00];
            reg =3D [00 00 02 00 00 00 00 38];
        };
        pic@500 {
            linux,phandle =3D <500>;
            interrupt-controller;
            #interrupt-cells =3D <3>;
            device_type =3D "interrupt-controller";
            compatible =3D [6d 70 63 35 32 30 30 62 2d 70 69 63 00 6d 70 =
63 35 32 78 78 2d 70 69 63 00];
            reg =3D [00 00 05 00 00 00 00 80];
            built-in;
        };
        gpt@600 {
            compatible =3D [6d 70 63 35 32 30 30 62 2d 67 70 74 00 6d 70 =
63 35 32 78 78 2d 67 70 74 00];
            device_type =3D "gpt";
            reg =3D [00 00 06 00 00 00 00 10];
            interrupts =3D [00 00 00 01 00 00 00 09 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        gpt@610 {
            compatible =3D [6d 70 63 35 32 30 30 62 2d 67 70 74 00 6d 70 =
63 35 32 78 78 2d 67 70 74 00];
            device_type =3D "gpt";
            reg =3D [00 00 06 10 00 00 00 10];
            interrupts =3D [00 00 00 01 00 00 00 0a 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        gpt@620 {
            compatible =3D [6d 70 63 35 32 30 30 62 2d 67 70 74 00 6d 70 =
63 35 32 78 78 2d 67 70 74 00];
            device_type =3D "gpt";
            reg =3D [00 00 06 20 00 00 00 10];
            interrupts =3D [00 00 00 01 00 00 00 0b 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        gpt@630 {
            compatible =3D [6d 70 63 35 32 30 30 62 2d 67 70 74 00 6d 70 =
63 35 32 78 78 2d 67 70 74 00];
            device_type =3D "gpt";
            reg =3D [00 00 06 30 00 00 00 10];
            interrupts =3D [00 00 00 01 00 00 00 0c 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        gpt@640 {
            compatible =3D [6d 70 63 35 32 30 30 62 2d 67 70 74 00 6d 70 =
63 35 32 78 78 2d 67 70 74 00];
            device_type =3D "gpt";
            reg =3D [00 00 06 40 00 00 00 10];
            interrupts =3D [00 00 00 01 00 00 00 0d 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        gpt@650 {
            compatible =3D [6d 70 63 35 32 30 30 62 2d 67 70 74 00 6d 70 =
63 35 32 78 78 2d 67 70 74 00];
            device_type =3D "gpt";
            reg =3D [00 00 06 50 00 00 00 10];
            interrupts =3D [00 00 00 01 00 00 00 0e 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        gpt@660 {
            compatible =3D [6d 70 63 35 32 30 30 62 2d 67 70 74 00 6d 70 =
63 35 32 78 78 2d 67 70 74 00];
            device_type =3D "gpt";
            reg =3D [00 00 06 60 00 00 00 10];
            interrupts =3D [00 00 00 01 00 00 00 0f 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        gpt@670 {
            compatible =3D [6d 70 63 35 32 30 30 62 2d 67 70 74 00 6d 70 =
63 35 32 78 78 2d 67 70 74 00];
            device_type =3D "gpt";
            reg =3D [00 00 06 70 00 00 00 10];
            interrupts =3D [00 00 00 01 00 00 00 10 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        rtc@800 {
            compatible =3D [6d 70 63 35 32 30 30 62 2d 72 74 63 00 6d 70 =
63 35 32 78 78 2d 72 74 63 00];
            device_type =3D "rtc";
            reg =3D [00 00 08 00 00 00 01 00];
            interrupts =3D [00 00 00 01 00 00 00 05 00 00 00 00 00 00 00 =
01 00 00 00 06 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        mscan@900 {
            device_type =3D "mscan";
            compatible =3D [6d 70 63 35 32 30 30 62 2d 6d 73 63 61 6e 00 =
6d 70 63 35 32 78 78 2d 6d 73 63 61 6e 00];
            interrupts =3D [00 00 00 02 00 00 00 11 00 00 00 00];
            interrupt-parent =3D <500>;
            reg =3D [00 00 09 00 00 00 00 80];
        };
        mscan@980 {
            device_type =3D "mscan";
            compatible =3D [6d 70 63 35 32 30 30 62 2d 6d 73 63 61 6e 00 =
6d 70 63 35 32 78 78 2d 6d 73 63 61 6e 00];
            interrupts =3D [00 00 00 02 00 00 00 12 00 00 00 00];
            interrupt-parent =3D <500>;
            reg =3D [00 00 09 80 00 00 00 80];
        };
        gpio@b00 {
            compatible =3D [6d 70 63 35 32 30 30 62 2d 67 70 69 6f 00 6d =
70 63 35 32 78 78 2d 67 70 69 6f 00];
            reg =3D [00 00 0b 00 00 00 00 40];
            interrupts =3D [00 00 00 01 00 00 00 07 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        gpio-wkup@b00 {
            compatible =3D [6d 70 63 35 32 30 30 62 2d 67 70 69 6f 2d 77 =
6b 75 70 00 6d 70 63 35 32 78 78 2d 67 70 69 6f 2d 77 6b 75 70 00];
            reg =3D [00 00 0c 00 00 00 00 40];
            interrupts =3D [00 00 00 01 00 00 00 08 00 00 00 00 00 00 00 =
00 00 00 00 03 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        pci@0d00 {
            #interrupt-cells =3D <1>;
            #size-cells =3D <2>;
            #address-cells =3D <3>;
            device_type =3D "pci";
            compatible =3D [6d 70 63 35 32 30 30 62 2d 70 63 69 00 6d 70 =
63 35 32 78 78 2d 70 63 69 00];
            reg =3D [00 00 0d 00 00 00 01 00];
            interrupt-map-mask =3D [00 00 f8 00 00 00 00 00 00 00 00 00 =
00 00 00 07];
            interrupt-map =3D [00 00 c0 00 00 00 00 00 00 00 00 00 00 00 =
00 01 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 c0 00 00 00 =
00 00 00 00 00 00 00 00 00 02 00 00 05 00 00 00 00 01 00 00 00 01 00 00 =
00 03 00 00 c0 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 05 00 00 00 =
00 01 00 00 00 02 00 00 00 03 00 00 c0 00 00 00 00 00 00 00 00 00 00 00 =
00 04 00 00 05 00 00 00 00 01 00 00 00 03 00 00 00 03 00 00 c8 00 00 00 =
00 00 00 00 00 00 00 00 00 01 00 00 05 00 00 00 00 01 00 00 00 01 00 00 =
00 03 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 05 00 00 00 =
00 01 00 00 00 02 00 00 00 03 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 =
00 03 00 00 05 00 00 00 00 01 00 00 00 03 00 00 00 03 00 00 c8 00 00 00 =
00 00 00 00 00 00 00 00 00 04 00 00 05 00 00 00 00 00 00 00 00 00 00 00 =
00 03];
            clock-frequency =3D <0>;
            interrupts =3D [00 00 00 02 00 00 00 08 00 00 00 00 00 00 00 =
02 00 00 00 09 00 00 00 00 00 00 00 02 00 00 00 0a 00 00 00 00];
            interrupt-parent =3D <500>;
            bus-range =3D [00 00 00 00 00 00 00 00];
            ranges =3D [42 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 =
00 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 a0 00 00 00 a0 00 00 00 =
00 00 00 00 10 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 b0 00 00 00 =
00 00 00 00 01 00 00 00];
        };
        spi@f00 {
            device_type =3D "spi";
            compatible =3D [6d 70 63 35 32 30 30 62 2d 73 70 69 00 6d 70 =
63 35 32 78 78 2d 73 70 69 00];
            reg =3D [00 00 0f 00 00 00 00 20];
            interrupts =3D [00 00 00 02 00 00 00 0d 00 00 00 00 00 00 00 =
02 00 00 00 0e 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        usb@1000 {
            device_type =3D "usb-ohci-be";
            compatible =3D [6d 70 63 35 32 30 30 62 2d 6f 68 63 69 00 6d =
70 63 35 32 78 78 2d 6f 68 63 69 00 6f 68 63 69 2d 62 65 00];
            reg =3D [00 00 10 00 00 00 00 ff];
            interrupts =3D [00 00 00 02 00 00 00 06 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        bestcomm@1200 {
            device_type =3D "dma-controller";
            compatible =3D [6d 70 63 35 32 30 30 62 2d 62 65 73 74 63 6f =
6d 6d 00 6d 70 63 35 32 78 78 2d 62 65 73 74 63 6f 6d 6d 00];
            reg =3D [00 00 12 00 00 00 00 80];
            interrupts =3D [00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 =
03 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 =
03 00 00 00 03 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 00 00 00 00 =
03 00 00 00 05 00 00 00 00 00 00 00 03 00 00 00 06 00 00 00 00 00 00 00 =
03 00 00 00 07 00 00 00 00 00 00 00 03 00 00 00 08 00 00 00 00 00 00 00 =
03 00 00 00 09 00 00 00 00 00 00 00 03 00 00 00 0a 00 00 00 00 00 00 00 =
03 00 00 00 0b 00 00 00 00 00 00 00 03 00 00 00 0c 00 00 00 00 00 00 00 =
03 00 00 00 0d 00 00 00 00 00 00 00 03 00 00 00 0e 00 00 00 00 00 00 00 =
03 00 00 00 0f 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        xlb@1f00 {
            compatible =3D [6d 70 63 35 32 30 30 62 2d 78 6c 62 00 6d 70 =
63 35 32 78 78 2d 78 6c 62 00];
            reg =3D [00 00 1f 00 00 00 01 00];
        };
        serial@2000 {
            device_type =3D "serial";
            compatible =3D [6d 70 63 35 32 30 30 62 2d 70 73 63 2d 75 61 =
72 74 00 6d 70 63 35 32 78 78 2d 70 73 63 2d 75 61 72 74 00];
            port-number =3D <0>;
            reg =3D [00 00 20 00 00 00 01 00];
            interrupts =3D [00 00 00 02 00 00 00 01 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        ethernet@3000 {
            device_type =3D "network";
            compatible =3D [6d 70 63 35 32 30 30 62 2d 66 65 63 00 6d 70 =
63 35 32 78 78 2d 66 65 63 00];
            reg =3D [00 00 30 00 00 00 08 00];
            mac-address =3D [00 e0 ee 00 28 0d];
            interrupts =3D [00 00 00 02 00 00 00 05 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        i2c@3d00 {
            device_type =3D "i2c";
            compatible =3D [6d 70 63 35 32 30 30 62 2d 69 32 63 00 6d 70 =
63 35 32 78 78 2d 69 32 63 00];
            reg =3D [00 00 3d 00 00 00 00 40];
            interrupts =3D [00 00 00 02 00 00 00 0f 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        i2c@3d40 {
            device_type =3D "i2c";
            compatible =3D [6d 70 63 35 32 30 30 62 2d 69 32 63 00 6d 70 =
63 35 32 78 78 2d 69 32 63 00];
            reg =3D [00 00 3d 40 00 00 00 40];
            interrupts =3D [00 00 00 02 00 00 00 10 00 00 00 00];
            interrupt-parent =3D <500>;
        };
        sram@8000 {
            device_type =3D "sram";
            compatible =3D [6d 70 63 35 32 30 30 62 2d 73 72 61 6d 00 6d =
70 63 35 32 78 78 2d 73 72 61 6d 00 73 72 61 6d 00];
            reg =3D [00 00 80 00 00 00 40 00];
        };
    };
    chosen {
        name =3D "chosen";
        bootargs =3D "console=3DttyPSC0,115200 root=3D/dev/nfs ip=3Ddhcp =
nfsroot=3D10.100.11.96:/home/danielsch/downloads/OSELAS.BSP-Phytec-phyCOR=
E-MPC5200B-tiny-5/root,v3,tcp";
        linux,platform =3D <600>;
        linux,stdout-path =3D "/soc5200@f0000000/serial@2000";
    };
};



-----Original Message-----
From: Domen Puncer [mailto:domen.puncer@telargo.com]=20
Sent: 1. j=FAn=ED 2007 06:35
To: Daniel Schnell
Cc: linuxppc-embedded@ozlabs.org
Subject: Re: Where is initial console initialized ?

On 31/05/07 13:42 -0000, Daniel Schnell wrote:
Hi,
=20
I am trying to bring up 2.6.20.3 on a MPC5200B based custom board.=20
This Kernel is based on the Phytec phyCore MPC5200B Mini BSP kernel=20
and adapted to my board.
So far I have troubles to get console output working when booting =
Linux.
Uboot console output is fine. Linux begins to run (I can set=20
breakpoints with the BDI2000 in the early initialization code) so I=20
probably have a misconfiguration of the console output inside the fdt.
=20
The major difference between the Phytec phyCore 5200B mini fdt and=20
mine is that we use PSC1 instead of PSC3/6 for serial. Accordingly I=20
changed the fdt (or dts) values.
=20
To get some more insights, I would like to know, in which Linux=20
function the console output is initialised ?
=20
=20
...
If I dump the flat device tree inside uboot, I get the following
entries:=20
...
the dump with:

         reg =3D <8>;

in most of nodes, which looks just wrong.


	Domen
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help