diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2022-06-01 20:47:51 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2022-11-09 10:44:58 +1000 |
commit | f15cde64b66161bfa74fb58f4e5697d8265b802e (patch) | |
tree | b3173348154396dac52f23ce821489a04edaa6b9 /drivers/gpu/drm/nouveau/nvkm/falcon/base.c | |
parent | c7c0aac7421331baffdeb8f9c3e9702bdb1c0389 (diff) |
drm/nouveau/flcn: rework falcon reset
Mostly preparation to fit in Ampere changes, but should result in reset
sequences a lot closer to RM's, and perhaps help out with the issues we
sometimes see reported in this area.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/falcon/base.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/falcon/base.c | 37 |
1 files changed, 4 insertions, 33 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/falcon/base.c b/drivers/gpu/drm/nouveau/nvkm/falcon/base.c index 5a5b96dad640..ed88cfb17f12 100644 --- a/drivers/gpu/drm/nouveau/nvkm/falcon/base.c +++ b/drivers/gpu/drm/nouveau/nvkm/falcon/base.c @@ -85,44 +85,15 @@ nvkm_falcon_start(struct nvkm_falcon *falcon) } int -nvkm_falcon_enable(struct nvkm_falcon *falcon) +nvkm_falcon_reset(struct nvkm_falcon *falcon) { - struct nvkm_device *device = falcon->owner->device; int ret; - nvkm_mc_enable(device, falcon->owner->type, falcon->owner->inst); - ret = falcon->func->enable(falcon); - if (ret) { - nvkm_mc_disable(device, falcon->owner->type, falcon->owner->inst); + ret = falcon->func->disable(falcon); + if (WARN_ON(ret)) return ret; - } - - return 0; -} - -void -nvkm_falcon_disable(struct nvkm_falcon *falcon) -{ - struct nvkm_device *device = falcon->owner->device; - - /* already disabled, return or wait_idle will timeout */ - if (!nvkm_mc_enabled(device, falcon->owner->type, falcon->owner->inst)) - return; - - falcon->func->disable(falcon); - - nvkm_mc_disable(device, falcon->owner->type, falcon->owner->inst); -} - -int -nvkm_falcon_reset(struct nvkm_falcon *falcon) -{ - if (!falcon->func->reset) { - nvkm_falcon_disable(falcon); - return nvkm_falcon_enable(falcon); - } - return falcon->func->reset(falcon); + return nvkm_falcon_enable(falcon); } int |