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