Commit Graph
155 Commits
Author SHA1 Message Date
Francescodario Cuzzocrea 85baa390bf misc: Import SM-G900H kernel source code
* Samsung Package Version: G800HXXU1CRJ1
    * CAF Tag: LA.BF.1.1.3-00110-8x26.0
2019-08-02 15:14:10 +02:00
Ke Liu b43a183d09 msm: cpr-regulator: modify how initial voltages and limits are specified
Currently, the initial voltage as well as the CPR ceiling and floor
voltages for each voltage corner are defined using these four device tree
properties: qcom,pvs-init-voltage, qcom,pvs-corner-ceiling-slow,
qcom,pvs-corner-ceiling-nom, and qcom,pvs-corner-ceiling-fast.
Unfortunately, since qcom,pvs-init-voltage only defines the initial
voltage for the turbo voltage corner for each PVS bin value, the initial
voltage used for the SVS and nominal corners must be calculated using a
complicated and potentially error prone algorithm using the four properties
mentioned earlier. Furthermore, the coarse slow/nom/fast binning leads to
wasted power for parts with intermediate PVS bin defined initial voltage
requirements when the CPR controller is disabled.

Therefore, replace the four properties listed above with the following
three properties: qcom,pvs-voltage-table, qcom,cpr-voltage-ceiling and
qcom,cpr-voltage-floor. The property qcom,pvs-voltage-table specifies a
mapping from a PVS bin value to the initial voltage for each voltage
corner. The properties qcom,cpr-voltage-ceiling and qcom,cpr-voltage-floor
specify the ceiling and floor for each voltage corner respectively.

Also, remove all usage of 'process' from inside of the cpr-regulator driver
since it has no meaning without the qcom,pvs-corner-ceiling-slow/nom/fast
properties.

CRs-Fixed: 606213
Change-Id: I7996074b39e1f80f6dc10e25428e09d7cb364192
Signed-off-by: Ke Liu <keliu@codeaurora.org>
2014-02-12 09:56:25 -08:00
Ke Liu 09772d5866 msm: cpr-regulator: add a new vdd-mx voltage selection method
Add support to choose VDD_MX voltage according to VDD_APC fuse corner.

CRs-Fixed: 607899
Change-Id: If3d5dd4c919d50736c4eaa5449f835b2e8f38d3f
Signed-off-by: Ke Liu <keliu@codeaurora.org>
2014-02-03 12:52:59 -08:00
Ke Liu 91f60c6be3 regulator: fan53555: add support for device tree and option 13 feature
Add device tree support. Add support for restoring voltage select register
from back up register. Add support for setting vsel pin by gpio output
according to device tree information. Add option to disable regulator
suspend method. Add set_voltage_time_sel to regulator_ops. Add support for
option 13's voltage range.

Change-Id: Iab9b160ff83c66f59cccedbd23d4aed7acb7d7a3
Signed-off-by: Ke Liu <keliu@codeaurora.org>
2014-01-29 12:40:39 -08:00
Ke Liu 325fd9b2e9 regulator: onsemi-ncp6335d: add support for device tree
Add device tree support. Add support for restoring working register
from back up register. Add support for setting vsel pin by gpio output
according to device tree flag. Change ncp6335d_regulator_init into a
global function.

Change-Id: I5ce861dd307b28e0782d051b105956b10eb1afab
Signed-off-by: Ke Liu <keliu@codeaurora.org>
2014-01-29 12:40:39 -08:00
Yunfan Zhang 3560cb819b regulator: Fairchild fan53555 support
This driver supports Fairchild FAN53555 Digitally Programmable
TinyBuck Regulator. The FAN53555 is a step-down switching voltage
regulator that delivers a digitally programmable output from an
input voltage supply of 2.5V to 5.5V. The output voltage is
programmed through an I2C interface.

Change-Id: I9b79deee1a3f10fe58598efa68ace7f9882bf53d
Signed-off-by: Yunfan Zhang <yfzhang@marvell.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Git-commit: 49d8c59927e7887ea168a040e41c22937e10c30b
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
[keliu@codeaurora.org: resolve merge conflicts]
Signed-off-by: Ke Liu <keliu@codeaurora.org>
2014-01-29 12:40:38 -08:00
Ke Liu 7abaef80f0 msm: cpr-regulator: change device tree vendor prefix from 'qti' to 'qcom'
New policy requires changing device tree vendor prefix from 'qti'
to 'qcom'. Also change device tree files for msm8610, msm8226 and msm8926.

