Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
7cac6468
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看板
提交
7cac6468
编写于
12月 10, 2012
作者:
M
Mark Brown
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'regulator/topic/arizona' into regulator-next
上级
d9f16b6e
95072818
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
148 addition
and
3 deletion
+148
-3
drivers/mfd/wm5102-tables.c
drivers/mfd/wm5102-tables.c
+3
-0
drivers/regulator/arizona-ldo1.c
drivers/regulator/arizona-ldo1.c
+127
-3
drivers/regulator/arizona-micsupp.c
drivers/regulator/arizona-micsupp.c
+2
-0
include/linux/mfd/arizona/registers.h
include/linux/mfd/arizona/registers.h
+16
-0
未找到文件。
drivers/mfd/wm5102-tables.c
浏览文件 @
7cac6468
...
...
@@ -775,6 +775,7 @@ static const struct reg_default wm5102_reg_default[] = {
{
0x00000154
,
0x0000
},
/* R340 - Rate Estimator 3 */
{
0x00000155
,
0x0000
},
/* R341 - Rate Estimator 4 */
{
0x00000156
,
0x0000
},
/* R342 - Rate Estimator 5 */
{
0x00000161
,
0x0000
},
/* R353 - Dynamic Frequency Scaling 1 */
{
0x00000171
,
0x0000
},
/* R369 - FLL1 Control 1 */
{
0x00000172
,
0x0008
},
/* R370 - FLL1 Control 2 */
{
0x00000173
,
0x0018
},
/* R371 - FLL1 Control 3 */
...
...
@@ -1564,6 +1565,7 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg)
case
ARIZONA_RATE_ESTIMATOR_3
:
case
ARIZONA_RATE_ESTIMATOR_4
:
case
ARIZONA_RATE_ESTIMATOR_5
:
case
ARIZONA_DYNAMIC_FREQUENCY_SCALING_1
:
case
ARIZONA_FLL1_CONTROL_1
:
case
ARIZONA_FLL1_CONTROL_2
:
case
ARIZONA_FLL1_CONTROL_3
:
...
...
@@ -1596,6 +1598,7 @@ static bool wm5102_readable_register(struct device *dev, unsigned int reg)
case
ARIZONA_FLL2_GPIO_CLOCK
:
case
ARIZONA_MIC_CHARGE_PUMP_1
:
case
ARIZONA_LDO1_CONTROL_1
:
case
ARIZONA_LDO1_CONTROL_2
:
case
ARIZONA_LDO2_CONTROL_1
:
case
ARIZONA_MIC_BIAS_CTRL_1
:
case
ARIZONA_MIC_BIAS_CTRL_2
:
...
...
drivers/regulator/arizona-ldo1.c
浏览文件 @
7cac6468
...
...
@@ -34,6 +34,108 @@ struct arizona_ldo1 {
struct
regulator_init_data
init_data
;
};
static
int
arizona_ldo1_hc_list_voltage
(
struct
regulator_dev
*
rdev
,
unsigned
int
selector
)
{
if
(
selector
>=
rdev
->
desc
->
n_voltages
)
return
-
EINVAL
;
if
(
selector
==
rdev
->
desc
->
n_voltages
-
1
)
return
1800000
;
else
return
rdev
->
desc
->
min_uV
+
(
rdev
->
desc
->
uV_step
*
selector
);
}
static
int
arizona_ldo1_hc_map_voltage
(
struct
regulator_dev
*
rdev
,
int
min_uV
,
int
max_uV
)
{
int
sel
;
sel
=
DIV_ROUND_UP
(
min_uV
-
rdev
->
desc
->
min_uV
,
rdev
->
desc
->
uV_step
);
if
(
sel
>=
rdev
->
desc
->
n_voltages
)
sel
=
rdev
->
desc
->
n_voltages
-
1
;
return
sel
;
}
static
int
arizona_ldo1_hc_set_voltage_sel
(
struct
regulator_dev
*
rdev
,
unsigned
sel
)
{
struct
arizona_ldo1
*
ldo
=
rdev_get_drvdata
(
rdev
);
struct
regmap
*
regmap
=
ldo
->
arizona
->
regmap
;
unsigned
int
val
;
int
ret
;
if
(
sel
==
rdev
->
desc
->
n_voltages
-
1
)
val
=
ARIZONA_LDO1_HI_PWR
;
else
val
=
0
;
ret
=
regmap_update_bits
(
regmap
,
ARIZONA_LDO1_CONTROL_2
,
ARIZONA_LDO1_HI_PWR
,
val
);
if
(
ret
!=
0
)
return
ret
;
ret
=
regmap_update_bits
(
regmap
,
ARIZONA_DYNAMIC_FREQUENCY_SCALING_1
,
ARIZONA_SUBSYS_MAX_FREQ
,
val
);
if
(
ret
!=
0
)
return
ret
;
if
(
val
)
return
0
;
val
=
sel
<<
ARIZONA_LDO1_VSEL_SHIFT
;
return
regmap_update_bits
(
regmap
,
ARIZONA_LDO1_CONTROL_1
,
ARIZONA_LDO1_VSEL_MASK
,
val
);
}
static
int
arizona_ldo1_hc_get_voltage_sel
(
struct
regulator_dev
*
rdev
)
{
struct
arizona_ldo1
*
ldo
=
rdev_get_drvdata
(
rdev
);
struct
regmap
*
regmap
=
ldo
->
arizona
->
regmap
;
unsigned
int
val
;
int
ret
;
ret
=
regmap_read
(
regmap
,
ARIZONA_LDO1_CONTROL_2
,
&
val
);
if
(
ret
!=
0
)
return
ret
;
if
(
val
&
ARIZONA_LDO1_HI_PWR
)
return
rdev
->
desc
->
n_voltages
-
1
;
ret
=
regmap_read
(
regmap
,
ARIZONA_LDO1_CONTROL_1
,
&
val
);
if
(
ret
!=
0
)
return
ret
;
return
(
val
&
ARIZONA_LDO1_VSEL_MASK
)
>>
ARIZONA_LDO1_VSEL_SHIFT
;
}
static
struct
regulator_ops
arizona_ldo1_hc_ops
=
{
.
list_voltage
=
arizona_ldo1_hc_list_voltage
,
.
map_voltage
=
arizona_ldo1_hc_map_voltage
,
.
get_voltage_sel
=
arizona_ldo1_hc_get_voltage_sel
,
.
set_voltage_sel
=
arizona_ldo1_hc_set_voltage_sel
,
.
get_bypass
=
regulator_get_bypass_regmap
,
.
set_bypass
=
regulator_set_bypass_regmap
,
};
static
const
struct
regulator_desc
arizona_ldo1_hc
=
{
.
name
=
"LDO1"
,
.
supply_name
=
"LDOVDD"
,
.
type
=
REGULATOR_VOLTAGE
,
.
ops
=
&
arizona_ldo1_hc_ops
,
.
bypass_reg
=
ARIZONA_LDO1_CONTROL_1
,
.
bypass_mask
=
ARIZONA_LDO1_BYPASS
,
.
min_uV
=
900000
,
.
uV_step
=
50000
,
.
n_voltages
=
8
,
.
enable_time
=
500
,
.
owner
=
THIS_MODULE
,
};
static
struct
regulator_ops
arizona_ldo1_ops
=
{
.
list_voltage
=
regulator_list_voltage_linear
,
.
map_voltage
=
regulator_map_voltage_linear
,
...
...
@@ -55,11 +157,22 @@ static const struct regulator_desc arizona_ldo1 = {
.
bypass_mask
=
ARIZONA_LDO1_BYPASS
,
.
min_uV
=
900000
,
.
uV_step
=
50000
,
.
n_voltages
=
6
,
.
n_voltages
=
7
,
.
enable_time
=
500
,
.
owner
=
THIS_MODULE
,
};
static
const
struct
regulator_init_data
arizona_ldo1_dvfs
=
{
.
constraints
=
{
.
min_uV
=
1200000
,
.
max_uV
=
1800000
,
.
valid_ops_mask
=
REGULATOR_CHANGE_STATUS
|
REGULATOR_CHANGE_VOLTAGE
,
},
.
num_consumer_supplies
=
1
,
};
static
const
struct
regulator_init_data
arizona_ldo1_default
=
{
.
constraints
=
{
.
valid_ops_mask
=
REGULATOR_CHANGE_STATUS
,
...
...
@@ -70,6 +183,7 @@ static const struct regulator_init_data arizona_ldo1_default = {
static
__devinit
int
arizona_ldo1_probe
(
struct
platform_device
*
pdev
)
{
struct
arizona
*
arizona
=
dev_get_drvdata
(
pdev
->
dev
.
parent
);
const
struct
regulator_desc
*
desc
;
struct
regulator_config
config
=
{
};
struct
arizona_ldo1
*
ldo1
;
int
ret
;
...
...
@@ -87,7 +201,17 @@ static __devinit int arizona_ldo1_probe(struct platform_device *pdev)
* default init_data for it. This will be overridden with
* platform data if provided.
*/
ldo1
->
init_data
=
arizona_ldo1_default
;
switch
(
arizona
->
type
)
{
case
WM5102
:
desc
=
&
arizona_ldo1_hc
;
ldo1
->
init_data
=
arizona_ldo1_dvfs
;
break
;
default:
desc
=
&
arizona_ldo1
;
ldo1
->
init_data
=
arizona_ldo1_default
;
break
;
}
ldo1
->
init_data
.
consumer_supplies
=
&
ldo1
->
supply
;
ldo1
->
supply
.
supply
=
"DCVDD"
;
ldo1
->
supply
.
dev_name
=
dev_name
(
arizona
->
dev
);
...
...
@@ -102,7 +226,7 @@ static __devinit int arizona_ldo1_probe(struct platform_device *pdev)
else
config
.
init_data
=
&
ldo1
->
init_data
;
ldo1
->
regulator
=
regulator_register
(
&
arizona_ldo1
,
&
config
);
ldo1
->
regulator
=
regulator_register
(
desc
,
&
config
);
if
(
IS_ERR
(
ldo1
->
regulator
))
{
ret
=
PTR_ERR
(
ldo1
->
regulator
);
dev_err
(
arizona
->
dev
,
"Failed to register LDO1 supply: %d
\n
"
,
...
...
drivers/regulator/arizona-micsupp.c
浏览文件 @
7cac6468
...
...
@@ -101,6 +101,8 @@ static const struct regulator_desc arizona_micsupp = {
.
bypass_reg
=
ARIZONA_MIC_CHARGE_PUMP_1
,
.
bypass_mask
=
ARIZONA_CPMIC_BYPASS
,
.
enable_time
=
3000
,
.
owner
=
THIS_MODULE
,
};
...
...
include/linux/mfd/arizona/registers.h
浏览文件 @
7cac6468
...
...
@@ -76,6 +76,7 @@
#define ARIZONA_RATE_ESTIMATOR_3 0x154
#define ARIZONA_RATE_ESTIMATOR_4 0x155
#define ARIZONA_RATE_ESTIMATOR_5 0x156
#define ARIZONA_DYNAMIC_FREQUENCY_SCALING_1 0x161
#define ARIZONA_FLL1_CONTROL_1 0x171
#define ARIZONA_FLL1_CONTROL_2 0x172
#define ARIZONA_FLL1_CONTROL_3 0x173
...
...
@@ -110,6 +111,7 @@
#define ARIZONA_FLL2_GPIO_CLOCK 0x1AA
#define ARIZONA_MIC_CHARGE_PUMP_1 0x200
#define ARIZONA_LDO1_CONTROL_1 0x210
#define ARIZONA_LDO1_CONTROL_2 0x212
#define ARIZONA_LDO2_CONTROL_1 0x213
#define ARIZONA_MIC_BIAS_CTRL_1 0x218
#define ARIZONA_MIC_BIAS_CTRL_2 0x219
...
...
@@ -1573,6 +1575,13 @@
#define ARIZONA_SAMPLE_RATE_DETECT_D_SHIFT 0
/* SAMPLE_RATE_DETECT_D - [4:0] */
#define ARIZONA_SAMPLE_RATE_DETECT_D_WIDTH 5
/* SAMPLE_RATE_DETECT_D - [4:0] */
/*
* R353 (0x161) - Dynamic Frequency Scaling 1
*/
#define ARIZONA_SUBSYS_MAX_FREQ 0x0001
/* SUBSYS_MAX_FREQ */
#define ARIZONA_SUBSYS_MAX_FREQ_SHIFT 0
/* SUBSYS_MAX_FREQ */
#define ARIZONA_SUBSYS_MAX_FREQ_WIDTH 1
/* SUBSYS_MAX_FREQ */
/*
* R369 (0x171) - FLL1 Control 1
*/
...
...
@@ -1888,6 +1897,13 @@
#define ARIZONA_LDO1_ENA_SHIFT 0
/* LDO1_ENA */
#define ARIZONA_LDO1_ENA_WIDTH 1
/* LDO1_ENA */
/*
* R530 (0x212) - LDO1 Control 2
*/
#define ARIZONA_LDO1_HI_PWR 0x0001
/* LDO1_HI_PWR */
#define ARIZONA_LDO1_HI_PWR_SHIFT 0
/* LDO1_HI_PWR */
#define ARIZONA_LDO1_HI_PWR_WIDTH 1
/* LDO1_HI_PWR */
/*
* R531 (0x213) - LDO2 Control 1
*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录