1// SPDX-License-Identifier: BSD-3-Clause 2/* 3 * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org> 4 */ 5 6#include "sm8350.dtsi" 7#include "pm8350.dtsi" 8#include "pm8350b.dtsi" 9#include "pm8350c.dtsi" 10#include "pmk8350.dtsi" 11#include "pmr735a.dtsi" 12#include "pmr735b.dtsi" 13 14/ { 15 /* 16 * Yes, you are correct, there is NO MORE {msm,board,pmic}-id on SM8350! 17 * Adding it will cause the bootloader to go crazy and randomly crash 18 * shortly after closing UEFI boot services.. Perhaps that has something 19 * to do with the OS running inside a VM now..? 20 */ 21 22 chassis-type = "handset"; 23 24 chosen { 25 #address-cells = <2>; 26 #size-cells = <2>; 27 ranges; 28 29 framebuffer: framebuffer@e1000000 { 30 compatible = "simple-framebuffer"; 31 reg = <0 0xe1000000 0 0x2300000>; 32 33 /* The display, even though it's 4K, initializes at 1080-ish p */ 34 width = <1096>; 35 height = <2560>; 36 stride = <(1096 * 4)>; 37 format = "a8r8g8b8"; 38 /* 39 * That's (going to be) a lot of clocks, but it's necessary due 40 * to unused clk cleanup & no panel driver yet 41 */ 42 clocks = <&gcc GCC_DISP_HF_AXI_CLK>, 43 <&gcc GCC_DISP_SF_AXI_CLK>; 44 }; 45 }; 46 47 gpio-keys { 48 compatible = "gpio-keys"; 49 50 /* For reasons still unknown, GAssist key and Camera Focus/Shutter don't work.. */ 51 52 vol-down { 53 label = "Volume Down"; 54 linux,code = <KEY_VOLUMEDOWN>; 55 gpios = <&pmk8350_gpios 3 GPIO_ACTIVE_LOW>; 56 debounce-interval = <15>; 57 linux,can-disable; 58 gpio-key,wakeup; 59 }; 60 }; 61 62 reserved-memory { 63 cont_splash_mem: memory@e1000000 { 64 reg = <0 0xe1000000 0 0x2300000>; 65 no-map; 66 }; 67 68 ramoops@ffc00000 { 69 compatible = "ramoops"; 70 reg = <0 0xffc00000 0 0x100000>; 71 console-size = <0x40000>; 72 record-size = <0x1000>; 73 no-map; 74 }; 75 }; 76}; 77 78&adsp { 79 status = "okay"; 80 firmware-name = "qcom/adsp.mbn"; 81}; 82 83&cdsp { 84 status = "okay"; 85 firmware-name = "qcom/cdsp.mbn"; 86}; 87 88&i2c1 { 89 status = "okay"; 90 clock-frequency = <1000000>; 91 92 /* Some subset of SONY IMX663 camera sensor @ 38 */ 93}; 94 95&i2c2 { 96 status = "okay"; 97 clock-frequency = <400000>; 98 99 /* Richwave RTC6226 FM Radio Receiver @ 64 */ 100}; 101 102&i2c4 { 103 status = "okay"; 104 clock-frequency = <400000>; 105 106 /* Samsung Touchscreen (needs I2C GPI DMA) @ 48 */ 107}; 108 109&i2c11 { 110 status = "okay"; 111 clock-frequency = <1000000>; 112 113 cs35l41_l: cs35l41@40 { 114 compatible = "cirrus,cs35l41"; 115 reg = <0x40>; 116 interrupt-parent = <&tlmm>; 117 interrupts = <36 IRQ_TYPE_LEVEL_LOW>; 118 reset-gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>; 119 cirrus,boost-peak-milliamp = <4000>; 120 cirrus,boost-ind-nanohenry = <1000>; 121 cirrus,boost-cap-microfarad = <15>; 122 cirrus,asp-sdout-hiz = <3>; 123 cirrus,gpio2-src-select = <2>; 124 cirrus,gpio2-output-enable; 125 #sound-dai-cells = <1>; 126 }; 127 128 cs35l41_r: cs35l41@41 { 129 compatible = "cirrus,cs35l41"; 130 reg = <0x41>; 131 interrupt-parent = <&tlmm>; 132 interrupts = <36 IRQ_TYPE_LEVEL_LOW>; 133 reset-gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>; 134 cirrus,boost-peak-milliamp = <4000>; 135 cirrus,boost-ind-nanohenry = <1000>; 136 cirrus,boost-cap-microfarad = <15>; 137 cirrus,asp-sdout-hiz = <3>; 138 cirrus,gpio2-src-select = <2>; 139 cirrus,gpio2-output-enable; 140 #sound-dai-cells = <1>; 141 }; 142}; 143 144&i2c12 { 145 status = "okay"; 146 /* Clock frequency was not specified downstream, let's park it to 100 KHz */ 147 clock-frequency = <100000>; 148 149 /* AMS TCS3490 RGB+IR color sensor @ 72 */ 150}; 151 152&i2c13 { 153 status = "okay"; 154 /* Clock frequency was not specified downstream, let's park it to 100 KHz */ 155 clock-frequency = <100000>; 156 157 /* Qualcomm PM8008i/PM8008j (?) @ 8, 9, c, d */ 158 /* Dialog SLG51000 CMIC @ 75 */ 159}; 160 161&i2c15 { 162 status = "okay"; 163 clock-frequency = <400000>; 164 165 /* NXP SN1X0 NFC @ 28 */ 166}; 167 168&i2c17 { 169 status = "okay"; 170 clock-frequency = <1000000>; 171 172 /* Cirrus Logic CS40L25A boosted haptics driver @ 40 */ 173}; 174 175&ipa { 176 status = "okay"; 177 memory-region = <&pil_ipa_fw_mem>; 178 firmware-name = "qcom/ipa_fws.mbn"; 179}; 180 181&mpss { 182 status = "okay"; 183 firmware-name = "qcom/modem.mbn"; 184}; 185 186&pmk8350_rtc { 187 status = "okay"; 188}; 189 190&pon_pwrkey { 191 status = "okay"; 192}; 193 194&pon_resin { 195 status = "okay"; 196 linux,code = <KEY_VOLUMEUP>; 197}; 198 199&qupv3_id_0 { 200 status = "okay"; 201}; 202 203&qupv3_id_1 { 204 status = "okay"; 205}; 206 207&qupv3_id_2 { 208 status = "okay"; 209}; 210 211&slpi { 212 status = "okay"; 213 firmware-name = "qcom/slpi.mbn"; 214}; 215 216&spi14 { 217 status = "okay"; 218 219 /* NXP SN1X0 NFC Secure Element @ 0 */ 220}; 221 222&tlmm { 223 gpio-reserved-ranges = <44 4>; 224 225 ts_int_default: ts-int-default { 226 pin = "gpio23"; 227 function = "gpio"; 228 drive-strength = <2>; 229 bias-disable; 230 input-enable; 231 }; 232}; 233 234/* BIG WARNING! DO NOT TOUCH UFS, YOUR DEVICE WILL DIE! */ 235&ufs_mem_hc { status = "disabled"; }; 236&ufs_mem_phy { status = "disabled"; }; 237 238/* TODO: Make USB3 work (perhaps needs regulators for higher-current operation?) */ 239&usb_1 { 240 status = "okay"; 241 242 qcom,select-utmi-as-pipe-clk; 243}; 244 245&usb_1_dwc3 { 246 dr_mode = "peripheral"; 247 248 maximum-speed = "high-speed"; 249 phys = <&usb_1_hsphy>; 250 phy-names = "usb2-phy"; 251}; 252 253&usb_1_hsphy { 254 status = "okay"; 255}; 256 257&usb_1_qmpphy { 258 status = "okay"; 259}; 260