Qualcomm QPNP Linear Charger The charger module supports the linear battery charger peripherals on Qualcomm PMIC chips. There are four different peripherals in the charger module. Each of these peripherals are implemented as subnodes. - qcom,chgr: Supports charging control and status reporting - qcom,bat-if: Battery status reporting such as presence and temperature reporting. - qcom,usb-chgpth: USB charge path detection and input current limiting configuration. - qcom,chg-misc: Miscellaneous features such as comparator override features etc. Parent node required properties: - qcom,vddmax-mv: Target voltage of battery in mV. - qcom,vddsafe-mv: Maximum Vdd voltage in mV. - qcom,vinmin-mv: Minimum input voltage in mV. - qcom,ibatsafe-ma: Safety battery current setting Parent node optional properties: - qcom,vbatweak-uv: Weak battery voltage threshold in uV, above which fast charging can start. The supported voltage range is from 3000000uV to 3581250uV with a step size of 18750000 uV. - qcom,charging-disabled: Set this property to disable charging by default. - qcom,use-default-batt-values: Set this flag to force reporting of fake battery. - qcom,warm-bat-decidegc: Warm battery temperature in decidegC. - qcom,cool-bat-decidegc: Cool battery temperature in decidegC. Note that if both warm and cool battery temperatures are set, the corresponding ibatmax and bat-mv properties are required to be set. - qcom,ibatmax-cool-ma: Maximum cool battery charge current. - qcom,ibatmax-warm-ma: Maximum warm battery charge current. - qcom,warm-bat-mv: Warm temperature battery target voltage. - qcom,cool-bat-mv: Cool temperature battery target voltage. - qcom,thermal-mitigation: Array of ibatmax values for different system thermal mitigation level. - qcom,tchg-mins: Maximum total software initialized charge time. - qcom,bpd-detection: Select a battery presence detection scheme by specifying either "bpd_thm" "bpd_id" or "bpd_thm_id". "bpd_thm" selects the temperature pin, "bpd_id" uses the id pin for battery presence detection, "bpd_thm_id" selects both. If the property is not set, the temperatue pin will be used. - qcom,btc-disabled: If flag is set battery hot and cold monitoring is disabled in hardware. This monitoring is turned on by default. - qcom,batt-hot-percentage: Specify a supported hot threshold percentage. Supported thresholds: 25% and 35%. If none is specified hardware defaults will be used. - qcom,batt-cold-percentage: Specify a supported cold threshold percentage. Supported thresholds: 70% and 80%. If none is specified hardwaredefaults will be used. - qcom,chg-adc_tm Corresponding ADC TM device's phandle to set recurring measurements and receive notification for batt_therm. -qcom,float-charge If specified enable float charging. - qcom,chg-vadc Corresponding VADC device's phandle. - qcom,charger-detect-eoc If specified charger hardware will detect end-of-charge. If not specified charger driver depends on BMSfor end-of-charge detection. - qcom,disable-vbatdet-based-recharge If specified disable VBATDET irq and charging can only be resumed if charger is re-inserted or SOC falls below resume SOC. This property should always be used along with the BMS property: "qcom,disable-suspend-on-usb". - qcom,use-external-charger If specifed the LBC module will be disabled and the driver will not register. It also enables BID for BPD and disables BTC. Declare this node only if you are using an external charger and not the PMIC internal LBC. - qcom,chgr-led-support There is a current sink device in linear charger module, it is used to control a led which can act as a charger led as well as a general notification led. - qcom,parallel-charger This is a bool property to indicate the LBC will operate as a secondary charger in the parallel mode. If this is enabled the charging operations will be controlled by the primary-charger. - qcom,collapsible-chgr-support If specifed the collapsible charger feature will be supported. LBC will disable VIN_MIN comparator and use chg_gone interrupt to detect charger removal. Sub node required structure: - A qcom,charger node must be a child of an SPMI node that has specified the spmi-dev-container property. Each subnode reflects a hardware peripheral which adds a unique set of features to the collective charging device. For example USB detection and the battery interface are each seperate peripherals and each should be their own subnode. Sub node required properties: - compatible: Must be "qcom,qpnp-linear-charger". - reg: Specifies the SPMI address and size for this peripheral. - interrupts: Specifies the interrupt associated with the peripheral. - interrupt-names: Specifies the interrupt names for the peripheral. Every available interrupt needs to have an associated name with it to indentify its purpose. The following lists each subnode and their corresponding required interrupt names: qcom,usb-chgpth: - usbin-valid The following interrupts are available: qcom,usb-chgpth: - usbin-valid: Indicates valid USB connection. - coarse-det-usb: Coarse detect interrupt triggers at low voltage on USB_IN. - chg-gone: Triggers on VCHG line. - overtemp: Triggers on over temperature condition qcom,chgr: - chg-done: Triggers on charge completion. - chg-failed: Notifies of charge failures. - fast-chg-on: Notifies of fast charging. - vbat-det-lo: Triggers on vbat-det-lo voltage. Example: pm8916-chg: qcom,charger { spmi-dev-container; compatible = "qcom,qpnp-linear-charger"; #address-cells = <1>; #size-cells = <1>; qcom,vddmax-mv = <4200>; qcom,vddsafe-mv = <4200>; qcom,vinmin-mv = <4200>; qcom,ibatsafe-ma = <1440>; qcom,vbatweak-uv = <3200>; qcom,thermal-mitigation = <1500 700 600 325>; qcom,cool-bat-decidegc = <100>; qcom,warm-bat-decidegc = <450>; qcom,cool-bat-mv = <4100>; qcom,ibatmax-warm-ma = <360>; qcom,ibatmax-cool-ma = <360>; qcom,warm-bat-mv = <4100>; qcom,batt-hot-percentage = <25>; qcom,batt-cold-percentage = <85>; qcom,tchg-mins = <152>; qcom,resume-soc = <99>; qcom,btc-disabled = <0>; qcom,chg-vadc = <&pm8916_vadc>; qcom,chgr@1000 { reg = <0x1000 0x100>; interrupts = <0x0 0x10 0x7>, <0x0 0x10 0x6>, <0x0 0x10 0x5>, <0x0 0x10 0x0>; interrupt-names = "chg-done", "chg-failed", "fast-chg-on", "vbat-det-lo"; }; qcom,bat-if@1200 { reg = <0x1200 0x100>; interrupts = <0x0 0x12 0x1>, <0x0 0x12 0x0>; interrupt-names = "bat-temp-ok", "batt-pres"; }; qcom,usb-chgpth@1300 { reg = <0x1300 0x100>; interrupts = <0 0x13 0x2>, <0 0x13 0x1>; interrupt-names = "chg-gone", "usbin-valid"; }; qcom,chg-misc@1600 { reg = <0x1600 0x100>; }; };