ARM Machine SoC I/O setup and PAD initialization code
Simon Horman
horms at verge.net.au
Wed Jul 21 22:32:53 EDT 2010
On Wed, Jul 21, 2010 at 09:47:26AM +0100, Russell King - ARM Linux wrote:
> On Wed, Jul 21, 2010 at 10:29:29AM +0200, David Jander wrote:
> > General machine initialization like I/O-multiplexing and I/O-pad setup seems
> > to be done twice most of the time: Once in the bootloader (i.e. u-boot), and
> > once in the machine support file in the linux kernel. This seems awfully
> > redundant and error-prone to me. Why is it like this?
>
> I answer your question only once - rather than the number of times you've
> asked it in this email.
>
> We do IO mux setup in the kernel for two reasons:
>
> 1. we don't trust boot loaders to do the right thing, especially when we
> have a plethora of boot loaders - or even no boot loader - to deal with.
>
> 2. on some platforms and SoCs, it's necessary to change the IO mux setup
> at runtime.
>
> > What about fixing bootloaders then?
>
> Forget fixing boot loaders; that's a total and utter lost cause. Boot
> loaders generally don't seem to even be capable of passing a block of
> information correctly to the kernel, or even getting one simple value
> in a register correct.
>
> Boot loaders really can't be trusted, and the less we rely upon them,
> the better.
Would it be feasible to use Linux + kexec as the boot loader as
a long term solution to fixing boot loaders by eliminating them?
I believe Magnus Damn (CCed) amongst others have done work
in this area, though I'm not sure that it was on ARM.
More information about the linux-arm-kernel
mailing list