Commit Graph

1303 Commits

Author SHA1 Message Date
Axel Lin 655efa0ff2 regulator: gpio-regulator: Use of_gpio_count()
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2013-01-29 00:44:17 +08:00
Mark Brown e3d5b2f570 Merge remote-tracking branch 'regulator/fix/s5m8767' into tmp 2013-01-15 09:38:59 +09:00
Mark Brown 3ab91da2f1 Merge remote-tracking branch 'regulator/fix/max8998' into tmp 2013-01-15 09:38:56 +09:00
Mark Brown c63184673e Merge remote-tracking branch 'regulator/fix/max8997' into tmp 2013-01-15 09:38:51 +09:00
Mark Brown a1ed63f4db Merge remote-tracking branch 'regulator/fix/core' into tmp 2013-01-15 09:38:27 +09:00
Axel Lin 81d0a6ae7b regulator: max8998: Ensure enough delay time for max8998_set_voltage_buck_time_sel
Use DIV_ROUND_UP to prevent truncation by integer division issue.
This ensures we return enough delay time.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org
2013-01-10 12:55:49 +00:00
Axel Lin adf6178ad5 regulator: max8998: Use uV in voltage_map_desc
Integer division may truncate.
This happens when pdata->buckx_voltagex setting is not align with 1000 uV.
Thus use uV in voltage_map_desc, this ensures the selected voltage won't less
than pdata buckx_voltagex settings.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org
2013-01-08 11:16:11 +00:00
Axel Lin bc3b7756b5 regulator: max8997: Use uV in voltage_map_desc
Current code does integer division (min_vol = min_uV / 1000) before pass
min_vol to max8997_get_voltage_proper_val().
So it is possible min_vol is truncated to a smaller value.

For example, if the request min_uV is 800900 for ldo.
min_vol = 800900 / 1000 = 800 (mV)
Then max8997_get_voltage_proper_val returns 800 mV for this case which is lower
than the requested voltage.

Use uV rather than mV in voltage_map_desc to prevent truncation by integer
division.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: stable@vger.kernel.org
2013-01-08 11:14:35 +00:00
Greg Kroah-Hartman 3d68dfe324 Drivers: regulator: remove __dev* attributes.
CONFIG_HOTPLUG is going away as an option.  As a result, the __dev*
markings need to be removed.

This change removes the use of __devinit, __devexit_p, __devinitdata,
__devinitconst, and __devexit from these drivers.

Based on patches originally written by Bill Pemberton, but redone by me
in order to handle some of the coding style issues better, by hand.

Cc: Bill Pemberton <wfp5p@virginia.edu>
Cc: Liam Girdwood <lrg@ti.com>
Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-03 15:57:04 -08:00
Axel Lin 0384618a79 regulator: core: Fix comment for regulator_register()
regulator_register() does not return 0 on success, fix the comment.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2013-01-03 13:02:39 +00:00
Axel Lin 19280e4071 regulator: core: Fix continuous_voltage_range case in regulator_can_change_voltage
Regulator drivers with continuous_voltage_range flag set allows not setting
n_voltages. Thus if continuous_voltage_range is set, check the constraint range
instead.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-24 16:30:44 +00:00
Inderpal Singh 3ef303988c regulator: s5m8767: Fix probe failure due to stack corruption
The function sec_reg_read invokes regmap_read which expects unsigned int *
as the destination address. The existing driver is passing address of local
variable "val" which is u8. This causes the stack corruption and following
dump is observed during probe.

Hence change "val" from u8 to unsigned int.

