Commit Graph

301225 Commits

Author SHA1 Message Date
Jay Chokshi
208dea470f mfd: 8821: Add support for pm8821 core driver
Add support for the Qualcomm PM8821 PMIC chip. The core driver
will communicate with the PMIC chip via the MSM SSBI bus.

Initial support is provided for: IRQ, MPP, and Debug

Change-Id: Ic072e634c55925292196a3e710d2dc628cbf2780
Signed-off-by: Jay Chokshi <jchokshi@codeaurora.org>
2013-02-25 11:31:39 -08:00
David Collins
494bb51ec7 mfd: pm8xxx: core: Add PMIC specific revision values
Add #define constants to describe the revision value of a given
PMIC (e.g. 8058, 8901, or 8921).

Change-Id: I45762c785622fa1259638d33c6529b210a2f143e
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-02-25 11:31:38 -08:00
Stephen Boyd
d984dfb6b4 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>
[sboyd: Take only 8921-core parts]
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2013-02-25 11:31:37 -08:00
Stephen Boyd
6ab81dd41d power: pm8921-bms: use eoc interrupt for writing trim values
The bms driver calibrates the ccadc channel every few minutes
for offset and gain.

The offset value calibrated needs to be written to the bms hardware
which it uses to adjust all the ccadc readings.
The software has to only adjust for gain for ccadc based readings.

One is not supposed to program the trim offset values in while a
bms conversion in progress. Update the code to try only two times
instead of 10 to check if the conversion is finished, if not enable
the ccadc eoc interrupt and write the values then.

Change-Id: I1a1a16feb5ffb927f630850f0f2539ad75805fb1
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
[sboyd: droped bms driver change]
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2013-02-25 11:31:36 -08:00
Jay Chokshi
8f02c16c7f leds-pm8xxx: Pass LED flags from board file
Instead of hard coding the flag into led driver, pass it
from board file.
While at it, re-factor the code to separate led upstream
core data with board specific data.

Change-Id: I9726f8444d422fdbebdbd5d5e0c5beb6288aa5b1
Signed-off-by: Jay Chokshi <jchokshi@codeaurora.org>
[sboyd: only take pm8921 part]
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2013-02-25 11:31:35 -08:00
David Collins
06ee07da0c mfd: pm8921-core: Fix possible null pointer dereference in pm8921_remove
It is possible to dereference the pmic pointer even if it is null;
fix this.

Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-02-25 11:31:35 -08:00
Abhijeet Dharmapurikar
d174acc16f msm: restart: Handle reset interrupt from pmic
The reset interrupt in the pmic indicates the pmic will shutdown
the msm in few seconds - it does so by lowering the reset_n line
to the msm.

When this interrupt is triggered it is required that no more ssbi
transactions are initiated and the msm should cleanup and prepare
for the impending shutdown. There is no need to lower ps_hold in
this case as the pmic will shutdown the msm regardless.

Also since we don't want any ssbi transactions, force shutdown
nonboot cpus. This will prevent ssbi transactions to the pmic for
lower/raising nonboot cpu's voltages as they enter/exit idle states.

Change-Id: If2b392c2a0494356f17bf3b721e396da2af44dd2
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
[sboyd: take header part only]
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2013-02-25 11:31:34 -08:00
Anirudh Ghayal
7ff767d87a mfd: pm8921: Add cell data for pm8921 vibrator
Change-Id: I0ddf2555d80ff8575ae85250b13aed46e21a0f0a
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
2013-02-25 11:31:33 -08:00
David Collins
319e59cdc0 mfd: pm8921-core: add mfd cell for pm8921 battery alarm device
Add an mfd cell for the PMIC 8921 battery alarm into the
pm8921-core.

Change-Id: Ia856c88050aa99822e6541311f40417ec63964d4
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-02-25 11:31:32 -08:00
David Collins
66cc83fb29 mfd: pm8921-core: Add mfd cell for pm8921 thermal alarm device
Add an mfd cell for the PMIC 8921 thermal alarm into the pm8921-core.

