Could you point me to some files or folder where I can find the h/w
initialization sequence done by Linux for Malta? I would like to take a
look maybe I can figure out some details.
From: Ralf Baechle [mailto:firstname.lastname@example.org]
Sent: Wednesday, August 18, 2010 9:51 AM
To: Ardelean, Andrei
Subject: Re: Does Mips Linux rely on Yamon h/w initialization (other
than DDR memory which is strictly necessary)?
On Wed, Aug 18, 2010 at 06:31:42AM -0700, Ardelean, Andrei wrote:
> Malta board has Yamon monitor which initializes the DDR memory and
> h/w. Does Mips Linux rely on Yamon h/w initialization (except memory)
> like PCI, NET, UART, etc in order to boot? Does Mips Linux
> the h/w again?
> I am booting Linux on Malta with a small monitor which initializes
> the memory. I pass the environment vars array, command line arguments
> and memory size as Yamon would do. The ASCII display shows "Linux on
> Malta" scrolling text so Linux kernel it seems that at least it
> but there is no NET activity and no messages on UART.
That's a bit of an ugly topic and some black art is involved here. We
leave the initialization of CPU, caches and memory controllers entirely
to the firmware.
For the remainder Linux tries to perform the initilization itself but
sometimes by accident not intention a register that was already
initialized by firmware will not be initialized by Linux but the
omission will not be notized because it already has a correct value.
PCI is particularl problem. On some platforms firmware initializes the
bus and re-initializing the bus would break the firmware or be very
complex. On such a system Linux will just scan the PCI bus and re-use
the existing configuration. On most platforms however Linux will do a
better job than the existing firmware and fully reinitialize the entire
PCI bus hierarchy.