board: samsung: add Samsung Galaxy S9/S9+(SM-G96x0) board

Samsung S9 SM-G9600 - Snapdragon SDM845 version of the phone,
for China \ Hong Kong markets.
Has unlockable bootloader, unlike SM-G960U (American market version),
which allows running u-boot as a chain-loaded bootloader.

Signed-off-by: Dzmitry Sankouski <dsankouski@gmail.com>
Cc: Ramon Fried <rfried.dev@gmail.com>
Cc: Tom Rini <trini@konsulko.com>
This commit is contained in:
Dzmitry Sankouski 2021-10-17 13:44:32 +03:00 committed by Tom Rini
parent 4cbc16ceb2
commit 80565ec6f0
12 changed files with 220 additions and 7 deletions

View file

@ -477,6 +477,7 @@ dtb-$(CONFIG_TARGET_SL28) += fsl-ls1028a-kontron-sl28.dtb \
dtb-$(CONFIG_TARGET_DRAGONBOARD410C) += dragonboard410c.dtb
dtb-$(CONFIG_TARGET_DRAGONBOARD820C) += dragonboard820c.dtb
dtb-$(CONFIG_TARGET_STARQLTECHN) += starqltechn.dtb
dtb-$(CONFIG_TARGET_STEMMY) += ste-ux500-samsung-stemmy.dtb

View file

