aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile7
-rw-r--r--arch/arm/dts/Makefile1
-rw-r--r--arch/arm/dts/kirkwood-pogoplug-series-4.dts180
-rw-r--r--arch/arm/mach-kirkwood/Kconfig6
-rw-r--r--board/Marvell/mvebu_armada-37xx/board.c4
-rw-r--r--board/Seagate/goflexhome/goflexhome.c84
-rw-r--r--board/cloudengines/pogo_v4/Kconfig16
-rw-r--r--board/cloudengines/pogo_v4/MAINTAINERS6
-rw-r--r--board/cloudengines/pogo_v4/Makefile10
-rw-r--r--board/cloudengines/pogo_v4/kwbimage.cfg148
-rw-r--r--board/cloudengines/pogo_v4/pogo_v4.c148
-rw-r--r--configs/am64x_evm_a53_defconfig2
-rw-r--r--configs/am64x_evm_r5_defconfig8
-rw-r--r--configs/bayleybay_defconfig2
-rw-r--r--configs/chromebook_coral_defconfig2
-rw-r--r--configs/conga-qeval20-qa3-e3845-internal-uart_defconfig2
-rw-r--r--configs/conga-qeval20-qa3-e3845_defconfig2
-rw-r--r--configs/dfi-bt700-q7x-151_defconfig2
-rw-r--r--configs/edison_defconfig2
-rw-r--r--configs/galileo_defconfig2
-rw-r--r--configs/goflexhome_defconfig2
-rw-r--r--configs/minnowmax_defconfig2
-rw-r--r--configs/pogo_v4_defconfig80
-rw-r--r--configs/qemu-x86_64_defconfig2
-rw-r--r--configs/qemu-x86_defconfig2
-rw-r--r--configs/sandbox_defconfig2
-rw-r--r--configs/som-db5800-som-6867_defconfig2
-rw-r--r--configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig2
-rw-r--r--configs/theadorable-x86-conga-qa3-e3845_defconfig2
-rw-r--r--configs/theadorable-x86-dfi-bt700_defconfig2
-rw-r--r--configs/tools-only_defconfig2
-rw-r--r--include/configs/goflexhome.h32
-rw-r--r--include/configs/pogo_v4.h56
-rw-r--r--scripts/pylint.base441
-rw-r--r--tools/kwboot.c154
35 files changed, 1041 insertions, 376 deletions
diff --git a/Makefile b/Makefile
index 2121245..8f02901 100644
--- a/Makefile
+++ b/Makefile
@@ -2270,9 +2270,10 @@ pylint:
$(Q)find tools test -name "*.py" \
| xargs -n1 -P$(shell nproc 2>/dev/null || echo 1) \
sh -c 'pylint --reports=y --exit-zero -f parseable --ignore-imports=yes $$@ > pylint.out/$$(echo $$@ | tr / _ | sed s/.py//)' _
- $(Q)sed -n 's/Your code has been rated at \([-0-9.]*\).*/\1/p; s/\*\** Module \(.*\)/\1/p' pylint.out/* \
- |sed '$!N;s/\n/ /' \
- |sort > $(PYLINT_CUR)
+ $(Q)rm -f $(PYLINT_CUR)
+ $(Q)( cd pylint.out; for f in *; do \
+ sed -ne "s/Your code has been rated at \([-0-9.]*\).*/$$f \1/p" $$f; \
+ done ) | sort > $(PYLINT_CUR)
$(Q)base=$$(mktemp) cur=$$(mktemp); cut -d' ' -f1 $(PYLINT_BASE) >$$base; \
cut -d' ' -f1 $(PYLINT_CUR) >$$cur; \
comm -3 $$base $$cur > $(PYLINT_DIFF); \
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index ce33202..5d45d19 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -71,6 +71,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += \
kirkwood-openrd-client.dtb \
kirkwood-openrd-ultimate.dtb \
kirkwood-pogo_e02.dtb \
+ kirkwood-pogoplug-series-4.dtb \
kirkwood-sheevaplug.dtb
dtb-$(CONFIG_MACH_S900) += \
diff --git a/arch/arm/dts/kirkwood-pogoplug-series-4.dts b/arch/arm/dts/kirkwood-pogoplug-series-4.dts
new file mode 100644
index 0000000..5aa4669
--- /dev/null
+++ b/arch/arm/dts/kirkwood-pogoplug-series-4.dts
@@ -0,0 +1,180 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * kirkwood-pogoplug-series-4.dts - Device tree file for PogoPlug Series 4
+ * inspired by the board files made by Kevin Mihelich for ArchLinux,
+ * and their DTS file.
+ *
+ * Copyright (C) 2015 Linus Walleij <linus.walleij@linaro.org>
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6192.dtsi"
+#include <dt-bindings/input/linux-event-codes.h>
+
+/ {
+ model = "Cloud Engines PogoPlug Series 4";
+ compatible = "cloudengines,pogoplugv4", "marvell,kirkwood-88f6192",
+ "marvell,kirkwood";
+
+ memory {
+ device_type = "memory";
+ reg = <0x00000000 0x08000000>;
+ };
+
+ chosen {
+ stdout-path = "uart0:115200n8";
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-0 = <&pmx_button_eject>;
+ pinctrl-names = "default";
+
+ eject {
+ debounce-interval = <50>;
+ wakeup-source;
+ linux,code = <KEY_EJECTCD>;
+ label = "Eject Button";
+ gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+ pinctrl-0 = <&pmx_led_green &pmx_led_red>;
+ pinctrl-names = "default";
+
+ health {
+ label = "pogoplugv4:green:health";
+ gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
+ default-state = "on";
+ };
+ fault {
+ label = "pogoplugv4:red:fault";
+ gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&pinctrl {
+ pmx_sata0: pmx-sata0 {
+ marvell,pins = "mpp21";
+ marvell,function = "sata0";
+ };
+
+ pmx_sata1: pmx-sata1 {
+ marvell,pins = "mpp20";
+ marvell,function = "sata1";
+ };
+
+ pmx_sdio_cd: pmx-sdio-cd {
+ marvell,pins = "mpp27";
+ marvell,function = "gpio";
+ };
+
+ pmx_sdio_wp: pmx-sdio-wp {
+ marvell,pins = "mpp28";
+ marvell,function = "gpio";
+ };
+
+ pmx_button_eject: pmx-button-eject {
+ marvell,pins = "mpp29";
+ marvell,function = "gpio";
+ };
+
+ pmx_led_green: pmx-led-green {
+ marvell,pins = "mpp22";
+ marvell,function = "gpio";
+ };
+
+ pmx_led_red: pmx-led-red {
+ marvell,pins = "mpp24";
+ marvell,function = "gpio";
+ };
+};
+
+&uart0 {
+ status = "okay";
+};
+
+/*
+ * This PCIE controller has a USB 3.0 XHCI controller at 1,0
+ */
+&pciec {
+ status = "okay";
+};
+
+&pcie0 {
+ status = "okay";
+};
+
+&sata {
+ status = "okay";
+ pinctrl-0 = <&pmx_sata0 &pmx_sata1>;
+ pinctrl-names = "default";
+ nr-ports = <1>;
+};
+
+&sdio {
+ status = "okay";
+ pinctrl-0 = <&pmx_sdio &pmx_sdio_cd &pmx_sdio_wp>;
+ pinctrl-names = "default";
+ cd-gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
+ wp-gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
+};
+
+&nand {
+ /* 128 MiB of NAND flash */
+ chip-delay = <40>;
+ status = "okay";
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "u-boot";
+ reg = <0x00000000 0x200000>;
+ read-only;
+ };
+
+ partition@200000 {
+ label = "uImage";
+ reg = <0x00200000 0x300000>;
+ };
+
+ partition@500000 {
+ label = "uImage2";
+ reg = <0x00500000 0x300000>;
+ };
+
+ partition@800000 {
+ label = "failsafe";
+ reg = <0x00800000 0x800000>;
+ };
+
+ partition@1000000 {
+ label = "root";
+ reg = <0x01000000 0x7000000>;
+ };
+ };
+};
+
+&mdio {
+ status = "okay";
+
+ ethphy0: ethernet-phy@0 {
+ reg = <0>;
+ };
+};
+
+&eth0 {
+ status = "okay";
+ ethernet0-port@0 {
+ phy-handle = <&ethphy0>;
+ };
+};
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
index c060cc8..382b836 100644
--- a/arch/arm/mach-kirkwood/Kconfig
+++ b/arch/arm/mach-kirkwood/Kconfig
@@ -51,6 +51,11 @@ config TARGET_POGO_E02
select FEROCEON_88FR131
select KW88F6281
+config TARGET_POGO_V4
+ bool "Pogoplug V4 Board"
+ select FEROCEON_88FR131
+ select KW88F6192
+
config TARGET_DNS325
bool "dns325 Board"
select FEROCEON_88FR131
@@ -123,6 +128,7 @@ source "board/Marvell/guruplug/Kconfig"
source "board/Marvell/sheevaplug/Kconfig"
source "board/buffalo/lsxl/Kconfig"
source "board/cloudengines/pogo_e02/Kconfig"
+source "board/cloudengines/pogo_v4/Kconfig"
source "board/d-link/dns325/Kconfig"
source "board/iomega/iconnect/Kconfig"
source "board/keymile/Kconfig"
diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c
index d7b6eca..6bfec0c 100644
--- a/board/Marvell/mvebu_armada-37xx/board.c
+++ b/board/Marvell/mvebu_armada-37xx/board.c
@@ -59,11 +59,11 @@ DECLARE_GLOBAL_DATA_PTR;
* Memory Controller Registers
*
* Assembled based on public information:
- * https://gitlab.nic.cz/turris/mox-boot-builder/-/blob/master/wtmi/main.c#L332-336
+ * https://gitlab.nic.cz/turris/mox-boot-builder/-/blob/v2020.11.26/wtmi/main.c#L332-336
* https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell/blob/mv_ddr-armada-18.12/drivers/mv_ddr_mc6.h#L309-L332
*
* And checked against the written register values for the various topologies:
- * https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell/blob/mv_ddr-armada-atf-mainline/a3700/mv_ddr_tim.h
+ * https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell/blob/master/a3700/mv_ddr_tim.h
*/
#define A3700_CH0_MC_CTRL2_REG MVEBU_REGISTER(0x002c4)
#define A3700_MC_CTRL2_SDRAM_TYPE_MASK 0xf
diff --git a/board/Seagate/goflexhome/goflexhome.c b/board/Seagate/goflexhome/goflexhome.c
index 52be64f..caea89c 100644
--- a/board/Seagate/goflexhome/goflexhome.c
+++ b/board/Seagate/goflexhome/goflexhome.c
@@ -1,10 +1,7 @@
// SPDX-License-Identifier: GPL-2.0+
/*
- * Copyright (C) 2021
- * Tony Dinh <mibodhi@gmail.com>
- * Suriyan Ramasami <suriyan.r@gmail.com>
- *
- * Copyright (C) 2013 Suriyan Ramasami <suriyan.r@gmail.com>
+ * Copyright (C) 2021-2022 Tony Dinh <mibodhi@gmail.com>
+ * Copyright (C) 2013-2021 Suriyan Ramasami <suriyan.r@gmail.com>
*
* Based on dockstar.c originally written by
* Copyright (C) 2010 Eric C. Cooper <ecc@cmu.edu>
@@ -18,14 +15,14 @@
#include <common.h>
#include <bootstage.h>
#include <init.h>
-#include <miiphy.h>
-#include <net.h>
+#include <netdev.h>
#include <asm/global_data.h>
#include <asm/mach-types.h>
#include <asm/arch/soc.h>
#include <asm/arch/mpp.h>
#include <asm/arch/cpu.h>
#include <asm/io.h>
+#include <linux/bitops.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -98,6 +95,11 @@ int board_early_init_f(void)
return 0;
}
+int board_eth_init(struct bd_info *bis)
+{
+ return cpu_eth_init(bis);
+}
+
int board_init(void)
{
/*
@@ -111,73 +113,9 @@ int board_init(void)
return 0;
}
-static int fdt_get_phy_addr(const char *path)
-{
- const void *fdt = gd->fdt_blob;
- const u32 *reg;
- const u32 *val;
- int node, phandle, addr;
-
- /* Find the node by its full path */
- node = fdt_path_offset(fdt, path);
- if (node >= 0) {
- /* Look up phy-handle */
- val = fdt_getprop(fdt, node, "phy-handle", NULL);
- if (val) {
- phandle = fdt32_to_cpu(*val);
- if (!phandle)
- return -1;
- /* Follow it to its node */
- node = fdt_node_offset_by_phandle(fdt, phandle);
- if (node) {
- /* Look up reg */
- reg = fdt_getprop(fdt, node, "reg", NULL);
- if (reg) {
- addr = fdt32_to_cpu(*reg);
- return addr;
- }
- }
- }
- }
- return -1;
-}
-
-#ifdef CONFIG_RESET_PHY_R
-/* Configure and enable MV88E1116 PHY */
-void reset_phy(void)
-{
- u16 reg;
- int phyaddr;
- char *name = "ethernet-controller@72000";
- char *eth0_path = "/ocp@f1000000/ethernet-controller@72000/ethernet0-port@0";
-
- if (miiphy_set_current_dev(name))
- return;
-
- phyaddr = fdt_get_phy_addr(eth0_path);
- if (phyaddr < 0)
- return;
-
- /*
- * Enable RGMII delay on Tx and Rx for CPU port
- * Ref: sec 4.7.2 of chip datasheet
- */
- miiphy_write(name, phyaddr, MV88E1116_PGADR_REG, 2);
- miiphy_read(name, phyaddr, MV88E1116_MAC_CTRL_REG, &reg);
- reg |= (MV88E1116_RGMII_RXTM_CTRL | MV88E1116_RGMII_TXTM_CTRL);
- miiphy_write(name, phyaddr, MV88E1116_MAC_CTRL_REG, reg);
- miiphy_write(name, phyaddr, MV88E1116_PGADR_REG, 0);
-
- /* reset the phy */
- miiphy_reset(name, phyaddr);
-
- printf("88E1116 Initialized on %s\n", name);
-}
-#endif /* CONFIG_RESET_PHY_R */
-
#if CONFIG_IS_ENABLED(BOOTSTAGE)
-#define GREEN_LED (1 << 14)
-#define ORANGE_LED (1 << 15)
+#define GREEN_LED BIT(14)
+#define ORANGE_LED BIT(15)
#define BOTH_LEDS (GREEN_LED | ORANGE_LED)
#define NEITHER_LED 0
diff --git a/board/cloudengines/pogo_v4/Kconfig b/board/cloudengines/pogo_v4/Kconfig
new file mode 100644
index 0000000..db3b76b
--- /dev/null
+++ b/board/cloudengines/pogo_v4/Kconfig
@@ -0,0 +1,16 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# (C) Copyright 2014-2021 Tony Dinh <mibodhi@gmail.com>
+#
+if TARGET_POGO_V4
+
+config SYS_BOARD
+ default "pogo_v4"
+
+config SYS_VENDOR
+ default "cloudengines"
+
+config SYS_CONFIG_NAME
+ default "pogo_v4"
+
+endif
diff --git a/board/cloudengines/pogo_v4/MAINTAINERS b/board/cloudengines/pogo_v4/MAINTAINERS
new file mode 100644
index 0000000..35fd785
--- /dev/null
+++ b/board/cloudengines/pogo_v4/MAINTAINERS
@@ -0,0 +1,6 @@
+POGO_V4 BOARD
+M: Tony Dinh <mibodhi@gmail.com>
+S: Maintained
+F: board/cloudengines/pogo_v4/
+F: include/configs/pogo_v4.h
+F: configs/pogo_v4_defconfig
diff --git a/board/cloudengines/pogo_v4/Makefile b/board/cloudengines/pogo_v4/Makefile
new file mode 100644
index 0000000..511bf5f
--- /dev/null
+++ b/board/cloudengines/pogo_v4/Makefile
@@ -0,0 +1,10 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# (C) Copyright 2014-2021 Tony Dinh <mibodhi@gmail.com>
+#
+# Based on
+# Marvell Semiconductor <www.marvell.com>
+# Written-by: Prafulla Wadaskar <prafulla@marvell.com>
+#
+
+obj-y := pogo_v4.o
diff --git a/board/cloudengines/pogo_v4/kwbimage.cfg b/board/cloudengines/pogo_v4/kwbimage.cfg
new file mode 100644
index 0000000..f6294fe
--- /dev/null
+++ b/board/cloudengines/pogo_v4/kwbimage.cfg
@@ -0,0 +1,148 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (C) 2012
+# David Purdy <david.c.purdy@gmail.com>
+#
+# Based on Kirkwood support:
+# (C) Copyright 2009
+# Marvell Semiconductor <www.marvell.com>
+# Written-by: Prafulla Wadaskar <prafulla <at> marvell.com>
+
+# Boot Media configurations (DONE)
+BOOT_FROM nand
+NAND_ECC_MODE default
+NAND_PAGE_SIZE 0x0800
+
+# SOC registers configuration using bootrom header extension
+# Maximum KWBIMAGE_MAX_CONFIG configurations allowed
+
+# Configure RGMII-0 interface pad voltage to 1.8V (SHOULD BE SAME)
+DATA 0xffd100e0 0x1b1b1b9b
+
+#Dram initalization for SINGLE x16 CL=3 @ 200MHz (need CL=3 @ 200MHz?)
+DATA 0xffd01400 0x43000618 # DDR Configuration register
+# bit13-0: 0x200 (200 DDR2 clks refresh rate)
+# bit23-14: zero
+# bit24: 1= enable exit self refresh mode on DDR access
+# bit25: 1 required
+# bit29-26: zero
+# bit31-30: 01
+
+DATA 0xffd01404 0x34143000 # DDR Controller Control Low
+# bit 4: 0=addr/cmd in smame cycle
+# bit 5: 0=clk is driven during self refresh, we don't care for APX
+# bit 6: 0=use recommended falling edge of clk for addr/cmd
+# bit14: 0=input buffer always powered up
+# bit18: 1=cpu lock transaction enabled
+# bit23-20: 3=recommended value for CL=3 and STARTBURST_DEL disabled bit31=0
+# bit27-24: 6= CL+3, STARTBURST sample stages, for freqs 400MHz, unbuffered DIMM
+# bit30-28: 3 required
+# bit31: 0=no additional STARTBURST delay
+
+DATA 0xffd01408 0x11012227 # DDR Timing (Low) (active cycles value +1)
+# bit3-0: TRAS lsbs
+# bit7-4: TRCD
+# bit11- 8: TRP
+# bit15-12: TWR
+# bit19-16: TWTR
+# bit20: TRAS msb
+# bit23-21: 0x0
+# bit27-24: TRRD
+# bit31-28: TRTP
+
+DATA 0xffd0140c 0x00000819 # DDR Timing (High)
+# bit6-0: TRFC
+# bit8-7: TR2R
+# bit10-9: TR2W
+# bit12-11: TW2W
+# bit31-13: zero required
+
+DATA 0xffd01410 0x00000001 # DDR Address Control (changed to Dockstar vals)
+# bit1-0: 00, Cs0width=x16
+# bit3-2: 10, Cs0size=512Mb
+# bit5-4: 00, Cs2width=nonexistent
+# bit7-6: 00, Cs1size =nonexistent
+# bit9-8: 00, Cs2width=nonexistent
+# bit11-10: 00, Cs2size =nonexistent
+# bit13-12: 00, Cs3width=nonexistent
+# bit15-14: 00, Cs3size =nonexistent
+# bit16: 0, Cs0AddrSel
+# bit17: 0, Cs1AddrSel
+# bit18: 0, Cs2AddrSel
+# bit19: 0, Cs3AddrSel
+# bit31-20: 0 required
+
+DATA 0xffd01414 0x00000000 # DDR Open Pages Control
+# bit0: 0, OpenPage enabled
+# bit31-1: 0 required
+
+DATA 0xffd01418 0x00000000 # DDR Operation
+# bit3-0: 0x0, DDR cmd
+# bit31-4: 0 required
+
+DATA 0xffd0141c 0x00000632 # DDR Mode
+# bit2-0: 2, BurstLen=2 required
+# bit3: 0, BurstType=0 required
+# bit6-4: 4, CL=5 (<===== change to CL=3 ?)
+# bit7: 0, TestMode=0 normal
+# bit8: 0, DLL reset=0 normal
+# bit11-9: 6, auto-precharge write recovery ????????????
+# bit12: 0, PD must be zero
+# bit31-13: 0 required
+
+DATA 0xffd01420 0x00000040 # DDR Extended Mode
+# bit0: 0, DDR DLL enabled
+# bit1: 0, DDR drive strenght normal
+# bit2: 0, DDR ODT control lsd (disabled)
+# bit5-3: 000, required
+# bit6: 1, DDR ODT control msb, (disabled)
+# bit9-7: 000, required
+# bit10: 0, differential DQS enabled
+# bit11: 0, required
+# bit12: 0, DDR output buffer enabled
+# bit31-13: 0 required
+
+DATA 0xffd01424 0x0000F07F # DDR Controller Control High
+# bit2-0: 111, required
+# bit3 : 1 , MBUS Burst Chop disabled
+# bit6-4: 111, required
+# bit7 : 0
+# bit8 : 0 , no sample stage
+# bit9 : 0 , no half clock cycle addition to dataout
+# bit10 : 0 , 1/4 clock cycle skew enabled for addr/ctl signals
+# bit11 : 0 , 1/4 clock cycle skew disabled for write mesh
+# bit15-12: 1111 required
+# bit31-16: 0 required
+
+DATA 0xffd01428 0x00085520 # DDR2 ODT Read Timing (default values)
+DATA 0xffd0147c 0x00008552 # DDR2 ODT Write Timing (default values)
+
+DATA 0xFFD01500 0x00000000 # CS[0]n Base address to 0x0
+DATA 0xFFD01504 0x07FFFFF1 # CS[0]n Size
+# bit0: 1, Window enabled
+# bit1: 0, Write Protect disabled
+# bit3-2: 00, CS0 hit selected
+# bit23-4: ones, required
+# bit31-24: 0x07, Size (i.e. 128MB)
+
+DATA 0xFFD0150C 0x00000000 # CS[1]n Size, window disabled
+DATA 0xFFD01514 0x00000000 # CS[2]n Size, window disabled
+DATA 0xFFD0151C 0x00000000 # CS[3]n Size, window disabled
+
+DATA 0xffd01494 0x00030000 # DDR ODT Control (Low) (DONE)
+# bit3-0: 2, ODT0Rd, MODT[0] asserted during read from DRAM CS1
+# bit7-4: 1, ODT0Rd, MODT[0] asserted during read from DRAM CS0
+# bit19-16:2, ODT0Wr, MODT[0] asserted during write to DRAM CS1
+# bit23-20:1, ODT0Wr, MODT[0] asserted during write to DRAM CS0
+
+DATA 0xffd01498 0x00000000 # DDR ODT Control (High) (DONE)
+# bit1-0: 00, ODT0 controlled by ODT Control (low) register above
+# bit3-2: 01, ODT1 active NEVER!
+# bit31-4: zero, required
+
+DATA 0xffd0149c 0x0000e803 # CPU ODT Control (DONE)
+DATA 0xffd01480 0x00000001 # DDR Initialization Control (DONE)
+#bit0=1, enable DDR init upon this register write
+
+# End of Header extension
+DATA 0x0 0x0
diff --git a/board/cloudengines/pogo_v4/pogo_v4.c b/board/cloudengines/pogo_v4/pogo_v4.c
new file mode 100644
index 0000000..61ce0d5
--- /dev/null
+++ b/board/cloudengines/pogo_v4/pogo_v4.c
@@ -0,0 +1,148 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2014-2022 Tony Dinh <mibodhi@gmail.com>
+ *
+ * Based on
+ * Copyright (C) 2012 David Purdy <david.c.purdy@gmail.com>
+ *
+ * Based on Kirkwood support:
+ * (C) Copyright 2009
+ * Marvell Semiconductor <www.marvell.com>
+ * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
+ */
+
+#include <common.h>
+#include <netdev.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/soc.h>
+#include <asm/arch/mpp.h>
+#include <asm/io.h>
+#include <asm/arch/gpio.h>
+#include <asm/mach-types.h>
+#include <bootstage.h>
+#include <command.h>
+#include <init.h>
+#include <linux/bitops.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* GPIO configuration */
+#define POGO_V4_OE_LOW (~(0))
+#define POGO_V4_OE_HIGH (~(0))
+#define POGO_V4_OE_VAL_LOW BIT(29)
+#define POGO_V4_OE_VAL_HIGH 0
+
+/* button */
+#define BTN_EJECT 29
+
+int board_early_init_f(void)
+{
+ /*
+ * default gpio configuration
+ * There are maximum 64 gpios controlled through 2 sets of registers
+ * the below configuration configures mainly initial LED status
+ */
+ mvebu_config_gpio(POGO_V4_OE_VAL_LOW,
+ POGO_V4_OE_VAL_HIGH,
+ POGO_V4_OE_LOW, POGO_V4_OE_HIGH);
+
+ /* Multi-Purpose Pins Functionality configuration */
+ u32 kwmpp_config[] = {
+ MPP0_NF_IO2,
+ MPP1_NF_IO3,
+ MPP2_NF_IO4,
+ MPP3_NF_IO5,
+ MPP4_NF_IO6,
+ MPP5_NF_IO7,
+ MPP6_SYSRST_OUTn,
+ MPP7_GPO,
+ MPP8_TW_SDA,
+ MPP9_TW_SCK,
+ MPP10_UART0_TXD,
+ MPP11_UART0_RXD,
+ MPP12_SD_CLK,
+ MPP13_SD_CMD,
+ MPP14_SD_D0,
+ MPP15_SD_D1,
+ MPP16_SD_D2,
+ MPP17_SD_D3,
+ MPP18_NF_IO0,
+ MPP19_NF_IO1,
+ MPP20_SATA1_ACTn,
+ MPP21_SATA0_ACTn,
+ MPP22_GPIO, /* Green LED */
+ MPP23_GPIO,
+ MPP24_GPIO, /* Red LED */
+ MPP25_GPIO,
+ MPP26_GPIO,
+ MPP27_GPIO,
+ MPP28_GPIO,
+ MPP29_GPIO, /* Eject button */
+ MPP30_GPIO,
+ MPP31_GPIO,
+ MPP32_GPIO,
+ MPP33_GPIO,
+ MPP34_GPIO,
+ MPP35_GPIO, /* FR6192 has only 36 GPIOs */
+ 0
+ };
+ kirkwood_mpp_conf(kwmpp_config, NULL);
+
+ return 0;
+}
+
+int board_eth_init(struct bd_info *bis)
+{
+ return cpu_eth_init(bis);
+}
+
+int board_late_init(void)
+{
+ /* Do late init to ensure successful enumeration of XHCI devices */
+ pci_init();
+ return 0;
+}
+
+int board_init(void)
+{
+ /* Boot parameters address */
+ gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
+
+ return 0;
+}
+
+#if CONFIG_IS_ENABLED(BOOTSTAGE)
+#define GREEN_LED BIT(22)
+#define RED_LED BIT(24)
+#define BOTH_LEDS (GREEN_LED | RED_LED)
+#define NEITHER_LED 0
+
+static void set_leds(u32 leds, u32 blinking)
+{
+ struct kwgpio_registers *r;
+ u32 oe;
+ u32 bl;
+
+ r = (struct kwgpio_registers *)MVEBU_GPIO0_BASE;
+ oe = readl(&r->oe) | BOTH_LEDS;
+ writel(oe & ~leds, &r->oe); /* active low */
+ bl = readl(&r->blink_en) & ~BOTH_LEDS;
+ writel(bl | blinking, &r->blink_en);
+}
+
+void show_boot_progress(int val)
+{
+ switch (val) {
+ case BOOTSTAGE_ID_RUN_OS: /* booting Linux */
+ set_leds(BOTH_LEDS, NEITHER_LED);
+ break;
+ case BOOTSTAGE_ID_NET_ETH_START: /* Ethernet initialization */
+ set_leds(GREEN_LED, GREEN_LED);
+ break;
+ default:
+ if (val < 0) /* error */
+ set_leds(RED_LED, RED_LED);
+ break;
+ }
+}
+#endif
diff --git a/configs/am64x_evm_a53_defconfig b/configs/am64x_evm_a53_defconfig
index 77010a3..7397436 100644
--- a/configs/am64x_evm_a53_defconfig
+++ b/configs/am64x_evm_a53_defconfig
@@ -38,8 +38,8 @@ CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x1400
CONFIG_SPL_DMA=y
CONFIG_SPL_ENV_SUPPORT=y
-CONFIG_SPL_I2C=y
CONFIG_SPL_ETH=y
+CONFIG_SPL_I2C=y
CONFIG_SPL_DM_MAILBOX=y
CONFIG_SPL_DM_SPI_FLASH=y
CONFIG_SPL_NET=y
diff --git a/configs/am64x_evm_r5_defconfig b/configs/am64x_evm_r5_defconfig
index e51a251..61138dd 100644
--- a/configs/am64x_evm_r5_defconfig
+++ b/configs/am64x_evm_r5_defconfig
@@ -40,8 +40,8 @@ CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x400
CONFIG_SPL_DMA=y
CONFIG_SPL_ENV_SUPPORT=y
-CONFIG_SPL_I2C=y
CONFIG_SPL_ETH=y
+CONFIG_SPL_I2C=y
CONFIG_SPL_DM_MAILBOX=y
CONFIG_SPL_DM_SPI_FLASH=y
CONFIG_SPL_NET=y
@@ -111,14 +111,14 @@ CONFIG_MMC_SDHCI_AM654=y
CONFIG_DM_SPI_FLASH=y
CONFIG_SPI_FLASH_SPANSION=y
CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_PHY_TI_DP83867=y
+CONFIG_DM_ETH=y
+CONFIG_TI_AM65_CPSW_NUSS=y
CONFIG_PHY=y
CONFIG_SPL_PHY=y
CONFIG_PHY_CADENCE_SIERRA=y
CONFIG_PHY_CADENCE_TORRENT=y
CONFIG_PHY_J721E_WIZ=y
-CONFIG_PHY_TI_DP83867=y
-CONFIG_DM_ETH=y
-CONFIG_TI_AM65_CPSW_NUSS=y
CONFIG_PINCTRL=y
# CONFIG_PINCTRL_GENERIC is not set
CONFIG_SPL_PINCTRL=y
diff --git a/configs/bayleybay_defconfig b/configs/bayleybay_defconfig
index 40743ea..1f72c53 100644
--- a/configs/bayleybay_defconfig
+++ b/configs/bayleybay_defconfig
@@ -13,7 +13,6 @@ CONFIG_HAVE_VGA_BIOS=y
CONFIG_VGA_BIOS_ADDR=0xfffb0000
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_SEABIOS=y
CONFIG_FIT=y
CONFIG_BOOTSTAGE=y
@@ -60,4 +59,5 @@ CONFIG_USB_KEYBOARD=y
CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_11B=y
CONFIG_CONSOLE_SCROLL_LINES=5
+CONFIG_GENERATE_ACPI_TABLE=y
# CONFIG_GZIP is not set
diff --git a/configs/chromebook_coral_defconfig b/configs/chromebook_coral_defconfig
index 8a11fec..0cd8f39 100644
--- a/configs/chromebook_coral_defconfig
+++ b/configs/chromebook_coral_defconfig
@@ -16,7 +16,6 @@ CONFIG_VENDOR_GOOGLE=y
CONFIG_TARGET_CHROMEBOOK_CORAL=y
CONFIG_DEBUG_UART=y
CONFIG_FSP_VERSION2=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_HAVE_ACPI_RESUME=y
CONFIG_INTEL_CAR_CQOS=y
CONFIG_X86_OFFSET_U_BOOT=0xffd00000
@@ -116,6 +115,7 @@ CONFIG_SPL_FS_CBFS=y
CONFIG_FAT_WRITE=y
# CONFIG_SPL_USE_TINY_PRINTF is not set
CONFIG_TPL_USE_TINY_PRINTF=y
+CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_CMD_DHRYSTONE=y
CONFIG_TPM=y
# CONFIG_GZIP is not set
diff --git a/configs/conga-qeval20-qa3-e3845-internal-uart_defconfig b/configs/conga-qeval20-qa3-e3845-internal-uart_defconfig
index d35221c..c1cf8cc 100644
--- a/configs/conga-qeval20-qa3-e3845-internal-uart_defconfig
+++ b/configs/conga-qeval20-qa3-e3845-internal-uart_defconfig
@@ -16,7 +16,6 @@ CONFIG_HAVE_VGA_BIOS=y
CONFIG_VGA_BIOS_ADDR=0xfffb0000
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_HAVE_ACPI_RESUME=y
CONFIG_SEABIOS=y
CONFIG_FIT=y
@@ -70,4 +69,5 @@ CONFIG_USB_KEYBOARD=y
CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_114=y
CONFIG_CONSOLE_SCROLL_LINES=5
+CONFIG_GENERATE_ACPI_TABLE=y
# CONFIG_GZIP is not set
diff --git a/configs/conga-qeval20-qa3-e3845_defconfig b/configs/conga-qeval20-qa3-e3845_defconfig
index 98015a8..5cad4d7 100644
--- a/configs/conga-qeval20-qa3-e3845_defconfig
+++ b/configs/conga-qeval20-qa3-e3845_defconfig
@@ -12,7 +12,6 @@ CONFIG_HAVE_VGA_BIOS=y
CONFIG_VGA_BIOS_ADDR=0xfffa0000
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_HAVE_ACPI_RESUME=y
CONFIG_SEABIOS=y
CONFIG_FIT=y
@@ -66,4 +65,5 @@ CONFIG_USB_KEYBOARD=y
CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_114=y
CONFIG_CONSOLE_SCROLL_LINES=5
+CONFIG_GENERATE_ACPI_TABLE=y
# CONFIG_GZIP is not set
diff --git a/configs/dfi-bt700-q7x-151_defconfig b/configs/dfi-bt700-q7x-151_defconfig
index 3af6c04..60077ed 100644
--- a/configs/dfi-bt700-q7x-151_defconfig
+++ b/configs/dfi-bt700-q7x-151_defconfig
@@ -11,7 +11,6 @@ CONFIG_HAVE_VGA_BIOS=y
CONFIG_VGA_BIOS_ADDR=0xfffa0000
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_HAVE_ACPI_RESUME=y
CONFIG_SEABIOS=y
CONFIG_FIT=y
@@ -65,4 +64,5 @@ CONFIG_USB_ETHER_RTL8152=y
CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_114=y
CONFIG_CONSOLE_SCROLL_LINES=5
+CONFIG_GENERATE_ACPI_TABLE=y
# CONFIG_GZIP is not set
diff --git a/configs/edison_defconfig b/configs/edison_defconfig
index 8f82c2e..be19832 100644
--- a/configs/edison_defconfig
+++ b/configs/edison_defconfig
@@ -9,7 +9,6 @@ CONFIG_ENV_OFFSET_REDUND=0x600000
CONFIG_VENDOR_INTEL=y
CONFIG_TARGET_EDISON=y
CONFIG_SMP=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_SYS_LOAD_ADDR=0x100000
CONFIG_BOARD_EARLY_INIT_R=y
CONFIG_LAST_STAGE_INIT=y
@@ -48,4 +47,5 @@ CONFIG_USB_GADGET_PRODUCT_NUM=0x0a99
CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_WDT=y
CONFIG_WDT_TANGIER=y
+CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_SHA1=y
diff --git a/configs/galileo_defconfig b/configs/galileo_defconfig
index eaa9021..0a4c207 100644
--- a/configs/galileo_defconfig
+++ b/configs/galileo_defconfig
@@ -9,7 +9,6 @@ CONFIG_VENDOR_INTEL=y
CONFIG_TARGET_GALILEO=y
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_FIT=y
CONFIG_SHOW_BOOT_PROGRESS=y
CONFIG_USE_BOOTARGS=y
@@ -49,4 +48,5 @@ CONFIG_CPU=y
CONFIG_SPI=y
CONFIG_USB_STORAGE=y
CONFIG_USB_KEYBOARD=y
+CONFIG_GENERATE_ACPI_TABLE=y
# CONFIG_GZIP is not set
diff --git a/configs/goflexhome_defconfig b/configs/goflexhome_defconfig
index ec8b739..e6eb00a 100644
--- a/configs/goflexhome_defconfig
+++ b/configs/goflexhome_defconfig
@@ -2,6 +2,7 @@ CONFIG_ARM=y
CONFIG_SKIP_LOWLEVEL_INIT=y
CONFIG_SYS_DCACHE_OFF=y
CONFIG_ARCH_CPU_INIT=y
+CONFIG_SYS_THUMB_BUILD=y
CONFIG_ARCH_KIRKWOOD=y
CONFIG_SYS_KWD_CONFIG="board/Seagate/goflexhome/kwbimage.cfg"
CONFIG_SYS_TEXT_BASE=0x600000
@@ -47,6 +48,7 @@ CONFIG_SATA_MV=y
# CONFIG_MMC is not set
CONFIG_MTD=y
CONFIG_MTD_RAW_NAND=y
+CONFIG_PHY_MARVELL=y
CONFIG_DM_ETH=y
CONFIG_MVGBE=y
CONFIG_MII=y
diff --git a/configs/minnowmax_defconfig b/configs/minnowmax_defconfig
index 83accc3..c4d37db 100644
--- a/configs/minnowmax_defconfig
+++ b/configs/minnowmax_defconfig
@@ -16,7 +16,6 @@ CONFIG_HAVE_VGA_BIOS=y
CONFIG_VGA_BIOS_ADDR=0xfffb0000
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_HAVE_ACPI_RESUME=y
CONFIG_SEABIOS=y
CONFIG_FIT=y
@@ -65,4 +64,5 @@ CONFIG_USB_STORAGE=y
CONFIG_USB_KEYBOARD=y
CONFIG_VIDEO_COPY=y
CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
+CONFIG_GENERATE_ACPI_TABLE=y
# CONFIG_GZIP is not set
diff --git a/configs/pogo_v4_defconfig b/configs/pogo_v4_defconfig
new file mode 100644
index 0000000..1cf409c
--- /dev/null
+++ b/configs/pogo_v4_defconfig
@@ -0,0 +1,80 @@
+CONFIG_ARM=y
+CONFIG_SKIP_LOWLEVEL_INIT=y
+CONFIG_SYS_DCACHE_OFF=y
+CONFIG_ARCH_CPU_INIT=y
+CONFIG_SYS_THUMB_BUILD=y
+CONFIG_ARCH_KIRKWOOD=y
+CONFIG_SYS_KWD_CONFIG="board/cloudengines/pogo_v4/kwbimage.cfg"
+CONFIG_SYS_TEXT_BASE=0x600000
+CONFIG_TARGET_POGO_V4=y
+CONFIG_ENV_SIZE=0x20000
+CONFIG_ENV_OFFSET=0xC0000
+CONFIG_DEFAULT_DEVICE_TREE="kirkwood-pogoplug-series-4"
+CONFIG_IDENT_STRING="\nPogoplug V4"
+CONFIG_SYS_LOAD_ADDR=0x800000
+CONFIG_BOOTSTAGE=y
+CONFIG_SHOW_BOOT_PROGRESS=y
+CONFIG_BOOTDELAY=10
+CONFIG_USE_BOOTCOMMAND=y
+CONFIG_BOOTCOMMAND="setenv bootargs ${bootargs_console}; run bootcmd_usb; bootm 0x00800000 0x01100000 0x2c00000"
+CONFIG_USE_PREBOOT=y
+CONFIG_BOARD_LATE_INIT=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="Pogo_V4> "
+CONFIG_CMD_BOOTZ=y
+# CONFIG_BOOTM_PLAN9 is not set
+# CONFIG_BOOTM_RTEMS is not set
+# CONFIG_BOOTM_VXWORKS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MMC=y
+CONFIG_CMD_MTD=y
+CONFIG_CMD_NAND=y
+CONFIG_CMD_PCI=y
+CONFIG_CMD_SATA=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_SNTP=y
+CONFIG_CMD_DNS=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
+CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
+CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:2M(u-boot),3M(uImage),3M(uImage2),8M(failsafe),112M(root)"
+CONFIG_CMD_UBI=y
+CONFIG_ISO_PARTITION=y
+CONFIG_EFI_PARTITION=y
+CONFIG_PARTITION_TYPE_GUID=y
+CONFIG_OF_CONTROL=y
+CONFIG_ENV_OVERWRITE=y
+CONFIG_ENV_IS_IN_NAND=y
+CONFIG_VERSION_VARIABLE=y
+CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_NETCONSOLE=y
+CONFIG_DM=y
+CONFIG_SATA_MV=y
+CONFIG_KIRKWOOD_GPIO=y
+# CONFIG_MMC_HW_PARTITIONING is not set
+CONFIG_MVEBU_MMC=y
+CONFIG_MTD=y
+CONFIG_MTD_RAW_NAND=y
+CONFIG_PHY_MARVELL=y
+CONFIG_DM_ETH=y
+CONFIG_MVGBE=y
+CONFIG_MII=y
+CONFIG_PCI=y
+CONFIG_PCI_MVEBU=y
+CONFIG_DM_RTC=y
+CONFIG_RTC_EMULATION=y
+CONFIG_SYS_NS16550=y
+CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_PCI=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_NAND=y
diff --git a/configs/qemu-x86_64_defconfig b/configs/qemu-x86_64_defconfig
index 2dfb48b..74beffc 100644
--- a/configs/qemu-x86_64_defconfig
+++ b/configs/qemu-x86_64_defconfig
@@ -15,7 +15,6 @@ CONFIG_DEBUG_UART=y
CONFIG_SMP=y
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_X86_OFFSET_U_BOOT=0xfff00000
CONFIG_DISTRO_DEFAULTS=y
CONFIG_FIT=y
@@ -64,4 +63,5 @@ CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_USER=y
CONFIG_FRAMEBUFFER_VESA_MODE=0x144
CONFIG_CONSOLE_SCROLL_LINES=5
+CONFIG_GENERATE_ACPI_TABLE=y
# CONFIG_GZIP is not set
diff --git a/configs/qemu-x86_defconfig b/configs/qemu-x86_defconfig
index 6be7ce0..9181019 100644
--- a/configs/qemu-x86_defconfig
+++ b/configs/qemu-x86_defconfig
@@ -8,7 +8,6 @@ CONFIG_DEFAULT_DEVICE_TREE="qemu-x86_i440fx"
CONFIG_SMP=y
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_DISTRO_DEFAULTS=y
CONFIG_FIT=y
CONFIG_BOOTSTAGE=y
@@ -46,4 +45,5 @@ CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_USER=y
CONFIG_FRAMEBUFFER_VESA_MODE=0x144
CONFIG_CONSOLE_SCROLL_LINES=5
+CONFIG_GENERATE_ACPI_TABLE=y
# CONFIG_GZIP is not set
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index d0886b7..f852743 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -301,6 +301,7 @@ CONFIG_CMD_DHRYSTONE=y
CONFIG_ECDSA=y
CONFIG_ECDSA_VERIFY=y
CONFIG_TPM=y
+CONFIG_SHA384=y
CONFIG_LZ4=y
CONFIG_ERRNO_STR=y
CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y
@@ -312,4 +313,3 @@ CONFIG_TEST_FDTDEC=y
CONFIG_UNIT_TEST=y
CONFIG_UT_TIME=y
CONFIG_UT_DM=y
-CONFIG_SHA384=y
diff --git a/configs/som-db5800-som-6867_defconfig b/configs/som-db5800-som-6867_defconfig
index 9c9b397..9781b10 100644
--- a/configs/som-db5800-som-6867_defconfig
+++ b/configs/som-db5800-som-6867_defconfig
@@ -14,7 +14,6 @@ CONFIG_SMP=y
CONFIG_HAVE_VGA_BIOS=y
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_SEABIOS=y
CONFIG_FIT=y
CONFIG_FIT_SIGNATURE=y
@@ -61,4 +60,5 @@ CONFIG_USB_KEYBOARD=y
CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
CONFIG_CONSOLE_SCROLL_LINES=5
+CONFIG_GENERATE_ACPI_TABLE=y
# CONFIG_GZIP is not set
diff --git a/configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig b/configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig
index ffe5696..4a9bbef 100644
--- a/configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig
+++ b/configs/theadorable-x86-conga-qa3-e3845-pcie-x4_defconfig
@@ -15,7 +15,6 @@ CONFIG_HAVE_VGA_BIOS=y
CONFIG_VGA_BIOS_ADDR=0xfffb0000
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_HAVE_ACPI_RESUME=y
CONFIG_SEABIOS=y
CONFIG_FIT=y
@@ -69,4 +68,5 @@ CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_114=y
CONFIG_CONSOLE_SCROLL_LINES=5
CONFIG_BMP_16BPP=y
+CONFIG_GENERATE_ACPI_TABLE=y
# CONFIG_GZIP is not set
diff --git a/configs/theadorable-x86-conga-qa3-e3845_defconfig b/configs/theadorable-x86-conga-qa3-e3845_defconfig
index ec60abb..66aab79 100644
--- a/configs/theadorable-x86-conga-qa3-e3845_defconfig
+++ b/configs/theadorable-x86-conga-qa3-e3845_defconfig
@@ -14,7 +14,6 @@ CONFIG_HAVE_VGA_BIOS=y
CONFIG_VGA_BIOS_ADDR=0xfffb0000
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_HAVE_ACPI_RESUME=y
CONFIG_SEABIOS=y
CONFIG_FIT=y
@@ -68,4 +67,5 @@ CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_114=y
CONFIG_CONSOLE_SCROLL_LINES=5
CONFIG_BMP_16BPP=y
+CONFIG_GENERATE_ACPI_TABLE=y
# CONFIG_GZIP is not set
diff --git a/configs/theadorable-x86-dfi-bt700_defconfig b/configs/theadorable-x86-dfi-bt700_defconfig
index c34fa83..2f87c08 100644
--- a/configs/theadorable-x86-dfi-bt700_defconfig
+++ b/configs/theadorable-x86-dfi-bt700_defconfig
@@ -13,7 +13,6 @@ CONFIG_HAVE_VGA_BIOS=y
CONFIG_VGA_BIOS_ADDR=0xfffb0000
CONFIG_GENERATE_PIRQ_TABLE=y
CONFIG_GENERATE_MP_TABLE=y
-CONFIG_GENERATE_ACPI_TABLE=y
CONFIG_HAVE_ACPI_RESUME=y
CONFIG_SEABIOS=y
CONFIG_FIT=y
@@ -65,4 +64,5 @@ CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
CONFIG_FRAMEBUFFER_VESA_MODE_114=y
CONFIG_CONSOLE_SCROLL_LINES=5
CONFIG_BMP_16BPP=y
+CONFIG_GENERATE_ACPI_TABLE=y
# CONFIG_GZIP is not set
diff --git a/configs/tools-only_defconfig b/configs/tools-only_defconfig
index b78e509..1f8e90a6 100644
--- a/configs/tools-only_defconfig
+++ b/configs/tools-only_defconfig
@@ -18,7 +18,6 @@ CONFIG_MISC_INIT_F=y
CONFIG_OF_CONTROL=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
# CONFIG_NET is not set
-# CONFIG_GENERATE_ACPI_TABLE is not set
# CONFIG_ACPIGEN is not set
CONFIG_AXI=y
CONFIG_AXI_SANDBOX=y
@@ -33,4 +32,5 @@ CONFIG_I2C_EDID=y
# CONFIG_VIRTIO_MMIO is not set
# CONFIG_VIRTIO_PCI is not set
# CONFIG_VIRTIO_SANDBOX is not set
+# CONFIG_GENERATE_ACPI_TABLE is not set
# CONFIG_EFI_LOADER is not set
diff --git a/include/configs/goflexhome.h b/include/configs/goflexhome.h
index 90e37d9..c279579 100644
--- a/include/configs/goflexhome.h
+++ b/include/configs/goflexhome.h
@@ -1,5 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
+ * Copyright (C) 2022 Tony Dinh <mibodhi@gmai.com>
* Copyright (C) 2013 Suriyan Ramasami <suriyan.r@gmail.com>
*
* Based on dockstar.h originally written by
@@ -14,55 +15,40 @@
#ifndef _CONFIG_GOFLEXHOME_H
#define _CONFIG_GOFLEXHOME_H
+#include <linux/bitops.h>
+
/*
* Default GPIO configuration and LED status
*/
#define GOFLEXHOME_OE_LOW (~(0))
#define GOFLEXHOME_OE_HIGH (~(0))
-#define GOFLEXHOME_OE_VAL_LOW (1 << 29) /* USB_PWEN low */
-#define GOFLEXHOME_OE_VAL_HIGH (1 << 17) /* LED pin high */
-
-/* PHY related */
-#define MV88E1116_LED_FCTRL_REG 10
-#define MV88E1116_CPRSP_CR3_REG 21
-#define MV88E1116_MAC_CTRL_REG 21
-#define MV88E1116_PGADR_REG 22
-#define MV88E1116_RGMII_TXTM_CTRL (1 << 4)
-#define MV88E1116_RGMII_RXTM_CTRL (1 << 5)
+#define GOFLEXHOME_OE_VAL_LOW BIT(29) /* USB_PWEN low */
+#define GOFLEXHOME_OE_VAL_HIGH BIT(17) /* LED pin high */
#include "mv-common.h"
/*
- * Environment variables configurations
- */
-/*
- * max 4k env size is enough, but in case of nand
- * it has to be rounded to sector size
- */
-
-/*
* Default environment variables
*/
#define CONFIG_EXTRA_ENV_SETTINGS \
"console=console=ttyS0,115200\0" \
"mtdids=nand0=orion_nand\0" \
- "mtdparts="CONFIG_MTDPARTS_DEFAULT \
+ "mtdparts=" CONFIG_MTDPARTS_DEFAULT \
"kernel=/boot/uImage\0" \
"bootargs_root=ubi.mtd=root root=ubi0:root rootfstype=ubifs ro\0"
/*
* Ethernet Driver configuration
*/
-#ifdef CONFIG_CMD_NET
#define CONFIG_MVGBE_PORTS {1, 0} /* enable port 0 only */
#define CONFIG_PHY_BASE_ADR 0
-#endif /* CONFIG_CMD_NET */
+#ifdef CONFIG_RESET_PHY_R
+#undef CONFIG_RESET_PHY_R /* remove legacy reset_phy() */
+#endif
/* SATA driver configuration */
-#ifdef CONFIG_SATA
#define CONFIG_SYS_SATA_MAX_DEVICE 1
#define CONFIG_LBA48
-#endif /* CONFIG_SATA */
#endif /* _CONFIG_GOFLEXHOME_H */
diff --git a/include/configs/pogo_v4.h b/include/configs/pogo_v4.h
new file mode 100644
index 0000000..568a936
--- /dev/null
+++ b/include/configs/pogo_v4.h
@@ -0,0 +1,56 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (C) 2014-2022 Tony Dinh <mibodhi@gmail.com>
+ *
+ * Based on
+ * Copyright (C) 2012
+ * David Purdy <david.c.purdy@gmail.com>
+ *
+ * Based on Kirkwood support:
+ * (C) Copyright 2009
+ * Marvell Semiconductor <www.marvell.com>
+ * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
+ */
+
+#ifndef _CONFIG_POGO_V4_H
+#define _CONFIG_POGO_V4_H
+
+/*
+ * mv-common.h should be defined after CMD configs since it used them
+ * to enable certain macros
+ */
+#include "mv-common.h"
+
+/*
+ * Default environment variables
+ */
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ "dtb_file=/boot/dts/" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \
+ "mtdparts=" CONFIG_MTDPARTS_DEFAULT "\0"\
+ "mtdids=nand0=orion_nand\0"\
+ "bootargs_console=console=ttyS0,115200\0" \
+ "bootcmd_usb=usb start; load usb 0:1 0x00800000 /boot/uImage; " \
+ "load usb 0:1 0x01100000 /boot/uInitrd; " \
+ "load usb 0:1 0x2c00000 $dtb_file\0"
+
+/*
+ * Ethernet Driver configuration
+ */
+#define CONFIG_MVGBE_PORTS {1, 0} /* enable port 0 only */
+#define CONFIG_PHY_BASE_ADR 0
+#ifdef CONFIG_RESET_PHY_R
+#undef CONFIG_RESET_PHY_R /* remove legacy reset_phy() */
+#endif
+
+/*
+ * SATA Driver configuration
+ */
+#define CONFIG_SYS_SATA_MAX_DEVICE 1
+
+/*
+ * Support large disk for SATA and USB
+ */
+#define CONFIG_SYS_64BIT_LBA
+#define CONFIG_LBA48
+
+#endif /* _CONFIG_POGO_V4_H */
diff --git a/scripts/pylint.base b/scripts/pylint.base
index cefdc23..8c650f2 100644
--- a/scripts/pylint.base
+++ b/scripts/pylint.base
@@ -1,215 +1,226 @@
-_testing 0.83
-atf_bl31 -6.00
-atf_fip 0.29
-binman.cbfs_util 8.38
-binman.cbfs_util_test 9.30
-binman.cmdline 9.09
-binman.control 4.92
-binman.elf 6.73
-binman.elf_test 5.41
-binman.entry 3.38
-binman.entry_test 5.34
-binman.fdt_test 3.23
-binman.fip_util 9.86
-binman.fip_util_test 9.75
-binman.fmap_util 6.88
-binman.ftest 7.46
-binman.image 7.05
-binman.image_test 4.48
-binman.main 5.00
-binman.setup 5.00
-binman.state 4.15
-blob -1.58
-blob_dtb -10.00
-blob_ext -19.09
-blob_ext_list -0.32
-blob_named_by_arg -7.78
-blob_phase -5.00
-buildman.board 7.82
-buildman.bsettings 1.71
-buildman.builder 6.91
-buildman.builderthread 7.39
-buildman.cmdline 9.04
-buildman.control 8.10
-buildman.func_test 7.18
-buildman.kconfiglib 7.49
-buildman.main 1.43
-buildman.test 6.17
-buildman.toolchain 6.55
-capsule_defs 5.00
-cbfs -1.44
-collection 2.67
-concurrencytest 7.26
-conftest -3.29
-conftest 1.88
-conftest 5.13
-conftest 6.56
-cros_ec_rw -6.00
-defs 6.67
-dtoc.dtb_platdata 7.90
-dtoc.fdt 4.50
-dtoc.fdt_util 6.70
-dtoc.main 7.78
-dtoc.setup 5.00
-dtoc.src_scan 8.91
-dtoc.test_dtoc 8.56
-dtoc.test_fdt 6.96
-dtoc.test_src_scan 9.43
-efivar 6.71
-endian-swap 9.29
-fdtmap -3.28
-files -7.43
-fill -6.43
-fit 5.32
-fmap -0.29
-fstest_defs 8.33
-fstest_helpers 4.29
-gbb -0.30
-genboardscfg 7.95
-image_header 5.77
-intel_cmc -12.50
-intel_descriptor 4.62
-intel_fit 0.00
-intel_fit_ptr 2.35
-intel_fsp -12.50
-intel_fsp_m -12.50
-intel_fsp_s -12.50
-intel_fsp_t -12.50
-intel_ifwi 2.71
-intel_me -12.50
-intel_mrc -10.00
-intel_refcode -10.00
-intel_vbt -12.50
-intel_vga -12.50
-microcode-tool 7.25
-mkimage 2.57
-moveconfig 8.32
-multiplexed_log 7.49
-opensbi -6.00
-patman 0.00
-patman.checkpatch 8.04
-patman.command 4.74
-patman.commit 3.25
-patman.control 8.14
-patman.cros_subprocess 7.56
-patman.func_test 8.14
-patman.get_maintainer 6.47
-patman.gitutil 5.62
-patman.main 8.23
-patman.patchstream 9.11
-patman.project 6.67
-patman.series 6.16
-patman.settings 5.89
-patman.setup 5.00
-patman.status 8.62
-patman.terminal 7.05
-patman.test_checkpatch 6.81
-patman.test_util 6.89
-patman.tools 4.31
-patman.tout 3.12
-powerpc_mpc85xx_bootpg_resetvec -10.00
-rkmux 6.90
-rmboard 7.76
-scp -6.00
-section 4.68
-sqfs_common 8.41
-test 8.18
-test_000_version 7.50
-test_ab 6.50
-test_abootimg 6.09
-test_authvar 8.93
-test_avb 5.52
-test_basic 0.60
-test_bind -2.99
-test_button 3.33
-test_capsule_firmware 3.89
-test_dfu 5.45
-test_dm 9.52
-test_efi_fit 8.16
-test_efi_loader 7.38
-test_efi_selftest 6.36
-test_env 7.15
-test_ext 0.00
-test_extension 2.14
-test_fit 6.83
-test_fit_ecdsa 7.94
-test_fit_hashes 7.70
-test_fpga 1.81
-test_fs_cmd 8.00
-test_gpio 6.09
-test_gpt 7.67
-test_handoff 5.00
-test_help 5.00
-test_hush_if_test 9.27
-test_log 8.64
-test_lsblk 8.00
-test_md 3.64
-test_mkdir 1.96
-test_mmc_rd 6.05
-test_mmc_wr 3.33
-test_net 6.84
-test_ofplatdata 5.71
-test_part 8.00
-test_pinmux 3.27
-test_pstore 2.31
-test_qfw 8.75
-test_sandbox_exit 6.50
-test_scp03 3.33
-test_sf 7.13
-test_shell_basics 9.58
-test_signed 8.38
-test_signed_intca 8.10
-test_sleep 7.78
-test_spl 2.22
-test_sqfs_load 7.46
-test_sqfs_ls 8.00
-test_stackprotector 5.71
-test_symlink 1.22
-test_tpm2 8.51
-test_ums 6.32
-test_unknown_cmd 5.00
-test_unlink 2.78
-test_unsigned 8.00
-test_ut 7.06
-test_vboot 6.00
-text -0.48
-u_boot -15.71
-u_boot_console_base 7.08
-u_boot_console_exec_attach 9.23
-u_boot_console_sandbox 8.06
-u_boot_dtb -12.22
-u_boot_dtb_with_ucode 0.39
-u_boot_elf -8.42
-u_boot_env 0.74
-u_boot_expanded -10.00
-u_boot_img -15.71
-u_boot_nodtb -15.71
-u_boot_spawn 7.65
-u_boot_spl -10.91
-u_boot_spl_bss_pad -9.29
-u_boot_spl_dtb -12.22
-u_boot_spl_elf -15.71
-u_boot_spl_expanded -9.09
-u_boot_spl_nodtb -10.91
-u_boot_spl_with_ucode_ptr -5.00
-u_boot_tpl -10.91
-u_boot_tpl_bss_pad -9.29
-u_boot_tpl_dtb -12.22
-u_boot_tpl_dtb_with_ucode -7.50
-u_boot_tpl_elf -15.71
-u_boot_tpl_expanded -9.09
-u_boot_tpl_nodtb -10.91
-u_boot_tpl_with_ucode_ptr -20.83
-u_boot_ucode 1.52
-u_boot_utils 6.94
-u_boot_with_ucode_ptr -0.71
-vblock -1.61
-vboot_evil 8.95
-vboot_forge 9.22
-x86_reset16 -15.71
-x86_reset16_spl -15.71
-x86_reset16_tpl -15.71
-x86_start16 -15.71
-x86_start16_spl -15.71
-x86_start16_tpl -15.71
-zynqmp_pm_cfg_obj_convert 6.67
+test_conftest.py 6.43
+test_multiplexed_log.py 7.20
+test_test.py 8.18
+test_tests_test_000_version.py 7.50
+test_tests_test_android_test_ab.py 6.50
+test_tests_test_android_test_abootimg.py 6.09
+test_tests_test_android_test_avb.py 5.52
+test_tests_test_bind.py -2.99
+test_tests_test_button.py 3.33
+test_tests_test_dfu.py 5.45
+test_tests_test_dm.py 9.52
+test_tests_test_efi_capsule_capsule_defs.py 5.00
+test_tests_test_efi_capsule_conftest.py 1.25
+test_tests_test_efi_capsule_test_capsule_firmware.py 3.89
+test_tests_test_efi_fit.py 7.59
+test_tests_test_efi_loader.py 7.38
+test_tests_test_efi_secboot_conftest.py -3.84
+test_tests_test_efi_secboot_defs.py 6.67
+test_tests_test_efi_secboot_test_authvar.py 8.93
+test_tests_test_efi_secboot_test_signed.py 8.38
+test_tests_test_efi_secboot_test_signed_intca.py 8.10
+test_tests_test_efi_secboot_test_unsigned.py 8.00
+test_tests_test_efi_selftest.py 6.36
+test_tests_test_env.py 7.08
+test_tests_test_extension.py 2.14
+test_tests_test_fit.py 6.20
+test_tests_test_fit_ecdsa.py 7.50
+test_tests_test_fit_hashes.py 7.70
+test_tests_test_fpga.py 1.81
+test_tests_test_fs_conftest.py 4.62
+test_tests_test_fs_fstest_defs.py 8.33
+test_tests_test_fs_fstest_helpers.py 4.29
+test_tests_test_fs_test_basic.py 0.40
+test_tests_test_fs_test_ext.py -0.25
+test_tests_test_fs_test_fs_cmd.py 8.00
+test_tests_test_fs_test_mkdir.py 1.96
+test_tests_test_fs_test_squashfs_sqfs_common.py 8.12
+test_tests_test_fs_test_squashfs_test_sqfs_load.py 7.12
+test_tests_test_fs_test_squashfs_test_sqfs_ls.py 8.00
+test_tests_test_fs_test_symlink.py 0.82
+test_tests_test_fs_test_unlink.py 2.22
+test_tests_test_gpio.py 6.09
+test_tests_test_gpt.py 7.67
+test_tests_test_handoff.py 5.00
+test_tests_test_help.py 5.00
+test_tests_test_hush_if_test.py 9.27
+test_tests_test_log.py 8.64
+test_tests_test_lsblk.py 8.00
+test_tests_test_md.py 3.64
+test_tests_test_mmc_rd.py 6.05
+test_tests_test_mmc_wr.py 3.33
+test_tests_test_net.py 6.84
+test_tests_test_ofplatdata.py 5.71
+test_tests_test_part.py 8.00
+test_tests_test_pinmux.py 3.27
+test_tests_test_pstore.py 2.31
+test_tests_test_qfw.py 8.75
+test_tests_test_sandbox_exit.py 6.50
+test_tests_test_scp03.py 3.33
+test_tests_test_sf.py 7.02
+test_tests_test_shell_basics.py 9.58
+test_tests_test_sleep.py 7.78
+test_tests_test_spl.py 2.22
+test_tests_test_stackprotector.py 5.71
+test_tests_test_tpm2.py 8.51
+test_tests_test_ums.py 6.32
+test_tests_test_unknown_cmd.py 5.00
+test_tests_test_ut.py 7.06
+test_tests_test_vboot.py 6.00
+test_tests_vboot_evil.py 8.95
+test_tests_vboot_forge.py 9.22
+test_u_boot_console_base.py 6.80
+test_u_boot_console_exec_attach.py 8.85
+test_u_boot_console_sandbox.py 7.22
+test_u_boot_spawn.py 7.39
+test_u_boot_utils.py 6.25
+tools_binman_bintool 8.59
+tools_binman_bintool_test 9.87
+tools_binman_btool__testing 6.09
+tools_binman_btool_cbfstool 7.39
+tools_binman_btool_fiptool 7.62
+tools_binman_btool_futility 6.96
+tools_binman_btool_ifwitool 3.33
+tools_binman_btool_lz4 5.93
+tools_binman_btool_lzma_alone 6.67
+tools_binman_btool_mkimage 6.79
+tools_binman_cbfs_util 7.77
+tools_binman_cbfs_util_test 9.27
+tools_binman_cmdline 9.03
+tools_binman_comp_util 6.25
+tools_binman_control 4.60
+tools_binman_elf 6.42
+tools_binman_elf_test 5.41
+tools_binman_entry 2.48
+tools_binman_entry_test 5.34
+tools_binman_etype__testing 0.83
+tools_binman_etype_atf_bl31 -6.00
+tools_binman_etype_atf_fip 0.29
+tools_binman_etype_blob -1.58
+tools_binman_etype_blob_dtb -10.00
+tools_binman_etype_blob_ext -19.09
+tools_binman_etype_blob_ext_list 0.00
+tools_binman_etype_blob_named_by_arg -7.78
+tools_binman_etype_blob_phase -5.00
+tools_binman_etype_cbfs -1.44
+tools_binman_etype_collection 2.33
+tools_binman_etype_cros_ec_rw -6.00
+tools_binman_etype_fdtmap -3.61
+tools_binman_etype_files -7.43
+tools_binman_etype_fill -6.43
+tools_binman_etype_fit 5.18
+tools_binman_etype_fmap -0.59
+tools_binman_etype_gbb 0.83
+tools_binman_etype_image_header 5.58
+tools_binman_etype_intel_cmc -12.50
+tools_binman_etype_intel_descriptor 4.62
+tools_binman_etype_intel_fit 0.00
+tools_binman_etype_intel_fit_ptr 2.35
+tools_binman_etype_intel_fsp -12.50
+tools_binman_etype_intel_fsp_m -12.50
+tools_binman_etype_intel_fsp_s -12.50
+tools_binman_etype_intel_fsp_t -12.50
+tools_binman_etype_intel_ifwi 2.88
+tools_binman_etype_intel_me -12.50
+tools_binman_etype_intel_mrc -10.00
+tools_binman_etype_intel_refcode -10.00
+tools_binman_etype_intel_vbt -12.50
+tools_binman_etype_intel_vga -12.50
+tools_binman_etype_mkimage 2.31
+tools_binman_etype_opensbi -6.00
+tools_binman_etype_powerpc_mpc85xx_bootpg_resetvec -10.00
+tools_binman_etype_scp -6.00
+tools_binman_etype_section 4.12
+tools_binman_etype_text -0.48
+tools_binman_etype_u_boot -15.71
+tools_binman_etype_u_boot_dtb -12.22
+tools_binman_etype_u_boot_dtb_with_ucode 0.39
+tools_binman_etype_u_boot_elf -8.42
+tools_binman_etype_u_boot_env 0.74
+tools_binman_etype_u_boot_expanded -10.00
+tools_binman_etype_u_boot_img -15.71
+tools_binman_etype_u_boot_nodtb -15.71
+tools_binman_etype_u_boot_spl -10.91
+tools_binman_etype_u_boot_spl_bss_pad -9.29
+tools_binman_etype_u_boot_spl_dtb -12.22
+tools_binman_etype_u_boot_spl_elf -15.71
+tools_binman_etype_u_boot_spl_expanded -9.09
+tools_binman_etype_u_boot_spl_nodtb -10.91
+tools_binman_etype_u_boot_spl_with_ucode_ptr -5.00
+tools_binman_etype_u_boot_tpl -10.91
+tools_binman_etype_u_boot_tpl_bss_pad -9.29
+tools_binman_etype_u_boot_tpl_dtb -12.22
+tools_binman_etype_u_boot_tpl_dtb_with_ucode -7.50
+tools_binman_etype_u_boot_tpl_elf -15.71
+tools_binman_etype_u_boot_tpl_expanded -9.09
+tools_binman_etype_u_boot_tpl_nodtb -10.91
+tools_binman_etype_u_boot_tpl_with_ucode_ptr -20.83
+tools_binman_etype_u_boot_ucode 1.52
+tools_binman_etype_u_boot_with_ucode_ptr -0.71
+tools_binman_etype_vblock 0.00
+tools_binman_etype_x86_reset16 -15.71
+tools_binman_etype_x86_reset16_spl -15.71
+tools_binman_etype_x86_reset16_tpl -15.71
+tools_binman_etype_x86_start16 -15.71
+tools_binman_etype_x86_start16_spl -15.71
+tools_binman_etype_x86_start16_tpl -15.71
+tools_binman_fdt_test 3.23
+tools_binman_fip_util 9.85
+tools_binman_fip_util_test 10.00
+tools_binman_fmap_util 6.67
+tools_binman_ftest 7.39
+tools_binman_image 6.48
+tools_binman_image_test 4.48
+tools_binman_main 4.29
+tools_binman_setup 5.00
+tools_binman_state 3.43
+tools_buildman_board 7.11
+tools_buildman_bsettings 0.98
+tools_buildman_builder 6.55
+tools_buildman_builderthread 7.35
+tools_buildman_cmdline 8.85
+tools_buildman_control 7.04
+tools_buildman_func_test 6.38
+tools_buildman_kconfiglib 7.48
+tools_buildman_main 1.43
+tools_buildman_test 6.10
+tools_buildman_toolchain 5.62
+tools_concurrencytest_concurrencytest 6.77
+tools_dtoc_dtb_platdata 7.82
+tools_dtoc_fdt 3.47
+tools_dtoc_fdt_util 5.00
+tools_dtoc_main 7.33
+tools_dtoc_setup 5.00
+tools_dtoc_src_scan 8.75
+tools_dtoc_test_dtoc 8.54
+tools_dtoc_test_fdt 6.92
+tools_dtoc_test_src_scan 9.43
+tools_efivar 6.71
+tools_endian-swap 8.93
+tools_genboardscfg 7.27
+tools_microcode-tool 7.19
+tools_moveconfig 8.11
+tools_patman___init__ 0.00
+tools_patman_checkpatch 7.61
+tools_patman_command 4.23
+tools_patman_commit 2.75
+tools_patman_control 8.14
+tools_patman_cros_subprocess 7.41
+tools_patman_func_test 7.87
+tools_patman_get_maintainer 4.71
+tools_patman_gitutil 4.58
+tools_patman_main 8.23
+tools_patman_patchstream 9.04
+tools_patman_project 3.33
+tools_patman_series 5.95
+tools_patman_settings 5.63
+tools_patman_setup 5.00
+tools_patman_status 8.43
+tools_patman_terminal 6.29
+tools_patman_test_checkpatch 6.81
+tools_patman_test_util 6.51
+tools_patman_tools 3.98
+tools_patman_tout 2.97
+tools_rkmux 6.76
+tools_rmboard 7.76
+tools_zynqmp_pm_cfg_obj_convert 6.67
diff --git a/tools/kwboot.c b/tools/kwboot.c
index c3d8ab6..2684f0e 100644
--- a/tools/kwboot.c
+++ b/tools/kwboot.c
@@ -63,7 +63,6 @@ static unsigned char kwboot_msg_debug[] = {
#define EOT 4 /* sender end of block transfer */
#define ACK 6 /* target block ack */
#define NAK 21 /* target block negative ack */
-#define CAN 24 /* target/sender transfer cancellation */
#define KWBOOT_XM_BLKSZ 128 /* xmodem block size */
@@ -75,7 +74,7 @@ struct kwboot_block {
uint8_t csum;
} __packed;
-#define KWBOOT_BLK_RSP_TIMEO 1000 /* ms */
+#define KWBOOT_BLK_RSP_TIMEO 2000 /* ms */
#define KWBOOT_HDR_RSP_TIMEO 10000 /* ms */
/* ARM code to change baudrate */
@@ -293,13 +292,15 @@ static int blk_rsp_timeo = KWBOOT_BLK_RSP_TIMEO;
static ssize_t
kwboot_write(int fd, const char *buf, size_t len)
{
- size_t tot = 0;
+ ssize_t tot = 0;
while (tot < len) {
ssize_t wr = write(fd, buf + tot, len - tot);
- if (wr < 0)
- return -1;
+ if (wr < 0 && errno == EINTR)
+ continue;
+ else if (wr < 0)
+ return wr;
tot += wr;
}
@@ -408,15 +409,19 @@ kwboot_tty_recv(int fd, void *buf, size_t len, int timeo)
do {
nfds = select(fd + 1, &rfds, NULL, NULL, &tv);
- if (nfds < 0)
+ if (nfds < 0 && errno == EINTR)
+ continue;
+ else if (nfds < 0)
goto out;
- if (!nfds) {
+ else if (!nfds) {
errno = ETIMEDOUT;
goto out;
}
n = read(fd, buf, len);
- if (n <= 0)
+ if (n < 0 && errno == EINTR)
+ continue;
+ else if (n <= 0)
goto out;
buf = (char *)buf + n;
@@ -718,6 +723,7 @@ out:
static int
kwboot_bootmsg(int tty, void *msg)
{
+ struct kwboot_block block;
int rc;
char c;
int count;
@@ -748,7 +754,40 @@ kwboot_bootmsg(int tty, void *msg)
kwboot_printv("\n");
- return rc;
+ if (rc)
+ return rc;
+
+ /*
+ * At this stage we have sent more boot message patterns and BootROM
+ * (at least on Armada XP and 385) started interpreting sent bytes as
+ * part of xmodem packets. If BootROM is expecting SOH byte as start of
+ * a xmodem packet and it receives byte 0xff, then it throws it away and
+ * sends a NAK reply to host. If BootROM does not receive any byte for
+ * 2s when expecting some continuation of the xmodem packet, it throws
+ * away the partially received xmodem data and sends NAK reply to host.
+ *
+ * Therefore for starting xmodem transfer we have two options: Either
+ * wait 2s or send 132 0xff bytes (which is the size of xmodem packet)
+ * to ensure that BootROM throws away any partially received data.
+ */
+
+ /* flush output queue with remaining boot message patterns */
+ tcflush(tty, TCOFLUSH);
+
+ /* send one xmodem packet with 0xff bytes to force BootROM to re-sync */
+ memset(&block, 0xff, sizeof(block));
+ kwboot_tty_send(tty, &block, sizeof(block), 0);
+
+ /*
+ * Sending 132 bytes via 115200B/8-N-1 takes 11.45 ms, reading 132 bytes
+ * takes 11.45 ms, so waiting for 30 ms should be enough.
+ */
+ usleep(30 * 1000);
+
+ /* flush remaining NAK replies from input queue */
+ tcflush(tty, TCIFLUSH);
+
+ return 0;
}
static int
@@ -826,7 +865,7 @@ _now(void)
static int
_is_xm_reply(char c)
{
- return c == ACK || c == NAK || c == CAN;
+ return c == ACK || c == NAK;
}
static int
@@ -841,9 +880,6 @@ _xm_reply_to_error(int c)
case NAK:
errno = EBADMSG;
break;
- case CAN:
- errno = ECANCELED;
- break;
default:
errno = EPROTO;
break;
@@ -879,7 +915,8 @@ kwboot_baud_magic_handle(int fd, char c, int baudrate)
}
static int
-kwboot_xm_recv_reply(int fd, char *c, int nak_on_non_xm,
+kwboot_xm_recv_reply(int fd, char *c, int stop_on_non_xm,
+ int ignore_nak_reply,
int allow_non_xm, int *non_xm_print,
int baudrate, int *baud_changed)
{
@@ -899,8 +936,14 @@ kwboot_xm_recv_reply(int fd, char *c, int nak_on_non_xm,
}
/* If received xmodem reply, end. */
- if (_is_xm_reply(*c))
+ if (_is_xm_reply(*c)) {
+ if (*c == NAK && ignore_nak_reply) {
+ timeout = recv_until - _now();
+ if (timeout >= 0)
+ continue;
+ }
break;
+ }
/*
* If receiving/printing non-xmodem text output is allowed and
@@ -928,10 +971,8 @@ kwboot_xm_recv_reply(int fd, char *c, int nak_on_non_xm,
*non_xm_print = 1;
}
} else {
- if (nak_on_non_xm) {
- *c = NAK;
+ if (stop_on_non_xm)
break;
- }
timeout = recv_until - _now();
if (timeout < 0) {
errno = ETIMEDOUT;
@@ -945,7 +986,7 @@ kwboot_xm_recv_reply(int fd, char *c, int nak_on_non_xm,
static int
kwboot_xm_sendblock(int fd, struct kwboot_block *block, int allow_non_xm,
- int *done_print, int baudrate)
+ int *done_print, int baudrate, int allow_retries)
{
int non_xm_print, baud_changed;
int rc, err, retries;
@@ -959,7 +1000,7 @@ kwboot_xm_sendblock(int fd, struct kwboot_block *block, int allow_non_xm,
do {
rc = kwboot_tty_send(fd, block, sizeof(*block), 1);
if (rc)
- return rc;
+ goto err;
if (allow_non_xm && !*done_print) {
kwboot_progress(100, '.');
@@ -968,29 +1009,32 @@ kwboot_xm_sendblock(int fd, struct kwboot_block *block, int allow_non_xm,
}
rc = kwboot_xm_recv_reply(fd, &c, retries < 3,
+ retries > 8,
allow_non_xm, &non_xm_print,
baudrate, &baud_changed);
if (rc)
- goto can;
+ goto err;
- if (!allow_non_xm && c != ACK)
- kwboot_progress(-1, '+');
- } while (c == NAK && retries++ < 16);
+ if (!allow_non_xm && c != ACK) {
+ if (c == NAK && allow_retries && retries + 1 < 16)
+ kwboot_progress(-1, '+');
+ else
+ kwboot_progress(-1, 'E');
+ }
+ } while (c == NAK && allow_retries && retries++ < 16);
if (non_xm_print)
kwboot_printv("\n");
if (allow_non_xm && baudrate && !baud_changed) {
fprintf(stderr, "Baudrate was not changed\n");
- rc = -1;
errno = EPROTO;
- goto can;
+ return -1;
}
return _xm_reply_to_error(c);
-can:
+err:
err = errno;
- kwboot_tty_send_char(fd, CAN);
kwboot_printv("\n");
errno = err;
return rc;
@@ -1011,6 +1055,7 @@ kwboot_xm_finish(int fd)
return rc;
rc = kwboot_xm_recv_reply(fd, &c, retries < 3,
+ retries > 8,
0, NULL, 0, NULL);
if (rc)
return rc;
@@ -1043,8 +1088,30 @@ kwboot_xmodem_one(int tty, int *pnum, int header, const uint8_t *data,
last_block = (left <= blksz);
+ /*
+ * Handling of repeated xmodem packets is completely broken in
+ * Armada 385 BootROM - it completely ignores xmodem packet
+ * numbers, they are only used for checksum verification.
+ * BootROM can handle a retry of the xmodem packet only during
+ * the transmission of kwbimage header and only if BootROM
+ * itself sent NAK response to previous attempt (it does it on
+ * checksum failure). During the transmission of kwbimage data
+ * part, BootROM always expects next xmodem packet, even if it
+ * sent NAK to previous attempt - there is absolutely no way to
+ * repair incorrectly transmitted xmodem packet during kwbimage
+ * data part upload. Also, if kwboot receives non-ACK/NAK
+ * response (meaning that original BootROM response was damaged
+ * on UART) there is no way to detect if BootROM accepted xmodem
+ * packet or not and no way to check if kwboot could repeat the
+ * packet or not.
+ *
+ * Stop transfer and return failure if kwboot receives unknown
+ * reply if non-xmodem reply is not allowed (for all xmodem
+ * packets except the last header packet) or when non-ACK reply
+ * is received during data part transfer.
+ */
rc = kwboot_xm_sendblock(tty, &block, header && last_block,
- &done_print, baudrate);
+ &done_print, baudrate, header);
if (rc)
goto out;
@@ -1081,10 +1148,6 @@ kwboot_xmodem(int tty, const void *_img, size_t size, int baudrate)
*/
hdrsz += (KWBOOT_XM_BLKSZ - hdrsz % KWBOOT_XM_BLKSZ) % KWBOOT_XM_BLKSZ;
- kwboot_printv("Waiting 2s and flushing tty\n");
- sleep(2); /* flush isn't effective without it */
- tcflush(tty, TCIOFLUSH);
-
pnum = 1;
rc = kwboot_xmodem_one(tty, &pnum, 1, img, hdrsz, baudrate);
@@ -1568,6 +1631,7 @@ kwboot_img_patch(void *img, size_t *size, int baudrate)
* baudrate (which should be 115200) and do not touch
* UART MPP configuration.
*/
+ hdr->flags |= 0x1;
hdr->options &= ~0x1F;
hdr->options |= MAIN_HDR_V1_OPT_BAUD_DEFAULT;
hdr->options |= 0 << 3;
@@ -1672,6 +1736,8 @@ main(int argc, char **argv)
size_t size;
size_t after_img_rsv;
int baudrate;
+ int prev_optind;
+ int c;
rv = 1;
tty = -1;
@@ -1689,22 +1755,32 @@ main(int argc, char **argv)
kwboot_verbose = isatty(STDOUT_FILENO);
do {
- int c = getopt(argc, argv, "hb:ptaB:dD:q:s:o:");
+ prev_optind = optind;
+ c = getopt(argc, argv, "hbptaB:dD:q:s:o:");
if (c < 0)
break;
switch (c) {
case 'b':
+ if (imgpath || bootmsg || debugmsg)
+ goto usage;
bootmsg = kwboot_msg_boot;
- imgpath = optarg;
+ if (prev_optind == optind)
+ goto usage;
+ if (argv[optind] && argv[optind][0] != '-')
+ imgpath = argv[optind++];
break;
case 'D':
+ if (imgpath || bootmsg || debugmsg)
+ goto usage;
bootmsg = NULL;
imgpath = optarg;
break;
case 'd':
+ if (imgpath || bootmsg || debugmsg)
+ goto usage;
debugmsg = kwboot_msg_debug;
break;
@@ -1744,14 +1820,14 @@ main(int argc, char **argv)
}
} while (1);
- if (!bootmsg && !term && !debugmsg)
- goto usage;
-
- if (argc - optind < 1)
+ if (!bootmsg && !term && !debugmsg && !imgpath)
goto usage;
ttypath = argv[optind++];
+ if (optind != argc)
+ goto usage;
+
tty = kwboot_open_tty(ttypath, imgpath ? 115200 : baudrate);
if (tty < 0) {
perror(ttypath);