Commit Graph

456 Commits

Author SHA1 Message Date
Joonwoo Park
816b8e6e04 ASoC: wcd9310: Prevent from going suspend while accessing codec registers
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>
2012-02-09 16:14:20 -08:00
Amy Maloche
8950101583 mfd: pm8038-core: Add support for LEDs on pmic 8038
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>
2012-02-08 10:46:50 -08:00
Joonwoo Park
6c1ebb6226 ASoC: wcd9310: Use correct address of MICB4 registers
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>
2012-02-04 23:12:35 -08:00
David Collins
1b570d26b8 mfd: pmic: Add voltage switch test registers to PMIC core drivers
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>
2012-02-03 11:07:23 -08:00
Linux Build Service Account
98009d81e1 Merge "mfd: pm8xxx-misc: add pm8xxx_usb_id_pullup API" into msm-3.0 2012-02-01 10:37:20 -08:00
Willie Ruan
5db1f24037 mfd: pm8xxx-misc: add pm8xxx_usb_id_pullup API
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>
2012-02-01 14:11:04 +05:30
Willie Ruan
b10be97df4 mfd: pm8xxx-pwm: add pre-divide=6 and update macros
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>
2012-01-30 11:23:49 -08:00
Linux Build Service Account
58a3cd78f8 Merge "power: pm8921-charger: Allow setting -ve cool/warm temperature" into msm-3.0 2012-01-27 21:57:57 -08:00
Abhijeet Dharmapurikar
bc38f636fa power: pm8921-charger: Allow setting -ve cool/warm temperature
The current code assumes that the cool or warm battery temperature
can only be +ve numbers. Remove this restriction by allowing -ve
temperature settings.

Change-Id: I3c54b854a8fdf934efcf1ff21b36c7a0f763692a
CRs-Fixed: 320660
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2012-01-26 12:10:52 -08:00
Willie Ruan
5106035d9a mfd: pm8921-core: Add support for PMIC PM8917 chip
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>
2012-01-25 14:21:54 -08:00
David Collins
4724272b4b mfd: pm8xxx-misc: add an API to preload the dVdd regulator
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>
2012-01-20 11:34:58 -08:00
David Keitel
310eb689ab mfd: pm8xxx: add charger, bms and ccadc devices on PM8038
Add supported power devices such as charger, bms and CCADC.

These devices are required to be enabled to provide charging
functionality to the 8930 platform.

Change-Id: Iae5182ff26ba1cbcb256aeb1aee619f7a368765f
Signed-off-by: David Keitel <dkeitel@codeaurora.org>
2012-01-17 14:55:09 -08:00
David Keitel
88e1b57f00 power: pm8921-charger: support for external charger drivers
Allow the pm8921-charger driver to initiate charging on a
registered 3rd party charging driver through the power supply class.
Also enable the maintenance of charging properties such as online
and charge type using the power supply class rather than
directly depending on the 3rd party driver.

When a external charger is registered using power_supply_register
the external_power_changed callback of the charger driver checks
for an external charger named "dc". This removes the dependency
of a 3rd party charger to call directly into the charger driver.

Also, update the isl9519q driver to reflect the changes and
utilize power supply class calls to enable charging
on the isl chip from PM8921 charger driver.

This serves as an example for other 3rd party external
chargers supporting PMIC with high current charging.

Finally, add pr_fmt macro which automatically adds function name
to print statements and remove __func__ from individual print
statements.

Change-Id: If05e598be260d924ec3263bad33317cf4e7543a1
Signed-off-by: David Keitel <dkeitel@codeaurora.org>
2012-01-13 12:05:11 -08:00
Linux Build Service Account
ec3c193aa6 Merge changes I4973b80b,I3c4fd9d3 into msm-3.0
* changes:
  msm: 8930: Add ADC clients
  mfd: pmic8038-core: Add HK/XOADC device
2012-01-09 17:18:37 -08:00
Siddartha Mohanadoss
ef10213c2f mfd: pmic8038-core: Add HK/XOADC device
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>
2012-01-06 18:15:08 -08:00
David Keitel
6df9cea2c8 power: pm8921-charger: Add pm8921_set_usb_power_supply_type
USB can distinguish between types of USB connections such as a
DC charger or PC connection.

