U-Boot for the Gateworks Ventana Product Family boards

This file contains information for the port of U-Boot to the Gateworks
Ventana Product family boards.

1. Boot source, boot from NAND
------------------------------

The i.MX6 BOOT ROM expects some structures that provide details of NAND layout
and bad block information (referred to as 'bootstreams') which are replicated
multiple times in NAND. The number of replications is configurable through
board strapping options and eFUSE settings.  The Freescale 'kobs-ng'
application from the Freescale LTIB BSP, which runs under Linux, must be used
to program the bootstream in order to setup the replicated headers correctly.

The Gateworks Ventana boards with NAND flash have been factory programmed
such that their eFUSE settings expect 2 copies of the boostream (this is
specified by providing kobs-ng with the --search_exponent=1 argument). Once in
Linux with MTD support for the NAND on /dev/mtd0 you can program the boostream
with:

kobs-ng init -v -x --search_exponent=1 u-boot.imx

The kobs-ng application uses an imximage (u-boot.imx) which contains the
Image Vector Table (IVT) and Device Configuration Data (DCD) structures that
the i.MX6 BOOT ROM requires to boot.  The kobs-ng adds the Firmware
Configuration Block (FCB) and Discovered Bad Block Table (DBBT).

This information is taken from:
  http://trac.gateworks.com/wiki/ventana/bootloader#NANDFLASH

More details about the i.MX6 BOOT ROM can be found in the IMX6 reference manual.

2. Build
--------

There are several Gateworks Ventana boards that share a simliar design but
vary based on CPU, Memory configuration, and subloaded devices.  Although
the subloaded devices are handled dynamically in the bootloader using
factory configured EEPROM data to modify the device-tree, the CPU choice
(IMX6Q vs IMX6DL) and memory configurations are currently compile-time
options.

The following Gateworks Ventana configurations exist:
 gwventanaq1gspi: MX6Q,1GB,SPI FLASH
 gwventanaq     : MX6Q,512MB,NAND FLASH
 gwventanaq1g   : MX6Q,1GB,NAND FLASH
 gwventanadl    : MX6DL,512MB,NAND FLASH
 gwventanadl1g  : MX6DL,1GB,NAND FLASH

To build U-Boot for the MX6Q,1GB,NAND FLASH for example:

 make gwventanaq1g_config
 make

