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

arm64: dts: qcom: Add support for X1-based Surface Laptop 7 devices

Add support for Surface Laptop 7 machines, based on X1E80100.

The feature status is mostly on par with other X Elite machines,
notably lacking:

- USB-A and probably USB-over-Surface-connector (pending NXP retimer
support)
- SD card reader (Realtek RTS5261 connected over PCIe)
- Touchscreen and touchpad support (hid-over-SPI [1])
- Audio (a quick look suggests the setup is very close to the one in
X1E CRD)

The two Surface Laptop 7 SKUs (13.8" and 15") only have very minor
differences, amounting close to none on the software side. Even the
MBN firmware files and ACPI tables are shared between the two machines.

With that in mind, support is added for both, although only the larger
one was physically tested. Display differences will be taken care of
through fused-in EDID and other matters should be solved within the
EC and boot firmware.

[1] https://www.microsoft.com/en-us/download/details.aspx?id=103325

Signed-off-by: Konrad Dybcio <quic_kdybcio@quicinc.com>
Link: https://lore.kernel.org/r/20240826-topic-sl7-v2-5-c32ebae78789@quicinc.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>

authored by

Konrad Dybcio and committed by
Bjorn Andersson
09d77be5 ecbdce20

+863
+2
arch/arm64/boot/dts/qcom/Makefile
··· 271 271 dtb-$(CONFIG_ARCH_QCOM) += x1e80100-asus-vivobook-s15.dtb 272 272 dtb-$(CONFIG_ARCH_QCOM) += x1e80100-crd.dtb 273 273 dtb-$(CONFIG_ARCH_QCOM) += x1e80100-lenovo-yoga-slim7x.dtb 274 + dtb-$(CONFIG_ARCH_QCOM) += x1e80100-microsoft-romulus13.dtb 275 + dtb-$(CONFIG_ARCH_QCOM) += x1e80100-microsoft-romulus15.dtb 274 276 dtb-$(CONFIG_ARCH_QCOM) += x1e80100-qcp.dtb
+835
arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus.dtsi
··· 1 + // SPDX-License-Identifier: BSD-3-Clause 2 + /* 3 + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. 4 + */ 5 + 6 + #include <dt-bindings/gpio/gpio.h> 7 + #include <dt-bindings/leds/common.h> 8 + #include <dt-bindings/regulator/qcom,rpmh-regulator.h> 9 + 10 + #include "x1e80100.dtsi" 11 + #include "x1e80100-pmics.dtsi" 12 + 13 + / { 14 + aliases { 15 + serial0 = &uart2; 16 + i2c0 = &i2c0; 17 + i2c3 = &i2c3; 18 + i2c4 = &i2c4; 19 + i2c5 = &i2c5; 20 + i2c7 = &i2c7; 21 + }; 22 + 23 + backlight: backlight { 24 + compatible = "pwm-backlight"; 25 + pwms = <&pmk8550_pwm 0 5000000>; 26 + enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>; 27 + /* TODO: power-supply? */ 28 + 29 + pinctrl-0 = <&edp_bl_en>, <&edp_bl_pwm>; 30 + pinctrl-names = "default"; 31 + }; 32 + 33 + leds { 34 + compatible = "gpio-leds"; 35 + 36 + pinctrl-names = "default"; 37 + pinctrl-0 = <&cam_indicator_en>; 38 + 39 + led-camera-indicator { 40 + label = "white:camera-indicator"; 41 + function = LED_FUNCTION_INDICATOR; 42 + color = <LED_COLOR_ID_WHITE>; 43 + gpios = <&tlmm 225 GPIO_ACTIVE_HIGH>; 44 + linux,default-trigger = "none"; 45 + default-state = "off"; 46 + /* Reuse as a panic indicator until we get a "camera on" trigger */ 47 + panic-indicator; 48 + }; 49 + }; 50 + 51 + pmic-glink { 52 + compatible = "qcom,x1e80100-pmic-glink", 53 + "qcom,sm8550-pmic-glink", 54 + "qcom,pmic-glink"; 55 + #address-cells = <1>; 56 + #size-cells = <0>; 57 + orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>, 58 + <&tlmm 123 GPIO_ACTIVE_HIGH>; 59 + 60 + /* Left-side rear port */ 61 + connector@0 { 62 + compatible = "usb-c-connector"; 63 + reg = <0>; 64 + power-role = "dual"; 65 + data-role = "dual"; 66 + 67 + ports { 68 + #address-cells = <1>; 69 + #size-cells = <0>; 70 + 71 + port@0 { 72 + reg = <0>; 73 + 74 + pmic_glink_ss0_hs_in: endpoint { 75 + remote-endpoint = <&usb_1_ss0_dwc3_hs>; 76 + }; 77 + }; 78 + 79 + port@1 { 80 + reg = <1>; 81 + 82 + pmic_glink_ss0_ss_in: endpoint { 83 + remote-endpoint = <&usb_1_ss0_qmpphy_out>; 84 + }; 85 + }; 86 + }; 87 + }; 88 + 89 + /* Left-side front port */ 90 + connector@1 { 91 + compatible = "usb-c-connector"; 92 + reg = <1>; 93 + power-role = "dual"; 94 + data-role = "dual"; 95 + 96 + ports { 97 + #address-cells = <1>; 98 + #size-cells = <0>; 99 + 100 + port@0 { 101 + reg = <0>; 102 + 103 + pmic_glink_ss1_hs_in: endpoint { 104 + remote-endpoint = <&usb_1_ss1_dwc3_hs>; 105 + }; 106 + }; 107 + 108 + port@1 { 109 + reg = <1>; 110 + 111 + pmic_glink_ss1_ss_in: endpoint { 112 + remote-endpoint = <&usb_1_ss1_qmpphy_out>; 113 + }; 114 + }; 115 + }; 116 + }; 117 + }; 118 + 119 + reserved-memory { 120 + linux,cma { 121 + compatible = "shared-dma-pool"; 122 + size = <0x0 0x8000000>; 123 + reusable; 124 + linux,cma-default; 125 + }; 126 + }; 127 + 128 + vph_pwr: vph-pwr-regulator { 129 + compatible = "regulator-fixed"; 130 + 131 + regulator-name = "vph_pwr"; 132 + regulator-min-microvolt = <3700000>; 133 + regulator-max-microvolt = <3700000>; 134 + 135 + regulator-always-on; 136 + regulator-boot-on; 137 + }; 138 + 139 + vreg_edp_3p3: regulator-edp-3p3 { 140 + compatible = "regulator-fixed"; 141 + 142 + regulator-name = "VREG_EDP_3P3"; 143 + regulator-min-microvolt = <3300000>; 144 + regulator-max-microvolt = <3300000>; 145 + 146 + gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>; 147 + enable-active-high; 148 + 149 + pinctrl-0 = <&edp_reg_en>; 150 + pinctrl-names = "default"; 151 + 152 + regulator-boot-on; 153 + }; 154 + 155 + vreg_nvme: regulator-nvme { 156 + compatible = "regulator-fixed"; 157 + 158 + regulator-name = "VREG_NVME_3P3"; 159 + regulator-min-microvolt = <3300000>; 160 + regulator-max-microvolt = <3300000>; 161 + 162 + gpio = <&tlmm 18 GPIO_ACTIVE_HIGH>; 163 + enable-active-high; 164 + 165 + pinctrl-0 = <&nvme_reg_en>; 166 + pinctrl-names = "default"; 167 + }; 168 + }; 169 + 170 + &apps_rsc { 171 + regulators-0 { 172 + compatible = "qcom,pm8550-rpmh-regulators"; 173 + qcom,pmic-id = "b"; 174 + 175 + vdd-bob1-supply = <&vph_pwr>; 176 + vdd-bob2-supply = <&vph_pwr>; 177 + vdd-l1-l4-l10-supply = <&vreg_s4c>; 178 + vdd-l2-l13-l14-supply = <&vreg_bob1>; 179 + vdd-l5-l16-supply = <&vreg_bob1>; 180 + vdd-l6-l7-supply = <&vreg_bob2>; 181 + vdd-l8-l9-supply = <&vreg_bob1>; 182 + vdd-l12-supply = <&vreg_s5j>; 183 + vdd-l15-supply = <&vreg_s4c>; 184 + vdd-l17-supply = <&vreg_bob2>; 185 + 186 + vreg_bob1: bob1 { 187 + regulator-name = "vreg_bob1"; 188 + regulator-min-microvolt = <3008000>; 189 + regulator-max-microvolt = <3960000>; 190 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 191 + }; 192 + 193 + vreg_bob2: bob2 { 194 + regulator-name = "vreg_bob2"; 195 + regulator-min-microvolt = <2504000>; 196 + regulator-max-microvolt = <3008000>; 197 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 198 + }; 199 + 200 + vreg_l1b: ldo1 { 201 + regulator-name = "vreg_l1b"; 202 + regulator-min-microvolt = <1800000>; 203 + regulator-max-microvolt = <1800000>; 204 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 205 + }; 206 + 207 + vreg_l2b: ldo2 { 208 + regulator-name = "vreg_l2b"; 209 + regulator-min-microvolt = <3072000>; 210 + regulator-max-microvolt = <3072000>; 211 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 212 + }; 213 + 214 + vreg_l4b: ldo4 { 215 + regulator-name = "vreg_l4b"; 216 + regulator-min-microvolt = <1800000>; 217 + regulator-max-microvolt = <1800000>; 218 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 219 + }; 220 + 221 + vreg_l5b: ldo5 { 222 + regulator-name = "vreg_l5b"; 223 + regulator-min-microvolt = <3000000>; 224 + regulator-max-microvolt = <3000000>; 225 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 226 + }; 227 + 228 + vreg_l6b: ldo6 { 229 + regulator-name = "vreg_l6b"; 230 + regulator-min-microvolt = <1800000>; 231 + regulator-max-microvolt = <2960000>; 232 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 233 + }; 234 + 235 + vreg_l7b: ldo7 { 236 + regulator-name = "vreg_l7b"; 237 + regulator-min-microvolt = <2800000>; 238 + regulator-max-microvolt = <2800000>; 239 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 240 + }; 241 + 242 + vreg_l8b: ldo8 { 243 + regulator-name = "vreg_l8b"; 244 + regulator-min-microvolt = <3072000>; 245 + regulator-max-microvolt = <3072000>; 246 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 247 + }; 248 + 249 + vreg_l9b: ldo9 { 250 + regulator-name = "vreg_l9b"; 251 + regulator-min-microvolt = <2960000>; 252 + regulator-max-microvolt = <2960000>; 253 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 254 + }; 255 + 256 + vreg_l10b: ldo10 { 257 + regulator-name = "vreg_l10b"; 258 + regulator-min-microvolt = <1800000>; 259 + regulator-max-microvolt = <1800000>; 260 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 261 + }; 262 + 263 + vreg_l12b: ldo12 { 264 + regulator-name = "vreg_l12b"; 265 + regulator-min-microvolt = <1200000>; 266 + regulator-max-microvolt = <1200000>; 267 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 268 + }; 269 + 270 + vreg_l13b: ldo13 { 271 + regulator-name = "vreg_l13b"; 272 + regulator-min-microvolt = <3072000>; 273 + regulator-max-microvolt = <3072000>; 274 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 275 + }; 276 + 277 + vreg_l14b: ldo14 { 278 + regulator-name = "vreg_l14b"; 279 + regulator-min-microvolt = <3072000>; 280 + regulator-max-microvolt = <3072000>; 281 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 282 + }; 283 + 284 + vreg_l15b: ldo15 { 285 + regulator-name = "vreg_l15b"; 286 + regulator-min-microvolt = <1800000>; 287 + regulator-max-microvolt = <1800000>; 288 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 289 + }; 290 + 291 + vreg_l16b: ldo16 { 292 + regulator-name = "vreg_l16b"; 293 + regulator-min-microvolt = <2912000>; 294 + regulator-max-microvolt = <2912000>; 295 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 296 + }; 297 + 298 + vreg_l17b: ldo17 { 299 + regulator-name = "vreg_l17b"; 300 + regulator-min-microvolt = <2504000>; 301 + regulator-max-microvolt = <2504000>; 302 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 303 + }; 304 + }; 305 + 306 + regulators-1 { 307 + compatible = "qcom,pm8550ve-rpmh-regulators"; 308 + qcom,pmic-id = "c"; 309 + 310 + vdd-l1-supply = <&vreg_s5j>; 311 + vdd-l2-supply = <&vreg_s1f>; 312 + vdd-l3-supply = <&vreg_s1f>; 313 + vdd-s4-supply = <&vph_pwr>; 314 + 315 + vreg_s4c: smps4 { 316 + regulator-name = "vreg_s4c"; 317 + regulator-min-microvolt = <1856000>; 318 + regulator-max-microvolt = <2000000>; 319 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 320 + }; 321 + 322 + vreg_l1c: ldo1 { 323 + regulator-name = "vreg_l1c"; 324 + regulator-min-microvolt = <1200000>; 325 + regulator-max-microvolt = <1200000>; 326 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 327 + }; 328 + 329 + vreg_l2c: ldo2 { 330 + regulator-name = "vreg_l2c"; 331 + regulator-min-microvolt = <880000>; 332 + regulator-max-microvolt = <920000>; 333 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 334 + }; 335 + 336 + vreg_l3c: ldo3 { 337 + regulator-name = "vreg_l3c"; 338 + regulator-min-microvolt = <912000>; 339 + regulator-max-microvolt = <920000>; 340 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 341 + }; 342 + }; 343 + 344 + regulators-2 { 345 + compatible = "qcom,pmc8380-rpmh-regulators"; 346 + qcom,pmic-id = "d"; 347 + 348 + vdd-l1-supply = <&vreg_s1f>; 349 + vdd-l2-supply = <&vreg_s1f>; 350 + vdd-l3-supply = <&vreg_s4c>; 351 + vdd-s1-supply = <&vph_pwr>; 352 + 353 + vreg_l1d: ldo1 { 354 + regulator-name = "vreg_l1d"; 355 + regulator-min-microvolt = <880000>; 356 + regulator-max-microvolt = <920000>; 357 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 358 + }; 359 + 360 + vreg_l2d: ldo2 { 361 + regulator-name = "vreg_l2d"; 362 + regulator-min-microvolt = <912000>; 363 + regulator-max-microvolt = <920000>; 364 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 365 + }; 366 + 367 + vreg_l3d: ldo3 { 368 + regulator-name = "vreg_l3d"; 369 + regulator-min-microvolt = <1800000>; 370 + regulator-max-microvolt = <1800000>; 371 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 372 + }; 373 + }; 374 + 375 + regulators-3 { 376 + compatible = "qcom,pmc8380-rpmh-regulators"; 377 + qcom,pmic-id = "e"; 378 + 379 + vdd-l2-supply = <&vreg_s1f>; 380 + vdd-l3-supply = <&vreg_s5j>; 381 + 382 + vreg_l2e: ldo2 { 383 + regulator-name = "vreg_l2e"; 384 + regulator-min-microvolt = <880000>; 385 + regulator-max-microvolt = <920000>; 386 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 387 + }; 388 + 389 + vreg_l3e: ldo3 { 390 + regulator-name = "vreg_l3e"; 391 + regulator-min-microvolt = <1200000>; 392 + regulator-max-microvolt = <1200000>; 393 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 394 + }; 395 + }; 396 + 397 + regulators-4 { 398 + compatible = "qcom,pmc8380-rpmh-regulators"; 399 + qcom,pmic-id = "f"; 400 + 401 + vdd-l1-supply = <&vreg_s5j>; 402 + vdd-l2-supply = <&vreg_s5j>; 403 + vdd-l3-supply = <&vreg_s5j>; 404 + vdd-s1-supply = <&vph_pwr>; 405 + 406 + vreg_s1f: smps1 { 407 + regulator-name = "vreg_s1f"; 408 + regulator-min-microvolt = <700000>; 409 + regulator-max-microvolt = <1100000>; 410 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 411 + }; 412 + 413 + vreg_l1f: ldo1 { 414 + regulator-name = "vreg_l1f"; 415 + regulator-min-microvolt = <1024000>; 416 + regulator-max-microvolt = <1024000>; 417 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 418 + }; 419 + 420 + vreg_l2f: ldo2 { 421 + regulator-name = "vreg_l2f"; 422 + regulator-min-microvolt = <1024000>; 423 + regulator-max-microvolt = <1024000>; 424 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 425 + }; 426 + 427 + vreg_l3f: ldo3 { 428 + regulator-name = "vreg_l3f"; 429 + regulator-min-microvolt = <1024000>; 430 + regulator-max-microvolt = <1024000>; 431 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 432 + }; 433 + }; 434 + 435 + regulators-6 { 436 + compatible = "qcom,pm8550ve-rpmh-regulators"; 437 + qcom,pmic-id = "i"; 438 + 439 + vdd-l1-supply = <&vreg_s4c>; 440 + vdd-l2-supply = <&vreg_s5j>; 441 + vdd-l3-supply = <&vreg_s1f>; 442 + vdd-s1-supply = <&vph_pwr>; 443 + vdd-s2-supply = <&vph_pwr>; 444 + 445 + vreg_s1i: smps1 { 446 + regulator-name = "vreg_s1i"; 447 + regulator-min-microvolt = <900000>; 448 + regulator-max-microvolt = <920000>; 449 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 450 + }; 451 + 452 + vreg_s2i: smps2 { 453 + regulator-name = "vreg_s2i"; 454 + regulator-min-microvolt = <1000000>; 455 + regulator-max-microvolt = <1100000>; 456 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 457 + }; 458 + 459 + vreg_l1i: ldo1 { 460 + regulator-name = "vreg_l1i"; 461 + regulator-min-microvolt = <1800000>; 462 + regulator-max-microvolt = <1800000>; 463 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 464 + }; 465 + 466 + vreg_l2i: ldo2 { 467 + regulator-name = "vreg_l2i"; 468 + regulator-min-microvolt = <1200000>; 469 + regulator-max-microvolt = <1200000>; 470 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 471 + }; 472 + 473 + vreg_l3i: ldo3 { 474 + regulator-name = "vreg_l3i"; 475 + regulator-min-microvolt = <880000>; 476 + regulator-max-microvolt = <920000>; 477 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 478 + }; 479 + }; 480 + 481 + regulators-7 { 482 + compatible = "qcom,pm8550ve-rpmh-regulators"; 483 + qcom,pmic-id = "j"; 484 + 485 + vdd-l1-supply = <&vreg_s1f>; 486 + vdd-l2-supply = <&vreg_s5j>; 487 + vdd-l3-supply = <&vreg_s1f>; 488 + vdd-s5-supply = <&vph_pwr>; 489 + 490 + vreg_s5j: smps5 { 491 + regulator-name = "vreg_s5j"; 492 + regulator-min-microvolt = <1256000>; 493 + regulator-max-microvolt = <1304000>; 494 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 495 + }; 496 + 497 + vreg_l1j: ldo1 { 498 + regulator-name = "vreg_l1j"; 499 + regulator-min-microvolt = <912000>; 500 + regulator-max-microvolt = <920000>; 501 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 502 + }; 503 + 504 + vreg_l2j: ldo2 { 505 + regulator-name = "vreg_l2j"; 506 + regulator-min-microvolt = <1256000>; 507 + regulator-max-microvolt = <1256000>; 508 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 509 + }; 510 + 511 + vreg_l3j: ldo3 { 512 + regulator-name = "vreg_l3j"; 513 + regulator-min-microvolt = <880000>; 514 + regulator-max-microvolt = <920000>; 515 + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; 516 + }; 517 + }; 518 + }; 519 + 520 + &gpu { 521 + status = "okay"; 522 + 523 + zap-shader { 524 + memory-region = <&gpu_microcode_mem>; 525 + firmware-name = "qcom/x1e80100/microsoft/qcdxkmsuc8380.mbn"; 526 + }; 527 + }; 528 + 529 + &i2c0 { 530 + clock-frequency = <100000>; 531 + 532 + status = "okay"; 533 + 534 + /* Something @39, @3e, @44 */ 535 + }; 536 + 537 + &i2c3 { 538 + clock-frequency = <400000>; 539 + 540 + status = "okay"; 541 + 542 + /* PS8830 USB retimer @8 */ 543 + }; 544 + 545 + &i2c4 { 546 + clock-frequency = <400000>; 547 + 548 + status = "okay"; 549 + 550 + /* Something @18, @2c, @2e */ 551 + }; 552 + 553 + &i2c5 { 554 + clock-frequency = <400000>; 555 + 556 + status = "okay"; 557 + 558 + /* Something @4f */ 559 + }; 560 + 561 + &i2c7 { 562 + clock-frequency = <400000>; 563 + 564 + status = "okay"; 565 + 566 + /* PS8830 USB retimer @8 */ 567 + }; 568 + 569 + 570 + &mdss { 571 + status = "okay"; 572 + }; 573 + 574 + &mdss_dp3 { 575 + compatible = "qcom,x1e80100-dp"; 576 + /delete-property/ #sound-dai-cells; 577 + 578 + status = "okay"; 579 + 580 + aux-bus { 581 + panel { 582 + compatible = "edp-panel"; 583 + 584 + backlight = <&backlight>; 585 + power-supply = <&vreg_edp_3p3>; 586 + 587 + port { 588 + edp_panel_in: endpoint { 589 + remote-endpoint = <&mdss_dp3_out>; 590 + }; 591 + }; 592 + }; 593 + }; 594 + 595 + ports { 596 + port@1 { 597 + reg = <1>; 598 + 599 + mdss_dp3_out: endpoint { 600 + data-lanes = <0 1 2 3>; 601 + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; 602 + 603 + remote-endpoint = <&edp_panel_in>; 604 + }; 605 + }; 606 + }; 607 + }; 608 + 609 + &mdss_dp3_phy { 610 + vdda-phy-supply = <&vreg_l3j>; 611 + vdda-pll-supply = <&vreg_l2j>; 612 + 613 + status = "okay"; 614 + }; 615 + 616 + &pcie4 { 617 + status = "okay"; 618 + }; 619 + 620 + &pcie4_phy { 621 + vdda-phy-supply = <&vreg_l3i>; 622 + vdda-pll-supply = <&vreg_l3e>; 623 + 624 + status = "okay"; 625 + }; 626 + 627 + &pcie6a { 628 + perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>; 629 + wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>; 630 + 631 + vddpe-3v3-supply = <&vreg_nvme>; 632 + 633 + pinctrl-0 = <&pcie6a_default>; 634 + pinctrl-names = "default"; 635 + 636 + status = "okay"; 637 + }; 638 + 639 + &pcie6a_phy { 640 + vdda-phy-supply = <&vreg_l1d>; 641 + vdda-pll-supply = <&vreg_l2j>; 642 + 643 + status = "okay"; 644 + }; 645 + 646 + &pmc8380_3_gpios { 647 + edp_bl_en: edp-bl-en-state { 648 + pins = "gpio4"; 649 + function = "normal"; 650 + power-source = <1>; /* 1.8V */ 651 + input-disable; 652 + output-enable; 653 + }; 654 + }; 655 + 656 + &pmk8550_pwm { 657 + status = "okay"; 658 + }; 659 + 660 + &pmk8550_gpios { 661 + edp_bl_pwm: edp-bl-pwm-state { 662 + pins = "gpio5"; 663 + function = "func3"; 664 + }; 665 + }; 666 + 667 + &qupv3_0 { 668 + status = "okay"; 669 + }; 670 + 671 + &qupv3_1 { 672 + status = "okay"; 673 + }; 674 + 675 + &qupv3_2 { 676 + status = "okay"; 677 + }; 678 + 679 + &remoteproc_adsp { 680 + firmware-name = "qcom/x1e80100/microsoft/Romulus/qcadsp8380.mbn", 681 + "qcom/x1e80100/microsoft/Romulus/adsp_dtb.mbn"; 682 + 683 + status = "okay"; 684 + }; 685 + 686 + &remoteproc_cdsp { 687 + firmware-name = "qcom/x1e80100/microsoft/Romulus/qccdsp8380.mbn", 688 + "qcom/x1e80100/microsoft/Romulus/cdsp_dtb.mbn"; 689 + 690 + status = "okay"; 691 + }; 692 + 693 + &smb2360_0_eusb2_repeater { 694 + vdd18-supply = <&vreg_l3d>; 695 + vdd3-supply = <&vreg_l2b>; 696 + }; 697 + 698 + &smb2360_1_eusb2_repeater { 699 + vdd18-supply = <&vreg_l3d>; 700 + vdd3-supply = <&vreg_l14b>; 701 + }; 702 + 703 + &tlmm { 704 + gpio-reserved-ranges = <44 4>, /* SPI (TPM) */ 705 + <238 1>; /* UFS Reset */ 706 + 707 + nvme_reg_en: nvme-reg-en-state { 708 + pins = "gpio18"; 709 + function = "gpio"; 710 + drive-strength = <2>; 711 + bias-disable; 712 + }; 713 + 714 + edp_reg_en: edp-reg-en-state { 715 + pins = "gpio70"; 716 + function = "gpio"; 717 + drive-strength = <16>; 718 + bias-disable; 719 + }; 720 + 721 + ssam_state: ssam-state-state { 722 + pins = "gpio91"; 723 + function = "gpio"; 724 + bias-disable; 725 + }; 726 + 727 + pcie6a_default: pcie6a-default-state { 728 + perst-n-pins { 729 + pins = "gpio152"; 730 + function = "gpio"; 731 + drive-strength = <2>; 732 + bias-disable; 733 + }; 734 + 735 + clkreq-n-pins { 736 + pins = "gpio153"; 737 + function = "pcie6a_clk"; 738 + drive-strength = <2>; 739 + bias-pull-up; 740 + }; 741 + 742 + wake-n-pins { 743 + pins = "gpio154"; 744 + function = "gpio"; 745 + drive-strength = <2>; 746 + bias-pull-up; 747 + }; 748 + }; 749 + 750 + cam_indicator_en: cam-indicator-en-state { 751 + pins = "gpio225"; 752 + function = "gpio"; 753 + drive-strength = <2>; 754 + bias-disable; 755 + }; 756 + }; 757 + 758 + &uart2 { 759 + status = "okay"; 760 + 761 + embedded-controller { 762 + compatible = "microsoft,surface-sam"; 763 + 764 + interrupts-extended = <&tlmm 91 IRQ_TYPE_EDGE_RISING>; 765 + 766 + current-speed = <4000000>; 767 + 768 + pinctrl-0 = <&ssam_state>; 769 + pinctrl-names = "default"; 770 + }; 771 + }; 772 + 773 + &usb_1_ss0_hsphy { 774 + vdd-supply = <&vreg_l3j>; 775 + vdda12-supply = <&vreg_l2j>; 776 + 777 + phys = <&smb2360_0_eusb2_repeater>; 778 + 779 + status = "okay"; 780 + }; 781 + 782 + &usb_1_ss0_qmpphy { 783 + vdda-phy-supply = <&vreg_l3e>; 784 + vdda-pll-supply = <&vreg_l1j>; 785 + 786 + status = "okay"; 787 + }; 788 + 789 + &usb_1_ss0 { 790 + status = "okay"; 791 + }; 792 + 793 + &usb_1_ss0_dwc3 { 794 + dr_mode = "host"; 795 + }; 796 + 797 + &usb_1_ss0_dwc3_hs { 798 + remote-endpoint = <&pmic_glink_ss0_hs_in>; 799 + }; 800 + 801 + &usb_1_ss0_qmpphy_out { 802 + remote-endpoint = <&pmic_glink_ss0_ss_in>; 803 + }; 804 + 805 + &usb_1_ss1_hsphy { 806 + vdd-supply = <&vreg_l3j>; 807 + vdda12-supply = <&vreg_l2j>; 808 + 809 + phys = <&smb2360_1_eusb2_repeater>; 810 + 811 + status = "okay"; 812 + }; 813 + 814 + &usb_1_ss1_qmpphy { 815 + vdda-phy-supply = <&vreg_l3e>; 816 + vdda-pll-supply = <&vreg_l2d>; 817 + 818 + status = "okay"; 819 + }; 820 + 821 + &usb_1_ss1 { 822 + status = "okay"; 823 + }; 824 + 825 + &usb_1_ss1_dwc3 { 826 + dr_mode = "host"; 827 + }; 828 + 829 + &usb_1_ss1_dwc3_hs { 830 + remote-endpoint = <&pmic_glink_ss1_hs_in>; 831 + }; 832 + 833 + &usb_1_ss1_qmpphy_out { 834 + remote-endpoint = <&pmic_glink_ss1_ss_in>; 835 + };
+13
arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus13.dts
··· 1 + // SPDX-License-Identifier: BSD-3-Clause 2 + /* 3 + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. 4 + */ 5 + 6 + /dts-v1/; 7 + 8 + #include "x1e80100-microsoft-romulus.dtsi" 9 + 10 + / { 11 + model = "Microsoft Surface Laptop 7 (13.8 inch)"; 12 + compatible = "microsoft,romulus13", "qcom,x1e80100"; 13 + };
+13
arch/arm64/boot/dts/qcom/x1e80100-microsoft-romulus15.dts
··· 1 + // SPDX-License-Identifier: BSD-3-Clause 2 + /* 3 + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. 4 + */ 5 + 6 + /dts-v1/; 7 + 8 + #include "x1e80100-microsoft-romulus.dtsi" 9 + 10 + / { 11 + model = "Microsoft Surface Laptop 7 (15 inch)"; 12 + compatible = "microsoft,romulus15", "qcom,x1e80100"; 13 + };