]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
arm64: dts: exynos: Add initial support for Samsung Galaxy S9 (SM-G960F)
authorMarkuss Broks <markuss.broks@gmail.com>
Sat, 14 Dec 2024 14:56:47 +0000 (16:56 +0200)
committerKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Sun, 22 Dec 2024 14:45:09 +0000 (15:45 +0100)
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>
arch/arm64/boot/dts/exynos/Makefile
arch/arm64/boot/dts/exynos/exynos9810-starlte.dts [new file with mode: 0644]

index ee73e1a2db7ea64a0b8e9067a1a264e366f59bc3..f6f4bc650a94db0bc6bc017432e2e3dbba90e8c3 100644 (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               \
diff --git a/arch/arm64/boot/dts/exynos/exynos9810-starlte.dts b/arch/arm64/boot/dts/exynos/exynos9810-starlte.dts
new file mode 100644 (file)
index 0000000..fc0ddfe
--- /dev/null
@@ -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>;
+       };
+};