1// SPDX-License-Identifier: GPL-2.0
2#include "qcom-msm8974.dtsi"
3#include "qcom-pm8841.dtsi"
4#include "qcom-pm8941.dtsi"
5#include <dt-bindings/input/input.h>
6#include <dt-bindings/leds/common.h>
7#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
8
9/ {
10	model = "LGE MSM 8974 HAMMERHEAD";
11	compatible = "lge,hammerhead", "qcom,msm8974";
12
13	aliases {
14		serial0 = &blsp1_uart1;
15		serial1 = &blsp2_uart4;
16	};
17
18	chosen {
19		stdout-path = "serial0:115200n8";
20	};
21
22	gpio-keys {
23		compatible = "gpio-keys";
24
25		pinctrl-names = "default";
26		pinctrl-0 = <&gpio_keys_pin_a>;
27
28		key-volume-up {
29			label = "volume_up";
30			gpios = <&pm8941_gpios 2 GPIO_ACTIVE_LOW>;
31			linux,input-type = <1>;
32			linux,code = <KEY_VOLUMEUP>;
33		};
34
35		key-volume-down {
36			label = "volume_down";
37			gpios = <&pm8941_gpios 3 GPIO_ACTIVE_LOW>;
38			linux,input-type = <1>;
39			linux,code = <KEY_VOLUMEDOWN>;
40		};
41	};
42
43	vreg_wlan: wlan-regulator {
44		compatible = "regulator-fixed";
45
46		regulator-name = "wl-reg";
47		regulator-min-microvolt = <3300000>;
48		regulator-max-microvolt = <3300000>;
49
50		gpio = <&tlmm 26 GPIO_ACTIVE_HIGH>;
51		enable-active-high;
52
53		pinctrl-names = "default";
54		pinctrl-0 = <&wlan_regulator_pin>;
55	};
56};
57
58&blsp1_i2c1 {
59	status = "okay";
60	clock-frequency = <100000>;
61
62	charger: bq24192@6b {
63		compatible = "ti,bq24192";
64		reg = <0x6b>;
65		interrupts-extended = <&spmi_bus 0 0xd5 0 IRQ_TYPE_EDGE_FALLING>;
66
67		omit-battery-class;
68
69		usb_otg_vbus: usb-otg-vbus { };
70	};
71
72	fuelgauge: max17048@36 {
73		compatible = "maxim,max17048";
74		reg = <0x36>;
75
76		maxim,double-soc;
77		maxim,rcomp = /bits/ 8 <0x4d>;
78
79		interrupt-parent = <&tlmm>;
80		interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
81
82		pinctrl-names = "default";
83		pinctrl-0 = <&fuelgauge_pin>;
84
85		maxim,alert-low-soc-level = <2>;
86	};
87};
88
89&blsp1_i2c2 {
90	status = "okay";
91	clock-frequency = <355000>;
92
93	synaptics@70 {
94		compatible = "syna,rmi4-i2c";
95		reg = <0x70>;
96
97		interrupts-extended = <&tlmm 5 IRQ_TYPE_EDGE_FALLING>;
98		vdd-supply = <&pm8941_l22>;
99		vio-supply = <&pm8941_lvs3>;
100
101		pinctrl-names = "default";
102		pinctrl-0 = <&touch_pin>;
103
104		#address-cells = <1>;
105		#size-cells = <0>;
106
107		rmi4-f01@1 {
108			reg = <0x1>;
109			syna,nosleep-mode = <1>;
110		};
111
112		rmi4-f12@12 {
113			reg = <0x12>;
114			syna,sensor-type = <1>;
115		};
116	};
117};
118
119&blsp1_i2c3 {
120	status = "okay";
121	clock-frequency = <100000>;
122
123	avago_apds993@39 {
124		compatible = "avago,apds9930";
125		reg = <0x39>;
126		interrupts-extended = <&tlmm 61 IRQ_TYPE_EDGE_FALLING>;
127		vdd-supply = <&pm8941_l17>;
128		vddio-supply = <&pm8941_lvs1>;
129		led-max-microamp = <100000>;
130		amstaos,proximity-diodes = <0>;
131	};
132};
133
134&blsp2_i2c5 {
135	status = "okay";
136	clock-frequency = <355000>;
137
138	led-controller@38 {
139		compatible = "ti,lm3630a";
140		status = "okay";
141		reg = <0x38>;
142
143		#address-cells = <1>;
144		#size-cells = <0>;
145
146		led@0 {
147			reg = <0>;
148			led-sources = <0 1>;
149			label = "lcd-backlight";
150			default-brightness = <200>;
151		};
152	};
153};
154
155&blsp2_i2c6 {
156	status = "okay";
157	clock-frequency = <100000>;
158
159	mpu6515@68 {
160		compatible = "invensense,mpu6515";
161		reg = <0x68>;
162		interrupts-extended = <&tlmm 73 IRQ_TYPE_EDGE_FALLING>;
163		vddio-supply = <&pm8941_lvs1>;
164
165		pinctrl-names = "default";
166		pinctrl-0 = <&mpu6515_pin>;
167
168		mount-matrix = "0", "-1", "0",
169				"-1", "0", "0",
170				"0", "0", "1";
171
172		i2c-gate {
173			#address-cells = <1>;
174			#size-cells = <0>;
175			ak8963@f {
176				compatible = "asahi-kasei,ak8963";
177				reg = <0x0f>;
178				gpios = <&tlmm 67 GPIO_ACTIVE_HIGH>;
179				vid-supply = <&pm8941_lvs1>;
180				vdd-supply = <&pm8941_l17>;
181			};
182
183			bmp280@76 {
184				compatible = "bosch,bmp280";
185				reg = <0x76>;
186				vdda-supply = <&pm8941_lvs1>;
187				vddd-supply = <&pm8941_l17>;
188			};
189		};
190	};
191};
192
193&blsp1_uart1 {
194	status = "okay";
195};
196
197&blsp2_uart4 {
198	status = "okay";
199
200	bluetooth {
201		compatible = "brcm,bcm43438-bt";
202		max-speed = <3000000>;
203
204		pinctrl-names = "default";
205		pinctrl-0 = <&bt_pin>;
206
207		host-wakeup-gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>;
208		device-wakeup-gpios = <&tlmm 62 GPIO_ACTIVE_HIGH>;
209		shutdown-gpios = <&tlmm 41 GPIO_ACTIVE_HIGH>;
210	};
211};
212
213&dsi0 {
214	status = "okay";
215
216	vdda-supply = <&pm8941_l2>;
217	vdd-supply = <&pm8941_lvs3>;
218	vddio-supply = <&pm8941_l12>;
219
220	panel: panel@0 {
221		reg = <0>;
222		compatible = "lg,acx467akm-7";
223
224		pinctrl-names = "default";
225		pinctrl-0 = <&panel_pin>;
226
227		port {
228			panel_in: endpoint {
229				remote-endpoint = <&dsi0_out>;
230			};
231		};
232	};
233};
234
235&dsi0_out {
236	remote-endpoint = <&panel_in>;
237	data-lanes = <0 1 2 3>;
238};
239
240&dsi0_phy {
241	status = "okay";
242
243	vddio-supply = <&pm8941_l12>;
244};
245
246&mdss {
247	status = "okay";
248};
249
250&otg {
251	status = "okay";
252
253	phys = <&usb_hs1_phy>;
254	phy-select = <&tcsr 0xb000 0>;
255
256	extcon = <&charger>, <&usb_id>;
257	vbus-supply = <&usb_otg_vbus>;
258
259	hnp-disable;
260	srp-disable;
261	adp-disable;
262
263	ulpi {
264		phy@a {
265			status = "okay";
266
267			v1p8-supply = <&pm8941_l6>;
268			v3p3-supply = <&pm8941_l24>;
269
270			qcom,init-seq = /bits/ 8 <0x1 0x64>;
271		};
272	};
273};
274
275&pm8941_gpios {
276	gpio_keys_pin_a: gpio-keys-active-state {
277		pins = "gpio2", "gpio3";
278		function = "normal";
279
280		bias-pull-up;
281		power-source = <PM8941_GPIO_S3>;
282	};
283
284	fuelgauge_pin: fuelgauge-int-state {
285		pins = "gpio9";
286		function = "normal";
287
288		bias-disable;
289		input-enable;
290		power-source = <PM8941_GPIO_S3>;
291	};
292
293	wlan_sleep_clk_pin: wl-sleep-clk-state {
294		pins = "gpio16";
295		function = "func2";
296
297		output-high;
298		power-source = <PM8941_GPIO_S3>;
299	};
300
301	wlan_regulator_pin: wl-reg-active-state {
302		pins = "gpio17";
303		function = "normal";
304
305		bias-disable;
306		power-source = <PM8941_GPIO_S3>;
307	};
308
309	otg {
310		gpio-hog;
311		gpios = <35 GPIO_ACTIVE_HIGH>;
312		output-high;
313		line-name = "otg-gpio";
314	};
315};
316
317&pm8941_lpg {
318	status = "okay";
319
320	qcom,power-source = <1>;
321
322	multi-led {
323		color = <LED_COLOR_ID_RGB>;
324		function = LED_FUNCTION_STATUS;
325
326		#address-cells = <1>;
327		#size-cells = <0>;
328
329		led@7 {
330			reg = <7>;
331			color = <LED_COLOR_ID_RED>;
332		};
333
334		led@6 {
335			reg = <6>;
336			color = <LED_COLOR_ID_GREEN>;
337		};
338
339		led@5 {
340			reg = <5>;
341			color = <LED_COLOR_ID_BLUE>;
342		};
343	};
344};
345
346&rpm_requests {
347	pm8841-regulators {
348		compatible = "qcom,rpm-pm8841-regulators";
349
350		pm8841_s1: s1 {
351			regulator-min-microvolt = <675000>;
352			regulator-max-microvolt = <1050000>;
353		};
354
355		pm8841_s2: s2 {
356			regulator-min-microvolt = <500000>;
357			regulator-max-microvolt = <1050000>;
358		};
359
360		pm8841_s3: s3 {
361			regulator-min-microvolt = <1050000>;
362			regulator-max-microvolt = <1050000>;
363		};
364
365		pm8841_s4: s4 {
366			regulator-min-microvolt = <815000>;
367			regulator-max-microvolt = <900000>;
368		};
369	};
370
371	pm8941-regulators {
372		compatible = "qcom,rpm-pm8941-regulators";
373
374		vdd_l1_l3-supply = <&pm8941_s1>;
375		vdd_l2_lvs1_2_3-supply = <&pm8941_s3>;
376		vdd_l4_l11-supply = <&pm8941_s1>;
377		vdd_l5_l7-supply = <&pm8941_s2>;
378		vdd_l6_l12_l14_l15-supply = <&pm8941_s2>;
379		vdd_l8_l16_l18_l19-supply = <&vreg_vph_pwr>;
380		vdd_l9_l10_l17_l22-supply = <&vreg_boost>;
381		vdd_l13_l20_l23_l24-supply = <&vreg_boost>;
382		vdd_l21-supply = <&vreg_boost>;
383
384		pm8941_s1: s1 {
385			regulator-min-microvolt = <1300000>;
386			regulator-max-microvolt = <1300000>;
387			regulator-always-on;
388			regulator-boot-on;
389		};
390
391		pm8941_s2: s2 {
392			regulator-min-microvolt = <2150000>;
393			regulator-max-microvolt = <2150000>;
394			regulator-boot-on;
395		};
396
397		pm8941_s3: s3 {
398			regulator-min-microvolt = <1800000>;
399			regulator-max-microvolt = <1800000>;
400			regulator-always-on;
401			regulator-boot-on;
402		};
403
404		pm8941_l1: l1 {
405			regulator-min-microvolt = <1225000>;
406			regulator-max-microvolt = <1225000>;
407			regulator-always-on;
408			regulator-boot-on;
409		};
410
411		pm8941_l2: l2 {
412			regulator-min-microvolt = <1200000>;
413			regulator-max-microvolt = <1200000>;
414		};
415
416		pm8941_l3: l3 {
417			regulator-min-microvolt = <1225000>;
418			regulator-max-microvolt = <1225000>;
419		};
420
421		pm8941_l4: l4 {
422			regulator-min-microvolt = <1225000>;
423			regulator-max-microvolt = <1225000>;
424		};
425
426		pm8941_l5: l5 {
427			regulator-min-microvolt = <1800000>;
428			regulator-max-microvolt = <1800000>;
429		};
430
431		pm8941_l6: l6 {
432			regulator-min-microvolt = <1800000>;
433			regulator-max-microvolt = <1800000>;
434			regulator-boot-on;
435		};
436
437		pm8941_l7: l7 {
438			regulator-min-microvolt = <1800000>;
439			regulator-max-microvolt = <1800000>;
440			regulator-boot-on;
441		};
442
443		pm8941_l8: l8 {
444			regulator-min-microvolt = <1800000>;
445			regulator-max-microvolt = <1800000>;
446		};
447
448		pm8941_l9: l9 {
449			regulator-min-microvolt = <1800000>;
450			regulator-max-microvolt = <2950000>;
451		};
452
453		pm8941_l10: l10 {
454			regulator-min-microvolt = <1800000>;
455			regulator-max-microvolt = <2950000>;
456		};
457
458		pm8941_l11: l11 {
459			regulator-min-microvolt = <1300000>;
460			regulator-max-microvolt = <1300000>;
461		};
462
463		pm8941_l12: l12 {
464			regulator-min-microvolt = <1800000>;
465			regulator-max-microvolt = <1800000>;
466			regulator-always-on;
467			regulator-boot-on;
468		};
469
470		pm8941_l13: l13 {
471			regulator-min-microvolt = <1800000>;
472			regulator-max-microvolt = <2950000>;
473			regulator-boot-on;
474		};
475
476		pm8941_l14: l14 {
477			regulator-min-microvolt = <1800000>;
478			regulator-max-microvolt = <1800000>;
479		};
480
481		pm8941_l15: l15 {
482			regulator-min-microvolt = <2050000>;
483			regulator-max-microvolt = <2050000>;
484		};
485
486		pm8941_l16: l16 {
487			regulator-min-microvolt = <2700000>;
488			regulator-max-microvolt = <2700000>;
489		};
490
491		pm8941_l17: l17 {
492			regulator-min-microvolt = <2850000>;
493			regulator-max-microvolt = <2850000>;
494		};
495
496		pm8941_l18: l18 {
497			regulator-min-microvolt = <2850000>;
498			regulator-max-microvolt = <2850000>;
499		};
500
501		pm8941_l19: l19 {
502			regulator-min-microvolt = <3000000>;
503			regulator-max-microvolt = <3300000>;
504		};
505
506		pm8941_l20: l20 {
507			regulator-min-microvolt = <2950000>;
508			regulator-max-microvolt = <2950000>;
509			regulator-system-load = <200000>;
510			regulator-allow-set-load;
511			regulator-boot-on;
512		};
513
514		pm8941_l21: l21 {
515			regulator-min-microvolt = <2950000>;
516			regulator-max-microvolt = <2950000>;
517			regulator-boot-on;
518		};
519
520		pm8941_l22: l22 {
521			regulator-min-microvolt = <3000000>;
522			regulator-max-microvolt = <3300000>;
523		};
524
525		pm8941_l23: l23 {
526			regulator-min-microvolt = <3000000>;
527			regulator-max-microvolt = <3000000>;
528		};
529
530		pm8941_l24: l24 {
531			regulator-min-microvolt = <3075000>;
532			regulator-max-microvolt = <3075000>;
533			regulator-boot-on;
534		};
535
536		pm8941_lvs1: lvs1 {};
537		pm8941_lvs3: lvs3 {};
538	};
539};
540
541&sdhc_1 {
542	status = "okay";
543
544	vmmc-supply = <&pm8941_l20>;
545	vqmmc-supply = <&pm8941_s3>;
546
547	pinctrl-names = "default", "sleep";
548	pinctrl-0 = <&sdc1_on>;
549	pinctrl-1 = <&sdc1_off>;
550};
551
552&sdhc_2 {
553	status = "okay";
554
555	max-frequency = <100000000>;
556	vmmc-supply = <&vreg_wlan>;
557	vqmmc-supply = <&pm8941_s3>;
558	non-removable;
559
560	pinctrl-names = "default", "sleep";
561	pinctrl-0 = <&sdc2_on>;
562	pinctrl-1 = <&sdc2_off>;
563
564	bcrmf@1 {
565		compatible = "brcm,bcm4339-fmac", "brcm,bcm4329-fmac";
566		reg = <1>;
567
568		brcm,drive-strength = <10>;
569
570		pinctrl-names = "default";
571		pinctrl-0 = <&wlan_sleep_clk_pin>;
572	};
573};
574
575&tlmm {
576	sdc1_on: sdc1-on {
577		clk {
578			pins = "sdc1_clk";
579			drive-strength = <16>;
580			bias-disable;
581		};
582
583		cmd-data {
584			pins = "sdc1_cmd", "sdc1_data";
585			drive-strength = <10>;
586			bias-pull-up;
587		};
588	};
589
590	sdc2_on: sdc2-on {
591		clk {
592			pins = "sdc2_clk";
593			drive-strength = <6>;
594			bias-disable;
595		};
596
597		cmd-data {
598			pins = "sdc2_cmd", "sdc2_data";
599			drive-strength = <6>;
600			bias-pull-up;
601		};
602	};
603
604	mpu6515_pin: mpu6515 {
605		pins = "gpio73";
606		function = "gpio";
607		bias-disable;
608		input-enable;
609	};
610
611	touch_pin: touch {
612		int {
613			pins = "gpio5";
614			function = "gpio";
615
616			drive-strength = <2>;
617			bias-disable;
618			input-enable;
619		};
620
621		reset {
622			pins = "gpio8";
623			function = "gpio";
624
625			drive-strength = <2>;
626			bias-pull-up;
627		};
628	};
629
630	panel_pin: panel {
631		pins = "gpio12";
632		function = "mdp_vsync";
633		drive-strength = <2>;
634		bias-disable;
635	};
636
637	bt_pin: bt {
638		hostwake {
639			pins = "gpio42";
640			function = "gpio";
641		};
642
643		devwake {
644			pins = "gpio62";
645			function = "gpio";
646		};
647
648		shutdown {
649			pins = "gpio41";
650			function = "gpio";
651		};
652	};
653};
654