arm64: mvebu: Add bubt command for flash image burn
Add support for mvebu bubt command for flash image
load, check and burn on boot device.
Signed-off-by: Konstantin Porotchkin <kostap@marvell.com>
Reviewed-by: Stefan Roese <sr@denx.de>
Cc: Stefan Roese <sr@denx.de>
Cc: Nadav Haklai <nadavh@marvell.com>
Cc: Neta Zur Hershkovits <neta@marvell.com>
Cc: Omri Itach <omrii@marvell.com>
Cc: Igal Liberman <igall@marvell.com>
Cc: Haim Boot <hayim@marvell.com>
Cc: Hanna Hawa <hannah@marvell.com>
Signed-off-by: Stefan Roese <sr@denx.de>
diff --git a/doc/mvebu/cmd/bubt.txt b/doc/mvebu/cmd/bubt.txt
new file mode 100644
index 0000000..6f9f525
--- /dev/null
+++ b/doc/mvebu/cmd/bubt.txt
@@ -0,0 +1,64 @@
+BUBT (Burn ATF) command
+--------------------------
+Bubt command is used to burn a new ATF image to flash device.
+
+The bubt command gets the following parameters: ATF file name, destination device and source device.
+bubt [file-name] [destination [source]]
+ - file-name Image file name to burn. default = flash-image.bin
+ - destination Flash to burn to [spi, nand, mmc]. default = active flash
+ - source Source to load image from [tftp, usb]. default = tftp
+
+Examples:
+ bubt - Burn flash-image.bin from tftp to active flash
+ bubt latest-spi.bin nand - Burn latest-spi.bin from tftp to NAND flash
+
+Notes:
+- For the TFTP interface set serverip and ipaddr.
+- To burn image to SD/eMMC device, the target is defined
+ by parameters CONFIG_SYS_MMC_ENV_DEV and CONFIG_SYS_MMC_ENV_PART.
+
+Bubt command details (burn image step by-step)
+----------------------------------------------
+This section describes bubt command flow:
+
+1. Fetch the requested ATF image from an available interface (USB/SD/SATA/XDB, etc.)
+ into the DRAM, and place it at <load_address>
+ Example: when using the FAT file system on USB flash device:
+ # usb reset
+ # fatls usb 0 (see files in device)
+ # fatload usb 0 <load_address> <file_name>
+
+2. Erase the target device:
+ - NAND: # nand erase 0 100000
+ - SPI: # sf probe 0
+ # sf erase 0 100000
+ - SD/eMMC: # mmc dev <dev_id> <boot_partition>
+
+Notes:
+- The eMMC has 2 boot partitions (BOOT0 and BOOT1) and a user data partition (DATA).
+ The boot partitions are numbered as partition 1 and 2 in MMC driver.
+ Number 0 is used for user data partition and should not be utilized for storing
+ boot images and U-Boot environment in RAW mode since it will break file system
+ structures usually located here.
+ The default boot partition is BOOT0. It is selected by the following parameter:
+ CONFIG_SYS_MMC_ENV_PART=1
+ Valid values for this parameter are 1 for BOOT0 and 2 for BOOT1.
+ Please never use partition number 0 here!
+ The eMMC has 2 boot partitions (BOOT0 and BOOT1) and a user data partition (DATA).
+ The boot partitions are numbered as partition 1 and 2 in MMC driver.
+ Number 0 is used for user data partition and should not be utilized for storing
+ boot images and U-Boot environment in RAW mode since it will break file system
+ structures usually located here.
+ The default boot partition is BOOT0. It is selected by the following parameter:
+ CONFIG_SYS_MMC_ENV_PART=1
+ Valid values for this parameter are 1 for BOOT0 and 2 for BOOT1.
+ Please never use partition number 0 here!
+- The partition number is ignored if the target device is SD card.
+- The boot image offset starts at block 0 for eMMC and block 1 for SD devices.
+ The block 0 on SD devices is left for MBR storage.
+
+3. Write the ATF image:
+ - NAND: # nand write <load_address> 0 <ATF Size>
+ - SPI: # sf write <load_address> 0 <ATF Size>
+ - SD/eMMC: # mmc write <load_address> [0|1] <ATF Size>/<block_size>
+