Board: Nokia RX-51 aka N900

This board definition results in a u-boot.bin which can be chainloaded
from NOLO in qemu or on a real N900. It does very little hardware config
because NOLO has already configured the board. Only needed is enabling
internal eMMC memory via twl4030 regulator which is not enabled by NOLO.

NOLO is expecting a kernel image and will treat any image it finds in
onenand as such. This u-boot is intended to be flashed to the N900 like
a kernel. In order to transparently boot the original kernel, it will be
appended to u-boot.bin at 0x40000. NOLO will load the entire image into
(random) memory and execute u-boot, which saves hw revision, boot reason
and boot mode ATAGs set by NOLO. Then the bootscripts will attempt to load
uImage or boot.scr from a fat, ext2/ext3 or ext4 filesystem in external
SD card or internal eMMC memory. If this fails or keyboard is closed then
the appended kernel image will be booted using some generated and some
stored ATAGs (see boot order).

For generating combined image of u-boot and kernel there is a simple script
called u-boot-gen-combined. It is available in following repository:

  https://github.com/pali/u-boot-maemo

There is support for hardware watchdog. Hardware watchdog is started by
NOLO so u-boot must kick watchdog to prevent reboot device (but not very
often, max every 2 seconds). There is also support for framebuffer display
output with ANSI escape codes and the N900 HW keyboard input.

When U-Boot is starting it enable IBE bit in Auxiliary Control Register,
which is needed for Thumb-2 ISA support. It is workaround for errata 430973.

Default boot order:

 * 0. if keyboard is closed boot automatically attached kernel image
 * 1. try boot from external SD card
 * 2. try boot from internal eMMC memory
 * 3. try boot from attached kernel image

Boot from SD or eMMC in this order:

 * 1.
   * 1.1 find boot.scr on first fat partition
   * 1.2 find uImage on first fat partition
   * 1.3 same order for 2. - 4. fat partition
 * 2. same as 1. but for ext2/3 partition
 * 3. same as 1. but for ext4 partition


Available additional commands/variables:

 * run sdboot - Boot from external SD card (see boot order)
 * run emmcboot - Boot from internal eMMC memory (see boot order)
 * run attachboot - Boot attached kernel image (attached to U-Boot binary)

 * run scriptload - Load boot script ${mmcscriptfile}
 * run scriptboot - Run loaded boot script
 * run kernload - Load kernel image ${mmckernfile}
 * run initrdload - Load initrd image ${mmcinitrdfile}
 * run kernboot - Boot loaded kernel image
 * run kerninitrdboot - Boot loaded kernel image with loaded initrd image

 * run trymmcscriptboot - Try to load and boot script ${mmcscriptfile}
 * run trymmckernboot - Try to load and boot kernel image ${mmckernfile}
 * run trymmckerninitrdboot - Try to load and boot kernel image ${mmckernfile}
                              with initrd image ${mmcinitrdfile}

Additional variables for loading files from mmc:

 * mmc ${mmcnum} (0 - external, 1 - internal)
 * partition number ${mmcpart} (1 - 4)
 * parition type ${mmctype} (fat, ext2, ext4)

Additional variables for booting kernel:

 * setup_omap_atag - Add OMAP table into atags structure (needs maemo kernel)
 * setup_console_atag - Enable serial console in OMAP table
 * setup_boot_reason_atag - Change boot reason in OMAP table
 * setup_boot_mode_atag - Change boot mode in OMAP table

 Variable setup_omap_atag is automatically set when booting attached kernel.
 When variable setup_omap_atag is set, variable setup_console_atag is unset
 and u-boot standard output is set to serial then setup_console_atag is
 automatically set to 1. So output from Maemo kernel would go to serial port.

UBIFS support:

 UBIFS support is disabled, because U-Boot image is too big and cannot be
 flashed with attached zImage to RX-51 kernel nand area. For enabling UBIFS
 support add following lines into file configs/nokia_rx51_defconfig

 CONFIG_CMD_UBI=y
 CONFIG_CMD_UBIFS=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
