driver.h revision 1.6 1 /* $NetBSD: driver.h,v 1.6 2021/12/18 23:45:33 riastradh Exp $ */
2
3 /* SPDX-License-Identifier: MIT */
4 #ifndef __NVIF_DRIVER_H__
5 #define __NVIF_DRIVER_H__
6 #include <nvif/os.h>
7 struct nvif_client;
8
9 #ifdef __NetBSD__
10 # define __nvif_iomem volatile
11 # define __iomem __nvif_iomem
12 #endif
13
14 struct nvif_driver {
15 const char *name;
16 int (*init)(const char *name, u64 device, const char *cfg,
17 const char *dbg, void **priv);
18 void (*fini)(void *priv);
19 int (*suspend)(void *priv);
20 int (*resume)(void *priv);
21 int (*ioctl)(void *priv, bool super, void *data, u32 size, void **hack);
22 #ifdef __NetBSD__
23 int (*map)(void *priv, bus_space_tag_t tag, u64 handle, u32 size,
24 bus_space_handle_t *handlep, void __iomem **ptrp);
25 void (*unmap)(void *priv, bus_space_tag_t tag,
26 bus_space_handle_t handle, bus_addr_t addr, void __iomem *ptr,
27 u32 size);
28 #else
29 void __iomem *(*map)(void *priv, u64 handle, u32 size);
30 void (*unmap)(void *priv, void __iomem *ptr, u32 size);
31 #endif
32 bool keep;
33 };
34
35 #ifdef __NetBSD__
36 # undef __iomem
37 #endif
38 int nvif_driver_init(const char *drv, const char *cfg, const char *dbg,
39 const char *name, u64 device, struct nvif_client *);
40
41 extern const struct nvif_driver nvif_driver_nvkm;
42 extern const struct nvif_driver nvif_driver_drm;
43 extern const struct nvif_driver nvif_driver_lib;
44 extern const struct nvif_driver nvif_driver_null;
45 #endif
46