13ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres#ifndef __NOUVEAU_FUSE_H__
23ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres#define __NOUVEAU_FUSE_H__
33ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres
43ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres#include <core/subdev.h>
53ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres#include <core/device.h>
63ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres
73ca6cd435effd1d762217529baaab010f34f8cc8Martin Peresstruct nouveau_fuse {
83ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres	struct nouveau_subdev base;
93ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres};
103ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres
113ca6cd435effd1d762217529baaab010f34f8cc8Martin Peresstatic inline struct nouveau_fuse *
123ca6cd435effd1d762217529baaab010f34f8cc8Martin Peresnouveau_fuse(void *obj)
133ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres{
143ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres	return (void *)nv_device(obj)->subdev[NVDEV_SUBDEV_FUSE];
153ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres}
163ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres
173ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres#define nouveau_fuse_create(p, e, o, d)                                        \
183ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres	nouveau_fuse_create_((p), (e), (o), sizeof(**d), (void **)d)
193ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres
203ca6cd435effd1d762217529baaab010f34f8cc8Martin Peresint  nouveau_fuse_create_(struct nouveau_object *, struct nouveau_object *,
213ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres			  struct nouveau_oclass *, int, void **);
223ca6cd435effd1d762217529baaab010f34f8cc8Martin Peresvoid _nouveau_fuse_dtor(struct nouveau_object *);
233ca6cd435effd1d762217529baaab010f34f8cc8Martin Peresint  _nouveau_fuse_init(struct nouveau_object *);
243ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres#define _nouveau_fuse_fini _nouveau_subdev_fini
253ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres
263ca6cd435effd1d762217529baaab010f34f8cc8Martin Peresextern struct nouveau_oclass g80_fuse_oclass;
273ca6cd435effd1d762217529baaab010f34f8cc8Martin Peresextern struct nouveau_oclass gf100_fuse_oclass;
283ca6cd435effd1d762217529baaab010f34f8cc8Martin Peresextern struct nouveau_oclass gm107_fuse_oclass;
293ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres
303ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres#endif
31