Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
af261127
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
af261127
编写于
10年前
作者:
R
Rafael J. Wysocki
浏览文件
操作
浏览文件
下载
差异文件
Merge back earlier 'pm-runtime' material for 3.19-rc1.
上级
5d01410f
b2b49ccb
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
35 addition
and
37 deletion
+35
-37
arch/ia64/Kconfig
arch/ia64/Kconfig
+1
-0
drivers/base/power/runtime.c
drivers/base/power/runtime.c
+33
-36
kernel/power/Kconfig
kernel/power/Kconfig
+1
-1
未找到文件。
arch/ia64/Kconfig
浏览文件 @
af261127
...
...
@@ -233,6 +233,7 @@ config IA64_SGI_UV
config IA64_HP_SIM
bool "Ski-simulator"
select SWIOTLB
depends on !PM_RUNTIME
endchoice
...
...
This diff is collapsed.
Click to expand it.
drivers/base/power/runtime.c
浏览文件 @
af261127
...
...
@@ -13,42 +13,39 @@
#include <trace/events/rpm.h>
#include "power.h"
#define RPM_GET_CALLBACK(dev, cb) \
({ \
int (*__rpm_cb)(struct device *__d); \
\
if (dev->pm_domain) \
__rpm_cb = dev->pm_domain->ops.cb; \
else if (dev->type && dev->type->pm) \
__rpm_cb = dev->type->pm->cb; \
else if (dev->class && dev->class->pm) \
__rpm_cb = dev->class->pm->cb; \
else if (dev->bus && dev->bus->pm) \
__rpm_cb = dev->bus->pm->cb; \
else \
__rpm_cb = NULL; \
\
if (!__rpm_cb && dev->driver && dev->driver->pm) \
__rpm_cb = dev->driver->pm->cb; \
\
__rpm_cb; \
})
static
int
(
*
rpm_get_suspend_cb
(
struct
device
*
dev
))(
struct
device
*
)
{
return
RPM_GET_CALLBACK
(
dev
,
runtime_suspend
);
}
typedef
int
(
*
pm_callback_t
)(
struct
device
*
);
static
int
(
*
rpm_get_resume_cb
(
struct
device
*
dev
))(
struct
device
*
)
static
pm_callback_t
__rpm_get_callback
(
struct
device
*
dev
,
size_t
cb_offset
)
{
return
RPM_GET_CALLBACK
(
dev
,
runtime_resume
);
pm_callback_t
cb
;
const
struct
dev_pm_ops
*
ops
;
if
(
dev
->
pm_domain
)
ops
=
&
dev
->
pm_domain
->
ops
;
else
if
(
dev
->
type
&&
dev
->
type
->
pm
)
ops
=
dev
->
type
->
pm
;
else
if
(
dev
->
class
&&
dev
->
class
->
pm
)
ops
=
dev
->
class
->
pm
;
else
if
(
dev
->
bus
&&
dev
->
bus
->
pm
)
ops
=
dev
->
bus
->
pm
;
else
ops
=
NULL
;
if
(
ops
)
cb
=
*
(
pm_callback_t
*
)((
void
*
)
ops
+
cb_offset
);
else
cb
=
NULL
;
if
(
!
cb
&&
dev
->
driver
&&
dev
->
driver
->
pm
)
cb
=
*
(
pm_callback_t
*
)((
void
*
)
dev
->
driver
->
pm
+
cb_offset
);
return
cb
;
}
#define RPM_GET_CALLBACK(dev, callback) \
__rpm_get_callback(dev, offsetof(struct dev_pm_ops, callback))
#ifdef CONFIG_PM_RUNTIME
static
int
(
*
rpm_get_idle_cb
(
struct
device
*
dev
))(
struct
device
*
)
{
return
RPM_GET_CALLBACK
(
dev
,
runtime_idle
);
}
static
int
rpm_resume
(
struct
device
*
dev
,
int
rpmflags
);
static
int
rpm_suspend
(
struct
device
*
dev
,
int
rpmflags
);
...
...
@@ -347,7 +344,7 @@ static int rpm_idle(struct device *dev, int rpmflags)
dev
->
power
.
idle_notification
=
true
;
callback
=
rpm_get_idle_cb
(
dev
);
callback
=
RPM_GET_CALLBACK
(
dev
,
runtime_idle
);
if
(
callback
)
retval
=
__rpm_callback
(
callback
,
dev
);
...
...
@@ -517,7 +514,7 @@ static int rpm_suspend(struct device *dev, int rpmflags)
__update_runtime_status
(
dev
,
RPM_SUSPENDING
);
callback
=
rpm_get_suspend_cb
(
dev
);
callback
=
RPM_GET_CALLBACK
(
dev
,
runtime_suspend
);
retval
=
rpm_callback
(
callback
,
dev
);
if
(
retval
)
...
...
@@ -737,7 +734,7 @@ static int rpm_resume(struct device *dev, int rpmflags)
__update_runtime_status
(
dev
,
RPM_RESUMING
);
callback
=
rpm_get_resume_cb
(
dev
);
callback
=
RPM_GET_CALLBACK
(
dev
,
runtime_resume
);
retval
=
rpm_callback
(
callback
,
dev
);
if
(
retval
)
{
...
...
@@ -1431,7 +1428,7 @@ int pm_runtime_force_suspend(struct device *dev)
if
(
pm_runtime_status_suspended
(
dev
))
return
0
;
callback
=
rpm_get_suspend_cb
(
dev
);
callback
=
RPM_GET_CALLBACK
(
dev
,
runtime_suspend
);
if
(
!
callback
)
{
ret
=
-
ENOSYS
;
...
...
@@ -1467,7 +1464,7 @@ int pm_runtime_force_resume(struct device *dev)
int
(
*
callback
)(
struct
device
*
);
int
ret
=
0
;
callback
=
rpm_get_resume_cb
(
dev
);
callback
=
RPM_GET_CALLBACK
(
dev
,
runtime_resume
);
if
(
!
callback
)
{
ret
=
-
ENOSYS
;
...
...
This diff is collapsed.
Click to expand it.
kernel/power/Kconfig
浏览文件 @
af261127
...
...
@@ -94,6 +94,7 @@ config PM_STD_PARTITION
config PM_SLEEP
def_bool y
depends on SUSPEND || HIBERNATE_CALLBACKS
select PM_RUNTIME
config PM_SLEEP_SMP
def_bool y
...
...
@@ -131,7 +132,6 @@ config PM_WAKELOCKS_GC
config PM_RUNTIME
bool "Run-time PM core functionality"
depends on !IA64_HP_SIM
---help---
Enable functionality allowing I/O devices to be put into energy-saving
(low power) states at run time (or autosuspended) after a specified
...
...
This diff is collapsed.
Click to expand it.
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录
新手
引导
客服
返回
顶部