1/* SPDX-License-Identifier: MIT */
2#ifndef __NVIF_DRIVER_H__
3#define __NVIF_DRIVER_H__
4#include <nvif/os.h>
5struct nvif_client;
6
7struct 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, 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
20int nvif_driver_init(const char *drv, const char *cfg, const char *dbg,
21		     const char *name, u64 device, struct nvif_client *);
22
23extern const struct nvif_driver nvif_driver_nvkm;
24extern const struct nvif_driver nvif_driver_drm;
25extern const struct nvif_driver nvif_driver_lib;
26extern const struct nvif_driver nvif_driver_null;
27#endif
28