[PATCH v3 5/9] board: qualcomm: Add support for dragonboard845c
Peter Robinson
pbrobinson at gmail.com
Mon Aug 28 22:23:46 CEST 2023
On Mon, Aug 28, 2023 at 6:55 PM Simon Glass <sjg at chromium.org> wrote:
>
> Hi Sumit,
>
> On Thu, 24 Aug 2023 at 04:44, Sumit Garg <sumit.garg at linaro.org> wrote:
> >
> > 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
> >
>
> Thank you for the link. I am pleased to hear it and hope it plays out
> as that slide seems to indicate.
>
> I would like to suggest that 96 boards should use open-source firmware
> when they launch. Once they launch there is little incentive to clean
> things up.
It's something that has been suggested from the outset but the fact is
there is no way to enforce it.
More information about the U-Boot
mailing list