[U-Boot] ppc4xx: glacier broken with latest u-boot

Adam Graham
2008-09-05T02:06:05Z

Stefan,

I took a quick look at this problem and tracked the problem down to the
serial console initialization area for the AMCC Glacier and Canyonlands
boards.

description PPC4xx U-Boot Custodian Tree
owner Stefan Roese
last change Wed, 3 Sep 2008 15:21:38 +0000
URL git://git.denx.de/u-boot-ppc4xx.git

The problem was introduced 4 days ago with the commit

committer Wolfgang Denk <wd@denx.de>
Sun, 31 Aug 2008 22:16:29 +0000 (00:16 +0200)
commit e99e9575bbeba1b7c48e046547cae065ec0071de
tree c08553c4d06725bd6013a46068df0059c5b49a00
parent a13b2d937941f6b525abfcfad96c034f94421188
parent 08ab4e1780fa63c88dd5a5ab52f4ff4ed1ee1878

If one were to rebase their git tree to the prior commit, U-Boot will
boot all the way up on the Glacier and Canyonlands boards.

committer Wolfgang Denk <wd@denx.de>
Sun, 31 Aug 2008 22:06:05 +0000 (00:06 +0200)
commit a13b2d937941f6b525abfcfad96c034f94421188
tree 56e5bdaf62397b2f8cc2be9b17a035d9b059bf8a
parent e155c9e00b5f21a6de28479259c440ba71289d00
parent d6e04258be8f2408845468d3cf722a4cf0433445

The problem happens within the console_init_r() routine called from the
board_init_r() function.

common/console.c
#else /* CFG_CONSOLE_IS_IN_ENV */

/* Called after the relocation - use desired console functions */
int console_init_r (void)
{
device_t *inputdev = NULL, *outputdev = NULL;
int i;
struct list_head *list = device_get_list();
struct list_head *pos;
device_t *dev;

#ifdef CONFIG_SPLASH_SCREEN
/* suppress all output if splash screen is enabled and we have
a bmp to display
*/
if (getenv("splashimage") != NULL)
gd->flags |= GD_FLG_SILENT;
#endif

/* Scan devices looking for input and output devices */
list_for_each(pos, list) {
dev = list_entry(pos, device_t, list);

if ((dev->flags & DEV_FLAGS_INPUT) && (inputdev ==
NULL)) {
inputdev = dev;
}
if ((dev->flags & DEV_FLAGS_OUTPUT) && (outputdev ==
NULL)) {
outputdev = dev;
}
if(inputdev && outputdev)
break;
}

/* Initializes output console first */
if (outputdev != NULL) {
console_setfile (stdout, outputdev);
console_setfile (stderr, outputdev);
}

/* Initializes input console */
if (inputdev != NULL) {
console_setfile (stdin, inputdev);
}

gd->flags |= GD_FLG_DEVINIT; /* device initialization
completed */
(Problem happens here- no more console output)

There are 4 elements in the device_get_list() list. I did a quick print
of their flags field:
list_head 0x1ffef2a0
dev->flags = 0x80000003
dev->flags = 0x00000003
dev->flags = 0x00000003
dev->flags = 0x80000003

Is the dev->flags for each console serial device have both
DEV_FLAGS_INPUT and the DEV_FLAGS_OUTPUT set?

There was a change in the e99e9575bbeba1b7c48e046547cae065ec0071de
commit with the list processing of the console devices
(common/console.c, common/devices.c).

Unfortunately I can not investigate further tonight (family engagement),
but I hope this helps.

Adam Graham

> -----Original Message-----
> From: u-boot-bounces at lists.denx.de
> [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Victor Gallardo
> Sent: Thursday, September 04, 2008 4:47 PM
> To: Stefan Roese; u-boot at lists.denx.de
> Subject: [U-Boot] ppc4xx: glacier broken with latest u-boot
>
> Hello Stefan,
>
> I just pulled the latest u-boot (git://git.denx.de/u-boot-ppc4xx.git)
> and glacier is broken. It builds, but if load the u-boot it
> hangs. This is far as it gets.
>
> U-Boot 1.3.4-03965-g7deb3b3 (Sep 4 2008 - 16:26:55)
>
> CPU: AMCC PowerPC 460GT Rev. A at 800 MHz (PLB=200, OPB=100, EBC=100
> MHz)
> Security/Kasumi support
> Bootstrap Option H - Boot ROM Location I2C (Addr 0x52)
> Internal PCI arbiter disabled
> 32 kB I-Cache 32 kB D-Cache
> Board: Glacier - AMCC PPC460GT Evaluation Board, 2*PCIe, Rev. 13
> I2C: ready
> DTT: 1 is 35 C
> DRAM: 256 MB (ECC not enabled, 400 MHz, CL3)
> FLASH: 64 MB
> NAND: 32 MiB
> PCI: Bus Dev VenId DevId Class Int
> PCIE0: link is not up.
> PCIE0: initialization as root-complex failed
> PCIE1: link is not up.
> PCIE1: initialization as root-complex failed
>
> Regards,
>
> Victor Gallardo
>