All of lore.kernel.org
 help / color / mirror / Atom feed
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>



  reply	other threads:[~2024-10-14  7:00 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.