[PATCH v3 5/9] board: qualcomm: Add support for dragonboard845c

Sumit Garg sumit.garg at linaro.org
Thu Aug 24 12:43:56 CEST 2023


Hi Simon,

On Thu, 24 Aug 2023 at 05:29, Simon Glass <sjg at chromium.org> wrote:
>
> Hi Sumit,
>
> On Tue, 12 Jul 2022 at 01:12, Sumit Garg <sumit.garg at linaro.org> wrote:
> >
> > Add support for 96Boards Dragonboard 845C aka Robotics RB3 development
> > platform. This board complies with 96Boards Open Platform Specifications.
> >
> > Features:
> > - Qualcomm Snapdragon SDA845 SoC
> > - 4GiB RAM
> > - 64GiB UFS drive
> >
> > U-boot is chain loaded by ABL in 64-bit mode as part of boot.img.
> > For detailed build and boot instructions, refer to
> > doc/board/qualcomm/sdm845.rst, board: dragonboard845c.
> >
> > Signed-off-by: Sumit Garg <sumit.garg at linaro.org>
> > Reviewed-by: Ramon Fried <rfried.dev at gmail.com>
> > ---
> >  arch/arm/dts/dragonboard845c-uboot.dtsi       |  37 +++++++
> >  arch/arm/dts/dragonboard845c.dts              |  44 ++++++++
> >  arch/arm/mach-snapdragon/Kconfig              |  14 +++
> >  board/qualcomm/dragonboard845c/Kconfig        |  12 +++
> >  board/qualcomm/dragonboard845c/MAINTAINERS    |   6 ++
> >  board/qualcomm/dragonboard845c/Makefile       |   9 ++
> >  board/qualcomm/dragonboard845c/db845c.its     |  63 +++++++++++
> >  .../dragonboard845c/dragonboard845c.c         |   9 ++
> >  configs/dragonboard845c_defconfig             |  28 +++++
> >  doc/board/qualcomm/sdm845.rst                 | 100 +++++++++++++++---
> >  include/configs/dragonboard845c.h             |  28 +++++
> >  11 files changed, 337 insertions(+), 13 deletions(-)
> >  create mode 100644 arch/arm/dts/dragonboard845c-uboot.dtsi
> >  create mode 100644 arch/arm/dts/dragonboard845c.dts
> >  create mode 100644 board/qualcomm/dragonboard845c/Kconfig
> >  create mode 100644 board/qualcomm/dragonboard845c/MAINTAINERS
> >  create mode 100644 board/qualcomm/dragonboard845c/Makefile
> >  create mode 100644 board/qualcomm/dragonboard845c/db845c.its
> >  create mode 100644 board/qualcomm/dragonboard845c/dragonboard845c.c
> >  create mode 100644 configs/dragonboard845c_defconfig
> >  create mode 100644 include/configs/dragonboard845c.h
> >
> [..]
>
> > diff --git a/doc/board/qualcomm/sdm845.rst b/doc/board/qualcomm/sdm845.rst
> > index b6642c9579..8ef4749287 100644
> > --- a/doc/board/qualcomm/sdm845.rst
> > +++ b/doc/board/qualcomm/sdm845.rst
> > @@ -35,9 +35,25 @@ Pack android boot image
> >  ^^^^^^^^^^^^^^^^^^^^^^^
> >  We'll assemble android boot image with ``u-boot.bin`` instead of linux kernel,
> >  and FIT image instead of ``initramfs``. Android bootloader expect gzipped kernel
> > -with appended dtb, so let's mimic linux to satisfy stock bootloader:
> > +with appended dtb, so let's mimic linux to satisfy stock bootloader.
> >
>
> [..]
>
> > +The dragonboard845c is a Qualcomm Robotics RB3 Development Platform, based on
> > +the Qualcomm SDM845 SoC.
> > +
> > +Steps:
> > +
> > +- Build u-boot::
> > +
> > +       $ export CROSS_COMPILE=<aarch64 toolchain prefix>
> > +       $ make dragonboard845c_defconfig
> > +       $ make
> > +
> > +- Create dummy dtb::
> > +
> > +       workdir=/tmp/prepare_payload
> > +       mkdir -p "$workdir"
> > +       mock_dtb="$workdir"/payload_mock.dtb
> > +
> > +       dtc -I dts -O dtb -o "$mock_dtb" << EOF
> > +       /dts-v1/;
> > +       / {
> > +               #address-cells = <2>;
> > +               #size-cells = <2>;
> > +
> > +               memory at 80000000 {
> > +                       device_type = "memory";
> > +                       /* We expect the bootloader to fill in the size */
> > +                       reg = <0 0x80000000 0 0>;
> > +               };
> > +
> > +               chosen { };
> > +       };
> > +       EOF
> > +
> > +- gzip u-boot::
> > +
> > +       gzip u-boot.bin
> > +
> > +- Append dtb to gzipped u-boot::
> > +
> > +        cat u-boot.bin.gz "$mock_dtb" > u-boot.bin.gz-dtb
> > +
> > +- A ``db845c.its`` file can be found in ``board/qualcomm/dragonboard845c/``
> > +  directory. It expects a folder as ``db845c_imgs/`` in the main directory
> > +  containing pre-built kernel, dts and ramdisk images. See ``db845c.its``
> > +  for full path to images::
> > +
> > +       mkimage -f db845c.its db845c.itb
> > +
> > +- Now we've got everything to build android boot image::
> > +
> > +       mkbootimg --kernel u-boot.bin.gz-dtb --ramdisk db845c.itb \
> > +       --output boot.img --pagesize 4096 --base 0x80000000
> > +
> > +- Flash boot.img using db845c fastboot method.
>
> What command should be used here? I can run 'fastboot devices' but am
> not sure what command to use to flash U-Boot.
>