@ -0,0 +1,39 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* U-Boot addition to handle Samsung S9 SM-G9600 (starqltechn) pins
*
* (C) Copyright 2021 Dzmitry Sankouski <dsankouski@gmail.com>
*
*/
/
{
soc {
u-boot,dm-pre-reloc;
gcc {
clock-controller@100000 {
u-boot,dm-pre-reloc;
};
serial@0xa84000 {
u-boot,dm-pre-reloc;
};
gpio_north@3900000 {
u-boot,dm-pre-reloc;
};
pinctrl@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";
};
};

View file

@ -0,0 +1,53 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Samsung S9 SM-G9600 (starqltechn) board device tree source
*
* (C) Copyright 2021 Dzmitry Sankouski <dsankouski@gmail.com>
*
*/
/dts-v1/;
#include "sdm845.dtsi"
/ {
model = "Samsung S9 (SM-G9600)";
compatible = "qcom,sdm845-mtp", "qcom,sdm845", "qcom,mtp";
#address-cells = <2>;
#size-cells = <2>;
chosen {
stdout-path = "serial0:921600n8";
};
aliases {
serial0 = &debug_uart;
};
memory {
device_type = "memory";
reg = <0 0x80000000 0 0xfe1bffff>;
};
psci {
compatible = "arm,psci-1.0";
method = "smc";
};
soc: soc {
serial@0xa84000 {
status = "ok";
};
pinctrl@3900000 {
muic_i2c: muic_i2c {
pins = "GPIO_33", "GPIO_34";
drive-strength = <0x2>;
function = "gpio";
bias-disable;
};
};
};
};
#include "starqltechn-uboot.dtsi"

View file

@ -12,6 +12,10 @@ config SPL_SYS_MALLOC_F_LEN
config SDM845
bool "Qualcomm Snapdragon 845 SoC"
default n
select LINUX_KERNEL_IMAGE_HEADER
config LNX_KRNL_IMG_TEXT_OFFSET_BASE
default 0x80000000
choice
prompt "Snapdragon board select"
@ -40,9 +44,22 @@ config TARGET_DRAGONBOARD820C
- 3GiB RAM
- 32GiB UFS drive
config TARGET_STARQLTECHN
bool "Samsung S9 SM-G9600(starqltechn)"
help
Support for Samsung S9 SM-G9600(starqltechn) board.
Features:
- Qualcomm Snapdragon SDM845 SoC
- 4GiB RAM
- 64GiB UFS drive
select MISC_INIT_R
select SDM845
select DM_ETH if NET
endchoice
source "board/qualcomm/dragonboard410c/Kconfig"
source "board/qualcomm/dragonboard820c/Kconfig"
source "board/samsung/starqltechn/Kconfig"
endif

View file

@ -0,0 +1,22 @@
if TARGET_STARQLTECHN
config SYS_BOARD
default "starqltechn"
help
starqltechn is a production board for S9 and S9+ phones(SM-G96x0) phones based on SDM845 SoC.
config SYS_CONFIG_NAME
string "Board configuration name"
default "sdm845"
help
This option contains information about board configuration name.
Based on this option include/configs/<CONFIG_SYS_CONFIG_NAME>.h header
will be used for board configuration.
config SYS_VENDOR
default "samsung"
config SYS_CONFIG_NAME
default "starqltechn"
endif

View file

@ -0,0 +1,6 @@
Samsung S9 (SM-G9600)(starqltechn) Board
M: Dzmitry Sankouski <dsankouski@gmail.com>
S: Maintained
F: board/samsung/starqltechn/
F: include/configs/starqltechn.h
F: configs/starqltechn_defconfig

View file

@ -0,0 +1,9 @@
# SPDX-License-Identifier: GPL-2.0+
#
# (C) Copyright 2021 Dzmitry Sankouski <dsankouski@gmail.com>
#
# This empty file prevents make error.
# Board logic defined in board/qualcomm/common/sdm845.c, no custom logic for starqltechn so far.
#
obj-y += starqltechn.o

View file

@ -0,0 +1,10 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* This empty file prevents make linking error.
* No custom logic for starqltechn so far.
*
* (C) Copyright 2021 Dzmitry Sankouski <dsankouski@gmail.com>
*
*/
void nooop(void) {}

View file

@ -0,0 +1,24 @@
CONFIG_ARM=y
CONFIG_SKIP_LOWLEVEL_INIT=y
CONFIG_POSITION_INDEPENDENT=y
CONFIG_ARCH_SNAPDRAGON=y
CONFIG_SYS_TEXT_BASE=0x80000000
CONFIG_SYS_MALLOC_LEN=0x81f000
CONFIG_DEFAULT_DEVICE_TREE="starqltechn"
CONFIG_TARGET_STARQLTECHN=y
CONFIG_IDENT_STRING="\nSamsung S9 SM-G9600"
CONFIG_SYS_LOAD_ADDR=0x80000000
CONFIG_USE_PREBOOT=y
# CONFIG_DISPLAY_CPUINFO is not set
CONFIG_HUSH_PARSER=y
CONFIG_CMD_GPIO=y
# CONFIG_NET is not set
# CONFIG_DM_STDIO 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

View file

@ -7,3 +7,4 @@ Qualcomm
:maxdepth: 2
dragonboard410c
sdm845

View file

@ -0,0 +1,38 @@
.. SPDX-License-Identifier: GPL-2.0+
.. sectionauthor:: Dzmitry Sankouski <dsankouski@gmail.com>
Snapdragon 845
================
About this
----------
This document describes the information about Qualcomm Snapdragon 845
supported boards and it's usage steps.
SDM845 - hi-end qualcomm chip, introduced in late 2017.
Mostly used in flagship phones and tablets of 2018.
U-Boot can be used as a replacement for Qualcomm's original ABL (UEFI) bootloader.
It is loaded as an Android boot image through ABL
Installation
------------
First, setup ``CROSS_COMPILE`` for aarch64. Then, build U-Boot for your board::
$ export CROSS_COMPILE=<aarch64 toolchain prefix>
$ make <your board name here, see Boards section>_defconfig
$ make
This will build ``u-boot.bin`` in the configured output directory.
Boards
------------
starqlte
^^^^^^^^^^^^
The starqltechn is a production board for Samsung S9 (SM-G9600) phone,
based on the Qualcomm SDM845 SoC.
More information can be found on the `Samsung S9 page`_.
.. _Samsung S9 page: https://en.wikipedia.org/wiki/Samsung_Galaxy_S9

View file

@ -11,19 +11,12 @@
#include <linux/sizes.h>
#include <asm/arch/sysmap-sdm845.h>
#define CONFIG_SYS_LOAD_ADDR 0x80000000
#define CONFIG_SYS_BAUDRATE_TABLE { 115200, 230400, 460800, 921600 }
/* Generic Timer Definitions */
#define COUNTER_FREQUENCY 19000000
#define EXTRA_ENV_SETTINGS \
#define CONFIG_EXTRA_ENV_SETTINGS \
"loadaddr=0x80000000\0"
/* Size of malloc() pool */
#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + SZ_8M)
#define CONFIG_SYS_BOOTM_LEN SZ_64M
/* Monitor Command Prompt */