summaryrefslogtreecommitdiff
path: root/drivers/regulator
AgeCommit message (Collapse)AuthorFilesLines
2013-09-17regulator: core: Provide managed regulator registrationMark Brown1-0/+66
Many regulator drivers have a remove function that consists solely of calling regulator_unregister() so provide a devm_regulator_register() in order to allow this repeated code to be removed and help eliminate error handling code. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-09-17regulator: wm831x-ldo: Use devm_request_threaded_irq()Mark Brown1-9/+7
devm guarantees that resources are freed in the oposite order to that in which they are allocated. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-09-17regulator: wm831x-isink: Use devm_request_threaded_irq()Mark Brown1-4/+4
devm guarantees that resources are freed in the opposite order to that in which they are allocated. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-09-17regulator: wm831x-dcdc: Convert to devm_request_threaded_irq()Mark Brown1-22/+14
devm guarantees that resources are freed in the opposite order to that in which they are registered. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-09-17regulator: wm831x-dcdc: Convert to devm_gpio_request_one()Mark Brown1-10/+8
Saves code in the unwind path. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-09-17regulator: da9063: Add missing initialization of da9063_reg_matchesGeert Uytterhoeven1-1/+1
With gcc 4.1.2: drivers/regulator/da9063-regulator.c: In function ‘da9063_regulator_probe’: drivers/regulator/da9063-regulator.c:847: warning: ‘da9063_reg_matches’ is used uninitialized in this function If the parent device already has platform data, da9063_reg_matches will not be initialized. Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-09-10regulator: fixed: get rid of {get|list}_voltage()Laxman Dewangan1-26/+2
Provide the rail supply voltage through descriptor to the core and remove the callbacks which implement the get_voltage and list_voltage. Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-09-10regulator: core: provide fixed voltage in desc for single voltage railLaxman Dewangan1-1/+4
If given rail has the single voltage (n_voltages = 1) then provide the rail voltage through regulator descriptor so that core can use this value for finding voltage. This will avoid the implementation of the callback for get_voltage() or list_voltage() callback on regulator driver. Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-09-10regulator: da9063: Fix PTR_ERR/ERR_PTR mismatchGeert Uytterhoeven1-1/+1
If CONFIG_OF=n: drivers/regulator/da9063-regulator.c: In function ‘da9063_parse_regulators_dt’: drivers/regulator/da9063-regulator.c:712: warning: passing argument 1 of ‘PTR_ERR’ makes pointer from integer without a cast drivers/regulator/da9063-regulator.c:712: warning: return makes pointer from integer without a cast Use ERR_PTR() to encode an error code in a pointer. PTR_ERR() is meant to decode an error code from a pointer. Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-09-10regulator: palmas: configure enable time for LDOsLaxman Dewangan1-0/+6
As per datasheet (Referred TPS65913), the on-time for LDO is 500micro second. If LDO6 is in vibrator mode then the on-time is 2000us. Set the enable_time on regulator descriptor accordingly. Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-09-05Merge tag 'PTR_RET-for-linus' of ↵Linus Torvalds1-1/+1
git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux Pull PTR_RET() removal patches from Rusty Russell: "PTR_RET() is a weird name, and led to some confusing usage. We ended up with PTR_ERR_OR_ZERO(), and replacing or fixing all the usages. This has been sitting in linux-next for a whole cycle" [ There are still some PTR_RET users scattered about, with some of them possibly being new, but most of them existing in Rusty's tree too. We have that #define PTR_RET(p) PTR_ERR_OR_ZERO(p) thing in <linux/err.h>, so they continue to work for now - Linus ] * tag 'PTR_RET-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux: GFS2: Replace PTR_RET with PTR_ERR_OR_ZERO Btrfs: volume: Replace PTR_RET with PTR_ERR_OR_ZERO drm/cma: Replace PTR_RET with PTR_ERR_OR_ZERO sh_veu: Replace PTR_RET with PTR_ERR_OR_ZERO dma-buf: Replace PTR_RET with PTR_ERR_OR_ZERO drivers/rtc: Replace PTR_RET with PTR_ERR_OR_ZERO mm/oom_kill: remove weird use of ERR_PTR()/PTR_ERR(). staging/zcache: don't use PTR_RET(). remoteproc: don't use PTR_RET(). pinctrl: don't use PTR_RET(). acpi: Replace weird use of PTR_RET. s390: Replace weird use of PTR_RET. PTR_RET is now PTR_ERR_OR_ZERO(): Replace most. PTR_RET is now PTR_ERR_OR_ZERO
2013-09-04regulator: palmas: fix the n_voltages for smps to 122Laxman Dewangan1-1/+1
With the following change --------- commit ad02e846878ca35e9d3fa584be8ee770e9e14fce Author: Axel Lin <axel.lin@ingics.com> regulator: palmas: Return raw register values as the selectors in [get|set]_voltage_sel Don't adjust the selector in [get|set]_voltage_sel, fix it in list_voltage() instead. For smps*(except smps10), the vsel reg-value and voltage mapping as below: ---------- The list_voltage() takes the true value of selector which is programmed in the register. As per smsp voltage table reg-value volt (uV) ( Assume RANGE is x1 ) 0 0 1 500000 2 500000 3 500000 4 500000 5 500000 6 500000 (0.49V + 1 * 0.01V) * RANGE 7 510000 (0.49V + 2 * 0.01V) * RANGE 8 520000 (0.49V + 3 * 0.01V) * RANGE 9 530000 (0.49V + 4 * 0.01V) * RANGE .... 121 1650000 (0.49V + 116 * 0.1) * RANGE Hence making n_voltages for smps to 122. Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-09-01Merge remote-tracking branch 'regulator/topic/tps65912' into regulator-nextMark Brown1-20/+19
2013-09-01Merge remote-tracking branch 'regulator/topic/ti-abb' into regulator-nextMark Brown1-10/+0
2013-09-01Merge remote-tracking branch 'regulator/topic/sec' into regulator-nextMark Brown1-45/+200
2013-09-01Merge remote-tracking branch 'regulator/topic/ramp' into regulator-nextMark Brown2-6/+13
2013-09-01Merge remote-tracking branch 'regulator/topic/pfuze100' into regulator-nextMark Brown3-0/+454
2013-09-01Merge remote-tracking branch 'regulator/topic/palmas' into regulator-nextMark Brown1-6/+24
2013-09-01Merge remote-tracking branch 'regulator/topic/optional' into regulator-nextMark Brown1-0/+89
2013-09-01Merge remote-tracking branch 'regulator/topic/max8660' into regulator-nextMark Brown38-52/+140
2013-09-01Merge remote-tracking branch 'regulator/topic/lp8755' into regulator-nextMark Brown1-0/+1
2013-09-01Merge remote-tracking branch 'regulator/topic/lp872x' into regulator-nextMark Brown1-4/+5
2013-09-01Merge remote-tracking branch 'regulator/topic/linear-range' into regulator-nextMark Brown1-145/+37
2013-09-01Merge remote-tracking branch 'regulator/topic/kconfig' into regulator-nextMark Brown1-6/+6
2013-09-01Merge remote-tracking branch 'regulator/topic/helpers' into regulator-nextMark Brown4-463/+458
2013-09-01Merge remote-tracking branch 'regulator/topic/da9063' into regulator-nextMark Brown5-0/+1440
2013-09-01Merge remote-tracking branch 'regulator/topic/core' into regulator-nextMark Brown1-18/+26
2013-09-01Merge remote-tracking branch 'regulator/topic/as3711' into regulator-nextMark Brown1-132/+31
2013-09-01regulator: da9063: Statize da9063_ldo_lim_eventAxel Lin1-1/+1
da9063_ldo_lim_event() is only referenced in this driver, make it static. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-30regulator: lp872x: Make REGULATOR_LP872X depend on I2C rather than I2C=yAxel Lin1-1/+1
lp872x regulator driver can be built a module after commit 631a1fc "regulator: build: Allow most regulators to be built as modules". Make REGULATOR_LP872X depend on I2C to allow building lp872x module when I2C=m. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-30regulator: tps65217: Convert to use linear rangesAxel Lin1-145/+37
Below is the equation in original code: tps65217_uv1_ranges: 0 ... 24: uV = vsel * 25000 + 900000; 25 ... 52: uV = (vsel - 24) * 50000 + 1500000; = (vsel - 25) * 50000 + 1550000; 53 ... 55: uV = (vsel - 52) * 100000 + 2900000; = (vsel - 53) * 100000 + 3000000; 56 ... 62: uV = 3300000; tps65217_uv2_ranges: 0 ... 8: uV = vsel * 50000 + 1500000; 9 ... 13: uV = (vsel - 8) * 100000 + 1900000; = (vsel - 9) * 100000 + 2000000; 14 ... 31: uV = (vsel - 13) * 50000 + 2400000; = (vsel - 14) * 50000 + 2450000; The voltage tables are composed of linear ranges. This patch converts this driver to use multiple linear ranges APIs. In original code, voltage range for DCDC1 is 900000 ~ 1800000 and voltage range for DCDC3 is 900000 ~ 1500000. This patch separates the range 25~52 in tps65217_uv1_ranges table to two linear ranges: 25~30 and 31~52. This change makes it possible to reuse the same linear_ranges table for DCDCx. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-30regulator: da9063: Use IS_ERR to check return value of regulator_register()Axel Lin1-1/+1
regulator_register() does not return NULL, it returns ERR_PTR on error. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-30regulator: da9063: Optimize da9063_set_current_limit implementationAxel Lin1-11/+4
All the current limit tables have the values in ascend order. So we can slightly optimize the for loop iteration because the first match is the minimal value. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-29regulator: build: Allow most regulators to be built as modulesMark Brown1-5/+5
Mostly for testing without bloating the kernel image rather than actual utility. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-29regulator: Add devm_regulator_get_exclusive()Matthias Kaehlcke1-0/+30
Add a resource managed regulator_get_exclusive() Signed-off-by: Matthias Kaehlcke <matthias@kaehlcke.net> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-29regulator: da9063: Add Dialog DA9063 voltage regulators support.Krystian Garbaciak3-0/+952
The driver adds support for the following DA9063 PMIC regulators: - 11x LDOs (named LDO1 - LDO11), - 6x buck converters (BCORE1, BCORE2, BPRO, BMEM, BIO, BPERI), Regulators provide following operations: - REGULATOR_CHANGE_STATUS and REGULATOR_CHANGE_VOLTAGE for all regulators, - REGULATOR_CHANGE_MODE for LDOs and buck converters, where: - LDOs allow REGULATOR_MODE_NORMAL and REGULATOR_MODE_STANDBY, - buck converters allow REGULATOR_MODE_FAST, REGULATOR_MODE_NORMAL and REGULATOR_MODE_STANDBY, - REGULATOR_CHANGE_CURRENT for buck converters (current limits). The driver generates REGULATOR_EVENT_OVER_CURRENT for LDO3, LDO4, LDO7, LDO8 and LDO11. Internally, PMIC provides two voltage configurations for normal and suspend system state for each regulator. The driver switches between those on suspend/wake-up to provide quick and fluent output voltage change. This driver requires MFD core driver for operation. Signed-off-by: Krystian Garbaciak <krystian.garbaciak@diasemi.com> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-22regulator: ti-abb: simplify platform_get_resource_byname/devm_ioremap_resourceJulia Lawall1-10/+0
Remove unneeded error handling on the result of a call to platform_get_resource_byname when the value is passed to devm_ioremap_resource. A simplified version of the semantic patch that makes this change is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression pdev,res,e,e1; expression ret != 0; identifier l; @@ res = platform_get_resource_byname(...); - if (res == NULL) { ... \(goto l;\|return ret;\) } e = devm_ioremap_resource(e1, res); // </smpl> Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-18regulator: core: Use bool for exclusivitity flagMark Brown1-3/+3
Just for neatness. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-14regulator: 88pm800: forever loop in pm800_regulator_probe()Dan Carpenter1-1/+1
This is supposed to be testing "i < ARRAY_SIZE()" instead of just "ARRAY_SIZE()". Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-13regulator: da9210: Remove redundant MODULE_ALIASAxel Lin1-1/+0
The modalias is set by the MODULE_DEVICE_TABLE, thus remove redundant MODULE_ALIAS. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-13regulator: 88pm800: Fix checking whether num_regulator is validAxel Lin1-3/+6
The code to check whether num_regulator is valid is wrong because it should iterate all array entries rather than break from the for loop if pdata->regulators[i] is NULL. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-13regulator: s2mps11: Fix setting ramp_delayAxel Lin1-2/+6
Current code has wrong mask and val arguments for updating ramp_delay. Fix it. Also ensure the return value of get_ramp_delay() won't greater than 3 because the mask field for ramp_val only takes 2 bits. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-13regulator: s2mps11: Fix wrong arguments for regmap_update_bits() callAxel Lin1-2/+2
Current code calls regmap_update_bits() with mask and val arguments swapped. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-12regulator: palmas: model SMPS10 as two regulatorsKishon Vijay Abraham I1-6/+24
SMPS10 has two outputs OUT1 and OUT2 and have one input IN1. SMPS10-OUT2 is connected to SMPS10-IN1 and can be configured either in BOOST mode or BYPASS mode. regulator_enable of SMPS10-OUT2 configures it in BOOST mode. For BYPASS mode regulator_allow_bypass() API can be used. SMPS10-OUT1 is connected to SMPS10-OUT2 and can be enabled using regulator_enable(). [ axel.lin@ingics.com : Simplify regulator_desc setting for SMPS10_[OUT1|OUT2] Signed-off-by: J Keerthy <j-keerthy@ti.com> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-09regulator: core: Move list_voltage_{linear,linear_range,table} to helpers.cAxel Lin2-86/+86
Move regulator_list_voltage_{linear,linear_range,table} helper functions to helpers.c. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-08regulator: max8660: fix build warningsDaniel Mack1-3/+3
Fix a build warning for !CONFIG_OF and a cast from void* to unsigned int which is invalid on 64bit machines. Signed-off-by: Daniel Mack <zonque@gmail.com> Reported-by: Fengguang Wu <fengguang.wu@intel.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-07regulator: core: Move helpers for drivers out into a separate fileMark Brown3-342/+362
Reduce the size of core.c a bit. Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-07Merge remote-tracking branch 'regulator/topic/linear-range' into ↵Mark Brown5-187/+162
regulator-helpers
2013-08-06regulator: da9210: New driverSteve Twiss4-0/+496
I2C driver for the Dialog DA9210 Multi-phase 12A DC-DC Buck. Signed-off-by: Steve Twiss <stwiss.opensource@diasemi.com> Signed-off-by: David Dajun Chen <david.chen@diasemi.com> Signed-off-by: Mark Brown <broonie@linaro.org>
2013-08-02regulators: max8660: add DT bindingsDaniel Mack1-1/+81
This patch adds devicetree bindings for max8660, along with some documentation. Signed-off-by: Daniel Mack <zonque@gmail.com> Signed-off-by: Mark Brown <broonie@linaro.org>