At the time of writing this doc, I thought it was understood how to
flash boot.img on db845c. But I will make that more explicit. Since
u-boot has to be chain loaded by ABL, the command to flash boot.img
(containing u-boot) is as follows:

sudo fastboot flash boot boot.img

> Also, is it possible to flash U-Boot as a first-stage bootloader?
>

That's not possible currently due to Qcom proprietary bootloader being
used. But there were plans to replace atleast ABL with u-boot (See
slide 9 from this Linaro connect Qcom keynote [1]). I hope that will
materialize soon.

[1] https://resources.linaro.org/en/resource/necH5bQcfrhCCkjSGHXJyA

-Sumit

> > +
> > +More information can be found on the `DragonBoard 845c page`_.
> >
> >  .. _Samsung S9 page: https://en.wikipedia.org/wiki/Samsung_Galaxy_S9
> > +.. _DragonBoard 845c page: https://www.96boards.org/product/rb3-platform/
> > diff --git a/include/configs/dragonboard845c.h b/include/configs/dragonboard845c.h
> > new file mode 100644
> > index 0000000000..108dde199b
> > --- /dev/null
> > +++ b/include/configs/dragonboard845c.h
> > @@ -0,0 +1,28 @@
> > +/* SPDX-License-Identifier: GPL-2.0+ */
> > +/*
> > + * Configuration file for Dragonboard 845c, based on Qualcomm SDA845 chip
> > + *
> > + * (C) Copyright 2022 Sumit Garg <sumit.garg at linaro.org>
> > + */
> > +
> > +#ifndef __CONFIGS_SDM845_H
> > +#define __CONFIGS_SDM845_H
> > +
> > +#include <linux/sizes.h>
> > +#include <asm/arch/sysmap-sdm845.h>
> > +
> > +#define CONFIG_SYS_BAUDRATE_TABLE      { 115200, 230400, 460800, 921600 }
> > +
> > +#define CONFIG_EXTRA_ENV_SETTINGS \
> > +       "bootm_size=0x5000000\0"        \
> > +       "bootm_low=0x80000000\0"        \
> > +       "bootcmd=bootm $prevbl_initrd_start_addr\0"
> > +
> > +/* Size of malloc() pool */
> > +#define CONFIG_SYS_BOOTM_LEN   SZ_64M
> > +
> > +/* Monitor Command Prompt */
> > +#define CONFIG_SYS_CBSIZE      512
> > +#define CONFIG_SYS_MAXARGS     64
> > +
> > +#endif
> > --
> > 2.25.1
> >
>
> Regards,
> Simon


More information about the U-Boot mailing list