arm64: dts: exynos: Add initial support for Samsung Galaxy S8
authorIvaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
Fri, 20 Sep 2024 15:45:08 +0000 (18:45 +0300)
committerKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Wed, 2 Oct 2024 07:52:38 +0000 (09:52 +0200)
Samsung Galaxy S8 (SM-G950F), codenamed dreamlte, is a mobile phone
from 2017. It features 4GB RAM, 64GB UFS 2.1, Exynos 8895 SoC and a
1440x2960 Super AMOLED display.

This initial device tree enables SimpleFB, PSTORE and GPIO keys.

Signed-off-by: Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
Link: https://lore.kernel.org/r/20240920154508.1618410-11-ivo.ivanov.ivanov1@gmail.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arch/arm64/boot/dts/exynos/Makefile
arch/arm64/boot/dts/exynos/exynos8895-dreamlte.dts [new file with mode: 0644]

index d7f2191c2cdbe9674c067dfd93685ff4821a5776..18f5a3eed5233547a995237f3d96ecb3bc98d7f3 100644 (file)
@@ -7,5 +7,6 @@ dtb-$(CONFIG_ARCH_EXYNOS) += \
        exynos7-espresso.dtb            \
        exynos7885-jackpotlte.dtb       \
        exynos850-e850-96.dtb           \
+       exynos8895-dreamlte.dtb         \
        exynosautov9-sadk.dtb           \
        exynosautov920-sadk.dtb
diff --git a/arch/arm64/boot/dts/exynos/exynos8895-dreamlte.dts b/arch/arm64/boot/dts/exynos/exynos8895-dreamlte.dts
new file mode 100644 (file)
index 0000000..3a376ab
--- /dev/null
@@ -0,0 +1,126 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
+/*
+ * Samsung Galaxy S8 (dreamlte/SM-G950F) device tree source
+ *
+ * Copyright (c) 2024, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
+ */
+
+/dts-v1/;
+#include "exynos8895.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       model = "Samsung Galaxy S8 (SM-G950F)";
+       compatible = "samsung,dreamlte", "samsung,exynos8895";
+       chassis-type = "handset";
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <1>;
+               ranges;
+
+               framebuffer: framebuffer@cc000000 {
+                       compatible = "simple-framebuffer";
+                       reg = <0 0xcc000000 (1440 * 2960 * 4)>;
+                       width = <1440>;
+                       height = <2960>;
+                       stride = <(1440 * 4)>;
+                       format = "a8r8g8b8";
+               };
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x0 0x80000000 0x3c800000>,
+                     <0x0 0xc0000000 0x40000000>,
+                     <0x8 0x80000000 0x80000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <1>;
+               ranges;
+
+               ramoops@92000000 {
+                       compatible = "ramoops";
+                       reg = <0 0x92000000 0x8000>;
+                       record-size = <0x4000>;
+                       console-size = <0x4000>;
+               };
+
+               cont_splash_mem: framebuffer@cc000000 {
+                       reg = <0 0xcc000000 (1440 * 2960 * 4)>;
+                       no-map;
+               };
+       };
+
+       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>;
+               };
+
+               /* Typically used for Bixby. Map it as a camera button for now */
+               wink-key {
+                       label = "Camera";
+                       linux,code = <KEY_CAMERA>;
+                       gpios = <&gpa0 6 GPIO_ACTIVE_LOW>;
+                       wakeup-source;
+               };
+       };
+};
+
+&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_NONE>;
+               samsung,pin-drv = <EXYNOS7_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_NONE>;
+               samsung,pin-drv = <EXYNOS7_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_NONE>;
+               samsung,pin-drv = <EXYNOS7_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_NONE>;
+               samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>;
+       };
+};