Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
142ea05f
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看板
提交
142ea05f
编写于
8月 20, 2015
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nouveau/gr: switch to gpuobj accessor macros
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
5444e770
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
385 addition
and
317 deletion
+385
-317
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c
+21
-16
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv40.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv40.c
+6
-4
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv40.h
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv40.h
+7
-4
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv50.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv50.c
+11
-5
drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
+29
-18
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv04.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv04.c
+27
-18
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c
+46
-38
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv25.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv25.c
+48
-44
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv2a.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv2a.c
+39
-35
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv30.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv30.c
+46
-42
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv34.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv34.c
+45
-41
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv35.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv35.c
+45
-41
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.c
+9
-7
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv50.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv50.c
+6
-4
未找到文件。
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c
浏览文件 @
142ea05f
...
...
@@ -1289,27 +1289,28 @@ gf100_grctx_generate(struct gf100_gr *gr)
}
/* PGD pointer */
nv_wo32
(
chan
,
0x0200
,
lower_32_bits
(
chan
->
addr
+
0x1000
));
nv_wo32
(
chan
,
0x0204
,
upper_32_bits
(
chan
->
addr
+
0x1000
));
nv_wo32
(
chan
,
0x0208
,
0xffffffff
);
nv_wo32
(
chan
,
0x020c
,
0x000000ff
);
nvkm_kmap
(
chan
);
nvkm_wo32
(
chan
,
0x0200
,
lower_32_bits
(
chan
->
addr
+
0x1000
));
nvkm_wo32
(
chan
,
0x0204
,
upper_32_bits
(
chan
->
addr
+
0x1000
));
nvkm_wo32
(
chan
,
0x0208
,
0xffffffff
);
nvkm_wo32
(
chan
,
0x020c
,
0x000000ff
);
/* PGT[0] pointer */
nv_wo32
(
chan
,
0x1000
,
0x00000000
);
nv_wo32
(
chan
,
0x1004
,
0x00000001
|
(
chan
->
addr
+
0x2000
)
>>
8
);
nv
km
_wo32
(
chan
,
0x1000
,
0x00000000
);
nv
km
_wo32
(
chan
,
0x1004
,
0x00000001
|
(
chan
->
addr
+
0x2000
)
>>
8
);
/* identity-map the whole "channel" into its own vm */
for
(
i
=
0
;
i
<
chan
->
size
/
4096
;
i
++
)
{
u64
addr
=
((
chan
->
addr
+
(
i
*
4096
))
>>
8
)
|
1
;
nv_wo32
(
chan
,
0x2000
+
(
i
*
8
),
lower_32_bits
(
addr
));
nv_wo32
(
chan
,
0x2004
+
(
i
*
8
),
upper_32_bits
(
addr
));
nv
km
_wo32
(
chan
,
0x2000
+
(
i
*
8
),
lower_32_bits
(
addr
));
nv
km
_wo32
(
chan
,
0x2004
+
(
i
*
8
),
upper_32_bits
(
addr
));
}
/* context pointer (virt) */
nv_wo32
(
chan
,
0x0210
,
0x00080004
);
nv_wo32
(
chan
,
0x0214
,
0x00000000
);
nvkm_wo32
(
chan
,
0x0210
,
0x00080004
);
nvkm_wo32
(
chan
,
0x0214
,
0x00000000
);
bar
->
flush
(
bar
);
nvkm_done
(
chan
);
nvkm_wr32
(
device
,
0x100cb8
,
(
chan
->
addr
+
0x1000
)
>>
8
);
nvkm_wr32
(
device
,
0x100cbc
,
0x80000001
);
...
...
@@ -1335,11 +1336,13 @@ gf100_grctx_generate(struct gf100_gr *gr)
break
;
);
nv_wo32
(
chan
,
0x8001c
,
1
);
nv_wo32
(
chan
,
0x80020
,
0
);
nv_wo32
(
chan
,
0x80028
,
0
);
nv_wo32
(
chan
,
0x8002c
,
0
);
nvkm_kmap
(
chan
);
nvkm_wo32
(
chan
,
0x8001c
,
1
);
nvkm_wo32
(
chan
,
0x80020
,
0
);
nvkm_wo32
(
chan
,
0x80028
,
0
);
nvkm_wo32
(
chan
,
0x8002c
,
0
);
bar
->
flush
(
bar
);
nvkm_done
(
chan
);
}
else
{
nvkm_wr32
(
device
,
0x409840
,
0x80000000
);
nvkm_wr32
(
device
,
0x409500
,
0x80000000
|
chan
->
addr
>>
12
);
...
...
@@ -1367,8 +1370,10 @@ gf100_grctx_generate(struct gf100_gr *gr)
gr
->
data
=
kmalloc
(
gr
->
size
,
GFP_KERNEL
);
if
(
gr
->
data
)
{
nvkm_kmap
(
chan
);
for
(
i
=
0
;
i
<
gr
->
size
;
i
+=
4
)
gr
->
data
[
i
/
4
]
=
nv_ro32
(
chan
,
0x80000
+
i
);
gr
->
data
[
i
/
4
]
=
nvkm_ro32
(
chan
,
0x80000
+
i
);
nvkm_done
(
chan
);
ret
=
0
;
}
else
{
ret
=
-
ENOMEM
;
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv40.c
浏览文件 @
142ea05f
...
...
@@ -580,16 +580,18 @@ nv40_gr_construct_shader(struct nvkm_grctx *ctx)
if
(
ctx
->
mode
!=
NVKM_GRCTX_VALS
)
return
;
nvkm_kmap
(
obj
);
offset
+=
0x0280
/
4
;
for
(
i
=
0
;
i
<
16
;
i
++
,
offset
+=
2
)
nv_wo32
(
obj
,
offset
*
4
,
0x3f800000
);
nv
km
_wo32
(
obj
,
offset
*
4
,
0x3f800000
);
for
(
vs
=
0
;
vs
<
vs_nr
;
vs
++
,
offset
+=
vs_len
)
{
for
(
i
=
0
;
i
<
vs_nr_b0
*
6
;
i
+=
6
)
nv_wo32
(
obj
,
(
offset
+
b0_offset
+
i
)
*
4
,
0x00000001
);
nv
km
_wo32
(
obj
,
(
offset
+
b0_offset
+
i
)
*
4
,
0x00000001
);
for
(
i
=
0
;
i
<
vs_nr_b1
*
4
;
i
+=
4
)
nv_wo32
(
obj
,
(
offset
+
b1_offset
+
i
)
*
4
,
0x3f800000
);
nv
km
_wo32
(
obj
,
(
offset
+
b1_offset
+
i
)
*
4
,
0x3f800000
);
}
nvkm_done
(
obj
);
}
static
void
...
...
@@ -674,7 +676,7 @@ nv40_grctx_init(struct nvkm_device *device, u32 *size)
struct
nvkm_grctx
ctx
=
{
.
device
=
device
,
.
mode
=
NVKM_GRCTX_PROG
,
.
data
=
ctxprog
,
.
ucode
=
ctxprog
,
.
ctxprog_max
=
256
,
};
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv40.h
浏览文件 @
142ea05f
...
...
@@ -9,7 +9,8 @@ struct nvkm_grctx {
NVKM_GRCTX_PROG
,
NVKM_GRCTX_VALS
}
mode
;
void
*
data
;
u32
*
ucode
;
struct
nvkm_gpuobj
*
data
;
u32
ctxprog_max
;
u32
ctxprog_len
;
...
...
@@ -22,7 +23,7 @@ struct nvkm_grctx {
static
inline
void
cp_out
(
struct
nvkm_grctx
*
ctx
,
u32
inst
)
{
u32
*
ctxprog
=
ctx
->
data
;
u32
*
ctxprog
=
ctx
->
ucode
;
if
(
ctx
->
mode
!=
NVKM_GRCTX_PROG
)
return
;
...
...
@@ -56,7 +57,7 @@ cp_ctx(struct nvkm_grctx *ctx, u32 reg, u32 length)
static
inline
void
cp_name
(
struct
nvkm_grctx
*
ctx
,
int
name
)
{
u32
*
ctxprog
=
ctx
->
data
;
u32
*
ctxprog
=
ctx
->
ucode
;
int
i
;
if
(
ctx
->
mode
!=
NVKM_GRCTX_PROG
)
...
...
@@ -124,6 +125,8 @@ gr_def(struct nvkm_grctx *ctx, u32 reg, u32 val)
reg
=
(
reg
-
0x00400000
)
/
4
;
reg
=
(
reg
-
ctx
->
ctxprog_reg
)
+
ctx
->
ctxvals_base
;
nv_wo32
(
ctx
->
data
,
reg
*
4
,
val
);
nvkm_kmap
(
ctx
->
data
);
nvkm_wo32
(
ctx
->
data
,
reg
*
4
,
val
);
nvkm_done
(
ctx
->
data
);
}
#endif
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxnv50.c
浏览文件 @
142ea05f
...
...
@@ -268,7 +268,7 @@ nv50_grctx_init(struct nvkm_device *device, u32 *size)
struct
nvkm_grctx
ctx
=
{
.
device
=
device
,
.
mode
=
NVKM_GRCTX_PROG
,
.
data
=
ctxprog
,
.
ucode
=
ctxprog
,
.
ctxprog_max
=
512
,
};
...
...
@@ -783,9 +783,12 @@ nv50_gr_construct_mmio(struct nvkm_grctx *ctx)
static
void
dd_emit
(
struct
nvkm_grctx
*
ctx
,
int
num
,
u32
val
)
{
int
i
;
if
(
val
&&
ctx
->
mode
==
NVKM_GRCTX_VALS
)
if
(
val
&&
ctx
->
mode
==
NVKM_GRCTX_VALS
)
{
nvkm_kmap
(
ctx
->
data
);
for
(
i
=
0
;
i
<
num
;
i
++
)
nv_wo32
(
ctx
->
data
,
4
*
(
ctx
->
ctxvals_pos
+
i
),
val
);
nvkm_wo32
(
ctx
->
data
,
4
*
(
ctx
->
ctxvals_pos
+
i
),
val
);
nvkm_done
(
ctx
->
data
);
}
ctx
->
ctxvals_pos
+=
num
;
}
...
...
@@ -1155,9 +1158,12 @@ nv50_gr_construct_mmio_ddata(struct nvkm_grctx *ctx)
static
void
xf_emit
(
struct
nvkm_grctx
*
ctx
,
int
num
,
u32
val
)
{
int
i
;
if
(
val
&&
ctx
->
mode
==
NVKM_GRCTX_VALS
)
if
(
val
&&
ctx
->
mode
==
NVKM_GRCTX_VALS
)
{
nvkm_kmap
(
ctx
->
data
);
for
(
i
=
0
;
i
<
num
;
i
++
)
nv_wo32
(
ctx
->
data
,
4
*
(
ctx
->
ctxvals_pos
+
(
i
<<
3
)),
val
);
nvkm_wo32
(
ctx
->
data
,
4
*
(
ctx
->
ctxvals_pos
+
(
i
<<
3
)),
val
);
nvkm_done
(
ctx
->
data
);
}
ctx
->
ctxvals_pos
+=
num
<<
3
;
}
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
浏览文件 @
142ea05f
...
...
@@ -283,6 +283,7 @@ gf100_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
struct
gf100_gr_data
*
data
=
gr
->
mmio_data
;
struct
gf100_gr_mmio
*
mmio
=
gr
->
mmio_list
;
struct
gf100_gr_chan
*
chan
;
struct
nvkm_gpuobj
*
image
;
int
ret
,
i
;
/* allocate memory for context, and fill with default values */
...
...
@@ -324,6 +325,7 @@ gf100_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
}
/* finally, fill in the mmio list and point the context at it */
nvkm_kmap
(
chan
->
mmio
);
for
(
i
=
0
;
mmio
->
addr
&&
i
<
ARRAY_SIZE
(
gr
->
mmio_list
);
i
++
)
{
u32
addr
=
mmio
->
addr
;
u32
data
=
mmio
->
data
;
...
...
@@ -333,28 +335,32 @@ gf100_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
data
|=
info
>>
mmio
->
shift
;
}
nv_wo32
(
chan
->
mmio
,
chan
->
mmio_nr
++
*
4
,
addr
);
nv_wo32
(
chan
->
mmio
,
chan
->
mmio_nr
++
*
4
,
data
);
nv
km
_wo32
(
chan
->
mmio
,
chan
->
mmio_nr
++
*
4
,
addr
);
nv
km
_wo32
(
chan
->
mmio
,
chan
->
mmio_nr
++
*
4
,
data
);
mmio
++
;
}
nvkm_done
(
chan
->
mmio
);
image
=
&
chan
->
base
.
base
.
gpuobj
;
nvkm_kmap
(
image
);
for
(
i
=
0
;
i
<
gr
->
size
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
gr
->
data
[
i
/
4
]);
nv
km_wo32
(
image
,
i
,
gr
->
data
[
i
/
4
]);
if
(
!
gr
->
firmware
)
{
nv
_wo32
(
chan
,
0x00
,
chan
->
mmio_nr
/
2
);
nv
_wo32
(
chan
,
0x04
,
chan
->
mmio_vma
.
offset
>>
8
);
nv
km_wo32
(
image
,
0x00
,
chan
->
mmio_nr
/
2
);
nv
km_wo32
(
image
,
0x04
,
chan
->
mmio_vma
.
offset
>>
8
);
}
else
{
nv
_wo32
(
chan
,
0xf4
,
0
);
nv
_wo32
(
chan
,
0xf8
,
0
);
nv
_wo32
(
chan
,
0x10
,
chan
->
mmio_nr
/
2
);
nv
_wo32
(
chan
,
0x14
,
lower_32_bits
(
chan
->
mmio_vma
.
offset
));
nv
_wo32
(
chan
,
0x18
,
upper_32_bits
(
chan
->
mmio_vma
.
offset
));
nv
_wo32
(
chan
,
0x1c
,
1
);
nv
_wo32
(
chan
,
0x20
,
0
);
nv
_wo32
(
chan
,
0x28
,
0
);
nv
_wo32
(
chan
,
0x2c
,
0
);
nv
km_wo32
(
image
,
0xf4
,
0
);
nv
km_wo32
(
image
,
0xf8
,
0
);
nv
km_wo32
(
image
,
0x10
,
chan
->
mmio_nr
/
2
);
nv
km_wo32
(
image
,
0x14
,
lower_32_bits
(
chan
->
mmio_vma
.
offset
));
nv
km_wo32
(
image
,
0x18
,
upper_32_bits
(
chan
->
mmio_vma
.
offset
));
nv
km_wo32
(
image
,
0x1c
,
1
);
nv
km_wo32
(
image
,
0x20
,
0
);
nv
km_wo32
(
image
,
0x28
,
0
);
nv
km_wo32
(
image
,
0x2c
,
0
);
}
nvkm_done
(
image
);
return
0
;
}
...
...
@@ -1679,10 +1685,15 @@ gf100_gr_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
if
(
ret
)
return
ret
;
for
(
i
=
0
;
i
<
0x1000
;
i
+=
4
)
{
nv_wo32
(
gr
->
unk4188b4
,
i
,
0x00000010
);
nv_wo32
(
gr
->
unk4188b8
,
i
,
0x00000010
);
}
nvkm_kmap
(
gr
->
unk4188b4
);
for
(
i
=
0
;
i
<
0x1000
;
i
+=
4
)
nvkm_wo32
(
gr
->
unk4188b4
,
i
,
0x00000010
);
nvkm_done
(
gr
->
unk4188b4
);
nvkm_kmap
(
gr
->
unk4188b8
);
for
(
i
=
0
;
i
<
0x1000
;
i
+=
4
)
nvkm_wo32
(
gr
->
unk4188b8
,
i
,
0x00000010
);
nvkm_done
(
gr
->
unk4188b8
);
gr
->
rop_nr
=
(
nvkm_rd32
(
device
,
0x409604
)
&
0x001f0000
)
>>
16
;
gr
->
gpc_nr
=
nvkm_rd32
(
device
,
0x409604
)
&
0x0000001f
;
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv04.c
浏览文件 @
142ea05f
...
...
@@ -443,36 +443,42 @@ nv04_gr(struct nv04_gr_chan *chan)
*/
static
void
nv04_gr_set_ctx1
(
struct
nvkm_object
*
obj
ect
,
u32
mask
,
u32
value
)
nv04_gr_set_ctx1
(
struct
nvkm_object
*
obj
,
u32
mask
,
u32
value
)
{
struct
nv04_gr
*
gr
=
(
void
*
)
object
->
engine
;
struct
nvkm_gpuobj
*
object
=
container_of
(
obj
,
typeof
(
*
object
),
object
);
struct
nv04_gr
*
gr
=
(
void
*
)
object
->
object
.
engine
;
struct
nvkm_device
*
device
=
gr
->
base
.
engine
.
subdev
.
device
;
int
subc
=
(
nvkm_rd32
(
device
,
NV04_PGRAPH_TRAPPED_ADDR
)
>>
13
)
&
0x7
;
u32
tmp
;
tmp
=
nv_ro32
(
object
,
0x00
);
nvkm_kmap
(
object
);
tmp
=
nvkm_ro32
(
object
,
0x00
);
tmp
&=
~
mask
;
tmp
|=
value
;
nv_wo32
(
object
,
0x00
,
tmp
);
nvkm_wo32
(
object
,
0x00
,
tmp
);
nvkm_done
(
object
);
nvkm_wr32
(
device
,
NV04_PGRAPH_CTX_SWITCH1
,
tmp
);
nvkm_wr32
(
device
,
NV04_PGRAPH_CTX_CACHE1
+
(
subc
<<
2
),
tmp
);
}
static
void
nv04_gr_set_ctx_val
(
struct
nvkm_object
*
obj
ect
,
u32
mask
,
u32
value
)
nv04_gr_set_ctx_val
(
struct
nvkm_object
*
obj
,
u32
mask
,
u32
value
)
{
struct
nvkm_gpuobj
*
object
=
container_of
(
obj
,
typeof
(
*
object
),
object
);
int
class
,
op
,
valid
=
1
;
u32
tmp
,
ctx1
;
ctx1
=
nv_ro32
(
object
,
0x00
);
nvkm_kmap
(
object
);
ctx1
=
nvkm_ro32
(
object
,
0x00
);
class
=
ctx1
&
0xff
;
op
=
(
ctx1
>>
15
)
&
7
;
tmp
=
nv_ro32
(
object
,
0x0c
);
tmp
=
nv
km
_ro32
(
object
,
0x0c
);
tmp
&=
~
mask
;
tmp
|=
value
;
nv_wo32
(
object
,
0x0c
,
tmp
);
nvkm_wo32
(
object
,
0x0c
,
tmp
);
nvkm_done
(
object
);
/* check for valid surf2d/surf_dst/surf_color */
if
(
!
(
tmp
&
0x02000000
))
...
...
@@ -504,23 +510,24 @@ nv04_gr_set_ctx_val(struct nvkm_object *object, u32 mask, u32 value)
break
;
}
nv04_gr_set_ctx1
(
obj
ect
,
0x01000000
,
valid
<<
24
);
nv04_gr_set_ctx1
(
obj
,
0x01000000
,
valid
<<
24
);
}
static
int
nv04_gr_mthd_set_operation
(
struct
nvkm_object
*
obj
ect
,
u32
mthd
,
nv04_gr_mthd_set_operation
(
struct
nvkm_object
*
obj
,
u32
mthd
,
void
*
args
,
u32
size
)
{
u32
class
=
nv_ro32
(
object
,
0
)
&
0xff
;
struct
nvkm_gpuobj
*
object
=
container_of
(
obj
,
typeof
(
*
object
),
object
);
u32
class
=
nvkm_ro32
(
object
,
0
)
&
0xff
;
u32
data
=
*
(
u32
*
)
args
;
if
(
data
>
5
)
return
1
;
/* Old versions of the objects only accept first three operations. */
if
(
data
>
2
&&
class
<
0x40
)
return
1
;
nv04_gr_set_ctx1
(
obj
ect
,
0x00038000
,
data
<<
15
);
nv04_gr_set_ctx1
(
obj
,
0x00038000
,
data
<<
15
);
/* changing operation changes set of objects needed for validation */
nv04_gr_set_ctx_val
(
obj
ect
,
0
,
0
);
nv04_gr_set_ctx_val
(
obj
,
0
,
0
);
return
0
;
}
...
...
@@ -963,13 +970,15 @@ nv04_gr_object_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
if
(
ret
)
return
ret
;
nv_wo32
(
obj
,
0x00
,
nv_mclass
(
obj
));
nvkm_kmap
(
obj
);
nvkm_wo32
(
obj
,
0x00
,
nv_mclass
(
obj
));
#ifdef __BIG_ENDIAN
nv_mo32
(
obj
,
0x00
,
0x00080000
,
0x00080000
);
nv
km
_mo32
(
obj
,
0x00
,
0x00080000
,
0x00080000
);
#endif
nv_wo32
(
obj
,
0x04
,
0x00000000
);
nv_wo32
(
obj
,
0x08
,
0x00000000
);
nv_wo32
(
obj
,
0x0c
,
0x00000000
);
nvkm_wo32
(
obj
,
0x04
,
0x00000000
);
nvkm_wo32
(
obj
,
0x08
,
0x00000000
);
nvkm_wo32
(
obj
,
0x0c
,
0x00000000
);
nvkm_done
(
obj
);
return
0
;
}
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv20.c
浏览文件 @
142ea05f
...
...
@@ -41,6 +41,7 @@ nv20_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
struct
nvkm_object
**
pobject
)
{
struct
nv20_gr_chan
*
chan
;
struct
nvkm_gpuobj
*
image
;
int
ret
,
i
;
ret
=
nvkm_gr_context_create
(
parent
,
engine
,
oclass
,
NULL
,
0x37f0
,
...
...
@@ -50,51 +51,54 @@ nv20_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
return
ret
;
chan
->
chid
=
nvkm_fifo_chan
(
parent
)
->
chid
;
nv_wo32
(
chan
,
0x0000
,
0x00000001
|
(
chan
->
chid
<<
24
));
nv_wo32
(
chan
,
0x033c
,
0xffff0000
);
nv_wo32
(
chan
,
0x03a0
,
0x0fff0000
);
nv_wo32
(
chan
,
0x03a4
,
0x0fff0000
);
nv_wo32
(
chan
,
0x047c
,
0x00000101
);
nv_wo32
(
chan
,
0x0490
,
0x00000111
);
nv_wo32
(
chan
,
0x04a8
,
0x44400000
);
image
=
&
chan
->
base
.
base
.
gpuobj
;
nvkm_kmap
(
image
);
nvkm_wo32
(
image
,
0x0000
,
0x00000001
|
(
chan
->
chid
<<
24
));
nvkm_wo32
(
image
,
0x033c
,
0xffff0000
);
nvkm_wo32
(
image
,
0x03a0
,
0x0fff0000
);
nvkm_wo32
(
image
,
0x03a4
,
0x0fff0000
);
nvkm_wo32
(
image
,
0x047c
,
0x00000101
);
nvkm_wo32
(
image
,
0x0490
,
0x00000111
);
nvkm_wo32
(
image
,
0x04a8
,
0x44400000
);
for
(
i
=
0x04d4
;
i
<=
0x04e0
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00030303
);
nv
km_wo32
(
image
,
i
,
0x00030303
);
for
(
i
=
0x04f4
;
i
<=
0x0500
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00080000
);
nv
km_wo32
(
image
,
i
,
0x00080000
);
for
(
i
=
0x050c
;
i
<=
0x0518
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x01012000
);
nv
km_wo32
(
image
,
i
,
0x01012000
);
for
(
i
=
0x051c
;
i
<=
0x0528
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x000105b8
);
nv
km_wo32
(
image
,
i
,
0x000105b8
);
for
(
i
=
0x052c
;
i
<=
0x0538
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00080008
);
nv
km_wo32
(
image
,
i
,
0x00080008
);
for
(
i
=
0x055c
;
i
<=
0x0598
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x07ff0000
);
nv
_wo32
(
chan
,
0x05a4
,
0x4b7fffff
);
nv
_wo32
(
chan
,
0x05fc
,
0x00000001
);
nv
_wo32
(
chan
,
0x0604
,
0x00004000
);
nv
_wo32
(
chan
,
0x0610
,
0x00000001
);
nv
_wo32
(
chan
,
0x0618
,
0x00040000
);
nv
_wo32
(
chan
,
0x061c
,
0x00010000
);
nv
km_wo32
(
image
,
i
,
0x07ff0000
);
nv
km_wo32
(
image
,
0x05a4
,
0x4b7fffff
);
nv
km_wo32
(
image
,
0x05fc
,
0x00000001
);
nv
km_wo32
(
image
,
0x0604
,
0x00004000
);
nv
km_wo32
(
image
,
0x0610
,
0x00000001
);
nv
km_wo32
(
image
,
0x0618
,
0x00040000
);
nv
km_wo32
(
image
,
0x061c
,
0x00010000
);
for
(
i
=
0x1c1c
;
i
<=
0x248c
;
i
+=
16
)
{
nv
_wo32
(
chan
,
(
i
+
0
),
0x10700ff9
);
nv
_wo32
(
chan
,
(
i
+
4
),
0x0436086c
);
nv
_wo32
(
chan
,
(
i
+
8
),
0x000c001b
);
nv
km_wo32
(
image
,
(
i
+
0
),
0x10700ff9
);
nv
km_wo32
(
image
,
(
i
+
4
),
0x0436086c
);
nv
km_wo32
(
image
,
(
i
+
8
),
0x000c001b
);
}
nv
_wo32
(
chan
,
0x281c
,
0x3f800000
);
nv
_wo32
(
chan
,
0x2830
,
0x3f800000
);
nv
_wo32
(
chan
,
0x285c
,
0x40000000
);
nv
_wo32
(
chan
,
0x2860
,
0x3f800000
);
nv
_wo32
(
chan
,
0x2864
,
0x3f000000
);
nv
_wo32
(
chan
,
0x286c
,
0x40000000
);
nv
_wo32
(
chan
,
0x2870
,
0x3f800000
);
nv
_wo32
(
chan
,
0x2878
,
0xbf800000
);
nv
_wo32
(
chan
,
0x2880
,
0xbf800000
);
nv
_wo32
(
chan
,
0x34a4
,
0x000fe000
);
nv
_wo32
(
chan
,
0x3530
,
0x000003f8
);
nv
_wo32
(
chan
,
0x3540
,
0x002fe000
);
nv
km_wo32
(
image
,
0x281c
,
0x3f800000
);
nv
km_wo32
(
image
,
0x2830
,
0x3f800000
);
nv
km_wo32
(
image
,
0x285c
,
0x40000000
);
nv
km_wo32
(
image
,
0x2860
,
0x3f800000
);
nv
km_wo32
(
image
,
0x2864
,
0x3f000000
);
nv
km_wo32
(
image
,
0x286c
,
0x40000000
);
nv
km_wo32
(
image
,
0x2870
,
0x3f800000
);
nv
km_wo32
(
image
,
0x2878
,
0xbf800000
);
nv
km_wo32
(
image
,
0x2880
,
0xbf800000
);
nv
km_wo32
(
image
,
0x34a4
,
0x000fe000
);
nv
km_wo32
(
image
,
0x3530
,
0x000003f8
);
nv
km_wo32
(
image
,
0x3540
,
0x002fe000
);
for
(
i
=
0x355c
;
i
<=
0x3578
;
i
+=
4
)
nv_wo32
(
chan
,
i
,
0x001c527c
);
nvkm_wo32
(
image
,
i
,
0x001c527c
);
nvkm_done
(
image
);
return
0
;
}
...
...
@@ -109,7 +113,9 @@ nv20_gr_context_init(struct nvkm_object *object)
if
(
ret
)
return
ret
;
nv_wo32
(
gr
->
ctxtab
,
chan
->
chid
*
4
,
nv_gpuobj
(
chan
)
->
addr
>>
4
);
nvkm_kmap
(
gr
->
ctxtab
);
nvkm_wo32
(
gr
->
ctxtab
,
chan
->
chid
*
4
,
nv_gpuobj
(
chan
)
->
addr
>>
4
);
nvkm_done
(
gr
->
ctxtab
);
return
0
;
}
...
...
@@ -136,7 +142,9 @@ nv20_gr_context_fini(struct nvkm_object *object, bool suspend)
}
nvkm_mask
(
device
,
0x400720
,
0x00000001
,
0x00000001
);
nv_wo32
(
gr
->
ctxtab
,
chan
->
chid
*
4
,
0x00000000
);
nvkm_kmap
(
gr
->
ctxtab
);
nvkm_wo32
(
gr
->
ctxtab
,
chan
->
chid
*
4
,
0x00000000
);
nvkm_done
(
gr
->
ctxtab
);
return
nvkm_gr_context_fini
(
&
chan
->
base
,
suspend
);
}
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv25.c
浏览文件 @
142ea05f
...
...
@@ -37,6 +37,7 @@ nv25_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
struct
nvkm_object
**
pobject
)
{
struct
nv20_gr_chan
*
chan
;
struct
nvkm_gpuobj
*
image
;
int
ret
,
i
;
ret
=
nvkm_gr_context_create
(
parent
,
engine
,
oclass
,
NULL
,
0x3724
,
...
...
@@ -46,60 +47,63 @@ nv25_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
return
ret
;
chan
->
chid
=
nvkm_fifo_chan
(
parent
)
->
chid
;
image
=
&
chan
->
base
.
base
.
gpuobj
;
nv_wo32
(
chan
,
0x0028
,
0x00000001
|
(
chan
->
chid
<<
24
));
nv_wo32
(
chan
,
0x035c
,
0xffff0000
);
nv_wo32
(
chan
,
0x03c0
,
0x0fff0000
);
nv_wo32
(
chan
,
0x03c4
,
0x0fff0000
);
nv_wo32
(
chan
,
0x049c
,
0x00000101
);
nv_wo32
(
chan
,
0x04b0
,
0x00000111
);
nv_wo32
(
chan
,
0x04c8
,
0x00000080
);
nv_wo32
(
chan
,
0x04cc
,
0xffff0000
);
nv_wo32
(
chan
,
0x04d0
,
0x00000001
);
nv_wo32
(
chan
,
0x04e4
,
0x44400000
);
nv_wo32
(
chan
,
0x04fc
,
0x4b800000
);
nvkm_kmap
(
image
);
nvkm_wo32
(
image
,
0x0028
,
0x00000001
|
(
chan
->
chid
<<
24
));
nvkm_wo32
(
image
,
0x035c
,
0xffff0000
);
nvkm_wo32
(
image
,
0x03c0
,
0x0fff0000
);
nvkm_wo32
(
image
,
0x03c4
,
0x0fff0000
);
nvkm_wo32
(
image
,
0x049c
,
0x00000101
);
nvkm_wo32
(
image
,
0x04b0
,
0x00000111
);
nvkm_wo32
(
image
,
0x04c8
,
0x00000080
);
nvkm_wo32
(
image
,
0x04cc
,
0xffff0000
);
nvkm_wo32
(
image
,
0x04d0
,
0x00000001
);
nvkm_wo32
(
image
,
0x04e4
,
0x44400000
);
nvkm_wo32
(
image
,
0x04fc
,
0x4b800000
);
for
(
i
=
0x0510
;
i
<=
0x051c
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00030303
);
nv
km_wo32
(
image
,
i
,
0x00030303
);
for
(
i
=
0x0530
;
i
<=
0x053c
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00080000
);
nv
km_wo32
(
image
,
i
,
0x00080000
);
for
(
i
=
0x0548
;
i
<=
0x0554
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x01012000
);
nv
km_wo32
(
image
,
i
,
0x01012000
);
for
(
i
=
0x0558
;
i
<=
0x0564
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x000105b8
);
nv
km_wo32
(
image
,
i
,
0x000105b8
);
for
(
i
=
0x0568
;
i
<=
0x0574
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00080008
);
nv
km_wo32
(
image
,
i
,
0x00080008
);
for
(
i
=
0x0598
;
i
<=
0x05d4
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x07ff0000
);
nv
_wo32
(
chan
,
0x05e0
,
0x4b7fffff
);
nv
_wo32
(
chan
,
0x0620
,
0x00000080
);
nv
_wo32
(
chan
,
0x0624
,
0x30201000
);
nv
_wo32
(
chan
,
0x0628
,
0x70605040
);
nv
_wo32
(
chan
,
0x062c
,
0xb0a09080
);
nv
_wo32
(
chan
,
0x0630
,
0xf0e0d0c0
);
nv
_wo32
(
chan
,
0x0664
,
0x00000001
);
nv
_wo32
(
chan
,
0x066c
,
0x00004000
);
nv
_wo32
(
chan
,
0x0678
,
0x00000001
);
nv
_wo32
(
chan
,
0x0680
,
0x00040000
);
nv
_wo32
(
chan
,
0x0684
,
0x00010000
);
nv
km_wo32
(
image
,
i
,
0x07ff0000
);
nv
km_wo32
(
image
,
0x05e0
,
0x4b7fffff
);
nv
km_wo32
(
image
,
0x0620
,
0x00000080
);
nv
km_wo32
(
image
,
0x0624
,
0x30201000
);
nv
km_wo32
(
image
,
0x0628
,
0x70605040
);
nv
km_wo32
(
image
,
0x062c
,
0xb0a09080
);
nv
km_wo32
(
image
,
0x0630
,
0xf0e0d0c0
);
nv
km_wo32
(
image
,
0x0664
,
0x00000001
);
nv
km_wo32
(
image
,
0x066c
,
0x00004000
);
nv
km_wo32
(
image
,
0x0678
,
0x00000001
);
nv
km_wo32
(
image
,
0x0680
,
0x00040000
);
nv
km_wo32
(
image
,
0x0684
,
0x00010000
);
for
(
i
=
0x1b04
;
i
<=
0x2374
;
i
+=
16
)
{
nv
_wo32
(
chan
,
(
i
+
0
),
0x10700ff9
);
nv
_wo32
(
chan
,
(
i
+
4
),
0x0436086c
);
nv
_wo32
(
chan
,
(
i
+
8
),
0x000c001b
);
nv
km_wo32
(
image
,
(
i
+
0
),
0x10700ff9
);
nv
km_wo32
(
image
,
(
i
+
4
),
0x0436086c
);
nv
km_wo32
(
image
,
(
i
+
8
),
0x000c001b
);
}
nv
_wo32
(
chan
,
0x2704
,
0x3f800000
);
nv
_wo32
(
chan
,
0x2718
,
0x3f800000
);
nv
_wo32
(
chan
,
0x2744
,
0x40000000
);
nv
_wo32
(
chan
,
0x2748
,
0x3f800000
);
nv
_wo32
(
chan
,
0x274c
,
0x3f000000
);
nv
_wo32
(
chan
,
0x2754
,
0x40000000
);
nv
_wo32
(
chan
,
0x2758
,
0x3f800000
);
nv
_wo32
(
chan
,
0x2760
,
0xbf800000
);
nv
_wo32
(
chan
,
0x2768
,
0xbf800000
);
nv
_wo32
(
chan
,
0x308c
,
0x000fe000
);
nv
_wo32
(
chan
,
0x3108
,
0x000003f8
);
nv
_wo32
(
chan
,
0x3468
,
0x002fe000
);
nv
km_wo32
(
image
,
0x2704
,
0x3f800000
);
nv
km_wo32
(
image
,
0x2718
,
0x3f800000
);
nv
km_wo32
(
image
,
0x2744
,
0x40000000
);
nv
km_wo32
(
image
,
0x2748
,
0x3f800000
);
nv
km_wo32
(
image
,
0x274c
,
0x3f000000
);
nv
km_wo32
(
image
,
0x2754
,
0x40000000
);
nv
km_wo32
(
image
,
0x2758
,
0x3f800000
);
nv
km_wo32
(
image
,
0x2760
,
0xbf800000
);
nv
km_wo32
(
image
,
0x2768
,
0xbf800000
);
nv
km_wo32
(
image
,
0x308c
,
0x000fe000
);
nv
km_wo32
(
image
,
0x3108
,
0x000003f8
);
nv
km_wo32
(
image
,
0x3468
,
0x002fe000
);
for
(
i
=
0x3484
;
i
<=
0x34a0
;
i
+=
4
)
nv_wo32
(
chan
,
i
,
0x001c527c
);
nvkm_wo32
(
image
,
i
,
0x001c527c
);
nvkm_done
(
image
);
return
0
;
}
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv2a.c
浏览文件 @
142ea05f
...
...
@@ -13,6 +13,7 @@ nv2a_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
struct
nvkm_object
**
pobject
)
{
struct
nv20_gr_chan
*
chan
;
struct
nvkm_gpuobj
*
image
;
int
ret
,
i
;
ret
=
nvkm_gr_context_create
(
parent
,
engine
,
oclass
,
NULL
,
0x36b0
,
...
...
@@ -22,51 +23,54 @@ nv2a_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
return
ret
;
chan
->
chid
=
nvkm_fifo_chan
(
parent
)
->
chid
;
image
=
&
chan
->
base
.
base
.
gpuobj
;
nv_wo32
(
chan
,
0x0000
,
0x00000001
|
(
chan
->
chid
<<
24
));
nv_wo32
(
chan
,
0x033c
,
0xffff0000
);
nv_wo32
(
chan
,
0x03a0
,
0x0fff0000
);
nv_wo32
(
chan
,
0x03a4
,
0x0fff0000
);
nv_wo32
(
chan
,
0x047c
,
0x00000101
);
nv_wo32
(
chan
,
0x0490
,
0x00000111
);
nv_wo32
(
chan
,
0x04a8
,
0x44400000
);
nvkm_kmap
(
image
);
nvkm_wo32
(
image
,
0x0000
,
0x00000001
|
(
chan
->
chid
<<
24
));
nvkm_wo32
(
image
,
0x033c
,
0xffff0000
);
nvkm_wo32
(
image
,
0x03a0
,
0x0fff0000
);
nvkm_wo32
(
image
,
0x03a4
,
0x0fff0000
);
nvkm_wo32
(
image
,
0x047c
,
0x00000101
);
nvkm_wo32
(
image
,
0x0490
,
0x00000111
);
nvkm_wo32
(
image
,
0x04a8
,
0x44400000
);
for
(
i
=
0x04d4
;
i
<=
0x04e0
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00030303
);
nv
km_wo32
(
image
,
i
,
0x00030303
);
for
(
i
=
0x04f4
;
i
<=
0x0500
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00080000
);
nv
km_wo32
(
image
,
i
,
0x00080000
);
for
(
i
=
0x050c
;
i
<=
0x0518
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x01012000
);
nv
km_wo32
(
image
,
i
,
0x01012000
);
for
(
i
=
0x051c
;
i
<=
0x0528
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x000105b8
);
nv
km_wo32
(
image
,
i
,
0x000105b8
);
for
(
i
=
0x052c
;
i
<=
0x0538
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00080008
);
nv
km_wo32
(
image
,
i
,
0x00080008
);
for
(
i
=
0x055c
;
i
<=
0x0598
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x07ff0000
);
nv
_wo32
(
chan
,
0x05a4
,
0x4b7fffff
);
nv
_wo32
(
chan
,
0x05fc
,
0x00000001
);
nv
_wo32
(
chan
,
0x0604
,
0x00004000
);
nv
_wo32
(
chan
,
0x0610
,
0x00000001
);
nv
_wo32
(
chan
,
0x0618
,
0x00040000
);
nv
_wo32
(
chan
,
0x061c
,
0x00010000
);
nv
km_wo32
(
image
,
i
,
0x07ff0000
);
nv
km_wo32
(
image
,
0x05a4
,
0x4b7fffff
);
nv
km_wo32
(
image
,
0x05fc
,
0x00000001
);
nv
km_wo32
(
image
,
0x0604
,
0x00004000
);
nv
km_wo32
(
image
,
0x0610
,
0x00000001
);
nv
km_wo32
(
image
,
0x0618
,
0x00040000
);
nv
km_wo32
(
image
,
0x061c
,
0x00010000
);
for
(
i
=
0x1a9c
;
i
<=
0x22fc
;
i
+=
16
)
{
/*XXX: check!! */
nv
_wo32
(
chan
,
(
i
+
0
),
0x10700ff9
);
nv
_wo32
(
chan
,
(
i
+
4
),
0x0436086c
);
nv
_wo32
(
chan
,
(
i
+
8
),
0x000c001b
);
nv
km_wo32
(
image
,
(
i
+
0
),
0x10700ff9
);
nv
km_wo32
(
image
,
(
i
+
4
),
0x0436086c
);
nv
km_wo32
(
image
,
(
i
+
8
),
0x000c001b
);
}
nv
_wo32
(
chan
,
0x269c
,
0x3f800000
);
nv
_wo32
(
chan
,
0x26b0
,
0x3f800000
);
nv
_wo32
(
chan
,
0x26dc
,
0x40000000
);
nv
_wo32
(
chan
,
0x26e0
,
0x3f800000
);
nv
_wo32
(
chan
,
0x26e4
,
0x3f000000
);
nv
_wo32
(
chan
,
0x26ec
,
0x40000000
);
nv
_wo32
(
chan
,
0x26f0
,
0x3f800000
);
nv
_wo32
(
chan
,
0x26f8
,
0xbf800000
);
nv
_wo32
(
chan
,
0x2700
,
0xbf800000
);
nv
_wo32
(
chan
,
0x3024
,
0x000fe000
);
nv
_wo32
(
chan
,
0x30a0
,
0x000003f8
);
nv
_wo32
(
chan
,
0x33fc
,
0x002fe000
);
nv
km_wo32
(
image
,
0x269c
,
0x3f800000
);
nv
km_wo32
(
image
,
0x26b0
,
0x3f800000
);
nv
km_wo32
(
image
,
0x26dc
,
0x40000000
);
nv
km_wo32
(
image
,
0x26e0
,
0x3f800000
);
nv
km_wo32
(
image
,
0x26e4
,
0x3f000000
);
nv
km_wo32
(
image
,
0x26ec
,
0x40000000
);
nv
km_wo32
(
image
,
0x26f0
,
0x3f800000
);
nv
km_wo32
(
image
,
0x26f8
,
0xbf800000
);
nv
km_wo32
(
image
,
0x2700
,
0xbf800000
);
nv
km_wo32
(
image
,
0x3024
,
0x000fe000
);
nv
km_wo32
(
image
,
0x30a0
,
0x000003f8
);
nv
km_wo32
(
image
,
0x33fc
,
0x002fe000
);
for
(
i
=
0x341c
;
i
<=
0x3438
;
i
+=
4
)
nv_wo32
(
chan
,
i
,
0x001c527c
);
nvkm_wo32
(
image
,
i
,
0x001c527c
);
nvkm_done
(
image
);
return
0
;
}
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv30.c
浏览文件 @
142ea05f
...
...
@@ -40,6 +40,7 @@ nv30_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
struct
nvkm_object
**
pobject
)
{
struct
nv20_gr_chan
*
chan
;
struct
nvkm_gpuobj
*
image
;
int
ret
,
i
;
ret
=
nvkm_gr_context_create
(
parent
,
engine
,
oclass
,
NULL
,
0x5f48
,
...
...
@@ -49,59 +50,62 @@ nv30_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
return
ret
;
chan
->
chid
=
nvkm_fifo_chan
(
parent
)
->
chid
;
nv_wo32
(
chan
,
0x0028
,
0x00000001
|
(
chan
->
chid
<<
24
));
nv_wo32
(
chan
,
0x0410
,
0x00000101
);
nv_wo32
(
chan
,
0x0424
,
0x00000111
);
nv_wo32
(
chan
,
0x0428
,
0x00000060
);
nv_wo32
(
chan
,
0x0444
,
0x00000080
);
nv_wo32
(
chan
,
0x0448
,
0xffff0000
);
nv_wo32
(
chan
,
0x044c
,
0x00000001
);
nv_wo32
(
chan
,
0x0460
,
0x44400000
);
nv_wo32
(
chan
,
0x048c
,
0xffff0000
);
image
=
&
chan
->
base
.
base
.
gpuobj
;
nvkm_kmap
(
image
);
nvkm_wo32
(
image
,
0x0028
,
0x00000001
|
(
chan
->
chid
<<
24
));
nvkm_wo32
(
image
,
0x0410
,
0x00000101
);
nvkm_wo32
(
image
,
0x0424
,
0x00000111
);
nvkm_wo32
(
image
,
0x0428
,
0x00000060
);
nvkm_wo32
(
image
,
0x0444
,
0x00000080
);
nvkm_wo32
(
image
,
0x0448
,
0xffff0000
);
nvkm_wo32
(
image
,
0x044c
,
0x00000001
);
nvkm_wo32
(
image
,
0x0460
,
0x44400000
);
nvkm_wo32
(
image
,
0x048c
,
0xffff0000
);
for
(
i
=
0x04e0
;
i
<
0x04e8
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x0fff0000
);
nv
_wo32
(
chan
,
0x04ec
,
0x00011100
);
nv
km_wo32
(
image
,
i
,
0x0fff0000
);
nv
km_wo32
(
image
,
0x04ec
,
0x00011100
);
for
(
i
=
0x0508
;
i
<
0x0548
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x07ff0000
);
nv
_wo32
(
chan
,
0x0550
,
0x4b7fffff
);
nv
_wo32
(
chan
,
0x058c
,
0x00000080
);
nv
_wo32
(
chan
,
0x0590
,
0x30201000
);
nv
_wo32
(
chan
,
0x0594
,
0x70605040
);
nv
_wo32
(
chan
,
0x0598
,
0xb8a89888
);
nv
_wo32
(
chan
,
0x059c
,
0xf8e8d8c8
);
nv
_wo32
(
chan
,
0x05b0
,
0xb0000000
);
nv
km_wo32
(
image
,
i
,
0x07ff0000
);
nv
km_wo32
(
image
,
0x0550
,
0x4b7fffff
);
nv
km_wo32
(
image
,
0x058c
,
0x00000080
);
nv
km_wo32
(
image
,
0x0590
,
0x30201000
);
nv
km_wo32
(
image
,
0x0594
,
0x70605040
);
nv
km_wo32
(
image
,
0x0598
,
0xb8a89888
);
nv
km_wo32
(
image
,
0x059c
,
0xf8e8d8c8
);
nv
km_wo32
(
image
,
0x05b0
,
0xb0000000
);
for
(
i
=
0x0600
;
i
<
0x0640
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00010588
);
nv
km_wo32
(
image
,
i
,
0x00010588
);
for
(
i
=
0x0640
;
i
<
0x0680
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00030303
);
nv
km_wo32
(
image
,
i
,
0x00030303
);
for
(
i
=
0x06c0
;
i
<
0x0700
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x0008aae4
);
nv
km_wo32
(
image
,
i
,
0x0008aae4
);
for
(
i
=
0x0700
;
i
<
0x0740
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x01012000
);
nv
km_wo32
(
image
,
i
,
0x01012000
);
for
(
i
=
0x0740
;
i
<
0x0780
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00080008
);
nv
_wo32
(
chan
,
0x085c
,
0x00040000
);
nv
_wo32
(
chan
,
0x0860
,
0x00010000
);
nv
km_wo32
(
image
,
i
,
0x00080008
);
nv
km_wo32
(
image
,
0x085c
,
0x00040000
);
nv
km_wo32
(
image
,
0x0860
,
0x00010000
);
for
(
i
=
0x0864
;
i
<
0x0874
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00040004
);
nv
km_wo32
(
image
,
i
,
0x00040004
);
for
(
i
=
0x1f18
;
i
<=
0x3088
;
i
+=
16
)
{
nv
_wo32
(
chan
,
i
+
0
,
0x10700ff9
);
nv
_wo32
(
chan
,
i
+
1
,
0x0436086c
);
nv
_wo32
(
chan
,
i
+
2
,
0x000c001b
);
nv
km_wo32
(
image
,
i
+
0
,
0x10700ff9
);
nv
km_wo32
(
image
,
i
+
1
,
0x0436086c
);
nv
km_wo32
(
image
,
i
+
2
,
0x000c001b
);
}
for
(
i
=
0x30b8
;
i
<
0x30c8
;
i
+=
4
)
nv_wo32
(
chan
,
i
,
0x0000ffff
);
nv_wo32
(
chan
,
0x344c
,
0x3f800000
);
nv_wo32
(
chan
,
0x3808
,
0x3f800000
);
nv_wo32
(
chan
,
0x381c
,
0x3f800000
);
nv_wo32
(
chan
,
0x3848
,
0x40000000
);
nv_wo32
(
chan
,
0x384c
,
0x3f800000
);
nv_wo32
(
chan
,
0x3850
,
0x3f000000
);
nv_wo32
(
chan
,
0x3858
,
0x40000000
);
nv_wo32
(
chan
,
0x385c
,
0x3f800000
);
nv_wo32
(
chan
,
0x3864
,
0xbf800000
);
nv_wo32
(
chan
,
0x386c
,
0xbf800000
);
nvkm_wo32
(
image
,
i
,
0x0000ffff
);
nvkm_wo32
(
image
,
0x344c
,
0x3f800000
);
nvkm_wo32
(
image
,
0x3808
,
0x3f800000
);
nvkm_wo32
(
image
,
0x381c
,
0x3f800000
);
nvkm_wo32
(
image
,
0x3848
,
0x40000000
);
nvkm_wo32
(
image
,
0x384c
,
0x3f800000
);
nvkm_wo32
(
image
,
0x3850
,
0x3f000000
);
nvkm_wo32
(
image
,
0x3858
,
0x40000000
);
nvkm_wo32
(
image
,
0x385c
,
0x3f800000
);
nvkm_wo32
(
image
,
0x3864
,
0xbf800000
);
nvkm_wo32
(
image
,
0x386c
,
0xbf800000
);
nvkm_done
(
image
);
return
0
;
}
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv34.c
浏览文件 @
142ea05f
...
...
@@ -39,6 +39,7 @@ nv34_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
struct
nvkm_object
**
pobject
)
{
struct
nv20_gr_chan
*
chan
;
struct
nvkm_gpuobj
*
image
;
int
ret
,
i
;
ret
=
nvkm_gr_context_create
(
parent
,
engine
,
oclass
,
NULL
,
0x46dc
,
...
...
@@ -48,59 +49,62 @@ nv34_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
return
ret
;
chan
->
chid
=
nvkm_fifo_chan
(
parent
)
->
chid
;
image
=
&
chan
->
base
.
base
.
gpuobj
;
nv_wo32
(
chan
,
0x0028
,
0x00000001
|
(
chan
->
chid
<<
24
));
nv_wo32
(
chan
,
0x040c
,
0x01000101
);
nv_wo32
(
chan
,
0x0420
,
0x00000111
);
nv_wo32
(
chan
,
0x0424
,
0x00000060
);
nv_wo32
(
chan
,
0x0440
,
0x00000080
);
nv_wo32
(
chan
,
0x0444
,
0xffff0000
);
nv_wo32
(
chan
,
0x0448
,
0x00000001
);
nv_wo32
(
chan
,
0x045c
,
0x44400000
);
nv_wo32
(
chan
,
0x0480
,
0xffff0000
);
nvkm_kmap
(
image
);
nvkm_wo32
(
image
,
0x0028
,
0x00000001
|
(
chan
->
chid
<<
24
));
nvkm_wo32
(
image
,
0x040c
,
0x01000101
);
nvkm_wo32
(
image
,
0x0420
,
0x00000111
);
nvkm_wo32
(
image
,
0x0424
,
0x00000060
);
nvkm_wo32
(
image
,
0x0440
,
0x00000080
);
nvkm_wo32
(
image
,
0x0444
,
0xffff0000
);
nvkm_wo32
(
image
,
0x0448
,
0x00000001
);
nvkm_wo32
(
image
,
0x045c
,
0x44400000
);
nvkm_wo32
(
image
,
0x0480
,
0xffff0000
);
for
(
i
=
0x04d4
;
i
<
0x04dc
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x0fff0000
);
nv
_wo32
(
chan
,
0x04e0
,
0x00011100
);
nv
km_wo32
(
image
,
i
,
0x0fff0000
);
nv
km_wo32
(
image
,
0x04e0
,
0x00011100
);
for
(
i
=
0x04fc
;
i
<
0x053c
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x07ff0000
);
nv
_wo32
(
chan
,
0x0544
,
0x4b7fffff
);
nv
_wo32
(
chan
,
0x057c
,
0x00000080
);
nv
_wo32
(
chan
,
0x0580
,
0x30201000
);
nv
_wo32
(
chan
,
0x0584
,
0x70605040
);
nv
_wo32
(
chan
,
0x0588
,
0xb8a89888
);
nv
_wo32
(
chan
,
0x058c
,
0xf8e8d8c8
);
nv
_wo32
(
chan
,
0x05a0
,
0xb0000000
);
nv
km_wo32
(
image
,
i
,
0x07ff0000
);
nv
km_wo32
(
image
,
0x0544
,
0x4b7fffff
);
nv
km_wo32
(
image
,
0x057c
,
0x00000080
);
nv
km_wo32
(
image
,
0x0580
,
0x30201000
);
nv
km_wo32
(
image
,
0x0584
,
0x70605040
);
nv
km_wo32
(
image
,
0x0588
,
0xb8a89888
);
nv
km_wo32
(
image
,
0x058c
,
0xf8e8d8c8
);
nv
km_wo32
(
image
,
0x05a0
,
0xb0000000
);
for
(
i
=
0x05f0
;
i
<
0x0630
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00010588
);
nv
km_wo32
(
image
,
i
,
0x00010588
);
for
(
i
=
0x0630
;
i
<
0x0670
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00030303
);
nv
km_wo32
(
image
,
i
,
0x00030303
);
for
(
i
=
0x06b0
;
i
<
0x06f0
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x0008aae4
);
nv
km_wo32
(
image
,
i
,
0x0008aae4
);
for
(
i
=
0x06f0
;
i
<
0x0730
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x01012000
);
nv
km_wo32
(
image
,
i
,
0x01012000
);
for
(
i
=
0x0730
;
i
<
0x0770
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00080008
);
nv
_wo32
(
chan
,
0x0850
,
0x00040000
);
nv
_wo32
(
chan
,
0x0854
,
0x00010000
);
nv
km_wo32
(
image
,
i
,
0x00080008
);
nv
km_wo32
(
image
,
0x0850
,
0x00040000
);
nv
km_wo32
(
image
,
0x0854
,
0x00010000
);
for
(
i
=
0x0858
;
i
<
0x0868
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00040004
);
nv
km_wo32
(
image
,
i
,
0x00040004
);
for
(
i
=
0x15ac
;
i
<=
0x271c
;
i
+=
16
)
{
nv
_wo32
(
chan
,
i
+
0
,
0x10700ff9
);
nv
_wo32
(
chan
,
i
+
1
,
0x0436086c
);
nv
_wo32
(
chan
,
i
+
2
,
0x000c001b
);
nv
km_wo32
(
image
,
i
+
0
,
0x10700ff9
);
nv
km_wo32
(
image
,
i
+
1
,
0x0436086c
);
nv
km_wo32
(
image
,
i
+
2
,
0x000c001b
);
}
for
(
i
=
0x274c
;
i
<
0x275c
;
i
+=
4
)
nv_wo32
(
chan
,
i
,
0x0000ffff
);
nv_wo32
(
chan
,
0x2ae0
,
0x3f800000
);
nv_wo32
(
chan
,
0x2e9c
,
0x3f800000
);
nv_wo32
(
chan
,
0x2eb0
,
0x3f800000
);
nv_wo32
(
chan
,
0x2edc
,
0x40000000
);
nv_wo32
(
chan
,
0x2ee0
,
0x3f800000
);
nv_wo32
(
chan
,
0x2ee4
,
0x3f000000
);
nv_wo32
(
chan
,
0x2eec
,
0x40000000
);
nv_wo32
(
chan
,
0x2ef0
,
0x3f800000
);
nv_wo32
(
chan
,
0x2ef8
,
0xbf800000
);
nv_wo32
(
chan
,
0x2f00
,
0xbf800000
);
nvkm_wo32
(
image
,
i
,
0x0000ffff
);
nvkm_wo32
(
image
,
0x2ae0
,
0x3f800000
);
nvkm_wo32
(
image
,
0x2e9c
,
0x3f800000
);
nvkm_wo32
(
image
,
0x2eb0
,
0x3f800000
);
nvkm_wo32
(
image
,
0x2edc
,
0x40000000
);
nvkm_wo32
(
image
,
0x2ee0
,
0x3f800000
);
nvkm_wo32
(
image
,
0x2ee4
,
0x3f000000
);
nvkm_wo32
(
image
,
0x2eec
,
0x40000000
);
nvkm_wo32
(
image
,
0x2ef0
,
0x3f800000
);
nvkm_wo32
(
image
,
0x2ef8
,
0xbf800000
);
nvkm_wo32
(
image
,
0x2f00
,
0xbf800000
);
nvkm_done
(
image
);
return
0
;
}
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv35.c
浏览文件 @
142ea05f
...
...
@@ -39,6 +39,7 @@ nv35_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
struct
nvkm_object
**
pobject
)
{
struct
nv20_gr_chan
*
chan
;
struct
nvkm_gpuobj
*
image
;
int
ret
,
i
;
ret
=
nvkm_gr_context_create
(
parent
,
engine
,
oclass
,
NULL
,
0x577c
,
...
...
@@ -48,59 +49,62 @@ nv35_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
return
ret
;
chan
->
chid
=
nvkm_fifo_chan
(
parent
)
->
chid
;
image
=
&
chan
->
base
.
base
.
gpuobj
;
nv_wo32
(
chan
,
0x0028
,
0x00000001
|
(
chan
->
chid
<<
24
));
nv_wo32
(
chan
,
0x040c
,
0x00000101
);
nv_wo32
(
chan
,
0x0420
,
0x00000111
);
nv_wo32
(
chan
,
0x0424
,
0x00000060
);
nv_wo32
(
chan
,
0x0440
,
0x00000080
);
nv_wo32
(
chan
,
0x0444
,
0xffff0000
);
nv_wo32
(
chan
,
0x0448
,
0x00000001
);
nv_wo32
(
chan
,
0x045c
,
0x44400000
);
nv_wo32
(
chan
,
0x0488
,
0xffff0000
);
nvkm_kmap
(
image
);
nvkm_wo32
(
image
,
0x0028
,
0x00000001
|
(
chan
->
chid
<<
24
));
nvkm_wo32
(
image
,
0x040c
,
0x00000101
);
nvkm_wo32
(
image
,
0x0420
,
0x00000111
);
nvkm_wo32
(
image
,
0x0424
,
0x00000060
);
nvkm_wo32
(
image
,
0x0440
,
0x00000080
);
nvkm_wo32
(
image
,
0x0444
,
0xffff0000
);
nvkm_wo32
(
image
,
0x0448
,
0x00000001
);
nvkm_wo32
(
image
,
0x045c
,
0x44400000
);
nvkm_wo32
(
image
,
0x0488
,
0xffff0000
);
for
(
i
=
0x04dc
;
i
<
0x04e4
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x0fff0000
);
nv
_wo32
(
chan
,
0x04e8
,
0x00011100
);
nv
km_wo32
(
image
,
i
,
0x0fff0000
);
nv
km_wo32
(
image
,
0x04e8
,
0x00011100
);
for
(
i
=
0x0504
;
i
<
0x0544
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x07ff0000
);
nv
_wo32
(
chan
,
0x054c
,
0x4b7fffff
);
nv
_wo32
(
chan
,
0x0588
,
0x00000080
);
nv
_wo32
(
chan
,
0x058c
,
0x30201000
);
nv
_wo32
(
chan
,
0x0590
,
0x70605040
);
nv
_wo32
(
chan
,
0x0594
,
0xb8a89888
);
nv
_wo32
(
chan
,
0x0598
,
0xf8e8d8c8
);
nv
_wo32
(
chan
,
0x05ac
,
0xb0000000
);
nv
km_wo32
(
image
,
i
,
0x07ff0000
);
nv
km_wo32
(
image
,
0x054c
,
0x4b7fffff
);
nv
km_wo32
(
image
,
0x0588
,
0x00000080
);
nv
km_wo32
(
image
,
0x058c
,
0x30201000
);
nv
km_wo32
(
image
,
0x0590
,
0x70605040
);
nv
km_wo32
(
image
,
0x0594
,
0xb8a89888
);
nv
km_wo32
(
image
,
0x0598
,
0xf8e8d8c8
);
nv
km_wo32
(
image
,
0x05ac
,
0xb0000000
);
for
(
i
=
0x0604
;
i
<
0x0644
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00010588
);
nv
km_wo32
(
image
,
i
,
0x00010588
);
for
(
i
=
0x0644
;
i
<
0x0684
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00030303
);
nv
km_wo32
(
image
,
i
,
0x00030303
);
for
(
i
=
0x06c4
;
i
<
0x0704
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x0008aae4
);
nv
km_wo32
(
image
,
i
,
0x0008aae4
);
for
(
i
=
0x0704
;
i
<
0x0744
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x01012000
);
nv
km_wo32
(
image
,
i
,
0x01012000
);
for
(
i
=
0x0744
;
i
<
0x0784
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00080008
);
nv
_wo32
(
chan
,
0x0860
,
0x00040000
);
nv
_wo32
(
chan
,
0x0864
,
0x00010000
);
nv
km_wo32
(
image
,
i
,
0x00080008
);
nv
km_wo32
(
image
,
0x0860
,
0x00040000
);
nv
km_wo32
(
image
,
0x0864
,
0x00010000
);
for
(
i
=
0x0868
;
i
<
0x0878
;
i
+=
4
)
nv
_wo32
(
chan
,
i
,
0x00040004
);
nv
km_wo32
(
image
,
i
,
0x00040004
);
for
(
i
=
0x1f1c
;
i
<=
0x308c
;
i
+=
16
)
{
nv
_wo32
(
chan
,
i
+
0
,
0x10700ff9
);
nv
_wo32
(
chan
,
i
+
4
,
0x0436086c
);
nv
_wo32
(
chan
,
i
+
8
,
0x000c001b
);
nv
km_wo32
(
image
,
i
+
0
,
0x10700ff9
);
nv
km_wo32
(
image
,
i
+
4
,
0x0436086c
);
nv
km_wo32
(
image
,
i
+
8
,
0x000c001b
);
}
for
(
i
=
0x30bc
;
i
<
0x30cc
;
i
+=
4
)
nv_wo32
(
chan
,
i
,
0x0000ffff
);
nv_wo32
(
chan
,
0x3450
,
0x3f800000
);
nv_wo32
(
chan
,
0x380c
,
0x3f800000
);
nv_wo32
(
chan
,
0x3820
,
0x3f800000
);
nv_wo32
(
chan
,
0x384c
,
0x40000000
);
nv_wo32
(
chan
,
0x3850
,
0x3f800000
);
nv_wo32
(
chan
,
0x3854
,
0x3f000000
);
nv_wo32
(
chan
,
0x385c
,
0x40000000
);
nv_wo32
(
chan
,
0x3860
,
0x3f800000
);
nv_wo32
(
chan
,
0x3868
,
0xbf800000
);
nv_wo32
(
chan
,
0x3870
,
0xbf800000
);
nvkm_wo32
(
image
,
i
,
0x0000ffff
);
nvkm_wo32
(
image
,
0x3450
,
0x3f800000
);
nvkm_wo32
(
image
,
0x380c
,
0x3f800000
);
nvkm_wo32
(
image
,
0x3820
,
0x3f800000
);
nvkm_wo32
(
image
,
0x384c
,
0x40000000
);
nvkm_wo32
(
image
,
0x3850
,
0x3f800000
);
nvkm_wo32
(
image
,
0x3854
,
0x3f000000
);
nvkm_wo32
(
image
,
0x385c
,
0x40000000
);
nvkm_wo32
(
image
,
0x3860
,
0x3f800000
);
nvkm_wo32
(
image
,
0x3868
,
0xbf800000
);
nvkm_wo32
(
image
,
0x3870
,
0xbf800000
);
nvkm_done
(
image
);
return
0
;
}
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv40.c
浏览文件 @
142ea05f
...
...
@@ -63,14 +63,16 @@ nv40_gr_object_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
if
(
ret
)
return
ret
;
nv_wo32
(
obj
,
0x00
,
nv_mclass
(
obj
));
nv_wo32
(
obj
,
0x04
,
0x00000000
);
nv_wo32
(
obj
,
0x08
,
0x00000000
);
nvkm_kmap
(
obj
);
nvkm_wo32
(
obj
,
0x00
,
nv_mclass
(
obj
));
nvkm_wo32
(
obj
,
0x04
,
0x00000000
);
nvkm_wo32
(
obj
,
0x08
,
0x00000000
);
#ifdef __BIG_ENDIAN
nv_mo32
(
obj
,
0x08
,
0x01000000
,
0x01000000
);
nv
km
_mo32
(
obj
,
0x08
,
0x01000000
,
0x01000000
);
#endif
nv_wo32
(
obj
,
0x0c
,
0x00000000
);
nv_wo32
(
obj
,
0x10
,
0x00000000
);
nvkm_wo32
(
obj
,
0x0c
,
0x00000000
);
nvkm_wo32
(
obj
,
0x10
,
0x00000000
);
nvkm_done
(
obj
);
return
0
;
}
...
...
@@ -146,7 +148,7 @@ nv40_gr_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
return
ret
;
nv40_grctx_fill
(
nv_device
(
gr
),
nv_gpuobj
(
chan
));
nv
_wo32
(
chan
,
0x00000
,
nv_gpuobj
(
chan
)
->
addr
>>
4
);
nv
km_wo32
(
&
chan
->
base
.
base
.
gpuobj
,
0x00000
,
nv_gpuobj
(
chan
)
->
addr
>>
4
);
return
0
;
}
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/nv50.c
浏览文件 @
142ea05f
...
...
@@ -62,10 +62,12 @@ nv50_gr_object_ctor(struct nvkm_object *parent, struct nvkm_object *engine,
if
(
ret
)
return
ret
;
nv_wo32
(
obj
,
0x00
,
nv_mclass
(
obj
));
nv_wo32
(
obj
,
0x04
,
0x00000000
);
nv_wo32
(
obj
,
0x08
,
0x00000000
);
nv_wo32
(
obj
,
0x0c
,
0x00000000
);
nvkm_kmap
(
obj
);
nvkm_wo32
(
obj
,
0x00
,
nv_mclass
(
obj
));
nvkm_wo32
(
obj
,
0x04
,
0x00000000
);
nvkm_wo32
(
obj
,
0x08
,
0x00000000
);
nvkm_wo32
(
obj
,
0x0c
,
0x00000000
);
nvkm_done
(
obj
);
return
0
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录