root/drivers/gpu/drm/nouveau/nvkm/subdev/secboot/hs_ucode.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved.
   3  *
   4  * Permission is hereby granted, free of charge, to any person obtaining a
   5  * copy of this software and associated documentation files (the "Software"),
   6  * to deal in the Software without restriction, including without limitation
   7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
   8  * and/or sell copies of the Software, and to permit persons to whom the
   9  * Software is furnished to do so, subject to the following conditions:
  10  *
  11  * The above copyright notice and this permission notice shall be included in
  12  * all copies or substantial portions of the Software.
  13  *
  14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  17  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  20  * DEALINGS IN THE SOFTWARE.
  21  */
  22 
  23 #ifndef __NVKM_SECBOOT_HS_UCODE_H__
  24 #define __NVKM_SECBOOT_HS_UCODE_H__
  25 
  26 #include <core/os.h>
  27 #include <core/subdev.h>
  28 
  29 struct nvkm_falcon;
  30 
  31 /**
  32  * struct hsf_fw_header - HS firmware descriptor
  33  * @sig_dbg_offset:     offset of the debug signature
  34  * @sig_dbg_size:       size of the debug signature
  35  * @sig_prod_offset:    offset of the production signature
  36  * @sig_prod_size:      size of the production signature
  37  * @patch_loc:          offset of the offset (sic) of where the signature is
  38  * @patch_sig:          offset of the offset (sic) to add to sig_*_offset
  39  * @hdr_offset:         offset of the load header (see struct hs_load_header)
  40  * @hdr_size:           size of above header
  41  *
  42  * This structure is embedded in the HS firmware image at
  43  * hs_bin_hdr.header_offset.
  44  */
  45 struct hsf_fw_header {
  46         u32 sig_dbg_offset;
  47         u32 sig_dbg_size;
  48         u32 sig_prod_offset;
  49         u32 sig_prod_size;
  50         u32 patch_loc;
  51         u32 patch_sig;
  52         u32 hdr_offset;
  53         u32 hdr_size;
  54 };
  55 
  56 /**
  57  * struct hsf_load_header - HS firmware load header
  58  */
  59 struct hsf_load_header {
  60         u32 non_sec_code_off;
  61         u32 non_sec_code_size;
  62         u32 data_dma_base;
  63         u32 data_size;
  64         u32 num_apps;
  65         /*
  66          * Organized as follows:
  67          * - app0_code_off
  68          * - app1_code_off
  69          * - ...
  70          * - appn_code_off
  71          * - app0_code_size
  72          * - app1_code_size
  73          * - ...
  74          */
  75         u32 apps[0];
  76 };
  77 
  78 void *hs_ucode_load_blob(struct nvkm_subdev *, const struct nvkm_falcon *,
  79                          const char *);
  80 
  81 #endif

/* [<][>][^][v][top][bottom][index][help] */