1f83d1c31SBen Skeggs /* SPDX-License-Identifier: MIT */
2f83d1c31SBen Skeggs #ifndef __NVKM_VFN_H__
3f83d1c31SBen Skeggs #define __NVKM_VFN_H__
4f83d1c31SBen Skeggs #include <core/subdev.h>
5f83d1c31SBen Skeggs 
6f83d1c31SBen Skeggs struct nvkm_vfn {
7f83d1c31SBen Skeggs 	const struct nvkm_vfn_func *func;
8f83d1c31SBen Skeggs 	struct nvkm_subdev subdev;
9f83d1c31SBen Skeggs 
10f83d1c31SBen Skeggs 	struct {
11f83d1c31SBen Skeggs 		u32 priv;
1258c3d3c8SBen Skeggs 		u32 user;
13f83d1c31SBen Skeggs 	} addr;
1458c3d3c8SBen Skeggs 
15*e6507380SBen Skeggs 	struct nvkm_intr intr;
16*e6507380SBen Skeggs 
1758c3d3c8SBen Skeggs 	struct nvkm_device_oclass user;
18f83d1c31SBen Skeggs };
19f83d1c31SBen Skeggs 
20f83d1c31SBen Skeggs int gv100_vfn_new(struct nvkm_device *, enum nvkm_subdev_type, int, struct nvkm_vfn **);
21f83d1c31SBen Skeggs int tu102_vfn_new(struct nvkm_device *, enum nvkm_subdev_type, int, struct nvkm_vfn **);
22f83d1c31SBen Skeggs int ga100_vfn_new(struct nvkm_device *, enum nvkm_subdev_type, int, struct nvkm_vfn **);
23f83d1c31SBen Skeggs #endif
24