Commit 9bb55bb7 authored by Alexandre Courbot's avatar Alexandre Courbot Committed by Ben Skeggs

drm/nouveau/secboot: abstract fixup_hs_desc function

As different firmare versions use different HS descriptor formats, we
need to abstract this part as well.
Signed-off-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent f7152a23
...@@ -583,10 +583,11 @@ acr_r352_hsf_patch_signature(struct nvkm_secboot *sb, void *acr_image) ...@@ -583,10 +583,11 @@ acr_r352_hsf_patch_signature(struct nvkm_secboot *sb, void *acr_image)
memcpy(hs_data + fw_hdr->patch_loc, sig + fw_hdr->patch_sig, sig_size); memcpy(hs_data + fw_hdr->patch_loc, sig + fw_hdr->patch_sig, sig_size);
} }
static void void
acr_r352_fixup_hs_desc(struct acr_r352 *acr, struct nvkm_secboot *sb, acr_r352_fixup_hs_desc(struct acr_r352 *acr, struct nvkm_secboot *sb,
struct hsflcn_acr_desc *desc) void *_desc)
{ {
struct hsflcn_acr_desc *desc = _desc;
struct nvkm_gpuobj *ls_blob = acr->ls_blob; struct nvkm_gpuobj *ls_blob = acr->ls_blob;
/* WPR region information if WPR is not fixed */ /* WPR region information if WPR is not fixed */
...@@ -668,7 +669,7 @@ acr_r352_prepare_hs_blob(struct acr_r352 *acr, struct nvkm_secboot *sb, ...@@ -668,7 +669,7 @@ acr_r352_prepare_hs_blob(struct acr_r352 *acr, struct nvkm_secboot *sb,
struct hsflcn_acr_desc *desc; struct hsflcn_acr_desc *desc;
desc = acr_data + load_hdr->data_dma_base; desc = acr_data + load_hdr->data_dma_base;
acr_r352_fixup_hs_desc(acr, sb, desc); acr->func->fixup_hs_desc(acr, sb, desc);
} }
if (load_hdr->num_apps > ACR_R352_MAX_APPS) { if (load_hdr->num_apps > ACR_R352_MAX_APPS) {
...@@ -952,6 +953,7 @@ acr_r352_ls_gpccs_func = { ...@@ -952,6 +953,7 @@ acr_r352_ls_gpccs_func = {
const struct acr_r352_func const struct acr_r352_func
acr_r352_func = { acr_r352_func = {
.fixup_hs_desc = acr_r352_fixup_hs_desc,
.generate_hs_bl_desc = acr_r352_generate_hs_bl_desc, .generate_hs_bl_desc = acr_r352_generate_hs_bl_desc,
.hs_bl_desc_size = sizeof(struct acr_r352_flcn_bl_desc), .hs_bl_desc_size = sizeof(struct acr_r352_flcn_bl_desc),
.ls_ucode_img_load = acr_r352_ls_ucode_img_load, .ls_ucode_img_load = acr_r352_ls_ucode_img_load,
......
...@@ -100,6 +100,7 @@ struct acr_r352; ...@@ -100,6 +100,7 @@ struct acr_r352;
struct acr_r352_func { struct acr_r352_func {
void (*generate_hs_bl_desc)(const struct hsf_load_header *, void *, void (*generate_hs_bl_desc)(const struct hsf_load_header *, void *,
u64); u64);
void (*fixup_hs_desc)(struct acr_r352 *, struct nvkm_secboot *, void *);
u32 hs_bl_desc_size; u32 hs_bl_desc_size;
struct ls_ucode_img *(*ls_ucode_img_load)(const struct acr_r352 *, struct ls_ucode_img *(*ls_ucode_img_load)(const struct acr_r352 *,
...@@ -168,4 +169,6 @@ int acr_r352_ls_fill_headers(struct acr_r352 *, struct list_head *); ...@@ -168,4 +169,6 @@ int acr_r352_ls_fill_headers(struct acr_r352 *, struct list_head *);
int acr_r352_ls_write_wpr(struct acr_r352 *, struct list_head *, int acr_r352_ls_write_wpr(struct acr_r352 *, struct list_head *,
struct nvkm_gpuobj *, u64); struct nvkm_gpuobj *, u64);
void acr_r352_fixup_hs_desc(struct acr_r352 *, struct nvkm_secboot *, void *);
#endif #endif
...@@ -118,6 +118,7 @@ acr_r361_ls_gpccs_func = { ...@@ -118,6 +118,7 @@ acr_r361_ls_gpccs_func = {
const struct acr_r352_func const struct acr_r352_func
acr_r361_func = { acr_r361_func = {
.fixup_hs_desc = acr_r352_fixup_hs_desc,
.generate_hs_bl_desc = acr_r361_generate_hs_bl_desc, .generate_hs_bl_desc = acr_r361_generate_hs_bl_desc,
.hs_bl_desc_size = sizeof(struct acr_r361_flcn_bl_desc), .hs_bl_desc_size = sizeof(struct acr_r361_flcn_bl_desc),
.ls_ucode_img_load = acr_r352_ls_ucode_img_load, .ls_ucode_img_load = acr_r352_ls_ucode_img_load,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment