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 key-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 };
Cache object: 1b054efbf0264110e78966d2b06f2b6e
|