Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
e2b34fa0
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e2b34fa0
编写于
7月 27, 2012
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nve0/fifo: add support for the flip completion swmthd
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
0d7614f0
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
33 addition
and
4 deletion
+33
-4
drivers/gpu/drm/nouveau/nve0_fifo.c
drivers/gpu/drm/nouveau/nve0_fifo.c
+33
-4
未找到文件。
drivers/gpu/drm/nouveau/nve0_fifo.c
浏览文件 @
e2b34fa0
...
@@ -294,6 +294,25 @@ nve0_fifo_isr_vm_fault(struct drm_device *dev, int unit)
...
@@ -294,6 +294,25 @@ nve0_fifo_isr_vm_fault(struct drm_device *dev, int unit)
printk
(
" on channel 0x%010llx
\n
"
,
(
u64
)
inst
<<
12
);
printk
(
" on channel 0x%010llx
\n
"
,
(
u64
)
inst
<<
12
);
}
}
static
int
nve0_fifo_page_flip
(
struct
drm_device
*
dev
,
u32
chid
)
{
struct
nve0_fifo_priv
*
priv
=
nv_engine
(
dev
,
NVOBJ_ENGINE_FIFO
);
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
struct
nouveau_channel
*
chan
=
NULL
;
unsigned
long
flags
;
int
ret
=
-
EINVAL
;
spin_lock_irqsave
(
&
dev_priv
->
channels
.
lock
,
flags
);
if
(
likely
(
chid
>=
0
&&
chid
<
priv
->
base
.
channels
))
{
chan
=
dev_priv
->
channels
.
ptr
[
chid
];
if
(
likely
(
chan
))
ret
=
nouveau_finish_page_flip
(
chan
,
NULL
);
}
spin_unlock_irqrestore
(
&
dev_priv
->
channels
.
lock
,
flags
);
return
ret
;
}
static
void
static
void
nve0_fifo_isr_subfifo_intr
(
struct
drm_device
*
dev
,
int
unit
)
nve0_fifo_isr_subfifo_intr
(
struct
drm_device
*
dev
,
int
unit
)
{
{
...
@@ -303,11 +322,21 @@ nve0_fifo_isr_subfifo_intr(struct drm_device *dev, int unit)
...
@@ -303,11 +322,21 @@ nve0_fifo_isr_subfifo_intr(struct drm_device *dev, int unit)
u32
chid
=
nv_rd32
(
dev
,
0x040120
+
(
unit
*
0x2000
))
&
0x7f
;
u32
chid
=
nv_rd32
(
dev
,
0x040120
+
(
unit
*
0x2000
))
&
0x7f
;
u32
subc
=
(
addr
&
0x00070000
);
u32
subc
=
(
addr
&
0x00070000
);
u32
mthd
=
(
addr
&
0x00003ffc
);
u32
mthd
=
(
addr
&
0x00003ffc
);
u32
show
=
stat
;
if
(
stat
&
0x00200000
)
{
if
(
mthd
==
0x0054
)
{
if
(
!
nve0_fifo_page_flip
(
dev
,
chid
))
show
&=
~
0x00200000
;
}
}
NV_INFO
(
dev
,
"PSUBFIFO %d:"
,
unit
);
if
(
show
)
{
nouveau_bitfield_print
(
nve0_fifo_subfifo_intr
,
stat
);
NV_INFO
(
dev
,
"PFIFO%d:"
,
unit
);
NV_INFO
(
dev
,
"PSUBFIFO %d: ch %d subc %d mthd 0x%04x data 0x%08x
\n
"
,
nouveau_bitfield_print
(
nve0_fifo_subfifo_intr
,
show
);
NV_INFO
(
dev
,
"PFIFO%d: ch %d subc %d mthd 0x%04x data 0x%08x
\n
"
,
unit
,
chid
,
subc
,
mthd
,
data
);
unit
,
chid
,
subc
,
mthd
,
data
);
}
nv_wr32
(
dev
,
0x0400c0
+
(
unit
*
0x2000
),
0x80600008
);
nv_wr32
(
dev
,
0x0400c0
+
(
unit
*
0x2000
),
0x80600008
);
nv_wr32
(
dev
,
0x040108
+
(
unit
*
0x2000
),
stat
);
nv_wr32
(
dev
,
0x040108
+
(
unit
*
0x2000
),
stat
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录