blob: 4223cfefb4f5768255dfc506436935a9174eb416 [file] [log] [blame]
Kiran Gundac1c1de72017-09-21 15:05:09 +05301/* Copyright (c) 2015-2017, The Linux Foundation. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#include <dt-bindings/msm/power-on.h>
14
15&spmi_bus {
16 qcom,pmi8950@2 {
17 compatible ="qcom,spmi-pmic";
18 reg = <0x2 SPMI_USID>;
19 #address-cells = <2>;
20 #size-cells = <0>;
21
22 pmi8950_revid: qcom,revid@100 {
23 compatible = "qcom,qpnp-revid";
24 reg = <0x100 0x100>;
25 };
26
27 qcom,power-on@800 {
28 compatible = "qcom,qpnp-power-on";
29 reg = <0x800 0x100>;
30 qcom,secondary-pon-reset;
31 qcom,hard-reset-poweroff-type =
32 <PON_POWER_OFF_SHUTDOWN>;
33
34 pon_perph_reg: qcom,pon_perph_reg {
35 regulator-name = "pon_spare_reg";
36 qcom,pon-spare-reg-addr = <0x8c>;
37 qcom,pon-spare-reg-bit = <1>;
38 };
39 };
40
41 pmi8950_vadc: vadc@3100 {
42 compatible = "qcom,qpnp-vadc";
43 reg = <0x3100 0x100>;
44 #address-cells = <1>;
45 #size-cells = <0>;
46 interrupts = <0x2 0x31 0x0>;
47 interrupt-names = "eoc-int-en-set";
48 qcom,adc-bit-resolution = <15>;
49 qcom,adc-vdd-reference = <1800>;
50 qcom,vadc-poll-eoc;
51
52 chan@0 {
53 label = "usbin";
54 reg = <0>;
55 qcom,decimation = <0>;
56 qcom,pre-div-channel-scaling = <4>;
57 qcom,calibration-type = "absolute";
58 qcom,scale-function = <0>;
59 qcom,hw-settle-time = <0>;
60 qcom,fast-avg-setup = <0>;
61 };
62
63 chan@1 {
64 label = "dcin";
65 reg = <1>;
66 qcom,decimation = <0>;
67 qcom,pre-div-channel-scaling = <4>;
68 qcom,calibration-type = "absolute";
69 qcom,scale-function = <0>;
70 qcom,hw-settle-time = <0>;
71 qcom,fast-avg-setup = <0>;
72 };
73
74 chan@3 {
75 label = "vchg_sns";
76 reg = <3>;
77 qcom,decimation = <0>;
78 qcom,pre-div-channel-scaling = <1>;
79 qcom,calibration-type = "absolute";
80 qcom,scale-function = <0>;
81 qcom,hw-settle-time = <0>;
82 qcom,fast-avg-setup = <0>;
83 };
84
85 chan@9 {
86 label = "ref_625mv";
87 reg = <9>;
88 qcom,decimation = <0>;
89 qcom,pre-div-channel-scaling = <0>;
90 qcom,calibration-type = "absolute";
91 qcom,scale-function = <0>;
92 qcom,hw-settle-time = <0>;
93 qcom,fast-avg-setup = <0>;
94 };
95
96 chan@a {
97 label = "ref_1250v";
98 reg = <0xa>;
99 qcom,decimation = <0>;
100 qcom,pre-div-channel-scaling = <0>;
101 qcom,calibration-type = "absolute";
102 qcom,scale-function = <0>;
103 qcom,hw-settle-time = <0>;
104 qcom,fast-avg-setup = <0>;
105 };
106
107 chan@d {
108 label = "chg_temp";
109 reg = <0xd>;
110 qcom,decimation = <0>;
111 qcom,pre-div-channel-scaling = <0>;
112 qcom,calibration-type = "absolute";
113 qcom,scale-function = <16>;
114 qcom,hw-settle-time = <0>;
115 qcom,fast-avg-setup = <0>;
116 qcom,vadc-thermal-node;
117 };
118
119 chan@43 {
120 label = "usb_dp";
121 reg = <0x43>;
122 qcom,decimation = <0>;
123 qcom,pre-div-channel-scaling = <1>;
124 qcom,calibration-type = "absolute";
125 qcom,scale-function = <0>;
126 qcom,hw-settle-time = <0>;
127 qcom,fast-avg-setup = <0>;
128 };
129
130 chan@44 {
131 label = "usb_dm";
132 reg = <0x44>;
133 qcom,decimation = <0>;
134 qcom,pre-div-channel-scaling = <1>;
135 qcom,calibration-type = "absolute";
136 qcom,scale-function = <0>;
137 qcom,hw-settle-time = <0>;
138 qcom,fast-avg-setup = <0>;
139 };
140 };
141
142 pmi8950_gpios: gpios {
143 spmi-dev-container;
144 compatible = "qcom,qpnp-pin";
145 gpio-controller;
146 #gpio-cells = <2>;
147 #address-cells = <1>;
148 #size-cells = <1>;
149 label = "pmi8950-gpio";
150
151 gpio@c000 {
152 reg = <0xc000 0x100>;
153 qcom,pin-num = <1>;
154 status = "disabled";
155 };
156
157 gpio@c100 {
158 reg = <0xc100 0x100>;
159 qcom,pin-num = <2>;
160 status = "disabled";
161 };
162 };
163
164 pmi8950_mpps: mpps {
165 spmi-dev-container;
166 compatible = "qcom,qpnp-pin";
167 gpio-controller;
168 #gpio-cells = <2>;
169 #address-cells = <1>;
170 #size-cells = <1>;
171 label = "pmi8950-mpp";
172
173 mpp@a000 {
174 reg = <0xa000 0x100>;
175 qcom,pin-num = <1>;
176 status = "disabled";
177 };
178
179 mpp@a100 {
180 reg = <0xa100 0x100>;
181 qcom,pin-num = <2>;
182 status = "disabled";
183 };
184
185 mpp@a200 {
186 reg = <0xa200 0x100>;
187 qcom,pin-num = <3>;
188 status = "disabled";
189 };
190
191 mpp@a300 {
192 reg = <0xa300 0x100>;
193 qcom,pin-num = <4>;
194 status = "disabled";
195 };
196 };
197
198 pmi8950_charger: qcom,qpnp-smbcharger {
199 spmi-dev-container;
200 compatible = "qcom,qpnp-smbcharger";
201 #address-cells = <1>;
202 #size-cells = <1>;
203
204 qcom,iterm-ma = <100>;
205 qcom,float-voltage-mv = <4200>;
206 qcom,resume-delta-mv = <200>;
207 qcom,chg-inhibit-fg;
208 qcom,rparasitic-uohm = <100000>;
209 qcom,bms-psy-name = "bms";
210 qcom,thermal-mitigation = <1500 700 600 0>;
211 qcom,parallel-usb-min-current-ma = <1400>;
212 qcom,parallel-usb-9v-min-current-ma = <900>;
213 qcom,parallel-allowed-lowering-ma = <500>;
214 qcom,pmic-revid = <&pmi8950_revid>;
215 qcom,force-aicl-rerun;
216 qcom,aicl-rerun-period-s = <180>;
217 qcom,autoadjust-vfloat;
218
219 qcom,chgr@1000 {
220 reg = <0x1000 0x100>;
221 interrupts = <0x2 0x10 0x0>,
222 <0x2 0x10 0x1>,
223 <0x2 0x10 0x2>,
224 <0x2 0x10 0x3>,
225 <0x2 0x10 0x4>,
226 <0x2 0x10 0x5>,
227 <0x2 0x10 0x6>,
228 <0x2 0x10 0x7>;
229
230 interrupt-names = "chg-error",
231 "chg-inhibit",
232 "chg-prechg-sft",
233 "chg-complete-chg-sft",
234 "chg-p2f-thr",
235 "chg-rechg-thr",
236 "chg-taper-thr",
237 "chg-tcc-thr";
238 };
239
240 qcom,otg@1100 {
241 reg = <0x1100 0x100>;
242 interrupts = <0x2 0x11 0x0>,
243 <0x2 0x11 0x1>,
244 <0x2 0x11 0x3>;
245 interrupt-names = "otg-fail",
246 "otg-oc",
247 "usbid-change";
248 };
249
250 qcom,bat-if@1200 {
251 reg = <0x1200 0x100>;
252 interrupts = <0x2 0x12 0x0>,
253 <0x2 0x12 0x1>,
254 <0x2 0x12 0x2>,
255 <0x2 0x12 0x3>,
256 <0x2 0x12 0x4>,
257 <0x2 0x12 0x5>,
258 <0x2 0x12 0x6>,
259 <0x2 0x12 0x7>;
260
261 interrupt-names = "batt-hot",
262 "batt-warm",
263 "batt-cold",
264 "batt-cool",
265 "batt-ov",
266 "batt-low",
267 "batt-missing",
268 "batt-term-missing";
269 };
270
271 qcom,usb-chgpth@1300 {
272 reg = <0x1300 0x100>;
273 interrupts = <0x2 0x13 0x0>,
274 <0x2 0x13 0x1>,
275 <0x2 0x13 0x2>,
276 <0x2 0x13 0x5>;
277
278 interrupt-names = "usbin-uv",
279 "usbin-ov",
280 "usbin-src-det",
281 "aicl-done";
282 };
283
284 qcom,dc-chgpth@1400 {
285 reg = <0x1400 0x100>;
286 interrupts = <0x2 0x14 0x0>,
287 <0x2 0x14 0x1>;
288 interrupt-names = "dcin-uv",
289 "dcin-ov";
290 };
291
292 qcom,chgr-misc@1600 {
293 reg = <0x1600 0x100>;
294 interrupts = <0x2 0x16 0x0>,
295 <0x2 0x16 0x1>,
296 <0x2 0x16 0x2>,
297 <0x2 0x16 0x3>,
298 <0x2 0x16 0x4>,
299 <0x2 0x16 0x5>;
300
301 interrupt-names = "power-ok",
302 "temp-shutdown",
303 "wdog-timeout",
304 "flash-fail",
305 "otst2",
306 "otst3";
307 };
308
309 smbcharger_charger_otg: qcom,smbcharger-boost-otg {
310 regulator-name = "smbcharger_charger_otg";
311 };
312 };
313
314 pmi8950_fg: qcom,fg {
315 spmi-dev-container;
316 compatible = "qcom,qpnp-fg";
317 #address-cells = <1>;
318 #size-cells = <1>;
319 qcom,resume-soc = <95>;
320 status = "okay";
321 qcom,bcl-lm-threshold-ma = <127>;
322 qcom,bcl-mh-threshold-ma = <405>;
323 qcom,fg-iterm-ma = <150>;
324 qcom,fg-chg-iterm-ma = <100>;
325 qcom,pmic-revid = <&pmi8950_revid>;
326 qcom,fg-cutoff-voltage-mv = <3500>;
327 qcom,cycle-counter-en;
328 qcom,capacity-learning-on;
329
330 qcom,fg-soc@4000 {
331 status = "okay";
332 reg = <0x4000 0x100>;
333 interrupts = <0x2 0x40 0x0>,
334 <0x2 0x40 0x1>,
335 <0x2 0x40 0x2>,
336 <0x2 0x40 0x3>,
337 <0x2 0x40 0x4>,
338 <0x2 0x40 0x5>,
339 <0x2 0x40 0x6>;
340
341 interrupt-names = "high-soc",
342 "low-soc",
343 "full-soc",
344 "empty-soc",
345 "delta-soc",
346 "first-est-done",
347 "update-soc";
348 };
349
350 qcom,fg-batt@4100 {
351 reg = <0x4100 0x100>;
352 interrupts = <0x2 0x41 0x0>,
353 <0x2 0x41 0x1>,
354 <0x2 0x41 0x2>,
355 <0x2 0x41 0x3>,
356 <0x2 0x41 0x4>,
357 <0x2 0x41 0x5>,
358 <0x2 0x41 0x6>,
359 <0x2 0x41 0x7>;
360
361 interrupt-names = "soft-cold",
362 "soft-hot",
363 "vbatt-low",
364 "batt-ided",
365 "batt-id-req",
366 "batt-unknown",
367 "batt-missing",
368 "batt-match";
369 };
370
371 qcom,revid-tp-rev@1f1 {
372 reg = <0x1f1 0x1>;
373 };
374
375 qcom,fg-memif@4400 {
376 status = "okay";
377 reg = <0x4400 0x100>;
378 interrupts = <0x2 0x44 0x0>,
379 <0x2 0x44 0x2>;
380
381 interrupt-names = "mem-avail",
382 "data-rcvry-sug";
383 };
384 };
385
386 bcl@4200 {
387 compatible = "qcom,msm-bcl";
388 reg = <0x4200 0xFF 0x88E 0x2>;
389 reg-names = "fg_user_adc", "pon_spare";
390 interrupts = <0x2 0x42 0x0>,
391 <0x2 0x42 0x1>;
392 interrupt-names = "bcl-high-ibat-int",
393 "bcl-low-vbat-int";
394 qcom,vbat-scaling-factor = <39000>;
395 qcom,vbat-gain-numerator = <1>;
396 qcom,vbat-gain-denominator = <128>;
397 qcom,vbat-polling-delay-ms = <100>;
398 qcom,ibat-scaling-factor = <39000>;
399 qcom,ibat-gain-numerator = <1>;
400 qcom,ibat-gain-denominator = <128>;
401 qcom,ibat-offset-numerator = <1200>;
402 qcom,ibat-offset-denominator = <1>;
403 qcom,ibat-polling-delay-ms = <100>;
404 qcom,inhibit-derating-ua = <550000>;
405 };
406
407 qcom,leds@a100 {
408 compatible = "qcom,leds-qpnp";
409 reg = <0xa100 0x100>;
410 label = "mpp";
411 };
412 };
413
414 qcom,pmi8950@3 {
415 compatible ="qcom,spmi-pmic";
416 reg = <0x3 SPMI_USID>;
417 #address-cells = <1>;
418 #size-cells = <1>;
419
420 pmi8950_pwm: pwm@b000 {
421 status = "disabled";
422 compatible = "qcom,qpnp-pwm";
423 reg = <0xb000 0x100>;
424 reg-names = "qpnp-lpg-channel-base";
425 qcom,channel-id = <0>;
426 qcom,supported-sizes = <6>, <9>;
427 #pwm-cells = <2>;
428 };
429
430 labibb: qpnp-labibb-regulator {
431 status = "disabled";
432 spmi-dev-container;
433 compatible = "qcom,qpnp-labibb-regulator";
434 #address-cells = <1>;
435 #size-cells = <1>;
436 qcom,pmic-revid = <&pmi8950_revid>;
Kiran Gundad7e1d7c2017-11-29 17:07:25 +0530437 qcom,qpnp-labibb-mode = "lcd";
Kiran Gundac1c1de72017-09-21 15:05:09 +0530438
439 ibb_regulator: qcom,ibb@dc00 {
440 reg = <0xdc00 0x100>;
441 reg-names = "ibb_reg";
442 regulator-name = "ibb_reg";
443
444 regulator-min-microvolt = <4600000>;
445 regulator-max-microvolt = <6000000>;
446
447 qcom,qpnp-ibb-min-voltage = <1400000>;
448 qcom,qpnp-ibb-step-size = <100000>;
449 qcom,qpnp-ibb-slew-rate = <2000000>;
450 qcom,qpnp-ibb-use-default-voltage;
451 qcom,qpnp-ibb-init-voltage = <5500000>;
452 qcom,qpnp-ibb-init-amoled-voltage = <4000000>;
453 qcom,qpnp-ibb-init-lcd-voltage = <5500000>;
454
455 qcom,qpnp-ibb-soft-start = <1000>;
456
457 qcom,qpnp-ibb-discharge-resistor = <32>;
458 qcom,qpnp-ibb-lab-pwrup-delay = <8000>;
459 qcom,qpnp-ibb-lab-pwrdn-delay = <8000>;
460 qcom,qpnp-ibb-en-discharge;
461
462 qcom,qpnp-ibb-full-pull-down;
463 qcom,qpnp-ibb-pull-down-enable;
464 qcom,qpnp-ibb-switching-clock-frequency =
465 <1480>;
466 qcom,qpnp-ibb-limit-maximum-current = <1550>;
467 qcom,qpnp-ibb-debounce-cycle = <16>;
468 qcom,qpnp-ibb-limit-max-current-enable;
469 qcom,qpnp-ibb-ps-enable;
470 };
471
472 lab_regulator: qcom,lab@de00 {
473 reg = <0xde00 0x100>;
474 reg-names = "lab";
475 regulator-name = "lab_reg";
476
477 regulator-min-microvolt = <4600000>;
478 regulator-max-microvolt = <6000000>;
479
480 qcom,qpnp-lab-min-voltage = <4600000>;
481 qcom,qpnp-lab-step-size = <100000>;
482 qcom,qpnp-lab-slew-rate = <5000>;
483 qcom,qpnp-lab-use-default-voltage;
484 qcom,qpnp-lab-init-voltage = <5500000>;
485 qcom,qpnp-lab-init-amoled-voltage = <4600000>;
486 qcom,qpnp-lab-init-lcd-voltage = <5500000>;
487
488 qcom,qpnp-lab-soft-start = <800>;
489
490 qcom,qpnp-lab-full-pull-down;
491 qcom,qpnp-lab-pull-down-enable;
492 qcom,qpnp-lab-switching-clock-frequency =
493 <1600>;
494 qcom,qpnp-lab-limit-maximum-current = <800>;
495 qcom,qpnp-lab-limit-max-current-enable;
496 qcom,qpnp-lab-ps-threshold = <40>;
497 qcom,qpnp-lab-ps-enable;
498 qcom,qpnp-lab-nfet-size = <100>;
499 qcom,qpnp-lab-pfet-size = <100>;
500 qcom,qpnp-lab-max-precharge-time = <500>;
501 };
502
503 };
504
505 wled: qcom,leds@d800 {
506 compatible = "qcom,qpnp-wled";
507 reg = <0xd800 0x100>,
508 <0xd900 0x100>,
509 <0xdc00 0x100>,
510 <0xde00 0x100>;
511 reg-names = "qpnp-wled-ctrl-base",
512 "qpnp-wled-sink-base",
513 "qpnp-wled-ibb-base",
514 "qpnp-wled-lab-base";
515 interrupts = <0x3 0xd8 0x2>;
516 interrupt-names = "sc-irq";
517 status = "okay";
518 linux,name = "wled";
519 linux,default-trigger = "bkl-trigger";
520 qcom,fdbk-output = "auto";
521 qcom,vref-mv = <350>;
522 qcom,switch-freq-khz = <800>;
523 qcom,ovp-mv = <29500>;
524 qcom,ilim-ma = <980>;
525 qcom,boost-duty-ns = <26>;
526 qcom,mod-freq-khz = <9600>;
527 qcom,dim-mode = "hybrid";
528 qcom,dim-method = "linear";
529 qcom,hyb-thres = <625>;
530 qcom,sync-dly-us = <800>;
531 qcom,fs-curr-ua = <20000>;
532 qcom,led-strings-list = [00 01];
533 qcom,en-ext-pfet-sc-pro;
534 qcom,cons-sync-write-delay-us = <1000>;
535 };
536
537 flash_led: qcom,leds@d300 {
538 compatible = "qcom,qpnp-flash-led";
539 status = "okay";
540 reg = <0xd300 0x100>;
541 label = "flash";
542 qcom,headroom = <500>;
543 qcom,startup-dly = <128>;
544 qcom,clamp-curr = <200>;
545 qcom,pmic-charger-support;
546 qcom,self-check-enabled;
547 qcom,thermal-derate-enabled;
548 qcom,thermal-derate-threshold = <100>;
549 qcom,thermal-derate-rate = "5_PERCENT";
550 qcom,current-ramp-enabled;
551 qcom,ramp_up_step = "6P7_US";
552 qcom,ramp_dn_step = "6P7_US";
553 qcom,vph-pwr-droop-enabled;
554 qcom,vph-pwr-droop-threshold = <3000>;
555 qcom,vph-pwr-droop-debounce-time = <10>;
556 qcom,headroom-sense-ch0-enabled;
557 qcom,headroom-sense-ch1-enabled;
558 qcom,pmic-revid = <&pmi8950_revid>;
559
560 pmi8950_flash0: qcom,flash_0 {
561 label = "flash";
562 qcom,led-name = "led:flash_0";
563 qcom,default-led-trigger =
564 "flash0_trigger";
565 qcom,max-current = <1000>;
566 qcom,duration = <1280>;
567 qcom,id = <0>;
568 qcom,current = <625>;
569 };
570
571 pmi8950_flash1: qcom,flash_1 {
572 label = "flash";
573 qcom,led-name = "led:flash_1";
574 qcom,default-led-trigger =
575 "flash1_trigger";
576 qcom,max-current = <1000>;
577 qcom,duration = <1280>;
578 qcom,id = <1>;
579 qcom,current = <625>;
580 };
581
582 pmi8950_torch0: qcom,torch_0 {
583 label = "torch";
584 qcom,led-name = "led:torch_0";
585 qcom,default-led-trigger =
586 "torch0_trigger";
587 qcom,max-current = <200>;
588 qcom,id = <0>;
589 qcom,current = <120>;
590 };
591
592 pmi8950_torch1: qcom,torch_1 {
593 label = "torch";
594 qcom,led-name = "led:torch_1";
595 qcom,default-led-trigger =
596 "torch1_trigger";
597 qcom,max-current = <200>;
598 qcom,id = <1>;
599 qcom,current = <120>;
600 };
601
602 pmi8950_switch: qcom,switch {
603 label = "switch";
604 qcom,led-name = "led:switch";
605 qcom,default-led-trigger =
606 "switch_trigger";
607 qcom,max-current = <1000>;
608 qcom,duration = <1280>;
609 qcom,id = <2>;
610 qcom,current = <625>;
611 reg0 {
612 regulator-name = "pon_spare_reg";
613 };
614 };
615 };
616
617 pmi_haptic: qcom,haptic@c000 {
618 compatible = "qcom,qpnp-haptic";
619 reg = <0xc000 0x100>;
620 interrupts = <0x3 0xc0 0x0>,
621 <0x3 0xc0 0x1>;
622 interrupt-names = "sc-irq", "play-irq";
623 qcom,pmic-revid = <&pmi8950_revid>;
624 vcc_pon-supply = <&pon_perph_reg>;
625 qcom,play-mode = "direct";
626 qcom,wave-play-rate-us = <5263>;
627 qcom,actuator-type = "erm";
628 qcom,wave-shape = "square";
629 qcom,vmax-mv = <2000>;
630 qcom,ilim-ma = <800>;
631 qcom,sc-deb-cycles = <8>;
632 qcom,int-pwm-freq-khz = <505>;
633 qcom,en-brake;
634 qcom,brake-pattern = [03 03 00 00];
635 qcom,use-play-irq;
636 qcom,use-sc-irq;
637 qcom,wave-samples = [3e 3e 3e 3e 3e 3e 3e 3e];
638 qcom,wave-rep-cnt = <1>;
639 qcom,wave-samp-rep-cnt = <1>;
640 };
641 };
642};