1*5430fd9eSIvaylo Ivanov// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 2*5430fd9eSIvaylo Ivanov/* 3*5430fd9eSIvaylo Ivanov * Samsung Galaxy S22+ (g0s/SM-S906B) device tree source 4*5430fd9eSIvaylo Ivanov * 5*5430fd9eSIvaylo Ivanov * Copyright (c) 2025, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com> 6*5430fd9eSIvaylo Ivanov */ 7*5430fd9eSIvaylo Ivanov 8*5430fd9eSIvaylo Ivanov/dts-v1/; 9*5430fd9eSIvaylo Ivanov#include "exynos2200.dtsi" 10*5430fd9eSIvaylo Ivanov#include <dt-bindings/gpio/gpio.h> 11*5430fd9eSIvaylo Ivanov#include <dt-bindings/input/input.h> 12*5430fd9eSIvaylo Ivanov#include <dt-bindings/interrupt-controller/irq.h> 13*5430fd9eSIvaylo Ivanov 14*5430fd9eSIvaylo Ivanov/ { 15*5430fd9eSIvaylo Ivanov model = "Samsung Galaxy S22+ (SM-S906B)"; 16*5430fd9eSIvaylo Ivanov compatible = "samsung,g0s", "samsung,exynos2200"; 17*5430fd9eSIvaylo Ivanov chassis-type = "handset"; 18*5430fd9eSIvaylo Ivanov 19*5430fd9eSIvaylo Ivanov chosen { 20*5430fd9eSIvaylo Ivanov #address-cells = <2>; 21*5430fd9eSIvaylo Ivanov #size-cells = <2>; 22*5430fd9eSIvaylo Ivanov ranges; 23*5430fd9eSIvaylo Ivanov 24*5430fd9eSIvaylo Ivanov framebuffer: framebuffer { 25*5430fd9eSIvaylo Ivanov compatible = "simple-framebuffer"; 26*5430fd9eSIvaylo Ivanov memory-region = <&cont_splash_mem>; 27*5430fd9eSIvaylo Ivanov width = <1080>; 28*5430fd9eSIvaylo Ivanov height = <2340>; 29*5430fd9eSIvaylo Ivanov stride = <(1080 * 4)>; 30*5430fd9eSIvaylo Ivanov format = "a8r8g8b8"; 31*5430fd9eSIvaylo Ivanov }; 32*5430fd9eSIvaylo Ivanov }; 33*5430fd9eSIvaylo Ivanov 34*5430fd9eSIvaylo Ivanov /* 35*5430fd9eSIvaylo Ivanov * RTC clock (XrtcXTI); external, must be 32.768 kHz. 36*5430fd9eSIvaylo Ivanov * 37*5430fd9eSIvaylo Ivanov * TODO: Remove this once RTC clock is implemented properly as part of 38*5430fd9eSIvaylo Ivanov * PMIC driver. 39*5430fd9eSIvaylo Ivanov */ 40*5430fd9eSIvaylo Ivanov rtcclk: clock-rtcclk { 41*5430fd9eSIvaylo Ivanov compatible = "fixed-clock"; 42*5430fd9eSIvaylo Ivanov clock-output-names = "rtcclk"; 43*5430fd9eSIvaylo Ivanov #clock-cells = <0>; 44*5430fd9eSIvaylo Ivanov clock-frequency = <32768>; 45*5430fd9eSIvaylo Ivanov }; 46*5430fd9eSIvaylo Ivanov 47*5430fd9eSIvaylo Ivanov gpio-keys { 48*5430fd9eSIvaylo Ivanov compatible = "gpio-keys"; 49*5430fd9eSIvaylo Ivanov 50*5430fd9eSIvaylo Ivanov pinctrl-0 = <&key_volup>; 51*5430fd9eSIvaylo Ivanov pinctrl-names = "default"; 52*5430fd9eSIvaylo Ivanov 53*5430fd9eSIvaylo Ivanov volup-key { 54*5430fd9eSIvaylo Ivanov label = "Volume Up"; 55*5430fd9eSIvaylo Ivanov linux,code = <KEY_VOLUMEUP>; 56*5430fd9eSIvaylo Ivanov gpios = <&gpa3 0 GPIO_ACTIVE_LOW>; 57*5430fd9eSIvaylo Ivanov wakeup-source; 58*5430fd9eSIvaylo Ivanov }; 59*5430fd9eSIvaylo Ivanov }; 60*5430fd9eSIvaylo Ivanov 61*5430fd9eSIvaylo Ivanov memory@80000000 { 62*5430fd9eSIvaylo Ivanov device_type = "memory"; 63*5430fd9eSIvaylo Ivanov reg = <0x0 0x80000000 0x0 0x80000000>, 64*5430fd9eSIvaylo Ivanov <0x8 0x80000000 0x1 0x7e000000>; 65*5430fd9eSIvaylo Ivanov }; 66*5430fd9eSIvaylo Ivanov 67*5430fd9eSIvaylo Ivanov /* TODO: Remove this once PMIC is implemented */ 68*5430fd9eSIvaylo Ivanov reg_dummy: regulator-0 { 69*5430fd9eSIvaylo Ivanov compatible = "regulator-fixed"; 70*5430fd9eSIvaylo Ivanov regulator-name = "dummy_reg"; 71*5430fd9eSIvaylo Ivanov }; 72*5430fd9eSIvaylo Ivanov 73*5430fd9eSIvaylo Ivanov reserved-memory { 74*5430fd9eSIvaylo Ivanov #address-cells = <2>; 75*5430fd9eSIvaylo Ivanov #size-cells = <2>; 76*5430fd9eSIvaylo Ivanov ranges; 77*5430fd9eSIvaylo Ivanov 78*5430fd9eSIvaylo Ivanov cont_splash_mem: framebuffer@f6200000 { 79*5430fd9eSIvaylo Ivanov reg = <0x0 0xf6200000 0x0 (1080 * 2340 * 4)>; 80*5430fd9eSIvaylo Ivanov no-map; 81*5430fd9eSIvaylo Ivanov }; 82*5430fd9eSIvaylo Ivanov 83*5430fd9eSIvaylo Ivanov debug_kinfo_reserved: debug-kinfo-reserved@fcfff000 { 84*5430fd9eSIvaylo Ivanov reg = <0x0 0xfcfff000 0x0 0x1000>; 85*5430fd9eSIvaylo Ivanov no-map; 86*5430fd9eSIvaylo Ivanov }; 87*5430fd9eSIvaylo Ivanov 88*5430fd9eSIvaylo Ivanov log_itmon: log-itmon@fffe0000 { 89*5430fd9eSIvaylo Ivanov reg = <0x0 0xfffe0000 0x0 0x20000>; 90*5430fd9eSIvaylo Ivanov no-map; 91*5430fd9eSIvaylo Ivanov }; 92*5430fd9eSIvaylo Ivanov }; 93*5430fd9eSIvaylo Ivanov}; 94*5430fd9eSIvaylo Ivanov 95*5430fd9eSIvaylo Ivanov&cmu_hsi0 { 96*5430fd9eSIvaylo Ivanov clocks = <&xtcxo>, 97*5430fd9eSIvaylo Ivanov <&rtcclk>, 98*5430fd9eSIvaylo Ivanov <&cmu_top CLK_DOUT_CMU_HSI0_NOC>, 99*5430fd9eSIvaylo Ivanov <&cmu_top CLK_DOUT_CMU_HSI0_DPGTC>, 100*5430fd9eSIvaylo Ivanov <&cmu_top CLK_DOUT_CMU_HSI0_DPOSC>, 101*5430fd9eSIvaylo Ivanov <&cmu_top CLK_DOUT_CMU_HSI0_USB32DRD>; 102*5430fd9eSIvaylo Ivanov clock-names = "oscclk", "rtcclk", "noc", "dpgtc", "dposc", "usb"; 103*5430fd9eSIvaylo Ivanov}; 104*5430fd9eSIvaylo Ivanov 105*5430fd9eSIvaylo Ivanov/* 106*5430fd9eSIvaylo Ivanov * cpu2 and cpu3 fail to come up consistently, which leads to a hang later 107*5430fd9eSIvaylo Ivanov * in the boot process. Disable them until the issue is figured out. 108*5430fd9eSIvaylo Ivanov */ 109*5430fd9eSIvaylo Ivanov&cpu2 { 110*5430fd9eSIvaylo Ivanov status = "fail"; 111*5430fd9eSIvaylo Ivanov}; 112*5430fd9eSIvaylo Ivanov 113*5430fd9eSIvaylo Ivanov&cpu3 { 114*5430fd9eSIvaylo Ivanov status = "fail"; 115*5430fd9eSIvaylo Ivanov}; 116*5430fd9eSIvaylo Ivanov 117*5430fd9eSIvaylo Ivanov&ext_26m { 118*5430fd9eSIvaylo Ivanov clock-frequency = <26000000>; 119*5430fd9eSIvaylo Ivanov}; 120*5430fd9eSIvaylo Ivanov 121*5430fd9eSIvaylo Ivanov&ext_200m { 122*5430fd9eSIvaylo Ivanov clock-frequency = <200000000>; 123*5430fd9eSIvaylo Ivanov}; 124*5430fd9eSIvaylo Ivanov 125*5430fd9eSIvaylo Ivanov&mct_peris { 126*5430fd9eSIvaylo Ivanov status = "okay"; 127*5430fd9eSIvaylo Ivanov}; 128*5430fd9eSIvaylo Ivanov 129*5430fd9eSIvaylo Ivanov&pinctrl_alive { 130*5430fd9eSIvaylo Ivanov key_volup: key-volup-pins { 131*5430fd9eSIvaylo Ivanov samsung,pins = "gpa3-0"; 132*5430fd9eSIvaylo Ivanov samsung,pin-function = <EXYNOS_PIN_FUNC_F>; 133*5430fd9eSIvaylo Ivanov samsung,pin-pud = <EXYNOS_PIN_PULL_UP>; 134*5430fd9eSIvaylo Ivanov samsung,pin-drv = <EXYNOS7_PIN_DRV_LV4>; 135*5430fd9eSIvaylo Ivanov }; 136*5430fd9eSIvaylo Ivanov}; 137*5430fd9eSIvaylo Ivanov 138*5430fd9eSIvaylo Ivanov&ppi_cluster0 { 139*5430fd9eSIvaylo Ivanov affinity = <&cpu0 &cpu1>; 140*5430fd9eSIvaylo Ivanov}; 141*5430fd9eSIvaylo Ivanov 142*5430fd9eSIvaylo Ivanov&usb { 143*5430fd9eSIvaylo Ivanov /* TODO: Replace these once PMIC is implemented */ 144*5430fd9eSIvaylo Ivanov vdd10-supply = <®_dummy>; 145*5430fd9eSIvaylo Ivanov vdd33-supply = <®_dummy>; 146*5430fd9eSIvaylo Ivanov status = "okay"; 147*5430fd9eSIvaylo Ivanov}; 148*5430fd9eSIvaylo Ivanov 149*5430fd9eSIvaylo Ivanov&usb32drd { 150*5430fd9eSIvaylo Ivanov status = "okay"; 151*5430fd9eSIvaylo Ivanov}; 152*5430fd9eSIvaylo Ivanov 153*5430fd9eSIvaylo Ivanov&usb_dwc3 { 154*5430fd9eSIvaylo Ivanov dr_mode = "otg"; 155*5430fd9eSIvaylo Ivanov usb-role-switch; 156*5430fd9eSIvaylo Ivanov role-switch-default-mode = "peripheral"; 157*5430fd9eSIvaylo Ivanov maximum-speed = "high-speed"; 158*5430fd9eSIvaylo Ivanov}; 159*5430fd9eSIvaylo Ivanov 160*5430fd9eSIvaylo Ivanov&usb_hsphy { 161*5430fd9eSIvaylo Ivanov /* TODO: Replace these once PMIC is implemented */ 162*5430fd9eSIvaylo Ivanov vdda12-supply = <®_dummy>; 163*5430fd9eSIvaylo Ivanov vdd-supply = <®_dummy>; 164*5430fd9eSIvaylo Ivanov status = "okay"; 165*5430fd9eSIvaylo Ivanov}; 166*5430fd9eSIvaylo Ivanov 167*5430fd9eSIvaylo Ivanov&xtcxo { 168*5430fd9eSIvaylo Ivanov clock-frequency = <76800000>; 169*5430fd9eSIvaylo Ivanov}; 170