Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
28e2d124
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看板
提交
28e2d124
编写于
13年前
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nouveau/dp: execute some more vbios tables relating to link rate
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
75a1fccf
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
5 deletion
+21
-5
drivers/gpu/drm/nouveau/nouveau_dp.c
drivers/gpu/drm/nouveau/nouveau_dp.c
+21
-5
未找到文件。
drivers/gpu/drm/nouveau/nouveau_dp.c
浏览文件 @
28e2d124
...
...
@@ -308,23 +308,39 @@ struct dp_state {
static
void
dp_set_link_config
(
struct
drm_device
*
dev
,
struct
dp_state
*
dp
)
{
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
int
or
=
dp
->
or
,
link
=
dp
->
link
;
u
32
clk_sor
,
dp_ctrl
;
u
8
sink
[
2
]
;
u
8
*
bios
,
headerlen
,
sink
[
2
]
;
u
32
dp_ctrl
;
NV_DEBUG_KMS
(
dev
,
"%d lanes at %d KB/s
\n
"
,
dp
->
link_nr
,
dp
->
link_bw
);
/* set selected link rate on source */
switch
(
dp
->
link_bw
)
{
case
270000
:
clk_sor
=
0x00040000
;
nv_mask
(
dev
,
0x614300
+
(
or
*
0x800
),
0x000c0000
,
0x00040000
)
;
sink
[
0
]
=
DP_LINK_BW_2_7
;
break
;
default:
clk_sor
=
0x00000000
;
nv_mask
(
dev
,
0x614300
+
(
or
*
0x800
),
0x000c0000
,
0x00000000
)
;
sink
[
0
]
=
DP_LINK_BW_1_62
;
break
;
}
/* offset +0x0a of each dp encoder table entry is a pointer to another
* table, that has (among other things) pointers to more scripts that
* need to be executed, this time depending on link speed.
*/
bios
=
nouveau_bios_dp_table
(
dev
,
dp
->
dcb
,
&
headerlen
);
if
(
bios
&&
(
bios
=
ROMPTR
(
&
dev_priv
->
vbios
,
bios
[
10
])))
{
u16
script
=
ROM16
(
bios
[
2
]);
if
(
dp
->
link_bw
!=
270000
)
script
=
ROM16
(
bios
[
6
]);
nouveau_bios_run_init_table
(
dev
,
script
,
dp
->
dcb
,
dp
->
crtc
);
}
/* configure lane count on the source */
dp_ctrl
=
((
1
<<
dp
->
link_nr
)
-
1
)
<<
16
;
sink
[
1
]
=
dp
->
link_nr
;
if
(
dp
->
enh_frame
)
{
...
...
@@ -332,9 +348,9 @@ dp_set_link_config(struct drm_device *dev, struct dp_state *dp)
sink
[
1
]
|=
DP_LANE_COUNT_ENHANCED_FRAME_EN
;
}
nv_mask
(
dev
,
0x614300
+
(
or
*
0x800
),
0x000c0000
,
clk_sor
);
nv_mask
(
dev
,
NV50_SOR_DP_CTRL
(
or
,
link
),
0x001f4000
,
dp_ctrl
);
/* inform the sink of the new configuration */
auxch_tx
(
dev
,
dp
->
auxch
,
8
,
DP_LINK_BW_SET
,
sink
,
2
);
}
...
...
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录
新手
引导
客服
返回
顶部