Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
39358f2b
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
39358f2b
编写于
3月 12, 2012
作者:
K
Kevin Hilman
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'pm-wip/smps-regulator' into for_3.4/pm/smps-regulator
上级
05d164c9
c15f1d84
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
166 addition
and
3 deletion
+166
-3
arch/arm/mach-omap2/twl-common.c
arch/arm/mach-omap2/twl-common.c
+147
-0
arch/arm/mach-omap2/vc3xxx_data.c
arch/arm/mach-omap2/vc3xxx_data.c
+1
-0
arch/arm/mach-omap2/voltage.c
arch/arm/mach-omap2/voltage.c
+18
-3
未找到文件。
arch/arm/mach-omap2/twl-common.c
浏览文件 @
39358f2b
...
@@ -31,12 +31,25 @@
...
@@ -31,12 +31,25 @@
#include "twl-common.h"
#include "twl-common.h"
#include "pm.h"
#include "pm.h"
#include "voltage.h"
static
struct
i2c_board_info
__initdata
pmic_i2c_board_info
=
{
static
struct
i2c_board_info
__initdata
pmic_i2c_board_info
=
{
.
addr
=
0x48
,
.
addr
=
0x48
,
.
flags
=
I2C_CLIENT_WAKE
,
.
flags
=
I2C_CLIENT_WAKE
,
};
};
static
int
twl_set_voltage
(
void
*
data
,
int
target_uV
)
{
struct
voltagedomain
*
voltdm
=
(
struct
voltagedomain
*
)
data
;
return
voltdm_scale
(
voltdm
,
target_uV
);
}
static
int
twl_get_voltage
(
void
*
data
)
{
struct
voltagedomain
*
voltdm
=
(
struct
voltagedomain
*
)
data
;
return
voltdm_get_voltage
(
voltdm
);
}
void
__init
omap_pmic_init
(
int
bus
,
u32
clkrate
,
void
__init
omap_pmic_init
(
int
bus
,
u32
clkrate
,
const
char
*
pmic_type
,
int
pmic_irq
,
const
char
*
pmic_type
,
int
pmic_irq
,
struct
twl4030_platform_data
*
pmic_data
)
struct
twl4030_platform_data
*
pmic_data
)
...
@@ -126,6 +139,48 @@ static struct regulator_init_data omap3_vpll2_idata = {
...
@@ -126,6 +139,48 @@ static struct regulator_init_data omap3_vpll2_idata = {
.
consumer_supplies
=
omap3_vpll2_supplies
,
.
consumer_supplies
=
omap3_vpll2_supplies
,
};
};
static
struct
regulator_consumer_supply
omap3_vdd1_supply
[]
=
{
REGULATOR_SUPPLY
(
"vcc"
,
"mpu.0"
),
};
static
struct
regulator_consumer_supply
omap3_vdd2_supply
[]
=
{
REGULATOR_SUPPLY
(
"vcc"
,
"l3_main.0"
),
};
static
struct
regulator_init_data
omap3_vdd1
=
{
.
constraints
=
{
.
name
=
"vdd_mpu_iva"
,
.
min_uV
=
600000
,
.
max_uV
=
1450000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
valid_ops_mask
=
REGULATOR_CHANGE_VOLTAGE
,
},
.
num_consumer_supplies
=
ARRAY_SIZE
(
omap3_vdd1_supply
),
.
consumer_supplies
=
omap3_vdd1_supply
,
};
static
struct
regulator_init_data
omap3_vdd2
=
{
.
constraints
=
{
.
name
=
"vdd_core"
,
.
min_uV
=
600000
,
.
max_uV
=
1450000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
valid_ops_mask
=
REGULATOR_CHANGE_VOLTAGE
,
},
.
num_consumer_supplies
=
ARRAY_SIZE
(
omap3_vdd2_supply
),
.
consumer_supplies
=
omap3_vdd2_supply
,
};
static
struct
twl_regulator_driver_data
omap3_vdd1_drvdata
=
{
.
get_voltage
=
twl_get_voltage
,
.
set_voltage
=
twl_set_voltage
,
};
static
struct
twl_regulator_driver_data
omap3_vdd2_drvdata
=
{
.
get_voltage
=
twl_get_voltage
,
.
set_voltage
=
twl_set_voltage
,
};
void
__init
omap3_pmic_get_config
(
struct
twl4030_platform_data
*
pmic_data
,
void
__init
omap3_pmic_get_config
(
struct
twl4030_platform_data
*
pmic_data
,
u32
pdata_flags
,
u32
regulators_flags
)
u32
pdata_flags
,
u32
regulators_flags
)
{
{
...
@@ -133,6 +188,16 @@ void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data,
...
@@ -133,6 +188,16 @@ void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data,
pmic_data
->
irq_base
=
TWL4030_IRQ_BASE
;
pmic_data
->
irq_base
=
TWL4030_IRQ_BASE
;
if
(
!
pmic_data
->
irq_end
)
if
(
!
pmic_data
->
irq_end
)
pmic_data
->
irq_end
=
TWL4030_IRQ_END
;
pmic_data
->
irq_end
=
TWL4030_IRQ_END
;
if
(
!
pmic_data
->
vdd1
)
{
omap3_vdd1
.
driver_data
=
&
omap3_vdd1_drvdata
;
omap3_vdd1_drvdata
.
data
=
voltdm_lookup
(
"mpu_iva"
);
pmic_data
->
vdd1
=
&
omap3_vdd1
;
}
if
(
!
pmic_data
->
vdd2
)
{
omap3_vdd2
.
driver_data
=
&
omap3_vdd2_drvdata
;
omap3_vdd2_drvdata
.
data
=
voltdm_lookup
(
"core"
);
pmic_data
->
vdd2
=
&
omap3_vdd2
;
}
/* Common platform data configurations */
/* Common platform data configurations */
if
(
pdata_flags
&
TWL_COMMON_PDATA_USB
&&
!
pmic_data
->
usb
)
if
(
pdata_flags
&
TWL_COMMON_PDATA_USB
&&
!
pmic_data
->
usb
)
...
@@ -284,6 +349,70 @@ static struct regulator_init_data omap4_clk32kg_idata = {
...
@@ -284,6 +349,70 @@ static struct regulator_init_data omap4_clk32kg_idata = {
},
},
};
};
static
struct
regulator_consumer_supply
omap4_vdd1_supply
[]
=
{
REGULATOR_SUPPLY
(
"vcc"
,
"mpu.0"
),
};
static
struct
regulator_consumer_supply
omap4_vdd2_supply
[]
=
{
REGULATOR_SUPPLY
(
"vcc"
,
"iva.0"
),
};
static
struct
regulator_consumer_supply
omap4_vdd3_supply
[]
=
{
REGULATOR_SUPPLY
(
"vcc"
,
"l3_main.0"
),
};
static
struct
regulator_init_data
omap4_vdd1
=
{
.
constraints
=
{
.
name
=
"vdd_mpu"
,
.
min_uV
=
500000
,
.
max_uV
=
1500000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
valid_ops_mask
=
REGULATOR_CHANGE_VOLTAGE
,
},
.
num_consumer_supplies
=
ARRAY_SIZE
(
omap4_vdd1_supply
),
.
consumer_supplies
=
omap4_vdd1_supply
,
};
static
struct
regulator_init_data
omap4_vdd2
=
{
.
constraints
=
{
.
name
=
"vdd_iva"
,
.
min_uV
=
500000
,
.
max_uV
=
1500000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
valid_ops_mask
=
REGULATOR_CHANGE_VOLTAGE
,
},
.
num_consumer_supplies
=
ARRAY_SIZE
(
omap4_vdd2_supply
),
.
consumer_supplies
=
omap4_vdd2_supply
,
};
static
struct
regulator_init_data
omap4_vdd3
=
{
.
constraints
=
{
.
name
=
"vdd_core"
,
.
min_uV
=
500000
,
.
max_uV
=
1500000
,
.
valid_modes_mask
=
REGULATOR_MODE_NORMAL
,
.
valid_ops_mask
=
REGULATOR_CHANGE_VOLTAGE
,
},
.
num_consumer_supplies
=
ARRAY_SIZE
(
omap4_vdd3_supply
),
.
consumer_supplies
=
omap4_vdd3_supply
,
};
static
struct
twl_regulator_driver_data
omap4_vdd1_drvdata
=
{
.
get_voltage
=
twl_get_voltage
,
.
set_voltage
=
twl_set_voltage
,
};
static
struct
twl_regulator_driver_data
omap4_vdd2_drvdata
=
{
.
get_voltage
=
twl_get_voltage
,
.
set_voltage
=
twl_set_voltage
,
};
static
struct
twl_regulator_driver_data
omap4_vdd3_drvdata
=
{
.
get_voltage
=
twl_get_voltage
,
.
set_voltage
=
twl_set_voltage
,
};
void
__init
omap4_pmic_get_config
(
struct
twl4030_platform_data
*
pmic_data
,
void
__init
omap4_pmic_get_config
(
struct
twl4030_platform_data
*
pmic_data
,
u32
pdata_flags
,
u32
regulators_flags
)
u32
pdata_flags
,
u32
regulators_flags
)
{
{
...
@@ -292,6 +421,24 @@ void __init omap4_pmic_get_config(struct twl4030_platform_data *pmic_data,
...
@@ -292,6 +421,24 @@ void __init omap4_pmic_get_config(struct twl4030_platform_data *pmic_data,
if
(
!
pmic_data
->
irq_end
)
if
(
!
pmic_data
->
irq_end
)
pmic_data
->
irq_end
=
TWL6030_IRQ_END
;
pmic_data
->
irq_end
=
TWL6030_IRQ_END
;
if
(
!
pmic_data
->
vdd1
)
{
omap4_vdd1
.
driver_data
=
&
omap4_vdd1_drvdata
;
omap4_vdd1_drvdata
.
data
=
voltdm_lookup
(
"mpu"
);
pmic_data
->
vdd1
=
&
omap4_vdd1
;
}
if
(
!
pmic_data
->
vdd2
)
{
omap4_vdd2
.
driver_data
=
&
omap4_vdd2_drvdata
;
omap4_vdd2_drvdata
.
data
=
voltdm_lookup
(
"iva"
);
pmic_data
->
vdd2
=
&
omap4_vdd2
;
}
if
(
!
pmic_data
->
vdd3
)
{
omap4_vdd3
.
driver_data
=
&
omap4_vdd3_drvdata
;
omap4_vdd3_drvdata
.
data
=
voltdm_lookup
(
"core"
);
pmic_data
->
vdd3
=
&
omap4_vdd3
;
}
/* Common platform data configurations */
/* Common platform data configurations */
if
(
pdata_flags
&
TWL_COMMON_PDATA_USB
&&
!
pmic_data
->
usb
)
if
(
pdata_flags
&
TWL_COMMON_PDATA_USB
&&
!
pmic_data
->
usb
)
pmic_data
->
usb
=
&
omap4_usb_pdata
;
pmic_data
->
usb
=
&
omap4_usb_pdata
;
...
...
arch/arm/mach-omap2/vc3xxx_data.c
浏览文件 @
39358f2b
...
@@ -46,6 +46,7 @@ static struct omap_vc_common omap3_vc_common = {
...
@@ -46,6 +46,7 @@ static struct omap_vc_common omap3_vc_common = {
};
};
struct
omap_vc_channel
omap3_vc_mpu
=
{
struct
omap_vc_channel
omap3_vc_mpu
=
{
.
flags
=
OMAP_VC_CHANNEL_DEFAULT
,
.
common
=
&
omap3_vc_common
,
.
common
=
&
omap3_vc_common
,
.
smps_sa_reg
=
OMAP3_PRM_VC_SMPS_SA_OFFSET
,
.
smps_sa_reg
=
OMAP3_PRM_VC_SMPS_SA_OFFSET
,
.
smps_volra_reg
=
OMAP3_PRM_VC_SMPS_VOL_RA_OFFSET
,
.
smps_volra_reg
=
OMAP3_PRM_VC_SMPS_VOL_RA_OFFSET
,
...
...
arch/arm/mach-omap2/voltage.c
浏览文件 @
39358f2b
...
@@ -73,7 +73,8 @@ unsigned long voltdm_get_voltage(struct voltagedomain *voltdm)
...
@@ -73,7 +73,8 @@ unsigned long voltdm_get_voltage(struct voltagedomain *voltdm)
int
voltdm_scale
(
struct
voltagedomain
*
voltdm
,
int
voltdm_scale
(
struct
voltagedomain
*
voltdm
,
unsigned
long
target_volt
)
unsigned
long
target_volt
)
{
{
int
ret
;
int
ret
,
i
;
unsigned
long
volt
=
0
;
if
(
!
voltdm
||
IS_ERR
(
voltdm
))
{
if
(
!
voltdm
||
IS_ERR
(
voltdm
))
{
pr_warning
(
"%s: VDD specified does not exist!
\n
"
,
__func__
);
pr_warning
(
"%s: VDD specified does not exist!
\n
"
,
__func__
);
...
@@ -86,9 +87,23 @@ int voltdm_scale(struct voltagedomain *voltdm,
...
@@ -86,9 +87,23 @@ int voltdm_scale(struct voltagedomain *voltdm,
return
-
ENODATA
;
return
-
ENODATA
;
}
}
ret
=
voltdm
->
scale
(
voltdm
,
target_volt
);
/* Adjust voltage to the exact voltage from the OPP table */
for
(
i
=
0
;
voltdm
->
volt_data
[
i
].
volt_nominal
!=
0
;
i
++
)
{
if
(
voltdm
->
volt_data
[
i
].
volt_nominal
>=
target_volt
)
{
volt
=
voltdm
->
volt_data
[
i
].
volt_nominal
;
break
;
}
}
if
(
!
volt
)
{
pr_warning
(
"%s: not scaling. OPP voltage for %lu, not found.
\n
"
,
__func__
,
target_volt
);
return
-
EINVAL
;
}
ret
=
voltdm
->
scale
(
voltdm
,
volt
);
if
(
!
ret
)
if
(
!
ret
)
voltdm
->
nominal_volt
=
target_
volt
;
voltdm
->
nominal_volt
=
volt
;
return
ret
;
return
ret
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录