.. SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
.. sectionauthor:: Tom Rini <trini@konsulko.com>

Summary
=======

This document covers various features of the `am335x_evm` default
configuration, some of the related defconfigs, and how to enable hardware
features not present by default in the defconfigs.

Hardware
--------

The binary produced by this board supports, based on parsing of the EEPROM
documented in TI's reference designs:
* AM335x GP EVM
* AM335x EVM SK
* The Beaglebone family of designs

Customization
-------------

Given that all of the above boards are reference platforms (and the
Beaglebone platforms are OSHA), it is likely that this platform code and
configuration will be used as the basis of a custom platform.  It is
worth noting that aside from things such as NAND or MMC only being
required if a custom platform makes use of these blocks, the following
are required, depending on design:

* GPIO is only required if DDR3 power is controlled in a way similar to EVM SK
* SPI is only required for SPI flash, or exposing the SPI bus.

The following blocks are required:

* I2C, to talk with the PMIC and ensure that we do not run afoul of
  errata 1.0.24.

When removing options as part of customization, note that you will likely need
to look at both `include/configs/am335x_evm.h`,
`include/configs/ti_am335x_common.h` and `include/configs/am335x_evm.h` as the
migration to Kconfig is not yet complete.

NAND
----

The AM335x GP EVM ships with a 256MiB NAND available in most profiles.  In
this example to program the NAND we assume that an SD card has been
inserted with the files to write in the first SD slot and that mtdparts
have been configured correctly for the board. All images are first loaded
into memory, then written to NAND.

Step-1: Building u-boot for NAND boot
	Set following CONFIGxx options for NAND device.
	CONFIG_SYS_NAND_PAGE_SIZE	number of main bytes in NAND page
	CONFIG_SYS_NAND_OOBSIZE		number of OOB bytes in NAND page
	CONFIG_SYS_NAND_BLOCK_SIZE	number of bytes in NAND erase-block
	CFG_SYS_NAND_ECCPOS		ECC map for NAND page
	CONFIG_NAND_OMAP_ECCSCHEME	(refer doc/README.nand)

Step-2: Flashing NAND via MMC/SD

.. code-block:: text

	# select BOOTSEL to MMC/SD boot and boot from MMC/SD card
	U-Boot # mmc rescan
	# erase flash
	U-Boot # nand erase.chip
	U-Boot # env default -f -a
	U-Boot # saveenv
	# flash MLO. Redundant copies of MLO are kept for failsafe
	U-Boot # load mmc 0 0x82000000 MLO
	U-Boot # nand write 0x82000000 0x00000 0x20000
	U-Boot # nand write 0x82000000 0x20000 0x20000
	U-Boot # nand write 0x82000000 0x40000 0x20000
	U-Boot # nand write 0x82000000 0x60000 0x20000
	# flash u-boot.img
	U-Boot # load mmc 0 0x82000000 u-boot.img
	U-Boot # nand write 0x82000000 0x80000 0x60000
	# flash kernel image
	U-Boot # load mmc 0 0x82000000 uImage
	U-Boot # nand write 0x82000000 ${nandsrcaddr} ${nandimgsize}
	# flash filesystem image
	U-Boot # load mmc 0 0x82000000 filesystem.img
	U-Boot # nand write 0x82000000 ${loadaddress} 0x300000

Step-3: Set BOOTSEL pin to select NAND boot, and POR the device.
	The device should boot from images flashed on NAND device.


Falcon Mode
-----------

The default build includes "Falcon Mode" (see doc/README.falcon) via NAND,
eMMC (or raw SD cards) and FAT SD cards.  Our default behavior currently is
to read a 'c' on the console while in SPL at any point prior to loading the
OS payload (so as soon as possible) to opt to booting full U-Boot.  Also
note that while one can program Falcon Mode "in place" great care needs to
be taken by the user to not 'brick' their setup.  As these are all eval
boards with multiple boot methods, recovery should not be an issue in this
worst-case however.

Falcon Mode: eMMC
-----------------

The recommended layout in this case is:

