Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
80fe155b
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,发现更多精彩内容 >>
提交
80fe155b
编写于
10月 08, 2012
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nvc0/dmaobj: implement initial bind() method
Currently unused. Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
f756944a
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
69 addition
and
1 deletion
+69
-1
drivers/gpu/drm/nouveau/core/engine/dmaobj/nvc0.c
drivers/gpu/drm/nouveau/core/engine/dmaobj/nvc0.c
+58
-1
drivers/gpu/drm/nouveau/core/include/core/class.h
drivers/gpu/drm/nouveau/core/include/core/class.h
+11
-0
未找到文件。
drivers/gpu/drm/nouveau/core/engine/dmaobj/nvc0.c
浏览文件 @
80fe155b
...
...
@@ -39,7 +39,9 @@ nvc0_dmaobj_bind(struct nouveau_dmaeng *dmaeng,
struct
nouveau_dmaobj
*
dmaobj
,
struct
nouveau_gpuobj
**
pgpuobj
)
{
int
ret
=
0
;
u32
flags0
=
nv_mclass
(
dmaobj
);
u32
flags5
=
0x00000000
;
int
ret
;
if
(
!
nv_iclass
(
parent
,
NV_ENGCTX_CLASS
))
{
switch
(
nv_mclass
(
parent
->
parent
))
{
...
...
@@ -49,6 +51,61 @@ nvc0_dmaobj_bind(struct nouveau_dmaeng *dmaeng,
}
else
return
0
;
if
(
!
(
dmaobj
->
conf0
&
NVC0_DMA_CONF0_ENABLE
))
{
if
(
dmaobj
->
target
==
NV_MEM_TARGET_VM
)
{
dmaobj
->
conf0
=
NVC0_DMA_CONF0_PRIV_VM
;
dmaobj
->
conf0
|=
NVC0_DMA_CONF0_TYPE_VM
;
}
else
{
dmaobj
->
conf0
=
NVC0_DMA_CONF0_PRIV_US
;
dmaobj
->
conf0
|=
NVC0_DMA_CONF0_TYPE_LINEAR
;
dmaobj
->
conf0
|=
0x00020000
;
}
}
flags0
|=
(
dmaobj
->
conf0
&
NVC0_DMA_CONF0_TYPE
)
<<
22
;
flags0
|=
(
dmaobj
->
conf0
&
NVC0_DMA_CONF0_PRIV
);
flags5
|=
(
dmaobj
->
conf0
&
NVC0_DMA_CONF0_UNKN
);
switch
(
dmaobj
->
target
)
{
case
NV_MEM_TARGET_VM
:
flags0
|=
0x00000000
;
break
;
case
NV_MEM_TARGET_VRAM
:
flags0
|=
0x00010000
;
break
;
case
NV_MEM_TARGET_PCI
:
flags0
|=
0x00020000
;
break
;
case
NV_MEM_TARGET_PCI_NOSNOOP
:
flags0
|=
0x00030000
;
break
;
default:
return
-
EINVAL
;
}
switch
(
dmaobj
->
access
)
{
case
NV_MEM_ACCESS_VM
:
break
;
case
NV_MEM_ACCESS_RO
:
flags0
|=
0x00040000
;
break
;
case
NV_MEM_ACCESS_WO
:
case
NV_MEM_ACCESS_RW
:
flags0
|=
0x00080000
;
break
;
}
ret
=
nouveau_gpuobj_new
(
parent
,
parent
,
24
,
32
,
0
,
pgpuobj
);
if
(
ret
==
0
)
{
nv_wo32
(
*
pgpuobj
,
0x00
,
flags0
);
nv_wo32
(
*
pgpuobj
,
0x04
,
lower_32_bits
(
dmaobj
->
limit
));
nv_wo32
(
*
pgpuobj
,
0x08
,
lower_32_bits
(
dmaobj
->
start
));
nv_wo32
(
*
pgpuobj
,
0x0c
,
upper_32_bits
(
dmaobj
->
limit
)
<<
24
|
upper_32_bits
(
dmaobj
->
start
));
nv_wo32
(
*
pgpuobj
,
0x10
,
0x00000000
);
nv_wo32
(
*
pgpuobj
,
0x14
,
flags5
);
}
return
ret
;
}
...
...
drivers/gpu/drm/nouveau/core/include/core/class.h
浏览文件 @
80fe155b
...
...
@@ -69,6 +69,17 @@ struct nv_device_class {
#define NV50_DMA_CONF0_TYPE_LINEAR 0x00000000
#define NV50_DMA_CONF0_TYPE_VM 0x0000007f
/* NVC0:NVD9 */
#define NVC0_DMA_CONF0_ENABLE 0x80000000
#define NVC0_DMA_CONF0_PRIV 0x00300000
#define NVC0_DMA_CONF0_PRIV_VM 0x00000000
#define NVC0_DMA_CONF0_PRIV_US 0x00100000
#define NVC0_DMA_CONF0_PRIV__S 0x00200000
#define NVC0_DMA_CONF0_UNKN
/* PART? */
0x00030000
#define NVC0_DMA_CONF0_TYPE 0x000000ff
#define NVC0_DMA_CONF0_TYPE_LINEAR 0x00000000
#define NVC0_DMA_CONF0_TYPE_VM 0x000000ff
struct
nv_dma_class
{
u32
flags
;
u32
pad0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录