Merge https://source.denx.de/u-boot/custodians/u-boot-marvell

- mvebu/turris_omina: Misc fixes and improvements (Pali & Marek)
- mvebu: spl: Always fallback to BootROM boot method (Pali)
- mvebu: Cleanup u-boot,dm-pre-reloc code (Pali)
- gpio: Remove mvgpio driver (Chris)
- SBx81LIFKW/SBx81LIFXCAT disable KIRKWOOD_GPIO (Chris)
- misc: atsha204a: Don't check for error when waking up the device (Pali)
diff --git a/arch/arm/mach-meson/sm.c b/arch/arm/mach-meson/sm.c
index 6c28c0f..d6eb910 100644
--- a/arch/arm/mach-meson/sm.c
+++ b/arch/arm/mach-meson/sm.c
@@ -82,10 +82,7 @@
 
 	smc_call(&regs);
 
-	if (regs.regs[0] == 0)
-		return -1;
-
-	return 0;
+	return regs.regs[0];
 }
 
 #define SM_CHIP_ID_LENGTH	119
@@ -222,7 +219,7 @@
         address = simple_strtoul(argv[3], NULL, 0);
 
 	ret = meson_sm_read_efuse(offset, (void *)address, size);
-	if (ret)
+	if (ret != size)
 		return CMD_RET_FAILURE;
 
 	return CMD_RET_SUCCESS;
@@ -243,7 +240,7 @@
         address = simple_strtoul(argv[3], NULL, 0);
 
 	ret = meson_sm_write_efuse(offset, (void *)address, size);
-	if (ret)
+	if (ret != size)
 		return CMD_RET_FAILURE;
 
 	return CMD_RET_SUCCESS;