Let the USB drivers set the specifc power_supply_type via this
function.

CRs-Fixed: 326548
Change-Id: I31954b3f8d2b1e5fd72712e1f94f67fdbc2e205d
Signed-off-by: David Keitel <dkeitel@codeaurora.org>
2012-01-04 11:47:00 -08:00
David Collins
8c695c5096 mfd: pm8018-core: use pm8xxx-regulator instead of pm8018-regulator
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>
2011-12-29 06:37:34 -08:00
Linux Build Service Account
ef9ecee3b7 Merge "power: pm8921-charger: Add api to control OVP" into msm-3.0 2011-12-28 15:21:39 -08:00
Abhijeet Dharmapurikar
286693063a power: pm8921-charger: Add api to control OVP
Some board configurations have different needs for usb overvoltage
thresholds and debounce time for usb detection.

Provide apis to program threshold voltage, debounce time and
disable/enable overvoltage protection.

CRs-Fixed: 324137
Change-Id: Ie618ca12be819739a623cf41e5e1198305467aa5
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2011-12-27 17:47:08 -08:00
David Collins
045a76e605 mfd: pm8038-core: add pm8xxx-regulator device configuration data
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>
2011-12-27 06:29:14 -08:00
David Collins
7501674da4 mfd: pm8921-core: use pm8xxx-regulator instead of pm8921-regulator
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>
2011-12-27 06:29:14 -08:00
David Collins
5c4a5aba9b regulator: pm8xxx-regulator: add PM8XXX regulator driver
Create a PM8XXX regulator driver that can support PMIC PM8921
variants including: PM8018, PM8038, and PM8921.

Change-Id: I60d1302e4af9a4c5caa72301c904867acd2ebe0f
Signed-off-by: David Collins <collinsd@codeaurora.org>
2011-12-21 09:55:55 -08:00
Anirudh Ghayal
0c72b8462e mfd: pmic8058: Remove pm8058_hard_reset_config implementation
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>
2011-12-19 09:21:39 +05:30
Anirudh Ghayal
33d93bf02c mfd: pmic8058: Remove pm8058_stay_on implementation
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>
2011-12-19 08:57:02 +05:30
Linux Build Service Account
b508a570fa Merge "mfd: pmic8058: Remove reset_pwr_off, smpl control and WD reset control APIs" into msm-3.0 2011-12-16 21:09:57 -08:00
Siddartha Mohanadoss
37e6fc0bf7 hwmon: pm8xxx-adc-scale: Change scaling function
Modify the scaling function routines for Battery temperature
and all channels whose units return milli-volts for voltage.

The Charger driver requires the Units of Voltage and temperature
in uV and 0.1 DegC according to the framework where all voltages,
currents, chargers, energies, time and temperature are in uV, uA,
uAh, uWh, seconds and tenths of degree Celsius unless otherwise
stated. In accordance with the above expected units, the scaling
functions are modified for all voltage channels and the Batt Therm.

This change fixes the XO Therm temperature scaling routine,
PA Therm and Batt id to use the ratiometric calibration.
XO Therm and PA therm units are returned as milli-degree and
degree Centigrade respectively.

Accordingly, update the clients of xoadc to handle this change in
units.

CRs-Fixed: 315797
Change-Id: I6fa3b808062563fef3b0e70cc694e3132421f735
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2011-12-16 10:16:03 -08:00
Anirudh Ghayal
49ca45badc mfd: pmic8058: Remove reset_pwr_off, smpl control and WD reset control APIs
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>
2011-12-16 13:34:47 +05:30
Linux Build Service Account
9a14eeb261 Merge changes Iad754e82,I98666d74,Ic20482e6,I0a833f47 into msm-3.0
* changes:
  mfd: pmic8901: Remove pm8901_reset_power_off implementation
  board: 8660: Add platform data for PM8901 pm8xxx-misc device
  mfd: pmic8901: Add pm8xxx-misc mfd device
  mfd: pm8xxx-misc: Add delay after disabling regulators in shutdown function
