ARM Machine SoC I/O setup and PAD initialization code

Nicolas Pitre nico at fluxnic.net
Thu Jul 22 11:00:56 EDT 2010


On Thu, 22 Jul 2010, David Jander wrote:

> On Thursday 22 July 2010 02:56:52 pm Mark Brown wrote:
> > On Thu, Jul 22, 2010 at 02:10:09PM +0200, David Jander wrote:
> > > IMO, if a bootloader is broken (in any way), it needs replacing. Be it
> > > with another bootloader or directly with the kernel.
> > 
> > If you don't have JTAG access (either due to device limitations or due
> > to lack of data from the vendor of a reference platform you're using)
> > replacing a bootloader can be rather more stressful than it's worth.
> 
> I agree, but I simply can't believe ARM platform designers all do such a bad 
> job at firmware (=bootloader) development in general, which is in sharp 
> contrast to what I have learned from previous PowerPC developments.

Well, this obviously didn't impair the success of the ARM architecture, 
nor did crappy BIOS has impaired the x86 architecture.  Becoming 
"mainstream" as the ARM architecture is becoming is always bound to 
create crap on the edges, such as poorly revised bootloader code.  And 
just as on X86, it is often better to simply not rely too much on the 
bootloader.  Mistakes and bugs will always happen in both the kernel and 
the bootloader.  But it is much more easier and efficient resource wise 
to fix a config bug in the kernel and updating it on the affected kernel 
than it is for fixing the same bug in the bootloader and updating the 
bootloader there.

> How can you assume that kernel-developers know how to correcly set-up the slew 
> rate and drive-strength of an I/O-pin for a given platform if the manufacturer 
> itself didn't do it nor document it!??

You can't.  But the kernel can be fixed while in many cases the 
bootloader practically can't.

> Even if it works with one guessed setting, there is a potential EMC impact 
> that needs to be taken care of.

What I've implemented so far is the ability to either set some 
parameters, or keep the existing ones, but not require for the kernel to 
have to setup everything up.  So if you don't know the right value for a 
setting as a kernel developer then you may just elect to leave it alone 
and hope that the bootloader has set it right.

> There are important hardware-design decisions after each of those settings! If 
> we continue this amateuristic approach, ARM-linux platforms will never get 
> taken seriously in more demanding environments. This really needs to change.

You are more than welcome to change this state of affairs.  And if you 
truly succeed where we all failed so far then it will only be a matter 
of removing the made redundant and useless setup code in the kernel.


Nicolas



More information about the linux-arm-kernel mailing list