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; 12*58c3d3c8SBen Skeggs u32 user; 13f83d1c31SBen Skeggs } addr; 14*58c3d3c8SBen Skeggs 15*58c3d3c8SBen Skeggs struct nvkm_device_oclass user; 16f83d1c31SBen Skeggs }; 17f83d1c31SBen Skeggs 18f83d1c31SBen Skeggs int gv100_vfn_new(struct nvkm_device *, enum nvkm_subdev_type, int, struct nvkm_vfn **); 19f83d1c31SBen Skeggs int tu102_vfn_new(struct nvkm_device *, enum nvkm_subdev_type, int, struct nvkm_vfn **); 20f83d1c31SBen Skeggs int ga100_vfn_new(struct nvkm_device *, enum nvkm_subdev_type, int, struct nvkm_vfn **); 21f83d1c31SBen Skeggs #endif 22