13ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres/*
23ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * Copyright 2014 Martin Peres
33ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres *
43ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * Permission is hereby granted, free of charge, to any person obtaining a
53ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * copy of this software and associated documentation files (the "Software"),
63ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * to deal in the Software without restriction, including without limitation
73ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * the rights to use, copy, modify, merge, publish, distribute, sublicense,
83ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * and/or sell copies of the Software, and to permit persons to whom the
93ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * Software is furnished to do so, subject to the following conditions:
103ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres *
113ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * The above copyright notice and this permission notice shall be included in
123ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * all copies or substantial portions of the Software.
133ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres *
143ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
153ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
163ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
173ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
183ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
193ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
203ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * OTHER DEALINGS IN THE SOFTWARE.
213ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres *
223ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres * Authors: Martin Peres
233ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres */
243ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres
253ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres#include <subdev/fuse.h>
263ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres
273ca6cd435effd1d762217529baaab010f34f8cc8Martin Peresint
283ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres_nouveau_fuse_init(struct nouveau_object *object)
293ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres{
303ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres	struct nouveau_fuse *fuse = (void *)object;
313ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres	return nouveau_subdev_init(&fuse->base);
323ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres}
333ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres
343ca6cd435effd1d762217529baaab010f34f8cc8Martin Peresvoid
353ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres_nouveau_fuse_dtor(struct nouveau_object *object)
363ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres{
373ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres	struct nouveau_fuse *fuse = (void *)object;
383ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres	nouveau_subdev_destroy(&fuse->base);
393ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres}
403ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres
413ca6cd435effd1d762217529baaab010f34f8cc8Martin Peresint
423ca6cd435effd1d762217529baaab010f34f8cc8Martin Peresnouveau_fuse_create_(struct nouveau_object *parent,
433ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres		     struct nouveau_object *engine,
443ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres		     struct nouveau_oclass *oclass, int length, void **pobject)
453ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres{
463ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres	struct nouveau_fuse *fuse;
473ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres	int ret;
483ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres
493ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres	ret = nouveau_subdev_create_(parent, engine, oclass, 0, "FUSE",
503ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres				     "fuse", length, pobject);
513ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres	fuse = *pobject;
523ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres
533ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres	return ret;
543ca6cd435effd1d762217529baaab010f34f8cc8Martin Peres}
55