Message ID | 20241025-exynos9810-v2-12-99ca3f316e21@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) | expand |
On 10/25/24 14:24, 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-developed-by: Maksym Holovach <nergzd@nergzd723.xyz> > Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz> > > Signed-off-by: Markuss Broks <markuss.broks@gmail.com> > --- > arch/arm64/boot/dts/exynos/Makefile | 1 + > arch/arm64/boot/dts/exynos/exynos9810-starlte.dts | 120 ++++++++++++++++++++++ > 2 files changed, 121 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..7e01118e591284267f155883c236ed811d5c629a > --- /dev/null > +++ b/arch/arm64/boot/dts/exynos/exynos9810-starlte.dts > @@ -0,0 +1,120 @@ > +// 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>, > + <0x8 0x80000000 0x80000000>, Sort these. > + <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; > + }; > + }; > +}; > + > +&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>; > + }; > + Drop empty \n. Otherwise looks OK to me. Best regards, Ivo > + > + 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>; > + }; > +}; >
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..7e01118e591284267f155883c236ed811d5c629a --- /dev/null +++ b/arch/arm64/boot/dts/exynos/exynos9810-starlte.dts @@ -0,0 +1,120 @@ +// 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>, + <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; + }; + }; +}; + +&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>; + }; +};