On 10/24/24 01:36, Markuss Broks wrote: > 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-authored-by: Maksym Holovach <nergzd@xxxxxxxxxxxxx> > Signed-off-by: Markuss Broks <markuss.broks@xxxxxxxxx> > --- > arch/arm64/boot/dts/exynos/Makefile | 1 + > arch/arm64/boot/dts/exynos/exynos9810-starlte.dts | 119 ++++++++++++++++++++++ > 2 files changed, 120 insertions(+) > > diff --git a/arch/arm64/boot/dts/exynos/Makefile b/arch/arm64/boot/dts/exynos/Makefile > index 7a934499b235892eef38cd926905e02f0ce08278..6760b3d59e819fb52bc8cf4dc6877a0b9db9ce47 100644 > --- a/arch/arm64/boot/dts/exynos/Makefile > +++ b/arch/arm64/boot/dts/exynos/Makefile > @@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_EXYNOS) += \ > exynos7885-jackpotlte.dtb \ > exynos850-e850-96.dtb \ > exynos8895-dreamlte.dtb \ > + exynos9810-starlte.dtb \ > exynos990-c1s.dtb \ > exynosautov9-sadk.dtb \ > exynosautov920-sadk.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 > index 0000000000000000000000000000000000000000..f3a1910402b8d686dd7bd156a691ec541e10ad08 > --- /dev/null > +++ b/arch/arm64/boot/dts/exynos/exynos9810-starlte.dts > @@ -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@xxxxxxxxx> > + * Copyright (c) 2024 Maksym Holovach <nergzd@xxxxxxxxxxxxx> > + */ > + > +/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"; > + }; > + }; > + > + memory@80000000 { > + device_type = "memory"; > + reg = <0x0 0x80000000 0x3c800000>, > + <0x8 0x80000000 0x80000000>, > + <0x0 0xc0000000 0x20000000>, > + <0x0 0xe1900000 0x1e700000>; > + }; > + > + reserved-memory { > + #address-cells = <2>; > + #size-cells = <1>; > + ranges; > + > + framebuffer@cc000000 { > + reg = <0x0 0xcc000000 (1440 * 2960 * 4)>; > + no-map; > + }; > + }; > + > + gpio-keys { > + compatible = "gpio-keys"; > + > + pinctrl-0 = <&key_voldown &key_volup &key_bixby &key_power>; Sort alphabetically the same way as the nodes below. > + pinctrl-names = "default"; > + > + /* In stock firmware used for assistant. Map it as a camera button for now */ > + bixby-key { > + label = "Bixby"; Small nit: isn't it referred to as a "wink" button in downstream? Might be best to stay consistent with that, like exynos8895-dreamlte. > + linux,code = <KEY_CAMERA>; > + gpios = <&gpa0 6 GPIO_ACTIVE_LOW>; > + }; > + > + power-key { > + label = "Power"; > + linux,code = <KEY_POWER>; > + gpios = <&gpa2 4 GPIO_ACTIVE_LOW>; > + wakeup-source; > + }; > + > + volup-key { > + label = "Volume Up"; > + linux,code = <KEY_VOLUMEUP>; > + gpios = <&gpa0 3 GPIO_ACTIVE_LOW>; > + }; > + > + voldown-key { > + label = "Volume Down"; > + linux,code = <KEY_VOLUMEDOWN>; > + gpios = <&gpa0 4 GPIO_ACTIVE_LOW>; > + }; Sort the nodes alphabetically. > + }; > +}; > + > +&oscclk { > + clock-frequency = <26000000>; > +}; > + > +&pinctrl_alive { > + key_bixby: key-bixby-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>; > + }; > + > + 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_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_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>; > + }; Sort these too. > +}; >