1b7019ac5SIlia Mirkin /* SPDX-License-Identifier: MIT */ 2b62880f7SAlexandre Courbot #ifndef __NVKM_SEC2_PRIV_H__ 3b62880f7SAlexandre Courbot #define __NVKM_SEC2_PRIV_H__ 4b62880f7SAlexandre Courbot #include <engine/sec2.h> 5*4b569dedSBen Skeggs struct nvkm_acr_lsfw; 6b62880f7SAlexandre Courbot 77adc40c5SBen Skeggs struct nvkm_sec2_func { 8edd757d1SBen Skeggs const struct nvkm_falcon_func *flcn; 93b330f08SBen Skeggs u8 unit_unload; 1086ce2a71SBen Skeggs u8 unit_acr; 11*4b569dedSBen Skeggs struct nvkm_intr *(*intr_vector)(struct nvkm_sec2 *, enum nvkm_intr_type *); 12c7c0aac7SBen Skeggs irqreturn_t (*intr)(struct nvkm_inth *); 13d114a139SBen Skeggs int (*initmsg)(struct nvkm_sec2 *); 147adc40c5SBen Skeggs }; 15b62880f7SAlexandre Courbot 16c7c0aac7SBen Skeggs irqreturn_t gp102_sec2_intr(struct nvkm_inth *); 1722dcda45SBen Skeggs int gp102_sec2_initmsg(struct nvkm_sec2 *); 18c9af47bcSBen Skeggs 197adc40c5SBen Skeggs struct nvkm_sec2_fwif { 207adc40c5SBen Skeggs int version; 217adc40c5SBen Skeggs int (*load)(struct nvkm_sec2 *, int ver, const struct nvkm_sec2_fwif *); 227adc40c5SBen Skeggs const struct nvkm_sec2_func *func; 237adc40c5SBen Skeggs const struct nvkm_acr_lsf_func *acr; 247adc40c5SBen Skeggs }; 257adc40c5SBen Skeggs 26eddb0473SBen Skeggs int gp102_sec2_nofw(struct nvkm_sec2 *, int, const struct nvkm_sec2_fwif *); 277adc40c5SBen Skeggs int gp102_sec2_load(struct nvkm_sec2 *, int, const struct nvkm_sec2_fwif *); 287adc40c5SBen Skeggs extern const struct nvkm_sec2_func gp102_sec2; 297adc40c5SBen Skeggs extern const struct nvkm_acr_lsf_func gp102_sec2_acr_1; 30*4b569dedSBen Skeggs void gp102_sec2_acr_bld_write_1(struct nvkm_acr *, u32, struct nvkm_acr_lsfw *); 31*4b569dedSBen Skeggs void gp102_sec2_acr_bld_patch_1(struct nvkm_acr *, u32, s64); 327adc40c5SBen Skeggs 33d1866250SBen Skeggs int nvkm_sec2_new_(const struct nvkm_sec2_fwif *, struct nvkm_device *, enum nvkm_subdev_type, 347adc40c5SBen Skeggs int, u32 addr, struct nvkm_sec2 **); 35b62880f7SAlexandre Courbot #endif 36