.. code-block:: text

	MMC BLOCKS      |--------------------------------| LOCATION IN BYTES
	0x0000 - 0x007F : MBR or GPT table               : 0x000000 - 0x020000
	0x0080 - 0x00FF : ARGS or FDT file               : 0x010000 - 0x020000
	0x0100 - 0x01FF : SPL.backup1 (first copy used)  : 0x020000 - 0x040000
	0x0200 - 0x02FF : SPL.backup2 (second copy used) : 0x040000 - 0x060000
	0x0300 - 0x06FF : U-Boot                         : 0x060000 - 0x0e0000
	0x0700 - 0x08FF : U-Boot Env + Redundant         : 0x0e0000 - 0x120000
	0x0900 - 0x28FF : Kernel                         : 0x120000 - 0x520000

Note that when we run 'spl export' it will prepare to boot the kernel.
This includes relocation of the uImage from where we loaded it to the entry
point defined in the header.  As these locations overlap by default, it
would leave us with an image that if written to MMC will not boot, so
instead of using the loadaddr variable we use 0x81000000 in the following
example.  In this example we are loading from the network, for simplicity,
and assume a valid partition table already exists and 'mmc dev' has already
been run to select the correct device.  Also note that if you previously
had a FAT partition (such as on a Beaglebone Black) it is not enough to
write garbage into the area, you must delete it from the partition table
first.

.. code-block:: text

	# Ensure we are able to talk with this mmc device
	U-Boot # mmc rescan
	U-Boot # tftp 81000000 am335x/MLO
	# Write to two of the backup locations ROM uses
	U-Boot # mmc write 81000000 100 100
	U-Boot # mmc write 81000000 200 100
	# Write U-Boot to the location set in the config
	U-Boot # tftp 81000000 am335x/u-boot.img
	U-Boot # mmc write 81000000 300 400
	# Load kernel and device tree into memory, perform export
	U-Boot # tftp 81000000 am335x/uImage
	U-Boot # run findfdt
	U-Boot # tftp ${fdtaddr} am335x/${fdtfile}
	U-Boot # run mmcargs
	U-Boot # spl export fdt 81000000 - ${fdtaddr}
	# Write the updated device tree to MMC
	U-Boot # mmc write ${fdtaddr} 80 80
	# Write the uImage to MMC
	U-Boot # mmc write 81000000 900 2000

Falcon Mode: FAT SD cards
-------------------------

In this case the additional file is written to the filesystem.  In this
example we assume that the uImage and device tree to be used are already on
the FAT filesystem (only the uImage MUST be for this to function
afterwards) along with a Falcon Mode aware MLO and the FAT partition has
already been created and marked bootable:

.. code-block:: text

	U-Boot # mmc rescan
	# Load kernel and device tree into memory, perform export
	U-Boot # load mmc 0:1 ${loadaddr} uImage
	U-Boot # run findfdt
	U-Boot # load mmc 0:1 ${fdtaddr} ${fdtfile}
	U-Boot # run mmcargs
	U-Boot # spl export fdt ${loadaddr} - ${fdtaddr}

This will print a number of lines and then end with something like:

.. code-block:: text

           Using Device Tree in place at 80f80000, end 80f85928
           Using Device Tree in place at 80f80000, end 80f88928

So then you:

.. code-block:: text

        U-Boot # fatwrite mmc 0:1 0x80f80000 args 8928

Falcon Mode: NAND
-----------------

In this case the additional data is written to another partition of the
NAND.  In this example we assume that the uImage and device tree to be are
already located on the NAND somewhere (such as filesystem or mtd partition)
along with a Falcon Mode aware MLO written to the correct locations for
booting and mtdparts have been configured correctly for the board:

.. code-block:: text

	U-Boot # nand read ${loadaddr} kernel
	U-Boot # load nand rootfs ${fdtaddr} /boot/am335x-evm.dtb
	U-Boot # run nandargs
	U-Boot # spl export fdt ${loadaddr} - ${fdtaddr}
	U-Boot # nand erase.part u-boot-spl-os
	U-Boot # nand write ${fdtaddr} u-boot-spl-os