2011-12-15 07:10:54 -08:00
Linux Build Service Account
585339b007 Merge changes Ida66a62a,I206d116b,I29c71a20 into msm-3.0
* changes:
  power: pm8921-bms: expose start and end charging parameters
  power: pm8921-bms: refactor BMS driver code
  power: pm8921-bms: force max_voltage at end of charge
2011-12-15 07:10:54 -08:00
Anirudh Ghayal
f0b9ad0864 mfd: pmic8901: Remove pm8901_reset_power_off implementation
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>
2011-12-15 08:19:28 +05:30
Anirudh Ghayal
934b2717fb mfd: pmic8901: Add pm8xxx-misc mfd device
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>
2011-12-15 08:19:27 +05:30
David Keitel
f222602046 power: pm8921-charger: Disable BTM before entering suspend
Significant sleep current is seen with BTM enabled during suspend.

Fix this by disabling BTM before entering suspend and re-enable it
on resume. A board file option may be added to disable this feature.
By default battery temperature monitoring will be turned off on
suspend.

Change-Id: I6614dc076d8ea69f25840dd3eeef94f9739e392f
Signed-off-by: David Keitel <dkeitel@codeaurora.org>
2011-12-13 20:22:52 -08:00
Abhijeet Dharmapurikar
a93ede8e3f power: pm8921-bms: force max_voltage at end of charge
When an end of charge with a full battery happens, the bms driver
fakes max ocv and zero cc. To force max ocv the driver currently
assumes that the first row last column will have the highest profiled
voltage. This may not be true always.

Pass the maximum voltage from platform data and use that to force
max ocv.

Change-Id: I29c71a20648fb2f9066f2f82e14a6080692c63fd
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2011-12-12 13:53:12 -08:00
Anirudh Ghayal
9f77e968dd mfd: pm8901: Modify pm8901 subdevices to pm8xxx interface
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>
2011-12-12 13:43:27 -08:00
Jay Chokshi
9d36a3d457 mfd: pm8038: Add PMIC 8038 core driver
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>
2011-12-09 17:24:27 -08:00
David Keitel
012deefa0b power: pm8921-charger: Allow disabling of input current limit
Some use cases require higher input currents which are out of range
of USB specification.

Fix this by adding a call to disable the input current limit and
warn the user with an adequate message that input current limiting
is disabled when the function is called

CRs-Fixed: 318511
Change-Id: I7e2baa0378c94b0b9af22c00d8605b9df8d4f826
Signed-off-by: David Keitel <dkeitel@codeaurora.org>
2011-12-05 12:23:44 -08:00
David Collins
999480d505 mfd: pm8921-core: Add support for PMIC PM8922 chips
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>
2011-12-02 01:22:32 -07:00
Siddartha Mohanadoss
af91d9056d hwmon: pm8xxx_adc: Remove pm8921-adc
Switch clients to use pm8xxx-adc and remove pm8921-adc.
pm8xxx-adc supports PMIC HK/XOADC for 8960, 9x15, 8064
platforms.

Change-Id: Id27fa908cc097d52e6033c28ce243c6bcf64ed27
Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
2011-12-01 04:35:59 -07:00
David Keitel
70251b0b81 mfd: pm8921-core: PMIC 8921 rev 3.0 revision mask
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>
2011-11-28 14:50:02 -08:00
Anirudh Ghayal
ca42c7dec9 mfd: pm8xxx-irq: Provide the IRQ base address through core data
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>
2011-11-22 21:26:33 +05:30
Linux Build Service Account
f756be5b27 Merge "ASoC: wcd9310: add I2C\I2S support for tabla codec" into msm-3.0 2011-11-22 06:35:56 -08:00
Abhijeet Dharmapurikar
82d939848f power: pm8xxx-ccadc: Add pm8xxx ccadc subdevice
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>
2011-11-21 11:21:31 -07:00
Linux Build Service Account
df0f40090a Merge "power: pm8921-charger: use resume_voltage_delta" into msm-3.0 2011-11-21 10:14:36 -08:00
Anirudh Ghayal
c49157f837 msm: 8660: Add ssbi device for PM8901
Use the msm-ssbi driver for communication over
the SSBI interafce.

