1 /* SPDX-License-Identifier: MIT */ 2 #ifndef __NVIF_DRIVER_H__ 3 #define __NVIF_DRIVER_H__ 4 #include <nvif/os.h> 5 struct nvif_client; 6 7 struct nvif_driver { 8 const char *name; 9 int (*init)(const char *name, u64 device, const char *cfg, 10 const char *dbg, void **priv); 11 void (*fini)(void *priv); 12 int (*suspend)(void *priv); 13 int (*resume)(void *priv); 14 int (*ioctl)(void *priv, bool super, void *data, u32 size, void **hack); 15 void __iomem *(*map)(void *priv, u64 handle, u32 size); 16 void (*unmap)(void *priv, void __iomem *ptr, u32 size); 17 bool keep; 18 }; 19 20 int nvif_driver_init(const char *drv, const char *cfg, const char *dbg, 21 const char *name, u64 device, struct nvif_client *); 22 23 extern const struct nvif_driver nvif_driver_nvkm; 24 extern const struct nvif_driver nvif_driver_drm; 25 extern const struct nvif_driver nvif_driver_lib; 26 extern const struct nvif_driver nvif_driver_null; 27 #endif 28