| /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 and |
| * only version 2 as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| */ |
| |
| #include <dt-bindings/interrupt-controller/irq.h> |
| #include <dt-bindings/spmi/spmi.h> |
| #include <dt-bindings/msm/power-on.h> |
| |
| &spmi_bus { |
| qcom,pmi632@2 { |
| compatible = "qcom,spmi-pmic"; |
| reg = <0x2 SPMI_USID>; |
| #address-cells = <2>; |
| #size-cells = <0>; |
| |
| pmi632_revid: qcom,revid@100 { |
| compatible = "qcom,qpnp-revid"; |
| reg = <0x100 0x100>; |
| }; |
| |
| pmi632_pon: qcom,power-on@800 { |
| compatible = "qcom,qpnp-power-on"; |
| reg = <0x800 0x100>; |
| qcom,secondary-pon-reset; |
| }; |
| |
| pmi632_vadc: vadc@3100 { |
| compatible = "qcom,qpnp-vadc-hc"; |
| reg = <0x3100 0x100>; |
| #address-cells = <1>; |
| #size-cells = <0>; |
| interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>; |
| interrupt-names = "eoc-int-en-set"; |
| qcom,adc-vdd-reference = <1875>; |
| qcom,adc-full-scale-code = <0x70e4>; |
| |
| chan@0 { |
| label = "ref_gnd"; |
| reg = <0>; |
| qcom,decimation = <2>; |
| qcom,pre-div-channel-scaling = <0>; |
| qcom,calibration-type = "absolute"; |
| qcom,scale-function = <0>; |
| qcom,hw-settle-time = <0>; |
| qcom,fast-avg-setup = <0>; |
| qcom,cal-val = <0>; |
| }; |
| |
| chan@1 { |
| label = "ref_1250v"; |
| reg = <1>; |
| qcom,decimation = <2>; |
| qcom,pre-div-channel-scaling = <0>; |
| qcom,calibration-type = "absolute"; |
| qcom,scale-function = <0>; |
| qcom,hw-settle-time = <0>; |
| qcom,fast-avg-setup = <0>; |
| qcom,cal-val = <0>; |
| }; |
| |
| chan@83 { |
| label = "vph_pwr"; |
| reg = <0x83>; |
| qcom,decimation = <2>; |
| qcom,pre-div-channel-scaling = <1>; |
| qcom,calibration-type = "absolute"; |
| qcom,scale-function = <0>; |
| qcom,hw-settle-time = <0>; |
| qcom,fast-avg-setup = <0>; |
| qcom,cal-val = <0>; |
| }; |
| |
| chan@84 { |
| label = "vbat_sns"; |
| reg = <0x84>; |
| qcom,decimation = <2>; |
| qcom,pre-div-channel-scaling = <1>; |
| qcom,calibration-type = "absolute"; |
| qcom,scale-function = <0>; |
| qcom,hw-settle-time = <0>; |
| qcom,fast-avg-setup = <0>; |
| qcom,cal-val = <0>; |
| }; |
| |
| chan@6 { |
| label = "die_temp"; |
| reg = <6>; |
| qcom,decimation = <2>; |
| qcom,pre-div-channel-scaling = <0>; |
| qcom,calibration-type = "absolute"; |
| qcom,scale-function = <19>; |
| qcom,hw-settle-time = <0>; |
| qcom,fast-avg-setup = <0>; |
| qcom,cal-val = <0>; |
| }; |
| |
| chan@7 { |
| label = "usb_in_i"; |
| reg = <7>; |
| qcom,decimation = <2>; |
| qcom,pre-div-channel-scaling = <0>; |
| qcom,calibration-type = "absolute"; |
| qcom,scale-function = <21>; |
| qcom,hw-settle-time = <0>; |
| qcom,fast-avg-setup = <0>; |
| qcom,cal-val = <0>; |
| }; |
| |
| chan@8 { |
| label = "usb_in_v"; |
| reg = <8>; |
| qcom,decimation = <2>; |
| qcom,pre-div-channel-scaling = <8>; |
| qcom,calibration-type = "absolute"; |
| qcom,scale-function = <0>; |
| qcom,hw-settle-time = <0>; |
| qcom,fast-avg-setup = <0>; |
| qcom,cal-val = <0>; |
| }; |
| |
| chan@9 { |
| label = "chg_temp"; |
| reg = <9>; |
| qcom,decimation = <2>; |
| qcom,pre-div-channel-scaling = <0>; |
| qcom,calibration-type = "absolute"; |
| qcom,scale-function = <18>; |
| qcom,hw-settle-time = <0>; |
| qcom,fast-avg-setup = <0>; |
| qcom,cal-val = <0>; |
| }; |
| |
| chan@4a { |
| label = "bat_therm"; |
| reg = <0x4a>; |
| qcom,decimation = <2>; |
| qcom,pre-div-channel-scaling = <0>; |
| qcom,calibration-type = "ratiometric"; |
| qcom,scale-function = <17>; |
| qcom,hw-settle-time = <0>; |
| qcom,fast-avg-setup = <0>; |
| qcom,cal-val = <0>; |
| }; |
| |
| chan@4b { |
| label = "bat_id"; |
| reg = <0x4b>; |
| qcom,decimation = <2>; |
| qcom,pre-div-channel-scaling = <0>; |
| qcom,calibration-type = "ratiometric"; |
| qcom,scale-function = <0>; |
| qcom,hw-settle-time = <0>; |
| qcom,fast-avg-setup = <0>; |
| qcom,cal-val = <0>; |
| }; |
| |
| chan@4c { |
| label = "xo_therm"; |
| reg = <0x4c>; |
| qcom,decimation = <2>; |
| qcom,pre-div-channel-scaling = <0>; |
| qcom,calibration-type = "ratiometric"; |
| qcom,scale-function = <4>; |
| qcom,hw-settle-time = <8>; |
| qcom,fast-avg-setup = <0>; |
| }; |
| |
| |
| chan@1e { |
| label = "mid_chg"; |
| reg = <0x1e>; |
| qcom,decimation = <2>; |
| qcom,pre-div-channel-scaling = <3>; |
| qcom,calibration-type = "absolute"; |
| qcom,scale-function = <0>; |
| qcom,hw-settle-time = <0>; |
| qcom,fast-avg-setup = <0>; |
| qcom,cal-val = <0>; |
| }; |
| |
| }; |
| |
| pmi632_tz: qcom,temp-alarm@2400 { |
| compatible = "qcom,qpnp-temp-alarm"; |
| reg = <0x2400 0x100>; |
| interrupts = <0x2 0x24 0x0 IRQ_TYPE_EDGE_RISING>; |
| label = "pmi632_tz"; |
| #thermal-sensor-cells = <0>; |
| }; |
| |
| pmi632_gpios: pinctrl@c000 { |
| compatible = "qcom,spmi-gpio"; |
| reg = <0xc000 0x800>; |
| interrupts = <0x2 0xc1 0 IRQ_TYPE_NONE>, |
| <0x2 0xc2 0 IRQ_TYPE_NONE>, |
| <0x2 0xc3 0 IRQ_TYPE_NONE>, |
| <0x2 0xc4 0 IRQ_TYPE_NONE>, |
| <0x2 0xc5 0 IRQ_TYPE_NONE>, |
| <0x2 0xc6 0 IRQ_TYPE_NONE>, |
| <0x2 0xc7 0 IRQ_TYPE_NONE>; |
| interrupt-names = "pmi632_gpio2", "pmi632_gpio3", |
| "pmi632_gpio4", "pmi632_gpio5", |
| "pmi632_gpio6", "pmi632_gpio7", |
| "pmi632_gpio8"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| qcom,gpios-disallowed = <1>; |
| }; |
| |
| pmi632_charger: qcom,qpnp-smb5 { |
| compatible = "qcom,qpnp-smb5"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| qcom,pmic-revid = <&pmi632_revid>; |
| dpdm-supply = <&qusb_phy>; |
| |
| qcom,chgr@1000 { |
| reg = <0x1000 0x100>; |
| interrupts = |
| <0x2 0x10 0x0 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x10 0x1 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x10 0x2 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x10 0x3 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x10 0x4 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x10 0x5 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x10 0x6 IRQ_TYPE_LEVEL_HIGH>, |
| <0x2 0x10 0x7 IRQ_TYPE_LEVEL_HIGH>; |
| |
| interrupt-names = "chgr-error", |
| "chg-state-change", |
| "step-chg-state-change", |
| "step-chg-soc-update-fail", |
| "step-chg-soc-update-req", |
| "fg-fvcal-qualified", |
| "vph-alarm", |
| "vph-drop-prechg"; |
| }; |
| |
| qcom,dcdc@1100 { |
| reg = <0x1100 0x100>; |
| interrupts = |
| <0x2 0x11 0x0 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x11 0x1 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x11 0x2 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x11 0x3 IRQ_TYPE_LEVEL_HIGH>, |
| <0x2 0x11 0x4 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x11 0x5 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x11 0x6 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x11 0x7 IRQ_TYPE_EDGE_BOTH>; |
| |
| interrupt-names = "otg-fail", |
| "otg-oc-disable-sw", |
| "otg-oc-hiccup", |
| "bsm-active", |
| "high-duty-cycle", |
| "input-current-limiting", |
| "concurrent-mode-disable", |
| "switcher-power-ok"; |
| }; |
| |
| qcom,batif@1200 { |
| reg = <0x1200 0x100>; |
| interrupts = |
| <0x2 0x12 0x0 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x12 0x1 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x12 0x2 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x12 0x3 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x12 0x4 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x12 0x5 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x12 0x6 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x12 0x7 IRQ_TYPE_LEVEL_HIGH>; |
| |
| interrupt-names = "bat-temp", |
| "all-chnl-conv-done", |
| "bat-ov", |
| "bat-low", |
| "bat-therm-or-id-missing", |
| "bat-terminal-missing", |
| "buck-oc", |
| "vph-ov"; |
| }; |
| |
| qcom,usb@1300 { |
| reg = <0x1300 0x100>; |
| interrupts = |
| <0x2 0x13 0x0 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x13 0x1 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x13 0x2 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x13 0x3 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x13 0x4 IRQ_TYPE_LEVEL_HIGH>, |
| <0x2 0x13 0x5 IRQ_TYPE_LEVEL_HIGH>, |
| <0x2 0x13 0x6 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x13 0x7 IRQ_TYPE_EDGE_RISING>; |
| |
| interrupt-names = "usbin-collapse", |
| "usbin-vashdn", |
| "usbin-uv", |
| "usbin-ov", |
| "usbin-plugin", |
| "usbin-revi-change", |
| "usbin-src-change", |
| "usbin-icl-change"; |
| }; |
| |
| qcom,typec@1500 { |
| reg = <0x1500 0x100>; |
| interrupts = |
| <0x2 0x15 0x0 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x15 0x1 IRQ_TYPE_LEVEL_HIGH>, |
| <0x2 0x15 0x2 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x15 0x3 IRQ_TYPE_LEVEL_HIGH>, |
| <0x2 0x15 0x4 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x15 0x5 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x15 0x6 IRQ_TYPE_LEVEL_HIGH>, |
| <0x2 0x15 0x7 IRQ_TYPE_EDGE_RISING>; |
| |
| interrupt-names = "typec-or-rid-detect-change", |
| "typec-vpd-detect", |
| "typec-cc-state-change", |
| "typec-vconn-oc", |
| "typec-vbus-change", |
| "typec-attach-detach", |
| "typec-legacy-cable-detect", |
| "typec-try-snk-src-detect"; |
| }; |
| |
| qcom,misc@1600 { |
| reg = <0x1600 0x100>; |
| interrupts = |
| <0x2 0x16 0x0 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x16 0x1 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x16 0x2 IRQ_TYPE_LEVEL_HIGH>, |
| <0x2 0x16 0x3 IRQ_TYPE_LEVEL_HIGH>, |
| <0x2 0x16 0x4 IRQ_TYPE_LEVEL_HIGH>, |
| <0x2 0x16 0x5 IRQ_TYPE_EDGE_RISING>, |
| <0x2 0x16 0x6 IRQ_TYPE_EDGE_FALLING>, |
| <0x2 0x16 0x7 IRQ_TYPE_EDGE_RISING>; |
| |
| interrupt-names = "wdog-snarl", |
| "wdog-bark", |
| "aicl-fail", |
| "aicl-done", |
| "smb-en", |
| "imp-trigger", |
| "temp-change", |
| "temp-change-smb"; |
| }; |
| |
| smb5_vbus: qcom,smb5-vbus { |
| regulator-name = "smb5-vbus"; |
| }; |
| }; |
| |
| pmi632_qg: qpnp,qg { |
| compatible = "qcom,qpnp-qg"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| qcom,vbatt-empty-mv = <3200>; |
| qcom,vbatt-low-mv = <3500>; |
| qcom,vbatt-cutoff-mv = <3400>; |
| qcom,qg-iterm-ma = <100>; |
| |
| qcom,qg-vadc = <&pmi632_vadc>; |
| qcom,pmic-revid = <&pmi632_revid>; |
| |
| qcom,qgauge@4800 { |
| status = "okay"; |
| reg = <0x4800 0x100>; |
| interrupts = <0x2 0x48 0x0 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x48 0x1 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x48 0x2 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x48 0x3 IRQ_TYPE_EDGE_BOTH>, |
| <0x2 0x48 0x4 IRQ_TYPE_EDGE_BOTH>; |
| interrupt-names = "qg-batt-missing", |
| "qg-vbat-low", |
| "qg-vbat-empty", |
| "qg-fifo-done", |
| "qg-good-ocv"; |
| }; |
| |
| qcom,qg-sdam@b100 { |
| status = "okay"; |
| reg = <0xb100 0x100>; |
| }; |
| }; |
| }; |
| |
| pmi632_3: qcom,pmi632@3 { |
| compatible ="qcom,spmi-pmic"; |
| reg = <0x3 SPMI_USID>; |
| #address-cells = <2>; |
| #size-cells = <0>; |
| |
| pmi632_vib: qcom,vibrator@5700 { |
| compatible = "qcom,qpnp-vibrator-ldo"; |
| reg = <0x5700 0x100>; |
| qcom,vib-ldo-volt-uv = <3000000>; |
| qcom,vib-overdrive-volt-uv = <3544000>; |
| }; |
| |
| pmi632_pwm: qcom,pwms@b300 { |
| compatible = "qcom,pwm-lpg"; |
| reg = <0xb300 0x500>; |
| reg-names = "lpg-base"; |
| #pwm-cells = <2>; |
| }; |
| |
| pmi632_rgb: qcom,leds@d000 { |
| compatible = "qcom,tri-led"; |
| reg = <0xd000 0x100>; |
| red { |
| label = "red"; |
| pwms = <&pmi632_pwm 0 1000000>; |
| led-sources = <0>; |
| }; |
| green { |
| label = "green"; |
| pwms = <&pmi632_pwm 1 1000000>; |
| led-sources = <1>; |
| }; |
| blue { |
| label = "blue"; |
| pwms = <&pmi632_pwm 2 1000000>; |
| led-sources = <2>; |
| }; |
| }; |
| |
| pmi632_lcdb: qpnp-lcdb@ec00 { |
| compatible = "qcom,qpnp-lcdb-regulator"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| reg = <0xec00 0x100>; |
| interrupts = <0x3 0xec 0x1 IRQ_TYPE_EDGE_RISING>; |
| interrupt-names = "sc-irq"; |
| |
| qcom,pmic-revid = <&pmi632_revid>; |
| |
| lcdb_ldo_vreg: ldo { |
| label = "ldo"; |
| regulator-name = "lcdb_ldo"; |
| regulator-min-microvolt = <4000000>; |
| regulator-max-microvolt = <6000000>; |
| }; |
| |
| lcdb_ncp_vreg: ncp { |
| label = "ncp"; |
| regulator-name = "lcdb_ncp"; |
| regulator-min-microvolt = <4000000>; |
| regulator-max-microvolt = <6000000>; |
| }; |
| }; |
| |
| flash_led: qcom,leds@d300 { |
| compatible = "qcom,qpnp-flash-led-v2"; |
| status = "okay"; |
| reg = <0xd300 0x100>; |
| label = "flash"; |
| interrupts = <0x3 0xd3 0x0 IRQ_TYPE_EDGE_RISING>, |
| <0x3 0xd3 0x3 IRQ_TYPE_EDGE_RISING>, |
| <0x3 0xd3 0x4 IRQ_TYPE_EDGE_RISING>; |
| interrupt-names = "led-fault-irq", |
| "all-ramp-down-done-irq", |
| "all-ramp-up-done-irq"; |
| qcom,short-circuit-det; |
| qcom,open-circuit-det; |
| qcom,vph-droop-det; |
| qcom,thermal-derate-en; |
| qcom,thermal-derate-current = <200 500 1000>; |
| qcom,isc-delay = <192>; |
| qcom,pmic-revid = <&pmi632_revid>; |
| |
| pmi632_flash0: qcom,flash_0 { |
| label = "flash"; |
| qcom,led-name = "led:flash_0"; |
| qcom,max-current = <1500>; |
| qcom,default-led-trigger = "flash0_trigger"; |
| qcom,id = <0>; |
| qcom,current-ma = <1000>; |
| qcom,duration-ms = <1280>; |
| qcom,ires-ua = <12500>; |
| qcom,hdrm-voltage-mv = <400>; |
| qcom,hdrm-vol-hi-lo-win-mv = <100>; |
| }; |
| |
| pmi632_flash1: qcom,flash_1 { |
| label = "flash"; |
| qcom,led-name = "led:flash_1"; |
| qcom,max-current = <1500>; |
| qcom,default-led-trigger = "flash1_trigger"; |
| qcom,id = <1>; |
| qcom,current-ma = <1000>; |
| qcom,duration-ms = <1280>; |
| qcom,ires-ua = <12500>; |
| qcom,hdrm-voltage-mv = <400>; |
| qcom,hdrm-vol-hi-lo-win-mv = <100>; |
| }; |
| |
| pmi632_torch0: qcom,torch_0 { |
| label = "torch"; |
| qcom,led-name = "led:torch_0"; |
| qcom,max-current = <500>; |
| qcom,default-led-trigger = "torch0_trigger"; |
| qcom,id = <0>; |
| qcom,current-ma = <300>; |
| qcom,ires-ua = <12500>; |
| qcom,hdrm-voltage-mv = <400>; |
| qcom,hdrm-vol-hi-lo-win-mv = <100>; |
| }; |
| |
| pmi632_torch1: qcom,torch_1 { |
| label = "torch"; |
| qcom,led-name = "led:torch_1"; |
| qcom,max-current = <500>; |
| qcom,default-led-trigger = "torch1_trigger"; |
| qcom,id = <1>; |
| qcom,current-ma = <300>; |
| qcom,ires-ua = <12500>; |
| qcom,hdrm-voltage-mv = <400>; |
| qcom,hdrm-vol-hi-lo-win-mv = <100>; |
| }; |
| |
| pmi632_switch0: qcom,led_switch_0 { |
| label = "switch"; |
| qcom,led-name = "led:switch_0"; |
| qcom,led-mask = <3>; |
| qcom,default-led-trigger = "switch0_trigger"; |
| }; |
| |
| pmi632_switch1: qcom,led_switch_1 { |
| label = "switch"; |
| qcom,led-name = "led:switch_1"; |
| qcom,led-mask = <2>; |
| qcom,default-led-trigger = "switch1_trigger"; |
| }; |
| |
| }; |
| |
| }; |
| }; |