Change-Id: I0b00127a698e10c2d937b515cd7e55ae3b0ba569
Signed-off-by: Ke Liu <keliu@codeaurora.org>
2013-12-26 14:23:20 -08:00
Ke Liu ad1d390a47 ARM: dts: update frequency to corner and quot mapping on msm8226 and msm8610
Some devices need to adjust their CPR quotient value according to the cpu
frequency. The existing configuration uses the same fuse target quotient
for each frequency in a given corner. This configuration is not power
efficient as some corners have a large range of frequencies. Hence use a
virtual corner for each frequency for power saving purposes.

CRs-Fixed: 583719
Change-Id: I90113c4ad26c792c849378ec192bfde4ff2ec199
Signed-off-by: Ke Liu <keliu@codeaurora.org>
2013-12-22 13:25:16 -08:00
Ke Liu 01a9c35f14 msm: cpr-regulator: change CPR_CORNER to CPR_FUSE_CORNER
New changes introduce virtual corner concept as opposed to cpr_corner.
Cpr corners in existing code are all cpr fuse corners. Hence change them
to distinguish cpr fuse corner from cpr virtual corner.

Change-Id: I086b29cadb23edfdff583f21f29efad4b35be5e1
Signed-off-by: Ke Liu <keliu@codeaurora.org>
2013-12-22 13:24:25 -08:00
Ke Liu 098f1ae387 msm: cpr-regulator: change device tree vendor prefix to 'qti'
New policy requires changing device tree vendor prefix from 'qcom'
to 'qti'. Also change device tree files for msm8610, msm8226 and msm8926.

Change-Id: I57c8c9d14ffa3ddd3671f406cfa2011eb23e66e4
Signed-off-by: Ke Liu <keliu@codeaurora.org>
2013-12-06 10:49:38 -08:00
Abhijeet Dharmapurikar dd167853a8 msm: krait-regulator: enable support for KPSS v2 hardware
KPSS version 2.1 introduces a hardware sequencer which executes
the necessary steps to switch between BHS and LDO krait power modes.
The driver has to set the APC_PWR_GATE_MODE register to initiate a
switch between LDO and BHS Krait power modes. Modify the driver to
use this hardware sequencer.

Also, switch to the V2 SPM sequence with the delays added for
HW sequencer to idle.

Also, with the V2 sequences, it is expected that APC_PWR_GATE_CTL
register be configured once before using the APC_PWR_GATE_MODE register to
switch between LDO and BHS.

Update the code such that for secondary cpus APC_PWR_GATE_MODE is
written to after configuring APC_PWR_GATE_CTL in the
secondary_cpu_hs_init() function. Note that secondary_cpu_hs_init() is
guaranteed to run only once for each secondary cpu when that core is
brought up for the first time. Subsequent hotplug in/out of that core
do not take this code execution path.

For boot cpu, since it is up and running, its APC_PWR_GATE_CTL
should already be initialized. So for boot cpu configure its
APC_PWR_GATE_MODE register right at probe time. secondary_cpu_hs_init()
isn't invoked for boot cpu.

Change-Id: Ie5584c12f47283cad8834ccdb3d4d44c66305a22
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2013-06-17 17:21:57 -07:00
Willie Ruan b17b7837c8 msm: cpr-regulator: add CPR driver code
Add RB-CPR (Rapid Bridge core power reduction) code in cpr-regulator
driver, which reads both eFuse and device tree for configuration
parameters and programs CPR registers accordingly. The driver
will scale the voltage up or down based on the CPR hardware's
suggestion. It also changes CPR mode when Apps cpu clock changes
corner voltage. If any part doesn't have efuse at all, assume it's
a slow part and do not use CPR.

Change-Id: Ia3dc5a6ec013647f2a21577c0fe0f2b30a93cd73
Signed-off-by: Willie Ruan <wruan@codeaurora.org>
2013-05-08 13:28:27 -07:00
David Collins 50f28e5384 regulator: qpnp-regulator: Add support for voltage switch OCP IRQ
Add support for a voltage switch OCP interrupt handler which
toggles the switch off and back on after an overcurrent event
takes place.  This toggling should only be performed for a
specified maximum number of times with a specified delay between
subsequent retries.  Disabling a voltage switch is the only way
to clear the latched over-current state.