Change-Id: Icd791e879b5289a4b0af374f0f08d928c6b15719
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-02-25 11:31:31 -08:00
Anirudh Ghayal
96f7e2cfbd mfd: pm8921: Add LEDs mfd cell data
Change-Id: Ia3948b2743599321573665ad7a2a4be7b3954b52
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
2013-02-25 11:31:30 -08:00
David Collins
c67a49d5ef mfd: pm8921: remove VBAT IRQ from charger driver control
The VBAT IRQ needs to be controlled by the pm8xxx-batt-alarm
battery alarm driver.  Remove VBAT IRQ control from the
pm8921-charger driver.

Change-Id: I478b4b572e4c08cfcd50ba4c288f847ea549f775
Signed-off-by: David Collins <collinsd@codeaurora.org>
[sboyd: Drop charger part]
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2013-02-25 11:31:29 -08:00
Abhijeet Dharmapurikar
063f5400e0 mfd: pm8921: add bms cell
pm8921 chip is equipped with a smart battery gauge called bms.
BMS is capable of intelligently measuring battery parameters
under various loads, the software uses these reading to
accurately determine battery capacity.

Add code to support the bms driver.

Change-Id: I5f14a82db0fda11adc0404ba58704a25fa7713af
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2013-02-25 11:31:29 -08:00
Siddartha Mohanadoss
ea5d427cc2 mfd: pm8921-core: Add mfd cell for pm8921 adc
Add a mfd cell of adc as part of the pm8921 core. It adds the
interrupts allocated for the ADC/BTM driver.

Signed-off-by: Siddartha Mohanadoss <smohanad@codeaurora.org>
Change-Id: I68e1f8df9e24a2512869f238cb3b2fccf09aa8de
2013-02-25 11:31:28 -08:00
Vijayavardhan
b8be9d3d34 pm8921: Add support for USB PMIC ID interrupt
PHY OTG comparators can be disabled for maximum power savings.  PHY
can not generate ID interrupt in this case.  As USB id line is routed
to PM8921 on MSM8960, depend on PM8921 for ID interrupt.

Change-Id: If375274d30235f7e950e284fabc72a4d6b5bc269
Signed-off-by: Vijayavardhan <vvreddy@codeaurora.org>
Signed-off-by: Pavankumar Kondeti <pkondeti@codeaurora.org>
[sboyd: only take the pm8921 part and reword subject]
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2013-02-25 11:31:27 -08:00
David Collins
ecfc5de329 mfd: pm8921-core: Print out PMIC version and revision names
Print out the PMIC version and revision names in human readable
form inside of the PM8921 probe function.

Change-Id: I0cfcbd25ab67834a8187d91e34d286cac806fd98
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-02-25 11:31:26 -08:00
David Collins
734855546a mfd: pm8921-core: Add mfd cell for pm8xxx-misc device into core
Add an mfd cell in the pm8921-core for a pm8xxx-misc device.

Change-Id: I0bc955c118aa427e45a4d2ce80065ca1d7c146a9
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-02-25 11:31:25 -08:00
David Collins
1c9c29f301 pm8xxx: core: Add pm8xxx functions to get PMIC version and revision
Add a pair of APIs in pm8xxx/core.h: pm8xxx_get_version which returns
an enum representing the type of the PMIC (8058, 8901, 8921, etc) and
pm8xxx_get_revision which returns the silicon revision of the PMIC
chip.

Update pm8921-core to implement this new API and remove core data
members previously used to pass revision information.

Change-Id: Ib2aaf5843e4aef9281745919908c530b85717510
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-02-25 11:31:24 -08:00
Abhijeet Dharmapurikar
255d011443 mfd: pm8921-core: Use SINGLE_IRQ_RESOURCE wherever possible
The charger cell introduced SINGLE_IRQ_RESOURCE. Use it for other cells
too.

Change-Id: I3e53810b792216135453baef229101f8fed98ea9
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2013-02-25 11:31:24 -08:00
Abhijeet Dharmapurikar
bee2afbfda mfd: pm8921: Add charger cell
The 8921 pmic is equipped with a charger block that can trickle charge
and fast charge a battery. The charger block has 32 interrupts for
notifying various charging events. It needs some parameters such as max
and min voltage of the system, charging resume voltage.

Add code to support the charger module in the core file.

