diff options
author | 2020-01-15 06:34:22 +1000 | |
---|---|---|
committer | 2020-01-15 10:50:28 +1000 | |
commit | c80157a25e712daf69cbba8cafa0463c0895f56c (patch) | |
tree | e3d05685016b940608cdbd5d42277a79a1ad9270 /drivers/gpu/drm/nouveau/nvkm/falcon/msgqueue_0148cdec.c | |
parent | drm/nouveau/flcn/qmgr: move sequence tracking from nvkm_msgqueue to nvkm_falcon_qmgr (diff) | |
download | linux-dev-c80157a25e712daf69cbba8cafa0463c0895f56c.tar.xz linux-dev-c80157a25e712daf69cbba8cafa0463c0895f56c.zip |
drm/nouveau/flcn/qmgr: allow arbtrary priv + return code for callbacks
Code to interface with LS firmwares is being moved to the subdevs where it
belongs, rather than living in the common falcon code.
Arbitrary private data passed to callbacks is to allow for something other
than struct nvkm_msgqueue to be passed into the callback (like the pointer
to the subdev itself, for example), and the return code will be used where
we'd like to detect failure from synchronous messages.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/falcon/msgqueue_0148cdec.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/falcon/msgqueue_0148cdec.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/falcon/msgqueue_0148cdec.c b/drivers/gpu/drm/nouveau/nvkm/falcon/msgqueue_0148cdec.c index 12d5ad6b7422..92b8351e9e35 100644 --- a/drivers/gpu/drm/nouveau/nvkm/falcon/msgqueue_0148cdec.c +++ b/drivers/gpu/drm/nouveau/nvkm/falcon/msgqueue_0148cdec.c @@ -147,13 +147,13 @@ enum { ACR_CMD_BOOTSTRAP_FALCON = 0x00, }; -static void -acr_boot_falcon_callback(struct nvkm_msgqueue *priv, - struct nvkm_msgqueue_hdr *hdr) +static int +acr_boot_falcon_callback(void *_priv, struct nv_falcon_msg *hdr) { + struct nvkm_msgqueue *priv = _priv; struct acr_bootstrap_falcon_msg { - struct nvkm_msgqueue_msg base; - + struct nv_falcon_msg base; + u8 msg_type; u32 error_code; u32 falcon_id; } *msg = (void *)hdr; @@ -164,16 +164,17 @@ acr_boot_falcon_callback(struct nvkm_msgqueue *priv, nvkm_error(subdev, "in bootstrap falcon callback:\n"); nvkm_error(subdev, "expected error code 0x%x\n", msg->error_code); - return; + return -EINVAL; } if (falcon_id >= NVKM_SECBOOT_FALCON_END) { nvkm_error(subdev, "in bootstrap falcon callback:\n"); nvkm_error(subdev, "invalid falcon ID 0x%x\n", falcon_id); - return; + return -EINVAL; } nvkm_debug(subdev, "%s booted\n", nvkm_secboot_falcon_name[falcon_id]); + return 0; } enum { |