Change-Id: I8dbc54ff7bc54c1309ee59c1a282d5e4af2f0ec6
CRs-Fixed: 469134
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-04-19 08:55:08 -07:00
David Collins 30dac6221e regulator: qpnp-regulator: Correct voltage switch OCP control
Correct the register values used to override and not override
voltage switch over current protection (OCP).  Also update
documentation to explain exactly how OCP enablement works.
Remove the OCP enable time delay property since it cannot be used
effectively to avoid OCP triggering due to high in-rush current.

Change-Id: I046dd3a42d3f8ec7f3b9689a958b617fbca35254
CRs-Fixed: 469134
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-04-19 08:55:07 -07:00
David Collins d1672c2f1d regulator: qpnp-regulator: Add support to configure voltage switch mode
Add support for a device tree property, qcom,hpm-enable, which
can be used to configure a voltage switch type regulator to be in
high power mode (HPM).  When a switch is in HPM, over current
protection and soft start are enabled at all times.

The new property can also be used for other types of regulators.
However, this will likely not have the intended result as the
mode of non-voltage switch regulators is controlled at runtime
via regulator framework APIs.

Change-Id: Id3fca7ebbe3eb13b557e6d483494f218989cd64c
CRs-Fixed: 469134
Signed-off-by: David Collins <collinsd@codeaurora.org>
2013-04-19 08:54:49 -07:00
Willie Ruan 6d502395f5 msm: cpr-regulator: add MX handling as dependency for VDD APC
It could be required for the memory power (MX) to be equal or
higher than VDD APC voltage in certain way. Add code to
handle this voltage dependency with the support for several
possible methods of dependencies. If no such requirement on
certain target, don't specify the MX regulator in device tree.

Change-Id: Iabc8abe3eda881a92304aeb8e1f98394c8938c67
Signed-off-by: Willie Ruan <wruan@codeaurora.org>
2013-04-04 10:10:32 -07:00
Willie Ruan 2635a85ecf msm: cpr-regulator: add CPR driver for APC
RBCPR (RapidBridge Core Power Reduction) is a technology to reduce
core power on a cpu or a core. It takes voltage suggestions in efuse
from product test process as initial settings. It supports "corner"
vote mechanism and converts corner value to voltage before writing
to a voltage regulator API, such as that provided by spm-regulator
driver.

This patch only adds basic code as a regulator driver and to support
efuse reading and initial voltage settings for corners. CPR support
will be added in a separate patch.

Change-Id: I98896fb00e9864d849498d0446cd2aae4af95f58
Signed-off-by: Willie Ruan <wruan@codeaurora.org>
2013-03-26 18:38:17 -07:00
Abhijeet Dharmapurikar c8605a65ed msm: krait-regulator: enable/disable MDD with hotplug
Currently the code enables/disables MDD as the core goes to/comes out of
retention. The problem with this approach is that if that core switches
to BHS (likely because another core changes its frequency) the driver
turns off its MDD completely oblivious of the fact that that core is
running in retention and needs its MDD on.

This causes retention on that cpu to crash.

Its best if the driver keeps the MDD  on always while a core is online
regardless of whether it is operating in LDO or BHS mode. MDD would then
be turned off when the core goes offline. This way we keep the MDD on
throughout idle power collapses and associated retention modes.

Also when the system goes to suspend, secondary cpus are offlined. This
will result in their MDD turned off. However for boot cpu, hook in to
the syscore ops callbacks to turn on/off the MDD.

Change-Id: I9ff5826fd87782ce1b407bd3702f791751bc60fd
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2013-03-14 13:43:19 -07:00
Abhijeet Dharmapurikar 46a7ad3f1c msm: krait-regulator: use phase management for v2
The PMIC 8841 v2 that comes with msm8974 v2 is capable of doing
phase switching on ganged regulators. Enable this feature for
v2.

Change-Id: I21826f4cf7be332f5ab7621325fa6cbe6aa2ea95
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2013-03-05 12:53:52 -08:00
Abhijeet Dharmapurikar e8f838573e msm: krait-regulator: turn off mdd when ldo is not used
The MDD (master droop detector) unit consumes around 300uA per core.
It is required only when the LDO is being used by the cpu. It can
be safely turned off while in BHS mode. This will save upto 1.2mA
of rock bottom current.

