Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
2228c6fe
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看板
提交
2228c6fe
编写于
7月 14, 2011
作者:
R
Roy Spliet
提交者:
Ben Skeggs
9月 20, 2011
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nouveau/pm: Document and expose CL and WR for 0x1002Cx
Signed-off-by:
N
Roy Spliet
<
r.spliet@student.tudelft.nl
>
上级
9a782488
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
21 addition
and
14 deletion
+21
-14
drivers/gpu/drm/nouveau/nouveau_drv.h
drivers/gpu/drm/nouveau/nouveau_drv.h
+6
-1
drivers/gpu/drm/nouveau/nouveau_mem.c
drivers/gpu/drm/nouveau/nouveau_mem.c
+15
-13
未找到文件。
drivers/gpu/drm/nouveau/nouveau_drv.h
浏览文件 @
2228c6fe
...
...
@@ -438,6 +438,9 @@ struct nouveau_pm_memtiming {
u32
reg_6
;
u32
reg_7
;
u32
reg_8
;
/* To be written to 0x1002c0 */
u8
CL
;
u8
WR
;
};
struct
nouveau_pm_tbl_header
{
...
...
@@ -448,7 +451,9 @@ struct nouveau_pm_tbl_header{
};
struct
nouveau_pm_tbl_entry
{
u8
tUNK_0
,
tUNK_1
,
tUNK_2
;
u8
tWR
;
u8
tUNK_1
;
u8
tCL
;
u8
tRP
;
/* Byte 3 */
u8
empty_4
;
u8
tRAS
;
/* Byte 5 */
...
...
drivers/gpu/drm/nouveau/nouveau_mem.c
浏览文件 @
2228c6fe
...
...
@@ -519,10 +519,10 @@ void nv40_mem_timing_entry(struct drm_device *dev, struct nouveau_pm_tbl_header
/* XXX: I don't trust the -1's and +1's... they must come
* from somewhere! */
timing
->
reg_1
=
(
e
->
t
UNK_0
+
2
+
magic_number
)
<<
24
|
timing
->
reg_1
=
(
e
->
t
WR
+
2
+
magic_number
)
<<
24
|
1
<<
16
|
(
e
->
tUNK_1
+
2
+
magic_number
)
<<
8
|
(
e
->
t
UNK_2
+
2
-
magic_number
);
(
e
->
t
CL
+
2
-
magic_number
);
timing
->
reg_2
=
(
magic_number
<<
24
|
e
->
tUNK_12
<<
16
|
e
->
tUNK_11
<<
8
|
e
->
tUNK_10
);
timing
->
reg_2
|=
0x20200000
;
...
...
@@ -555,13 +555,13 @@ void nv50_mem_timing_entry(struct drm_device *dev, struct bit_entry *P, struct n
/* XXX: I don't trust the -1's and +1's... they must come
* from somewhere! */
timing
->
reg_1
=
(
e
->
t
UNK_0
+
unk19
+
1
+
magic_number
)
<<
24
|
timing
->
reg_1
=
(
e
->
t
WR
+
unk19
+
1
+
magic_number
)
<<
24
|
max
(
unk18
,
(
u8
)
1
)
<<
16
|
(
e
->
tUNK_1
+
unk19
+
1
+
magic_number
)
<<
8
;
if
(
dev_priv
->
chipset
==
0xa8
)
{
timing
->
reg_1
|=
(
e
->
t
UNK_2
-
1
);
timing
->
reg_1
|=
(
e
->
t
CL
-
1
);
}
else
{
timing
->
reg_1
|=
(
e
->
t
UNK_2
+
2
-
magic_number
);
timing
->
reg_1
|=
(
e
->
t
CL
+
2
-
magic_number
);
}
timing
->
reg_2
=
(
e
->
tUNK_12
<<
16
|
e
->
tUNK_11
<<
8
|
e
->
tUNK_10
);
...
...
@@ -570,17 +570,17 @@ void nv50_mem_timing_entry(struct drm_device *dev, struct bit_entry *P, struct n
if
(
P
->
version
==
1
)
{
timing
->
reg_2
|=
magic_number
<<
24
;
timing
->
reg_3
=
(
0x14
+
e
->
t
UNK_2
)
<<
24
|
timing
->
reg_3
=
(
0x14
+
e
->
t
CL
)
<<
24
|
0x16
<<
16
|
(
e
->
t
UNK_2
-
1
)
<<
8
|
(
e
->
t
UNK_2
-
1
);
(
e
->
t
CL
-
1
)
<<
8
|
(
e
->
t
CL
-
1
);
timing
->
reg_4
=
(
nv_rd32
(
dev
,
0x10022c
)
&
0xffff0000
)
|
e
->
tUNK_13
<<
8
|
e
->
tUNK_13
;
timing
->
reg_5
|=
(
e
->
t
UNK_2
+
2
)
<<
8
;
timing
->
reg_7
=
0x4000202
|
(
e
->
t
UNK_2
-
1
)
<<
16
;
timing
->
reg_5
|=
(
e
->
t
CL
+
2
)
<<
8
;
timing
->
reg_7
=
0x4000202
|
(
e
->
t
CL
-
1
)
<<
16
;
}
else
{
timing
->
reg_2
|=
(
unk19
-
1
)
<<
24
;
/* XXX: reg_10022c for recentish cards pretty much unknown*/
timing
->
reg_3
=
e
->
t
UNK_2
-
1
;
timing
->
reg_3
=
e
->
t
CL
-
1
;
timing
->
reg_4
=
(
unk20
<<
24
|
unk21
<<
16
|
e
->
tUNK_13
<<
8
|
e
->
tUNK_13
);
/* XXX: +6? */
...
...
@@ -603,8 +603,8 @@ void nv50_mem_timing_entry(struct drm_device *dev, struct bit_entry *P, struct n
void
nvc0_mem_timing_entry
(
struct
drm_device
*
dev
,
struct
nouveau_pm_tbl_header
*
hdr
,
struct
nouveau_pm_tbl_entry
*
e
,
struct
nouveau_pm_memtiming
*
timing
)
{
timing
->
reg_0
=
(
e
->
tRC
<<
24
|
(
e
->
tRFC
&
0x7f
)
<<
17
|
e
->
tRAS
<<
8
|
e
->
tRP
);
timing
->
reg_1
=
(
nv_rd32
(
dev
,
0x10f294
)
&
0xff000000
)
|
(
e
->
tUNK_11
&
0x0f
)
<<
20
|
(
e
->
tUNK_19
<<
7
)
|
(
e
->
t
UNK_2
&
0x0f
);
timing
->
reg_2
=
(
nv_rd32
(
dev
,
0x10f298
)
&
0xff0000ff
)
|
e
->
t
UNK_0
<<
16
|
e
->
tUNK_1
<<
8
;
timing
->
reg_1
=
(
nv_rd32
(
dev
,
0x10f294
)
&
0xff000000
)
|
(
e
->
tUNK_11
&
0x0f
)
<<
20
|
(
e
->
tUNK_19
<<
7
)
|
(
e
->
t
CL
&
0x0f
);
timing
->
reg_2
=
(
nv_rd32
(
dev
,
0x10f298
)
&
0xff0000ff
)
|
e
->
t
WR
<<
16
|
e
->
tUNK_1
<<
8
;
timing
->
reg_3
=
e
->
tUNK_20
<<
9
|
e
->
tUNK_13
;
timing
->
reg_4
=
(
nv_rd32
(
dev
,
0x10f2a0
)
&
0xfff000ff
)
|
e
->
tUNK_12
<<
15
;
NV_DEBUG
(
dev
,
"Entry %d: 290: %08x %08x %08x %08x
\n
"
,
timing
->
id
,
...
...
@@ -686,6 +686,8 @@ nouveau_mem_timing_init(struct drm_device *dev)
continue
;
timing
->
id
=
i
;
timing
->
WR
=
entry
[
0
];
timing
->
CL
=
entry
[
2
];
if
(
dev_priv
->
card_type
<=
NV_40
)
{
nv40_mem_timing_entry
(
dev
,
hdr
,(
struct
nouveau_pm_tbl_entry
*
)
entry
,
magic_number
,
&
pm
->
memtimings
.
timing
[
i
]);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录