Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (c) 2022, Collabora Ltd
4 * Author: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
5 */
6
7/dts-v1/;
8#include <dt-bindings/gpio/gpio.h>
9#include "mt6795.dtsi"
10#include "mt6331.dtsi"
11
12/ {
13 model = "Sony Xperia M5";
14 compatible = "sony,xperia-m5", "mediatek,mt6795";
15 chassis-type = "handset";
16
17 aliases {
18 mmc0 = &mmc0;
19 mmc1 = &mmc1;
20 mmc2 = &mmc2;
21 serial0 = &uart0;
22 serial1 = &uart1;
23 };
24
25 backlight_lcd0: backlight {
26 compatible = "led-backlight";
27 leds = <&disp_led_pwm>, <&pmic_bl_led>;
28
29 default-brightness-level = <300>;
30 };
31
32 led-controller-display {
33 compatible = "pwm-leds";
34
35 disp_led_pwm: led-0 {
36 label = "backlight-pwm";
37 pwms = <&pwm0 0 500000>;
38 max-brightness = <1024>;
39 };
40 };
41
42 memory@40000000 {
43 device_type = "memory";
44 reg = <0 0x40000000 0 0x1e800000>;
45 };
46
47 reserved_memory: reserved-memory {
48 #address-cells = <2>;
49 #size-cells = <2>;
50 ranges;
51
52 /* 128 KiB reserved for ARM Trusted Firmware (BL31) */
53 bl31_secmon_reserved: secmon@43000000 {
54 reg = <0 0x43000000 0 0x30000>;
55 no-map;
56 };
57
58 /* preloader and bootloader regions cannot be touched */
59 preloader-region@44800000 {
60 reg = <0 0x44800000 0 0x100000>;
61 no-map;
62 };
63
64 bootloader-region@46000000 {
65 reg = <0 0x46000000 0 0x400000>;
66 no-map;
67 };
68 };
69
70 vreg_disp_avdd: regulator-disp-avdd {
71 compatible = "regulator-fixed";
72 regulator-name = "disp_avdd";
73 regulator-min-microvolt = <5000000>;
74 regulator-max-microvolt = <5000000>;
75 gpio = <&pio 138 GPIO_ACTIVE_HIGH>;
76 enable-active-high;
77 };
78
79 vreg_disp_avee: regulator-disp-avee {
80 compatible = "regulator-fixed";
81 regulator-name = "disp_avee";
82 regulator-min-microvolt = <5000000>;
83 regulator-max-microvolt = <5000000>;
84 gpio = <&pio 139 GPIO_ACTIVE_HIGH>;
85 enable-active-high;
86 };
87
88 vreg_disp_vddh: regulator-disp-vddh {
89 compatible = "regulator-fixed";
90 regulator-name = "disp_vddh";
91 regulator-min-microvolt = <1800000>;
92 regulator-max-microvolt = <1800000>;
93 regulator-always-on;
94 regulator-boot-on;
95 };
96};
97
98&dsi0 {
99 status = "okay";
100 #address-cells = <1>;
101 #size-cells = <0>;
102
103 panel: panel@0 {
104 compatible = "sharp,ls060t1sx01";
105 reg = <0>;
106 avdd-supply = <&vreg_disp_avdd>;
107 avee-supply = <&vreg_disp_avee>;
108 vddi-supply = <&mt6331_vgp3_reg>;
109 vddh-supply = <&vreg_disp_vddh>;
110 reset-gpios = <&pio 106 GPIO_ACTIVE_LOW>;
111 backlight = <&backlight_lcd0>;
112
113 pinctrl-0 = <&disp_rst_pins>;
114 pinctrl-names = "default";
115
116 port {
117 panel_in: endpoint {
118 remote-endpoint = <&dsi0_out>;
119 };
120 };
121 };
122
123 port {
124 dsi0_out: endpoint {
125 remote-endpoint = <&panel_in>;
126 };
127 };
128};
129
130&fhctl {
131 clocks = <&apmixedsys CLK_APMIXED_MAINPLL>, <&apmixedsys CLK_APMIXED_MPLL>,
132 <&apmixedsys CLK_APMIXED_MSDCPLL>;
133 mediatek,hopping-ssc-percent = <8>, <5>, <8>;
134 status = "okay";
135};
136
137&i2c0 {
138 pinctrl-names = "default";
139 pinctrl-0 = <&i2c0_pins>;
140 status = "okay";
141};
142
143&i2c1 {
144 pinctrl-names = "default";
145 pinctrl-0 = <&i2c1_pins>;
146 status = "okay";
147
148 accelerometer@10 {
149 compatible = "bosch,bma255";
150 reg = <0x10>;
151 pinctrl-names = "default";
152 pinctrl-0 = <&accel_pins>;
153 };
154
155 magnetometer@12 {
156 compatible = "bosch,bmm150";
157 reg = <0x12>;
158 };
159};
160
161&i2c2 {
162 pinctrl-names = "default";
163 pinctrl-0 = <&i2c2_pins>;
164 status = "okay";
165
166 touchscreen@20 {
167 compatible = "syna,rmi4-i2c";
168 reg = <0x20>;
169 #address-cells = <1>;
170 #size-cells = <0>;
171 interrupts-extended = <&pio 6 IRQ_TYPE_EDGE_FALLING>;
172 pinctrl-names = "default";
173 pinctrl-0 = <&ts_pins>;
174 syna,startup-delay-ms = <160>;
175 syna,reset-delay-ms = <90>;
176
177 rmi4-f01@1 {
178 reg = <0x1>;
179 syna,nosleep-mode = <1>;
180 };
181
182 rmi4-f12@12 {
183 reg = <0x12>;
184 syna,sensor-type = <1>;
185 };
186 };
187};
188
189&i2c3 {
190 pinctrl-names = "default";
191 pinctrl-0 = <&i2c3_pins>;
192 status = "okay";
193
194 pn547: nfc@28 {
195 compatible = "nxp,pn544-i2c";
196 reg = <0x28>;
197 interrupts-extended = <&pio 3 IRQ_TYPE_EDGE_RISING>;
198 pinctrl-names = "default";
199 pinctrl-0 = <&nfc_pins>;
200 enable-gpios = <&pio 149 GPIO_ACTIVE_HIGH>;
201 firmware-gpios = <&pio 94 GPIO_ACTIVE_HIGH>;
202 };
203
204 proximity@48 {
205 compatible = "sensortek,stk3310";
206 reg = <0x48>;
207 interrupts-extended = <&pio 8 IRQ_TYPE_EDGE_FALLING>;
208 pinctrl-names = "default";
209 pinctrl-0 = <&proximity_pins>;
210 };
211};
212
213&mmc0 {
214 /* eMMC controller */
215 mediatek,latch-ck = <4>; /* hs400 */
216 mediatek,hs200-cmd-int-delay = <1>;
217 mediatek,hs400-cmd-int-delay = <1>;
218 mediatek,hs400-ds-dly3 = <0x1a>;
219 non-removable;
220 pinctrl-names = "default", "state_uhs";
221 pinctrl-0 = <&mmc0_pins_default>;
222 pinctrl-1 = <&mmc0_pins_uhs>;
223 vmmc-supply = <&mt6331_vemc33_reg>;
224 vqmmc-supply = <&mt6331_vio18_reg>;
225 status = "okay";
226};
227
228&mmc1 {
229 /* MicroSD card slot */
230 pinctrl-names = "default";
231 pinctrl-0 = <&mmc1_pins_default>;
232 vmmc-supply = <&mt6331_vmc_reg>;
233 vqmmc-supply = <&mt6331_vmch_reg>;
234 status = "okay";
235};
236
237&mmc2 {
238 /* SDIO WiFi on MMC2 */
239 pinctrl-names = "default";
240 pinctrl-0 = <&mmc2_pins_default>;
241 vmmc-supply = <&mt6331_vmc_reg>;
242 vqmmc-supply = <&mt6331_vmch_reg>;
243 status = "okay";
244};
245
246&mt6331_vgp3_reg {
247 regulator-min-microvolt = <1800000>;
248};
249
250&pio {
251 disp_rst_pins: lcm-pins {
252 pins-rst {
253 pinmux = <PINMUX_GPIO106__FUNC_GPIO106>;
254 };
255 };
256
257 mmc0_pins_default: emmc-sdr-pins {
258 pins-cmd-dat {
259 pinmux = <PINMUX_GPIO154__FUNC_MSDC0_DAT0>,
260 <PINMUX_GPIO155__FUNC_MSDC0_DAT1>,
261 <PINMUX_GPIO156__FUNC_MSDC0_DAT2>,
262 <PINMUX_GPIO157__FUNC_MSDC0_DAT3>,
263 <PINMUX_GPIO158__FUNC_MSDC0_DAT4>,
264 <PINMUX_GPIO159__FUNC_MSDC0_DAT5>,
265 <PINMUX_GPIO160__FUNC_MSDC0_DAT6>,
266 <PINMUX_GPIO161__FUNC_MSDC0_DAT7>,
267 <PINMUX_GPIO162__FUNC_MSDC0_CMD>;
268 input-enable;
269 bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
270 };
271
272 pins-clk {
273 pinmux = <PINMUX_GPIO163__FUNC_MSDC0_CLK>;
274 bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
275 };
276
277 pins-rst {
278 pinmux = <PINMUX_GPIO165__FUNC_MSDC0_RSTB>;
279 bias-pull-up = <MTK_PUPD_SET_R1R0_10>;
280 };
281 };
282
283 mmc0_pins_uhs: emmc-uhs-pins {
284 pins-cmd-dat {
285 pinmux = <PINMUX_GPIO154__FUNC_MSDC0_DAT0>,
286 <PINMUX_GPIO155__FUNC_MSDC0_DAT1>,
287 <PINMUX_GPIO156__FUNC_MSDC0_DAT2>,
288 <PINMUX_GPIO157__FUNC_MSDC0_DAT3>,
289 <PINMUX_GPIO158__FUNC_MSDC0_DAT4>,
290 <PINMUX_GPIO159__FUNC_MSDC0_DAT5>,
291 <PINMUX_GPIO160__FUNC_MSDC0_DAT6>,
292 <PINMUX_GPIO161__FUNC_MSDC0_DAT7>,
293 <PINMUX_GPIO162__FUNC_MSDC0_CMD>;
294 input-enable;
295 drive-strength = <6>;
296 bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
297 };
298
299 pins-clk {
300 pinmux = <PINMUX_GPIO163__FUNC_MSDC0_CLK>;
301 drive-strength = <6>;
302 bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
303 };
304
305 pins-rst {
306 pinmux = <PINMUX_GPIO165__FUNC_MSDC0_RSTB>;
307 drive-strength = <6>;
308 bias-pull-up = <MTK_PUPD_SET_R1R0_10>;
309 };
310
311 pins-ds {
312 pinmux = <PINMUX_GPIO164__FUNC_MSDC0_DSL>;
313 drive-strength = <6>;
314 bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
315 };
316 };
317
318 mmc1_pins_default: microsd-pins {
319 pins-cmd-dat {
320 pinmux = <PINMUX_GPIO171__FUNC_MSDC1_DAT0>,
321 <PINMUX_GPIO172__FUNC_MSDC1_DAT1>,
322 <PINMUX_GPIO173__FUNC_MSDC1_DAT2>,
323 <PINMUX_GPIO174__FUNC_MSDC1_DAT3>,
324 <PINMUX_GPIO170__FUNC_MSDC1_CMD>;
325 input-enable;
326 bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
327 };
328
329 pins-clk {
330 pinmux = <PINMUX_GPIO175__FUNC_MSDC1_CLK>;
331 bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
332 };
333 };
334
335 mmc2_pins_default: sdio-pins {
336 pins-cmd-dat {
337 pinmux = <PINMUX_GPIO100__FUNC_MSDC2_DAT0>,
338 <PINMUX_GPIO101__FUNC_MSDC2_DAT1>,
339 <PINMUX_GPIO102__FUNC_MSDC2_DAT2>,
340 <PINMUX_GPIO103__FUNC_MSDC2_DAT3>,
341 <PINMUX_GPIO105__FUNC_MSDC2_CMD>;
342 input-enable;
343 bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
344 };
345
346 pins-clk {
347 pinmux = <PINMUX_GPIO104__FUNC_MSDC2_CLK>;
348 bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
349 };
350 };
351
352 nfc_pins: nfc-pins {
353 pins-irq {
354 pinmux = <PINMUX_GPIO3__FUNC_GPIO3>;
355 bias-pull-down;
356 input-enable;
357 };
358
359 pins-fw-ven {
360 pinmux = <PINMUX_GPIO94__FUNC_GPIO94>,
361 <PINMUX_GPIO149__FUNC_GPIO149>;
362 };
363 };
364
365 ts_pins: touchscreen-pins {
366 pins-irq {
367 pinmux = <PINMUX_GPIO6__FUNC_GPIO6>;
368 bias-pull-up;
369 input-enable;
370 };
371
372 pins-rst {
373 pinmux = <PINMUX_GPIO102__FUNC_GPIO102>;
374 output-high;
375 };
376 };
377
378 proximity_pins: proximity-pins {
379 pins-irq {
380 pinmux = <PINMUX_GPIO8__FUNC_GPIO8>;
381 bias-pull-up;
382 input-enable;
383 };
384 };
385
386 accel_pins: accelerometer-pins {
387 pins-irq {
388 pinmux = <PINMUX_GPIO12__FUNC_GPIO12>;
389 bias-pull-up;
390 input-enable;
391 };
392 };
393
394 i2c0_pins: i2c0-pins {
395 pins-bus {
396 pinmux = <PINMUX_GPIO45__FUNC_SDA0>,
397 <PINMUX_GPIO46__FUNC_SCL0>;
398 input-enable;
399 };
400 };
401
402 i2c1_pins: i2c1-pins {
403 pins-bus {
404 pinmux = <PINMUX_GPIO125__FUNC_SDA1>,
405 <PINMUX_GPIO126__FUNC_SCL1>;
406 bias-disable;
407 };
408 };
409
410 i2c2_pins: i2c2-pins {
411 pins-bus {
412 pinmux = <PINMUX_GPIO43__FUNC_SDA2>,
413 <PINMUX_GPIO44__FUNC_SCL2>;
414 bias-disable;
415 };
416 };
417
418 i2c3_pins: i2c3-pins {
419 pins-bus {
420 pinmux = <PINMUX_GPIO136__FUNC_SDA3>,
421 <PINMUX_GPIO137__FUNC_SCL3>;
422 bias-disable;
423 };
424 };
425
426 i2c4_pins: i2c4-pins {
427 pins-bus {
428 pinmux = <PINMUX_GPIO100__FUNC_SDA4>,
429 <PINMUX_GPIO101__FUNC_SCL4>;
430 bias-disable;
431 };
432 };
433
434 uart0_pins: uart0-pins {
435 pins-rx {
436 pinmux = <PINMUX_GPIO113__FUNC_URXD0>;
437 bias-pull-up;
438 input-enable;
439 };
440 pins-tx {
441 pinmux = <PINMUX_GPIO114__FUNC_UTXD0>;
442 output-high;
443 };
444 };
445
446 uart2_pins: uart2-pins {
447 pins-rx {
448 pinmux = <PINMUX_GPIO31__FUNC_URXD2>;
449 bias-pull-up;
450 input-enable;
451 };
452 pins-tx {
453 pinmux = <PINMUX_GPIO32__FUNC_UTXD2>;
454 };
455 };
456};
457
458&pmic {
459 /*
460 * Smartphones, including the Xperia M5, are equipped with a companion
461 * MT6332 PMIC: when this is present, the main MT6331 PMIC will fire
462 * an interrupt on the companion, so we use the MT6332 IRQ GPIO.
463 */
464 interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>;
465
466 mt6332-led {
467 compatible = "mediatek,mt6332-led";
468 #address-cells = <1>;
469 #size-cells = <0>;
470
471 pmic_bl_led: led@0 {
472 reg = <0>;
473 label = "backlight-pmic";
474 };
475 };
476};
477
478&pwm0 {
479 status = "okay";
480};
481
482&uart0 {
483 status = "okay";
484
485 pinctrl-names = "default";
486 pinctrl-0 = <&uart0_pins>;
487};
488
489&uart2 {
490 status = "okay";
491
492 pinctrl-names = "default";
493 pinctrl-0 = <&uart2_pins>;
494};