Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Linux-御风守护者
linux
提交
f2a40513
L
linux
项目概览
Linux-御风守护者
/
linux
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f2a40513
编写于
11月 04, 2016
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nouveau/disp/sor/gf119-: add method to control mst enable
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
1f8711ba
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
43 addition
and
11 deletion
+43
-11
drivers/gpu/drm/nouveau/include/nvif/cl5070.h
drivers/gpu/drm/nouveau/include/nvif/cl5070.h
+7
-0
drivers/gpu/drm/nouveau/nvkm/engine/disp/gf119.c
drivers/gpu/drm/nouveau/nvkm/engine/disp/gf119.c
+12
-10
drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h
drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h
+1
-0
drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.c
drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.c
+20
-0
drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
+3
-1
未找到文件。
drivers/gpu/drm/nouveau/include/nvif/cl5070.h
浏览文件 @
f2a40513
...
...
@@ -34,6 +34,7 @@ struct nv50_disp_mthd_v1 {
#define NV50_DISP_MTHD_V1_SOR_HDMI_PWR 0x22
#define NV50_DISP_MTHD_V1_SOR_LVDS_SCRIPT 0x23
#define NV50_DISP_MTHD_V1_SOR_DP_PWR 0x24
#define NV50_DISP_MTHD_V1_SOR_DP_MST_LINK 0x25
#define NV50_DISP_MTHD_V1_PIOR_PWR 0x30
__u8
method
;
__u16
hasht
;
...
...
@@ -90,6 +91,12 @@ struct nv50_disp_sor_dp_pwr_v0 {
__u8
pad02
[
6
];
};
struct
nv50_disp_sor_dp_mst_link_v0
{
__u8
version
;
__u8
state
;
__u8
pad02
[
6
];
};
struct
nv50_disp_pior_pwr_v0
{
__u8
version
;
__u8
state
;
...
...
drivers/gpu/drm/nouveau/nvkm/engine/disp/gf119.c
浏览文件 @
f2a40513
...
...
@@ -203,17 +203,19 @@ gf119_disp_intr_unk2_0(struct nv50_disp *disp, int head)
/* see note in nv50_disp_intr_unk20_0() */
if
(
outp
&&
outp
->
info
.
type
==
DCB_OUTPUT_DP
)
{
struct
nvkm_output_dp
*
outpdp
=
nvkm_output_dp
(
outp
);
struct
nvbios_init
init
=
{
.
subdev
=
subdev
,
.
bios
=
subdev
->
device
->
bios
,
.
outp
=
&
outp
->
info
,
.
crtc
=
head
,
.
offset
=
outpdp
->
info
.
script
[
4
],
.
execute
=
1
,
};
if
(
!
outpdp
->
lt
.
mst
)
{
struct
nvbios_init
init
=
{
.
subdev
=
subdev
,
.
bios
=
subdev
->
device
->
bios
,
.
outp
=
&
outp
->
info
,
.
crtc
=
head
,
.
offset
=
outpdp
->
info
.
script
[
4
],
.
execute
=
1
,
};
nvbios_exec
(
&
init
);
atomic_set
(
&
outpdp
->
lt
.
done
,
0
);
nvbios_exec
(
&
init
);
atomic_set
(
&
outpdp
->
lt
.
done
,
0
);
}
}
}
...
...
drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h
浏览文件 @
f2a40513
...
...
@@ -32,6 +32,7 @@ struct nvkm_output_dp {
struct
mutex
mutex
;
struct
{
atomic_t
done
;
bool
mst
;
}
lt
;
};
...
...
drivers/gpu/drm/nouveau/nvkm/engine/disp/rootnv50.c
浏览文件 @
f2a40513
...
...
@@ -180,6 +180,26 @@ nv50_disp_root_mthd_(struct nvkm_object *object, u32 mthd, void *data, u32 size)
return
ret
;
}
break
;
case
NV50_DISP_MTHD_V1_SOR_DP_MST_LINK
:
{
struct
nvkm_output_dp
*
outpdp
=
nvkm_output_dp
(
outp
);
union
{
struct
nv50_disp_sor_dp_mst_link_v0
v0
;
}
*
args
=
data
;
int
ret
=
-
ENOSYS
;
nvif_ioctl
(
object
,
"disp sor dp mst link size %d
\n
"
,
size
);
if
(
!
(
ret
=
nvif_unpack
(
ret
,
&
data
,
&
size
,
args
->
v0
,
0
,
0
,
false
)))
{
nvif_ioctl
(
object
,
"disp sor dp mst link vers %d state %d
\n
"
,
args
->
v0
.
version
,
args
->
v0
.
state
);
if
(
outpdp
->
lt
.
mst
!=
!!
args
->
v0
.
state
)
{
outpdp
->
lt
.
mst
=
!!
args
->
v0
.
state
;
atomic_set
(
&
outpdp
->
lt
.
done
,
0
);
nvkm_output_dp_train
(
&
outpdp
->
base
,
0
);
}
return
0
;
}
else
return
ret
;
}
break
;
case
NV50_DISP_MTHD_V1_PIOR_PWR
:
if
(
!
func
->
pior
.
power
)
return
-
ENODEV
;
...
...
drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
浏览文件 @
f2a40513
...
...
@@ -56,11 +56,13 @@ gf119_sor_dp_lnk_ctl(struct nvkm_output_dp *outp, int nr, int bw, bool ef)
clksor
|=
bw
<<
18
;
dpctrl
|=
((
1
<<
nr
)
-
1
)
<<
16
;
if
(
outp
->
lt
.
mst
)
dpctrl
|=
0x40000000
;
if
(
ef
)
dpctrl
|=
0x00004000
;
nvkm_mask
(
device
,
0x612300
+
soff
,
0x007c0000
,
clksor
);
nvkm_mask
(
device
,
0x61c10c
+
loff
,
0x
0
01f4000
,
dpctrl
);
nvkm_mask
(
device
,
0x61c10c
+
loff
,
0x
4
01f4000
,
dpctrl
);
return
0
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录