// SPDX-License-Identifier: BSD-3-Clause /* * Copyright (c) 2021, Konrad Dybcio */ #include "sm8350.dtsi" #include "pm8350.dtsi" #include "pm8350b.dtsi" #include "pm8350c.dtsi" #include "pmk8350.dtsi" #include "pmr735a.dtsi" #include "pmr735b.dtsi" / { /* * Yes, you are correct, there is NO MORE {msm,board,pmic}-id on SM8350! * Adding it will cause the bootloader to go crazy and randomly crash * shortly after closing UEFI boot services.. Perhaps that has something * to do with the OS running inside a VM now..? */ chassis-type = "handset"; chosen { #address-cells = <2>; #size-cells = <2>; ranges; framebuffer: framebuffer@e1000000 { compatible = "simple-framebuffer"; reg = <0 0xe1000000 0 0x2300000>; /* The display, even though it's 4K, initializes at 1080-ish p */ width = <1096>; height = <2560>; stride = <(1096 * 4)>; format = "a8r8g8b8"; /* * That's (going to be) a lot of clocks, but it's necessary due * to unused clk cleanup & no panel driver yet */ clocks = <&gcc GCC_DISP_HF_AXI_CLK>, <&gcc GCC_DISP_SF_AXI_CLK>; }; }; gpio-keys { compatible = "gpio-keys"; /* For reasons still unknown, GAssist key and Camera Focus/Shutter don't work.. */ vol-down { label = "Volume Down"; linux,code = ; gpios = <&pmk8350_gpios 3 GPIO_ACTIVE_LOW>; debounce-interval = <15>; linux,can-disable; gpio-key,wakeup; }; }; reserved-memory { cont_splash_mem: memory@e1000000 { reg = <0 0xe1000000 0 0x2300000>; no-map; }; ramoops@ffc00000 { compatible = "ramoops"; reg = <0 0xffc00000 0 0x100000>; console-size = <0x40000>; record-size = <0x1000>; no-map; }; }; }; &adsp { status = "okay"; firmware-name = "qcom/adsp.mbn"; }; &cdsp { status = "okay"; firmware-name = "qcom/cdsp.mbn"; }; &i2c1 { status = "okay"; clock-frequency = <1000000>; /* Some subset of SONY IMX663 camera sensor @ 38 */ }; &i2c2 { status = "okay"; clock-frequency = <400000>; /* Richwave RTC6226 FM Radio Receiver @ 64 */ }; &i2c4 { status = "okay"; clock-frequency = <400000>; /* Samsung Touchscreen (needs I2C GPI DMA) @ 48 */ }; &i2c11 { status = "okay"; clock-frequency = <1000000>; cs35l41_l: cs35l41@40 { compatible = "cirrus,cs35l41"; reg = <0x40>; interrupt-parent = <&tlmm>; interrupts = <36 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>; cirrus,boost-peak-milliamp = <4000>; cirrus,boost-ind-nanohenry = <1000>; cirrus,boost-cap-microfarad = <15>; cirrus,asp-sdout-hiz = <3>; cirrus,gpio2-src-select = <2>; cirrus,gpio2-output-enable; #sound-dai-cells = <1>; }; cs35l41_r: cs35l41@41 { compatible = "cirrus,cs35l41"; reg = <0x41>; interrupt-parent = <&tlmm>; interrupts = <36 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>; cirrus,boost-peak-milliamp = <4000>; cirrus,boost-ind-nanohenry = <1000>; cirrus,boost-cap-microfarad = <15>; cirrus,asp-sdout-hiz = <3>; cirrus,gpio2-src-select = <2>; cirrus,gpio2-output-enable; #sound-dai-cells = <1>; }; }; &i2c12 { status = "okay"; /* Clock frequency was not specified downstream, let's park it to 100 KHz */ clock-frequency = <100000>; /* AMS TCS3490 RGB+IR color sensor @ 72 */ }; &i2c13 { status = "okay"; /* Clock frequency was not specified downstream, let's park it to 100 KHz */ clock-frequency = <100000>; /* Qualcomm PM8008i/PM8008j (?) @ 8, 9, c, d */ /* Dialog SLG51000 CMIC @ 75 */ }; &i2c15 { status = "okay"; clock-frequency = <400000>; /* NXP SN1X0 NFC @ 28 */ }; &i2c17 { status = "okay"; clock-frequency = <1000000>; /* Cirrus Logic CS40L25A boosted haptics driver @ 40 */ }; &ipa { status = "okay"; memory-region = <&pil_ipa_fw_mem>; firmware-name = "qcom/ipa_fws.mbn"; }; &mpss { status = "okay"; firmware-name = "qcom/modem.mbn"; }; &pmk8350_rtc { status = "okay"; }; &pon_pwrkey { status = "okay"; }; &pon_resin { status = "okay"; linux,code = ; }; &qupv3_id_0 { status = "okay"; }; &qupv3_id_1 { status = "okay"; }; &qupv3_id_2 { status = "okay"; }; &slpi { status = "okay"; firmware-name = "qcom/slpi.mbn"; }; &spi14 { status = "okay"; /* NXP SN1X0 NFC Secure Element @ 0 */ }; &tlmm { gpio-reserved-ranges = <44 4>; ts_int_default: ts-int-default { pin = "gpio23"; function = "gpio"; drive-strength = <2>; bias-disable; input-enable; }; }; /* BIG WARNING! DO NOT TOUCH UFS, YOUR DEVICE WILL DIE! */ &ufs_mem_hc { status = "disabled"; }; &ufs_mem_phy { status = "disabled"; }; /* TODO: Make USB3 work (perhaps needs regulators for higher-current operation?) */ &usb_1 { status = "okay"; qcom,select-utmi-as-pipe-clk; }; &usb_1_dwc3 { dr_mode = "peripheral"; maximum-speed = "high-speed"; phys = <&usb_1_hsphy>; phy-names = "usb2-phy"; }; &usb_1_hsphy { status = "okay"; }; &usb_1_qmpphy { status = "okay"; };