The wcd9310 codec driver which is slimbus slave can access codec
registers when slimbus is suspended.
This can cause register read/write failure.
Fix to make sure slimbus is awake before accessing wcd9310 codec's
registers through slimbus.
CRs-fixed: 331338
Change-Id: Iddbdb1614c18dab4bee4f0cc7951884f34cb7173
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
Add leds as a sub device to pmic 8038. This will also
take care of filling platform data for leds driver
which comes as part of pmic pdata.
Change-Id: I3814a0f36f79612684e4a2305e3c5c19dc64cb00
Signed-off-by: Amy Maloche <amaloche@codeaurora.org>
Update PMIC version macro with the right value.
Change-Id: I48391ca0a3745d5b04d5d4c7dd6e7ccad250fafb
Signed-off-by: Jay Chokshi <jchokshi@codeaurora.org>
Unlike Tabla 1.x, Tabla 2.0 codec has different address of micbias 4
registers.
Check hardware version and access proper address when accessing
micbias 4 registers.
CRs-fixed: 330357
Change-Id: I5e12a6b15e82b00d2e238c21d795fdc189ead6a5
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
Specify the SSBI test register address for each of the voltage
switches in PMIC 8018, 8038, and 8921 core drivers. This will
allow for future handling of over current protection (OCP) in
the pm8xxx-regulator driver.
Also define the OCP IRQs associated with each of the switches
on these PMICs.
Change-Id: Icfc51c01680e6e95b4348051c764f16cb91b4916
Signed-off-by: David Collins <collinsd@codeaurora.org>
PM8921 family provides a pullup enable bit to support USB ID.
Add the API for such support.
Change-Id: Id3056af070080c1c12f27720020ae718fc6f34f6
Signed-off-by: Willie Ruan <wruan@codeaurora.org>
Adapt the driver to take into consideration LPG
architecture of pmic 8038 and 8922. It does not
support 7-bit mode yet.
Change-Id: Ibfca90aae6fd9c90025af5364e1dcaf4a8bb3033
Signed-off-by: Jay Chokshi <jchokshi@codeaurora.org>
Add pre-divide=6 and update the max period based on new pre-divide.
Also update pre-divide related macros for better readability.
Change-Id: I5298c373c78f8723dab9a735e4d94f89798800d5
Signed-off-by: Willie Ruan <wruan@codeaurora.org>
When a non requested interrupt triggers, the genirq ends up calling
mask or mask_ack callback. This callback is expected to mask that
interrupt so it doesn't trigger us further.
There is a bug in the pm8xxx-irq driver where config[] entry for an
unrequested irq remains empty. So the mask or the mask_ack callback
ends up masking 0th interrupt.
Fix the mask and mask_ack callback to check if config[] is empty, if
so fill it in right then and mask the irq.
Change-Id: I85d3bfff92c52a1c3eb8123a9c3757660e20fac6
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
The PMIC PM8917 chip is very similar to the PM8921 chip. Modify
the pm8921-core driver so that it can also handle PM8917 chip
which has different number of gpios and mpps, and no LPG/PWM,
no LEDs and no vibrator.
Change-Id: I252adc2ddc4bcd9bb8b8fb5113444356ba7c969e
Signed-off-by: Willie Ruan <wruan@codeaurora.org>
Add a new API, pm8xxx_preload_dVdd, which will preload the dVdd
regulator on PMIC PM8901 chips during off state. This can help
to reduce fluctuations in the dVdd voltage during startup at the
cost of additional off state current draw.
This API should only be called if dVdd startup issues are
suspected.
Change-Id: Ic7ee60539de37a761bb9ca6c5200327a7b99da89
CRs-Fixed: 326086
Signed-off-by: David Collins <collinsd@codeaurora.org>
Enable charger and bms devices to make sure they are probed
on 8930.
Change-Id: I4917de40a672628bab868260b280cfb580668e4e
Signed-off-by: David Keitel <dkeitel@codeaurora.org>
Compare each search result (cur_err) directly with the best
result (best_err) without using local result in the loop for m.
This simplifies the code and makes it cleaner.
Change-Id: Icb6d19e1a14662b00bf7172ca6a7413fbe969cbc
Signed-off-by: Willie Ruan <wruan@codeaurora.org>
1kHz clock in PWM module is 1024Hz, instead of 1000Hz.
It is derived from sleep clock,
Change-Id: Ifd61985469fc485e913fe5474e422e53746f784d
Signed-off-by: Willie Ruan <wruan@codeaurora.org>
Simplify period preprocessing to favor n=9 for big period_us.
This removes MAX_MPT here with no disadvantage. Also remove
MAX_MPT as initial min_err because it doesn't have advantage
over using maximum unsigned integer value.
Change-Id: Ie905922802ed88f322a627b1a89f4c00cc214459
Signed-off-by: Willie Ruan <wruan@codeaurora.org>
The overflow could be the multiplication (period_us * NSEC_PER_USEC)
in next line, rather than at the 6-bit max period value. So we should
use the max unsigned int value as boundary.
Change-Id: Ida753d752a8ca144b4c158e1a6ed505077de98ea
Signed-off-by: Willie Ruan <wruan@codeaurora.org>
HouseKeeping ADC (HKADC) on the PMIC is used by clients
to measure voltage, current and temperature. Clients
include the Battery, Charger and Thermal clients that
require reading the ADC in real time. This also
supports reading the ADC channels that are mapped through
the PMIC MPP's such as the PA THERM channel.
Change-Id: I3c4fd9d368550c1cca168ea097e0d457d01d695e
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
Change the pm8018-core driver so that it registers devices for
the pm8xxx-regulator driver instead of for the pm8018-regulator
driver.
This necessitates changing board file platform data for existing
PMIC 8018 regulators so that additional pm8xxx-regulator data is
properly specified.
Change-Id: I3f64f756a6c48c0dd1684f8d8e98a6fa8dddd6ca
Signed-off-by: David Collins <collinsd@codeaurora.org>
Drivers should not be selecting features from any particular
architecture. For MSM_SHOW_RESUME_IRQ, allow it to be configured per
feature that uses it, not per architecture.
Signed-off-by: Bryan Huntsman <bryanh@codeaurora.org>
Add pm8xxx-regulator configuration data into the pm8038-core
driver. This adds support for PMIC PM8038 regulators.
Change-Id: I8d6e42d299141a6add3c41ca920d9186ad7fa3ee
Signed-off-by: David Collins <collinsd@codeaurora.org>
Change the pm8921-core driver so that it registers devices for
the pm8xxx-regulator driver instead of for the pm8921-regulator
driver.
This necessitates changing board file platform data for existing
PMIC 8921 regulators so that additional pm8xxx-regulator data is
properly specified.
Change-Id: I0d48f03344265bd1b7c160bceca944f8924c694c
Signed-off-by: David Collins <collinsd@codeaurora.org>
pm8xxx_hard_reset_config implements the required functionality,
replace the pm8058 specific call with this.
Remove ssbi_read/ssbi_write functions used in pm8058_hard_reset_config.
Remove unused variable(pm_lock) and enum(pon_config, pm8058_smpl_delay).
Change-Id: I3c5982ebab9277dc088bd3abd5621eb9acf3add9
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
pm8xxx_stay_on implements the required functionality internally.
Modify other occurrences of pm8058_stay_on to pm8xxx_stay_on.
Change-Id: I1c4d932789c6b5592bcbc6fc718d037f188d0e56
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
These APIs are implemented as a part of pm8xxx_reset_power_off,
pm8xxx_smpl_*, pm8xxx_watchdog_reset_control APIs in the pm8xxx-misc
driver.
Change-Id: I8eaf83e0c4d3551d16ecc7fc94c62514711b9a7d
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
Tabla hardware needs to wake up CPU by interrupt for headset
insertion/removal/button press functionalities.
Make Tabla's interrupt line as wakeable interrupt so driver gets
interrupt while CPU is suspend mode.
CRs-Fixed: 318317
Change-Id: Ie42938478ad66cb108a01abea1d0b01df7485e8b
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
There can be instance that slimbus read or write fails due to slimbus
clock not turning back on time.
Wait 5ms if driver fails to read/write and retry.
Change-Id: I050635b7dad9ad282040f0563d3c44124e1327c7
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
pm8901_reset_power_off is implemented as a part of
pm8xxx_reset_power_off (pm8xxx-misc driver).
Remove other functions (ssbi_read/ssbi_write) used only
by pm8901_reset_power_off.
Change-Id: Iad754e827061627cea55a4d6d1b7600c0cf64441
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
Misc driver supports global functions such as
pm8xxx_reset_power_off, pm8xxx_hard_reset_config.
Change-Id: Ic20482e693002ae97c31cc476bc52ad3f99891f7
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
Add delay after disabling each FTSMPS regulator in
__pm8901_reset_pwr_off. Add additional delay between disabling the
last regulator and when PS_HOLD is lowered to shutdown or restart
the system.
This delay is necessary to limit transient loading on LDO 7 and
dVdd regulators during the PMIC power off sequence.
Change-Id: I0a833f47164cf7c4ba1d0ae1f73c14b595908b3a
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
Move the following subdevices to use the pm8xxx interface -
mpp, irq, thermal, regulators.
This allows usage of a common driver for modules which are same
across multiple PM8XXX PMICs. It also provides flexibility
to add/remove subdevices for multiple board configurations.
Change-Id: I6478ec1b99b1ab55ca370d314dbeb590103a4b1c
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
Add support for the Qualcomm PM8038 PMIC chip. The core driver
will communicate with the PMIC chip via the MSM SSBI bus.
Initial support is provided for: IRQ, GPIO, MPP, RTC, Power Key,
Misc, and Debug.
Change-Id: I83f995cc238699100a05e82d04b45ea2a63eb667
Signed-off-by: Jay Chokshi <jchokshi@codeaurora.org>
The PMIC PM8922 chip is very similar to the PM8921 chip. Modify
the pm8921-core driver so that it can also handle PM8922 chips.
Change-Id: Ibae402ff65d1af4e0f18e4a66304f7ac609065b4
Signed-off-by: David Collins <collinsd@codeaurora.org>
Add the revision mask for PMIC8921 revision 3.0 to avoid
printing unknown PMIC revision in kernel log.
Change-Id: Ied28321866551aecbb1658dda5f17018256254a3
Signed-off-by: David Keitel <dkeitel@codeaurora.org>
AUXPGA LR gain register is treated as a cacheable with which the
register value is changed when device is opened twice. So making
the LR gain register as uncacheable which in turn apply the gain
value to the codec every time device is opened.
CRs-Fixed: 319366
Change-Id: Ibae39848bd05d8462e805cf79c352f2453dc86f4
Signed-off-by: Vinay Vaka <vvaka@codeaurora.org>
Facilitate the driver to support PMICs (such as PM8901)
with different IRQ base address.
Change-Id: I285a9b859b795508620ea6dfd7b5ef6953e7aeb3
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
Add delay after disabling each FTSMPS regulator in
pm8901_reset_pwr_off. Add additional delay between disabling the
last regulator and when PS_HOLD is lowered to shutdown or restart
the system.
This delay is necessary to limit transient loading on LDO 7 and
dVdd regulators during the PMIC power off sequence.
Change-Id: Ia95894a6a032a254b7ca3f8a251b4984e1432818
Signed-off-by: David Collins <collinsd@codeaurora.org>
Until now only the BMS system was using the ccadc so there was
no need to create a separate ccadc driver.
However we can run in a configuration with BMS disabled
and clients won't be able to read battery current via ccadc.
Separate the ccadc from the bms, this change in is preparation
to add a ccadc api to read the battery current.
Change-Id: Ib96b146d91d01d196df9291eb23432cd430db4d0
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>