#include #include #include #include #include #include #include &spmi_bus { #address-cells = <2>; #size-cells = <0>; interrupt-controller; #interrupt-cells = <4>; qcom,pm5100@0 { compatible = "qcom,spmi-pmic"; reg = <0 SPMI_USID>; #address-cells = <1>; #size-cells = <0>; pon_hlos@1300 { compatible = "qcom,qpnp-power-on"; reg = <0x1300>; interrupts = <0x0 0x13 0x7 IRQ_TYPE_EDGE_BOTH>, <0x0 0x13 0x6 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "kpdpwr", "resin"; qcom,pon_1 { qcom,pon-type = ; linux,code = ; }; qcom,pon_2 { qcom,pon-type = ; linux,code = ; }; }; pm5100_charger: qcom,qpnp-smblite { compatible = "qcom,qpnp-pm5100-smblite"; #address-cells = <1>; #size-cells = <1>; #cooling-cells = <2>; qcom,thermal-mitigation = <1500000 1400000 1300000 1200000 1100000 1000000 900000 800000 700000 600000 500000 400000 300000 200000 100000>; qcom,chgr@2600 { reg = <0x1000>; interrupts = <0x0 0x26 0x1 IRQ_TYPE_EDGE_RISING>, <0x0 0x26 0x0 IRQ_TYPE_EDGE_RISING>, <0x0 0x26 0x4 IRQ_TYPE_EDGE_RISING>, <0x0 0x26 0x7 IRQ_TYPE_EDGE_RISING>; interrupt-names = "chgr-error", "chg-state-change", "buck-oc", "vph-ov"; }; qcom,dcdc@2700 { reg = <0x2700>; interrupts = <0x0 0x27 0x0 IRQ_TYPE_EDGE_BOTH>, <0x0 0x27 0x4 IRQ_TYPE_EDGE_RISING>, <0x0 0x27 0x6 IRQ_TYPE_EDGE_RISING>, <0x0 0x27 0x7 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "boost-mode-sw-en", "skip-mode", "input-current-limiting", "switcher-power-ok"; }; qcom,batif@2800 { reg = <0x2800>; interrupts = <0x0 0x28 0x0 IRQ_TYPE_EDGE_BOTH>, <0x0 0x28 0x2 IRQ_TYPE_EDGE_BOTH>, <0x0 0x28 0x3 IRQ_TYPE_EDGE_BOTH>, <0x0 0x28 0x4 IRQ_TYPE_EDGE_RISING>; interrupt-names = "bat-temp", "bat-low", "bat-ov", "bsm-active"; }; qcom,usb@2900 { reg = <0x2900>; interrupts = <0x0 0x29 0x0 IRQ_TYPE_EDGE_BOTH>, <0x0 0x29 0x1 IRQ_TYPE_EDGE_BOTH>, <0x0 0x29 0x2 IRQ_TYPE_EDGE_BOTH>, <0x0 0x29 0x3 IRQ_TYPE_EDGE_BOTH>, <0x0 0x29 0x4 IRQ_TYPE_EDGE_RISING>, <0x0 0x29 0x6 IRQ_TYPE_EDGE_RISING>, <0x0 0x29 0x7 IRQ_TYPE_EDGE_RISING>; interrupt-names = "usbin-plugin", "usbin-collapse", "usbin-uv", "usbin-ov", "usbin-gtvt", "usbin-icl-change", "usbin-src-change"; }; qcom,misc@2c00 { reg = <0x2c00>; interrupts = <0x0 0x2c 0x0 IRQ_TYPE_EDGE_RISING>, <0x0 0x2c 0x1 IRQ_TYPE_EDGE_RISING>, <0x0 0x2c 0x2 IRQ_TYPE_EDGE_RISING>, <0x0 0x2c 0x3 IRQ_TYPE_EDGE_RISING>, <0x0 0x2c 0x4 IRQ_TYPE_EDGE_RISING>, <0x0 0x2c 0x5 IRQ_TYPE_EDGE_RISING>, <0x0 0x2c 0x6 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "wdog-snarl", "wdog-bark", "aicl-fail", "aicl-done", "imp-trigger", "all-chnl-cond-done", "temp-change"; }; }; pm5100_tz: qcom,temp-alarm@a00 { compatible = "qcom,spmi-temp-alarm"; reg = <0xa00>; interrupts = <0x0 0xa 0x0 IRQ_TYPE_EDGE_BOTH>; io-channels = <&pm5100_adc PM5100_ADC5_GEN3_DIE_TEMP>; io-channel-names = "thermal"; #thermal-sensor-cells = <0>; }; pm5100_adc: vadc@8000 { compatible = "qcom,spmi-adc5-gen3"; reg = <0x8000>; reg-names = "adc5-gen3-base"; qcom,debug-base = <0x8300>; #address-cells = <1>; #size-cells = <0>; interrupts = <0x0 0x80 0x1 IRQ_TYPE_EDGE_RISING>; interrupt-names = "adc-sdam0"; #io-channel-cells = <1>; status = "disabled"; pm5100_ref_gnd { reg = ; label = "pm5100_ref_gnd"; qcom,pre-scaling = <1 1>; }; pm5100_vref_1p25 { reg = ; label = "pm5100_vref_1p25"; qcom,pre-scaling = <1 1>; }; pm5100_die_temp { reg = ; label = "pm5100_die_temp"; qcom,pre-scaling = <1 1>; }; pm5100_xo_therm { reg = ; label = "pm5100_xo_therm"; qcom,ratiometric; qcom,hw-settle-time = <700>; qcom,pre-scaling = <1 1>; }; pm5100_usb_in_i_uv { reg = ; label = "pm5100_usb_in_i_uv"; qcom,pre-scaling = <1 1>; qcom,scale-fn-type = ; }; pm5100_chg_temp { reg = ; label = "pm5100_chg_temp"; qcom,pre-scaling = <1 1>; qcom,scale-fn-type = ; }; pm5100_usb_in_v { reg = ; label = "pm5100_usb_in_v"; qcom,pre-scaling = <1 16>; }; pm5100_boost_out_v { reg = ; label = "pm5100_boost_out_v"; qcom,pre-scaling = <1 6>; }; pm5100_bat_therm { reg = ; label = "pm5100_bat_therm"; qcom,ratiometric; qcom,hw-settle-time = <200>; qcom,pre-scaling = <1 1>; qcom,scale-fn-type = ; }; pm5100_bat_id { reg = ; label = "pm5100_bat_id"; qcom,ratiometric; qcom,hw-settle-time = <200>; qcom,pre-scaling = <1 1>; qcom,scale-fn-type = ; }; pm5100_vph_pwr { reg = ; label = "pm5100_vph_pwr"; qcom,pre-scaling = <1 3>; }; pm5100_vbat_sns { reg = ; label = "pm5100_vbat_sns"; qcom,pre-scaling = <1 3>; }; }; pm5100_gpios: pinctrl@8800 { compatible = "qcom,pm5100-gpio"; reg = <0x8800>; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-cells = <2>; }; pm5100_rtc: rtc@6400 { compatible = "qcom,pm5100-rtc"; reg = <0x6400>, <0x6500>; reg-names = "rtc", "alarm"; interrupts = <0x0 0x65 0x1 IRQ_TYPE_EDGE_RISING>; }; pm5100_cdc: qcom,pm5100-cdc { compatible = "qcom,pm5100-spmi"; }; pm5100_bcl: bcl@4700 { compatible = "qcom,bcl-v5"; reg = <0x4700 0x100>; interrupts = <0x0 0x47 0x0 IRQ_TYPE_NONE>, <0x0 0x47 0x1 IRQ_TYPE_NONE>, <0x0 0x47 0x2 IRQ_TYPE_NONE>; interrupt-names = "bcl-lvl0", "bcl-lvl1", "bcl-lvl2"; qcom,pmic7-threshold; qcom,ibat-ccm-hw-support; #thermal-sensor-cells = <1>; }; bcl_soc:bcl-soc { compatible = "qcom,msm-bcl-soc"; #thermal-sensor-cells = <0>; }; bcl_off: bcl-off@4700 { compatible = "qcom,bcl-off"; reg = <0x4700 0x100>; #cooling-cells = <2>; }; pm5100_sdam_2: sdam@7100 { compatible = "qcom,spmi-sdam"; reg = <0x7100>; #address-cells = <1>; #size-cells = <1>; restart_reason: restart@48 { reg = <0x48 0x1>; bits = <1 7>; }; charger_debug_mask: debug@94 { reg = <0x94 0x1>; }; qbg_debug_mask_low: debug@96 { reg = <0x96 0x1>; }; qbg_debug_mask_high: debug@97 { reg = <0x97 0x1>; }; }; pm5100_sdam_5: sdam@7400 { compatible = "qcom,spmi-sdam"; reg = <0x7400>; }; pm5100_sdam_7: sdam@7600 { compatible = "qcom,spmi-sdam"; reg = <0x7600>; }; pm5100_sdam_8: sdam@7700 { compatible = "qcom,spmi-sdam"; reg = <0x7700>; charger_soc: charger_soc@47 { reg = <0x65 0x2>; }; }; pm5100_sdam_22: sdam@8500 { compatible = "qcom,spmi-sdam"; reg = <0x8500>; /* GPS demod state */ skip_esr_state: demod@46 { reg = <0x46 0x1>; }; }; pm5100_sdam_23: sdam@8600 { compatible = "qcom,spmi-sdam"; reg = <0x8600>; }; pm5100_qbg: qpnp,qbg@4f00 { status = "disabled"; compatible = "qcom,qbg"; #address-cells = <1>; reg = <0x4f00>; interrupt-names = "qbg-sdam", "qbg-vbatt-empty"; interrupts = <0x0 0x76 0x1 IRQ_TYPE_EDGE_RISING>, <0x0 0x4F 0x1 IRQ_TYPE_EDGE_RISING>; qcom,num-data-sdams = <5>; qcom,sdam-base = <0x7600>; qcom,adc-cmn-wb-base = <0x3000>; qcom,adc-cmn-base = <0x3900>; }; pm5100_haptics: qcom,hv-haptics@f000 { compatible = "qcom,pm5100-haptics"; reg = <0xf000>, <0xf100>; interrupts = <0x0 0xf0 0x1 IRQ_TYPE_EDGE_RISING>; interrupt-names = "fifo-empty"; qcom,vmax-mv = <2500>; qcom,brake-mode = ; qcom,brake-pattern = /bits/ 8 <0xff 0x3f 0x1f>; qcom,lra-period-us = <4167>; qcom,drv-sig-shape = ; qcom,brake-sig-shape = ; status = "disabled"; effect_0 { /* CLICK */ qcom,effect-id = <0>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x01f S_PERIOD_T_LRA 0>, <0x03f S_PERIOD_T_LRA 0>, <0x05f S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>, <0x17f S_PERIOD_T_LRA 0>, <0x15f S_PERIOD_T_LRA 0>, <0x13f S_PERIOD_T_LRA 0>, <0x11f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-pattern-preload; qcom,wf-auto-res-disable; }; effect_1 { /* DOUBLE_CLICK */ qcom,effect-id = <1>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x01f S_PERIOD_T_LRA 0>, <0x03f S_PERIOD_T_LRA 0>, <0x05f S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>, <0x17f S_PERIOD_T_LRA 0>, <0x15f S_PERIOD_T_LRA 0>, <0x13f S_PERIOD_T_LRA 0>, <0x11f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; effect_2 { /* TICK */ qcom,effect-id = <2>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x01f S_PERIOD_T_LRA 0>, <0x03f S_PERIOD_T_LRA 0>, <0x05f S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>, <0x17f S_PERIOD_T_LRA 0>, <0x15f S_PERIOD_T_LRA 0>, <0x13f S_PERIOD_T_LRA 0>, <0x11f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; effect_3 { /* THUD */ qcom,effect-id = <3>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x01f S_PERIOD_T_LRA 0>, <0x03f S_PERIOD_T_LRA 0>, <0x05f S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>, <0x17f S_PERIOD_T_LRA 0>, <0x15f S_PERIOD_T_LRA 0>, <0x13f S_PERIOD_T_LRA 0>, <0x11f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; effect_4 { /* POP */ qcom,effect-id = <4>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x01f S_PERIOD_T_LRA 0>, <0x03f S_PERIOD_T_LRA 0>, <0x05f S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>, <0x17f S_PERIOD_T_LRA 0>, <0x15f S_PERIOD_T_LRA 0>, <0x13f S_PERIOD_T_LRA 0>, <0x11f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; effect_5 { /* HEAVY CLICK */ qcom,effect-id = <5>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x01f S_PERIOD_T_LRA 0>, <0x03f S_PERIOD_T_LRA 0>, <0x05f S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>, <0x17f S_PERIOD_T_LRA 0>, <0x15f S_PERIOD_T_LRA 0>, <0x13f S_PERIOD_T_LRA 0>, <0x11f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; primitive_0 { /* NOOP */ qcom,primitive-id = <0>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0 S_PERIOD_T_LRA 0>, <0 S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; primitive_1 { /* CLICK */ qcom,primitive-id = <1>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x0ff S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; primitive_2 { /* THUD */ qcom,primitive-id = <2>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x0ff S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; primitive_3 { /* SPIN */ qcom,primitive-id = <3>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x0ff S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; primitive_4 { /* QUICK_RISE */ qcom,primitive-id = <4>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x0ff S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; primitive_5 { /* SLOW_RISE */ qcom,primitive-id = <5>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x0ff S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; primitive_6 { /* QUICK_FALL */ qcom,primitive-id = <6>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x0ff S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; primitive_7 { /* LIGHT_TICK */ qcom,primitive-id = <7>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x0ff S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; primitive_8 { /* LOW_TICK */ qcom,primitive-id = <8>; qcom,wf-vmax-mv = <4800>; qcom,wf-pattern-data = <0x0ff S_PERIOD_T_LRA 0>, <0x07f S_PERIOD_T_LRA 0>; qcom,wf-pattern-period-us = <4167>; qcom,wf-brake-pattern = /bits/ 8 <0x0 0x0 0x0>; qcom,wf-auto-res-disable; }; }; }; }; &thermal_zones { pm5100-tz { polling-delay-passive = <100>; polling-delay = <0>; thermal-governor = "step_wise"; thermal-sensors = <&pm5100_tz>; trips { pm5100_trip0: trip0 { temperature = <95000>; hysteresis = <0>; type = "passive"; }; pm5100_trip1: trip1 { temperature = <115000>; hysteresis = <0>; type = "critical"; }; pm5100_trip2: trip2 { temperature = <145000>; hysteresis = <0>; type = "critical"; }; }; }; pm5100-ibat-lvl0 { polling-delay-passive = <0>; polling-delay = <0>; thermal-sensors = <&pm5100_bcl 0>; trips { ibat_lvl0:ibat-lvl0 { temperature = <1500>; hysteresis = <200>; type = "passive"; }; }; }; pm5100-ibat-lvl1 { polling-delay-passive = <0>; polling-delay = <0>; thermal-sensors = <&pm5100_bcl 1>; trips { ibat_lvl1:ibat-lvl1 { temperature = <1900>; hysteresis = <200>; type = "passive"; }; }; }; pm5100-bcl-lvl0 { polling-delay-passive = <100>; polling-delay = <0>; thermal-sensors = <&pm5100_bcl 5>; trips { thermal-engine-trip { temperature = <100>; hysteresis = <0>; type = "passive"; }; bcl_lvl0: bcl-lvl0 { temperature = <1>; hysteresis = <1>; type = "passive"; }; }; }; pm5100-bcl-lvl1 { polling-delay-passive = <100>; polling-delay = <0>; thermal-sensors = <&pm5100_bcl 6>; trips { thermal-engine-trip { temperature = <100>; hysteresis = <0>; type = "passive"; }; bcl_lvl1: bcl-lvl1 { temperature = <1>; hysteresis = <1>; type = "passive"; }; }; }; pm5100-bcl-lvl2 { polling-delay-passive = <100>; polling-delay = <0>; thermal-sensors = <&pm5100_bcl 7>; trips { thermal-engine-trip { temperature = <100>; hysteresis = <0>; type = "passive"; }; bcl_lvl2: bcl-lvl2 { temperature = <1>; hysteresis = <1>; type = "passive"; }; }; }; socd { polling-delay-passive = <100>; polling-delay = <0>; thermal-sensors = <&bcl_soc>; trips { thermal-engine-trip { temperature = <100>; hysteresis = <0>; type = "passive"; }; socd_trip:socd-trip { temperature = <90>; hysteresis = <0>; type = "passive"; }; }; }; };