arm64: dts: exynos: Add initial support for Samsung Galaxy S9 (SM-G960F)

Samsung Galaxy S9 (SM-G960F), codenamed starlte, is a mobile phone
released in 2017. It has 4GB of RAM, 64GB of UFS storage, Exynos9810
SoC and 1440x2960 Super AMOLED display.

This initial device tree enables the framebuffer pre-initialised
by bootloader and physical buttons of the device, with more support
to come in the future.

Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
Link: https://lore.kernel.org/r/20241214-exynos9810-v4-2-4e91fbbc2133@gmail.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
This commit is contained in:
Markuss Broks
2024-12-14 16:56:47 +02:00
committed by Krzysztof Kozlowski
parent 698be6fe8f
commit 63da297f03
2 changed files with 120 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_EXYNOS) += \
exynos7885-jackpotlte.dtb \
exynos850-e850-96.dtb \
exynos8895-dreamlte.dtb \
exynos9810-starlte.dtb \
exynos990-c1s.dtb \
exynos990-r8s.dtb \
exynos990-x1s.dtb \

View File

@@ -0,0 +1,119 @@
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
/*
* Samsung Galaxy S9 (starlte/SM-G960F) device tree source
*
* Copyright (c) 2024 Markuss Broks <markuss.broks@gmail.com>
* Copyright (c) 2024 Maksym Holovach <nergzd@nergzd723.xyz>
*/
/dts-v1/;
#include "exynos9810.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
/ {
model = "Samsung Galaxy S9 (SM-G960F)";
compatible = "samsung,starlte", "samsung,exynos9810";
chassis-type = "handset";
chosen {
#address-cells = <2>;
#size-cells = <1>;
ranges;
framebuffer@cc000000 {
compatible = "simple-framebuffer";
reg = <0x0 0xcc000000 (1440 * 2960 * 4)>;
width = <1440>;
height = <2960>;
stride = <(1440 * 4)>;
format = "a8r8g8b8";
};
};
gpio-keys {
compatible = "gpio-keys";
pinctrl-0 = <&key_power &key_voldown &key_volup &key_wink>;
pinctrl-names = "default";
power-key {
label = "Power";
linux,code = <KEY_POWER>;
gpios = <&gpa2 4 GPIO_ACTIVE_LOW>;
wakeup-source;
};
voldown-key {
label = "Volume Down";
linux,code = <KEY_VOLUMEDOWN>;
gpios = <&gpa0 4 GPIO_ACTIVE_LOW>;
};
volup-key {
label = "Volume Up";
linux,code = <KEY_VOLUMEUP>;
gpios = <&gpa0 3 GPIO_ACTIVE_LOW>;
};
/* In stock firmware used for assistant. Map it as a camera button for now */
wink-key {
label = "Camera";
linux,code = <KEY_CAMERA>;
gpios = <&gpa0 6 GPIO_ACTIVE_LOW>;
};
};
memory@80000000 {
device_type = "memory";
reg = <0x0 0x80000000 0x3c800000>,
<0x0 0xc0000000 0x20000000>,
<0x0 0xe1900000 0x1e700000>,
<0x8 0x80000000 0x80000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <1>;
ranges;
framebuffer@cc000000 {
reg = <0x0 0xcc000000 (1440 * 2960 * 4)>;
no-map;
};
};
};
&oscclk {
clock-frequency = <26000000>;
};
&pinctrl_alive {
key_power: key-power-pins {
samsung,pins = "gpa2-4";
samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
};
key_voldown: key-voldown-pins {
samsung,pins = "gpa0-4";
samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
};
key_volup: key-volup-pins {
samsung,pins = "gpa0-3";
samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
};
key_wink: key-wink-pins {
samsung,pins = "gpa0-6";
samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
};
};