xref: /openbmc/linux/drivers/gpu/drm/nouveau/nvkm/engine/sec2/priv.h (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
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