ARM: dts: mdss: Add boolean property for LUT readability

LUT read is not supported by hardware in the case of msm8226.
Adding property to dtsi file to denote the absense of support
for read in hardware.

Change-Id: I29cf869af4135e1199bc0feb4369700b994520ec
Signed-off-by: Krishna Chaitanya Parimi <cparimi@codeaurora.org>
msm: mdss: Correct ARGC read write for all DSPP

Currently ARGC read write is done for DSPP0 irrespective of
dspp_num, as the dspp_num corresponding to the block provided
is not calculated.

Added the calculation of the dspp_num to get correct address
of ARGC registers.

Change-Id: Id787e76debb26d23d75d3cdb859a697b6f0016f5
Signed-off-by: Krishna Chaitanya Parimi <cparimi@codeaurora.org>
msm: mdss: Copy IGC LUT data correctly to userspace

During IGC read operation, IGC LUT's data was copied to
userspace incorrectly because of swapping color components.

Fix component data swapping during IGC LUT data copy to
user space to provide the correct IGC LUT data to user space.

Change-Id: I301a3500f0e0c4bbf9f52affa66373585c72d987
Signed-off-by: Krishna Chaitanya Parimi <cparimi@codeaurora.org>
power: qpnp-bms: disable interrupts at probe

The ocv and cc threshold interrupt are required when the battery is
FULL. Disable them at probe time and enable them once the battery is
reported full.

Change-Id: I75bc0b9128f7a8552380ba184d8a72e54159c01d
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
power: qpnp-bms: increase resolution of temperature lookups

Currently, the BMS driver rounds to the nearest degree when doing
table lookups on FCC, rbatt, and OCV. This is done with no
interpolation.

This can be harmful because in low temperatures, a change in 1/10th of a
degree C can cause very big swings in UUC due to the rbatt lookup
crossing a threshold. There has been cases seen in -20 degC testing
where when SoC goes from -3.9C to -4C, a shift of 80 mOhms of rbatt was
observed. This increased the UUC by 8% and caused large SoC swings.

Fix this by interpolating between the temperature ranges more smoothly.

Change-Id: I21ba32fd56b802c5a68f5c193f0904e445b6a798
Signed-off-by: Xiaozhe Shi <xiaozhes@codeaurora.org>
power: qpnp-bms: use consistent IAVG for raw SOC calculation

Currently the BMS uses the instantaneous current for the raw SOC
calculation. However, this current can be very high because of the boot
tiime power draw. This can bias the UUC to unreasonably levels (100% of
the battery when at cold temperatures) and cause the saved shutdown SOC
to be needlessly discarded.

Use the more realistic IAVG of 250 mA when doing this initial raw SOC
calculation as well in other places where iavg is being reset to avoid
skewing the results. Also, do not save the percent UUC when doing the raw
SOC calculation. Rather, use the loaded shutdown IAVG if there is one.

Change-Id: I426b824a50568b01bae442a3154e7c68c42409f8
Signed-off-by: Xiaozhe Shi <xiaozhes@codeaurora.org>
power: qpnp-charger: allow vinmin to be lowered to 4.0 V

Currently the minimum input voltage is limited to a minimum
value of 4.2 V. Some chargers in combination with cables
having high resistance may require the input voltage minum
to be lower than 4.2.

Fix this by allowing up to 4.0 V for the minimum input voltage
settings.

Change-Id: I6f1dfa2453c7b95ecc2ccdf2aac23981c0e4dd0a
CRs-Fixed: 584999
Signed-off-by: David Keitel <dkeitel@codeaurora.org>
power: qpnp-bms: always release output locks in bms driver

If a SPMI read error occurs, there can be a situation where the
BMS_HOLD_OREG bit is not set and the bms param lock is never released.
This can cause deadlocks and battery SoC to never move. Fix this by
releasing the locks after handling an error.

Change-Id: I880b8e1ed2ff1ec3ce701f1e9922c9aac353766a
Signed-off-by: Xiaozhe Shi <xiaozhes@codeaurora.org>
power: qpnp-bms: fix coulomb counter selection

There is a bug in the BMS code right now where reading the coulomb
counter actually reads the shadow coulomb counter and vice versa. Fix
this by correctly specifying the coulomb counter to be read.

Change-Id: Ica703d1e426e595e9ff6cd9fc45bade743740238
Signed-off-by: Xiaozhe Shi <xiaozhes@codeaurora.org>
power: qpnp-charger: only apply ibat-loop fix when battery is present

An issue was observed where the device could continuously reset when
the battery pins are left floating and the ibat-loop was disabled.

Fix this by only applying the ibat-loop workaround when the device has
a battery present.

Change-Id: I273b8fe3dc3c99e9bbb619e8e15abfd4c298366e
Signed-off-by: Xiaozhe Shi <xiaozhes@codeaurora.org>
power: qpnp-bms: estimate OCVs based on temperature

The BMS driver will throw out the hardware taken open circuit voltage
(OCV) if there has been a warm reset and the PMIC did not go through
the power on sequence. This is to throw out the stale OCVs from the
last boot.

However, if there is no shutdown SOC stored, the BMS driver must
estimate an OCV. When estimating an OCV, there is no information about
the battery state of charge yet, so the default battery resistance is
used to do the estimation. However, this only works in cases where the
battery temperature is not cold.

When the battery temperature is cold, the real rbatt will be much larger
than the default rbatt. If the default rbatt is used, the estimated OCV
will most likely be much too low, and a faulty SOC will be used. This
issue is exacerbated by the fact that the shutdown SOC is thrown out
when the battery is cold, so this situation can arise much more
frequently.

Fix this by estimating the battery OCV based on temperature and just
using a default rbatt SOC of 50%.

Change-Id: Ibc89fcd74a295bb2196be2d8c977e8b1b8598d7a
Signed-off-by: Xiaozhe Shi <xiaozhes@codeaurora.org>
power: qpnp-bms: do not adjust when shutdown soc is being applied

When the shutdown SOC is being applied, do not adjust the SOC before
using it for reporting. This is to prevent situations where the SOC can
be adjusted upwards when discharging, or adjusted downwards when
charging, but before the monotonic filtering can apply.

This change will ensure SoC monotonicity during discharge across power
cycles.

Change-Id: I23c95ddb941e0544920eb5c4cac3b1ba8d2752d6
Signed-off-by: Xiaozhe Shi <xiaozhes@codeaurora.org>
mmc: core: fix variable being overwritten

The status variable is being overwritten by label variable,
since the latter is an array of 0 length. Hence, move label
to be the last member of the structure.

CRs-fixed: 642326
Change-Id: I0a985a73dfa1d82829f8dfef5c32d947a33ce2ba
Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
Merge "Merge "ASoC: msm: qdsp6: Add support to configure ISO and ARIB coefficients""
Merge "Merge "Merge "ASoC: msm: qdsp6: Add support to configure ISO and ARIB coefficients"""
Merge "Merge "ASoC: msm: qdsp6: Add support to configure ISO and ARIB coefficients""
Merge "Merge "Merge "ASoC: msm: qdsp6: Add support to configure ISO and ARIB coefficients"""
Merge "Merge "ASoC: msm: qdsp6: Add support to configure ISO and ARIB coefficients""
Merge "Merge "Merge "ASoC: msm: qdsp6: Add support to configure ISO and ARIB coefficients"""
Merge "Merge "ARM: dts: msm: revert the change settings of L19/L10""