FILE
priv.h
File preview with syntax highlighting.
linux-6.19.14/drivers/gpu/drm/nouveau/nvkm/subdev/acr/priv.h
1#ifndef __NVKM_ACR_PRIV_H__ 2#define __NVKM_ACR_PRIV_H__ 3#include <subdev/acr.h> 4struct lsb_header_tail; 5 6struct nvkm_acr_fwif { 7 int version; 8 int (*load)(struct nvkm_acr *, int version, 9 const struct nvkm_acr_fwif *); 10 const struct nvkm_acr_func *func; 11}; 12 13int gm200_acr_nofw(struct nvkm_acr *, int, const struct nvkm_acr_fwif *); 14int gm20b_acr_load(struct nvkm_acr *, int, const struct nvkm_acr_fwif *); 15int gp102_acr_load(struct nvkm_acr *, int, const struct nvkm_acr_fwif *); 16 17struct nvkm_acr_lsf; 18struct nvkm_acr_func { 19 const struct nvkm_acr_hsf_fwif *load; 20 const struct nvkm_acr_hsf_fwif *ahesasc; 21 const struct nvkm_acr_hsf_fwif *asb; 22 const struct nvkm_acr_hsf_fwif *unload; 23 int (*wpr_parse)(struct nvkm_acr *); 24 u32 (*wpr_layout)(struct nvkm_acr *); 25 int (*wpr_alloc)(struct nvkm_acr *, u32 wpr_size); 26 int (*wpr_build)(struct nvkm_acr *, struct nvkm_acr_lsf *rtos); 27 int (*wpr_patch)(struct nvkm_acr *, s64 adjust); 28 void (*wpr_check)(struct nvkm_acr *, u64 *start, u64 *limit); 29 int (*init)(struct nvkm_acr *); 30 void (*fini)(struct nvkm_acr *); 31 u64 bootstrap_falcons; 32}; 33 34extern const struct nvkm_acr_func gm200_acr; 35int gm200_acr_wpr_parse(struct nvkm_acr *); 36u32 gm200_acr_wpr_layout(struct nvkm_acr *); 37int gm200_acr_wpr_build(struct nvkm_acr *, struct nvkm_acr_lsf *); 38int gm200_acr_wpr_patch(struct nvkm_acr *, s64); 39void gm200_acr_wpr_check(struct nvkm_acr *, u64 *, u64 *); 40void gm200_acr_wpr_build_lsb_tail(struct nvkm_acr_lsfw *, 41 struct lsb_header_tail *); 42int gm200_acr_init(struct nvkm_acr *); 43 44int gm20b_acr_wpr_alloc(struct nvkm_acr *, u32 wpr_size); 45 46int gp102_acr_wpr_parse(struct nvkm_acr *); 47u32 gp102_acr_wpr_layout(struct nvkm_acr *); 48int gp102_acr_wpr_alloc(struct nvkm_acr *, u32 wpr_size); 49int gp102_acr_wpr_build(struct nvkm_acr *, struct nvkm_acr_lsf *); 50int gp102_acr_wpr_build_lsb(struct nvkm_acr *, struct nvkm_acr_lsfw *); 51int gp102_acr_wpr_patch(struct nvkm_acr *, s64); 52 53int tu102_acr_init(struct nvkm_acr *); 54 55void ga100_acr_wpr_check(struct nvkm_acr *, u64 *, u64 *); 56 57struct nvkm_acr_hsfw { 58 struct nvkm_falcon_fw fw; 59 60 enum nvkm_acr_hsf_id { 61 NVKM_ACR_HSF_PMU, 62 NVKM_ACR_HSF_SEC2, 63 NVKM_ACR_HSF_GSP, 64 } falcon_id; 65 u32 boot_mbox0; 66 u32 intr_clear; 67 68 struct list_head head; 69}; 70 71int nvkm_acr_hsfw_boot(struct nvkm_acr *, const char *name); 72 73struct nvkm_acr_hsf_fwif { 74 int version; 75 int (*load)(struct nvkm_acr *, const char *bl, const char *fw, 76 const char *name, int version, 77 const struct nvkm_acr_hsf_fwif *); 78 const struct nvkm_falcon_fw_func *func; 79 80 enum nvkm_acr_hsf_id falcon_id; 81 u32 boot_mbox0; 82 u32 intr_clear; 83}; 84 85 86int gm200_acr_hsfw_ctor(struct nvkm_acr *, const char *, const char *, const char *, int, 87 const struct nvkm_acr_hsf_fwif *); 88int gm200_acr_hsfw_load_bld(struct nvkm_falcon_fw *); 89extern const struct nvkm_falcon_fw_func gm200_acr_unload_0; 90 91extern const struct nvkm_falcon_fw_func gm20b_acr_load_0; 92 93int gp102_acr_load_setup(struct nvkm_falcon_fw *); 94 95extern const struct nvkm_falcon_fw_func gp108_acr_load_0; 96 97extern const struct nvkm_falcon_fw_func gp108_acr_hsfw_0; 98int gp108_acr_hsfw_load_bld(struct nvkm_falcon_fw *); 99 100int ga100_acr_hsfw_ctor(struct nvkm_acr *, const char *, const char *, const char *, int, 101 const struct nvkm_acr_hsf_fwif *); 102 103int nvkm_acr_new_(const struct nvkm_acr_fwif *, struct nvkm_device *, enum nvkm_subdev_type, 104 int inst, struct nvkm_acr **); 105 106struct nvkm_acr_lsf { 107 const struct nvkm_acr_lsf_func *func; 108 struct nvkm_falcon *falcon; 109 enum nvkm_acr_lsf_id id; 110 struct list_head head; 111}; 112 113struct nvkm_acr_lsfw *nvkm_acr_lsfw_add(const struct nvkm_acr_lsf_func *, 114 struct nvkm_acr *, struct nvkm_falcon *, 115 enum nvkm_acr_lsf_id); 116void nvkm_acr_lsfw_del(struct nvkm_acr_lsfw *); 117void nvkm_acr_lsfw_del_all(struct nvkm_acr *); 118#endif
~/
Read-only file preview.