diff options
| author | Ben Skeggs <[email protected]> | 2020-01-15 06:34:21 +1000 |
|---|---|---|
| committer | Ben Skeggs <[email protected]> | 2020-01-15 10:50:26 +1000 |
| commit | 334815ef310a7ad2ba34039ba1f933d5edc80b56 (patch) | |
| tree | 1cb5c75de7fb66baeedeb7350b8dd013b6f83e6b /drivers/gpu/drm/nouveau/nvkm/subdev/gsp/base.c | |
| parent | 78b10b74030025f6a216a9b10afbe35ab05d32d1 (diff) | |
drm/nouveau/gsp: initialise SW state for falcon from constructor
This will allow us to register the falcon with ACR, and further customise
its behaviour by providing the nvkm_falcon_func structure directly.
Signed-off-by: Ben Skeggs <[email protected]>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/subdev/gsp/base.c')
| -rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/subdev/gsp/base.c | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/base.c index 872280d926a9..5a32df0f9992 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/base.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/base.c @@ -25,30 +25,17 @@ #include <subdev/acr.h> #include <subdev/top.h> -static int -nvkm_gsp_oneinit(struct nvkm_subdev *subdev) -{ - struct nvkm_gsp *gsp = nvkm_gsp(subdev); - - gsp->addr = nvkm_top_addr(subdev->device, subdev->index); - if (!gsp->addr) - return -EINVAL; - - return nvkm_falcon_v1_new(subdev, "GSP", gsp->addr, &gsp->falcon); -} - static void * nvkm_gsp_dtor(struct nvkm_subdev *subdev) { struct nvkm_gsp *gsp = nvkm_gsp(subdev); - nvkm_falcon_del(&gsp->falcon); + nvkm_falcon_dtor(&gsp->falcon); return gsp; } static const struct nvkm_subdev_func nvkm_gsp = { .dtor = nvkm_gsp_dtor, - .oneinit = nvkm_gsp_oneinit, }; int @@ -66,5 +53,7 @@ nvkm_gsp_new_(const struct nvkm_gsp_fwif *fwif, struct nvkm_device *device, if (IS_ERR(fwif)) return PTR_ERR(fwif); - return 0; + return nvkm_falcon_ctor(fwif->flcn, &gsp->subdev, + nvkm_subdev_name[gsp->subdev.index], 0, + &gsp->falcon); } |