summaryrefslogtreecommitdiffstats
path: root/drivers/regulator (follow)
Commit message (Collapse)AuthorAgeFilesLines
* regulator: Convert anatop to use a struct to pass in regulator runtime ↵Axel Lin2012-04-101-2/+7
| | | | | | | configuration Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* regulator: twl-regulator: Fix off-by-one vsel setting in twl6030smps_set_voltageAxel Lin2012-04-101-4/+10
| | | | | | | | | | | | | | commit 268a1 "regulator: twl-regulator: Use DIV_ROUND_UP at appropriate places" introduced an off-by-one bug for setting vsel. The linear calculation code in twl6030smps_list_voltage() does subtract index by 1 so we need the vsel++ after DIV_ROUND_UP. The original code use this trick to differentiate if we are going to set the voltage to 0 or the voltage falls within the linear calculation range. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* regulator: tps65023: Use devm_* APIsAxel Lin2012-04-101-11/+3
| | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* regulator: tps62360: Convert to devm_regmap_init_i2c()Axel Lin2012-04-101-3/+1
| | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* regulator: max8649: Use devm_* APIsAxel Lin2012-04-101-13/+6
| | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* regulator: twl-regulator: Use DIV_ROUND_UP at appropriate placesAxel Lin2012-04-101-24/+6
| | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* regulator: twl-regulator: Simplify the code matching regulator idAxel Lin2012-04-101-3/+5
| | | | | | | | | | | | This patch makes the code easier to read. Also add checking the case when no desc id is matched. This is required because if no desc id is matched, the poiner info is pointed to twl_of_match[i].data which may be not NULL. Checking info is NULL or not latter does not catch the error. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* regulator: max8998: Use simple equation to get selectorAxel Lin2012-04-101-9/+10
| | | | | | | It's more efficient to get the best selector by simple equation. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* regulator: max8997: Use simple equation to get selectorAxel Lin2012-04-101-4/+5
| | | | | | | It's more efficient to get the best selector by simple equation. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* regulator: max8997: Remove n_bits from struct voltage_map_descAxel Lin2012-04-101-9/+5
| | | | | | | | | | | | | | | The n_bits is only used in max8997_get_voltage_proper_val to check the valid range for variable i. Current code already ensures min_vol never greater than desc->max, which means the variable i always in the valid range: 0 .. (desc->max - desc->min)/desc->step. Thus we can remove the checking (i >= (1 << desc->n_bits) and then remove n_bits from struct voltage_map_desc. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* regulator: Replace regulator_desc_[ldo|buck] by s5m8767_regulator_desc macroAxel Lin2012-04-101-48/+41
| | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Acked-by: Sangbeom Kim <sbkim73@samsung.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* regulator: Use one s5m8767_ops for both LDOs and BUCKsAxel Lin2012-04-101-13/+3
| | | | | | | | | All the callback function implementation are the same for both LDOs and BUCKs. Merge them to one s5m8767_ops. Signed-off-by: Axel Lin <axel.lin@gmail.com> Acked-by: Sangbeom Kim <sbkim73@samsung.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* regulator: Rework s5m8767_set_voltage to support both LDOs and BUCKsAxel Lin2012-04-101-94/+49
| | | | | | | | | | | | | | | | | | | | s5m8767_set_voltage not only implement set_voltage callbacks for LDOs, but also for BUCKs when s5m8767->buck_gpioindex is not set. s5m8767_set_voltage_buck actually only for buck[2|3|4] when s5m8767->buck_gpioindex is set. Conditionally calling s5m8767_set_voltage in s5m8767_set_voltage_buck makes the code hard to read. I think merging s5m8767_set_voltage_buck and s5m8767_set_voltage actually simplifies things. It's easy to use buck234_vol pointer to differentiate if we need to control voltage for buck[2|3|4] by DVS GPIOs. This patch reworks s5m8767_set_voltage to support both LDOx and BUCKx in all cases. Signed-off-by: Axel Lin <axel.lin@gmail.com> Acked-by: Sangbeom Kim <sbkim73@samsung.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* Merge tag 'v3.4-rc2' into regulator-driversMark Brown2012-04-1010-44/+49
|\ | | | | | | Linux 3.4-rc2 contains some fixes that further patches depend upon.
| * Merge tag 'regulator-3.4' of ↵Linus Torvalds2012-04-0410-44/+49
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| | * regulator: Remove non-existent parameter from fixed-helper.c kernel docRuss Dill2012-03-311-1/+0
| | | | | | | | | | | | | | | Signed-off-by: Russ Dill <russ.dill@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: Fix setting new voltage in s5m8767_set_voltageAxel Lin2012-03-311-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | Current code does not really update the register with new value, fix it. I rename the variable i to sel for better readability. Signed-off-by: Axel Lin <axel.lin@gmail.com> Acked-by: Sangbeom Kim <sbkim73@samsung.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: fix sysfs name collision between dummy and fixed dummy regulatorShawn Guo2012-03-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When regulator_register_fixed() is being used to register fixed dummy regulator, the following line will be seen in the boot log. And the sysfs entry for fixed dummy regulator is not shown. dummy: Failed to create debugfs directory The patch renames the fixed dummy supply to "fixed-dummy" to avoid the name collision with dummy regulator. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: Fix deadlock on removal of regulators with suppliesMark Brown2012-03-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | If a regulator with a supply is being unregistered we will call regulator_put() to release the supply with the regulator_list_mutex held but this deadlocks as regulator_put() takes the same lock. Fix this by releasing the supply before we take the mutex in regulator_unregister(). Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: Only update [LDOx|DCx]_HIB_MODE bits in ↵Axel Lin2012-03-291-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | wm8350_[ldo|dcdc]_set_suspend_disable What we want is to disable output by setting [LDOx|DCx]_HIB_MODE bits. Current code also clears other bits in LDOx/DCDCx Low Power register. R202 (CAh) LDO1 Low Power BIT[13:12] LDO1 Hibernate behaviour: 00 = Select voltage image settings 01 = disable output 10 = reserved 11 = reserved R182 (B6h) DCDC1 Low Power BIT[14:12] DC-DC1 Hibernate behaviour: 000 = Use current settings (no change) 001 = Select voltage image settings 010 = Force standby mode 011 = Force standby mode and voltage image settings. 100 = Force LDO mode 101 = Force LDO mode and voltage image settings. 110 = Reserved. 111 = Disable output Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: Fix setting low power mode for wm831x aldoAxel Lin2012-03-291-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Set BIT[8] of LDO7 ON Control mode for low power mode. R16507 (407Bh) LDO7 ON Control BIT[8] LDO7_ON_MODE: LDO7 ON Operating Mode 0 = Normal mode 1 = Low Power mode Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: Return microamps in wm8350_isink_get_currentAxel Lin2012-03-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | The values in isink_cur array are microamps. The regulator core expects get_current_limit callback to return microamps. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: wm8350: Fix the logic to choose best current limit settingAxel Lin2012-03-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current implementation in get_isink_val actually choose the biggest current limit setting falls within the specified range. What we want is to choose the smallest current limit setting falls within the specified range. Fix it. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: wm831x-isink: Fix the logic to choose best current limit settingAxel Lin2012-03-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current code in wm831x_isink_set_current actually set the current limit setting smaller than specified range. Fix the logic in wm831x_isink_set_current to choose the smallest current limit setting falls within the specified range. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: wm831x-dcdc: Fix the logic to choose best current limit settingAxel Lin2012-03-281-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current code in wm831x_buckv_set_current_limit actually set the current limit setting greater than specified range. Fix the logic in wm831x_buckv_set_current_limit to choose the smallest current limit setting falls within the specified range. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: anatop: patching to device-tree property "reg".Ying-Chun Liu (PaulLiu)2012-03-281-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change "reg" to "anatop-reg-offset" due to there is a warning of handling no size field in reg. This patch also adds the missing device-tree binding documentation. Signed-off-by: Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org> Acked-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: Do proper shift to set correct bit for DC[2|5]_HIB_MODE settingAxel Lin2012-03-261-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | DC[2|5]_HIB_MODE is BIT 12 of DCDC[2|5] Control register. WM8350_DC2_HIB_MODE_ACTIVE/WM8350_DC2_HIB_MODE_DISABLE are defined as 1/0. Thus we need to left shift WM8350_DC2_HIB_MODE_SHIFT bits. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: Fix restoring pmic.dcdcx_hib_mode settings in ↵Axel Lin2012-03-261-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | wm8350_dcdc_set_suspend_enable What we want is to restore wm8350->pmic.dcdcx_hib_mode settings to WM8350_DCDCx_LOW_POWER registers. Current code also clears all other bits of WM8350_DCDCx_LOW_POWER registers which is wrong. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: Fix unbalanced lock/unlock in mc13892_regulator_probe error pathAxel Lin2012-03-261-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | We do not hold a lock while registering regulator, thus should not call unlock if regulator_register fails. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: Fix set and get current limit for wm831x_buckvAxel Lin2012-03-261-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | WM831X_DC1_HC_THR_MASK is 0x0070. We need to do proper shift for setting and getting current limit. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| | * regulator: tps6586x: Fix list minimal voltage setting for LDO0Axel Lin2012-03-261-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to the datasheet, LDO0 has minimal voltage 1.2V rather than 1.25V. Table 3-39. VLDO0[2:0] Settings VLDOx[2:0] VOUT (V) VLDOx[2:0] VOUT (V) 000 1.20 100 2.70 001 1.50 101 2.85 010 1.80 110 3.10 011 2.50 111 3.30 Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* | | regulator: Fix build error for mc13783 and mc13892Axel Lin2012-04-102-5/+15
| | | | | | | | | | | | | | | | | | | | | | | | Convert mc13783 and mc13892 to use a struct to pass in regulator runtime configuration. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* | | regulator: Fix a typo in da903x.cAxel Lin2012-04-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix below build errors which is introduced by commit c172708 "regulator: core: Use a struct to pass in regulator runtime configuration". CC drivers/regulator/da903x.o drivers/regulator/da903x.c: In function 'da903x_regulator_probe': drivers/regulator/da903x.c:541: error: 'conifg' undeclared (first use in this function) drivers/regulator/da903x.c:541: error: (Each undeclared identifier is reported only once drivers/regulator/da903x.c:541: error: for each function it appears in.) make[2]: *** [drivers/regulator/da903x.o] Error 1 make[1]: *** [drivers/regulator] Error 2 make: *** [drivers] Error 2 Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* | | regulator: Fix build of ab8500Mark Brown2012-04-101-3/+3
| | | | | | | | | | | | | | | Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* | | regulator: core: Use a struct to pass in regulator runtime configurationMark Brown2012-04-0943-113/+299
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than adding new arguments to regulator_register() every time we want to add a new bit of dynamic information at runtime change the function to take these via a struct. By doing this we avoid needing to do further changes like the recent addition of device tree support which required each regulator driver to be updated to take an additional parameter. The regulator_desc which should (mostly) be static data is still passed separately as most drivers are able to configure this statically at build time. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
* | | Merge branch 'regulator-register' into regulator-driversMark Brown2012-04-0915-15/+16
|\ \ \
| * | | regulator: max8649: Constify regulator_descAxel Lin2012-04-061-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| * | | regulator: max1586: Constify regulator_descAxel Lin2012-04-061-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| * | | regulator: tps65217: Constify regulator_descAxel Lin2012-04-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Acked-by: AnilKumar Ch <anilkumar@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| * | | regulator: tps6105x: Constify regulator_descAxel Lin2012-04-061-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| * | | regulator: max8952: Constify regulator_descAxel Lin2012-04-061-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| * | | regulator: max8660: Constify regulator_descAxel Lin2012-04-061-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| * | | regulator: pcap: Constify regulator_descAxel Lin2012-04-051-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| * | | regulator: lp3972: Constify regulator_descAxel Lin2012-04-051-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| * | | regulator: lp3971: Constify regulator_descAxel Lin2012-04-051-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| * | | regulator: isl6271a: Constify regulator_descAxel Lin2012-04-051-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| * | | regulator: pcf50633: Constify regulator_descAxel Lin2012-04-051-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| * | | regulator: ad5398: Constify regulator_descAxel Lin2012-04-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Axel Lin <axel.lin@gmail.com> Acked-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| * | | regulator: wm8994: Constify regulator_descMark Brown2012-04-041-1/+1
| | | | | | | | | | | | | | | | Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| * | | regulator: wm8350: Constify regulator_descMark Brown2012-04-041-1/+1
| | | | | | | | | | | | | | | | Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>