From: Ilias Apalodimas <ilias.apalodimas@linaro.org>
To: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Tom Rini <trini@konsulko.com>,
u-boot-amlogic@groups.io, u-boot@lists.denx.de,
da@libre.computer
Subject: Re: [PATCH 1/2] ARM: meson: add support for Libre Computer aml-a311d-cc
Date: Sat, 5 Oct 2024 17:28:16 +0300 [thread overview]
Message-ID: <ZwFNAHBcMuxbSrDr@hera> (raw)
In-Reply-To: <20240920-u-boot-topic-libre-computer-solitude-alta-v1-1-8915b108840b@linaro.org>
Thanks Neil,
On Fri, Sep 20, 2024 at 03:33:33PM +0200, Neil Armstrong wrote:
> Add support for the Libre Computer aml-a311d-cc "Alta" board:
> https://libre.computer/products/aml-a311d-cc/
>
> The Alta board has a Credit Card form factor, similar to the
> the prvevious "Le Potato" card, but with the Amlogic A311D SoC,
> MIPI DSI and CSI connectors. PoE header and a single USB2 Type-C
> connector replacing the microUSB one for power and USB 2.0.
>
> The board has an embedded SPI NOR flash, and EFI Capsule support
> is added.
>
> The GUID is dynamically generated for the board, to get it:
> => efidebug capsule esrt
> ========================================
> ESRT: fw_resource_count=1
> ESRT: fw_resource_count_max=1
> ESRT: fw_resource_version=1
> [entry 0]==============================
> ESRT: fw_class=17E07D9D-4D91-53F4-8780-1D91F279C1A5
> ESRT: fw_type=unknown
> ESRT: fw_version=0
> ESRT: lowest_supported_fw_version=0
> ESRT: capsule_flags=0
> ESRT: last_attempt_version=0
> ESRT: last_attempt_status=success
> ========================================
>
> On the host (with the aml_encrypt_g12a result binary):
> $ eficapsule --guid 17E07D9D-4D91-53F4-8780-1D91F279C1A5 -i 1 u-boot.bin u-boot.cap
>
> On the board (from USB disk containing u-boot.cap at root):
> => load usb 0:1 $kernel_addr_r u-boot.cap
> => efidebug capsule update $kernel_addr_r
>
> The binary will then be flashed on the SPI.
>
> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
> ---
> .../dts/meson-g12b-a311d-libretech-cc-u-boot.dtsi | 15 +++
> board/libre-computer/aml-a311d-cc/MAINTAINERS | 7 ++
> board/libre-computer/aml-a311d-cc/Makefile | 6 ++
> board/libre-computer/aml-a311d-cc/aml-a311d-cc.c | 44 +++++++++
> configs/aml-a311d-cc_defconfig | 108 +++++++++++++++++++++
> doc/board/amlogic/aml-a311d-cc.rst | 46 +++++++++
> doc/board/amlogic/index.rst | 1 +
> 7 files changed, 227 insertions(+)
>
> diff --git a/arch/arm/dts/meson-g12b-a311d-libretech-cc-u-boot.dtsi b/arch/arm/dts/meson-g12b-a311d-libretech-cc-u-boot.dtsi
> new file mode 100644
> index 00000000000..cbada739042
> --- /dev/null
> +++ b/arch/arm/dts/meson-g12b-a311d-libretech-cc-u-boot.dtsi
> @@ -0,0 +1,15 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (c) 2023 Neil Armstrong <neil.armstrong@linaro.org>
> + */
> +
> +#include "meson-g12-common-u-boot.dtsi"
> +
> +&sd_emmc_c {
> + pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_4b_pins>;
> + bus-width = <4>;
> +};
> +
> +&spifc {
> + status = "okay";
> +};
> diff --git a/board/libre-computer/aml-a311d-cc/MAINTAINERS b/board/libre-computer/aml-a311d-cc/MAINTAINERS
> new file mode 100644
> index 00000000000..b4b77acd23b
> --- /dev/null
> +++ b/board/libre-computer/aml-a311d-cc/MAINTAINERS
> @@ -0,0 +1,7 @@
> +LIBRE-COMPUTER AML-A311D-CC
> +M: Neil Armstrong <neil.armstrong@linaro.org>
> +S: Maintained
> +L: u-boot-amlogic@groups.io
> +F: board/amlogic/aml-a311d-cc/
> +F: configs/aml-a311d-cc_defconfig
> +F: doc/board/amlogic/aml-a311d-cc.rst
> diff --git a/board/libre-computer/aml-a311d-cc/Makefile b/board/libre-computer/aml-a311d-cc/Makefile
> new file mode 100644
> index 00000000000..461955def3a
> --- /dev/null
> +++ b/board/libre-computer/aml-a311d-cc/Makefile
> @@ -0,0 +1,6 @@
> +# SPDX-License-Identifier: GPL-2.0+
> +#
> +# (C) Copyright 2016 BayLibre, SAS
> +# Author: Neil Armstrong <narmstrong@baylibre.com>
> +
> +obj-y := aml-a311d-cc.o
> diff --git a/board/libre-computer/aml-a311d-cc/aml-a311d-cc.c b/board/libre-computer/aml-a311d-cc/aml-a311d-cc.c
> new file mode 100644
> index 00000000000..e45cfd5d8a3
> --- /dev/null
> +++ b/board/libre-computer/aml-a311d-cc/aml-a311d-cc.c
> @@ -0,0 +1,44 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (C) 2016 BayLibre, SAS
> + * Author: Neil Armstrong <narmstrong@baylibre.com>
> + */
> +
> +#include <dm.h>
> +#include <env.h>
> +#include <init.h>
> +#include <net.h>
> +#include <efi_loader.h>
> +#include <asm/io.h>
> +#include <asm/arch/eth.h>
> +
> +struct efi_fw_image fw_images[] = {
> + {
> + .fw_name = u"AML_A311D_CC_BOOT",
> + .image_index = 1,
> + },
> +};
> +
> +struct efi_capsule_update_info update_info = {
> + .dfu_string = "sf 0:0=u-boot-bin raw 0 0x10000",
> + .num_images = ARRAY_SIZE(fw_images),
> + .images = fw_images,
> +};
> +
> +
> +#if IS_ENABLED(CONFIG_SET_DFU_ALT_INFO)
> +void set_dfu_alt_info(char *interface, char *devstr)
> +{
> + if (strcmp(interface, "ram") == 0)
> + env_set("dfu_alt_info", "fitimage ram 0x08080000 0x4000000");
> + else if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT))
> + env_set("dfu_alt_info", update_info.dfu_string);
> +}
> +#endif
> +
> +int misc_init_r(void)
> +{
> + meson_generate_serial_ethaddr();
> +
> + return 0;
> +}
> diff --git a/configs/aml-a311d-cc_defconfig b/configs/aml-a311d-cc_defconfig
> new file mode 100644
> index 00000000000..c8e22200419
> --- /dev/null
> +++ b/configs/aml-a311d-cc_defconfig
> @@ -0,0 +1,108 @@
> +CONFIG_ARM=y
> +CONFIG_SYS_VENDOR="libre-computer"
> +CONFIG_SYS_BOARD="aml-a311d-cc"
> +CONFIG_ARCH_MESON=y
> +CONFIG_TEXT_BASE=0x01000000
> +CONFIG_NR_DRAM_BANKS=1
> +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
> +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x20000000
> +CONFIG_ENV_SIZE=0x2000
> +CONFIG_ENV_OFFSET=0xFFFF0000
> +CONFIG_ENV_SECT_SIZE=0x10000
> +CONFIG_DM_GPIO=y
> +CONFIG_DEFAULT_DEVICE_TREE="amlogic/meson-g12b-a311d-libretech-cc"
> +CONFIG_OF_LIBFDT_OVERLAY=y
> +CONFIG_DM_RESET=y
> +CONFIG_MESON_G12A=y
> +CONFIG_DEBUG_UART_BASE=0xff803000
> +CONFIG_DEBUG_UART_CLOCK=24000000
> +CONFIG_IDENT_STRING="aml-a311d-cc"
> +CONFIG_SYS_LOAD_ADDR=0x1000000
> +CONFIG_DEBUG_UART=y
> +CONFIG_REMAKE_ELF=y
> +CONFIG_FIT=y
> +CONFIG_FIT_SIGNATURE=y
> +CONFIG_FIT_VERBOSE=y
> +CONFIG_LEGACY_IMAGE_FORMAT=y
> +CONFIG_OF_BOARD_SETUP=y
> +# CONFIG_DISPLAY_CPUINFO is not set
> +CONFIG_MISC_INIT_R=y
> +CONFIG_SYS_MAXARGS=32
> +# CONFIG_CMD_BDI is not set
> +# CONFIG_CMD_IMI is not set
> +CONFIG_CMD_DFU=y
> +CONFIG_CMD_NVEDIT_EFI=y
> +CONFIG_CMD_GPIO=y
> +# CONFIG_CMD_LOADS is not set
> +CONFIG_CMD_MMC=y
> +CONFIG_CMD_SF_TEST=y
> +CONFIG_CMD_SPI=y
> +CONFIG_CMD_USB=y
> +CONFIG_CMD_USB_MASS_STORAGE=y
> +CONFIG_CMD_EFIDEBUG=y
> +# CONFIG_CMD_SETEXPR is not set
> +CONFIG_CMD_REGULATOR=y
> +CONFIG_OF_CONTROL=y
> +CONFIG_ENV_IS_IN_SPI_FLASH=y
> +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
> +CONFIG_ADC=y
> +CONFIG_SARADC_MESON=y
> +CONFIG_BUTTON=y
> +CONFIG_BUTTON_ADC=y
> +CONFIG_DFU_RAM=y
> +CONFIG_DFU_SF=y
> +CONFIG_SET_DFU_ALT_INFO=y
> +CONFIG_MMC_MESON_GX=y
> +CONFIG_MTD=y
> +CONFIG_DM_MTD=y
> +CONFIG_DM_SPI_FLASH=y
> +CONFIG_SPI_FLASH_GIGADEVICE=y
> +CONFIG_SPI_FLASH_SPANSION=y
> +CONFIG_PHY_REALTEK=y
> +CONFIG_DM_MDIO=y
> +CONFIG_DM_MDIO_MUX=y
> +CONFIG_ETH_DESIGNWARE_MESON8B=y
> +CONFIG_MDIO_MUX_MESON_G12A=y
> +CONFIG_MESON_G12A_USB_PHY=y
> +CONFIG_PINCTRL=y
> +CONFIG_PINCTRL_MESON_G12A=y
> +CONFIG_POWER_DOMAIN=y
> +CONFIG_MESON_EE_POWER_DOMAIN=y
> +CONFIG_DM_REGULATOR=y
> +CONFIG_DM_REGULATOR_FIXED=y
> +CONFIG_DEBUG_UART_ANNOUNCE=y
> +CONFIG_DEBUG_UART_SKIP_INIT=y
> +CONFIG_MESON_SERIAL=y
> +CONFIG_SPI=y
> +CONFIG_DM_SPI=y
> +CONFIG_MESON_SPIFC=y
> +CONFIG_SYSINFO=y
> +CONFIG_SYSINFO_SMBIOS=y
> +CONFIG_USB=y
> +CONFIG_DM_USB_GADGET=y
> +CONFIG_USB_XHCI_HCD=y
> +CONFIG_USB_XHCI_DWC3=y
> +CONFIG_USB_DWC3=y
> +# CONFIG_USB_DWC3_GADGET is not set
> +CONFIG_USB_DWC3_MESON_G12A=y
> +CONFIG_USB_KEYBOARD=y
> +CONFIG_USB_GADGET=y
> +CONFIG_USB_GADGET_VENDOR_NUM=0x1b8e
> +CONFIG_USB_GADGET_PRODUCT_NUM=0xfada
> +CONFIG_USB_GADGET_DWC2_OTG=y
> +CONFIG_USB_GADGET_DWC2_OTG_PHY_BUS_WIDTH_8=y
> +CONFIG_USB_GADGET_DOWNLOAD=y
> +CONFIG_VIDEO=y
> +# CONFIG_VIDEO_BPP8 is not set
> +# CONFIG_VIDEO_BPP16 is not set
> +CONFIG_SYS_WHITE_ON_BLACK=y
> +CONFIG_VIDEO_MESON=y
> +CONFIG_VIDEO_DT_SIMPLEFB=y
> +CONFIG_SPLASH_SCREEN=y
> +CONFIG_SPLASH_SCREEN_ALIGN=y
> +CONFIG_VIDEO_BMP_RLE8=y
> +CONFIG_BMP_16BPP=y
> +CONFIG_BMP_24BPP=y
> +CONFIG_BMP_32BPP=y
> +CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y
> +CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y
> diff --git a/doc/board/amlogic/aml-a311d-cc.rst b/doc/board/amlogic/aml-a311d-cc.rst
> new file mode 100644
> index 00000000000..25c1e01906a
> --- /dev/null
> +++ b/doc/board/amlogic/aml-a311d-cc.rst
> @@ -0,0 +1,46 @@
> +.. SPDX-License-Identifier: GPL-2.0+
> +
> +U-Boot for Libre Computer AML-A311D-CC 'Alta' (A311D)
> +=====================================================
> +
> +AML-A311D-CC is a Single Board Computer manufactured by Libre Computer Technology with
> +the following specifications:
> +
> + - Amlogic A311D Arm Cortex-A53 dual-core + Cortex-A73 quad-core SoC
> + - 2 or 4GB LPDDR4 SDRAM
> + - Gigabit Ethernet
> + - HDMI 2.1 display
> + - 40-pin GPIO header
> + - 4 x USB 3.0 Host, 1 x USB 2.0 Type-C
> + - eMMC 5.x SM Interface for Libre Computer Modules
> + - microSD
> + - Infrared receiver
> +
> +Schematics are available on the manufacturer website.
> +
> +U-Boot Compilation
> +------------------
> +
> +.. code-block:: bash
> +
> + $ export CROSS_COMPILE=aarch64-none-elf-
> + $ make aml-a311d-cc_defconfig
> + $ make
> +
> +U-Boot Signing with Pre-Built FIP repo
> +--------------------------------------
> +
> +.. code-block:: bash
> +
> + $ git clone https://github.com/LibreELEC/amlogic-boot-fip --depth=1
> + $ cd amlogic-boot-fip
> + $ mkdir my-output-dir
> + $ ./build-fip.sh aml-a311d-cc /path/to/u-boot/u-boot.bin my-output-dir
> +
> +Then write U-Boot to SD or eMMC with:
> +
> +.. code-block:: bash
> +
> + $ DEV=/dev/boot_device
> + $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=512 skip=1 seek=1
> + $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=1 count=440
> diff --git a/doc/board/amlogic/index.rst b/doc/board/amlogic/index.rst
> index 46f44bf34ec..de91b21f977 100644
> --- a/doc/board/amlogic/index.rst
> +++ b/doc/board/amlogic/index.rst
> @@ -85,6 +85,7 @@ Board Documentation
> .. toctree::
> :maxdepth: 1
>
> + aml-a311d-cc
> bananapi-cm4io
> bananapi-m2pro
> bananapi-m2s
>
> --
> 2.34.1
>
Board boots fine, I haven't tested everything though
Tested-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
next prev parent reply other threads:[~2024-10-05 14:28 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-20 13:33 [PATCH 0/2] board: libre-computer: Add support for Libre Computer aml-a311d-cc & aml-s905d3-cc boards Neil Armstrong
2024-09-20 13:33 ` [PATCH 1/2] ARM: meson: add support for Libre Computer aml-a311d-cc Neil Armstrong
2024-10-05 14:28 ` Ilias Apalodimas [this message]
2024-09-20 13:33 ` [PATCH 2/2] ARM: meson: add support for Libre Computer aml-s905d3-cc Neil Armstrong
2024-10-16 7:15 ` Ilias Apalodimas
2024-09-30 14:27 ` [PATCH 0/2] board: libre-computer: Add support for Libre Computer aml-a311d-cc & aml-s905d3-cc boards Neil Armstrong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZwFNAHBcMuxbSrDr@hera \
--to=ilias.apalodimas@linaro.org \
--cc=da@libre.computer \
--cc=neil.armstrong@linaro.org \
--cc=trini@konsulko.com \
--cc=u-boot-amlogic@groups.io \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox