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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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
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>
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>
Add an mfd cell in the pm8921-core for a pm8xxx-misc device.
Change-Id: I0bc955c118aa427e45a4d2ce80065ca1d7c146a9
Signed-off-by: David Collins <collinsd@codeaurora.org>
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>
The charger cell introduced SINGLE_IRQ_RESOURCE. Use it for other cells
too.
Change-Id: I3e53810b792216135453baef229101f8fed98ea9
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
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>
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>
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>
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>
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]
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>
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>
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>
This driver programs Timpani Wideband Codec for
input/output of audio signal.
Change-Id: Id7fb88c0599437e4bfb138c3c1deb124af6c4104
Signed-off-by: Parick Lai <plai@codeaurora.org>
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>
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>
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>
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>
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>
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>
Add support for LEDs which are connected to PMIC MPPs.
Change-Id: Ib53510dbcb745e92e2100c1afc6dc2d94938fc85
CRs-fixed: 354967
Signed-off-by: Mohan Pallaka <mpallaka@codeaurora.org>
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>
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>
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>
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>
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>
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>
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>