When the battery is removed and a strong charger is plugged in,
device will be kept powered. However, because of missing battery
SRAM access over IMA can fail leading to errors. Eventually, the
errors will go away when the battery is inserted again. However,
if the user tries to access SRAM registers or bms power supply
properties, it can cause further errors flooding logs. Handle
this gracefully by returning an error upon battery missing is
detected.
CRs-Fixed: 1072401
Change-Id: I764442548cb076dad89856d75394ef9cf355f83a
Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
Open circuit voltage and predicted battery voltage are read from
16 bits. However, the real value is present only in 15 bits.
Mask the bit 16 to get the proper readings.
Change-Id: I196ccc64fd221fead87a88f43dce1a21ba800908
Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
Add a module parameter "fg_restart" to restart the fuel gauge
without loading the battery profile. This will be useful in
geting a fresh SOC estimate whenever required.
Change-Id: I0c054ad523a0eab72f777d010807bb3a55f63f7e
Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
Batteries age across the time. Capacity learning is a feature
which uses the hardware autonomous coulomb counter to determine
the actual battery capacity against the advertised full capacity.
This will be useful to determine how much degradation has
happened to the battery. Capacity learning algorithm will start
based on some pre-set conditions like start SOC, battery
temperature and ends when the charging cycle is complete.
Actual capacity will be exposed through charge_full property.
Change-Id: I89cc14d213b0de10bc8d052dd76e1468fe9c30e5
Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
Currently, FG_GEN3 driver loads the battery profile if it finds
out the profile loaded earlier doesn't match with the available
profile. This will be done when the profile integrity bit is
set already. Make this force profile loading as a configurable
parameter through a device tree property.
While at it, add a module parameter to dump the profile contents
conditionally. This will be helpful in debugging.
Change-Id: Ibaff55aa5434ee283e6d597485d193e9e52bb74e
Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
msoc-full is not used to determine when the battery is full. The charger
will wakeup the device when it has terminated charging indicating that
the battery is full. Disable the msoc-full IRQ as a wakeup source.
The msoc-delta IRQ is used to wakeup the device when the SOC changes
therefore having the bsoc-delta IRQ as a wakeup source is unnecessary.
Disable the bsoc-delta IRQ as a wakeup source.
Change-Id: Iab7087ce3d6727abc852d3a84590cfa570ec584d
Signed-off-by: Nicholas Troast <ntroast@codeaurora.org>
Currently, delta SOC threshold is written as a 8 bit value but
the encoding is in 11 bits. This will cause the delta SOC
threshold programmed to a lower value causing interrupts to fire
quickly. Change the numerator of delta SOC SRAM parameter so that
the delta SOC threshold will be set correctly. Maximum possible
threshold will be 12.45% (1/2048 * 255).
Change-Id: Ia908c917d71939b9d72b16ddca3400a692540bf3
Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
Configure CC_CV threshold voltage to 4.34V for both itech and
ascent battery profiles that will be used by GEN3 fuel gauge
on pmicobalt.
CRs-Fixed: 1068593
Change-Id: I7df3d343afa62ffdbf6f5db8c7fc7d94e2f0e3a0
Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
Based on the battery profile parameters, Vbatt greater than float
voltage and full voltage thresholds needs to be configured. Add
support for the same. Since this needs the battery profile
parameters to be read in advance before the hardware is
initialized, shuffle the code to get battery profile early.
CRs-Fixed: 1068593
Change-Id: If5df62d933cc653a276967b3d16c080c6d4ecb2e
Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
Fix the following issues found in static analysis:
- missing blank lines after declarations
- unnecessary return in a void function
- exporting world writable files is usually an error
- block comments use * on subsequent and trailing lines
- Add DT binding description and vendor prefixe for the
driver.
- Add Linux Foundation copyright markings.
Change-Id: Id2ed9a6d4e31bd2acd3185bf7ef9c78f8a41cf36
Signed-off-by: Himanshu Aggarwal <haggarwa@codeaurora.org>
Signed-off-by: Vevek Venkatesan <vevekv@codeaurora.org>
Signed-off-by: Shantanu Jain <shjain@codeaurora.org>
Change-Id: Ie366894e9e89707fa2950a7ffbfe4e93059a19a3
Signed-off-by: Lawrence Liao <lawrence_liao@pixart.com>
(cherry picked from commit dfc4349a8aa02bb0b7b0639ad5368a5c85f6520f)
Git-commit: dfc4349a8aa02bb0b7b0639ad5368a5c85f6520f
Git-repo: https://github.com/PixartOpen/pixart-sensor-db810-linux-driver
[shjain@codeaurora.org: removed below listed files from original
commit as they are not needed and to resolve trivial merge conflicts:
1. arch/arm/boot/dts/qcom/apq8094-dragonboard.dtsi
2. arch/arm/boot/dts/qcom/msm8994-pinctrl.dtsi
3. arch/arm/boot/dts/qcom/msm8994.dtsi
4. drivers/input/misc/Makefile
5. drivers/input/misc/ots_pat9125/Makefile
Remove the unused pieces of algorithm from the reference
driver of Pixart PAT9125 Rotating side button.]
Signed-off-by: Shantanu Jain <shjain@codeaurora.org>
To support ADSP SVA on wcd934x, dedicated backend dailink needs
to be created. Add the dailink associating the specific cpu dai
and the MAD codec dai.
CRs-Fixed: 1070327
Change-Id: I4152d81e4e951216a8ecdd93562eb1740dbb962c
Signed-off-by: Walter Yang <yandongy@codeaurora.org>
When WDSP has crashed, G-link link state is updated with
GLINK_LINK_STATE_DOWN and remote side channels are closed.
Handle the link state down notification from G-link and
close the channels from local side when remote disconnect
channel event occurs.
Change-Id: Id956256fbb3ea6b18a3685a34dcd1f9b16e71e92
Signed-off-by: Vidyakumar Athota <vathota@codeaurora.org>
a540 hardware does not support BCL and LMH after all.
CRs-Fixed: 1075694
Change-Id: I09808145d20ded63b5043cae6510429560cb599e
Signed-off-by: Oleg Perelet <operelet@codeaurora.org>
Call rdev_get_name() to obtain the name to use in the debug
consumer's regulator_get() call so that the debug consumer finds
the correct regulator when the name differs in the constraints
and desc structs.
Change-Id: Id6a47467cd118c89c8f58d1120381d4c64f8efee
CRs-Fixed: 1075693
Signed-off-by: David Collins <collinsd@codeaurora.org>
Temperature compensation is needed for charger die
temperature. Offset and slope coefficients are applied
based on the FAB ID read from the REVID peripheral.
Change-Id: I8516a8109b8c9316dafbd547635d4c97bd50be0c
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
Add charger die temperature scaling coefficients based
on FAB ID. If FAB ID support is not available from the
REVID peripheral the driver does not report scaled
temperature for charger die temperature. Update temperature
compensation for PMIC die temperature.
Change-Id: I8864dccc1b53e70dac5d54129339e7224ec8ba67
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>