mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
board: qualcomm: Add support for dragonboard845c
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> Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
This commit is contained in:
parent
f5ed6c9ccf
commit
d35b211374
11 changed files with 332 additions and 14 deletions
37
arch/arm/dts/dragonboard845c-uboot.dtsi
Normal file
37
arch/arm/dts/dragonboard845c-uboot.dtsi
Normal file
|
@ -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";
|
||||
};
|
||||
};
|
44
arch/arm/dts/dragonboard845c.dts
Normal file
44
arch/arm/dts/dragonboard845c.dts
Normal file
|
@ -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"
|
|
@ -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
|
||||
|
|
12
board/qualcomm/dragonboard845c/Kconfig
Normal file
12
board/qualcomm/dragonboard845c/Kconfig
Normal file
|
@ -0,0 +1,12 @@
|
|||
if TARGET_DRAGONBOARD845C
|
||||
|
||||
config SYS_BOARD
|
||||
default "dragonboard845c"
|
||||
|
||||
config SYS_CONFIG_NAME
|
||||
default "dragonboard845c"
|
||||
|
||||
config SYS_VENDOR
|
||||
default "qualcomm"
|
||||
|
||||
endif
|
6
board/qualcomm/dragonboard845c/MAINTAINERS
Normal file
6
board/qualcomm/dragonboard845c/MAINTAINERS
Normal file
|
@ -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
|
9
board/qualcomm/dragonboard845c/Makefile
Normal file
9
board/qualcomm/dragonboard845c/Makefile
Normal file
|
@ -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
|
63
board/qualcomm/dragonboard845c/db845c.its
Normal file
63
board/qualcomm/dragonboard845c/db845c.its
Normal file
|
@ -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";
|
||||
};
|
||||
};
|
||||
};
|
9
board/qualcomm/dragonboard845c/dragonboard845c.c
Normal file
9
board/qualcomm/dragonboard845c/dragonboard845c.c
Normal file
|
@ -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) {}
|
29
configs/dragonboard845c_defconfig
Normal file
29
configs/dragonboard845c_defconfig
Normal file
|
@ -0,0 +1,29 @@
|
|||
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_SYS_MAXARGS=64
|
||||
CONFIG_SYS_CBSIZE=512
|
||||
CONFIG_CMD_GPIO=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
|
|
@ -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::
|
||||
|
||||
Now we've got everything to build android boot image:::
|
||||
gzip u-boot.bin
|
||||
|
||||
- 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.
|
||||
|
||||
Boards
|
||||
------------
|
||||
starqlte
|
||||
^^^^^^^^^^^^
|
||||
|
||||
The starqltechn is a production board for Samsung S9 (SM-G9600) phone,
|
||||
based on the Qualcomm SDM845 SoC.
|
||||
- Flash image with your phone's flashing method.
|
||||
|
||||
More information can be found on the `Samsung S9 page`_.
|
||||
|
||||
dragonboard845c
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
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/
|
||||
|
|
21
include/configs/dragonboard845c.h
Normal file
21
include/configs/dragonboard845c.h
Normal file
|
@ -0,0 +1,21 @@
|
|||
/* 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"
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue