linux/drivers/gpu/drm/nouveau/nvkm/subdev/secboot/hs_ucode.h
<<
>>
Prefs
   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
  29struct 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 */
  45struct 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 */
  59struct 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
  78void *hs_ucode_load_blob(struct nvkm_subdev *, const struct nvkm_falcon *,
  79                         const char *);
  80
  81#endif
  82