#ifndef __NVKM_SUBDEV_H__
#define __NVKM_SUBDEV_H__
#include <core/device.h>
enum nvkm_subdev_type { … };
struct nvkm_subdev { … };
struct nvkm_subdev_func { … };
extern const char *nvkm_subdev_type[NVKM_SUBDEV_NR];
int nvkm_subdev_new_(const struct nvkm_subdev_func *, struct nvkm_device *, enum nvkm_subdev_type,
int inst, struct nvkm_subdev **);
void __nvkm_subdev_ctor(const struct nvkm_subdev_func *, struct nvkm_device *,
enum nvkm_subdev_type, int inst, struct nvkm_subdev *);
static inline void
nvkm_subdev_ctor(const struct nvkm_subdev_func *func, struct nvkm_device *device,
enum nvkm_subdev_type type, int inst, struct nvkm_subdev *subdev)
{ … }
void nvkm_subdev_disable(struct nvkm_device *, enum nvkm_subdev_type, int inst);
void nvkm_subdev_del(struct nvkm_subdev **);
int nvkm_subdev_ref(struct nvkm_subdev *);
void nvkm_subdev_unref(struct nvkm_subdev *);
int nvkm_subdev_preinit(struct nvkm_subdev *);
int nvkm_subdev_oneinit(struct nvkm_subdev *);
int nvkm_subdev_init(struct nvkm_subdev *);
int nvkm_subdev_fini(struct nvkm_subdev *, bool suspend);
int nvkm_subdev_info(struct nvkm_subdev *, u64, u64 *);
void nvkm_subdev_intr(struct nvkm_subdev *);
#define nvkm_printk_ok(s,u,l) …
#define nvkm_printk___(s,u,l,p,f,a...) …
#define nvkm_printk__(s,l,p,f,a...) …
#define nvkm_printk_(s,l,p,f,a...) …
#define nvkm_printk(s,l,p,f,a...) …
#define nvkm_fatal(s,f,a...) …
#define nvkm_error(s,f,a...) …
#define nvkm_warn(s,f,a...) …
#define nvkm_info(s,f,a...) …
#define nvkm_debug(s,f,a...) …
#define nvkm_trace(s,f,a...) …
#define nvkm_spam(s,f,a...) …
#define nvkm_error_ratelimited(s,f,a...) …
#endif