Message ID | 20220708131404.1489347-6-sumit.garg@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | New boards support: db845c and qcs404-evb | expand |
On Fri, Jul 8, 2022 at 4:14 PM Sumit Garg <sumit.garg@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@linaro.org> > --- > 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/arch/arm/dts/dragonboard845c-uboot.dtsi b/arch/arm/dts/dragonboard845c-uboot.dtsi > new file mode 100644 > index 0000000000..8b5a7ee573 > --- /dev/null > +++ b/arch/arm/dts/dragonboard845c-uboot.dtsi > @@ -0,0 +1,37 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * U-Boot addition to handle Qualcomm Robotics RB3 Development Platform > + * (dragonboard845c) pins > + * > + * (C) Copyright 2022 Sumit Garg <sumit.garg@linaro.org> > + */ > + > +/ > +{ > + soc { > + u-boot,dm-pre-reloc; > + > + serial@a84000 { > + u-boot,dm-pre-reloc; > + }; > + > + clock-controller@100000 { > + u-boot,dm-pre-reloc; > + }; > + > + pinctrl_north@3900000 { > + u-boot,dm-pre-reloc; > + }; > + }; > +}; > + > +&pm8998_pon { > + key_vol_down { > + gpios = <&pm8998_pon 1 0>; > + label = "key_vol_down"; > + }; > + key_power { > + gpios = <&pm8998_pon 0 0>; > + label = "key_power"; > + }; > +}; > diff --git a/arch/arm/dts/dragonboard845c.dts b/arch/arm/dts/dragonboard845c.dts > new file mode 100644 > index 0000000000..1722dce33f > --- /dev/null > +++ b/arch/arm/dts/dragonboard845c.dts > @@ -0,0 +1,44 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Qualcomm Robotics RB3 Development (dragonboard845c) board device > + * tree source > + * > + * (C) Copyright 2022 Sumit Garg <sumit.garg@linaro.org> > + */ > + > +/dts-v1/; > + > +#include "sdm845.dtsi" > + > +/ { > + model = "Thundercomm Dragonboard 845c"; > + compatible = "thundercomm,db845c", "qcom,sdm845"; > + #address-cells = <2>; > + #size-cells = <2>; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + aliases { > + serial0 = &debug_uart; > + }; > + > + memory { > + device_type = "memory"; > + reg = <0 0x80000000 0 0xfdfa0000>; > + }; > + > + psci { > + compatible = "arm,psci-1.0"; > + method = "smc"; > + }; > + > + soc: soc { > + serial@a84000 { > + status = "okay"; > + }; > + }; > +}; > + > +#include "dragonboard845c-uboot.dtsi" > diff --git a/arch/arm/mach-snapdragon/Kconfig b/arch/arm/mach-snapdragon/Kconfig > index 12cf02a56a..cb53dc8901 100644 > --- a/arch/arm/mach-snapdragon/Kconfig > +++ b/arch/arm/mach-snapdragon/Kconfig > @@ -44,6 +44,19 @@ config TARGET_DRAGONBOARD820C > - 3GiB RAM > - 32GiB UFS drive > > +config TARGET_DRAGONBOARD845C > + bool "96Boards Dragonboard 845C" > + help > + 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 > + select MISC_INIT_R > + select SDM845 > + select DM_ETH if NET > + > config TARGET_STARQLTECHN > bool "Samsung S9 SM-G9600(starqltechn)" > help > @@ -60,6 +73,7 @@ endchoice > > source "board/qualcomm/dragonboard410c/Kconfig" > source "board/qualcomm/dragonboard820c/Kconfig" > +source "board/qualcomm/dragonboard845c/Kconfig" > source "board/samsung/starqltechn/Kconfig" > > endif > diff --git a/board/qualcomm/dragonboard845c/Kconfig b/board/qualcomm/dragonboard845c/Kconfig > new file mode 100644 > index 0000000000..52fdff288d > --- /dev/null > +++ b/board/qualcomm/dragonboard845c/Kconfig > @@ -0,0 +1,12 @@ > +if TARGET_DRAGONBOARD845C > + > +config SYS_BOARD > + default "dragonboard845c" > + > +config SYS_CONFIG_NAME > + default "dragonboard845c" > + > +config SYS_VENDOR > + default "qualcomm" > + > +endif > diff --git a/board/qualcomm/dragonboard845c/MAINTAINERS b/board/qualcomm/dragonboard845c/MAINTAINERS > new file mode 100644 > index 0000000000..e555953df6 > --- /dev/null > +++ b/board/qualcomm/dragonboard845c/MAINTAINERS > @@ -0,0 +1,6 @@ > +Qualcomm Robotics RB3 Development Platform (dragonboard845c) > +M: Sumit Garg <sumit.garg@linaro.org> > +S: Maintained > +F: board/qualcomm/dragonboard845c/ > +F: include/configs/dragonboard845c.h > +F: configs/dragonboard845c_defconfig > diff --git a/board/qualcomm/dragonboard845c/Makefile b/board/qualcomm/dragonboard845c/Makefile > new file mode 100644 > index 0000000000..0abefdaf36 > --- /dev/null > +++ b/board/qualcomm/dragonboard845c/Makefile > @@ -0,0 +1,9 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# (C) Copyright 2022 Sumit Garg <sumit.garg@linaro.org> > +# > +# This empty file prevents make error. > +# Board logic defined in board/qualcomm/common/sdm845.c, no custom logic for dragonboard845c so far. > +# > + > +obj-y += dragonboard845c.o > diff --git a/board/qualcomm/dragonboard845c/db845c.its b/board/qualcomm/dragonboard845c/db845c.its > new file mode 100644 > index 0000000000..a2621340d1 > --- /dev/null > +++ b/board/qualcomm/dragonboard845c/db845c.its > @@ -0,0 +1,63 @@ > +/* > + * U-Boot uImage source file with multiple kernels, ramdisks and FDT blobs > + */ > + > +/dts-v1/; > + > +/ { > + description = "Various kernels, ramdisks and FDT blobs"; > + #address-cells = <1>; > + > + images { > + kernel-1 { > + description = "5.15.0-qcomlt-arm64"; > + data = /incbin/("./db845c_imgs/Image.gz--5.15-r0-dragonboard-845c-20211218193034-511.bin"); > + type = "kernel"; > + arch = "arm64"; > + os = "linux"; > + compression = "gzip"; > + load = <0x80000000>; > + entry = <0x80000000>; > + hash-1 { > + algo = "sha1"; > + }; > + }; > + > + ramdisk-1 { > + description = "initramfs-test-full-image-dragonboard-845c"; > + data = /incbin/("./db845c_imgs/initramfs-test-full-image-dragonboard-845c-20211218193034-511.rootfs.cpio.gz"); > + type = "ramdisk"; > + arch = "arm64"; > + os = "linux"; > + compression = "gzip"; > + load = <00000000>; > + entry = <00000000>; > + hash-1 { > + algo = "sha1"; > + }; > + }; > + > + fdt-1 { > + description = "sdm845-db845c-fdt"; > + data = /incbin/("./db845c_imgs/sdm845-db845c--5.15-r0-dragonboard-845c-20211218193034.dtb"); > + type = "flat_dt"; > + arch = "arm64"; > + compression = "none"; > + hash-1 { > + algo = "sha1"; > + }; > + }; > + > + }; > + > + configurations { > + default = "config-1"; > + > + config-1 { > + description = "db845c kernel-5.15.0 configuration"; > + kernel = "kernel-1"; > + ramdisk = "ramdisk-1"; > + fdt = "fdt-1"; > + }; > + }; > +}; > diff --git a/board/qualcomm/dragonboard845c/dragonboard845c.c b/board/qualcomm/dragonboard845c/dragonboard845c.c > new file mode 100644 > index 0000000000..c7685de306 > --- /dev/null > +++ b/board/qualcomm/dragonboard845c/dragonboard845c.c > @@ -0,0 +1,9 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * This empty file prevents make linking error. > + * No custom logic for dragonboard845c so far. > + * > + * (C) Copyright 2022 Sumit Garg <sumit.garg@linaro.org> > + */ > + > +void noop(void) {} > diff --git a/configs/dragonboard845c_defconfig b/configs/dragonboard845c_defconfig > new file mode 100644 > index 0000000000..a19e46a74b > --- /dev/null > +++ b/configs/dragonboard845c_defconfig > @@ -0,0 +1,28 @@ > +CONFIG_ARM=y > +CONFIG_SKIP_LOWLEVEL_INIT=y > +CONFIG_COUNTER_FREQUENCY=19000000 > +CONFIG_POSITION_INDEPENDENT=y > +CONFIG_ARCH_SNAPDRAGON=y > +CONFIG_DEFAULT_DEVICE_TREE="dragonboard845c" > +CONFIG_TARGET_DRAGONBOARD845C=y > +CONFIG_IDENT_STRING="\nQualcomm-DragonBoard 845C" > +CONFIG_SYS_LOAD_ADDR=0x80000000 > +CONFIG_FIT=y > +CONFIG_FIT_VERBOSE=y > +CONFIG_BOOTDELAY=5 > +CONFIG_SAVE_PREV_BL_FDT_ADDR=y > +CONFIG_SAVE_PREV_BL_INITRAMFS_START_ADDR=y > +# CONFIG_DISPLAY_CPUINFO is not set > +CONFIG_HUSH_PARSER=y > +CONFIG_CMD_GPIO=y > +CONFIG_CMD_BMP=y > +# CONFIG_NET is not set > +CONFIG_CLK=y > +CONFIG_MSM_GPIO=y > +CONFIG_PM8916_GPIO=y > +CONFIG_PINCTRL=y > +CONFIG_DM_PMIC=y > +CONFIG_PMIC_PM8916=y > +CONFIG_MSM_GENI_SERIAL=y > +CONFIG_SPMI_MSM=y > +CONFIG_LMB_MAX_REGIONS=64 > 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. > > -- create dump dtb:: > +Boards > +------------ > +starqlte > +^^^^^^^^^^^^ > + > +The starqltechn is a production board for Samsung S9 (SM-G9600) phone, > +based on the Qualcomm SDM845 SoC. > + > +Steps: > + > +- Build u-boot:: > + > + $ export CROSS_COMPILE=<aarch64 toolchain prefix> > + $ make starqltechn_defconfig > + $ make > + > +- Create dump dtb:: > > workdir=/tmp/prepare_payload > mkdir -p "$workdir" > @@ -56,10 +72,15 @@ with appended dtb, so let's mimic linux to satisfy stock bootloader: > }; > 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`` > +- gzip u-boot:: > + > + gzip u-boot.bin > > -Now we've got everything to build android boot image::: > +- Append dtb to gzipped u-boot:: > + > + cat u-boot.bin.gz "$mock_dtb" > u-boot.bin.gz-dtb > + > +- Now we've got everything to build android boot image:: > > mkbootimg --base 0x0 --kernel_offset 0x00008000 \ > --ramdisk_offset 0x02000000 --tags_offset 0x01e00000 \ > @@ -68,16 +89,69 @@ Now we've got everything to build android boot image::: > --kernel u-boot.bin.gz-dtb \ > -o boot.img > > -Flash image with your phone's flashing method. > +- Flash image with your phone's flashing method. > > -Boards > ------------- > -starqlte > -^^^^^^^^^^^^ > +More information can be found on the `Samsung S9 page`_. > > -The starqltechn is a production board for Samsung S9 (SM-G9600) phone, > -based on the Qualcomm SDM845 SoC. > +dragonboard845c > +^^^^^^^^^^^^^^^ > > -More information can be found on the `Samsung S9 page`_. > +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@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. > + > +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@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 > Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
diff --git a/arch/arm/dts/dragonboard845c-uboot.dtsi b/arch/arm/dts/dragonboard845c-uboot.dtsi new file mode 100644 index 0000000000..8b5a7ee573 --- /dev/null +++ b/arch/arm/dts/dragonboard845c-uboot.dtsi @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * U-Boot addition to handle Qualcomm Robotics RB3 Development Platform + * (dragonboard845c) pins + * + * (C) Copyright 2022 Sumit Garg <sumit.garg@linaro.org> + */ + +/ +{ + soc { + u-boot,dm-pre-reloc; + + serial@a84000 { + u-boot,dm-pre-reloc; + }; + + clock-controller@100000 { + u-boot,dm-pre-reloc; + }; + + pinctrl_north@3900000 { + u-boot,dm-pre-reloc; + }; + }; +}; + +&pm8998_pon { + key_vol_down { + gpios = <&pm8998_pon 1 0>; + label = "key_vol_down"; + }; + key_power { + gpios = <&pm8998_pon 0 0>; + label = "key_power"; + }; +}; diff --git a/arch/arm/dts/dragonboard845c.dts b/arch/arm/dts/dragonboard845c.dts new file mode 100644 index 0000000000..1722dce33f --- /dev/null +++ b/arch/arm/dts/dragonboard845c.dts @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Qualcomm Robotics RB3 Development (dragonboard845c) board device + * tree source + * + * (C) Copyright 2022 Sumit Garg <sumit.garg@linaro.org> + */ + +/dts-v1/; + +#include "sdm845.dtsi" + +/ { + model = "Thundercomm Dragonboard 845c"; + compatible = "thundercomm,db845c", "qcom,sdm845"; + #address-cells = <2>; + #size-cells = <2>; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + aliases { + serial0 = &debug_uart; + }; + + memory { + device_type = "memory"; + reg = <0 0x80000000 0 0xfdfa0000>; + }; + + psci { + compatible = "arm,psci-1.0"; + method = "smc"; + }; + + soc: soc { + serial@a84000 { + status = "okay"; + }; + }; +}; + +#include "dragonboard845c-uboot.dtsi" diff --git a/arch/arm/mach-snapdragon/Kconfig b/arch/arm/mach-snapdragon/Kconfig index 12cf02a56a..cb53dc8901 100644 --- a/arch/arm/mach-snapdragon/Kconfig +++ b/arch/arm/mach-snapdragon/Kconfig @@ -44,6 +44,19 @@ config TARGET_DRAGONBOARD820C - 3GiB RAM - 32GiB UFS drive +config TARGET_DRAGONBOARD845C + bool "96Boards Dragonboard 845C" + help + 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 + select MISC_INIT_R + select SDM845 + select DM_ETH if NET + config TARGET_STARQLTECHN bool "Samsung S9 SM-G9600(starqltechn)" help @@ -60,6 +73,7 @@ endchoice source "board/qualcomm/dragonboard410c/Kconfig" source "board/qualcomm/dragonboard820c/Kconfig" +source "board/qualcomm/dragonboard845c/Kconfig" source "board/samsung/starqltechn/Kconfig" endif diff --git a/board/qualcomm/dragonboard845c/Kconfig b/board/qualcomm/dragonboard845c/Kconfig new file mode 100644 index 0000000000..52fdff288d --- /dev/null +++ b/board/qualcomm/dragonboard845c/Kconfig @@ -0,0 +1,12 @@ +if TARGET_DRAGONBOARD845C + +config SYS_BOARD + default "dragonboard845c" + +config SYS_CONFIG_NAME + default "dragonboard845c" + +config SYS_VENDOR + default "qualcomm" + +endif diff --git a/board/qualcomm/dragonboard845c/MAINTAINERS b/board/qualcomm/dragonboard845c/MAINTAINERS new file mode 100644 index 0000000000..e555953df6 --- /dev/null +++ b/board/qualcomm/dragonboard845c/MAINTAINERS @@ -0,0 +1,6 @@ +Qualcomm Robotics RB3 Development Platform (dragonboard845c) +M: Sumit Garg <sumit.garg@linaro.org> +S: Maintained +F: board/qualcomm/dragonboard845c/ +F: include/configs/dragonboard845c.h +F: configs/dragonboard845c_defconfig diff --git a/board/qualcomm/dragonboard845c/Makefile b/board/qualcomm/dragonboard845c/Makefile new file mode 100644 index 0000000000..0abefdaf36 --- /dev/null +++ b/board/qualcomm/dragonboard845c/Makefile @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2022 Sumit Garg <sumit.garg@linaro.org> +# +# This empty file prevents make error. +# Board logic defined in board/qualcomm/common/sdm845.c, no custom logic for dragonboard845c so far. +# + +obj-y += dragonboard845c.o diff --git a/board/qualcomm/dragonboard845c/db845c.its b/board/qualcomm/dragonboard845c/db845c.its new file mode 100644 index 0000000000..a2621340d1 --- /dev/null +++ b/board/qualcomm/dragonboard845c/db845c.its @@ -0,0 +1,63 @@ +/* + * U-Boot uImage source file with multiple kernels, ramdisks and FDT blobs + */ + +/dts-v1/; + +/ { + description = "Various kernels, ramdisks and FDT blobs"; + #address-cells = <1>; + + images { + kernel-1 { + description = "5.15.0-qcomlt-arm64"; + data = /incbin/("./db845c_imgs/Image.gz--5.15-r0-dragonboard-845c-20211218193034-511.bin"); + type = "kernel"; + arch = "arm64"; + os = "linux"; + compression = "gzip"; + load = <0x80000000>; + entry = <0x80000000>; + hash-1 { + algo = "sha1"; + }; + }; + + ramdisk-1 { + description = "initramfs-test-full-image-dragonboard-845c"; + data = /incbin/("./db845c_imgs/initramfs-test-full-image-dragonboard-845c-20211218193034-511.rootfs.cpio.gz"); + type = "ramdisk"; + arch = "arm64"; + os = "linux"; + compression = "gzip"; + load = <00000000>; + entry = <00000000>; + hash-1 { + algo = "sha1"; + }; + }; + + fdt-1 { + description = "sdm845-db845c-fdt"; + data = /incbin/("./db845c_imgs/sdm845-db845c--5.15-r0-dragonboard-845c-20211218193034.dtb"); + type = "flat_dt"; + arch = "arm64"; + compression = "none"; + hash-1 { + algo = "sha1"; + }; + }; + + }; + + configurations { + default = "config-1"; + + config-1 { + description = "db845c kernel-5.15.0 configuration"; + kernel = "kernel-1"; + ramdisk = "ramdisk-1"; + fdt = "fdt-1"; + }; + }; +}; diff --git a/board/qualcomm/dragonboard845c/dragonboard845c.c b/board/qualcomm/dragonboard845c/dragonboard845c.c new file mode 100644 index 0000000000..c7685de306 --- /dev/null +++ b/board/qualcomm/dragonboard845c/dragonboard845c.c @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * This empty file prevents make linking error. + * No custom logic for dragonboard845c so far. + * + * (C) Copyright 2022 Sumit Garg <sumit.garg@linaro.org> + */ + +void noop(void) {} diff --git a/configs/dragonboard845c_defconfig b/configs/dragonboard845c_defconfig new file mode 100644 index 0000000000..a19e46a74b --- /dev/null +++ b/configs/dragonboard845c_defconfig @@ -0,0 +1,28 @@ +CONFIG_ARM=y +CONFIG_SKIP_LOWLEVEL_INIT=y +CONFIG_COUNTER_FREQUENCY=19000000 +CONFIG_POSITION_INDEPENDENT=y +CONFIG_ARCH_SNAPDRAGON=y +CONFIG_DEFAULT_DEVICE_TREE="dragonboard845c" +CONFIG_TARGET_DRAGONBOARD845C=y +CONFIG_IDENT_STRING="\nQualcomm-DragonBoard 845C" +CONFIG_SYS_LOAD_ADDR=0x80000000 +CONFIG_FIT=y +CONFIG_FIT_VERBOSE=y +CONFIG_BOOTDELAY=5 +CONFIG_SAVE_PREV_BL_FDT_ADDR=y +CONFIG_SAVE_PREV_BL_INITRAMFS_START_ADDR=y +# CONFIG_DISPLAY_CPUINFO is not set +CONFIG_HUSH_PARSER=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_BMP=y +# CONFIG_NET is not set +CONFIG_CLK=y +CONFIG_MSM_GPIO=y +CONFIG_PM8916_GPIO=y +CONFIG_PINCTRL=y +CONFIG_DM_PMIC=y +CONFIG_PMIC_PM8916=y +CONFIG_MSM_GENI_SERIAL=y +CONFIG_SPMI_MSM=y +CONFIG_LMB_MAX_REGIONS=64 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. -- create dump dtb:: +Boards +------------ +starqlte +^^^^^^^^^^^^ + +The starqltechn is a production board for Samsung S9 (SM-G9600) phone, +based on the Qualcomm SDM845 SoC. + +Steps: + +- Build u-boot:: + + $ export CROSS_COMPILE=<aarch64 toolchain prefix> + $ make starqltechn_defconfig + $ make + +- Create dump dtb:: workdir=/tmp/prepare_payload mkdir -p "$workdir" @@ -56,10 +72,15 @@ with appended dtb, so let's mimic linux to satisfy stock bootloader: }; 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`` +- gzip u-boot:: + + gzip u-boot.bin -Now we've got everything to build android boot image::: +- Append dtb to gzipped u-boot:: + + cat u-boot.bin.gz "$mock_dtb" > u-boot.bin.gz-dtb + +- Now we've got everything to build android boot image:: mkbootimg --base 0x0 --kernel_offset 0x00008000 \ --ramdisk_offset 0x02000000 --tags_offset 0x01e00000 \ @@ -68,16 +89,69 @@ Now we've got everything to build android boot image::: --kernel u-boot.bin.gz-dtb \ -o boot.img -Flash image with your phone's flashing method. +- Flash image with your phone's flashing method. -Boards ------------- -starqlte -^^^^^^^^^^^^ +More information can be found on the `Samsung S9 page`_. -The starqltechn is a production board for Samsung S9 (SM-G9600) phone, -based on the Qualcomm SDM845 SoC. +dragonboard845c +^^^^^^^^^^^^^^^ -More information can be found on the `Samsung S9 page`_. +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@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. + +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@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
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@linaro.org> --- 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