Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
5f534d10
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看板
提交
5f534d10
编写于
7月 23, 2014
作者:
K
Kukjin Kim
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'v3.17-next/cpuidle-exynos' into v3.17-next/power-exynos
上级
036c37c5
fc2cac41
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
60 addition
and
3 deletion
+60
-3
arch/arm/mach-exynos/exynos.c
arch/arm/mach-exynos/exynos.c
+3
-1
arch/arm/mach-exynos/mcpm-exynos.c
arch/arm/mach-exynos/mcpm-exynos.c
+36
-0
arch/arm/mach-exynos/regs-pmu.h
arch/arm/mach-exynos/regs-pmu.h
+9
-0
drivers/cpuidle/Kconfig.arm
drivers/cpuidle/Kconfig.arm
+1
-1
drivers/cpuidle/cpuidle-big_little.c
drivers/cpuidle/cpuidle-big_little.c
+11
-1
未找到文件。
arch/arm/mach-exynos/exynos.c
浏览文件 @
5f534d10
...
...
@@ -335,7 +335,9 @@ static void __init exynos_dt_machine_init(void)
if
(
!
IS_ENABLED
(
CONFIG_SMP
))
exynos_sysram_init
();
exynos_cpuidle_init
();
if
(
!
of_machine_is_compatible
(
"samsung,exynos5420"
))
exynos_cpuidle_init
();
exynos_cpufreq_init
();
of_platform_populate
(
NULL
,
of_default_bus_match_table
,
NULL
,
NULL
);
...
...
arch/arm/mach-exynos/mcpm-exynos.c
浏览文件 @
5f534d10
...
...
@@ -257,10 +257,46 @@ static int exynos_wait_for_powerdown(unsigned int cpu, unsigned int cluster)
return
-
ETIMEDOUT
;
/* timeout */
}
static
void
exynos_powered_up
(
void
)
{
unsigned
int
mpidr
,
cpu
,
cluster
;
mpidr
=
read_cpuid_mpidr
();
cpu
=
MPIDR_AFFINITY_LEVEL
(
mpidr
,
0
);
cluster
=
MPIDR_AFFINITY_LEVEL
(
mpidr
,
1
);
arch_spin_lock
(
&
exynos_mcpm_lock
);
if
(
cpu_use_count
[
cpu
][
cluster
]
==
0
)
cpu_use_count
[
cpu
][
cluster
]
=
1
;
arch_spin_unlock
(
&
exynos_mcpm_lock
);
}
static
void
exynos_suspend
(
u64
residency
)
{
unsigned
int
mpidr
,
cpunr
;
exynos_power_down
();
/*
* Execution reaches here only if cpu did not power down.
* Hence roll back the changes done in exynos_power_down function.
*
* CAUTION: "This function requires the stack data to be visible through
* power down and can only be executed on processors like A15 and A7
* that hit the cache with the C bit clear in the SCTLR register."
*/
mpidr
=
read_cpuid_mpidr
();
cpunr
=
exynos_pmu_cpunr
(
mpidr
);
exynos_cpu_power_up
(
cpunr
);
}
static
const
struct
mcpm_platform_ops
exynos_power_ops
=
{
.
power_up
=
exynos_power_up
,
.
power_down
=
exynos_power_down
,
.
wait_for_powerdown
=
exynos_wait_for_powerdown
,
.
suspend
=
exynos_suspend
,
.
powered_up
=
exynos_powered_up
,
};
static
void
__init
exynos_mcpm_usage_count_init
(
void
)
...
...
arch/arm/mach-exynos/regs-pmu.h
浏览文件 @
5f534d10
...
...
@@ -319,4 +319,13 @@
#define EXYNOS5420_SWRESET_KFC_SEL 0x3
#include <asm/cputype.h>
#define MAX_CPUS_IN_CLUSTER 4
static
inline
unsigned
int
exynos_pmu_cpunr
(
unsigned
int
mpidr
)
{
return
((
MPIDR_AFFINITY_LEVEL
(
mpidr
,
1
)
*
MAX_CPUS_IN_CLUSTER
)
+
MPIDR_AFFINITY_LEVEL
(
mpidr
,
0
));
}
#endif
/* __ASM_ARCH_REGS_PMU_H */
drivers/cpuidle/Kconfig.arm
浏览文件 @
5f534d10
...
...
@@ -9,7 +9,7 @@ config ARM_ARMADA_370_XP_CPUIDLE
config ARM_BIG_LITTLE_CPUIDLE
bool "Support for ARM big.LITTLE processors"
depends on ARCH_VEXPRESS_TC2_PM
depends on ARCH_VEXPRESS_TC2_PM
|| ARCH_EXYNOS
select ARM_CPU_SUSPEND
select CPU_IDLE_MULTIPLE_DRIVERS
help
...
...
drivers/cpuidle/cpuidle-big_little.c
浏览文件 @
5f534d10
...
...
@@ -163,14 +163,24 @@ static int __init bl_idle_driver_init(struct cpuidle_driver *drv, int cpu_id)
return
0
;
}
static
const
struct
of_device_id
compatible_machine_match
[]
=
{
{
.
compatible
=
"arm,vexpress,v2p-ca15_a7"
},
{
.
compatible
=
"samsung,exynos5420"
},
{},
};
static
int
__init
bl_idle_init
(
void
)
{
int
ret
;
struct
device_node
*
root
=
of_find_node_by_path
(
"/"
);
if
(
!
root
)
return
-
ENODEV
;
/*
* Initialize the driver just for a compliant set of machines
*/
if
(
!
of_ma
chine_is_compatible
(
"arm,vexpress,v2p-ca15_a7"
))
if
(
!
of_ma
tch_node
(
compatible_machine_match
,
root
))
return
-
ENODEV
;
/*
* For now the differentiation between little and big cores
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录