123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- Qualcomm's QPNP Voltage-Mode(VM) PMIC Battery Management System
- QPNP PMIC VM BMS provides interface to clients to read properties related
- to the battery. Its main function is to calculate the SOC (state of charge)
- of the battery based on periodic sampling of the VBAT (battery voltage).
- Parent node required properties:
- - compatible : Must be "qcom,qpnp-vm-bms" for the BM driver.
- - reg : Offset and length of the PMIC peripheral register map.
- - interrupts : The interrupt mappings.
- The format should be
- <slave-id peripheral-id interrupt-number>.
- - interrupt-names : names for the mapped bms interrupt
- The following interrupts are required:
- 0 : leave CV state
- 1 : enter CV state
- 2 : good ocv generated
- 3 : ocv_thr
- 4 : fifo update
- 5 : fsm state chnaged
- Additionally, optional subnodes may be included:
- - qcom,batt-pres-status : A subnode with a register address for the SMBB
- battery interface's BATT_PRES_STATUS register. If this node is
- added, then the BMS will try to detect offmode battery removal
- via the battery interface's offmode battery removal circuit.
- - qcom,battery-data : A phandle to a node containing the available batterydata
- profiles. See the batterydata bindings documentation for more
- details.
- Parent node required properties:
- - qcom,v-cutoff-uv : cutoff voltage where the battery is considered dead in
- micro-volts.
- - qcom,max-voltage-uv : maximum voltage for the battery in micro-volts.
- - qcom,r-conn-mohm : connector resistance in milli-ohms.
- - qcom,shutdown-soc-valid-limit : If the ocv upon restart is within this
- distance of the shutdown ocv, the BMS will try to force
- the new SoC to the old one to provide charge continuity.
- That is to say,
- if (abs(shutdown-soc - current-soc) < limit)
- then use old SoC.
- - qcom,low-soc-calculate-soc-threshold : The SoC threshold for when
- the periodic calculate_soc work speeds up. This ensures
- SoC is updated in userspace constantly when we are near
- shutdown.
- - qcom,low-voltage-threshold : The battery voltage threshold in micro-volts for
- when the BMS tries to wake up and hold a wakelock to
- ensure a clean shutdown.
- - qcom,low-voltage-calculate-soc-ms : The time period between subsequent
- SoC recalculations when the current voltage is below
- qcom,low-voltage threshold. This takes precedence over
- qcom,low-soc-calculate-soc-ms.
- - qcom,low-soc-calculate-soc-ms : The time period between subsequent
- SoC recalculations when the current SoC is below
- qcom,low-soc-calculate-soc-threshold. This takes
- precedence over qcom,calculate-soc-ms.
- - qcom,calculate-soc-ms : The time period between subsequent SoC
- recalculations when the current SoC is above or equal
- qcom,low-soc-calculate-soc-threshold.
- - qcom,volatge-soc-timeout-ms : The timeout period after which the module starts
- reporting volage based SOC and does not use the VMBMS
- algorithm for SOC calculation.
- - qcom,bms-vadc: Corresponding VADC device's phandle.
- - qcom,bms-adc_tm: Corresponding ADC_TM device's phandle to set recurring
- measurements and receive notifications for vbatt.
- - qcom,pmic-revid : Phandle pointing to the revision peripheral node.
- Parent node Optional properties
- - qcom,s1-sample-interval-ms: The sampling rate in ms of the accumulator in state
- S1. (i.e) the rate at which the accumulator is being
- filled with vbat samples. Minimum value = 0 and
- Maximum value = 2550ms.
- - qcom,s2-sample-interval-ms: The sampling rate in ms of the accumulator in state
- S2. (i.e) the rate at which the accumulator is being
- filled with vbat samples. Minimum value = 0 and
- Maximum value = 2550ms.
- - qcom,s1-sample-count: The number of samples to be accululated for one FIFO in
- state S1. Possible values are - 0, 4, 8, 16, 32, 64, 128,
- 256.
- - qcom,s2-sample-count: The number of samples to be accululated for one FIFO in
- state S2. Possible values are - 0, 4, 8, 16, 32, 64, 128,
- 256.
- - qcom,s1-fifo-legth: Number of FIFO's to be filled in state S1, to generate
- the fifo_update_done interrupt. Possile values - 0 to 8
- - qcom,s2-fifo-legth: Number of FIFO's to be filled in state S2, to generate
- the fifo_update_done interrupt. Possible values- 0 to 8
- - qcom,force-s3-on-suspend : Bool property to force the BMS into S3 (sleep) state
- while entering into system suspend.
- - qcom,force-bms-active-on-charger: Bool property to keep BMS FSM active
- if charger is present.
- - qcom,report-charger-eoc : Bool property to indicate if BMS needs to indicate
- EOC to charger.
- - qcom,ignore-shutdown-soc: A boolean that controls whether BMS will
- try to force the startup SoC to be the same as the
- shutdown SoC. Defining it will make BMS ignore the
- shutdown SoC.
- - qcom,use-voltage-soc : A boolean that controls whether BMS will use
- voltage-based SoC instead of a coulomb counter based
- one. Voltage-based SoC will not guarantee linearity.
- - qcom,disable-bms : Bool property to disable the VMBMS hardware module.
- Enable this property if BMS is not supported or an external
- fuel gauge is used.
- - qcom,s3-ocv-tolerence-uv : The S3 state OCV tolerence threshold in uV. The
- LSB value is 300uV and maximum value is 76500uV.
- - qcom,low-soc-fifo-length : The fifo length (of S2 STATE) to be used at lower
- SOCs. If this value is not specified the system uses
- default length.
- - qcom,resume-soc: Capacity in percent at which charging should resume
- when a fully charged battery drops below this level.
- - qcom,low-temp-threshold : The temperature threshold below which the IBAT
- averaging and UUC smoothening is disabled. This value
- is in deci-degrees centigrade. If not specified it
- defaults to 0.
- - qcom,ibat-avg-samples : The number of samples to be averaged for IBAT
- estimation. If not specified it defaults to 16.
- The possible values are 1 to 16.
- - qcom,batt-aging-comp : A boolean that defines if battery aging compensation
- is enabled.
- - qcom,use-reported-soc : Bool property to enable the reported_soc logic. To
- enable this feature, qcom,resume-soc must be defined as
- a proper value. The BMS is also required to control the
- charging, discharging and recharging.
- qcom,batt-pres-status node required properties:
- - reg : offset and length of the PMIC LBC battery interface BATT_PRES_STATUS
- register.
- qcom,qpnp-chg-pres required properties:
- - reg : offset and length of the PMIC LBC charger interafce CHARGER_OPTION
- register.
- Example:
- pm8916_bms: qcom,qpnp-vm-bms {
- spmi-dev-container;
- compatible = "qcom,qpnp-vm-bms";
- #address-cells = <1>;
- #size-cells = <1>;
- status = "disabled";
- qcom,v-cutoff-uv = <3400000>;
- qcom,max-voltage-uv = <4200000>;
- qcom,r-conn-mohm = <18>;
- qcom,shutdown-soc-valid-limit = <20>;
- qcom,low-soc-calculate-soc-threshold = <15>;
- qcom,low-voltage-threshold = <3420000>;
- qcom,low-voltage-calculate-soc-ms = <1000>;
- qcom,low-soc-calculate-soc-ms = <5000>;
- qcom,low-soc-fifo-length = <2>;
- qcom,calculate-soc-ms = <20000>;
- qcom,s3-ocv-tolerence-uv = <1200>;
- qcom,volatge-soc-timeout-ms = <60000>;
- qcom,battery-data = <&mtp_batterydata>;
- qcom,bms-vadc = <&pm8916_vadc>;
- qcom,bms-adc_tm = <&pm8916_adc_tm>;
- qcom,batt-pres-status@1208 {
- reg = <0x1208 0x1>;
- }
- qcom,qpnp-chg-pres@1208 {
- reg = <0x1108 0x1>;
- }
- qcom,bms-bms@4000 {
- reg = <0x4000 0x100>;
- interrupts = <0x0 0x40 0x0>,
- <0x0 0x40 0x1>,
- <0x0 0x40 0x2>,
- <0x0 0x40 0x3>,
- <0x0 0x40 0x4>,
- <0x0 0x40 0x5>,
- interrupt-names = "leave_cv",
- "enter_cv",
- "good_ocv",
- "ocv_thr",
- "fifo_updtaed",
- "fsm_state_change";
- };
- };
|