Unable to handle kernel paging request at virtual address 02410020
pgd = c0004000
[02410020] *pgd=00000000
Internal error: Oops: 80000005 [#1] PREEMPT SMP ARM
Modules linked in:
CPU: 0    Not tainted  (3.6.0-00696-g98a28b18-dirty #27)
PC is at 0x2410020
LR is at _regulator_get_voltage+0x3c/0x70
pc : [<02410020>]    lr : [<c02395d4>]    psr: 20000013
sp : cf839b68  ip : 00000000  fp : cf92d410
r10: 0000cfd0  r9 : c06d9878  r8 : 0000f0a0
r7 : cf839b70  r6 : cf92d400  r5 : 00000011  r4 : cf000000
r3 : 02410020  r2 : 00000000  r1 : 00000048  r0 : cf000000
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
...........................
.................................

[<c02395d4>] (_regulator_get_voltage+0x3c/0x70) from [<c023ad80>] (print_constraints+0x50/0x36c)
[<c023ad80>] (print_constraints+0x50/0x36c) from [<c023e504>] (set_machine_constraints+0xe8/0x2b0)
[<c023e504>] (set_machine_constraints+0xe8/0x2b0) from [<c023e9c8>] (regulator_register+0x2fc/0x604)
[<c023e9c8>] (regulator_register+0x2fc/0x604) from [<c049d628>] (s5m8767_pmic_probe+0x688/0x718)
[<c049d628>] (s5m8767_pmic_probe+0x688/0x718) from [<c029915c>] (platform_drv_probe+0x18/0x1c)
[<c029915c>] (platform_drv_probe+0x18/0x1c) from [<c0297dd0>] (really_probe+0x68/0x1f4)
[<c0297dd0>] (really_probe+0x68/0x1f4) from [<c0298070>] (driver_probe_device+0x30/0x48)

Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-24 16:24:37 +00:00
Mark Brown 4ffc45c360 Merge remote-tracking branch 'regulator/topic/sm8767' into regulator-next 2012-12-11 21:44:55 +09:00
Mark Brown f3cd19c38c Merge remote-tracking branch 'regulator/topic/change' into regulator-next 2012-12-11 21:44:53 +09:00
Axel Lin 8a23b4e03d regulator: core: Fix logic to determinate if regulator can change voltage
Having a linear_min_sel setting means the first linear_min_sel selectors are
invalid. We need to subtract linear_min_sel when use n_voltages to determinate
if regulator can change voltage.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-11 21:44:23 +09:00
Mark Brown b17fc86cc5 Merge branch 'topic/min' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator into regulator-change 2012-12-11 21:44:17 +09:00
Amit Daniel Kachhap 76c854d1df regulator: s5m8767: Fix to work even if no DVS gpio present
Signed-off-by: Amit Daniel Kachhap <amit.daniel@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-11 12:44:05 +09:00
Amit Daniel Kachhap da130ab2df regulator: s5m8767: Fix to read the first DVS register.
This patch modifies the DVS register read function to select correct DVS1
register. This change is required because the GPIO select pin is 000 in
unintialized state and hence selects the DVS1 register.

Signed-off-by: Amit Daniel Kachhap <amit.daniel@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-11 12:44:05 +09:00
Amit Daniel Kachhap 9bb096ff37 regulator: s5m8767: Fix to work when platform registers less regulators
Signed-off-by: Amit Daniel Kachhap <amit.daniel@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-11 12:44:04 +09:00
Mark Brown bfd9155ebb Merge remote-tracking branch 'regulator/topic/gpio' into regulator-next 2012-12-10 23:14:11 +09:00
Lee Jones 3708903ee6 regulator: gpio-regulator: gpio_set_value should use cansleep
If it's possible for gpio_set_value to sleep, we should be using
the *_cansleep call instead. This patch fixes multiple warnings
from gpiolib.

Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-10 23:12:41 +09:00
Lee Jones ad0b8b9e82 regulator: gpio-regulator: Fix logical error in for() loop
The cond-statement of this particular for() loop will always be
true as long as at least one voltage-shifting GPIO is present.
If it wasn't for the break below, we'd be stuck in a forever loop.
This patch inserts the correct cond-statement into the statement.

Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-10 23:12:41 +09:00
Mark Brown 925f14dc2d Merge remote-tracking branch 'regulator/topic/wm831x' into regulator-next 2012-12-10 12:43:33 +09:00
Mark Brown 8ee005112d Merge remote-tracking branch 'regulator/topic/tps80031' into regulator-next 2012-12-10 12:43:32 +09:00
Mark Brown f1e0d5f138 Merge remote-tracking branch 'regulator/topic/tps65910' into regulator-next 2012-12-10 12:43:30 +09:00
Mark Brown 21e55ca406 Merge remote-tracking branch 'regulator/topic/tps6586x' into regulator-next 2012-12-10 12:43:29 +09:00
Mark Brown 41f5983236 Merge remote-tracking branch 'regulator/topic/tps65090' into regulator-next 2012-12-10 12:43:27 +09:00
Mark Brown f8c85fe186 Merge remote-tracking branch 'regulator/topic/tps516312' into regulator-next 2012-12-10 12:43:24 +09:00
Mark Brown 86caa905f3 Merge remote-tracking branch 'regulator/topic/s2mps11' into regulator-next 2012-12-10 12:43:19 +09:00
Mark Brown e6120461e5 Merge remote-tracking branch 'regulator/topic/palmas' into regulator-next 2012-12-10 12:43:17 +09:00
Mark Brown adca48f7c6 Merge remote-tracking branch 'regulator/topic/min' into regulator-next 2012-12-10 12:43:00 +09:00
Mark Brown 9e21867073 Merge remote-tracking branch 'regulator/topic/max8997' into regulator-next 2012-12-10 12:43:00 +09:00
Mark Brown f675649e70 Merge remote-tracking branch 'regulator/topic/max8973' into regulator-next 2012-12-10 12:42:59 +09:00
Mark Brown 9199addf4f Merge remote-tracking branch 'regulator/topic/max77686' into regulator-next 2012-12-10 12:42:58 +09:00
Mark Brown 0d2cff8b67 Merge remote-tracking branch 'regulator/topic/max1586' into regulator-next 2012-12-10 12:42:58 +09:00
Mark Brown a8bfb69e77 Merge remote-tracking branch 'regulator/topic/lp8788' into regulator-next 2012-12-10 12:42:57 +09:00
Mark Brown bdb7e45507 Merge remote-tracking branch 'regulator/topic/log' into regulator-next 2012-12-10 12:42:56 +09:00
Mark Brown 1f9cc5f771 Merge remote-tracking branch 'regulator/topic/hotplug' into regulator-next 2012-12-10 12:42:55 +09:00
Mark Brown 207f30894a Merge remote-tracking branch 'regulator/topic/gpio' into regulator-next 2012-12-10 12:42:54 +09:00
Mark Brown db58e0270c Merge remote-tracking branch 'regulator/topic/da9055' into regulator-next 2012-12-10 12:42:53 +09:00
Mark Brown 4e62cce2b6 Merge remote-tracking branch 'regulator/topic/da9052' into regulator-next 2012-12-10 12:42:53 +09:00
Mark Brown 6234427eb8 Merge remote-tracking branch 'regulator/topic/change' into regulator-next 2012-12-10 12:42:52 +09:00
Mark Brown b0e5997ef4 Merge remote-tracking branch 'regulator/topic/as3711' into regulator-next 2012-12-10 12:42:51 +09:00
Mark Brown 7cac646816 Merge remote-tracking branch 'regulator/topic/arizona' into regulator-next 2012-12-10 12:42:51 +09:00
Axel Lin e1b0144f99 regulator: anatop: Use regulator_[get|set]_voltage_sel_regmap
Call regulator_[get|set]_voltage_sel_regmap instead of open code.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Reviewed-by: Ying-Chun Liu <paulliu@debian.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-10 12:38:59 +09:00
Axel Lin 985884db50 regulator: anatop: Use linear_min_sel with linear mapping
By setting linear_min_sel to anatop_reg->min_bit_val, we can avoid
adjust the anatop_reg->min_bit_val offset in [set|get]_voltage_sel.

With this chance we can refactor this driver to use
regulator_[get|set]_voltage_sel_regmap.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Reviewed-by: Ying-Chun Liu <paulliu@debian.org>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-10 12:38:09 +09:00
Axel Lin 4efd9dfecb regulator: max1586: Implement get_voltage_sel callback
This is required since commit f7df20ec32
"regulator: core: Use list_voltage() to read single voltage regulators",
otherwise _regulator_get_voltage returns rdev->desc->ops->list_voltage(rdev, 0).

The Maxim 1586 controls V3 and V6 voltages, but offers no way of reading back
the set up value. Thus this patch caches the setting when setting new voltage.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-10 12:23:56 +09:00
Axel Lin 131a5b9d82 regulator: lp8788-buck: Kill _gpio_request function
Simply use devm_gpio_request_one() instead.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Acked-by: Milo(Woogyom) Kim <milo.kim@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-10 12:18:43 +09:00
Axel Lin 7fa8a59757 regulator: tps80031: Convert tps80031_ldo_ops to linear_min_sel and list_voltage_linear
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-07 15:24:12 +09:00
Axel Lin 40b5aa8f0d regulator: lp8788-ldo: Remove val array in lp8788_config_ldo_enable_mode
To clear the mask bit, setting data argument to be 0 with proper mask setting
for lp8788_update_bits. We don't need the var array here.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Acked-by: Milo(Woogyom) Kim <milo.kim@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2012-12-07 14:24:13 +09:00