summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.c')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.c
index 47823f5..5f25402 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/base.c
@@ -50,11 +50,21 @@ nvkm_devinit_meminit(struct nvkm_devinit *init)
u64
nvkm_devinit_disable(struct nvkm_devinit *init)
{
- if (init->func->disable)
+ if (init && init->func->disable)
return init->func->disable(init);
return 0;
}
+int
+nvkm_devinit_post(struct nvkm_devinit *init, u64 *disable)
+{
+ int ret = 0;
+ if (init && init->func->post)
+ ret = init->func->post(init, init->post);
+ *disable = nvkm_devinit_disable(init);
+ return ret;
+}
+
static int
nvkm_devinit_fini(struct nvkm_subdev *subdev, bool suspend)
{
@@ -82,17 +92,8 @@ static int
nvkm_devinit_init(struct nvkm_subdev *subdev)
{
struct nvkm_devinit *init = nvkm_devinit(subdev);
- int ret;
-
- ret = init->func->post(init, init->post);
- if (ret)
- return ret;
-
if (init->func->init)
init->func->init(init);
-
- if (init->func->disable)
- subdev->device->disable_mask |= init->func->disable(init);
return 0;
}
OpenPOWER on IntegriCloud