diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/core/subdev/bus/nv31.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/core/subdev/bus/nv31.c | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/drivers/gpu/drm/nouveau/core/subdev/bus/nv31.c b/drivers/gpu/drm/nouveau/core/subdev/bus/nv31.c index 94da46f..34132ae 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/bus/nv31.c +++ b/drivers/gpu/drm/nouveau/core/subdev/bus/nv31.c @@ -23,7 +23,11 @@ * Ben Skeggs */ -#include "nv04.h" +#include <subdev/bus.h> + +struct nv31_bus_priv { + struct nouveau_bus base; +}; static void nv31_bus_intr(struct nouveau_subdev *subdev) @@ -67,7 +71,7 @@ nv31_bus_intr(struct nouveau_subdev *subdev) static int nv31_bus_init(struct nouveau_object *object) { - struct nv04_bus_priv *priv = (void *)object; + struct nv31_bus_priv *priv = (void *)object; int ret; ret = nouveau_bus_init(&priv->base); @@ -79,14 +83,30 @@ nv31_bus_init(struct nouveau_object *object) return 0; } -struct nouveau_oclass * -nv31_bus_oclass = &(struct nv04_bus_impl) { - .base.handle = NV_SUBDEV(BUS, 0x31), - .base.ofuncs = &(struct nouveau_ofuncs) { - .ctor = nv04_bus_ctor, +static int +nv31_bus_ctor(struct nouveau_object *parent, struct nouveau_object *engine, + struct nouveau_oclass *oclass, void *data, u32 size, + struct nouveau_object **pobject) +{ + struct nv31_bus_priv *priv; + int ret; + + ret = nouveau_bus_create(parent, engine, oclass, &priv); + *pobject = nv_object(priv); + if (ret) + return ret; + + nv_subdev(priv)->intr = nv31_bus_intr; + return 0; +} + +struct nouveau_oclass +nv31_bus_oclass = { + .handle = NV_SUBDEV(BUS, 0x31), + .ofuncs = &(struct nouveau_ofuncs) { + .ctor = nv31_bus_ctor, .dtor = _nouveau_bus_dtor, .init = nv31_bus_init, .fini = _nouveau_bus_fini, }, - .intr = nv31_bus_intr, -}.base; +}; |