Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
924ee2c9
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
924ee2c9
编写于
11月 23, 2011
作者:
M
Mark Brown
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'regulator/topic/dt' into regulator-next
上级
68aaa37d
69511a45
变更
46
隐藏空白更改
内联
并排
Showing
46 changed file
with
367 addition
and
58 deletion
+367
-58
Documentation/devicetree/bindings/regulator/fixed-regulator.txt
...ntation/devicetree/bindings/regulator/fixed-regulator.txt
+29
-0
Documentation/devicetree/bindings/regulator/regulator.txt
Documentation/devicetree/bindings/regulator/regulator.txt
+54
-0
drivers/regulator/88pm8607.c
drivers/regulator/88pm8607.c
+1
-1
drivers/regulator/Makefile
drivers/regulator/Makefile
+1
-0
drivers/regulator/aat2870-regulator.c
drivers/regulator/aat2870-regulator.c
+1
-1
drivers/regulator/ab3100.c
drivers/regulator/ab3100.c
+1
-1
drivers/regulator/ab8500.c
drivers/regulator/ab8500.c
+1
-1
drivers/regulator/ad5398.c
drivers/regulator/ad5398.c
+1
-1
drivers/regulator/bq24022.c
drivers/regulator/bq24022.c
+1
-1
drivers/regulator/core.c
drivers/regulator/core.c
+69
-13
drivers/regulator/da903x.c
drivers/regulator/da903x.c
+1
-1
drivers/regulator/db8500-prcmu.c
drivers/regulator/db8500-prcmu.c
+1
-1
drivers/regulator/dummy.c
drivers/regulator/dummy.c
+1
-1
drivers/regulator/fixed.c
drivers/regulator/fixed.c
+66
-1
drivers/regulator/isl6271a-regulator.c
drivers/regulator/isl6271a-regulator.c
+1
-1
drivers/regulator/lp3971.c
drivers/regulator/lp3971.c
+1
-1
drivers/regulator/lp3972.c
drivers/regulator/lp3972.c
+1
-1
drivers/regulator/max1586.c
drivers/regulator/max1586.c
+1
-1
drivers/regulator/max8649.c
drivers/regulator/max8649.c
+1
-1
drivers/regulator/max8660.c
drivers/regulator/max8660.c
+1
-1
drivers/regulator/max8925-regulator.c
drivers/regulator/max8925-regulator.c
+1
-1
drivers/regulator/max8952.c
drivers/regulator/max8952.c
+1
-1
drivers/regulator/max8997.c
drivers/regulator/max8997.c
+1
-1
drivers/regulator/max8998.c
drivers/regulator/max8998.c
+1
-1
drivers/regulator/mc13783-regulator.c
drivers/regulator/mc13783-regulator.c
+1
-1
drivers/regulator/mc13892-regulator.c
drivers/regulator/mc13892-regulator.c
+1
-1
drivers/regulator/of_regulator.c
drivers/regulator/of_regulator.c
+81
-0
drivers/regulator/pcap-regulator.c
drivers/regulator/pcap-regulator.c
+1
-1
drivers/regulator/pcf50633-regulator.c
drivers/regulator/pcf50633-regulator.c
+1
-1
drivers/regulator/tps6105x-regulator.c
drivers/regulator/tps6105x-regulator.c
+2
-1
drivers/regulator/tps65023-regulator.c
drivers/regulator/tps65023-regulator.c
+1
-1
drivers/regulator/tps6507x-regulator.c
drivers/regulator/tps6507x-regulator.c
+1
-1
drivers/regulator/tps6524x-regulator.c
drivers/regulator/tps6524x-regulator.c
+1
-1
drivers/regulator/tps6586x-regulator.c
drivers/regulator/tps6586x-regulator.c
+1
-1
drivers/regulator/tps65910-regulator.c
drivers/regulator/tps65910-regulator.c
+1
-1
drivers/regulator/tps65912-regulator.c
drivers/regulator/tps65912-regulator.c
+1
-1
drivers/regulator/twl-regulator.c
drivers/regulator/twl-regulator.c
+1
-1
drivers/regulator/wm831x-dcdc.c
drivers/regulator/wm831x-dcdc.c
+4
-4
drivers/regulator/wm831x-isink.c
drivers/regulator/wm831x-isink.c
+1
-1
drivers/regulator/wm831x-ldo.c
drivers/regulator/wm831x-ldo.c
+3
-3
drivers/regulator/wm8350-regulator.c
drivers/regulator/wm8350-regulator.c
+1
-1
drivers/regulator/wm8400-regulator.c
drivers/regulator/wm8400-regulator.c
+1
-1
drivers/regulator/wm8994-regulator.c
drivers/regulator/wm8994-regulator.c
+1
-1
include/linux/regulator/driver.h
include/linux/regulator/driver.h
+3
-1
include/linux/regulator/of_regulator.h
include/linux/regulator/of_regulator.h
+20
-0
sound/soc/codecs/sgtl5000.c
sound/soc/codecs/sgtl5000.c
+1
-1
未找到文件。
Documentation/devicetree/bindings/regulator/fixed-regulator.txt
0 → 100644
浏览文件 @
924ee2c9
Fixed Voltage regulators
Required properties:
- compatible: Must be "regulator-fixed";
Optional properties:
- gpio: gpio to use for enable control
- startup-delay-us: startup time in microseconds
- enable-active-high: Polarity of GPIO is Active high
If this property is missing, the default assumed is Active low.
Any property defined as part of the core regulator
binding, defined in regulator.txt, can also be used.
However a fixed voltage regulator is expected to have the
regulator-min-microvolt and regulator-max-microvolt
to be the same.
Example:
abc: fixedregulator@0 {
compatible = "regulator-fixed";
regulator-name = "fixed-supply";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
gpio = <&gpio1 16 0>;
startup-delay-us = <70000>;
enable-active-high;
regulator-boot-on
};
Documentation/devicetree/bindings/regulator/regulator.txt
0 → 100644
浏览文件 @
924ee2c9
Voltage/Current Regulators
Optional properties:
- regulator-name: A string used as a descriptive name for regulator outputs
- regulator-min-microvolt: smallest voltage consumers may set
- regulator-max-microvolt: largest voltage consumers may set
- regulator-microvolt-offset: Offset applied to voltages to compensate for voltage drops
- regulator-min-microamp: smallest current consumers may set
- regulator-max-microamp: largest current consumers may set
- regulator-always-on: boolean, regulator should never be disabled
- regulator-boot-on: bootloader/firmware enabled regulator
- <name>-supply: phandle to the parent supply/regulator node
Example:
xyzreg: regulator@0 {
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <2500000>;
regulator-always-on;
vin-supply = <&vin>;
};
Regulator Consumers:
Consumer nodes can reference one or more of its supplies/
regulators using the below bindings.
- <name>-supply: phandle to the regulator node
These are the same bindings that a regulator in the above
example used to reference its own supply, in which case
its just seen as a special case of a regulator being a
consumer itself.
Example of a consumer device node (mmc) referencing two
regulators (twl-reg1 and twl-reg2),
twl-reg1: regulator@0 {
...
...
...
};
twl-reg2: regulator@1 {
...
...
...
};
mmc: mmc@0x0 {
...
...
vmmc-supply = <&twl-reg1>;
vmmcaux-supply = <&twl-reg2>;
};
drivers/regulator/88pm8607.c
浏览文件 @
924ee2c9
...
...
@@ -427,7 +427,7 @@ static int __devinit pm8607_regulator_probe(struct platform_device *pdev)
/* replace driver_data with info */
info
->
regulator
=
regulator_register
(
&
info
->
desc
,
&
pdev
->
dev
,
pdata
,
info
);
pdata
,
info
,
NULL
);
if
(
IS_ERR
(
info
->
regulator
))
{
dev_err
(
&
pdev
->
dev
,
"failed to register regulator %s
\n
"
,
info
->
desc
.
name
);
...
...
drivers/regulator/Makefile
浏览文件 @
924ee2c9
...
...
@@ -4,6 +4,7 @@
obj-$(CONFIG_REGULATOR)
+=
core.o dummy.o
obj-$(CONFIG_OF)
+=
of_regulator.o
obj-$(CONFIG_REGULATOR_FIXED_VOLTAGE)
+=
fixed.o
obj-$(CONFIG_REGULATOR_VIRTUAL_CONSUMER)
+=
virtual.o
obj-$(CONFIG_REGULATOR_USERSPACE_CONSUMER)
+=
userspace-consumer.o
...
...
drivers/regulator/aat2870-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -188,7 +188,7 @@ static int aat2870_regulator_probe(struct platform_device *pdev)
ri
->
pdev
=
pdev
;
rdev
=
regulator_register
(
&
ri
->
desc
,
&
pdev
->
dev
,
pdev
->
dev
.
platform_data
,
ri
);
pdev
->
dev
.
platform_data
,
ri
,
NULL
);
if
(
IS_ERR
(
rdev
))
{
dev_err
(
&
pdev
->
dev
,
"Failed to register regulator %s
\n
"
,
ri
->
desc
.
name
);
...
...
drivers/regulator/ab3100.c
浏览文件 @
924ee2c9
...
...
@@ -634,7 +634,7 @@ static int __devinit ab3100_regulators_probe(struct platform_device *pdev)
rdev
=
regulator_register
(
&
ab3100_regulator_desc
[
i
],
&
pdev
->
dev
,
&
plfdata
->
reg_constraints
[
i
],
reg
);
reg
,
NULL
);
if
(
IS_ERR
(
rdev
))
{
err
=
PTR_ERR
(
rdev
);
...
...
drivers/regulator/ab8500.c
浏览文件 @
924ee2c9
...
...
@@ -822,7 +822,7 @@ static __devinit int ab8500_regulator_probe(struct platform_device *pdev)
/* register regulator with framework */
info
->
regulator
=
regulator_register
(
&
info
->
desc
,
&
pdev
->
dev
,
&
pdata
->
regulator
[
i
],
info
);
&
pdata
->
regulator
[
i
],
info
,
NULL
);
if
(
IS_ERR
(
info
->
regulator
))
{
err
=
PTR_ERR
(
info
->
regulator
);
dev_err
(
&
pdev
->
dev
,
"failed to register regulator %s
\n
"
,
...
...
drivers/regulator/ad5398.c
浏览文件 @
924ee2c9
...
...
@@ -233,7 +233,7 @@ static int __devinit ad5398_probe(struct i2c_client *client,
chip
->
current_mask
=
(
chip
->
current_level
-
1
)
<<
chip
->
current_offset
;
chip
->
rdev
=
regulator_register
(
&
ad5398_reg
,
&
client
->
dev
,
init_data
,
chip
);
init_data
,
chip
,
NULL
);
if
(
IS_ERR
(
chip
->
rdev
))
{
ret
=
PTR_ERR
(
chip
->
rdev
);
dev_err
(
&
client
->
dev
,
"failed to register %s %s
\n
"
,
...
...
drivers/regulator/bq24022.c
浏览文件 @
924ee2c9
...
...
@@ -107,7 +107,7 @@ static int __init bq24022_probe(struct platform_device *pdev)
ret
=
gpio_direction_output
(
pdata
->
gpio_nce
,
1
);
bq24022
=
regulator_register
(
&
bq24022_desc
,
&
pdev
->
dev
,
pdata
->
init_data
,
pdata
);
pdata
->
init_data
,
pdata
,
NULL
);
if
(
IS_ERR
(
bq24022
))
{
dev_dbg
(
&
pdev
->
dev
,
"couldn't register regulator
\n
"
);
ret
=
PTR_ERR
(
bq24022
);
...
...
drivers/regulator/core.c
浏览文件 @
924ee2c9
...
...
@@ -25,6 +25,8 @@
#include <linux/mutex.h>
#include <linux/suspend.h>
#include <linux/delay.h>
#include <linux/of.h>
#include <linux/regulator/of_regulator.h>
#include <linux/regulator/consumer.h>
#include <linux/regulator/driver.h>
#include <linux/regulator/machine.h>
...
...
@@ -132,6 +134,33 @@ static struct regulator *get_device_regulator(struct device *dev)
return
NULL
;
}
/**
* of_get_regulator - get a regulator device node based on supply name
* @dev: Device pointer for the consumer (of regulator) device
* @supply: regulator supply name
*
* Extract the regulator device node corresponding to the supply name.
* retruns the device node corresponding to the regulator if found, else
* returns NULL.
*/
static
struct
device_node
*
of_get_regulator
(
struct
device
*
dev
,
const
char
*
supply
)
{
struct
device_node
*
regnode
=
NULL
;
char
prop_name
[
32
];
/* 32 is max size of property name */
dev_dbg
(
dev
,
"Looking up %s-supply from device tree
\n
"
,
supply
);
snprintf
(
prop_name
,
32
,
"%s-supply"
,
supply
);
regnode
=
of_parse_phandle
(
dev
->
of_node
,
prop_name
,
0
);
if
(
!
regnode
)
{
dev_warn
(
dev
,
"%s property in node %s references invalid phandle"
,
prop_name
,
dev
->
of_node
->
full_name
);
return
NULL
;
}
return
regnode
;
}
/* Platform voltage constraint check */
static
int
regulator_check_voltage
(
struct
regulator_dev
*
rdev
,
int
*
min_uV
,
int
*
max_uV
)
...
...
@@ -1148,6 +1177,30 @@ static int _regulator_get_enable_time(struct regulator_dev *rdev)
return
rdev
->
desc
->
ops
->
enable_time
(
rdev
);
}
static
struct
regulator_dev
*
regulator_dev_lookup
(
struct
device
*
dev
,
const
char
*
supply
)
{
struct
regulator_dev
*
r
;
struct
device_node
*
node
;
/* first do a dt based lookup */
if
(
dev
&&
dev
->
of_node
)
{
node
=
of_get_regulator
(
dev
,
supply
);
if
(
node
)
list_for_each_entry
(
r
,
&
regulator_list
,
list
)
if
(
r
->
dev
.
parent
&&
node
==
r
->
dev
.
of_node
)
return
r
;
}
/* if not found, try doing it non-dt way */
list_for_each_entry
(
r
,
&
regulator_list
,
list
)
if
(
strcmp
(
rdev_get_name
(
r
),
supply
)
==
0
)
return
r
;
return
NULL
;
}
/* Internal regulator request function */
static
struct
regulator
*
_regulator_get
(
struct
device
*
dev
,
const
char
*
id
,
int
exclusive
)
...
...
@@ -1168,6 +1221,10 @@ static struct regulator *_regulator_get(struct device *dev, const char *id,
mutex_lock
(
&
regulator_list_mutex
);
rdev
=
regulator_dev_lookup
(
dev
,
id
);
if
(
rdev
)
goto
found
;
list_for_each_entry
(
map
,
&
regulator_map_list
,
list
)
{
/* If the mapping has a device set up it must match */
if
(
map
->
dev_name
&&
...
...
@@ -2638,11 +2695,12 @@ static void rdev_init_debugfs(struct regulator_dev *rdev)
*/
struct
regulator_dev
*
regulator_register
(
struct
regulator_desc
*
regulator_desc
,
struct
device
*
dev
,
const
struct
regulator_init_data
*
init_data
,
void
*
driver_data
)
void
*
driver_data
,
struct
device_node
*
of_node
)
{
static
atomic_t
regulator_no
=
ATOMIC_INIT
(
0
);
struct
regulator_dev
*
rdev
;
int
ret
,
i
;
const
char
*
supply
=
NULL
;
if
(
regulator_desc
==
NULL
)
return
ERR_PTR
(
-
EINVAL
);
...
...
@@ -2697,6 +2755,7 @@ struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
/* register with sysfs */
rdev
->
dev
.
class
=
&
regulator_class
;
rdev
->
dev
.
of_node
=
of_node
;
rdev
->
dev
.
parent
=
dev
;
dev_set_name
(
&
rdev
->
dev
,
"regulator.%d"
,
atomic_inc_return
(
&
regulator_no
)
-
1
);
...
...
@@ -2718,21 +2777,18 @@ struct regulator_dev *regulator_register(struct regulator_desc *regulator_desc,
if
(
ret
<
0
)
goto
scrub
;
if
(
init_data
->
supply_regulator
)
{
if
(
init_data
->
supply_regulator
)
supply
=
init_data
->
supply_regulator
;
else
if
(
regulator_desc
->
supply_name
)
supply
=
regulator_desc
->
supply_name
;
if
(
supply
)
{
struct
regulator_dev
*
r
;
int
found
=
0
;
list_for_each_entry
(
r
,
&
regulator_list
,
list
)
{
if
(
strcmp
(
rdev_get_name
(
r
),
init_data
->
supply_regulator
)
==
0
)
{
found
=
1
;
break
;
}
}
r
=
regulator_dev_lookup
(
dev
,
supply
);
if
(
!
found
)
{
dev_err
(
dev
,
"Failed to find supply %s
\n
"
,
init_data
->
supply_regulator
);
if
(
!
r
)
{
dev_err
(
dev
,
"Failed to find supply %s
\n
"
,
supply
);
ret
=
-
ENODEV
;
goto
scrub
;
}
...
...
drivers/regulator/da903x.c
浏览文件 @
924ee2c9
...
...
@@ -537,7 +537,7 @@ static int __devinit da903x_regulator_probe(struct platform_device *pdev)
ri
->
desc
.
ops
=
&
da9030_regulator_ldo1_15_ops
;
rdev
=
regulator_register
(
&
ri
->
desc
,
&
pdev
->
dev
,
pdev
->
dev
.
platform_data
,
ri
);
pdev
->
dev
.
platform_data
,
ri
,
NULL
);
if
(
IS_ERR
(
rdev
))
{
dev_err
(
&
pdev
->
dev
,
"failed to register regulator %s
\n
"
,
ri
->
desc
.
name
);
...
...
drivers/regulator/db8500-prcmu.c
浏览文件 @
924ee2c9
...
...
@@ -486,7 +486,7 @@ static int __devinit db8500_regulator_probe(struct platform_device *pdev)
/* register with the regulator framework */
info
->
rdev
=
regulator_register
(
&
info
->
desc
,
&
pdev
->
dev
,
init_data
,
info
);
init_data
,
info
,
NULL
);
if
(
IS_ERR
(
info
->
rdev
))
{
err
=
PTR_ERR
(
info
->
rdev
);
dev_err
(
&
pdev
->
dev
,
"failed to register %s: err %i
\n
"
,
...
...
drivers/regulator/dummy.c
浏览文件 @
924ee2c9
...
...
@@ -42,7 +42,7 @@ static int __devinit dummy_regulator_probe(struct platform_device *pdev)
int
ret
;
dummy_regulator_rdev
=
regulator_register
(
&
dummy_desc
,
NULL
,
&
dummy_initdata
,
NULL
);
&
dummy_initdata
,
NULL
,
NULL
);
if
(
IS_ERR
(
dummy_regulator_rdev
))
{
ret
=
PTR_ERR
(
dummy_regulator_rdev
);
pr_err
(
"Failed to register regulator: %d
\n
"
,
ret
);
...
...
drivers/regulator/fixed.c
浏览文件 @
924ee2c9
...
...
@@ -27,6 +27,10 @@
#include <linux/gpio.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/of.h>
#include <linux/of_gpio.h>
#include <linux/regulator/of_regulator.h>
#include <linux/regulator/machine.h>
struct
fixed_voltage_data
{
struct
regulator_desc
desc
;
...
...
@@ -38,6 +42,53 @@ struct fixed_voltage_data {
bool
is_enabled
;
};
/**
* of_get_fixed_voltage_config - extract fixed_voltage_config structure info
* @dev: device requesting for fixed_voltage_config
*
* Populates fixed_voltage_config structure by extracting data from device
* tree node, returns a pointer to the populated structure of NULL if memory
* alloc fails.
*/
struct
fixed_voltage_config
*
of_get_fixed_voltage_config
(
struct
device
*
dev
)
{
struct
fixed_voltage_config
*
config
;
struct
device_node
*
np
=
dev
->
of_node
;
const
__be32
*
delay
;
struct
regulator_init_data
*
init_data
;
config
=
devm_kzalloc
(
dev
,
sizeof
(
struct
fixed_voltage_config
),
GFP_KERNEL
);
if
(
!
config
)
return
NULL
;
config
->
init_data
=
of_get_regulator_init_data
(
dev
);
init_data
=
config
->
init_data
;
config
->
supply_name
=
init_data
->
constraints
.
name
;
if
(
init_data
->
constraints
.
min_uV
==
init_data
->
constraints
.
max_uV
)
{
config
->
microvolts
=
init_data
->
constraints
.
min_uV
;
}
else
{
dev_err
(
dev
,
"Fixed regulator specified with variable voltages
\n
"
);
return
NULL
;
}
if
(
init_data
->
constraints
.
boot_on
)
config
->
enabled_at_boot
=
true
;
config
->
gpio
=
of_get_named_gpio
(
np
,
"gpio"
,
0
);
delay
=
of_get_property
(
np
,
"startup-delay-us"
,
NULL
);
if
(
delay
)
config
->
startup_delay
=
be32_to_cpu
(
*
delay
);
if
(
of_find_property
(
np
,
"enable-active-high"
,
NULL
))
config
->
enable_high
=
true
;
return
config
;
}
static
int
fixed_voltage_is_enabled
(
struct
regulator_dev
*
dev
)
{
struct
fixed_voltage_data
*
data
=
rdev_get_drvdata
(
dev
);
...
...
@@ -112,6 +163,9 @@ static int __devinit reg_fixed_voltage_probe(struct platform_device *pdev)
struct
fixed_voltage_data
*
drvdata
;
int
ret
;
if
(
pdev
->
dev
.
of_node
)
config
=
of_get_fixed_voltage_config
(
&
pdev
->
dev
);
drvdata
=
kzalloc
(
sizeof
(
struct
fixed_voltage_data
),
GFP_KERNEL
);
if
(
drvdata
==
NULL
)
{
dev_err
(
&
pdev
->
dev
,
"Failed to allocate device data
\n
"
);
...
...
@@ -183,7 +237,7 @@ static int __devinit reg_fixed_voltage_probe(struct platform_device *pdev)
}
drvdata
->
dev
=
regulator_register
(
&
drvdata
->
desc
,
&
pdev
->
dev
,
config
->
init_data
,
drvdata
);
config
->
init_data
,
drvdata
,
NULL
);
if
(
IS_ERR
(
drvdata
->
dev
))
{
ret
=
PTR_ERR
(
drvdata
->
dev
);
dev_err
(
&
pdev
->
dev
,
"Failed to register regulator: %d
\n
"
,
ret
);
...
...
@@ -220,12 +274,23 @@ static int __devexit reg_fixed_voltage_remove(struct platform_device *pdev)
return
0
;
}
#if defined(CONFIG_OF)
static
const
struct
of_device_id
fixed_of_match
[]
__devinitconst
=
{
{
.
compatible
=
"regulator-fixed"
,
},
{},
};
MODULE_DEVICE_TABLE
(
of
,
fixed_of_match
);
#else
#define fixed_of_match NULL
#endif
static
struct
platform_driver
regulator_fixed_voltage_driver
=
{
.
probe
=
reg_fixed_voltage_probe
,
.
remove
=
__devexit_p
(
reg_fixed_voltage_remove
),
.
driver
=
{
.
name
=
"reg-fixed-voltage"
,
.
owner
=
THIS_MODULE
,
.
of_match_table
=
fixed_of_match
,
},
};
...
...
drivers/regulator/isl6271a-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -170,7 +170,7 @@ static int __devinit isl6271a_probe(struct i2c_client *i2c,
for
(
i
=
0
;
i
<
3
;
i
++
)
{
pmic
->
rdev
[
i
]
=
regulator_register
(
&
isl_rd
[
i
],
&
i2c
->
dev
,
init_data
,
pmic
);
init_data
,
pmic
,
NULL
);
if
(
IS_ERR
(
pmic
->
rdev
[
i
]))
{
dev_err
(
&
i2c
->
dev
,
"failed to register %s
\n
"
,
id
->
name
);
err
=
PTR_ERR
(
pmic
->
rdev
[
i
]);
...
...
drivers/regulator/lp3971.c
浏览文件 @
924ee2c9
...
...
@@ -451,7 +451,7 @@ static int __devinit setup_regulators(struct lp3971 *lp3971,
for
(
i
=
0
;
i
<
pdata
->
num_regulators
;
i
++
)
{
struct
lp3971_regulator_subdev
*
reg
=
&
pdata
->
regulators
[
i
];
lp3971
->
rdev
[
i
]
=
regulator_register
(
&
regulators
[
reg
->
id
],
lp3971
->
dev
,
reg
->
initdata
,
lp3971
);
lp3971
->
dev
,
reg
->
initdata
,
lp3971
,
NULL
);
if
(
IS_ERR
(
lp3971
->
rdev
[
i
]))
{
err
=
PTR_ERR
(
lp3971
->
rdev
[
i
]);
...
...
drivers/regulator/lp3972.c
浏览文件 @
924ee2c9
...
...
@@ -555,7 +555,7 @@ static int __devinit setup_regulators(struct lp3972 *lp3972,
for
(
i
=
0
;
i
<
pdata
->
num_regulators
;
i
++
)
{
struct
lp3972_regulator_subdev
*
reg
=
&
pdata
->
regulators
[
i
];
lp3972
->
rdev
[
i
]
=
regulator_register
(
&
regulators
[
reg
->
id
],
lp3972
->
dev
,
reg
->
initdata
,
lp3972
);
lp3972
->
dev
,
reg
->
initdata
,
lp3972
,
NULL
);
if
(
IS_ERR
(
lp3972
->
rdev
[
i
]))
{
err
=
PTR_ERR
(
lp3972
->
rdev
[
i
]);
...
...
drivers/regulator/max1586.c
浏览文件 @
924ee2c9
...
...
@@ -214,7 +214,7 @@ static int __devinit max1586_pmic_probe(struct i2c_client *client,
}
rdev
[
i
]
=
regulator_register
(
&
max1586_reg
[
id
],
&
client
->
dev
,
pdata
->
subdevs
[
i
].
platform_data
,
max1586
);
max1586
,
NULL
);
if
(
IS_ERR
(
rdev
[
i
]))
{
ret
=
PTR_ERR
(
rdev
[
i
]);
dev_err
(
&
client
->
dev
,
"failed to register %s
\n
"
,
...
...
drivers/regulator/max8649.c
浏览文件 @
924ee2c9
...
...
@@ -299,7 +299,7 @@ static int __devinit max8649_regulator_probe(struct i2c_client *client,
}
info
->
regulator
=
regulator_register
(
&
dcdc_desc
,
&
client
->
dev
,
pdata
->
regulator
,
info
);
pdata
->
regulator
,
info
,
NULL
);
if
(
IS_ERR
(
info
->
regulator
))
{
dev_err
(
info
->
dev
,
"failed to register regulator %s
\n
"
,
dcdc_desc
.
name
);
...
...
drivers/regulator/max8660.c
浏览文件 @
924ee2c9
...
...
@@ -449,7 +449,7 @@ static int __devinit max8660_probe(struct i2c_client *client,
rdev
[
i
]
=
regulator_register
(
&
max8660_reg
[
id
],
&
client
->
dev
,
pdata
->
subdevs
[
i
].
platform_data
,
max8660
);
max8660
,
NULL
);
if
(
IS_ERR
(
rdev
[
i
]))
{
ret
=
PTR_ERR
(
rdev
[
i
]);
dev_err
(
&
client
->
dev
,
"failed to register %s
\n
"
,
...
...
drivers/regulator/max8925-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -266,7 +266,7 @@ static int __devinit max8925_regulator_probe(struct platform_device *pdev)
ri
->
chip
=
chip
;
rdev
=
regulator_register
(
&
ri
->
desc
,
&
pdev
->
dev
,
pdata
->
regulator
[
pdev
->
id
],
ri
);
pdata
->
regulator
[
pdev
->
id
],
ri
,
NULL
);
if
(
IS_ERR
(
rdev
))
{
dev_err
(
&
pdev
->
dev
,
"failed to register regulator %s
\n
"
,
ri
->
desc
.
name
);
...
...
drivers/regulator/max8952.c
浏览文件 @
924ee2c9
...
...
@@ -208,7 +208,7 @@ static int __devinit max8952_pmic_probe(struct i2c_client *client,
max8952
->
pdata
=
pdata
;
max8952
->
rdev
=
regulator_register
(
&
regulator
,
max8952
->
dev
,
&
pdata
->
reg_data
,
max8952
);
&
pdata
->
reg_data
,
max8952
,
NULL
);
if
(
IS_ERR
(
max8952
->
rdev
))
{
ret
=
PTR_ERR
(
max8952
->
rdev
);
...
...
drivers/regulator/max8997.c
浏览文件 @
924ee2c9
...
...
@@ -1146,7 +1146,7 @@ static __devinit int max8997_pmic_probe(struct platform_device *pdev)
regulators
[
id
].
n_voltages
=
16
;
rdev
[
i
]
=
regulator_register
(
&
regulators
[
id
],
max8997
->
dev
,
pdata
->
regulators
[
i
].
initdata
,
max8997
);
pdata
->
regulators
[
i
].
initdata
,
max8997
,
NULL
);
if
(
IS_ERR
(
rdev
[
i
]))
{
ret
=
PTR_ERR
(
rdev
[
i
]);
dev_err
(
max8997
->
dev
,
"regulator init failed for %d
\n
"
,
...
...
drivers/regulator/max8998.c
浏览文件 @
924ee2c9
...
...
@@ -847,7 +847,7 @@ static __devinit int max8998_pmic_probe(struct platform_device *pdev)
regulators
[
index
].
n_voltages
=
count
;
}
rdev
[
i
]
=
regulator_register
(
&
regulators
[
index
],
max8998
->
dev
,
pdata
->
regulators
[
i
].
initdata
,
max8998
);
pdata
->
regulators
[
i
].
initdata
,
max8998
,
NULL
);
if
(
IS_ERR
(
rdev
[
i
]))
{
ret
=
PTR_ERR
(
rdev
[
i
]);
dev_err
(
max8998
->
dev
,
"regulator init failed
\n
"
);
...
...
drivers/regulator/mc13783-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -357,7 +357,7 @@ static int __devinit mc13783_regulator_probe(struct platform_device *pdev)
init_data
=
&
pdata
->
regulators
[
i
];
priv
->
regulators
[
i
]
=
regulator_register
(
&
mc13783_regulators
[
init_data
->
id
].
desc
,
&
pdev
->
dev
,
init_data
->
init_data
,
priv
);
&
pdev
->
dev
,
init_data
->
init_data
,
priv
,
NULL
);
if
(
IS_ERR
(
priv
->
regulators
[
i
]))
{
dev_err
(
&
pdev
->
dev
,
"failed to register regulator %s
\n
"
,
...
...
drivers/regulator/mc13892-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -573,7 +573,7 @@ static int __devinit mc13892_regulator_probe(struct platform_device *pdev)
init_data
=
&
pdata
->
regulators
[
i
];
priv
->
regulators
[
i
]
=
regulator_register
(
&
mc13892_regulators
[
init_data
->
id
].
desc
,
&
pdev
->
dev
,
init_data
->
init_data
,
priv
);
&
pdev
->
dev
,
init_data
->
init_data
,
priv
,
NULL
);
if
(
IS_ERR
(
priv
->
regulators
[
i
]))
{
dev_err
(
&
pdev
->
dev
,
"failed to register regulator %s
\n
"
,
...
...
drivers/regulator/of_regulator.c
0 → 100644
浏览文件 @
924ee2c9
/*
* OF helpers for regulator framework
*
* Copyright (C) 2011 Texas Instruments, Inc.
* Rajendra Nayak <rnayak@ti.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*/
#include <linux/slab.h>
#include <linux/of.h>
#include <linux/regulator/machine.h>
static
void
of_get_regulation_constraints
(
struct
device_node
*
np
,
struct
regulator_init_data
**
init_data
)
{
const
__be32
*
min_uV
,
*
max_uV
,
*
uV_offset
;
const
__be32
*
min_uA
,
*
max_uA
;
struct
regulation_constraints
*
constraints
=
&
(
*
init_data
)
->
constraints
;
constraints
->
name
=
of_get_property
(
np
,
"regulator-name"
,
NULL
);
min_uV
=
of_get_property
(
np
,
"regulator-min-microvolt"
,
NULL
);
if
(
min_uV
)
constraints
->
min_uV
=
be32_to_cpu
(
*
min_uV
);
max_uV
=
of_get_property
(
np
,
"regulator-max-microvolt"
,
NULL
);
if
(
max_uV
)
constraints
->
max_uV
=
be32_to_cpu
(
*
max_uV
);
/* Voltage change possible? */
if
(
constraints
->
min_uV
!=
constraints
->
max_uV
)
constraints
->
valid_ops_mask
|=
REGULATOR_CHANGE_VOLTAGE
;
uV_offset
=
of_get_property
(
np
,
"regulator-microvolt-offset"
,
NULL
);
if
(
uV_offset
)
constraints
->
uV_offset
=
be32_to_cpu
(
*
uV_offset
);
min_uA
=
of_get_property
(
np
,
"regulator-min-microamp"
,
NULL
);
if
(
min_uA
)
constraints
->
min_uA
=
be32_to_cpu
(
*
min_uA
);
max_uA
=
of_get_property
(
np
,
"regulator-max-microamp"
,
NULL
);
if
(
max_uA
)
constraints
->
max_uA
=
be32_to_cpu
(
*
max_uA
);
/* Current change possible? */
if
(
constraints
->
min_uA
!=
constraints
->
max_uA
)
constraints
->
valid_ops_mask
|=
REGULATOR_CHANGE_CURRENT
;
if
(
of_find_property
(
np
,
"regulator-boot-on"
,
NULL
))
constraints
->
boot_on
=
true
;
if
(
of_find_property
(
np
,
"regulator-always-on"
,
NULL
))
constraints
->
always_on
=
true
;
else
/* status change should be possible if not always on. */
constraints
->
valid_ops_mask
|=
REGULATOR_CHANGE_STATUS
;
}
/**
* of_get_regulator_init_data - extract regulator_init_data structure info
* @dev: device requesting for regulator_init_data
*
* Populates regulator_init_data structure by extracting data from device
* tree node, returns a pointer to the populated struture or NULL if memory
* alloc fails.
*/
struct
regulator_init_data
*
of_get_regulator_init_data
(
struct
device
*
dev
)
{
struct
regulator_init_data
*
init_data
;
if
(
!
dev
->
of_node
)
return
NULL
;
init_data
=
devm_kzalloc
(
dev
,
sizeof
(
*
init_data
),
GFP_KERNEL
);
if
(
!
init_data
)
return
NULL
;
/* Out of memory? */
of_get_regulation_constraints
(
dev
->
of_node
,
&
init_data
);
return
init_data
;
}
drivers/regulator/pcap-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -277,7 +277,7 @@ static int __devinit pcap_regulator_probe(struct platform_device *pdev)
void
*
pcap
=
dev_get_drvdata
(
pdev
->
dev
.
parent
);
rdev
=
regulator_register
(
&
pcap_regulators
[
pdev
->
id
],
&
pdev
->
dev
,
pdev
->
dev
.
platform_data
,
pcap
);
pdev
->
dev
.
platform_data
,
pcap
,
NULL
);
if
(
IS_ERR
(
rdev
))
return
PTR_ERR
(
rdev
);
...
...
drivers/regulator/pcf50633-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -320,7 +320,7 @@ static int __devinit pcf50633_regulator_probe(struct platform_device *pdev)
pcf
=
dev_to_pcf50633
(
pdev
->
dev
.
parent
);
rdev
=
regulator_register
(
&
regulators
[
pdev
->
id
],
&
pdev
->
dev
,
pdev
->
dev
.
platform_data
,
pcf
);
pdev
->
dev
.
platform_data
,
pcf
,
NULL
);
if
(
IS_ERR
(
rdev
))
return
PTR_ERR
(
rdev
);
...
...
drivers/regulator/tps6105x-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -151,7 +151,8 @@ static int __devinit tps6105x_regulator_probe(struct platform_device *pdev)
/* Register regulator with framework */
tps6105x
->
regulator
=
regulator_register
(
&
tps6105x_regulator_desc
,
&
tps6105x
->
client
->
dev
,
pdata
->
regulator_data
,
tps6105x
);
pdata
->
regulator_data
,
tps6105x
,
NULL
);
if
(
IS_ERR
(
tps6105x
->
regulator
))
{
ret
=
PTR_ERR
(
tps6105x
->
regulator
);
dev_err
(
&
tps6105x
->
client
->
dev
,
...
...
drivers/regulator/tps65023-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -473,7 +473,7 @@ static int __devinit tps_65023_probe(struct i2c_client *client,
/* Register the regulators */
rdev
=
regulator_register
(
&
tps
->
desc
[
i
],
&
client
->
dev
,
init_data
,
tps
);
init_data
,
tps
,
NULL
);
if
(
IS_ERR
(
rdev
))
{
dev_err
(
&
client
->
dev
,
"failed to register %s
\n
"
,
id
->
name
);
...
...
drivers/regulator/tps6507x-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -599,7 +599,7 @@ int tps6507x_pmic_probe(struct platform_device *pdev)
tps
->
desc
[
i
].
owner
=
THIS_MODULE
;
rdev
=
regulator_register
(
&
tps
->
desc
[
i
],
tps6507x_dev
->
dev
,
init_data
,
tps
);
tps6507x_dev
->
dev
,
init_data
,
tps
,
NULL
);
if
(
IS_ERR
(
rdev
))
{
dev_err
(
tps6507x_dev
->
dev
,
"failed to register %s regulator
\n
"
,
...
...
drivers/regulator/tps6524x-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -651,7 +651,7 @@ static int __devinit pmic_probe(struct spi_device *spi)
hw
->
desc
[
i
].
n_voltages
=
1
;
hw
->
rdev
[
i
]
=
regulator_register
(
&
hw
->
desc
[
i
],
dev
,
init_data
,
hw
);
init_data
,
hw
,
NULL
);
if
(
IS_ERR
(
hw
->
rdev
[
i
]))
{
ret
=
PTR_ERR
(
hw
->
rdev
[
i
]);
hw
->
rdev
[
i
]
=
NULL
;
...
...
drivers/regulator/tps6586x-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -396,7 +396,7 @@ static int __devinit tps6586x_regulator_probe(struct platform_device *pdev)
return
err
;
rdev
=
regulator_register
(
&
ri
->
desc
,
&
pdev
->
dev
,
pdev
->
dev
.
platform_data
,
ri
);
pdev
->
dev
.
platform_data
,
ri
,
NULL
);
if
(
IS_ERR
(
rdev
))
{
dev_err
(
&
pdev
->
dev
,
"failed to register regulator %s
\n
"
,
ri
->
desc
.
name
);
...
...
drivers/regulator/tps65910-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -948,7 +948,7 @@ static __devinit int tps65910_probe(struct platform_device *pdev)
pmic
->
desc
[
i
].
owner
=
THIS_MODULE
;
rdev
=
regulator_register
(
&
pmic
->
desc
[
i
],
tps65910
->
dev
,
reg_data
,
pmic
);
tps65910
->
dev
,
reg_data
,
pmic
,
NULL
);
if
(
IS_ERR
(
rdev
))
{
dev_err
(
tps65910
->
dev
,
"failed to register %s regulator
\n
"
,
...
...
drivers/regulator/tps65912-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -727,7 +727,7 @@ static __devinit int tps65912_probe(struct platform_device *pdev)
pmic
->
desc
[
i
].
owner
=
THIS_MODULE
;
range
=
tps65912_get_range
(
pmic
,
i
);
rdev
=
regulator_register
(
&
pmic
->
desc
[
i
],
tps65912
->
dev
,
reg_data
,
pmic
);
tps65912
->
dev
,
reg_data
,
pmic
,
NULL
);
if
(
IS_ERR
(
rdev
))
{
dev_err
(
tps65912
->
dev
,
"failed to register %s regulator
\n
"
,
...
...
drivers/regulator/twl-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -1070,7 +1070,7 @@ static int __devinit twlreg_probe(struct platform_device *pdev)
break
;
}
rdev
=
regulator_register
(
&
info
->
desc
,
&
pdev
->
dev
,
initdata
,
info
);
rdev
=
regulator_register
(
&
info
->
desc
,
&
pdev
->
dev
,
initdata
,
info
,
NULL
);
if
(
IS_ERR
(
rdev
))
{
dev_err
(
&
pdev
->
dev
,
"can't register %s, %ld
\n
"
,
info
->
desc
.
name
,
PTR_ERR
(
rdev
));
...
...
drivers/regulator/wm831x-dcdc.c
浏览文件 @
924ee2c9
...
...
@@ -553,7 +553,7 @@ static __devinit int wm831x_buckv_probe(struct platform_device *pdev)
wm831x_buckv_dvs_init
(
dcdc
,
pdata
->
dcdc
[
id
]
->
driver_data
);
dcdc
->
regulator
=
regulator_register
(
&
dcdc
->
desc
,
&
pdev
->
dev
,
pdata
->
dcdc
[
id
],
dcdc
);
pdata
->
dcdc
[
id
],
dcdc
,
NULL
);
if
(
IS_ERR
(
dcdc
->
regulator
))
{
ret
=
PTR_ERR
(
dcdc
->
regulator
);
dev_err
(
wm831x
->
dev
,
"Failed to register DCDC%d: %d
\n
"
,
...
...
@@ -747,7 +747,7 @@ static __devinit int wm831x_buckp_probe(struct platform_device *pdev)
dcdc
->
desc
.
owner
=
THIS_MODULE
;
dcdc
->
regulator
=
regulator_register
(
&
dcdc
->
desc
,
&
pdev
->
dev
,
pdata
->
dcdc
[
id
],
dcdc
);
pdata
->
dcdc
[
id
],
dcdc
,
NULL
);
if
(
IS_ERR
(
dcdc
->
regulator
))
{
ret
=
PTR_ERR
(
dcdc
->
regulator
);
dev_err
(
wm831x
->
dev
,
"Failed to register DCDC%d: %d
\n
"
,
...
...
@@ -874,7 +874,7 @@ static __devinit int wm831x_boostp_probe(struct platform_device *pdev)
dcdc
->
desc
.
owner
=
THIS_MODULE
;
dcdc
->
regulator
=
regulator_register
(
&
dcdc
->
desc
,
&
pdev
->
dev
,
pdata
->
dcdc
[
id
],
dcdc
);
pdata
->
dcdc
[
id
],
dcdc
,
NULL
);
if
(
IS_ERR
(
dcdc
->
regulator
))
{
ret
=
PTR_ERR
(
dcdc
->
regulator
);
dev_err
(
wm831x
->
dev
,
"Failed to register DCDC%d: %d
\n
"
,
...
...
@@ -973,7 +973,7 @@ static __devinit int wm831x_epe_probe(struct platform_device *pdev)
dcdc
->
desc
.
owner
=
THIS_MODULE
;
dcdc
->
regulator
=
regulator_register
(
&
dcdc
->
desc
,
&
pdev
->
dev
,
pdata
->
epe
[
id
],
dcdc
);
pdata
->
epe
[
id
],
dcdc
,
NULL
);
if
(
IS_ERR
(
dcdc
->
regulator
))
{
ret
=
PTR_ERR
(
dcdc
->
regulator
);
dev_err
(
wm831x
->
dev
,
"Failed to register EPE%d: %d
\n
"
,
...
...
drivers/regulator/wm831x-isink.c
浏览文件 @
924ee2c9
...
...
@@ -189,7 +189,7 @@ static __devinit int wm831x_isink_probe(struct platform_device *pdev)
isink
->
desc
.
owner
=
THIS_MODULE
;
isink
->
regulator
=
regulator_register
(
&
isink
->
desc
,
&
pdev
->
dev
,
pdata
->
isink
[
id
],
isink
);
pdata
->
isink
[
id
],
isink
,
NULL
);
if
(
IS_ERR
(
isink
->
regulator
))
{
ret
=
PTR_ERR
(
isink
->
regulator
);
dev_err
(
wm831x
->
dev
,
"Failed to register ISINK%d: %d
\n
"
,
...
...
drivers/regulator/wm831x-ldo.c
浏览文件 @
924ee2c9
...
...
@@ -351,7 +351,7 @@ static __devinit int wm831x_gp_ldo_probe(struct platform_device *pdev)
ldo
->
desc
.
owner
=
THIS_MODULE
;
ldo
->
regulator
=
regulator_register
(
&
ldo
->
desc
,
&
pdev
->
dev
,
pdata
->
ldo
[
id
],
ldo
);
pdata
->
ldo
[
id
],
ldo
,
NULL
);
if
(
IS_ERR
(
ldo
->
regulator
))
{
ret
=
PTR_ERR
(
ldo
->
regulator
);
dev_err
(
wm831x
->
dev
,
"Failed to register LDO%d: %d
\n
"
,
...
...
@@ -621,7 +621,7 @@ static __devinit int wm831x_aldo_probe(struct platform_device *pdev)
ldo
->
desc
.
owner
=
THIS_MODULE
;
ldo
->
regulator
=
regulator_register
(
&
ldo
->
desc
,
&
pdev
->
dev
,
pdata
->
ldo
[
id
],
ldo
);
pdata
->
ldo
[
id
],
ldo
,
NULL
);
if
(
IS_ERR
(
ldo
->
regulator
))
{
ret
=
PTR_ERR
(
ldo
->
regulator
);
dev_err
(
wm831x
->
dev
,
"Failed to register LDO%d: %d
\n
"
,
...
...
@@ -818,7 +818,7 @@ static __devinit int wm831x_alive_ldo_probe(struct platform_device *pdev)
ldo
->
desc
.
owner
=
THIS_MODULE
;
ldo
->
regulator
=
regulator_register
(
&
ldo
->
desc
,
&
pdev
->
dev
,
pdata
->
ldo
[
id
],
ldo
);
pdata
->
ldo
[
id
],
ldo
,
NULL
);
if
(
IS_ERR
(
ldo
->
regulator
))
{
ret
=
PTR_ERR
(
ldo
->
regulator
);
dev_err
(
wm831x
->
dev
,
"Failed to register LDO%d: %d
\n
"
,
...
...
drivers/regulator/wm8350-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -1428,7 +1428,7 @@ static int wm8350_regulator_probe(struct platform_device *pdev)
/* register regulator */
rdev
=
regulator_register
(
&
wm8350_reg
[
pdev
->
id
],
&
pdev
->
dev
,
pdev
->
dev
.
platform_data
,
dev_get_drvdata
(
&
pdev
->
dev
));
dev_get_drvdata
(
&
pdev
->
dev
)
,
NULL
);
if
(
IS_ERR
(
rdev
))
{
dev_err
(
&
pdev
->
dev
,
"failed to register %s
\n
"
,
wm8350_reg
[
pdev
->
id
].
name
);
...
...
drivers/regulator/wm8400-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -326,7 +326,7 @@ static int __devinit wm8400_regulator_probe(struct platform_device *pdev)
struct
regulator_dev
*
rdev
;
rdev
=
regulator_register
(
&
regulators
[
pdev
->
id
],
&
pdev
->
dev
,
pdev
->
dev
.
platform_data
,
wm8400
);
pdev
->
dev
.
platform_data
,
wm8400
,
NULL
);
if
(
IS_ERR
(
rdev
))
return
PTR_ERR
(
rdev
);
...
...
drivers/regulator/wm8994-regulator.c
浏览文件 @
924ee2c9
...
...
@@ -269,7 +269,7 @@ static __devinit int wm8994_ldo_probe(struct platform_device *pdev)
ldo
->
is_enabled
=
true
;
ldo
->
regulator
=
regulator_register
(
&
wm8994_ldo_desc
[
id
],
&
pdev
->
dev
,
pdata
->
ldo
[
id
].
init_data
,
ldo
);
pdata
->
ldo
[
id
].
init_data
,
ldo
,
NULL
);
if
(
IS_ERR
(
ldo
->
regulator
))
{
ret
=
PTR_ERR
(
ldo
->
regulator
);
dev_err
(
wm8994
->
dev
,
"Failed to register LDO%d: %d
\n
"
,
...
...
include/linux/regulator/driver.h
浏览文件 @
924ee2c9
...
...
@@ -154,6 +154,7 @@ enum regulator_type {
* this type.
*
* @name: Identifying name for the regulator.
* @supply_name: Identifying the regulator supply
* @id: Numerical identifier for the regulator.
* @n_voltages: Number of selectors available for ops.list_voltage().
* @ops: Regulator operations table.
...
...
@@ -163,6 +164,7 @@ enum regulator_type {
*/
struct
regulator_desc
{
const
char
*
name
;
const
char
*
supply_name
;
int
id
;
unsigned
n_voltages
;
struct
regulator_ops
*
ops
;
...
...
@@ -212,7 +214,7 @@ struct regulator_dev {
struct
regulator_dev
*
regulator_register
(
struct
regulator_desc
*
regulator_desc
,
struct
device
*
dev
,
const
struct
regulator_init_data
*
init_data
,
void
*
driver_data
);
void
*
driver_data
,
struct
device_node
*
of_node
);
void
regulator_unregister
(
struct
regulator_dev
*
rdev
);
int
regulator_notifier_call_chain
(
struct
regulator_dev
*
rdev
,
...
...
include/linux/regulator/of_regulator.h
0 → 100644
浏览文件 @
924ee2c9
/*
* OpenFirmware regulator support routines
*
*/
#ifndef __LINUX_OF_REG_H
#define __LINUX_OF_REG_H
#if defined(CONFIG_OF)
extern
struct
regulator_init_data
*
of_get_regulator_init_data
(
struct
device
*
dev
);
#else
static
inline
struct
regulator_init_data
*
of_get_regulator_init_data
(
struct
device
*
dev
)
{
return
NULL
;
}
#endif
/* CONFIG_OF */
#endif
/* __LINUX_OF_REG_H */
sound/soc/codecs/sgtl5000.c
浏览文件 @
924ee2c9
...
...
@@ -833,7 +833,7 @@ static int ldo_regulator_register(struct snd_soc_codec *codec,
ldo
->
voltage
=
voltage
;
ldo
->
dev
=
regulator_register
(
&
ldo
->
desc
,
codec
->
dev
,
init_data
,
ldo
);
init_data
,
ldo
,
NULL
);
if
(
IS_ERR
(
ldo
->
dev
))
{
int
ret
=
PTR_ERR
(
ldo
->
dev
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录