mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 09:54:35 +00:00
board: add support for Schneider HMIBSC board
Support for Schneider Electric HMIBSC. Features: - Qualcomm Snapdragon 410C SoC - APQ8016 (4xCortex A53, Adreno 306) - 2GiB RAM - 64GiB eMMC, SD slot - WiFi and Bluetooth - 2x Host, 1x Device USB port - HDMI - Discrete TPM2 chip over SPI Features enabled in U-Boot: - RAUC updates - Environment protection - USB based ethernet adaptors Signed-off-by: Sumit Garg <sumit.garg@linaro.org> Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
This commit is contained in:
parent
8954ef38f7
commit
969e3dd13e
7 changed files with 204 additions and 0 deletions
6
board/schneider/hmibsc/MAINTAINERS
Normal file
6
board/schneider/hmibsc/MAINTAINERS
Normal file
|
@ -0,0 +1,6 @@
|
|||
HMIBSC BOARD
|
||||
M: Sumit Garg <sumit.garg@linaro.org>
|
||||
S: Maintained
|
||||
F: board/schneider/hmibsc/
|
||||
F: include/configs/hmibsc.h
|
||||
F: configs/hmibsc_defconfig
|
40
board/schneider/hmibsc/hmibsc.env
Normal file
40
board/schneider/hmibsc/hmibsc.env
Normal file
|
@ -0,0 +1,40 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
|
||||
loadaddr=0x90000000
|
||||
bootcmd=
|
||||
echo "Booting RAUC A/B system";
|
||||
setenv devtype mmc; setenv devnum 0;
|
||||
test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B";
|
||||
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3;
|
||||
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3;
|
||||
setenv raucslot;
|
||||
for BOOT_SLOT in "${BOOT_ORDER}"; do
|
||||
if test "x${raucslot}" != "x"; then
|
||||
echo "skip remaining slots...";
|
||||
elif test "x${BOOT_SLOT}" = "xA"; then
|
||||
if test ${BOOT_A_LEFT} -gt 0; then
|
||||
setexpr BOOT_A_LEFT ${BOOT_A_LEFT} - 1;
|
||||
echo "Found valid RAUC slot A";
|
||||
setenv raucslot "rauc.slot=A";
|
||||
setenv raucpart A; setenv distro_bootpart 6;
|
||||
fi;
|
||||
elif test "x${BOOT_SLOT}" = "xB"; then
|
||||
if test ${BOOT_B_LEFT} -gt 0; then
|
||||
setexpr BOOT_B_LEFT ${BOOT_B_LEFT} - 1;
|
||||
echo "Found valid RAUC slot B";
|
||||
setenv raucslot "rauc.slot=B";
|
||||
setenv raucpart B; setenv distro_bootpart 7;
|
||||
fi;
|
||||
fi;
|
||||
done;
|
||||
if test -n "${raucslot}"; then
|
||||
setenv bootargs console=ttyMSM1 root=PARTLABEL=rootfs_${raucpart} rw rootwait ${raucslot};
|
||||
saveenv;
|
||||
else
|
||||
echo "No valid RAUC slot found. Resetting tries to 3";
|
||||
setenv BOOT_A_LEFT 3;
|
||||
setenv BOOT_B_LEFT 3;
|
||||
saveenv;
|
||||
reset;
|
||||
fi;
|
||||
load ${devtype} ${devnum}:${distro_bootpart} ${loadaddr} /boot/fitImage && bootm;
|
87
configs/hmibsc_defconfig
Normal file
87
configs/hmibsc_defconfig
Normal file
|
@ -0,0 +1,87 @@
|
|||
CONFIG_ARM=y
|
||||
CONFIG_SYS_VENDOR="schneider"
|
||||
CONFIG_SYS_BOARD="hmibsc"
|
||||
CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK=y
|
||||
CONFIG_ARCH_SNAPDRAGON=y
|
||||
CONFIG_TEXT_BASE=0x8f600000
|
||||
CONFIG_SYS_MALLOC_LEN=0x802000
|
||||
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
|
||||
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x8007fff0
|
||||
CONFIG_ENV_SIZE=0x2000
|
||||
CONFIG_ENV_OFFSET=0x0
|
||||
CONFIG_DEFAULT_DEVICE_TREE="apq8016-schneider-hmibsc"
|
||||
# CONFIG_OF_UPSTREAM is not set
|
||||
CONFIG_OF_LIBFDT_OVERLAY=y
|
||||
CONFIG_IDENT_STRING="\nSchneider Electric-HMIBSC"
|
||||
CONFIG_SYS_LOAD_ADDR=0x80080000
|
||||
CONFIG_REMAKE_ELF=y
|
||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
||||
CONFIG_FIT=y
|
||||
CONFIG_HUSH_PARSER=y
|
||||
CONFIG_SYS_CBSIZE=2048
|
||||
# CONFIG_DISPLAY_CPUINFO is not set
|
||||
# CONFIG_DISPLAY_BOARDINFO is not set
|
||||
CONFIG_SYS_PROMPT="hmibsc => "
|
||||
CONFIG_SYS_MAXARGS=64
|
||||
CONFIG_CMD_DHCP=y
|
||||
CONFIG_CMD_PING=y
|
||||
CONFIG_CMD_FS_GENERIC=y
|
||||
# CONFIG_CMD_IMI is not set
|
||||
CONFIG_CMD_MD5SUM=y
|
||||
CONFIG_CMD_MEMINFO=y
|
||||
CONFIG_CMD_EXT2=y
|
||||
CONFIG_CMD_EXT4=y
|
||||
CONFIG_CMD_FAT=y
|
||||
CONFIG_CMD_GPIO=y
|
||||
CONFIG_CMD_GPT=y
|
||||
CONFIG_CMD_MMC=y
|
||||
CONFIG_CMD_PART=y
|
||||
CONFIG_CMD_USB=y
|
||||
CONFIG_BOOTP_BOOTFILESIZE=y
|
||||
CONFIG_CMD_CACHE=y
|
||||
CONFIG_CMD_TIMER=y
|
||||
CONFIG_CMD_ENV_FLAGS=y
|
||||
CONFIG_CMD_ENV_EXISTS=y
|
||||
CONFIG_CMD_NVEDIT_INFO=y
|
||||
CONFIG_ENV_WRITEABLE_LIST=y
|
||||
CONFIG_ENV_ACCESS_IGNORE_FORCE=y
|
||||
CONFIG_ENV_IS_IN_MMC=y
|
||||
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||
CONFIG_SYS_MMC_ENV_PART=2
|
||||
CONFIG_BUTTON_QCOM_PMIC=y
|
||||
CONFIG_CLK=y
|
||||
CONFIG_CLK_QCOM_APQ8016=y
|
||||
CONFIG_USB_FUNCTION_FASTBOOT=y
|
||||
CONFIG_FASTBOOT_BUF_ADDR=0x91000000
|
||||
CONFIG_FASTBOOT_FLASH=y
|
||||
CONFIG_FASTBOOT_FLASH_MMC_DEV=0
|
||||
CONFIG_MSM_GPIO=y
|
||||
CONFIG_QCOM_PMIC_GPIO=y
|
||||
CONFIG_LED=y
|
||||
CONFIG_LED_GPIO=y
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_MSM=y
|
||||
CONFIG_PHY=y
|
||||
CONFIG_PINCTRL=y
|
||||
CONFIG_PINCONF=y
|
||||
CONFIG_PINCTRL_QCOM_APQ8016=y
|
||||
CONFIG_DM_PMIC=y
|
||||
CONFIG_PMIC_QCOM=y
|
||||
CONFIG_MSM_SERIAL=y
|
||||
CONFIG_SPMI_MSM=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_MSM=y
|
||||
CONFIG_USB_ULPI_VIEWPORT=y
|
||||
CONFIG_USB_ULPI=y
|
||||
CONFIG_USB_HOST_ETHER=y
|
||||
CONFIG_USB_ETHER_ASIX=y
|
||||
CONFIG_USB_ETHER_ASIX88179=y
|
||||
CONFIG_USB_ETHER_MCS7830=y
|
||||
CONFIG_USB_ETHER_SMSC95XX=y
|
||||
CONFIG_PHYLIB=y
|
||||
CONFIG_USB_ETHER_LAN75XX=y
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_GADGET_VENDOR_NUM=0x18d1
|
||||
CONFIG_USB_GADGET_PRODUCT_NUM=0xd00d
|
||||
CONFIG_CI_UDC=y
|
|
@ -42,6 +42,7 @@ Board-specific doc
|
|||
renesas/index
|
||||
rockchip/index
|
||||
samsung/index
|
||||
schneider/index
|
||||
sielaff/index
|
||||
siemens/index
|
||||
sifive/index
|
||||
|
|
45
doc/board/schneider/hmibsc.rst
Normal file
45
doc/board/schneider/hmibsc.rst
Normal file
|
@ -0,0 +1,45 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0+
|
||||
.. sectionauthor:: Sumit Garg <sumit.garg@linaro.org>
|
||||
|
||||
HMIBSC
|
||||
======
|
||||
|
||||
The HMIBSC is an IIoT Edge Box Core board based on the Qualcomm APQ8016E SoC.
|
||||
More information can be found on the `SE product page`_.
|
||||
|
||||
U-Boot can be used as a replacement for Qualcomm's original Android bootloader
|
||||
(a fork of Little Kernel/LK). Like LK, it is installed directly into the ``aboot``
|
||||
partition. Note that the U-Boot port used to be loaded as an Android boot image
|
||||
through LK. This is no longer the case, now U-Boot can replace LK entirely.
|
||||
|
||||
.. _SE product page: https://www.se.com/us/en/product/HMIBSCEA53D1L0T/iiot-edge-box-core-harmony-ipc-emmc-dc-linux-tpm/
|
||||
|
||||
Build steps
|
||||
-----------
|
||||
|
||||
First, setup ``CROSS_COMPILE`` for aarch64. Then, build U-Boot for ``hmibsc``::
|
||||
|
||||
$ export CROSS_COMPILE=<aarch64 toolchain prefix>
|
||||
$ make hmibsc_defconfig
|
||||
$ make
|
||||
|
||||
This will build ``u-boot.elf`` in the configured output directory.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
Although the HMIBSC does not have secure boot set up by default, the firmware
|
||||
still expects firmware ELF images to be "signed". The signature does not provide
|
||||
any security in this case, but it provides the firmware with some required
|
||||
metadata.
|
||||
|
||||
To "sign" ``u-boot.elf`` you can use e.g. `qtestsign`_::
|
||||
|
||||
$ ./qtestsign.py aboot u-boot.elf
|
||||
|
||||
Then install the resulting ``u-boot-test-signed.mbn`` to the ``aboot`` partition
|
||||
on your device, e.g. with ``fastboot flash aboot u-boot-test-signed.mbn``.
|
||||
|
||||
U-Boot should be running after a reboot (``fastboot reboot``).
|
||||
|
||||
.. _qtestsign: https://github.com/msm8916-mainline/qtestsign
|
9
doc/board/schneider/index.rst
Normal file
9
doc/board/schneider/index.rst
Normal file
|
@ -0,0 +1,9 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
Schneider Electric
|
||||
==================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
hmibsc
|
16
include/configs/hmibsc.h
Normal file
16
include/configs/hmibsc.h
Normal file
|
@ -0,0 +1,16 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Board configuration file for HMIBSC
|
||||
*
|
||||
* (C) Copyright 2024 Sumit Garg <sumit.garg@linaro.org>
|
||||
*/
|
||||
|
||||
#ifndef __CONFIGS_HMIBSC_H
|
||||
#define __CONFIGS_HMIBSC_H
|
||||
|
||||
/* PHY needs a longer aneg time */
|
||||
#define PHY_ANEG_TIMEOUT 8000
|
||||
|
||||
#define CFG_ENV_FLAGS_LIST_STATIC "BOOT_A_LEFT:dw,BOOT_B_LEFT:dw,BOOT_ORDER:sw"
|
||||
|
||||
#endif
|
Loading…
Add table
Reference in a new issue