Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
d3981190
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看板
提交
d3981190
编写于
5月 30, 2016
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nouveau/mc: take nvkm_device as argument to public functions
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
d6adbe94
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
50 addition
and
46 deletion
+50
-46
drivers/gpu/drm/nouveau/include/nvkm/subdev/mc.h
drivers/gpu/drm/nouveau/include/nvkm/subdev/mc.h
+5
-5
drivers/gpu/drm/nouveau/nvkm/core/subdev.c
drivers/gpu/drm/nouveau/nvkm/core/subdev.c
+1
-1
drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
+4
-6
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c
+2
-2
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf117.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf117.c
+2
-2
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk104.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk104.c
+2
-2
drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
+4
-4
drivers/gpu/drm/nouveau/nvkm/subdev/mc/base.c
drivers/gpu/drm/nouveau/nvkm/subdev/mc/base.c
+24
-16
drivers/gpu/drm/nouveau/nvkm/subdev/pci/base.c
drivers/gpu/drm/nouveau/nvkm/subdev/pci/base.c
+6
-8
未找到文件。
drivers/gpu/drm/nouveau/include/nvkm/subdev/mc.h
浏览文件 @
d3981190
...
...
@@ -7,11 +7,11 @@ struct nvkm_mc {
struct
nvkm_subdev
subdev
;
};
void
nvkm_mc_intr
(
struct
nvkm_
mc
*
,
bool
*
handled
);
void
nvkm_mc_intr_unarm
(
struct
nvkm_
mc
*
);
void
nvkm_mc_intr_rearm
(
struct
nvkm_
mc
*
);
void
nvkm_mc_reset
(
struct
nvkm_
mc
*
,
enum
nvkm_devidx
);
void
nvkm_mc_unk260
(
struct
nvkm_
mc
*
,
u32
data
);
void
nvkm_mc_intr
(
struct
nvkm_
device
*
,
bool
*
handled
);
void
nvkm_mc_intr_unarm
(
struct
nvkm_
device
*
);
void
nvkm_mc_intr_rearm
(
struct
nvkm_
device
*
);
void
nvkm_mc_reset
(
struct
nvkm_
device
*
,
enum
nvkm_devidx
);
void
nvkm_mc_unk260
(
struct
nvkm_
device
*
,
u32
data
);
int
nv04_mc_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_mc
**
);
int
nv11_mc_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_mc
**
);
...
...
drivers/gpu/drm/nouveau/nvkm/core/subdev.c
浏览文件 @
d3981190
...
...
@@ -105,7 +105,7 @@ nvkm_subdev_fini(struct nvkm_subdev *subdev, bool suspend)
}
}
nvkm_mc_reset
(
device
->
mc
,
subdev
->
index
);
nvkm_mc_reset
(
device
,
subdev
->
index
);
time
=
ktime_to_us
(
ktime_get
())
-
time
;
nvkm_trace
(
subdev
,
"%s completed in %lldus
\n
"
,
action
,
time
);
...
...
drivers/gpu/drm/nouveau/nvkm/engine/device/tegra.c
浏览文件 @
d3981190
...
...
@@ -191,13 +191,11 @@ static irqreturn_t
nvkm_device_tegra_intr
(
int
irq
,
void
*
arg
)
{
struct
nvkm_device_tegra
*
tdev
=
arg
;
struct
nvkm_
mc
*
mc
=
tdev
->
device
.
mc
;
struct
nvkm_
device
*
device
=
&
tdev
->
device
;
bool
handled
=
false
;
if
(
likely
(
mc
))
{
nvkm_mc_intr_unarm
(
mc
);
nvkm_mc_intr
(
mc
,
&
handled
);
nvkm_mc_intr_rearm
(
mc
);
}
nvkm_mc_intr_unarm
(
device
);
nvkm_mc_intr
(
device
,
&
handled
);
nvkm_mc_intr_rearm
(
device
);
return
handled
?
IRQ_HANDLED
:
IRQ_NONE
;
}
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf100.c
浏览文件 @
d3981190
...
...
@@ -1240,7 +1240,7 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
const
struct
gf100_grctx_func
*
grctx
=
gr
->
func
->
grctx
;
u32
idle_timeout
;
nvkm_mc_unk260
(
device
->
mc
,
0
);
nvkm_mc_unk260
(
device
,
0
);
gf100_gr_mmio
(
gr
,
grctx
->
hub
);
gf100_gr_mmio
(
gr
,
grctx
->
gpc
);
...
...
@@ -1264,7 +1264,7 @@ gf100_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
gf100_gr_icmd
(
gr
,
grctx
->
icmd
);
nvkm_wr32
(
device
,
0x404154
,
idle_timeout
);
gf100_gr_mthd
(
gr
,
grctx
->
mthd
);
nvkm_mc_unk260
(
device
->
mc
,
1
);
nvkm_mc_unk260
(
device
,
1
);
}
int
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf117.c
浏览文件 @
d3981190
...
...
@@ -226,7 +226,7 @@ gf117_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
u32
idle_timeout
;
int
i
;
nvkm_mc_unk260
(
device
->
mc
,
0
);
nvkm_mc_unk260
(
device
,
0
);
gf100_gr_mmio
(
gr
,
grctx
->
hub
);
gf100_gr_mmio
(
gr
,
grctx
->
gpc
);
...
...
@@ -253,7 +253,7 @@ gf117_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
gf100_gr_icmd
(
gr
,
grctx
->
icmd
);
nvkm_wr32
(
device
,
0x404154
,
idle_timeout
);
gf100_gr_mthd
(
gr
,
grctx
->
mthd
);
nvkm_mc_unk260
(
device
->
mc
,
1
);
nvkm_mc_unk260
(
device
,
1
);
}
const
struct
gf100_grctx_func
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgk104.c
浏览文件 @
d3981190
...
...
@@ -950,7 +950,7 @@ gk104_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
u32
idle_timeout
;
int
i
;
nvkm_mc_unk260
(
device
->
mc
,
0
);
nvkm_mc_unk260
(
device
,
0
);
gf100_gr_mmio
(
gr
,
grctx
->
hub
);
gf100_gr_mmio
(
gr
,
grctx
->
gpc
);
...
...
@@ -979,7 +979,7 @@ gk104_grctx_generate_main(struct gf100_gr *gr, struct gf100_grctx *info)
gf100_gr_icmd
(
gr
,
grctx
->
icmd
);
nvkm_wr32
(
device
,
0x404154
,
idle_timeout
);
gf100_gr_mthd
(
gr
,
grctx
->
mthd
);
nvkm_mc_unk260
(
device
->
mc
,
1
);
nvkm_mc_unk260
(
device
,
1
);
nvkm_mask
(
device
,
0x418800
,
0x00200000
,
0x00200000
);
nvkm_mask
(
device
,
0x41be10
,
0x00800000
,
0x00800000
);
...
...
drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
浏览文件 @
d3981190
...
...
@@ -1460,7 +1460,7 @@ gf100_gr_init_ctxctl(struct gf100_gr *gr)
if
(
gr
->
firmware
)
{
/* load fuc microcode */
nvkm_mc_unk260
(
device
->
mc
,
0
);
nvkm_mc_unk260
(
device
,
0
);
/* securely-managed falcons must be reset using secure boot */
if
(
nvkm_secboot_is_managed
(
sb
,
NVKM_SECBOOT_FALCON_FECS
))
...
...
@@ -1474,7 +1474,7 @@ gf100_gr_init_ctxctl(struct gf100_gr *gr)
gf100_gr_init_fw
(
gr
,
0x41a000
,
&
gr
->
fuc41ac
,
&
gr
->
fuc41ad
);
nvkm_mc_unk260
(
device
->
mc
,
1
);
nvkm_mc_unk260
(
device
,
1
);
/* start both of them running */
nvkm_wr32
(
device
,
0x409840
,
0xffffffff
);
...
...
@@ -1576,7 +1576,7 @@ gf100_gr_init_ctxctl(struct gf100_gr *gr)
}
/* load HUB microcode */
nvkm_mc_unk260
(
device
->
mc
,
0
);
nvkm_mc_unk260
(
device
,
0
);
nvkm_wr32
(
device
,
0x4091c0
,
0x01000000
);
for
(
i
=
0
;
i
<
gr
->
func
->
fecs
.
ucode
->
data
.
size
/
4
;
i
++
)
nvkm_wr32
(
device
,
0x4091c4
,
gr
->
func
->
fecs
.
ucode
->
data
.
data
[
i
]);
...
...
@@ -1599,7 +1599,7 @@ gf100_gr_init_ctxctl(struct gf100_gr *gr)
nvkm_wr32
(
device
,
0x41a188
,
i
>>
6
);
nvkm_wr32
(
device
,
0x41a184
,
gr
->
func
->
gpccs
.
ucode
->
code
.
data
[
i
]);
}
nvkm_mc_unk260
(
device
->
mc
,
1
);
nvkm_mc_unk260
(
device
,
1
);
/* load register lists */
gf100_gr_init_csdata
(
gr
,
grctx
->
hub
,
0x409000
,
0x000
,
0x000000
);
...
...
drivers/gpu/drm/nouveau/nvkm/subdev/mc/base.c
浏览文件 @
d3981190
...
...
@@ -27,22 +27,27 @@
#include <subdev/top.h>
void
nvkm_mc_unk260
(
struct
nvkm_
mc
*
mc
,
u32
data
)
nvkm_mc_unk260
(
struct
nvkm_
device
*
device
,
u32
data
)
{
if
(
mc
->
func
->
unk260
)
struct
nvkm_mc
*
mc
=
device
->
mc
;
if
(
likely
(
mc
)
&&
mc
->
func
->
unk260
)
mc
->
func
->
unk260
(
mc
,
data
);
}
void
nvkm_mc_intr_unarm
(
struct
nvkm_
mc
*
mc
)
nvkm_mc_intr_unarm
(
struct
nvkm_
device
*
device
)
{
return
mc
->
func
->
intr_unarm
(
mc
);
struct
nvkm_mc
*
mc
=
device
->
mc
;
if
(
likely
(
mc
))
mc
->
func
->
intr_unarm
(
mc
);
}
void
nvkm_mc_intr_rearm
(
struct
nvkm_
mc
*
mc
)
nvkm_mc_intr_rearm
(
struct
nvkm_
device
*
device
)
{
return
mc
->
func
->
intr_rearm
(
mc
);
struct
nvkm_mc
*
mc
=
device
->
mc
;
if
(
likely
(
mc
))
mc
->
func
->
intr_rearm
(
mc
);
}
static
u32
...
...
@@ -55,14 +60,18 @@ nvkm_mc_intr_mask(struct nvkm_mc *mc)
}
void
nvkm_mc_intr
(
struct
nvkm_
mc
*
mc
,
bool
*
handled
)
nvkm_mc_intr
(
struct
nvkm_
device
*
device
,
bool
*
handled
)
{
struct
nvkm_
device
*
device
=
mc
->
subdev
.
device
;
struct
nvkm_
mc
*
mc
=
device
->
mc
;
struct
nvkm_subdev
*
subdev
;
const
struct
nvkm_mc_map
*
map
=
mc
->
func
->
intr
;
u32
stat
,
intr
=
nvkm_mc_intr_mask
(
mc
)
;
const
struct
nvkm_mc_map
*
map
;
u32
stat
,
intr
;
u64
subdevs
;
if
(
unlikely
(
!
mc
))
return
;
intr
=
nvkm_mc_intr_mask
(
mc
);
stat
=
nvkm_top_intr
(
device
,
intr
,
&
subdevs
);
while
(
subdevs
)
{
enum
nvkm_devidx
subidx
=
__ffs64
(
subdevs
);
...
...
@@ -72,14 +81,13 @@ nvkm_mc_intr(struct nvkm_mc *mc, bool *handled)
subdevs
&=
~
BIT_ULL
(
subidx
);
}
while
(
map
->
stat
)
{
for
(
map
=
mc
->
func
->
intr
;
map
->
stat
;
map
++
)
{
if
(
intr
&
map
->
stat
)
{
subdev
=
nvkm_device_subdev
(
device
,
map
->
unit
);
if
(
subdev
)
nvkm_subdev_intr
(
subdev
);
stat
&=
~
map
->
stat
;
}
map
++
;
}
if
(
stat
)
...
...
@@ -111,8 +119,9 @@ nvkm_mc_reset_(struct nvkm_mc *mc, enum nvkm_devidx devidx)
}
void
nvkm_mc_reset
(
struct
nvkm_
mc
*
mc
,
enum
nvkm_devidx
devidx
)
nvkm_mc_reset
(
struct
nvkm_
device
*
device
,
enum
nvkm_devidx
devidx
)
{
struct
nvkm_mc
*
mc
=
device
->
mc
;
if
(
likely
(
mc
))
nvkm_mc_reset_
(
mc
,
devidx
);
}
...
...
@@ -120,8 +129,7 @@ nvkm_mc_reset(struct nvkm_mc *mc, enum nvkm_devidx devidx)
static
int
nvkm_mc_fini
(
struct
nvkm_subdev
*
subdev
,
bool
suspend
)
{
struct
nvkm_mc
*
mc
=
nvkm_mc
(
subdev
);
nvkm_mc_intr_unarm
(
mc
);
nvkm_mc_intr_unarm
(
subdev
->
device
);
return
0
;
}
...
...
@@ -131,7 +139,7 @@ nvkm_mc_init(struct nvkm_subdev *subdev)
struct
nvkm_mc
*
mc
=
nvkm_mc
(
subdev
);
if
(
mc
->
func
->
init
)
mc
->
func
->
init
(
mc
);
nvkm_mc_intr_rearm
(
mc
);
nvkm_mc_intr_rearm
(
subdev
->
device
);
return
0
;
}
...
...
drivers/gpu/drm/nouveau/nvkm/subdev/pci/base.c
浏览文件 @
d3981190
...
...
@@ -69,15 +69,13 @@ static irqreturn_t
nvkm_pci_intr
(
int
irq
,
void
*
arg
)
{
struct
nvkm_pci
*
pci
=
arg
;
struct
nvkm_
mc
*
mc
=
pci
->
subdev
.
device
->
mc
;
struct
nvkm_
device
*
device
=
pci
->
subdev
.
device
;
bool
handled
=
false
;
if
(
likely
(
mc
))
{
nvkm_mc_intr_unarm
(
mc
);
if
(
pci
->
msi
)
pci
->
func
->
msi_rearm
(
pci
);
nvkm_mc_intr
(
mc
,
&
handled
);
nvkm_mc_intr_rearm
(
mc
);
}
nvkm_mc_intr_unarm
(
device
);
if
(
pci
->
msi
)
pci
->
func
->
msi_rearm
(
pci
);
nvkm_mc_intr
(
device
,
&
handled
);
nvkm_mc_intr_rearm
(
device
);
return
handled
?
IRQ_HANDLED
:
IRQ_NONE
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录