QPNP SMB Battery Charger QPNP SMB Charger is a single-cell switching mode battery charger. It can charge the battery and power the system via the USB and AC adapter input. The QPNP SMB Charger interfaces via the SPMI bus. There are six different peripherals adding the following functionality. Each of these peripherals are implemented as subnodes in the example at the end of this file. - qcom,chgr: Supports charging control and status reporting. - qcom,bat-if: Battery status reporting such as presence, temperature reporting and voltage collapse protection. - qcom,usb-chgpth: USB charge path detection and input current limiting configuration. - qcom,dc-chgpth: DC charge path detection and input current limiting configuration. - qcom,chg-misc: Miscellaneous features such as watchdog timers and SYSOK pin control - qcom,chg-otg: OTG configuration control. Parent node required properties: - compatible: Must be "qcom,qpnp-smbcharger" - spmi-dev-container: Must be included in the parent node to set up the spmi sub node devices. - #address-cells: Must be <1> - #size-cells: Must be <1> - qcom,pmic-revid: Should specify the phandle of PMIC revid module. This is used to identify the PMIC subtype. Sub node required properties: - reg: The SPMI address 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,chgr: - chg-tcc-thr: Triggers on charge completion. - chg-taper-thr: Triggers on the taper charge transtion. - chg-inhibit: Notifies on battery voltage being too high to resume charging. - chg-p2f-thr: Triggers on transitioning from precharge to fastcharge. - chg-rechg-thr: Triggers on battery voltage falling below the resume threshold. qcom,bat-if: - batt-hot: Triggers on battery temperature hitting the hot threshold. Charging stops. - batt-warm: Triggers on battery temperature hitting the warm threshold. Charging current is reduced. - batt-cool: Triggers on battery temperature hitting the cool threshold. Charging current is reduced - batt-cold: Triggers on battery temperature hitting the cold threshold. Charging stops. - batt-missing: Battery missing status interrupt. - batt-low: Triggers on battery voltage falling across a low threshold. qcom,usb-chgpth: - usbin-uv: USB input voltage falls below a valid threshold. - usbin-src-det: USB automatic source detection finishes. qcom,dc-chgpth: - dcin-uv: DC input voltage falls below a valid threshold. qcom,chgr-misc: - wdog-timeout-mins: Charger watchdog timer interrupt. - temp-shutdown: Triggers when charger goes overtemp and causes a shutdown. - power-ok: Triggers when the charger switcher turns on or off. Regulator Subnodes: - qcom,smbcharger-boost-otg A subnode for a regulator device that turns on the charger boost for OTG operation. - qcom,smbcharger-external-otg A subnode for a regulator device that switches off charging and the USB input charge path in order to allow an external regulator to operate. This can be used in place of the qcom,smbcharger-boost-otg if an external boost is available. Regulator Sub node required properties: - regulator-name A name string for the regulator in question Optional Properties: - qcom,battery-psy-name The name of the main battery power supply that the charger will register. Failing to define this property will default the name to "battery". - qcom,bms-psy-name The psy name to use for reporting battery capacity. If left unspecified the capacity uses a preprogrammed default value of 50. - qcom,float-voltage-mv Float Voltage in mV - the maximum voltage up to which the battery is charged. Supported range 3600mV to 4500mV - qcom,float-voltage-comp Specifies the JEITA float voltage compensation. Value ranges from 0 to 63. - qcom,fastchg-current-ma Specifies the fast charge current in mA. Supported range is from 300mA to 3000mA. - qcom,fastchg-current-comp Specifies the fast charge current compensation in mA. Supported values are 250, 700, 900 and 1200mA. - qcom,charging-timeout-mins Maximum duration in minutes that a single charge cycle may last. Supported values are: 0, 192, 384, 768, and 1536. A value of 0 means that no charge cycle timeout is used and charging can continue indefinitely. - qcom,precharging-timeout-mins Maximum duration in minutes that a single precharge cycle may last. Supported values are: 0, 24, 48, 96, 192. A value of 0 means that no precharge cycle timeout is used and charging can continue indefinitely. Note that the qcom,charging-timeout-mins property must be specified in order for this to take effect. - qcom,dc-psy-type The type of charger connected to the DC path. Can be "Mains", "Wireless" or "Wipower" - qcom,dc-psy-ma The current in mA dc path can support. Must be specified if dc-psy-type is specified. Valid range 300mA to 2000mA. - qcom,dcin-vadc The phandle to pmi8994 voltage adc. The ADC is used to get notifications when the DCIN voltage crosses a programmed min/max threshold. This is used to make configurations for optimized power draw for Wipower. - qcom,wipower-div2-ilim-map - qcom,wipower-pt-ilim-map - qcom,wipower-default-ilim-map Array of 5 elements to indicate the voltage ranges and their corresponding current limits. The 5 elements with index [0..4] are: [0] => voltage_low in uV [1] => voltage_high in uV [2] => current limit for pass through in mA [3] => current limit for div2 mode dcin low voltage in mA [4] => current limit for div2 mode dcin high voltage in mA The div2 and pt tables indicate the current limits to use when Wipower is operating in divide_by_2 mode and pass through mode respectively. The default table is used when the voltage ranges are beyond the ones specified in the mapping table. Note that if dcin-vadc or any of these mapping tables are not specified, dynamic dcin input is disabled. - qcom,charging-disabled Set this if charging should be disabled in the build by default. - qcom,resume-delta-mv Specifies the minimum voltage drop in millivolts below the float voltage that is required in order to initiate a new charging cycle. Supported values are: 50, 100, 200 and 300mV. - qcom,chg-inhibit-en Boolean that indicates whether the charge inhibit feature needs to be enabled. If this is not set, charge inhibit feature is disabled by default. - qcom,chg-inhibit-fg Indicates if the recharge threshold source has to be Fuel gauge ADC. If this is not set, it will be analog sensor by default. - qcom,bmd-algo-disabled Indicates if the battery missing detection algorithm is disabled. If this node is present SMB uses the THERM pin for battery missing detection. - qcom,charge-unknown-battery Boolean that indicates whether an unknown battery without a matching profile will be charged. If this is not set, if the fuel gauge does not recognize the battery based on its battery ID, the charger will not start charging. - qcom,bmd-pin-src A string that indicates the source pin for the battery missind detection. This can be either: - "bpd_none" battery is considered always present - "bpd_id" battery id pin is used - "bpd_thm" battery therm pin is used - "bpd_thm_id" both pins are used (battery is considered missing if either pin is floating). - qcom,iterm-ma Specifies the termination current to indicate end-of-charge. Possible values in mA: 50, 100, 150, 200, 250, 300, 500, 600. - qcom,iterm-disabled Disables the termination current feature. This is a boolean property. - otg-parent-supply A phandle to an external boost regulator for OTG if it exists. - qcom,thermal-mitigation: Array of input current limit values for different system thermal mitigation levels. This should be a flat array that denotates the maximum charge current in mA for each thermal level. - qcom,rparasitics-uohm: The parasitic resistance of the board following the line from the battery connectors through vph_power. This is used to calculate maximum available current of the battery. - qcom,vled-max-uv: The maximum input voltage of the flash leds. This is used to calculate maximum available current of the battery. - qcom,autoadjust-vfloat A boolean property that when set, makes the driver automatically readjust vfloat using the fuel gauge ADC readings to make charging more accurate. - qcom,jeita-temp-hard-limit property when present will enable or disable the jeita temperature hard limit based on the value 1 or 0. Specify 0 if the jeita temp hard limit needs to be disabled. If it is not present, jeita temperature hard limit will be based on what the bootloader had set earlier. - qcom,low-volt-dcin: A boolean property which upon set will enable the AICL deglitch configuration dynamically. This needs to be set if the DCIN supply is going to be less than or equal to 5V. - qcom,force-aicl-rerun: A boolean property which upon set will enable the AICL rerun by default along with the deglitch time configured to long interval (20 ms). Also, specifying this property will not adjust the AICL deglitch time dynamically for handling the battery over-voltage oscillations when the charger is headroom limited. - qcom,aicl-rerun-period-s If force-aicl-rerun is on, this property dictates how often aicl is reran in seconds. Possible values are SCHG - 45, 90, 180, and 360. SCHG_LITE - 3 (2.8), 6 (5.6), 11 (11.3), 23 (22.5), 45, 90, 180 and 360 - qcom,ibat-ocp-threshold-ua Maximum current before the battery will trigger overcurrent protection. Use the recommended battery pack value minus some margin. - qcom,soft-vfloat-comp-disabled Set this property when the battery is powered via external source and could go above the float voltage. - qcom,parallel-usb-min-current-ma Minimum current drawn by the primary charger before enabling the parallel charger if one exists. Do not define this property if no parallel chargers exist. - qcom,parallel-usb-9v-min-current-ma Minimum current drawn by the primary charger before enabling the parallel charger if one exists. This property applies only for 9V chargers. - qcom,parallel-allowed-lowering-ma Acceptable current drop from the initial limit to keep parallel charger activated. If the charger current reduces beyond this threshold parallel charger is disabled. Must be specified if parallel charger is used. - qcom,parallel-main-chg-fcc-percent Percentage of the fast charge current allotted to the main charger when parallel charging is enabled and operational. If this property is not defined, the driver defaults to a 50%/50% split between the main and parallel charger. - qcom,parallel-main-chg-icl-percent Percentage of the input current allotted to the main charger when parallel charging is enabled and operational. If this property is not defined, the driver defaults to a 60%/40% split between the main and parallel charger. - qcom,battery-data Points to the phandle of node which contains the battery-profiles supported by the charger/FG. - qcom,chg-led-support A bool property to support the charger led feature. - qcom,chg-led-sw-controls A bool property to allow the software to control the charger led without a valid charger. - qcom,skip-usb-notification A boolean property to be used when usb gets present and type from other means. Especially true on liquid hardware, where usb presence is detected based on GPIO. - qcom,skip-usb-suspend-for-fake-battery A boolean property to skip suspending USB path for fake battery. - qcom,vchg_sns-vadc Phandle of the VADC node. - qcom,vchg-adc-channel-id The ADC channel to which the VCHG is routed. - qcom,external-typec A boolean property to be used when an external USB TypeC module is used with charger. - qcom,typec-psy-name The psy name to use for external typec. If 'qcom,external-typec' is present then this is a required property. - qcom,otg-pinctrl: A boolean property to be used when OTG enable control is configured in pin control mode. Example: qcom,qpnp-smbcharger { spmi-dev-container; compatible = "qcom,qpnp-smbcharger"; #address-cells = <1>; #size-cells = <1>; qcom,iterm-ma = <100>; qcom,float-voltage-mv = <4200>; qcom,resume-delta-mv = <100>; qcom,bmd-pin-src = "bpd_thm_id"; qcom,dc-psy-type = "Mains"; qcom,dc-psy-ma = <1500>; qcom,bms-psy-name = "bms"; qcom,battery-psy-name = "battery"; qcom,thermal-mitigation = <1500 700 600 325>; qcom,vchg_sns-vadc = <&pmi8950_vadc>; qcom,vchg-adc-channel-id = <3>; qcom,chgr@1000 { reg = <0x1000 0x100>; interrupts = <0x2 0x10 0x0>, <0x2 0x10 0x1>, <0x2 0x10 0x2>, <0x2 0x10 0x3>, <0x2 0x10 0x4>, <0x2 0x10 0x5>, <0x2 0x10 0x6>, <0x2 0x10 0x7>; interrupt-names = "chg-error", "chg-inhibit", "chg-prechg-sft", "chg-complete-chg-sft", "chg-p2f-thr", "chg-rechg-thr", "chg-taper-thr", "chg-tcc-thr"; }; qcom,otg@1100 { reg = <0x1100 0x100>; }; qcom,bat-if@1200 { reg = <0x1200 0x100>; interrupts = <0x2 0x12 0x0>, <0x2 0x12 0x1>, <0x2 0x12 0x2>, <0x2 0x12 0x3>, <0x2 0x12 0x4>, <0x2 0x12 0x5>, <0x2 0x12 0x6>, <0x2 0x12 0x7>; interrupt-names = "batt-hot", "batt-warm", "batt-cold", "batt-cool", "batt-ov", "batt-low", "batt-missing", "batt-term-missing"; }; qcom,usb-chgpth@1300 { reg = <0x1300 0x100>; interrupts = <0x2 0x13 0x0>, <0x2 0x13 0x1>, <0x2 0x13 0x2>, <0x2 0x13 0x3>, <0x2 0x13 0x4>, <0x2 0x13 0x5>, <0x2 0x13 0x6>; interrupt-names = "usbin-uv", "usbin-ov", "usbin-src-det", "otg-fail", "otg-oc", "aicl-done", "usbid-change"; }; qcom,dc-chgpth@1400 { reg = <0x1400 0x100>; interrupts = <0x2 0x14 0x0>, <0x2 0x14 0x1>; interrupt-names = "dcin-uv", "dcin-ov"; }; qcom,chgr-misc@1600 { reg = <0x1600 0x100>; interrupts = <0x2 0x16 0x0>, <0x2 0x16 0x1>, <0x2 0x16 0x2>, <0x2 0x16 0x3>, <0x2 0x16 0x4>, <0x2 0x16 0x5>; interrupt-names = "power-ok", "temp-shutdown", "wdog-timeout", "flash-fail", "otst2", "otst3"; }; };