Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
321f5c5f
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看板
提交
321f5c5f
编写于
6月 02, 2017
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nouveau: replace multiple open-coded runpm support checks with function
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
86276921
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
18 addition
and
32 deletion
+18
-32
drivers/gpu/drm/nouveau/nouveau_drm.c
drivers/gpu/drm/nouveau/nouveau_drm.c
+15
-19
drivers/gpu/drm/nouveau/nouveau_drv.h
drivers/gpu/drm/nouveau/nouveau_drv.h
+1
-2
drivers/gpu/drm/nouveau/nouveau_vga.c
drivers/gpu/drm/nouveau/nouveau_vga.c
+2
-11
未找到文件。
drivers/gpu/drm/nouveau/nouveau_drm.c
浏览文件 @
321f5c5f
...
...
@@ -80,7 +80,7 @@ int nouveau_modeset = -1;
module_param_named
(
modeset
,
nouveau_modeset
,
int
,
0400
);
MODULE_PARM_DESC
(
runpm
,
"disable (0), force enable (1), optimus only default (-1)"
);
int
nouveau_runtime_pm
=
-
1
;
static
int
nouveau_runtime_pm
=
-
1
;
module_param_named
(
runpm
,
nouveau_runtime_pm
,
int
,
0400
);
static
struct
drm_driver
driver_stub
;
...
...
@@ -726,6 +726,14 @@ nouveau_pmops_thaw(struct device *dev)
return
nouveau_do_resume
(
drm_dev
,
false
);
}
bool
nouveau_pmops_runtime
()
{
if
(
nouveau_runtime_pm
==
-
1
)
return
nouveau_is_optimus
()
||
nouveau_is_v1_dsm
();
return
nouveau_runtime_pm
==
1
;
}
static
int
nouveau_pmops_runtime_suspend
(
struct
device
*
dev
)
{
...
...
@@ -733,14 +741,7 @@ nouveau_pmops_runtime_suspend(struct device *dev)
struct
drm_device
*
drm_dev
=
pci_get_drvdata
(
pdev
);
int
ret
;
if
(
nouveau_runtime_pm
==
0
)
{
pm_runtime_forbid
(
dev
);
return
-
EBUSY
;
}
/* are we optimus enabled? */
if
(
nouveau_runtime_pm
==
-
1
&&
!
nouveau_is_optimus
()
&&
!
nouveau_is_v1_dsm
())
{
DRM_DEBUG_DRIVER
(
"failing to power off - not optimus
\n
"
);
if
(
!
nouveau_pmops_runtime
())
{
pm_runtime_forbid
(
dev
);
return
-
EBUSY
;
}
...
...
@@ -765,8 +766,10 @@ nouveau_pmops_runtime_resume(struct device *dev)
struct
nvif_device
*
device
=
&
nouveau_drm
(
drm_dev
)
->
client
.
device
;
int
ret
;
if
(
nouveau_runtime_pm
==
0
)
return
-
EINVAL
;
if
(
!
nouveau_pmops_runtime
())
{
pm_runtime_forbid
(
dev
);
return
-
EBUSY
;
}
pci_set_power_state
(
pdev
,
PCI_D0
);
pci_restore_state
(
pdev
);
...
...
@@ -796,14 +799,7 @@ nouveau_pmops_runtime_idle(struct device *dev)
struct
nouveau_drm
*
drm
=
nouveau_drm
(
drm_dev
);
struct
drm_crtc
*
crtc
;
if
(
nouveau_runtime_pm
==
0
)
{
pm_runtime_forbid
(
dev
);
return
-
EBUSY
;
}
/* are we optimus enabled? */
if
(
nouveau_runtime_pm
==
-
1
&&
!
nouveau_is_optimus
()
&&
!
nouveau_is_v1_dsm
())
{
DRM_DEBUG_DRIVER
(
"failing to power off - not optimus
\n
"
);
if
(
!
nouveau_pmops_runtime
())
{
pm_runtime_forbid
(
dev
);
return
-
EBUSY
;
}
...
...
drivers/gpu/drm/nouveau/nouveau_drv.h
浏览文件 @
321f5c5f
...
...
@@ -108,8 +108,6 @@ nouveau_cli(struct drm_file *fpriv)
#include <nvif/object.h>
#include <nvif/device.h>
extern
int
nouveau_runtime_pm
;
struct
nouveau_drm
{
struct
nouveau_cli
client
;
struct
drm_device
*
dev
;
...
...
@@ -195,6 +193,7 @@ nouveau_drm(struct drm_device *dev)
int
nouveau_pmops_suspend
(
struct
device
*
);
int
nouveau_pmops_resume
(
struct
device
*
);
bool
nouveau_pmops_runtime
(
void
);
#include <nvkm/core/tegra.h>
...
...
drivers/gpu/drm/nouveau/nouveau_vga.c
浏览文件 @
321f5c5f
...
...
@@ -87,7 +87,7 @@ void
nouveau_vga_init
(
struct
nouveau_drm
*
drm
)
{
struct
drm_device
*
dev
=
drm
->
dev
;
bool
runtime
=
false
;
bool
runtime
=
nouveau_pmops_runtime
()
;
/* only relevant for PCI devices */
if
(
!
dev
->
pdev
)
...
...
@@ -99,10 +99,6 @@ nouveau_vga_init(struct nouveau_drm *drm)
if
(
pci_is_thunderbolt_attached
(
dev
->
pdev
))
return
;
if
(
nouveau_runtime_pm
==
1
)
runtime
=
true
;
if
((
nouveau_runtime_pm
==
-
1
)
&&
(
nouveau_is_optimus
()
||
nouveau_is_v1_dsm
()))
runtime
=
true
;
vga_switcheroo_register_client
(
dev
->
pdev
,
&
nouveau_switcheroo_ops
,
runtime
);
if
(
runtime
&&
nouveau_is_v1_dsm
()
&&
!
nouveau_is_optimus
())
...
...
@@ -113,18 +109,13 @@ void
nouveau_vga_fini
(
struct
nouveau_drm
*
drm
)
{
struct
drm_device
*
dev
=
drm
->
dev
;
bool
runtime
=
false
;
bool
runtime
=
nouveau_pmops_runtime
()
;
vga_client_register
(
dev
->
pdev
,
NULL
,
NULL
,
NULL
);
if
(
pci_is_thunderbolt_attached
(
dev
->
pdev
))
return
;
if
(
nouveau_runtime_pm
==
1
)
runtime
=
true
;
if
((
nouveau_runtime_pm
==
-
1
)
&&
(
nouveau_is_optimus
()
||
nouveau_is_v1_dsm
()))
runtime
=
true
;
vga_switcheroo_unregister_client
(
dev
->
pdev
);
if
(
runtime
&&
nouveau_is_v1_dsm
()
&&
!
nouveau_is_optimus
())
vga_switcheroo_fini_domain_pm_ops
(
drm
->
dev
->
dev
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录