| 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" |
| - #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 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. |
| |
| Example: |
| qcom,qpnp-smbcharger { |
| 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"; |
| }; |
| }; |