Skip to content

Commit

Permalink
drm/nouveau/secboot: enable loading of versioned LS PMU/SEC2 ACR msgq…
Browse files Browse the repository at this point in the history
…ueue FW

Some chipsets will be switching to updated SEC2 LS firmware, so we need to
plumb that through.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
  • Loading branch information
Ben Skeggs committed Jun 7, 2019
1 parent 5f0f8b5 commit 9352ce3
Showing 1 changed file with 14 additions and 14 deletions.
28 changes: 14 additions & 14 deletions drivers/gpu/drm/nouveau/nvkm/subdev/secboot/ls_ucode_msgqueue.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,36 +43,36 @@ acr_ls_ucode_load_msgqueue(const struct nvkm_subdev *subdev, const char *name,
{
const struct firmware *image, *desc, *sig;
char f[64];
int ret;
int ver, ret;

snprintf(f, sizeof(f), "%s/image", name);
ret = nvkm_firmware_get(subdev, f, &image);
if (ret)
return ret;
ver = nvkm_firmware_get_version(subdev, f, 0, maxver, &image);
if (ver < 0)
return ver;
img->ucode_data = kmemdup(image->data, image->size, GFP_KERNEL);
nvkm_firmware_put(image);
if (!img->ucode_data)
return -ENOMEM;

snprintf(f, sizeof(f), "%s/desc", name);
ret = nvkm_firmware_get(subdev, f, &desc);
if (ret)
ret = nvkm_firmware_get_version(subdev, f, ver, ver, &desc);
if (ret < 0)
return ret;
memcpy(&img->ucode_desc, desc->data, sizeof(img->ucode_desc));
img->ucode_size = ALIGN(img->ucode_desc.app_start_offset + img->ucode_desc.app_size, 256);
nvkm_firmware_put(desc);

snprintf(f, sizeof(f), "%s/sig", name);
ret = nvkm_firmware_get(subdev, f, &sig);
if (ret)
ret = nvkm_firmware_get_version(subdev, f, ver, ver, &sig);
if (ret < 0)
return ret;
img->sig_size = sig->size;
img->sig = kmemdup(sig->data, sig->size, GFP_KERNEL);
nvkm_firmware_put(sig);
if (!img->sig)
return -ENOMEM;

return 0;
return ver;
}

static int
Expand Down Expand Up @@ -141,19 +141,19 @@ acr_ls_ucode_load_sec2(const struct nvkm_secboot *sb, int maxver,
struct ls_ucode_img *img)
{
struct nvkm_sec2 *sec = sb->subdev.device->sec2;
int ret;
int ver, ret;

ret = acr_ls_ucode_load_msgqueue(&sb->subdev, "sec2", maxver, img);
if (ret)
return ret;
ver = acr_ls_ucode_load_msgqueue(&sb->subdev, "sec2", maxver, img);
if (ver < 0)
return ver;

/* Allocate the PMU queue corresponding to the FW version */
ret = nvkm_msgqueue_new(img->ucode_desc.app_version, sec->falcon,
sb, &sec->queue);
if (ret)
return ret;

return 0;
return ver;
}

int
Expand Down

0 comments on commit 9352ce3

Please sign in to comment.