Change-Id: I082b3009dd070af4120b1cd170972e7bf88ce810
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2013-02-25 11:31:23 -08:00
Willie Ruan
982fe07ec4 mfd: pm8921-core: add pwm device for PM8921
Qualcomm PM8921 has a PWM module which can output 8 channels
of PWM signals. This patch adds a PWM device in the sub device
list of PM8921 core driver.

Change-Id: I0799f12dafdffaedcb7cd13bee0d13993931d3a2
Signed-off-by: Willie Ruan <wruan@codeaurora.org>
2013-02-25 11:31:22 -08:00
David Collins
a73d9053f1 mfd: pm8xxx: add pm8xxx debugfs read/write interface
This driver will provide a means to read and write arbitrary PMIC
PM8XXX SSBI registers via debugfs.  It will first be used on the
PM8921 chip for MSM 8960.

Change-Id: I71c8b98cafec088ad864a89fa39e7ca14d212c7f
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-02-25 11:31:21 -08:00
David Collins
eb511f3d95 mfd: pm8921: change PM8921 core and regulator init to postcore
The pm8921-core and pm8921-regulator drivers are currently registered
in the subsys init level.  This is not soon enough because the
acpuclock driver needs them to be available during the arch init
level.  Therefore, change them to postcore init so that they are
ready in time.

Change-Id: I6ec7d42e0ef459e7f76621ce518cf9a9c9093c3c
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-02-25 11:31:20 -08:00
David Collins
9c38a8d17d regulator: pm8921-regulator: Add regulator driver for PM8921
Create a regulator driver to control all regulators on the Qualcomm
PM8921 PMIC chip.  This chip contains many different types of
regulators with a wide range of abilities and voltage ranges.

Eight different regulator types are available on the PM8921.  These
are managed via 7 different type values in the driver:

LDO      - low drop out regulator (supports both NMOS and PMOS LDOs)
NLDO1200 - 1.2A NMOS LDO (different control structure than other LDOs)
SMPS     - switched-mode power supply
FTSMPS   - fast transient SMPS
VS       - voltage switch
VS300    - 300mA voltage switch (different control structure than
             other switches)
NCP      - negative charge pump

The driver interfaces with the PMIC using Qualcomm's SSBI bus.
Calls to this bus are abtracted through the pm8xxx_readb/writeb API.

Change-Id: I01fb755c6be8e3f32c86fef079b5740edfc39f14
Signed-off-by: David Collins <collinsd@codeaurora.org>
[sboyd: Take only pm8921-core bits]
2013-02-25 11:31:19 -08:00
Anirudh Ghayal
28d08f40ce drivers: mfd: Add keypad mfd cell for PM8921
Change-Id: I1aacec2aa638bb1e21b96128b485d479cf4c5a94
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
2013-02-25 11:31:19 -08:00
Anirudh Ghayal
047bb07d5a drivers: mfd: Add power/end key mfd cell for PM8921
Change-Id: Idc13abf078d742c959eabc7aa5bfbac074e8538e
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
2013-02-25 11:31:18 -08:00
Ashay Jaiswal
a6321ca2f4 mfd: pm8921-core: Add support for RTC driver
Add RTC to PMIC subdevices.

Change-Id: I654ccc8e00fda38fc360c7b00dd632dd00fabdb7
Signed-off-by: Ashay Jaiswal <ashayj@codeaurora.org>
2013-02-25 11:31:17 -08:00
Bobby Crabtree
36efb4f201 mfd: add PMIC8901 driver for QCOM PM8901 chip
This driver is to provide a shim layer between ssbi driver (under i2c
framework). It provides interrupt multiplexing and MPP control.

Change-Id: I13c05d8477f3ea66dd368f167453ec19c8a622c3
Signed-off-by: Bobby Crabtree <bobbyc@codeaurora.org>
2013-02-25 11:31:16 -08:00
Stephen Boyd
d68c25bb0b mfd: Add TPS56023 driver
This is used on the MSM 8x50 devices.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2013-02-25 11:31:15 -08:00
Willie Ruan
2662b0a108 mfd: add pmic8058 driver for QCOM PM8058 chip
This driver is to provide a shim layer between ssbi driver (under i2c
framework) and other function drivers like keypad. It provides interrupt
multiplexing and GPIO configuration.

