Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
8365f2fd
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
8365f2fd
编写于
11月 22, 2012
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nva3/copy: use nouveau_falcon base class
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
27abc13e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
59 deletion
+22
-59
drivers/gpu/drm/nouveau/core/engine/copy/nva3.c
drivers/gpu/drm/nouveau/core/engine/copy/nva3.c
+22
-59
未找到文件。
drivers/gpu/drm/nouveau/core/engine/copy/nva3.c
浏览文件 @
8365f2fd
...
...
@@ -22,10 +22,9 @@
* Authors: Ben Skeggs
*/
#include <core/os.h>
#include <core/enum.h>
#include <core/falcon.h>
#include <core/class.h>
#include <core/en
gctx
.h>
#include <core/en
um
.h>
#include <subdev/fb.h>
#include <subdev/vm.h>
...
...
@@ -36,11 +35,11 @@
#include "fuc/nva3.fuc.h"
struct
nva3_copy_priv
{
struct
nouveau_
copy
base
;
struct
nouveau_
falcon
base
;
};
struct
nva3_copy_chan
{
struct
nouveau_
copy
_chan
base
;
struct
nouveau_
falcon
_chan
base
;
};
/*******************************************************************************
...
...
@@ -66,8 +65,8 @@ nva3_copy_context_ctor(struct nouveau_object *parent,
struct
nva3_copy_chan
*
priv
;
int
ret
;
ret
=
nouveau_
copy_context_create
(
parent
,
engine
,
oclass
,
NULL
,
256
,
0
,
NVOBJ_FLAG_ZERO_ALLOC
,
&
priv
);
ret
=
nouveau_
falcon_context_create
(
parent
,
engine
,
oclass
,
NULL
,
256
,
0
,
NVOBJ_FLAG_ZERO_ALLOC
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
...
...
@@ -80,11 +79,11 @@ nva3_copy_cclass = {
.
handle
=
NV_ENGCTX
(
COPY0
,
0xa3
),
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nva3_copy_context_ctor
,
.
dtor
=
_nouveau_
copy
_context_dtor
,
.
init
=
_nouveau_
copy
_context_init
,
.
fini
=
_nouveau_
copy
_context_fini
,
.
rd32
=
_nouveau_
copy
_context_rd32
,
.
wr32
=
_nouveau_
copy
_context_wr32
,
.
dtor
=
_nouveau_
falcon
_context_dtor
,
.
init
=
_nouveau_
falcon
_context_init
,
.
fini
=
_nouveau_
falcon
_context_fini
,
.
rd32
=
_nouveau_
falcon
_context_rd32
,
.
wr32
=
_nouveau_
falcon
_context_wr32
,
},
};
...
...
@@ -154,7 +153,8 @@ nva3_copy_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct
nva3_copy_priv
*
priv
;
int
ret
;
ret
=
nouveau_copy_create
(
parent
,
engine
,
oclass
,
enable
,
0
,
&
priv
);
ret
=
nouveau_falcon_create
(
parent
,
engine
,
oclass
,
0x104000
,
enable
,
"PCE0"
,
"copy0"
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
...
...
@@ -164,59 +164,22 @@ nva3_copy_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
nv_engine
(
priv
)
->
cclass
=
&
nva3_copy_cclass
;
nv_engine
(
priv
)
->
sclass
=
nva3_copy_sclass
;
nv_engine
(
priv
)
->
tlb_flush
=
nva3_copy_tlb_flush
;
nv_falcon
(
priv
)
->
code
.
data
=
nva3_pcopy_code
;
nv_falcon
(
priv
)
->
code
.
size
=
sizeof
(
nva3_pcopy_code
);
nv_falcon
(
priv
)
->
data
.
data
=
nva3_pcopy_data
;
nv_falcon
(
priv
)
->
data
.
size
=
sizeof
(
nva3_pcopy_data
);
return
0
;
}
static
int
nva3_copy_init
(
struct
nouveau_object
*
object
)
{
struct
nva3_copy_priv
*
priv
=
(
void
*
)
object
;
int
ret
,
i
;
ret
=
nouveau_copy_init
(
&
priv
->
base
);
if
(
ret
)
return
ret
;
/* disable all interrupts */
nv_wr32
(
priv
,
0x104014
,
0xffffffff
);
/* upload ucode */
nv_wr32
(
priv
,
0x1041c0
,
0x01000000
);
for
(
i
=
0
;
i
<
sizeof
(
nva3_pcopy_data
)
/
4
;
i
++
)
nv_wr32
(
priv
,
0x1041c4
,
nva3_pcopy_data
[
i
]);
nv_wr32
(
priv
,
0x104180
,
0x01000000
);
for
(
i
=
0
;
i
<
sizeof
(
nva3_pcopy_code
)
/
4
;
i
++
)
{
if
((
i
&
0x3f
)
==
0
)
nv_wr32
(
priv
,
0x104188
,
i
>>
6
);
nv_wr32
(
priv
,
0x104184
,
nva3_pcopy_code
[
i
]);
}
/* start it running */
nv_wr32
(
priv
,
0x10410c
,
0x00000000
);
nv_wr32
(
priv
,
0x104104
,
0x00000000
);
/* ENTRY */
nv_wr32
(
priv
,
0x104100
,
0x00000002
);
/* TRIGGER */
return
0
;
}
static
int
nva3_copy_fini
(
struct
nouveau_object
*
object
,
bool
suspend
)
{
struct
nva3_copy_priv
*
priv
=
(
void
*
)
object
;
nv_mask
(
priv
,
0x104048
,
0x00000003
,
0x00000000
);
nv_wr32
(
priv
,
0x104014
,
0xffffffff
);
return
nouveau_copy_fini
(
&
priv
->
base
,
suspend
);
}
struct
nouveau_oclass
nva3_copy_oclass
=
{
.
handle
=
NV_ENGINE
(
COPY0
,
0xa3
),
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nva3_copy_ctor
,
.
dtor
=
_nouveau_copy_dtor
,
.
init
=
nva3_copy_init
,
.
fini
=
nva3_copy_fini
,
.
dtor
=
_nouveau_falcon_dtor
,
.
init
=
_nouveau_falcon_init
,
.
fini
=
_nouveau_falcon_fini
,
.
rd32
=
_nouveau_falcon_rd32
,
.
wr32
=
_nouveau_falcon_wr32
,
},
};
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录