linux/drivers/base
Viresh Kumar c88c395f4a PM / OPP: Initialize u_volt_min/max to a valid value
We kept u_volt_min/max initialized to 0, when only the target voltage is
present in DT, instead of the target/min/max triplet.

This didn't go well with the regulator framework, as on few calls the
min voltage was set to target and max was set to 0 and so resulted in a
kernel crash like below:

kernel BUG at ../drivers/regulator/core.c:216!

[<c0684af4>] (regulator_check_voltage) from [<c06857ac>] (regulator_set_voltage_unlocked+0x58/0x230)
[<c06857ac>] (regulator_set_voltage_unlocked) from [<c06859ac>] (regulator_set_voltage+0x28/0x54)
[<c06859ac>] (regulator_set_voltage) from [<c0775b28>] (_set_opp_voltage+0x30/0x98)
[<c0775b28>] (_set_opp_voltage) from [<c0776630>] (dev_pm_opp_set_rate+0xf0/0x28c)
[<c0776630>] (dev_pm_opp_set_rate) from [<c096f784>] (__cpufreq_driver_target+0x184/0x2b4)
[<c096f784>] (__cpufreq_driver_target) from [<c0973760>] (dbs_check_cpu+0x1b0/0x1f4)
[<c0973760>] (dbs_check_cpu) from [<c0973f30>] (cpufreq_governor_dbs+0x324/0x5c4)
[<c0973f30>] (cpufreq_governor_dbs) from [<c0970958>] (__cpufreq_governor+0xe4/0x1ec)
[<c0970958>] (__cpufreq_governor) from [<c09711e0>] (cpufreq_init_policy+0x64/0x8c)
[<c09711e0>] (cpufreq_init_policy) from [<c09718cc>] (cpufreq_online+0x2fc/0x708)
[<c09718cc>] (cpufreq_online) from [<c0765ff0>] (subsys_interface_register+0x94/0xd8)
[<c0765ff0>] (subsys_interface_register) from [<c0970530>] (cpufreq_register_driver+0x14c/0x19c)
[<c0970530>] (cpufreq_register_driver) from [<c09746dc>] (dt_cpufreq_probe+0x70/0xec)
[<c09746dc>] (dt_cpufreq_probe) from [<c076907c>] (platform_drv_probe+0x4c/0xb0)
[<c076907c>] (platform_drv_probe) from [<c07678e0>] (driver_probe_device+0x214/0x2c0)
[<c07678e0>] (driver_probe_device) from [<c0767a18>] (__driver_attach+0x8c/0x90)
[<c0767a18>] (__driver_attach) from [<c0765c2c>] (bus_for_each_dev+0x68/0x9c)
[<c0765c2c>] (bus_for_each_dev) from [<c0766d78>] (bus_add_driver+0x1a0/0x218)
[<c0766d78>] (bus_add_driver) from [<c076810c>] (driver_register+0x78/0xf8)
[<c076810c>] (driver_register) from [<c0301d74>] (do_one_initcall+0x90/0x1d8)
[<c0301d74>] (do_one_initcall) from [<c1100e14>] (kernel_init_freeable+0x15c/0x1fc)
[<c1100e14>] (kernel_init_freeable) from [<c0b27a0c>] (kernel_init+0x8/0xf0)
[<c0b27a0c>] (kernel_init) from [<c0307d78>] (ret_from_fork+0x14/0x3c)
Code: e1550004 baffffeb e3a00000 e8bd8070 (e7f001f2)

Fix that by initializing u_volt_min/max to the target voltage in such cases.

Reported-and-tested-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Fixes: 274659029c (PM / OPP: Add support to parse "operating-points-v2" bindings)
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2016-02-15 22:55:35 +01:00
..
power PM / OPP: Initialize u_volt_min/max to a valid value 2016-02-15 22:55:35 +01:00
regmap Merge remote-tracking branches 'regmap/topic/mmio', 'regmap/topic/rbtree' and 'regmap/topic/seq' into regmap-next 2016-01-05 19:07:18 +00:00
attribute_container.c attribute_container: fix missing blank lines after declarations 2015-03-25 14:35:09 +01:00
base.h PM / sleep: prohibit devices probing during suspend/hibernation 2015-11-30 14:47:22 +01:00
bus.c driver-core: add asynchronous probing support for drivers 2015-05-20 00:25:24 -07:00
cacheinfo.c cpu/cacheinfo: Fix teardown path 2015-09-17 06:06:54 -07:00
class.c class_find_device: fix reference to argument "match" 2015-09-29 15:23:14 +02:00
component.c component: add support for releasing match data 2015-12-07 00:02:05 +00:00
container.c ACPI / hotplug / driver core: Handle containers in a special way 2013-12-29 15:25:48 +01:00
core.c driver core: Do not overwrite secondary fwnode with NULL if it is set 2015-12-07 02:29:23 +01:00
cpu.c drivers/base/cpu.c: use __cpu_*_mask directly 2016-01-20 17:09:18 -08:00
dd.c driver core: Avoid NULL pointer dereferences in device_is_bound() 2016-01-12 01:51:44 +01:00
devcoredump.c devcoredump: provide a one-way disable function 2014-11-26 19:40:12 -08:00
devres.c devm: make allocations numa aware by default 2015-10-09 17:00:33 -04:00
devtmpfs.c wrappers for ->i_mutex access 2016-01-22 18:04:28 -05:00
dma-coherent.c drivers: dma-coherent: add initialization from device tree 2014-10-14 02:18:12 +02:00
dma-contiguous.c driver core update for 4.4-rc1 2015-11-04 21:50:37 -08:00
dma-mapping.c dma-mapping: remove <asm-generic/dma-coherent.h> 2016-01-20 17:09:18 -08:00
driver.c driver core: add missing blank line after declaration 2015-03-25 14:36:30 +01:00
firmware.c
firmware_class.c firmware: actually return NULL on failed request_firmware_nowait() 2016-01-07 13:45:34 -07:00
hypervisor.c
init.c drivers: of/base: move of_init to driver_init 2015-05-26 19:55:56 -07:00
isa.c
Kconfig cma: make default CMA area size zero for x86 2014-12-10 17:41:06 -08:00
Makefile drivers/base: Add MSI domain support for non-PCI devices 2015-07-30 00:14:38 +02:00
map.c drivers: base: map: Use kmalloc_array instead of kmalloc 2015-03-25 14:35:08 +01:00
memory.c mm: skip memory block registration for ZONE_DEVICE 2016-01-15 17:56:32 -08:00
module.c
node.c Revert "mm: Check if section present during memory block (un)registering" 2015-10-13 10:57:25 -07:00
pinctrl.c drivers/pinctrl: Add the concept of an "init" state 2015-10-27 11:24:23 +01:00
platform-msi.c base: Export platform_msi_domain_[alloc,free]_irqs 2016-01-26 16:33:25 +01:00
platform.c base/platform: Fix platform drivers with no probe callback 2016-01-26 08:47:25 -08:00
property.c device property: avoid allocations of 0 length 2016-01-01 02:09:51 +01:00
soc.c base: soc: siplify ida usage 2015-10-04 19:42:22 +01:00
syscore.c genirq: Simplify wakeup mechanism 2014-09-01 13:48:59 +02:00
topology.c sched/topology: Rename topology_thread_cpumask() to topology_sibling_cpumask() 2015-05-27 15:22:15 +02:00
transport_class.c