Signed-off-by: Willie Ruan <wruan@quicinc.com>
2013-02-25 11:31:15 -08:00
Trilok Soni
d4d6de7e0c mfd: Marimba TSADC driver
TSADC is part of marimba multi-function chip, which is
driver over SSBI as well as having die-to-die
connection with TSSC - Touchscreen controller in MSM.

Signed-off-by: Trilok Soni <tsoni@qualcomm.com>
2013-02-25 11:31:14 -08:00
Patrick Lai
dbe61a9366 msm: mfd: Add Timpani Codec Driver
This driver programs Timpani Wideband Codec for
input/output of audio signal.

Change-Id: Id7fb88c0599437e4bfb138c3c1deb124af6c4104
Signed-off-by: Parick Lai <plai@codeaurora.org>
2013-02-25 11:31:13 -08:00
Lai, Patrick
6bfbb5a524 marimba-codec: Create marimba wide-band codec driver
Marimba wide-band codec driver controls audio codec on marimba
die. The driver conforms to multi function device model. Thre audio HW
paths are supported. They are RX, TX, and loopback. Three clients
can access service of driver simultaneously as long as they don't try
to configure same path.

Signed-off-by: Patrick Lai <plai@quicinc.com>
2013-02-25 11:31:12 -08:00
Bryan Huntsman
0c57373a58 mfd: Add marimba Core driver
Marimba driver supports adding Marimba slave
devices(FM, Codec and TSADC) as sub devices
to the Marimba Core. Provides interface to
read/write registers using I2C to access the
registers on the Top level and subdevices.

It also adds ssbi-client driver intialization
to access registers of TSADC which is part of
marimba and accessed through SSBI. Provides
interface to read/write registers of the
sub-device over SSBI.

Acked-by: Siddartha Mohanadoss <smohanad@qualcomm.com>
Signed-off-by: Bryan Huntsman <bryanh@quicinc.com>
2013-02-25 11:31:11 -08:00
Ramesh Masavarapu
4716cdfef1 mobicore: Add mobicore driver.
Mobicore is an operating system being shipped along with
Trustzone BSP for msm chipsets. Mobicore consists of
several components in the secure world(Trustzone) and
non-secure world(linux kernel, Android user space).

The Mobicore driver communicates with the Mobicore kernel
that exists in the Trustzone.

Change-Id: Ie5b9f05f0bd6c47e55221af983498d08cbc519ab
Signed-off-by: Mona Hossain <mhossain@codeaurora.org>
2013-02-25 11:31:10 -08:00
Mohan Pallaka
1bd8dbba38 leds: led-class: Remove deprecated functions
Replace deprecated function sprintf with its safer
counter part, snprintf.

Change-Id: Iffdbe2647d9b4ca228d8ad66ed85c159aaa027c6
Signed-off-by: Mohan Pallaka <mpallaka@codeaurora.org>
2013-02-25 11:31:10 -08:00
Praveen Chidambaram
a534fafe39 leds: Add support to limit max_brightness of LCD
Make /sys/class/leds/lcd-brightness/max_brightness writable. This
will help limiting the max brightness and control the heat generated
by the LCD.

Change-Id: Ieb297f72f5fc26c19ca09c542e3a4140d01865d4
Signed-off-by: Praveen Chidambaram <pchidamb@codeaurora.org>
2013-02-25 11:31:09 -08:00
Benson Leung
9bacc3e41c add backlight driver in st1.5
BUG=NONE
TEST=Built and ran on st1.5
Signed-off-by: Horace Fu <horace.fu@quantatw.com>

CRs-Fixed: 245334
Change-Id: Ifc589ff9f9e41c9a7b5672001637f849eb0fde3c
Signed-off-by: Karthik Parsha <kparsha@codeaurora.org>
2013-02-25 11:31:08 -08:00
Trilok Soni
7145c8edff leds: pmic8058: Add PMIC leds driver
Add PMIC8058 based keyboard backlight and low current leds driver.

keyboard backlight led supports upto 16 levels of backlight intensity,
which is mapped to 0..255 levels of brightness of led subsystem.

Three low current(40mA) led drivers of PMIC are also supported
in this driver.