Note that if the cpu is entering retention mode, we turn on the MDD
so the spm can turn on LDO safely when retention is activated. Since
we have to call a out of band api to turn on/off MDD for a given core
associate a cpu number with a krait regulator node. This helps us to get
the necessary data structure quickly and access that core's registers
to turn its MDD on/off.

Change-Id: I03ab80bd979bef05c6c3d39f43788e6ec9f02510
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2013-02-14 10:51:41 -08:00
Duy Truong 790f06d941 Update copyright to The Linux Foundation
Change-Id: I9d411a9c00b37d0907066dbfa6db3a78c108646f
Signed-off-by: Duy Truong <dtruong@codeaurora.org>
2013-02-13 16:38:12 -08:00
Linux Build Service Account cac35ad309 Merge "regulator: ncp6335d: Add sleep mode configuration" 2012-12-20 03:00:57 -08:00
Syed Rameez Mustafa 2b51920d20 msm: krait-regulator: stub out ARCH specific functions
These regulator functions are only defined for ARCH_MSM8974. This
causes compilation errors when these sysmbols are referenced with
in the kernel even though they are not in the code execution path.
Stub out these functions for other ARCHs.

Change-Id: I433b1161bc91063bb7a76d506d73f203266153e8
Signed-off-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
2012-12-13 15:33:38 -08:00
Anirudh Ghayal c91e7e59fd regulator: ncp6335d: Add sleep mode configuration
Sleep mode configures the regulator to enter into a sleep
state when both EN and VSEL are low. There is a significant
reduction in the leakage current in this mode.

Enable the same for 8x25q.

Change-Id: I7377bf9d702633b9eddcea8f3503cc270bb95c95
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
2012-12-13 13:30:28 +05:30
David Collins 8839df2682 regulator: stub: Add device tree support
Add support into the stub-regulator driver so that stub-regulator
devices may be specified via device tree.

Change-Id: Ib72ef7c8caacb50955cd7c182e790300daf152ce
Signed-off-by: David Collins <collinsd@codeaurora.org>
2012-10-18 14:10:38 -07:00
Anirudh Ghayal ccc1d5b33d drivers: regulator: Add support for OnSemi NCP6335D regulator
This driver supports OnSemi NCP6335D synchronous buck converter.
The NCP6335D is a step-down switching voltage regulator which
provides a voltage range from 0.6 to 1.4V. The regulator is
controlled via the I2C interface.

Change-Id: I237fe781d5c54d2b3ffc65096b9e83c387d3b6f5
Signed-off-by: Anirudh Ghayal <aghayal@codeaurora.org>
2012-10-14 22:02:23 +05:30
Abhijeet Dharmapurikar e8571efce9 msm: krait-regulator: Initialize headswitches for secondary CPUs
Create a function to be called very early (before the krait-regulator
driver probes) to switch a cpu in BHS mode. Since we have not yet
probed yet, use the base address passed in to do the necessary writes.

Change-Id: I1cb1659f1e31e52b9d209427887230ee922aef80
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2012-08-15 22:43:43 -07:00
Abhijeet Dharmapurikar 00269e5191 msm: krait-regulator: add regulator control for kraits
Badger kraits have a single voltage supply coming from the pmic. This
supply is provided by multiple switching regulators operating in
ganged mode.

There is a LDO and a HS (Head Switch) per core that further control the
voltage supply to that core.

This driver manages the ganged supply by calling upon the spm driver to
set phases and voltage.

Change-Id: Idc0a0ae3242729a7e0ede5962974c09b61d8d39c
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
2012-08-06 15:45:13 -07:00
Steve Muckle f066380a08 Merge commit 'AU_LINUX_ANDROID_ICS.04.00.04.00.130' into msm-3.4
* commit 'AU_LINUX_ANDROID_ICS.04.00.04.00.130': (39 commits)
  msm: vidc: Add support for DIVX 4/5/6
  msm_fb: display: Set the minimal sleep time for DSI PHY Initialisation
  board: 8930: add debounce interval for gpio-keys
  regulator: Extend of_get_regulator_init_data to support non-DT consumers
  regulator: pm8xxx-regulator: Add slew_rate platform data parameter
  crypto: Fix initialization of array variable.
  arm: free all .init memory when CONFIG_STRICT_MEMORY_RWX is set
  msm: clock-copper: Remove block reset ability from most clocks
  msm: clock-local2: Fix local_vote_clk_reset to use right to_*_clk macro
  EHCI: HSIC: Add support for suspend, resume and URB logging
  arm/dt: msm-pm8941: Change boost regulator register address to 0xA000
  msm: camera: Move server code into seperate file.
  msm: camera: Close camera gracefully in case of userspace crash
  media: dvb: mpq: Support getting decoder's buffer status
  Bluetooth: Wait for wcnss to be ready after SSR
  msm: msm_sdcc: Add device tree support for SDCC controllers
  msm: display: Change DSI escape clock to byte clock
  msm: clock-8960: Change source of DSI escape clock to byte clock
  ASOC: msm: Enable mpq8064 machine driver.
  EHCI: HSIC: Set the interrupt threshold control value to 8ms
  ...

