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/gpio/gpio.h>
6#include <dt-bindings/input/input.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_uart10;
16	};
17
18	chosen {
19		stdout-path = "serial0:115200n8";
20	};
21
22	smd {
23		rpm {
24			rpm_requests {
25				pm8841-regulators {
26					s1 {
27						regulator-min-microvolt = <675000>;
28						regulator-max-microvolt = <1050000>;
29					};
30
31					s2 {
32						regulator-min-microvolt = <500000>;
33						regulator-max-microvolt = <1050000>;
34					};
35
36					s3 {
37						regulator-min-microvolt = <1050000>;
38						regulator-max-microvolt = <1050000>;
39					};
40
41					s4 {
42						regulator-min-microvolt = <815000>;
43						regulator-max-microvolt = <900000>;
44					};
45				};
46
47				pm8941-regulators {
48					vdd_l1_l3-supply = <&pm8941_s1>;
49					vdd_l2_lvs1_2_3-supply = <&pm8941_s3>;
50					vdd_l4_l11-supply = <&pm8941_s1>;
51					vdd_l5_l7-supply = <&pm8941_s2>;
52					vdd_l6_l12_l14_l15-supply = <&pm8941_s2>;
53					vdd_l8_l16_l18_l19-supply = <&vreg_vph_pwr>;
54					vdd_l9_l10_l17_l22-supply = <&vreg_boost>;
55					vdd_l13_l20_l23_l24-supply = <&vreg_boost>;
56					vdd_l21-supply = <&vreg_boost>;
57
58					s1 {
59						regulator-min-microvolt = <1300000>;
60						regulator-max-microvolt = <1300000>;
61
62						regulator-always-on;
63						regulator-boot-on;
64					};
65
66					s2 {
67						regulator-min-microvolt = <2150000>;
68						regulator-max-microvolt = <2150000>;
69
70						regulator-boot-on;
71					};
72
73					s3 {
74						regulator-min-microvolt = <1800000>;
75						regulator-max-microvolt = <1800000>;
76
77						regulator-always-on;
78						regulator-boot-on;
79					};
80
81					l1 {
82						regulator-min-microvolt = <1225000>;
83						regulator-max-microvolt = <1225000>;
84
85						regulator-always-on;
86						regulator-boot-on;
87					};
88
89					l2 {
90						regulator-min-microvolt = <1200000>;
91						regulator-max-microvolt = <1200000>;
92					};
93
94					l3 {
95						regulator-min-microvolt = <1225000>;
96						regulator-max-microvolt = <1225000>;
97					};
98
99					l4 {
100						regulator-min-microvolt = <1225000>;
101						regulator-max-microvolt = <1225000>;
102					};
103
104					l5 {
105						regulator-min-microvolt = <1800000>;
106						regulator-max-microvolt = <1800000>;
107					};
108
109					l6 {
110						regulator-min-microvolt = <1800000>;
111						regulator-max-microvolt = <1800000>;
112
113						regulator-boot-on;
114					};
115
116					l7 {
117						regulator-min-microvolt = <1800000>;
118						regulator-max-microvolt = <1800000>;
119
120						regulator-boot-on;
121					};
122
123					l8 {
124						regulator-min-microvolt = <1800000>;
125						regulator-max-microvolt = <1800000>;
126					};
127
128					l9 {
129						regulator-min-microvolt = <1800000>;
130						regulator-max-microvolt = <2950000>;
131					};
132
133					l10 {
134						regulator-min-microvolt = <1800000>;
135						regulator-max-microvolt = <2950000>;
136					};
137
138					l11 {
139						regulator-min-microvolt = <1300000>;
140						regulator-max-microvolt = <1300000>;
141					};
142
143					l12 {
144						regulator-min-microvolt = <1800000>;
145						regulator-max-microvolt = <1800000>;
146
147						regulator-always-on;
148						regulator-boot-on;
149					};
150
151					l13 {
152						regulator-min-microvolt = <1800000>;
153						regulator-max-microvolt = <2950000>;
154
155						regulator-boot-on;
156					};
157
158					l14 {
159						regulator-min-microvolt = <1800000>;
160						regulator-max-microvolt = <1800000>;
161					};
162
163					l15 {
164						regulator-min-microvolt = <2050000>;
165						regulator-max-microvolt = <2050000>;
166					};
167
168					l16 {
169						regulator-min-microvolt = <2700000>;
170						regulator-max-microvolt = <2700000>;
171					};
172
173					l17 {
174						regulator-min-microvolt = <2850000>;
175						regulator-max-microvolt = <2850000>;
176					};
177
178					l18 {
179						regulator-min-microvolt = <2850000>;
180						regulator-max-microvolt = <2850000>;
181					};
182
183					l19 {
184						regulator-min-microvolt = <3000000>;
185						regulator-max-microvolt = <3300000>;
186					};
187
188					l20 {
189						regulator-min-microvolt = <2950000>;
190						regulator-max-microvolt = <2950000>;
191
192						regulator-boot-on;
193						regulator-system-load = <200000>;
194						regulator-allow-set-load;
195					};
196
197					l21 {
198						regulator-min-microvolt = <2950000>;
199						regulator-max-microvolt = <2950000>;
200
201						regulator-boot-on;
202					};
203
204					l22 {
205						regulator-min-microvolt = <3000000>;
206						regulator-max-microvolt = <3300000>;
207					};
208
209					l23 {
210						regulator-min-microvolt = <3000000>;
211						regulator-max-microvolt = <3000000>;
212					};
213
214					l24 {
215						regulator-min-microvolt = <3075000>;
216						regulator-max-microvolt = <3075000>;
217
218						regulator-boot-on;
219					};
220				};
221			};
222		};
223	};
224
225	vreg_wlan: wlan-regulator {
226		compatible = "regulator-fixed";
227
228		regulator-name = "wl-reg";
229		regulator-min-microvolt = <3300000>;
230		regulator-max-microvolt = <3300000>;
231
232		gpio = <&msmgpio 26 GPIO_ACTIVE_HIGH>;
233		enable-active-high;
234
235		pinctrl-names = "default";
236		pinctrl-0 = <&wlan_regulator_pin>;
237	};
238};
239
240&soc {
241	serial@f991d000 {
242		status = "okay";
243	};
244
245	pinctrl@fd510000 {
246		sdhc1_pin_a: sdhc1-pin-active {
247			clk {
248				pins = "sdc1_clk";
249				drive-strength = <16>;
250				bias-disable;
251			};
252
253			cmd-data {
254				pins = "sdc1_cmd", "sdc1_data";
255				drive-strength = <10>;
256				bias-pull-up;
257			};
258		};
259
260		sdhc2_pin_a: sdhc2-pin-active {
261			clk {
262				pins = "sdc2_clk";
263				drive-strength = <6>;
264				bias-disable;
265			};
266
267			cmd-data {
268				pins = "sdc2_cmd", "sdc2_data";
269				drive-strength = <6>;
270				bias-pull-up;
271			};
272		};
273
274		i2c1_pins: i2c1 {
275			mux {
276				pins = "gpio2", "gpio3";
277				function = "blsp_i2c1";
278
279				drive-strength = <2>;
280				bias-disable;
281			};
282		};
283
284		i2c2_pins: i2c2 {
285			mux {
286				pins = "gpio6", "gpio7";
287				function = "blsp_i2c2";
288
289				drive-strength = <2>;
290				bias-disable;
291			};
292		};
293
294		i2c3_pins: i2c3 {
295			mux {
296				pins = "gpio10", "gpio11";
297				function = "blsp_i2c3";
298				drive-strength = <2>;
299				bias-disable;
300			};
301		};
302
303		i2c11_pins: i2c11 {
304			mux {
305				pins = "gpio83", "gpio84";
306				function = "blsp_i2c11";
307
308				drive-strength = <2>;
309				bias-disable;
310			};
311		};
312
313		i2c12_pins: i2c12 {
314			mux {
315				pins = "gpio87", "gpio88";
316				function = "blsp_i2c12";
317				drive-strength = <2>;
318				bias-disable;
319			};
320		};
321
322		mpu6515_pin: mpu6515 {
323			irq {
324				pins = "gpio73";
325				function = "gpio";
326				bias-disable;
327				input-enable;
328			};
329		};
330
331		touch_pin: touch {
332			int {
333				pins = "gpio5";
334				function = "gpio";
335
336				drive-strength = <2>;
337				bias-disable;
338				input-enable;
339			};
340
341			reset {
342				pins = "gpio8";
343				function = "gpio";
344
345				drive-strength = <2>;
346				bias-pull-up;
347			};
348		};
349
350		panel_pin: panel {
351			te {
352				pins = "gpio12";
353				function = "mdp_vsync";
354
355				drive-strength = <2>;
356				bias-disable;
357			};
358		};
359
360		bt_pin: bt {
361			hostwake {
362				pins = "gpio42";
363				function = "gpio";
364			};
365
366			devwake {
367				pins = "gpio62";
368				function = "gpio";
369			};
370
371			shutdown {
372				pins = "gpio41";
373				function = "gpio";
374			};
375		};
376
377		blsp2_uart10_pin_a: blsp2-uart10-pin-active {
378			tx {
379				pins = "gpio53";
380				function = "blsp_uart10";
381
382				drive-strength = <2>;
383				bias-disable;
384			};
385
386			rx {
387				pins = "gpio54";
388				function = "blsp_uart10";
389
390				drive-strength = <2>;
391				bias-pull-up;
392			};
393
394			cts {
395				pins = "gpio55";
396				function = "blsp_uart10";
397
398				drive-strength = <2>;
399				bias-pull-up;
400			};
401
402			rts {
403				pins = "gpio56";
404				function = "blsp_uart10";
405
406				drive-strength = <2>;
407				bias-disable;
408			};
409		};
410	};
411
412	sdhci@f9824900 {
413		status = "okay";
414
415		vmmc-supply = <&pm8941_l20>;
416		vqmmc-supply = <&pm8941_s3>;
417
418		bus-width = <8>;
419		non-removable;
420
421		pinctrl-names = "default";
422		pinctrl-0 = <&sdhc1_pin_a>;
423	};
424
425	sdhci@f98a4900 {
426		status = "okay";
427
428		max-frequency = <100000000>;
429		bus-width = <4>;
430		non-removable;
431		vmmc-supply = <&vreg_wlan>;
432		vqmmc-supply = <&pm8941_s3>;
433
434		pinctrl-names = "default";
435		pinctrl-0 = <&sdhc2_pin_a>;
436
437		#address-cells = <1>;
438		#size-cells = <0>;
439
440		bcrmf@1 {
441			compatible = "brcm,bcm4339-fmac", "brcm,bcm4329-fmac";
442			reg = <1>;
443
444			brcm,drive-strength = <10>;
445
446			pinctrl-names = "default";
447			pinctrl-0 = <&wlan_sleep_clk_pin>;
448		};
449	};
450
451	gpio-keys {
452		compatible = "gpio-keys";
453		input-name = "gpio-keys";
454
455		pinctrl-names = "default";
456		pinctrl-0 = <&gpio_keys_pin_a>;
457
458		volume-up {
459			label = "volume_up";
460			gpios = <&pm8941_gpios 2 GPIO_ACTIVE_LOW>;
461			linux,input-type = <1>;
462			linux,code = <KEY_VOLUMEUP>;
463		};
464
465		volume-down {
466			label = "volume_down";
467			gpios = <&pm8941_gpios 3 GPIO_ACTIVE_LOW>;
468			linux,input-type = <1>;
469			linux,code = <KEY_VOLUMEDOWN>;
470		};
471	};
472
473	serial@f9960000 {
474		status = "okay";
475
476		pinctrl-names = "default";
477		pinctrl-0 = <&blsp2_uart10_pin_a>;
478
479		bluetooth {
480			compatible = "brcm,bcm43438-bt";
481			max-speed = <3000000>;
482
483			pinctrl-names = "default";
484			pinctrl-0 = <&bt_pin>;
485
486			host-wakeup-gpios = <&msmgpio 42 GPIO_ACTIVE_HIGH>;
487			device-wakeup-gpios = <&msmgpio 62 GPIO_ACTIVE_HIGH>;
488			shutdown-gpios = <&msmgpio 41 GPIO_ACTIVE_HIGH>;
489		};
490	};
491
492	i2c@f9967000 {
493		status = "okay";
494		pinctrl-names = "default";
495		pinctrl-0 = <&i2c11_pins>;
496		clock-frequency = <355000>;
497		qcom,src-freq = <50000000>;
498
499		led-controller@38 {
500			compatible = "ti,lm3630a";
501			status = "okay";
502			reg = <0x38>;
503
504			#address-cells = <1>;
505			#size-cells = <0>;
506
507			led@0 {
508				reg = <0>;
509				led-sources = <0 1>;
510				label = "lcd-backlight";
511				default-brightness = <200>;
512			};
513		};
514	};
515
516	i2c@f9968000 {
517		status = "okay";
518		pinctrl-names = "default";
519		pinctrl-0 = <&i2c12_pins>;
520		clock-frequency = <100000>;
521		qcom,src-freq = <50000000>;
522
523		mpu6515@68 {
524			compatible = "invensense,mpu6515";
525			reg = <0x68>;
526			interrupts-extended = <&msmgpio 73 IRQ_TYPE_EDGE_FALLING>;
527			vddio-supply = <&pm8941_lvs1>;
528
529			pinctrl-names = "default";
530			pinctrl-0 = <&mpu6515_pin>;
531
532			mount-matrix = "0", "-1", "0",
533				       "-1", "0", "0",
534				       "0", "0", "1";
535
536			i2c-gate {
537				#address-cells = <1>;
538				#size-cells = <0>;
539				ak8963@f {
540					compatible = "asahi-kasei,ak8963";
541					reg = <0x0f>;
542					gpios = <&msmgpio 67 0>;
543					vid-supply = <&pm8941_lvs1>;
544					vdd-supply = <&pm8941_l17>;
545				};
546
547				bmp280@76 {
548					compatible = "bosch,bmp280";
549					reg = <0x76>;
550					vdda-supply = <&pm8941_lvs1>;
551					vddd-supply = <&pm8941_l17>;
552				};
553			};
554		};
555	};
556
557	i2c@f9923000 {
558		status = "okay";
559		pinctrl-names = "default";
560		pinctrl-0 = <&i2c1_pins>;
561		clock-frequency = <100000>;
562		qcom,src-freq = <50000000>;
563
564		charger: bq24192@6b {
565			compatible = "ti,bq24192";
566			reg = <0x6b>;
567			interrupts-extended = <&spmi_bus 0 0xd5 0 IRQ_TYPE_EDGE_FALLING>;
568
569			omit-battery-class;
570
571			usb_otg_vbus: usb-otg-vbus { };
572		};
573
574		fuelgauge: max17048@36 {
575			compatible = "maxim,max17048";
576			reg = <0x36>;
577
578			maxim,double-soc;
579			maxim,rcomp = /bits/ 8 <0x4d>;
580
581			interrupt-parent = <&msmgpio>;
582			interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
583
584			pinctrl-names = "default";
585			pinctrl-0 = <&fuelgauge_pin>;
586
587			maxim,alert-low-soc-level = <2>;
588		};
589	};
590
591	i2c@f9924000 {
592		status = "okay";
593
594		clock-frequency = <355000>;
595		qcom,src-freq = <50000000>;
596
597		pinctrl-names = "default";
598		pinctrl-0 = <&i2c2_pins>;
599
600		synaptics@70 {
601			compatible = "syna,rmi4-i2c";
602			reg = <0x70>;
603
604			interrupts-extended = <&msmgpio 5 IRQ_TYPE_EDGE_FALLING>;
605			vdd-supply = <&pm8941_l22>;
606			vio-supply = <&pm8941_lvs3>;
607
608			pinctrl-names = "default";
609			pinctrl-0 = <&touch_pin>;
610
611			#address-cells = <1>;
612			#size-cells = <0>;
613
614			rmi4-f01@1 {
615				reg = <0x1>;
616				syna,nosleep-mode = <1>;
617			};
618
619			rmi4-f12@12 {
620				reg = <0x12>;
621				syna,sensor-type = <1>;
622			};
623		};
624	};
625
626	i2c@f9925000 {
627		status = "okay";
628		pinctrl-names = "default";
629		pinctrl-0 = <&i2c3_pins>;
630		clock-frequency = <100000>;
631		qcom,src-freq = <50000000>;
632
633		avago_apds993@39 {
634			compatible = "avago,apds9930";
635			reg = <0x39>;
636			interrupts-extended = <&msmgpio 61 IRQ_TYPE_EDGE_FALLING>;
637			vdd-supply = <&pm8941_l17>;
638			vddio-supply = <&pm8941_lvs1>;
639			led-max-microamp = <100000>;
640			amstaos,proximity-diodes = <0>;
641		};
642	};
643
644	usb@f9a55000 {
645		status = "okay";
646
647		phys = <&usb_hs1_phy>;
648		phy-select = <&tcsr 0xb000 0>;
649
650		extcon = <&charger>, <&usb_id>;
651		vbus-supply = <&usb_otg_vbus>;
652
653		hnp-disable;
654		srp-disable;
655		adp-disable;
656
657		ulpi {
658			phy@a {
659				status = "okay";
660
661				v1p8-supply = <&pm8941_l6>;
662				v3p3-supply = <&pm8941_l24>;
663
664				qcom,init-seq = /bits/ 8 <0x1 0x64>;
665			};
666		};
667	};
668
669	mdss@fd900000 {
670		status = "okay";
671
672		mdp@fd900000 {
673			status = "okay";
674		};
675
676		dsi@fd922800 {
677			status = "okay";
678
679			vdda-supply = <&pm8941_l2>;
680			vdd-supply = <&pm8941_lvs3>;
681			vddio-supply = <&pm8941_l12>;
682
683			#address-cells = <1>;
684			#size-cells = <0>;
685
686			ports {
687				port@1 {
688					endpoint {
689						remote-endpoint = <&panel_in>;
690						data-lanes = <0 1 2 3>;
691					};
692				};
693			};
694
695			panel: panel@0 {
696				reg = <0>;
697				compatible = "lg,acx467akm-7";
698
699				pinctrl-names = "default";
700				pinctrl-0 = <&panel_pin>;
701
702				port {
703					panel_in: endpoint {
704						remote-endpoint = <&dsi0_out>;
705					};
706				};
707			};
708		};
709
710		dsi-phy@fd922a00 {
711			status = "okay";
712
713			vddio-supply = <&pm8941_l12>;
714		};
715	};
716};
717
718&spmi_bus {
719	pm8941@0 {
720		gpios@c000 {
721			gpio_keys_pin_a: gpio-keys-active {
722				pins = "gpio2", "gpio3";
723				function = "normal";
724
725				bias-pull-up;
726				power-source = <PM8941_GPIO_S3>;
727			};
728
729			fuelgauge_pin: fuelgauge-int {
730				pins = "gpio9";
731				function = "normal";
732
733				bias-disable;
734				input-enable;
735				power-source = <PM8941_GPIO_S3>;
736			};
737
738			wlan_sleep_clk_pin: wl-sleep-clk {
739				pins = "gpio16";
740				function = "func2";
741
742				output-high;
743				power-source = <PM8941_GPIO_S3>;
744			};
745
746			wlan_regulator_pin: wl-reg-active {
747				pins = "gpio17";
748				function = "normal";
749
750				bias-disable;
751				power-source = <PM8941_GPIO_S3>;
752			};
753
754			otg {
755				gpio-hog;
756				gpios = <35 GPIO_ACTIVE_HIGH>;
757				output-high;
758				line-name = "otg-gpio";
759			};
760		};
761	};
762};
763