CRs-Fixed: 211772
Change-Id: Ia65b083f6070666aaad95851c9b843332ce35c82
Signed-off-by: Trilok Soni <tsoni@qualcomm.com>
2013-02-25 11:31:07 -08:00
Mohan Pallaka
425bca22ad leds: leds-pmic-mpp: Add support for MPP connected LED
Add support for LEDs which are connected to PMIC MPPs.

Change-Id: Ib53510dbcb745e92e2100c1afc6dc2d94938fc85
CRs-fixed: 354967
Signed-off-by: Mohan Pallaka <mpallaka@codeaurora.org>
2013-02-25 11:31:06 -08:00
Trilok Soni
406324fb62 led: pm8xxx: Add pm8xxx leds driver
Add support for Qualcomm PMIC8XXX keyboard
backlight, flash and low current leds.

Change-Id: I460480e0c7f98da4cb27c76ca7ac65807df74a7f
Signed-off-by: Trilok Soni <tsoni@codeaurora.org>
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
2013-02-25 11:31:05 -08:00
Stepan Moskovchenko
178aba2ef6 led: Bring in PMIC LED driver
Signed-off-by: Stepan Moskovchenko <stepanm@quicinc.com>
2013-02-25 11:31:04 -08:00
Mohan Pallaka
df77beda7c leds: Add pdm based gpio led driver
Configure leds through Pulse Density Modulation
registers in MSM core.

Change-Id: Ia9fae2b8d7fea2b91004f33e5790aa725df7d88f
Signed-off-by: Mohan Pallaka <mpallaka@codeaurora.org>
2013-02-25 11:31:03 -08:00
Thomas Tsai
e78ae0dfa8 leds: Add CPLD driver for LEDS
Signed-off-by: San Mehat <san@android.com>

leds: leds-cpld: Remove unused brightness setting

Signed-off-by: San Mehat <san@android.com>

leds: cpld: Make state change debugging conditional

Signed-off-by: Dima Zavin <dima@android.com>
2013-02-25 11:31:02 -08:00
Trilok Soni
b1ea821890 media: rc: Add wakeup functionality from GPIO IR event
Add can_wakeup functionality flag so that host can wakeup from
IR event.

Change-Id: I5cfa95fc17f390271d315a38d14dcbccd49dda78
Signed-off-by: Trilok Soni <tsoni@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:31:01 -08:00
Ravi Kumar V
151ef5c408 media: rc: Add support for Samsung remote in gpio ir receiver
Change support from Philips to Samsung remote in gpio ir receiver

Change-Id: Id6ec680a7d824a4e516676df8f24321bb5160046
Signed-off-by: Ravi Kumar V <kumarrav@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:31:00 -08:00
Ravi Kumar V
3d1236b0c8 media: rc: Add remote control event report from user space input
Some of user space applications need to send the remote key events
to kernel input subsystem, so for these type of applications this driver
enables them to send key events to kernel.
User has to send the key event type (pressed,repeated,released) and scan
code value.

Change-Id: I31a03044702020bd7bfd6cfdc310e65f85d282ef
Signed-off-by: Ravi Kumar V <kumarrav@codeaurora.org>
2013-02-25 11:31:00 -08:00
Ankush Khandelwal
26ed156b3e msm: rc: Add support for MSM GPIO TSOP IR Reciever driver.
Add GPIO based TSOP IR Reciever driver. It decodes signals based on
NEC protocol.

Change-Id: Ic19fab61152a99828806cf451ae797797602ec70
Signed-off-by: Ankush Khandelwal <akhand@codeaurora.org>
2013-02-25 11:30:59 -08:00
Ravi Kumar V
05d7cab4d7 media: rc: Add support for Universal Electronics(UE) remote control keymap
UE remote control uses RF4CE protocol to send the user
control data through RF interface.

Change-Id: Id99ad2ceaf8e8e28b71e827bd950a6e9b7f5fe76
Signed-off-by: Ravi Kumar V <kumarrav@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:30:58 -08:00
Ravi Kumar V
552d9888f7 media: rc: Add support for RC6 philips IR remote control keymap
RC6 philips remote control uses RC6 protocol to send the user
control data through IR.

Change-Id: I53f93c679c08a2b2aca154a761f84dae2f1c52e9
Signed-off-by: Ravi Kumar V <kumarrav@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
2013-02-25 11:30:57 -08:00