1296621bfSIvaylo Ivanov// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 2296621bfSIvaylo Ivanov/* 3296621bfSIvaylo Ivanov * Samsung Galaxy S8 (dreamlte/SM-G950F) device tree source 4296621bfSIvaylo Ivanov * 5296621bfSIvaylo Ivanov * Copyright (c) 2024, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com> 6296621bfSIvaylo Ivanov */ 7296621bfSIvaylo Ivanov 8296621bfSIvaylo Ivanov/dts-v1/; 9296621bfSIvaylo Ivanov#include "exynos8895.dtsi" 10296621bfSIvaylo Ivanov#include <dt-bindings/gpio/gpio.h> 11296621bfSIvaylo Ivanov#include <dt-bindings/input/input.h> 12296621bfSIvaylo Ivanov#include <dt-bindings/interrupt-controller/irq.h> 13*0cbf9ca0SIvaylo Ivanov#include <dt-bindings/soc/samsung,exynos-usi.h> 14296621bfSIvaylo Ivanov 15296621bfSIvaylo Ivanov/ { 16296621bfSIvaylo Ivanov model = "Samsung Galaxy S8 (SM-G950F)"; 17296621bfSIvaylo Ivanov compatible = "samsung,dreamlte", "samsung,exynos8895"; 18296621bfSIvaylo Ivanov chassis-type = "handset"; 19296621bfSIvaylo Ivanov 202e7281e6SIvaylo Ivanov aliases { 212e7281e6SIvaylo Ivanov mmc0 = &mmc; 222e7281e6SIvaylo Ivanov }; 232e7281e6SIvaylo Ivanov 24296621bfSIvaylo Ivanov chosen { 25296621bfSIvaylo Ivanov #address-cells = <2>; 26296621bfSIvaylo Ivanov #size-cells = <1>; 27296621bfSIvaylo Ivanov ranges; 28296621bfSIvaylo Ivanov 29296621bfSIvaylo Ivanov framebuffer: framebuffer@cc000000 { 30296621bfSIvaylo Ivanov compatible = "simple-framebuffer"; 31296621bfSIvaylo Ivanov reg = <0 0xcc000000 (1440 * 2960 * 4)>; 32296621bfSIvaylo Ivanov width = <1440>; 33296621bfSIvaylo Ivanov height = <2960>; 34296621bfSIvaylo Ivanov stride = <(1440 * 4)>; 35296621bfSIvaylo Ivanov format = "a8r8g8b8"; 36296621bfSIvaylo Ivanov }; 37296621bfSIvaylo Ivanov }; 38296621bfSIvaylo Ivanov 39296621bfSIvaylo Ivanov memory@80000000 { 40296621bfSIvaylo Ivanov device_type = "memory"; 41296621bfSIvaylo Ivanov reg = <0x0 0x80000000 0x3c800000>, 42296621bfSIvaylo Ivanov <0x0 0xc0000000 0x40000000>, 43296621bfSIvaylo Ivanov <0x8 0x80000000 0x80000000>; 44296621bfSIvaylo Ivanov }; 45296621bfSIvaylo Ivanov 46296621bfSIvaylo Ivanov reserved-memory { 47296621bfSIvaylo Ivanov #address-cells = <2>; 48296621bfSIvaylo Ivanov #size-cells = <1>; 49296621bfSIvaylo Ivanov ranges; 50296621bfSIvaylo Ivanov 51296621bfSIvaylo Ivanov ramoops@92000000 { 52296621bfSIvaylo Ivanov compatible = "ramoops"; 53296621bfSIvaylo Ivanov reg = <0 0x92000000 0x8000>; 54296621bfSIvaylo Ivanov record-size = <0x4000>; 55296621bfSIvaylo Ivanov console-size = <0x4000>; 56296621bfSIvaylo Ivanov }; 57296621bfSIvaylo Ivanov 58296621bfSIvaylo Ivanov cont_splash_mem: framebuffer@cc000000 { 59296621bfSIvaylo Ivanov reg = <0 0xcc000000 (1440 * 2960 * 4)>; 60296621bfSIvaylo Ivanov no-map; 61296621bfSIvaylo Ivanov }; 62296621bfSIvaylo Ivanov }; 63296621bfSIvaylo Ivanov 64296621bfSIvaylo Ivanov gpio-keys { 65296621bfSIvaylo Ivanov compatible = "gpio-keys"; 66296621bfSIvaylo Ivanov 67296621bfSIvaylo Ivanov pinctrl-0 = <&key_power &key_voldown &key_volup &key_wink>; 68296621bfSIvaylo Ivanov pinctrl-names = "default"; 69296621bfSIvaylo Ivanov 70296621bfSIvaylo Ivanov power-key { 71296621bfSIvaylo Ivanov label = "Power"; 72296621bfSIvaylo Ivanov linux,code = <KEY_POWER>; 73296621bfSIvaylo Ivanov gpios = <&gpa2 4 GPIO_ACTIVE_LOW>; 74296621bfSIvaylo Ivanov wakeup-source; 75296621bfSIvaylo Ivanov }; 76296621bfSIvaylo Ivanov 77296621bfSIvaylo Ivanov voldown-key { 78296621bfSIvaylo Ivanov label = "Volume Down"; 79296621bfSIvaylo Ivanov linux,code = <KEY_VOLUMEDOWN>; 80296621bfSIvaylo Ivanov gpios = <&gpa0 4 GPIO_ACTIVE_LOW>; 81296621bfSIvaylo Ivanov }; 82296621bfSIvaylo Ivanov 83296621bfSIvaylo Ivanov volup-key { 84296621bfSIvaylo Ivanov label = "Volume Up"; 85296621bfSIvaylo Ivanov linux,code = <KEY_VOLUMEUP>; 86296621bfSIvaylo Ivanov gpios = <&gpa0 3 GPIO_ACTIVE_LOW>; 87296621bfSIvaylo Ivanov }; 88296621bfSIvaylo Ivanov 89296621bfSIvaylo Ivanov /* Typically used for Bixby. Map it as a camera button for now */ 90296621bfSIvaylo Ivanov wink-key { 91296621bfSIvaylo Ivanov label = "Camera"; 92296621bfSIvaylo Ivanov linux,code = <KEY_CAMERA>; 93296621bfSIvaylo Ivanov gpios = <&gpa0 6 GPIO_ACTIVE_LOW>; 94296621bfSIvaylo Ivanov wakeup-source; 95296621bfSIvaylo Ivanov }; 96296621bfSIvaylo Ivanov }; 97*0cbf9ca0SIvaylo Ivanov 98*0cbf9ca0SIvaylo Ivanov /* TODO: Remove once PMIC is implemented */ 99*0cbf9ca0SIvaylo Ivanov reg_placeholder: regulator-0 { 100*0cbf9ca0SIvaylo Ivanov compatible = "regulator-fixed"; 101*0cbf9ca0SIvaylo Ivanov regulator-name = "reg-placeholder"; 102*0cbf9ca0SIvaylo Ivanov }; 103*0cbf9ca0SIvaylo Ivanov}; 104*0cbf9ca0SIvaylo Ivanov 105*0cbf9ca0SIvaylo Ivanov&hsi2c_23 { 106*0cbf9ca0SIvaylo Ivanov #address-cells = <1>; 107*0cbf9ca0SIvaylo Ivanov #size-cells = <0>; 108*0cbf9ca0SIvaylo Ivanov status = "okay"; 109*0cbf9ca0SIvaylo Ivanov 110*0cbf9ca0SIvaylo Ivanov touchscreen@48 { 111*0cbf9ca0SIvaylo Ivanov compatible = "samsung,s6sy761"; 112*0cbf9ca0SIvaylo Ivanov reg = <0x48>; 113*0cbf9ca0SIvaylo Ivanov 114*0cbf9ca0SIvaylo Ivanov /* TODO: Update once PMIC is implemented */ 115*0cbf9ca0SIvaylo Ivanov avdd-supply = <®_placeholder>; 116*0cbf9ca0SIvaylo Ivanov vdd-supply = <®_placeholder>; 117*0cbf9ca0SIvaylo Ivanov 118*0cbf9ca0SIvaylo Ivanov interrupt-parent = <&gpa1>; 119*0cbf9ca0SIvaylo Ivanov interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 120*0cbf9ca0SIvaylo Ivanov 121*0cbf9ca0SIvaylo Ivanov pinctrl-0 = <&ts_int>; 122*0cbf9ca0SIvaylo Ivanov pinctrl-names = "default"; 123*0cbf9ca0SIvaylo Ivanov }; 124296621bfSIvaylo Ivanov}; 125296621bfSIvaylo Ivanov 126296621bfSIvaylo Ivanov&oscclk { 127296621bfSIvaylo Ivanov clock-frequency = <26000000>; 128296621bfSIvaylo Ivanov}; 129296621bfSIvaylo Ivanov 1302e7281e6SIvaylo Ivanov&mmc { 1312e7281e6SIvaylo Ivanov pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus1 &sd2_bus4 &sd2_cd>; 1322e7281e6SIvaylo Ivanov pinctrl-names = "default"; 1332e7281e6SIvaylo Ivanov 1342e7281e6SIvaylo Ivanov bus-width = <4>; 1352e7281e6SIvaylo Ivanov card-detect-delay = <200>; 1362e7281e6SIvaylo Ivanov cd-gpios = <&gpa1 5 GPIO_ACTIVE_LOW>; 1372e7281e6SIvaylo Ivanov clock-frequency = <800000000>; 1382e7281e6SIvaylo Ivanov disable-wp; 1392e7281e6SIvaylo Ivanov sd-uhs-sdr50; 1402e7281e6SIvaylo Ivanov sd-uhs-sdr104; 1412e7281e6SIvaylo Ivanov 1422e7281e6SIvaylo Ivanov /* TODO: Add regulators once PMIC is implemented */ 1432e7281e6SIvaylo Ivanov 1442e7281e6SIvaylo Ivanov samsung,dw-mshc-ciu-div = <3>; 1452e7281e6SIvaylo Ivanov samsung,dw-mshc-ddr-timing = <1 2>; 1462e7281e6SIvaylo Ivanov samsung,dw-mshc-sdr-timing = <0 3>; 1472e7281e6SIvaylo Ivanov 1482e7281e6SIvaylo Ivanov status = "okay"; 1492e7281e6SIvaylo Ivanov}; 1502e7281e6SIvaylo Ivanov 151296621bfSIvaylo Ivanov&pinctrl_alive { 152296621bfSIvaylo Ivanov key_power: key-power-pins { 153296621bfSIvaylo Ivanov samsung,pins = "gpa2-4"; 154296621bfSIvaylo Ivanov samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 155296621bfSIvaylo Ivanov samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 156296621bfSIvaylo Ivanov samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>; 157296621bfSIvaylo Ivanov }; 158296621bfSIvaylo Ivanov 159296621bfSIvaylo Ivanov key_voldown: key-voldown-pins { 160296621bfSIvaylo Ivanov samsung,pins = "gpa0-4"; 161296621bfSIvaylo Ivanov samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 162296621bfSIvaylo Ivanov samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 163296621bfSIvaylo Ivanov samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>; 164296621bfSIvaylo Ivanov }; 165296621bfSIvaylo Ivanov 166296621bfSIvaylo Ivanov key_volup: key-volup-pins { 167296621bfSIvaylo Ivanov samsung,pins = "gpa0-3"; 168296621bfSIvaylo Ivanov samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 169296621bfSIvaylo Ivanov samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 170296621bfSIvaylo Ivanov samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>; 171296621bfSIvaylo Ivanov }; 172296621bfSIvaylo Ivanov 173296621bfSIvaylo Ivanov key_wink: key-wink-pins { 174296621bfSIvaylo Ivanov samsung,pins = "gpa0-6"; 175296621bfSIvaylo Ivanov samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 176296621bfSIvaylo Ivanov samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 177296621bfSIvaylo Ivanov samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>; 178296621bfSIvaylo Ivanov }; 1792e7281e6SIvaylo Ivanov 1802e7281e6SIvaylo Ivanov sd2_cd: sd2-cd-pins { 1812e7281e6SIvaylo Ivanov samsung,pins = "gpa1-5"; 1822e7281e6SIvaylo Ivanov samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 1832e7281e6SIvaylo Ivanov samsung,pin-pud = <EXYNOS_PIN_PULL_UP>; 1842e7281e6SIvaylo Ivanov samsung,pin-drv = <EXYNOS7_PIN_DRV_LV4>; 1852e7281e6SIvaylo Ivanov }; 186*0cbf9ca0SIvaylo Ivanov 187*0cbf9ca0SIvaylo Ivanov ts_int: ts-int-pins { 188*0cbf9ca0SIvaylo Ivanov samsung,pins = "gpa1-0"; 189*0cbf9ca0SIvaylo Ivanov samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>; 190*0cbf9ca0SIvaylo Ivanov samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 191*0cbf9ca0SIvaylo Ivanov samsung,pin-drv = <EXYNOS7_PIN_DRV_LV1>; 192*0cbf9ca0SIvaylo Ivanov }; 193*0cbf9ca0SIvaylo Ivanov}; 194*0cbf9ca0SIvaylo Ivanov 195*0cbf9ca0SIvaylo Ivanov&usi9 { 196*0cbf9ca0SIvaylo Ivanov samsung,mode = <USI_MODE_I2C0_1>; 197*0cbf9ca0SIvaylo Ivanov status = "okay"; 198296621bfSIvaylo Ivanov}; 199