Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
18c9b959
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看板
提交
18c9b959
编写于
7月 13, 2012
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nouveau/gpuobj: create wrapper functions for mapping gpuobj into vm/bar
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
9da226f6
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
44 addition
and
10 deletion
+44
-10
drivers/gpu/drm/nouveau/core/engine/fifo/nvc0.c
drivers/gpu/drm/nouveau/core/engine/fifo/nvc0.c
+3
-5
drivers/gpu/drm/nouveau/core/engine/fifo/nve0.c
drivers/gpu/drm/nouveau/core/engine/fifo/nve0.c
+3
-5
drivers/gpu/drm/nouveau/nouveau_drv.h
drivers/gpu/drm/nouveau/nouveau_drv.h
+7
-0
drivers/gpu/drm/nouveau/nouveau_gpuobj.c
drivers/gpu/drm/nouveau/nouveau_gpuobj.c
+31
-0
未找到文件。
drivers/gpu/drm/nouveau/core/engine/fifo/nvc0.c
浏览文件 @
18c9b959
...
...
@@ -422,7 +422,7 @@ nvc0_fifo_destroy(struct drm_device *dev, int engine)
struct
nvc0_fifo_priv
*
priv
=
nv_engine
(
dev
,
NVOBJ_ENGINE_FIFO
);
struct
drm_nouveau_private
*
dev_priv
=
dev
->
dev_private
;
nouveau_
vm_put
(
&
priv
->
user
.
bar
);
nouveau_
gpuobj_unmap
(
&
priv
->
user
.
bar
);
nouveau_gpuobj_ref
(
NULL
,
&
priv
->
user
.
mem
);
nouveau_gpuobj_ref
(
NULL
,
&
priv
->
playlist
[
1
]);
...
...
@@ -464,13 +464,11 @@ nvc0_fifo_create(struct drm_device *dev)
if
(
ret
)
goto
error
;
ret
=
nouveau_
vm_get
(
dev_priv
->
bar1_vm
,
priv
->
user
.
mem
->
size
,
12
,
NV_MEM_ACCESS_RW
,
&
priv
->
user
.
bar
);
ret
=
nouveau_
gpuobj_map_bar
(
priv
->
user
.
mem
,
NV_MEM_ACCESS_RW
,
&
priv
->
user
.
bar
);
if
(
ret
)
goto
error
;
nouveau_vm_map
(
&
priv
->
user
.
bar
,
*
(
struct
nouveau_mem
**
)
priv
->
user
.
mem
->
node
);
nouveau_irq_register
(
dev
,
8
,
nvc0_fifo_isr
);
error:
if
(
ret
)
...
...
drivers/gpu/drm/nouveau/core/engine/fifo/nve0.c
浏览文件 @
18c9b959
...
...
@@ -402,7 +402,7 @@ nve0_fifo_destroy(struct drm_device *dev, int engine)
struct
nve0_fifo_priv
*
priv
=
nv_engine
(
dev
,
engine
);
int
i
;
nouveau_
vm_put
(
&
priv
->
user
.
bar
);
nouveau_
gpuobj_unmap
(
&
priv
->
user
.
bar
);
nouveau_gpuobj_ref
(
NULL
,
&
priv
->
user
.
mem
);
for
(
i
=
0
;
i
<
NVE0_FIFO_ENGINE_NUM
;
i
++
)
{
...
...
@@ -438,13 +438,11 @@ nve0_fifo_create(struct drm_device *dev)
if
(
ret
)
goto
error
;
ret
=
nouveau_
vm_get
(
dev_priv
->
bar1_vm
,
priv
->
user
.
mem
->
size
,
12
,
NV_MEM_ACCESS_RW
,
&
priv
->
user
.
bar
);
ret
=
nouveau_
gpuobj_map_bar
(
priv
->
user
.
mem
,
NV_MEM_ACCESS_RW
,
&
priv
->
user
.
bar
);
if
(
ret
)
goto
error
;
nouveau_vm_map
(
&
priv
->
user
.
bar
,
*
(
struct
nouveau_mem
**
)
priv
->
user
.
mem
->
node
);
nouveau_irq_register
(
dev
,
8
,
nve0_fifo_isr
);
error:
if
(
ret
)
...
...
drivers/gpu/drm/nouveau/nouveau_drv.h
浏览文件 @
18c9b959
...
...
@@ -879,6 +879,13 @@ extern void nv50_gpuobj_dma_init(struct nouveau_gpuobj *, u32 offset,
int
class
,
u64
base
,
u64
size
,
int
target
,
int
access
,
u32
type
,
u32
comp
);
int
nouveau_gpuobj_map_vm
(
struct
nouveau_gpuobj
*
gpuobj
,
u32
flags
,
struct
nouveau_vm
*
vm
,
struct
nouveau_vma
*
vma
);
int
nouveau_gpuobj_map_bar
(
struct
nouveau_gpuobj
*
gpuobj
,
u32
flags
,
struct
nouveau_vma
*
vma
);
void
nouveau_gpuobj_unmap
(
struct
nouveau_vma
*
vma
);
/* nouveau_irq.c */
extern
int
nouveau_irq_init
(
struct
drm_device
*
);
extern
void
nouveau_irq_fini
(
struct
drm_device
*
);
...
...
drivers/gpu/drm/nouveau/nouveau_gpuobj.c
浏览文件 @
18c9b959
...
...
@@ -806,3 +806,34 @@ nv_wo32(struct nouveau_gpuobj *gpuobj, u32 offset, u32 val)
nv_wi32
(
dev
,
gpuobj
->
pinst
+
offset
,
val
);
}
int
nouveau_gpuobj_map_vm
(
struct
nouveau_gpuobj
*
gpuobj
,
u32
flags
,
struct
nouveau_vm
*
vm
,
struct
nouveau_vma
*
vma
)
{
struct
nouveau_mem
**
mem
=
gpuobj
->
node
;
struct
nouveau_mem
*
node
=
*
mem
;
int
ret
;
ret
=
nouveau_vm_get
(
vm
,
node
->
size
<<
12
,
12
,
flags
,
vma
);
if
(
ret
)
return
ret
;
nouveau_vm_map
(
vma
,
node
);
return
0
;
}
int
nouveau_gpuobj_map_bar
(
struct
nouveau_gpuobj
*
gpuobj
,
u32
flags
,
struct
nouveau_vma
*
vma
)
{
struct
drm_nouveau_private
*
dev_priv
=
gpuobj
->
dev
->
dev_private
;
return
nouveau_gpuobj_map_vm
(
gpuobj
,
flags
,
dev_priv
->
bar1_vm
,
vma
);
}
void
nouveau_gpuobj_unmap
(
struct
nouveau_vma
*
vma
)
{
nouveau_vm_unmap
(
vma
);
nouveau_vm_put
(
vma
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录