Signed-off-by: Steve Muckle <smuckle@codeaurora.org>
2012-06-07 11:14:52 -07:00
Steve Muckle f132c6cf77 Merge commit 'AU_LINUX_ANDROID_ICS.04.00.04.00.126' into msm-3.4
AU_LINUX_ANDROID_ICS.04.00.04.00.126 from msm-3.0.
First parent is from google/android-3.4.

* commit 'AU_LINUX_ANDROID_ICS.04.00.04.00.126': (8712 commits)
  PRNG: Device tree entry for qrng device.
  vidc:1080p: Set video core timeout value for Thumbnail mode
  msm: sps: improve the debugging support in SPS driver
  board-8064 msm: Overlap secure and non secure video firmware heaps.
  msm: clock: Add handoff ops for 7x30 and copper XO clocks
  msm_fb: display: Wait for external vsync before DTV IOMMU unmap
  msm: Fix ciruclar dependency in debug UART settings
  msm: gdsc: Add GDSC regulator driver for msm-copper
  defconfig: Enable Mobicore Driver.
  mobicore: Add mobicore driver.
  mobicore: rename variable to lower case.
  mobicore: rename folder.
  mobicore: add makefiles
  mobicore: initial import of kernel driver
  ASoC: msm: Add SLIMBUS_2_RX CPU DAI
  board-8064-gpio: Update FUNC for EPM SPI CS
  msm_fb: display: Remove chicken bit config during video playback
  mmc: msm_sdcc: enable the sanitize capability
  msm-fb: display: lm2 writeback support on mpq platfroms
  msm_fb: display: Disable LVDS phy & pll during panel off
  ...

Signed-off-by: Steve Muckle <smuckle@codeaurora.org>
2012-06-06 18:45:28 -07:00
David Collins d161f5ab31 regulator: pm8xxx-regulator: Add slew_rate platform data parameter
Add a slew_rate platform data parameter which can be used to
specify the worst case board dependent voltage slew rate of a
given regulator.

regulator_set_voltage calls will be delayed based on the
slew_rate parameter when voltage is stepping up.  The delay is
calculated as (new_uV - old_uV) / slew_rate.

If no slew_rate is specified for a given regulator (i.e.
slew_rate == 0), then slew_rate will default to
max_uV / enable_time.

Change-Id: I7a9be300945d90941040b3a26d8a4199338bf9c4
Signed-off-by: David Collins <collinsd@codeaurora.org>
2012-06-06 14:51:25 -07:00
David Collins d1ac2f1c83 regulator: Add qpnp-regulator driver
Add the qpnp-regulator driver to support regulators found in
Qualcomm plug-and-play (QPNP) PMIC chips.  QPNP chips make use of
Qualcomm's SPMI register convention.  The particular hardware
characteristics of a given regulator can be derived from the
values present in the type and subtype registers.

The qpnp-regulator driver supports probing with either device tree
device specification or with board file specified platform data.

Change-Id: I4f74431a50949763d651faf992b5d2567d05758e
Signed-off-by: David Collins <collinsd@codeaurora.org>
2012-04-11 17:13:33 -07:00
Linus Torvalds 4a1e8ebc5e Merge tag 'regulator-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
Pull regulator fixes from Mark Brown:
 "A bunch of smallish fixes that came up during the merge window as
  things got more testing - even more fixes from Axel, a fix for error
  handling in more complex systems using -EPROBE_DEFER and a couple of
  small fixes for the new dummy regulators."