Change-Id: Ibc26754944c32ac8eaa939f552033974e1a7758f
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
2011-11-21 10:06:00 +05:30
Abhijeet Dharmapurikar
d55878e749 power: pm8921-charger: use resume_voltage_delta
Since the driver will be changing the max vdd if the battery
temperature enters warm or cool zone, it should also change
the vbatdet voltage so resume of charging can begin accordingly.

Also provide a means to quickly debug is the battery is in cool/warm
zone.

Change-Id: I0fe83a4fabf76711bf86377c3ac23cceecb6e98b
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2011-11-20 19:32:40 -07:00
Santosh Mardi
e15e230fcf ASoC: wcd9310: add I2C\I2S support for tabla codec
Add support for I2C\I2S interface for tabla codec along
With SLIMBUS interface.

Change-Id: Ib0f2ebe62121c1e43a9bdbcaec7621e9d96ac3c4
Signed-off-by: Santosh Mardi <gsantosh@codeaurora.org>
2011-11-18 03:06:26 +05:30
Bryan Huntsman
d074fa2796 Merge remote-tracking branch 'common/android-3.0' into msm-3.0
* common/android-3.0: (570 commits)
  misc: remove kernel debugger core
  ARM: common: fiq_debugger: dump sysrq directly to console if enabled
  ARM: common: fiq_debugger: add irq context debug functions
  net: wireless: bcmdhd: Call init_ioctl() only if was started properly for WEXT
  net: wireless: bcmdhd: Call init_ioctl() only if was started properly
  net: wireless: bcmdhd: Fix possible memory leak in escan/iscan
  cpufreq: interactive governor: default 20ms timer
  cpufreq: interactive governor: go to intermediate hi speed before max
  cpufreq: interactive governor: scale to max only if at min speed
  cpufreq: interactive governor: apply intermediate load on current speed
  ARM: idle: update idle ticks before call idle end notifier
  input: gpio_input: don't print debounce message unless flag is set
  net: wireless: bcm4329: Skip dhd_bus_stop() if bus is already down
  net: wireless: bcmdhd: Skip dhd_bus_stop() if bus is already down
  net: wireless: bcmdhd: Improve suspend/resume processing
  net: wireless: bcmdhd: Check if FW is Ok for internal FW call
  tcp: Don't nuke connections for the wrong protocol
  ARM: common: fiq_debugger: make uart irq be no_suspend
  net: wireless: Skip connect warning for CONFIG_CFG80211_ALLOW_RECONNECT
  mm: avoid livelock on !__GFP_FS allocations
  ...

Conflicts:
	arch/arm/mm/cache-l2x0.c
	arch/arm/vfp/vfpmodule.c
	drivers/mmc/core/host.c
	kernel/power/wakelock.c
	net/bluetooth/hci_event.c

Signed-off-by: Bryan Huntsman <bryanh@codeaurora.org>
2011-11-16 13:52:50 -08:00
Anirudh Ghayal
c2019339bc mfd: pm8058: Modify pm8058 subdevices to pm8xxx interface
Move the following  subdevices to use the pm8xxx interface -
mpp, irq, gpio, keypad, power-key, leds, othc, vibrator,
rtc, batt-alarm, thermal, upl, nfc, pwm, xoadc, regulators,
xo-buffers, charger.

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: Id9795552fc9f4a2c920c070babfaef1f4cd6ca61
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
2011-11-16 19:06:11 +05:30
Anirudh Ghayal
51e947f6f5 mfd: pm8xxx-misc: Add pm8xxx stay on API
The API configures the PMIC to ignore the PS_HOLD low
signal, which can be used during debugging.

Change-Id: I162657934e34da081eb897d64ffed36ad48e4eff
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
2011-11-14 08:19:17 +05:30
Anirudh Ghayal
a4262a3821 mfd: pm8xxx-misc: Add pm8xxx hard reset config API
The API configures PMIC for different behaviour on hard reset.
The different options are to disable hard reset, shutdown or
restart on hard reset.

Change-Id: I214d563e904dd7e73c98a454866718a60a11b6dd
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
2011-11-14 08:19:05 +05:30