Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
9e4fff32
cloud-kernel
项目概览
openanolis
/
cloud-kernel
接近 2 年 前同步成功
通知
169
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看板
提交
9e4fff32
编写于
3月 11, 2016
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nouveau/fifo/gk104: add nvenc plumbing
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
5d7fa4de
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
25 addition
and
7 deletion
+25
-7
drivers/gpu/drm/nouveau/include/nvif/cla06f.h
drivers/gpu/drm/nouveau/include/nvif/cla06f.h
+2
-0
drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.c
drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.c
+2
-0
drivers/gpu/drm/nouveau/nvkm/engine/fifo/gpfifogk104.c
drivers/gpu/drm/nouveau/nvkm/engine/fifo/gpfifogk104.c
+21
-7
未找到文件。
drivers/gpu/drm/nouveau/include/nvif/cla06f.h
浏览文件 @
9e4fff32
...
...
@@ -11,6 +11,8 @@ struct kepler_channel_gpfifo_a_v0 {
#define NVA06F_V0_ENGINE_MSPDEC 0x00000020
#define NVA06F_V0_ENGINE_MSPPP 0x00000040
#define NVA06F_V0_ENGINE_MSENC 0x00000080
#define NVA06F_V0_ENGINE_NVENC0 0x00000400
#define NVA06F_V0_ENGINE_NVENC1 0x00000800
#define NVA06F_V0_ENGINE_CE0 0x00010000
#define NVA06F_V0_ENGINE_CE1 0x00020000
#define NVA06F_V0_ENGINE_CE2 0x00040000
...
...
drivers/gpu/drm/nouveau/nvkm/engine/fifo/gk104.c
浏览文件 @
9e4fff32
...
...
@@ -735,6 +735,8 @@ gk104_fifo_oneinit(struct nvkm_fifo *base)
case
0x0000000b
:
engidx
=
NVKM_ENGINE_MSENC
;
break
;
case
0x0000000c
:
engidx
=
NVKM_ENGINE_VIC
;
break
;
case
0x0000000d
:
engidx
=
NVKM_ENGINE_SEC
;
break
;
case
0x0000000e
:
engidx
=
NVKM_ENGINE_NVENC0
;
break
;
case
0x0000000f
:
engidx
=
NVKM_ENGINE_NVENC1
;
break
;
break
;
default:
break
;
...
...
drivers/gpu/drm/nouveau/nvkm/engine/fifo/gpfifogk104.c
浏览文件 @
9e4fff32
...
...
@@ -67,6 +67,8 @@ gk104_fifo_gpfifo_engine_addr(struct nvkm_engine *engine)
case
NVKM_ENGINE_MSPPP
:
return
0x0260
;
case
NVKM_ENGINE_MSVLD
:
return
0x0270
;
case
NVKM_ENGINE_MSENC
:
return
0x0290
;
case
NVKM_ENGINE_NVENC0
:
return
0x02100290
;
case
NVKM_ENGINE_NVENC1
:
return
0x0210
;
default:
WARN_ON
(
1
);
return
0
;
...
...
@@ -77,9 +79,9 @@ static int
gk104_fifo_gpfifo_engine_fini
(
struct
nvkm_fifo_chan
*
base
,
struct
nvkm_engine
*
engine
,
bool
suspend
)
{
const
u32
offset
=
gk104_fifo_gpfifo_engine_addr
(
engine
);
struct
gk104_fifo_chan
*
chan
=
gk104_fifo_chan
(
base
);
struct
nvkm_gpuobj
*
inst
=
chan
->
base
.
inst
;
u32
offset
=
gk104_fifo_gpfifo_engine_addr
(
engine
);
int
ret
;
ret
=
gk104_fifo_gpfifo_kick
(
chan
);
...
...
@@ -88,8 +90,12 @@ gk104_fifo_gpfifo_engine_fini(struct nvkm_fifo_chan *base,
if
(
offset
)
{
nvkm_kmap
(
inst
);
nvkm_wo32
(
inst
,
offset
+
0x00
,
0x00000000
);
nvkm_wo32
(
inst
,
offset
+
0x04
,
0x00000000
);
nvkm_wo32
(
inst
,
(
offset
&
0xffff
)
+
0x00
,
0x00000000
);
nvkm_wo32
(
inst
,
(
offset
&
0xffff
)
+
0x04
,
0x00000000
);
if
((
offset
>>=
16
))
{
nvkm_wo32
(
inst
,
offset
+
0x00
,
0x00000000
);
nvkm_wo32
(
inst
,
offset
+
0x04
,
0x00000000
);
}
nvkm_done
(
inst
);
}
...
...
@@ -100,15 +106,21 @@ static int
gk104_fifo_gpfifo_engine_init
(
struct
nvkm_fifo_chan
*
base
,
struct
nvkm_engine
*
engine
)
{
const
u32
offset
=
gk104_fifo_gpfifo_engine_addr
(
engine
);
struct
gk104_fifo_chan
*
chan
=
gk104_fifo_chan
(
base
);
struct
nvkm_gpuobj
*
inst
=
chan
->
base
.
inst
;
u32
offset
=
gk104_fifo_gpfifo_engine_addr
(
engine
);
if
(
offset
)
{
u64
addr
=
chan
->
engn
[
engine
->
subdev
.
index
].
vma
.
offset
;
u64
addr
=
chan
->
engn
[
engine
->
subdev
.
index
].
vma
.
offset
;
u32
datalo
=
lower_32_bits
(
addr
)
|
0x00000004
;
u32
datahi
=
upper_32_bits
(
addr
);
nvkm_kmap
(
inst
);
nvkm_wo32
(
inst
,
offset
+
0x00
,
lower_32_bits
(
addr
)
|
4
);
nvkm_wo32
(
inst
,
offset
+
0x04
,
upper_32_bits
(
addr
));
nvkm_wo32
(
inst
,
(
offset
&
0xffff
)
+
0x00
,
datalo
);
nvkm_wo32
(
inst
,
(
offset
&
0xffff
)
+
0x04
,
datahi
);
if
((
offset
>>=
16
))
{
nvkm_wo32
(
inst
,
offset
+
0x00
,
datalo
);
nvkm_wo32
(
inst
,
offset
+
0x04
,
datahi
);
}
nvkm_done
(
inst
);
}
...
...
@@ -331,6 +343,8 @@ gk104_fifo_gpfifo[] = {
{
NVA06F_V0_ENGINE_MSPDEC
,
BIT_ULL
(
NVKM_ENGINE_MSPDEC
)
},
{
NVA06F_V0_ENGINE_MSPPP
,
BIT_ULL
(
NVKM_ENGINE_MSPPP
)
},
{
NVA06F_V0_ENGINE_MSENC
,
BIT_ULL
(
NVKM_ENGINE_MSENC
)
},
{
NVA06F_V0_ENGINE_NVENC0
,
BIT_ULL
(
NVKM_ENGINE_NVENC0
)
},
{
NVA06F_V0_ENGINE_NVENC1
,
BIT_ULL
(
NVKM_ENGINE_NVENC1
)
},
{
NVA06F_V0_ENGINE_CE0
,
BIT_ULL
(
NVKM_ENGINE_CE0
)
},
{
NVA06F_V0_ENGINE_CE1
,
BIT_ULL
(
NVKM_ENGINE_CE1
)
},
{
NVA06F_V0_ENGINE_CE2
,
BIT_ULL
(
NVKM_ENGINE_CE2
)
},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录