diff --git a/doc/board/amlogic/boot-flow.rst b/doc/board/amlogic/boot-flow.rst
new file mode 100644
index 0000000..2049672
--- /dev/null
+++ b/doc/board/amlogic/boot-flow.rst
@@ -0,0 +1,134 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+Amlogic SoC Boot Flow
+=====================
+
+The Amlogic SoCs have a pre-defined boot sequence in the SoC ROM code. Here are
+the possible boot sources of different SoC families supported by U-Boot:
+
+GX* & AXG family
+----------------
+
++----------+--------------------+-------+-------+---------------+---------------+
+|          |   1                | 2     | 3     |    4          |     5         |
++==========+====================+=======+=======+===============+===============+
+| S905     | POC=0: SPI NOR     | eMMC  | NAND  | SD Card       | USB Device    |
+| S905X    |                    |       |       |               |               |
+| S905L    |                    |       |       |               |               |
+| S905W    |                    |       |       |               |               |
+| S912     |                    |       |       |               |               |
++----------+--------------------+-------+-------+---------------+---------------+
+| S805X    | POC=0: SPI NOR     | eMMC  | NAND  | USB Device    | -             |
+| A113D    |                    |       |       |               |               |
+| A113X    |                    |       |       |               |               |
++----------+--------------------+-------+-------+---------------+---------------+
+
+POC pin: `NAND_CLE`
+
+Some boards provide a button to force USB BOOT which disables the eMMC clock signal
+to bypass the eMMC stage. Others have removable eMMC modules; removing the eMMC and
+SDCard will allow boot from USB.
+
+An exception is the lafrite board (aml-s805x-xx) which has no SDCard slot and boots
+from SPI. The only ways to boot the lafrite board from USB are:
+
+ - Erase the first sectors of SPI NOR flash
+ - Insert an HDMI boot plug forcing boot over USB
+
+The VIM1 and initial VIM2 boards provide a test point on the eMMC signals to block
+the storage from answering and continue to the next boot step.
+
+The USB Device boot uses the first USB interface. On some boards this port is only
+available on an USB-A type connector and needs an special Type-A to Type-A cable to
+communicate with the BootROM.
+
+G12* & SM1 family
+-----------------
+
++-------+-------+-------+---------------+---------------+---------------+---------------+
+| POC0  | POC1  | POC2  | 1             | 2             | 3             | 4             |
++=======+=======+=======+===============+===============+===============+===============+
+| 0     | 0     | 0     | USB Device    | SPI NOR       | NAND/eMMC     | SDCard        |
++-------+-------+-------+---------------+---------------+---------------+---------------+
+| 0     | 0     | 1     | USB Device    | NAND/eMMC     | SDCard        | -             |
++-------+-------+-------+---------------+---------------+---------------+---------------+
+| 0     | 1     | 0     | SPI NOR       | NAND/eMMC     | SDCard        | USB Device    |
++-------+-------+-------+---------------+---------------+---------------+---------------+
+| 0     | 1     | 1     | SPI NAND      | NAND/eMMC     | USB Device    | -             |
++-------+-------+-------+---------------+---------------+---------------+---------------+
+| 1     | 0     | 0     | USB Device    | SPI NOR       | NAND/eMMC     | SDCard        |
++-------+-------+-------+---------------+---------------+---------------+---------------+
+| 1     | 0     | 1     | USB Device    | NAND/eMMC     | SDCard        | -             |
++-------+-------+-------+---------------+---------------+---------------+---------------+
+| 1     | 1     | 0     | SPI NOR       | NAND/eMMC     | SDCard        | USB Device    |
++-------+-------+-------+---------------+---------------+---------------+---------------+
+| 1     | 1     | 1     | NAND/eMMC     | SDCard        | USB Device    | -             |
++-------+-------+-------+---------------+---------------+---------------+---------------+
+
+The last option (1/1/1) is the normal default seen on production devices.
+
+ * POC0 pin: `BOOT_4` (0 and all other 1 means SPI NAND boot first)
+ * POC1 pin: `BOOT_5` (0 and all other 1 means USB Device boot first
+ * POC2 pin: `BOOT_6` (0 and all other 1 means SPI NOR boot first)
+
+Most boards provide a button to force USB BOOT which lowers `BOOT_5` to 0. Some boards
+provide a test point on the eMMC or SPI NOR clock signals to block the storage from
+answering and continue to the next boot step.
+
+The Khadas VIM3/3L boards embed a microcontroller which sets POC signals according
+to its configuration or a specific key press sequence to either boot from SPI NOR
+or eMMC then SDCard, or boot as an USB Device.
+
+The Odroid N2/N2+ has a hardware switch to select between SPI NOR or eMMC boot.
+
+Boot Modes
+----------
+
+ * SDCard
+
+The BootROM fetches the first SDCard sectors in one sequence, then checks the content
+of the data. The BootROM expects to find the FIP binary in sector 1, 512 bytes offset
+from the start.
+
+ * eMMC
+
+The BootROM fetches the first sectors in one sequence, first on the main partition,
+and then on the Boot0 followed by Boot1 HW partitions. After each read, the BootROM
+checks the data and looks to the next partition if it fails. The BootROM expects to
+find the FIP binary in sector 1, 512 bytes offset from the start.
+
+ * SPI NOR
+
+The BootROM fetches the first SPI NOR sectors in one sequence, then checks the content
+of the data. The BootROM expects to find the FIP binary in sector 1, 512 bytes offset
+from the start.
+
+ * NAND & SPI NAND
+
+These modes are rarely used in open platforms and no details are available.
+
+ * USB Device
+
+The BootROM sets the USB Gadget interface to serve a custom USB protocol with the
+USB ID 1b8e:c003. The Amlogic `update` utility is designed to use this protocol. It
+is also implemented in the Amlogic Vendor U-Boot.
+
+The open-source `pyamlboot` utility https://github.com/superna9999/pyamlboot also
+implements this protocol and can load U-Boot in memory in order to start the SoC
+without any attached storage or to recover from a failed/incorrect image flash.
+
+HDMI Recovery
+-------------
+
+The BootROM also briefly reads 8 bytes at address I2C 0x52 offset 0xf8 (248) on the
+HDMI DDC bus. If the content is `boot@USB` it will force USB boot mode. If the content
+is `boot@SDC` it will force SDCard boot mode.
+
+If USB Device doesn't enumerate or SD Card boot step doesn't work, the BootROM will
+continue with the normal boot sequence.
+
+Special boot dongles can be built by connecting a 256bytes EEPROM set to answer on
+address 0x52, and program `boot@USB` or `boot@SDC` at offset 0xf8 (248).
+
+Note: If the SoC is booted with USB Device forced at first step, it will keep the boot
+order on warm reboot. Only cold reboot (power removed) will reset the boot order.
diff --git a/doc/board/amlogic/index.rst b/doc/board/amlogic/index.rst
index cc2ba50..4d407f9 100644
--- a/doc/board/amlogic/index.rst
+++ b/doc/board/amlogic/index.rst
@@ -83,6 +83,7 @@
    :maxdepth: 1
 
    pre-generated-fip
+   boot-flow
 
 Board Documentation
 -------------------