]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/gpu/drm/nouveau/nvkm/subdev/secboot/acr_r352.h
drm/nouveau/secboot: split out FW version-specific LS function pointers
[linux.git] / drivers / gpu / drm / nouveau / nvkm / subdev / secboot / acr_r352.h
index f29c2268c026a83d3c19d1c18bd70707fc4ed3d1..e516cab849dd1915926d2117839d31c3ac9b7d57 100644 (file)
@@ -47,24 +47,32 @@ hsf_load_header_app_size(const struct hsf_load_header *hdr, u32 app)
 }
 
 /**
- * struct acr_r352_ls_func - manages a single LS firmware
+ * struct acr_r352_lsf_func - manages a specific LS firmware version
  *
- * @load: load the external firmware into a ls_ucode_img
  * @generate_bl_desc: function called on a block of bl_desc_size to generate the
  *                   proper bootloader descriptor for this LS firmware
  * @bl_desc_size: size of the bootloader descriptor
- * @post_run: hook called right after the ACR is executed
  * @lhdr_flags: LS flags
  */
-struct acr_r352_ls_func {
-       int (*load)(const struct nvkm_secboot *, int maxver,
-                   struct ls_ucode_img *);
+struct acr_r352_lsf_func {
        void (*generate_bl_desc)(const struct nvkm_acr *,
                                 const struct ls_ucode_img *, u64, void *);
        u32 bl_desc_size;
-       int (*post_run)(const struct nvkm_acr *, const struct nvkm_secboot *);
        u32 lhdr_flags;
+};
+
+/**
+ * struct acr_r352_ls_func - manages a single LS falcon
+ *
+ * @load: load the external firmware into a ls_ucode_img
+ * @post_run: hook called right after the ACR is executed
+ */
+struct acr_r352_ls_func {
+       int (*load)(const struct nvkm_secboot *, int maxver,
+                   struct ls_ucode_img *);
+       int (*post_run)(const struct nvkm_acr *, const struct nvkm_secboot *);
        int version_max;
+       const struct acr_r352_lsf_func *version[];
 };
 
 struct acr_r352;