* tag 'regulator-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
  regulator: Remove non-existent parameter from fixed-helper.c kernel doc
  regulator: Fix setting new voltage in s5m8767_set_voltage
  regulator: fix sysfs name collision between dummy and fixed dummy regulator
  regulator: Fix deadlock on removal of regulators with supplies
  regulator: Fix comments in include/linux/regulator/machine.h
  regulator: Only update [LDOx|DCx]_HIB_MODE bits in wm8350_[ldo|dcdc]_set_suspend_disable
  regulator: Fix setting low power mode for wm831x aldo
  regulator: Return microamps in wm8350_isink_get_current
  regulator: wm8350: Fix the logic to choose best current limit setting
  regulator: wm831x-isink: Fix the logic to choose best current limit setting
  regulator: wm831x-dcdc: Fix the logic to choose best current limit setting
  regulator: anatop: patching to device-tree property "reg".
  regulator: Do proper shift to set correct bit for DC[2|5]_HIB_MODE setting
  regulator: Fix restoring pmic.dcdcx_hib_mode settings in wm8350_dcdc_set_suspend_enable
  regulator: Fix unbalanced lock/unlock in mc13892_regulator_probe error path
  regulator: Fix set and get current limit for wm831x_buckv
  regulator: tps6586x: Fix list minimal voltage setting for LDO0
2012-04-04 10:09:30 -07:00
Michael Bohan 83b0065562 regulator: stub: Export init function for early probe
Some usecases of stub-regulator require the regulator devices to
be probed early on. As a consequence, allow for stub-regulator
to be added at a custom time by the platform code. Simply
changing the init level of this driver is not enough. We must
allow for other drivers added at the same init level to be
dependencies or dependents of this driver.

Change-Id: Ifd57d0e77e25f73dfb16c45c6774a382873ec44a
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2012-04-02 15:04:28 -07:00
Axel Lin 15c08f664d regulator: Fix comments in include/linux/regulator/machine.h
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-03-29 12:09:45 +01:00
Linus Torvalds 30304e5a79 Merge tag 'mfd_3.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6
Pull MFD changes from Samuel Ortiz:
 - 4 new drivers: Freescale i.MX on-chip Anatop, Ricoh's RC5T583 and
   TI's TPS65090 and TPS65217.
 - New variants support (8420, 8520 ab9540), cleanups and bug fixes for
   the abx500 and db8500 ST-E chipsets.
 - Some minor fixes and update for the wm8994 from Mark.
 - The beginning of a long term TWL cleanup effort coming from the TI
   folks.
 - Various fixes and cleanups for the s5m, TPS659xx, pm860x, and MAX8997
   drivers.

Fix up trivial conflicts due to duplicate patches and header file
cleanups (<linux/device.h> removal etc).

* tag 'mfd_3.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: (97 commits)
  gpio/twl: Add DT support to gpio-twl4030 driver
  gpio/twl: Allocate irq_desc dynamically for SPARSE_IRQ support
  mfd: Detach twl6040 from the pmic mfd driver
  mfd: Replace twl-* pr_ macros by the dev_ equivalent and do various cleanups
  mfd: Micro-optimization on twl4030 IRQ handler
  mfd: Make twl4030 SIH SPARSE_IRQ capable
  mfd: Move twl-core IRQ allocation into twl[4030|6030]-irq files
  mfd: Remove references already defineid in header file from twl-core
  mfd: Remove unneeded header from twl-core
  mfd: Make twl-core not depend on pdata->irq_base/end
  ARM: OMAP2+: board-omap4-*: Do not use anymore TWL6030_IRQ_BASE in board files
  mfd: Return twl6030_mmc_card_detect IRQ for board setup
  Revert "mfd: Add platform data for MAX8997 haptic driver"
  mfd: Add support for TPS65090
  mfd: Add some da9052-i2c section annotations
  mfd: Build rtc5t583 only if I2C config is selected to y.
  mfd: Add anatop mfd driver
  mfd: Fix compilation error in tps65910.h
  mfd: Add 8420 variant to db8500-prcmu
  mfd: Add 8520 PRCMU variant to db8500-prcmu
  ...
2012-03-28 13:56:35 -07:00
Rajendra Nayak 949ebbe52c regulator: map consumer regulator based on device tree
Device nodes in DT can associate themselves with one or more
regulators/supply by providing a list of phandles (to regulator nodes)
and corresponding supply names.

For Example:
	devicenode: node@0x0 {
		...
		...
		vmmc-supply = <&regulator1>;
		vpll-supply = <&regulator2>;
	};

The driver would then do a regulator_get(dev, "vmmc"); to get
regulator1 and do a regulator_get(dev, "vpll"); to get
regulator2.

of_get_regulator() extracts the regulator node for a given
device, based on the supply name.

Use it to look up the regulator for a given consumer from device tree, during
a regulator_get(). If not found fallback and lookup through
the regulator_map_list instead.

Also, since the regulator dt nodes can use the same binding to
associate with a parent regulator/supply, allow the drivers to
specify a supply_name, which can then be used to lookup dt
to find the parent phandle.

Change-Id: I124a4ba1a64c1145bdd016d91b9814c29eefeb36
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
[mbohan: resolve conflict in drivers/regulator/core.c]
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2012-03-28 10:39:59 -07:00
Rajendra Nayak 11eafc62cd regulator: pass additional of_node to regulator_register()
With device tree support for regulators, its needed that the
regulator_dev->dev device has the right of_node attached.
To be able to do this add an additional parameter to the
regulator_register() api, wherein the dt-adapted driver can
then pass this additional info onto the regulator core.

Change-Id: Idf7c4e532cc06fd00b8182b635d15dcfafb2cef9
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
[mbohan: Update regulator_register for msm regulator drivers]
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2012-03-28 10:39:59 -07:00
Rajendra Nayak 67b54c2342 regulator: helper routine to extract regulator_init_data
The helper routine is meant to be used by the regulator drivers
to extract the regulator_init_data structure from the data
that is passed from device tree.
'consumer_supplies' which is part of regulator_init_data is not extracted
as the regulator consumer mappings are passed through DT differently,
implemented in subsequent patches.
Similarly the regulator<-->parent/supply mapping is handled in
subsequent patches.

Also add documentation for regulator bindings to be used to pass
regulator_init_data struct information from device tree.

Some of the regulator properties which are linux and board specific,
are left out since its not clear if they can
be in someway embedded into the kernel or passed in from DT.
They will be revisited later.

Change-Id: I4f270a41687199032499cd923854a871c4d58ca2
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2012-03-28 10:39:58 -07:00
Mark Brown 5d028cd394 regulator: Constify constraints name
There's no need for the API to modify it and having it const makes it
easier to use with random strings the board code has.

Change-Id: Icd7e600291f281e80f60ef857c22f22cba08bfc1
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
[mbohan: port MSM regulator drivers to new const type]
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2012-03-28 10:39:57 -07:00
Linus Torvalds 34800598b2 Merge tag 'drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull "ARM: driver specific updates" from Arnd Bergmann:
 "These are all specific to some driver.  They are typically the
  platform side of a change in the drivers directory, such as adding a
  new driver or extending the interface to the platform.  In cases where
  there is no maintainer for the driver, or the maintainer prefers to
  have the platform changes in the same branch as the driver changes,
  the patches to the drivers are included as well.

  A much smaller set of driver updates that depend on other branches
  getting merged first will be sent later.

  The new export of tegra_chip_uid conflicts with other changes in
  fuse.c.  In rtc-sa1100.c, the global removal of IRQF_DISABLED
  conflicts with the cleanup of the interrupt handling of that driver.

  Signed-off-by: Arnd Bergmann <arnd@arndb.de>"

Fixed up aforementioned trivial conflicts.

* tag 'drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (94 commits)
  ARM: SAMSUNG: change the name from s3c-sdhci to exynos4-sdhci
  mmc: sdhci-s3c: add platform data for the second capability
  ARM: SAMSUNG: support the second capability for samsung-soc
  ARM: EXYNOS: add support DMA for EXYNOS4X12 SoC
  ARM: EXYNOS: Add apb_pclk clkdev entry for mdma1
  ARM: EXYNOS: Enable MDMA driver
  regulator: Remove bq24022 regulator driver
  rtc: sa1100: add OF support
  pxa: magician/hx4700: Convert to gpio-regulator from bq24022
  ARM: OMAP3+: SmartReflex: fix error handling
  ARM: OMAP3+: SmartReflex: fix the use of debugfs_create_* API
  ARM: OMAP3+: SmartReflex: micro-optimization for sanity check
  ARM: OMAP3+: SmartReflex: misc cleanups
  ARM: OMAP3+: SmartReflex: move late_initcall() closer to its argument
  ARM: OMAP3+: SmartReflex: add missing platform_set_drvdata()
  ARM: OMAP3+: hwmod: add SmartReflex IRQs
  ARM: OMAP3+: SmartReflex: clear ERRCONFIG_VPBOUNDINTST only on a need
  ARM: OMAP3+: SmartReflex: Fix status masking in ERRCONFIG register
  ARM: OMAP3+: SmartReflex: Add a shutdown hook
  ARM: OMAP3+: SmartReflex Class3: disable errorgen before disable VP
  ...

