Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

arm64: dts: qcom: sm8450: add initial device tree for Samsung Galaxy S22

Adds new device support for the Samsung Galaxy S22 (SM-S901E) phone

Working features:
- simple-framebuffer
- side buttons
- storage
- usb

Signed-off-by: Eric Gonçalves <ghatto404@gmail.com>
Link: https://lore.kernel.org/r/20250615204438.1130213-2-ghatto404@gmail.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

authored by

Eric Gonçalves and committed by
Bjorn Andersson
46952305 ebfe5797

+364
+364
arch/arm64/boot/dts/qcom/sm8450-samsung-r0q.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0-only 2 + /* 3 + * Copyright (c) 2025, Eric Gonçalves <ghatto404@gmail.com> 4 + */ 5 + 6 + /dts-v1/; 7 + 8 + #include <dt-bindings/input/linux-event-codes.h> 9 + #include <dt-bindings/gpio/gpio.h> 10 + #include <dt-bindings/regulator/qcom,rpmh-regulator.h> 11 + 12 + #include "sm8450.dtsi" 13 + #include "pm8350.dtsi" 14 + #include "pm8350b.dtsi" 15 + #include "pm8350c.dtsi" 16 + #include "pm8450.dtsi" 17 + #include "pmk8350.dtsi" 18 + #include "pmr735a.dtsi" 19 + 20 + /delete-node/ &xbl_ramdump_mem; 21 + /delete-node/ &xbl_sc_mem; 22 + /delete-node/ &adsp_mem; 23 + /delete-node/ &rmtfs_mem; 24 + /delete-node/ &mte_mem; 25 + /delete-node/ &trusted_apps_mem; 26 + /delete-node/ &trusted_apps_ext_mem; 27 + 28 + / { 29 + chassis-type = "handset"; 30 + model = "Samsung Galaxy S22 (SM-S901E)"; 31 + compatible = "samsung,r0q", "qcom,sm8450"; 32 + 33 + chosen { 34 + #address-cells = <2>; 35 + #size-cells = <2>; 36 + ranges; 37 + 38 + bootargs = "clk_ignore_unused pd_ignore_unused"; 39 + linux,initrd-start = <0x00 0xb6915000>; 40 + linux,initrd-end = <0x00 0xb7fff22c>; 41 + stdout-path = "serial0:115200n8"; 42 + 43 + framebuffer: framebuffer@b8000000 { 44 + compatible = "simple-framebuffer"; 45 + reg = <0x0 0xb8000000 0x0 0x2b00000>; 46 + width = <1080>; 47 + height = <2340>; 48 + stride = <(1080 * 4)>; 49 + format = "a8r8g8b8"; 50 + }; 51 + }; 52 + 53 + gpio-keys { 54 + compatible = "gpio-keys"; 55 + autorepeat; 56 + 57 + pinctrl-0 = <&vol_up_n>; 58 + pinctrl-names = "default"; 59 + 60 + key-vol-up { 61 + label = "Volume Up"; 62 + linux,code = <KEY_VOLUMEUP>; 63 + gpios = <&pm8350_gpios 6 GPIO_ACTIVE_LOW>; 64 + debounce-interval = <15>; 65 + }; 66 + }; 67 + 68 + memory { 69 + ddr_device_type = <0x08>; 70 + device_type = "memory"; 71 + reg = <0x00 0x80000000 0x00 0x6a000000 0x00 0xf1c00000 0x00 0xe400000 0x08 0x00 0x00 0x3ab00000 0x08 0x40000000 0x01 0x40000000 0x08 0x3b100000 0x00 0x1e00000>; 72 + }; 73 + 74 + reserved-memory { 75 + xbl_ramdump_mem: memory@a6b80000 { 76 + reg = <0x0 0xa7d00000 0x0 0x300000>; 77 + no-map; 78 + }; 79 + 80 + xbl_sc_mem: memory@a6e00000 { 81 + reg = <0x0 0xa6e00000 0x0 0x40000>; 82 + no-map; 83 + }; 84 + 85 + adsp_mem: memory@9fd00000 { 86 + reg = <0x0 0x84500000 0x0 0x3b00000>; 87 + no-map; 88 + }; 89 + 90 + rmtfs_mem: memory@fe200000 { 91 + compatible = "qcom,rmtfs-mem"; 92 + reg = <0x0 0xfe200000 0x0 0x280000>; 93 + reg-names = "rmtfs"; 94 + qcom,client-id = <1>; 95 + no-map; 96 + 97 + qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>; 98 + }; 99 + 100 + splash_region@b8000000 { 101 + reg = <0x0 0xb8000000 0x0 0x2b00000>; 102 + no-map; 103 + }; 104 + }; 105 + 106 + vph_pwr: vph-pwr-regulator { 107 + compatible = "regulator-fixed"; 108 + regulator-name = "vph_pwr"; 109 + regulator-min-microvolt = <3700000>; 110 + regulator-max-microvolt = <3700000>; 111 + 112 + regulator-always-on; 113 + regulator-boot-on; 114 + }; 115 + }; 116 + 117 + &tlmm { 118 + gpio-reserved-ranges = <36 4>, <50 1>, <93 1>; 119 + 120 + dsi_default: dsi-default-state { 121 + pins = "gpio6"; 122 + function = "gpio"; 123 + drive-strength = <8>; 124 + bias-disable; 125 + }; 126 + 127 + dsi_suspend: dsi-suspend-state { 128 + pins = "gpio6"; 129 + function = "gpio"; 130 + drive-strength = <2>; 131 + bias-pull-down; 132 + }; 133 + }; 134 + 135 + &apps_rsc { 136 + regulators-0 { 137 + compatible = "qcom,pm8350-rpmh-regulators"; 138 + qcom,pmic-id = "b"; 139 + 140 + vdd-s1-supply = <&vph_pwr>; 141 + vdd-s2-supply = <&vph_pwr>; 142 + vdd-s3-supply = <&vph_pwr>; 143 + vdd-s4-supply = <&vph_pwr>; 144 + vdd-s5-supply = <&vph_pwr>; 145 + vdd-s6-supply = <&vph_pwr>; 146 + vdd-s7-supply = <&vph_pwr>; 147 + vdd-s8-supply = <&vph_pwr>; 148 + vdd-s9-supply = <&vph_pwr>; 149 + vdd-s10-supply = <&vph_pwr>; 150 + vdd-s11-supply = <&vph_pwr>; 151 + vdd-s12-supply = <&vph_pwr>; 152 + 153 + vdd-l1-l4-supply = <&vreg_s11b_0p95>; 154 + vdd-l2-l7-supply = <&vreg_bob>; 155 + vdd-l3-l5-supply = <&vreg_bob>; 156 + vdd-l6-l9-l10-supply = <&vreg_s12b_1p25>; 157 + vdd-l8-supply = <&vreg_s2h_0p95>; 158 + 159 + vreg_s11b_0p95: smps11 { 160 + regulator-name = "vreg_s11b_0p95"; 161 + regulator-min-microvolt = <848000>; 162 + regulator-max-microvolt = <1104000>; 163 + }; 164 + 165 + vreg_s12b_1p25: smps12 { 166 + regulator-name = "vreg_s12b_1p25"; 167 + regulator-min-microvolt = <1224000>; 168 + regulator-max-microvolt = <1400000>; 169 + }; 170 + 171 + vreg_l1b_0p91: ldo1 { 172 + regulator-name = "vreg_l1b_0p91"; 173 + regulator-min-microvolt = <912000>; 174 + regulator-max-microvolt = <920000>; 175 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 176 + }; 177 + 178 + vreg_l2b_3p07: ldo2 { 179 + regulator-name = "vreg_l2b_3p07"; 180 + regulator-min-microvolt = <3072000>; 181 + regulator-max-microvolt = <3072000>; 182 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 183 + }; 184 + 185 + vreg_l5b_0p88: ldo5 { 186 + regulator-name = "vreg_l5b_0p88"; 187 + regulator-min-microvolt = <880000>; 188 + regulator-max-microvolt = <888000>; 189 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 190 + }; 191 + 192 + vreg_l6b_1p2: ldo6 { 193 + regulator-name = "vreg_l6b_1p2"; 194 + regulator-min-microvolt = <1200000>; 195 + regulator-max-microvolt = <1200000>; 196 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 197 + }; 198 + 199 + vreg_l7b_2p5: ldo7 { 200 + regulator-name = "vreg_l7b_2p5"; 201 + regulator-min-microvolt = <2504000>; 202 + regulator-max-microvolt = <2504000>; 203 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 204 + }; 205 + 206 + vreg_l9b_1p2: ldo9 { 207 + regulator-name = "vreg_l9b_1p2"; 208 + regulator-min-microvolt = <1200000>; 209 + regulator-max-microvolt = <1200000>; 210 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 211 + }; 212 + }; 213 + 214 + regulators-1 { 215 + compatible = "qcom,pm8350c-rpmh-regulators"; 216 + qcom,pmic-id = "c"; 217 + 218 + vdd-s1-supply = <&vph_pwr>; 219 + vdd-s2-supply = <&vph_pwr>; 220 + vdd-s3-supply = <&vph_pwr>; 221 + vdd-s4-supply = <&vph_pwr>; 222 + vdd-s5-supply = <&vph_pwr>; 223 + vdd-s6-supply = <&vph_pwr>; 224 + vdd-s7-supply = <&vph_pwr>; 225 + vdd-s8-supply = <&vph_pwr>; 226 + vdd-s9-supply = <&vph_pwr>; 227 + vdd-s10-supply = <&vph_pwr>; 228 + 229 + vdd-l1-l12-supply = <&vreg_bob>; 230 + vdd-l2-l8-supply = <&vreg_bob>; 231 + vdd-l3-l4-l5-l7-l13-supply = <&vreg_bob>; 232 + vdd-l6-l9-l11-supply = <&vreg_bob>; 233 + 234 + vdd-bob-supply = <&vph_pwr>; 235 + 236 + vreg_s1c_1p86: smps1 { 237 + regulator-name = "vreg_s1c_1p86"; 238 + regulator-min-microvolt = <1800000>; 239 + regulator-max-microvolt = <2024000>; 240 + }; 241 + 242 + vreg_bob: bob { 243 + regulator-name = "vreg_bob"; 244 + regulator-min-microvolt = <3008000>; 245 + regulator-max-microvolt = <3960000>; 246 + regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>; 247 + }; 248 + 249 + vreg_l1c_1p8: ldo1 { 250 + regulator-name = "vreg_l1c_1p8"; 251 + regulator-min-microvolt = <1800000>; 252 + regulator-max-microvolt = <1800000>; 253 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 254 + }; 255 + }; 256 + 257 + regulators-2 { 258 + compatible = "qcom,pm8450-rpmh-regulators"; 259 + qcom,pmic-id = "h"; 260 + 261 + vdd-s1-supply = <&vph_pwr>; 262 + vdd-s2-supply = <&vph_pwr>; 263 + vdd-s3-supply = <&vph_pwr>; 264 + vdd-s4-supply = <&vph_pwr>; 265 + vdd-s5-supply = <&vph_pwr>; 266 + vdd-s6-supply = <&vph_pwr>; 267 + 268 + vdd-l2-supply = <&vreg_bob>; 269 + vdd-l3-supply = <&vreg_bob>; 270 + vdd-l4-supply = <&vreg_bob>; 271 + 272 + vreg_s2h_0p95: smps2 { 273 + regulator-name = "vreg_s2h_0p95"; 274 + regulator-min-microvolt = <848000>; 275 + regulator-max-microvolt = <1104000>; 276 + }; 277 + }; 278 + 279 + regulators-3 { 280 + compatible = "qcom,pmr735a-rpmh-regulators"; 281 + qcom,pmic-id = "e"; 282 + 283 + vdd-s1-supply = <&vph_pwr>; 284 + vdd-s2-supply = <&vph_pwr>; 285 + vdd-s3-supply = <&vph_pwr>; 286 + 287 + vdd-l1-l2-supply = <&vreg_s2e_0p85>; 288 + vdd-l3-supply = <&vreg_s1e_1p25>; 289 + vdd-l4-supply = <&vreg_s1c_1p86>; 290 + vdd-l5-l6-supply = <&vreg_s1c_1p86>; 291 + vdd-l7-bob-supply = <&vreg_bob>; 292 + 293 + vreg_s1e_1p25: smps1 { 294 + regulator-name = "vreg_s1e_1p25"; 295 + regulator-min-microvolt = <1200000>; 296 + regulator-max-microvolt = <1296000>; 297 + }; 298 + 299 + vreg_s2e_0p85: smps2 { 300 + regulator-name = "vreg_s2e_0p85"; 301 + regulator-min-microvolt = <500000>; 302 + regulator-max-microvolt = <1040000>; 303 + }; 304 + }; 305 + }; 306 + 307 + &pm8350_gpios { 308 + vol_up_n: vol-up-n-state { 309 + pins = "gpio6"; 310 + function = "normal"; 311 + power-source = <1>; 312 + input-enable; 313 + }; 314 + }; 315 + 316 + &pon_pwrkey { 317 + status = "okay"; 318 + }; 319 + 320 + &pon_resin { 321 + status = "okay"; 322 + linux,code = <KEY_VOLUMEDOWN>; 323 + }; 324 + 325 + &usb_1 { 326 + qcom,select-utmi-as-pipe-clk; 327 + status = "okay"; 328 + }; 329 + 330 + &usb_1_dwc3 { 331 + dr_mode = "peripheral"; 332 + maximum-speed = "high-speed"; 333 + 334 + phys = <&usb_1_hsphy>; 335 + phy-names = "usb2-phy"; 336 + }; 337 + 338 + &usb_1_hsphy { 339 + status = "okay"; 340 + vdda-pll-supply = <&vreg_l5b_0p88>; 341 + vdda18-supply = <&vreg_l1c_1p8>; 342 + vdda33-supply = <&vreg_l2b_3p07>; 343 + }; 344 + 345 + &ufs_mem_hc { 346 + reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>; 347 + 348 + vcc-supply = <&vreg_l7b_2p5>; 349 + vcc-max-microamp = <1100000>; 350 + vccq-supply = <&vreg_l9b_1p2>; 351 + vccq-max-microamp = <1200000>; 352 + vccq2-supply = <&vreg_l9b_1p2>; 353 + vccq2-max-microamp = <1200000>; 354 + vdd-hba-supply = <&vreg_l9b_1p2>; 355 + 356 + status = "okay"; 357 + }; 358 + 359 + &ufs_mem_phy { 360 + status = "okay"; 361 + 362 + vdda-phy-supply = <&vreg_l5b_0p88>; 363 + vdda-pll-supply = <&vreg_l6b_1p2>; 364 + };