1 /* SPDX-License-Identifier: MIT */
2 #ifndef __NVKM_SEC2_PRIV_H__
3 #define __NVKM_SEC2_PRIV_H__
4 #include <engine/sec2.h>
5 
6 struct nvkm_sec2_func {
7 	const struct nvkm_falcon_func *flcn;
8 	u8 unit_acr;
9 	void (*intr)(struct nvkm_sec2 *);
10 	int (*initmsg)(struct nvkm_sec2 *);
11 };
12 
13 void gp102_sec2_intr(struct nvkm_sec2 *);
14 int gp102_sec2_initmsg(struct nvkm_sec2 *);
15 
16 struct nvkm_sec2_fwif {
17 	int version;
18 	int (*load)(struct nvkm_sec2 *, int ver, const struct nvkm_sec2_fwif *);
19 	const struct nvkm_sec2_func *func;
20 	const struct nvkm_acr_lsf_func *acr;
21 };
22 
23 int gp102_sec2_nofw(struct nvkm_sec2 *, int, const struct nvkm_sec2_fwif *);
24 int gp102_sec2_load(struct nvkm_sec2 *, int, const struct nvkm_sec2_fwif *);
25 extern const struct nvkm_sec2_func gp102_sec2;
26 extern const struct nvkm_acr_lsf_func gp102_sec2_acr_1;
27 
28 int nvkm_sec2_new_(const struct nvkm_sec2_fwif *, struct nvkm_device *, enum nvkm_subdev_type,
29 		   int, u32 addr, struct nvkm_sec2 **);
30 #endif
31