Conflicts:
	arch/arm/mach-tegra/Makefile
	arch/arm/mach-tegra/fuse.c
	drivers/rtc/rtc-sa1100.c
2012-03-27 16:41:24 -07:00
Linus Torvalds 250f6715a4 Merge tag 'device-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
Pull <linux/device.h> avoidance patches from Paul Gortmaker:
 "Nearly every subsystem has some kind of header with a proto like:

	void foo(struct device *dev);

  and yet there is no reason for most of these guys to care about the
  sub fields within the device struct.  This allows us to significantly
  reduce the scope of headers including headers.  For this instance, a
  reduction of about 40% is achieved by replacing the include with the
  simple fact that the device is some kind of a struct.

  Unlike the much larger module.h cleanup, this one is simply two
  commits.  One to fix the implicit <linux/device.h> users, and then one
  to delete the device.h includes from the linux/include/ dir wherever
  possible."

* tag 'device-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
  device.h: audit and cleanup users in main include dir
  device.h: cleanup users outside of linux/include (C files)
2012-03-24 10:41:37 -07:00
Arnd Bergmann 511f1cb6d4 Merge tag 'regulator-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator into next/drivers
The pxa regulator branch removes the bq24022 driver, while a lot of
other regulator drivers got added in the regulator tree. This
resolves the trivial conflicts by merging in the regulator patches
that are already merged into v3.4.

Conflicts:
	drivers/regulator/Kconfig
	drivers/regulator/Makefile

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2012-03-24 11:29:58 +00:00
Mark Brown 115e4bfd5b Merge remote-tracking branch 'regulator/topic/supply' into regulator-next 2012-03-18 21:39:19 +00:00
Mark Brown c02f935f5f Merge remote-tracking branches 'regulator/topic/devm' and 'regulator/topic/stub' into regulator-next 2012-03-18 21:38:28 +00:00
Mark Brown c592c761a3 Merge remote-tracking branch 'regulator/topic/stub' into regulator-next 2012-03-18 21:38:20 +00:00
Mark Brown 63236f4038 Merge remote-tracking branch 'regulator/topic/drivers' into regulator-next 2012-03-18 21:37:37 +00:00
Paul Gortmaker 313162d0b8 device.h: audit and cleanup users in main include dir
The <linux/device.h> header includes a lot of stuff, and
it in turn gets a lot of use just for the basic "struct device"
which appears so often.

Clean up the users as follows:

1) For those headers only needing "struct device" as a pointer
in fcn args, replace the include with exactly that.

2) For headers not really using anything from device.h, simply
delete the include altogether.

3) For headers relying on getting device.h implicitly before
being included themselves, now explicitly include device.h

4) For files in which doing #1 or #2 uncovers an implicit
dependency on some other header, fix by explicitly adding
the required header(s).

Any C files that were implicitly relying on device.h to be
present have already been dealt with in advance.

Total removals from #1 and #2: 51.  Total additions coming
from #3: 9.  Total other implicit dependencies from #4: 7.

As of 3.3-rc1, there were 110, so a net removal of 42 gives
about a 38% reduction in device.h presence in include/*

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
2012-03-16 10:38:24 -04:00
Michael Bohan 9b7ac517c2 regulator: Add stub regulator support
Add support for a dummy driver that has an implementation
connected to no real hardware devices. Its purpose is to aid
bringup scenarios by providing clients a regulator interface
that they expect. This driver shouldn't be enabled if a real
device implementation for a particular platform already exists.

Change-Id: Ib83027b4e599ebbc3cb153b2f346bb03495bb746
Signed-off-by: Michael Bohan <mbohan@codeaurora.org>
2012-03-14 13:58:11 -07:00
Heiko Stübner 8a16a701ad regulator: Remove bq24022 regulator driver
The bq24022 driver is just a specialised form of a gpio-regulator.

As all former users of it now use the gpio-regulator directly, there
is no need to keep it around.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Haojian Zhuang <haojian.zhuang@gmail.com>
2012-03-07 09:48:58 +08:00