Commit 8613e731 authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/fb: remove ram oclass argument from base fb constructor

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 9ca3037e
...@@ -22,9 +22,10 @@ ...@@ -22,9 +22,10 @@
* Authors: Ben Skeggs * Authors: Ben Skeggs
*/ */
#include "subdev/fb.h" #include <subdev/bios.h>
#include "subdev/bios.h" #include <subdev/bios/bit.h>
#include "subdev/bios/bit.h"
#include "priv.h"
int int
nouveau_fb_bios_memtype(struct nouveau_bios *bios) nouveau_fb_bios_memtype(struct nouveau_bios *bios)
...@@ -106,9 +107,9 @@ _nouveau_fb_dtor(struct nouveau_object *object) ...@@ -106,9 +107,9 @@ _nouveau_fb_dtor(struct nouveau_object *object)
int int
nouveau_fb_create_(struct nouveau_object *parent, struct nouveau_object *engine, nouveau_fb_create_(struct nouveau_object *parent, struct nouveau_object *engine,
struct nouveau_oclass *oclass, struct nouveau_oclass *ramcls, struct nouveau_oclass *oclass, int length, void **pobject)
int length, void **pobject)
{ {
struct nouveau_fb_impl *impl = (void *)oclass;
static const char *name[] = { static const char *name[] = {
[NV_MEM_TYPE_UNKNOWN] = "unknown", [NV_MEM_TYPE_UNKNOWN] = "unknown",
[NV_MEM_TYPE_STOLEN ] = "stolen system memory", [NV_MEM_TYPE_STOLEN ] = "stolen system memory",
...@@ -133,7 +134,7 @@ nouveau_fb_create_(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -133,7 +134,7 @@ nouveau_fb_create_(struct nouveau_object *parent, struct nouveau_object *engine,
return ret; return ret;
ret = nouveau_object_ctor(nv_object(pfb), nv_object(pfb), ret = nouveau_object_ctor(nv_object(pfb), nv_object(pfb),
ramcls, NULL, 0, &ram); impl->ram, NULL, 0, &ram);
if (ret) { if (ret) {
nv_fatal(pfb, "error detecting memory configuration!!\n"); nv_fatal(pfb, "error detecting memory configuration!!\n");
return ret; return ret;
......
...@@ -65,7 +65,7 @@ nv04_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -65,7 +65,7 @@ nv04_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv04_fb_priv *priv; struct nv04_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv04_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -75,12 +75,13 @@ nv04_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -75,12 +75,13 @@ nv04_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
} }
struct nouveau_oclass * struct nouveau_oclass *
nv04_fb_oclass = &(struct nouveau_oclass) { nv04_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x04), .base.handle = NV_SUBDEV(FB, 0x04),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv04_fb_ctor, .ctor = nv04_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = nv04_fb_init, .init = nv04_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv04_ram_oclass,
}.base;
...@@ -65,7 +65,7 @@ nv10_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -65,7 +65,7 @@ nv10_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv10_fb_priv *priv; struct nv10_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv10_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -79,12 +79,13 @@ nv10_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -79,12 +79,13 @@ nv10_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
} }
struct nouveau_oclass * struct nouveau_oclass *
nv10_fb_oclass = &(struct nouveau_oclass) { nv10_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x10), .base.handle = NV_SUBDEV(FB, 0x10),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv10_fb_ctor, .ctor = nv10_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = _nouveau_fb_init, .init = _nouveau_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv10_ram_oclass,
}.base;
...@@ -38,7 +38,7 @@ nv1a_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -38,7 +38,7 @@ nv1a_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv1a_fb_priv *priv; struct nv1a_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv1a_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -52,12 +52,13 @@ nv1a_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -52,12 +52,13 @@ nv1a_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
} }
struct nouveau_oclass * struct nouveau_oclass *
nv1a_fb_oclass = &(struct nouveau_oclass) { nv1a_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x1a), .base.handle = NV_SUBDEV(FB, 0x1a),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv1a_fb_ctor, .ctor = nv1a_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = _nouveau_fb_init, .init = _nouveau_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv10_ram_oclass,
}.base;
...@@ -88,7 +88,7 @@ nv20_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -88,7 +88,7 @@ nv20_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv20_fb_priv *priv; struct nv20_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv20_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -103,12 +103,13 @@ nv20_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -103,12 +103,13 @@ nv20_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
} }
struct nouveau_oclass * struct nouveau_oclass *
nv20_fb_oclass = &(struct nouveau_oclass) { nv20_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x20), .base.handle = NV_SUBDEV(FB, 0x20),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv20_fb_ctor, .ctor = nv20_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = _nouveau_fb_init, .init = _nouveau_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv20_ram_oclass,
}.base;
...@@ -54,7 +54,7 @@ nv25_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -54,7 +54,7 @@ nv25_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv25_fb_priv *priv; struct nv25_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv20_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -69,12 +69,13 @@ nv25_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -69,12 +69,13 @@ nv25_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
} }
struct nouveau_oclass * struct nouveau_oclass *
nv25_fb_oclass = &(struct nouveau_oclass) { nv25_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x25), .base.handle = NV_SUBDEV(FB, 0x25),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv25_fb_ctor, .ctor = nv25_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = _nouveau_fb_init, .init = _nouveau_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv20_ram_oclass,
}.base;
...@@ -132,7 +132,7 @@ nv30_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -132,7 +132,7 @@ nv30_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv30_fb_priv *priv; struct nv30_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv20_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -147,12 +147,13 @@ nv30_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -147,12 +147,13 @@ nv30_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
} }
struct nouveau_oclass * struct nouveau_oclass *
nv30_fb_oclass = &(struct nouveau_oclass) { nv30_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x30), .base.handle = NV_SUBDEV(FB, 0x30),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv30_fb_ctor, .ctor = nv30_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = nv30_fb_init, .init = nv30_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv20_ram_oclass,
}.base;
...@@ -55,7 +55,7 @@ nv35_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -55,7 +55,7 @@ nv35_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv35_fb_priv *priv; struct nv35_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv20_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -70,12 +70,13 @@ nv35_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -70,12 +70,13 @@ nv35_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
} }
struct nouveau_oclass * struct nouveau_oclass *
nv35_fb_oclass = &(struct nouveau_oclass) { nv35_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x35), .base.handle = NV_SUBDEV(FB, 0x35),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv35_fb_ctor, .ctor = nv35_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = nv30_fb_init, .init = nv30_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv20_ram_oclass,
}.base;
...@@ -55,7 +55,7 @@ nv36_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -55,7 +55,7 @@ nv36_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv36_fb_priv *priv; struct nv36_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv20_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -70,12 +70,13 @@ nv36_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -70,12 +70,13 @@ nv36_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
} }
struct nouveau_oclass * struct nouveau_oclass *
nv36_fb_oclass = &(struct nouveau_oclass) { nv36_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x36), .base.handle = NV_SUBDEV(FB, 0x36),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv36_fb_ctor, .ctor = nv36_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = nv30_fb_init, .init = nv30_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv20_ram_oclass,
}.base;
...@@ -69,7 +69,7 @@ nv40_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -69,7 +69,7 @@ nv40_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv40_fb_priv *priv; struct nv40_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv40_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -85,12 +85,13 @@ nv40_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -85,12 +85,13 @@ nv40_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nouveau_oclass * struct nouveau_oclass *
nv40_fb_oclass = &(struct nouveau_oclass) { nv40_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x40), .base.handle = NV_SUBDEV(FB, 0x40),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv40_fb_ctor, .ctor = nv40_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = nv40_fb_init, .init = nv40_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv40_ram_oclass,
}.base;
...@@ -62,7 +62,7 @@ nv41_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -62,7 +62,7 @@ nv41_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv41_fb_priv *priv; struct nv41_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv41_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -78,12 +78,13 @@ nv41_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -78,12 +78,13 @@ nv41_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nouveau_oclass * struct nouveau_oclass *
nv41_fb_oclass = &(struct nouveau_oclass) { nv41_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x41), .base.handle = NV_SUBDEV(FB, 0x41),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv41_fb_ctor, .ctor = nv41_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = nv41_fb_init, .init = nv41_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv41_ram_oclass,
}.base;
...@@ -72,7 +72,7 @@ nv44_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -72,7 +72,7 @@ nv44_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv44_fb_priv *priv; struct nv44_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv44_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -87,12 +87,13 @@ nv44_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -87,12 +87,13 @@ nv44_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nouveau_oclass * struct nouveau_oclass *
nv44_fb_oclass = &(struct nouveau_oclass) { nv44_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x44), .base.handle = NV_SUBDEV(FB, 0x44),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv44_fb_ctor, .ctor = nv44_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = nv44_fb_init, .init = nv44_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv44_ram_oclass,
}.base;
...@@ -52,7 +52,7 @@ nv46_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -52,7 +52,7 @@ nv46_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv46_fb_priv *priv; struct nv46_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv44_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -67,12 +67,13 @@ nv46_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -67,12 +67,13 @@ nv46_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nouveau_oclass * struct nouveau_oclass *
nv46_fb_oclass = &(struct nouveau_oclass) { nv46_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x46), .base.handle = NV_SUBDEV(FB, 0x46),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv46_fb_ctor, .ctor = nv46_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = nv44_fb_init, .init = nv44_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv44_ram_oclass,
}.base;
...@@ -38,7 +38,7 @@ nv47_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -38,7 +38,7 @@ nv47_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv47_fb_priv *priv; struct nv47_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv41_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -54,12 +54,13 @@ nv47_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -54,12 +54,13 @@ nv47_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nouveau_oclass * struct nouveau_oclass *
nv47_fb_oclass = &(struct nouveau_oclass) { nv47_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x47), .base.handle = NV_SUBDEV(FB, 0x47),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv47_fb_ctor, .ctor = nv47_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = nv41_fb_init, .init = nv41_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv41_ram_oclass,
}.base;
...@@ -38,7 +38,7 @@ nv49_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -38,7 +38,7 @@ nv49_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv49_fb_priv *priv; struct nv49_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv49_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -54,12 +54,13 @@ nv49_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -54,12 +54,13 @@ nv49_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nouveau_oclass * struct nouveau_oclass *
nv49_fb_oclass = &(struct nouveau_oclass) { nv49_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x49), .base.handle = NV_SUBDEV(FB, 0x49),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv49_fb_ctor, .ctor = nv49_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = nv41_fb_init, .init = nv41_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv49_ram_oclass,
}.base;
...@@ -38,7 +38,7 @@ nv4e_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -38,7 +38,7 @@ nv4e_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv4e_fb_priv *priv; struct nv4e_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv4e_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -52,12 +52,13 @@ nv4e_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -52,12 +52,13 @@ nv4e_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
} }
struct nouveau_oclass * struct nouveau_oclass *
nv4e_fb_oclass = &(struct nouveau_oclass) { nv4e_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0x4e), .base.handle = NV_SUBDEV(FB, 0x4e),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv4e_fb_ctor, .ctor = nv4e_fb_ctor,
.dtor = _nouveau_fb_dtor, .dtor = _nouveau_fb_dtor,
.init = nv44_fb_init, .init = nv44_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nv4e_ram_oclass,
}.base;
...@@ -243,7 +243,7 @@ nv50_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -243,7 +243,7 @@ nv50_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nv50_fb_priv *priv; struct nv50_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nv50_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -304,12 +304,13 @@ nv50_fb_init(struct nouveau_object *object) ...@@ -304,12 +304,13 @@ nv50_fb_init(struct nouveau_object *object)
struct nouveau_oclass * struct nouveau_oclass *
nv50_fb_oclass = &(struct nv50_fb_impl) { nv50_fb_oclass = &(struct nv50_fb_impl) {
.base.handle = NV_SUBDEV(FB, 0x50), .base.base.handle = NV_SUBDEV(FB, 0x50),
.base.ofuncs = &(struct nouveau_ofuncs) { .base.base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv50_fb_ctor, .ctor = nv50_fb_ctor,
.dtor = nv50_fb_dtor, .dtor = nv50_fb_dtor,
.init = nv50_fb_init, .init = nv50_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
.base.ram = &nv50_ram_oclass,
.trap = 0x000707ff, .trap = 0x000707ff,
}.base; }.base.base;
...@@ -16,7 +16,7 @@ void nv50_fb_dtor(struct nouveau_object *); ...@@ -16,7 +16,7 @@ void nv50_fb_dtor(struct nouveau_object *);
int nv50_fb_init(struct nouveau_object *); int nv50_fb_init(struct nouveau_object *);
struct nv50_fb_impl { struct nv50_fb_impl {
struct nouveau_oclass base; struct nouveau_fb_impl base;
u32 trap; u32 trap;
}; };
......
...@@ -26,12 +26,13 @@ ...@@ -26,12 +26,13 @@
struct nouveau_oclass * struct nouveau_oclass *
nv84_fb_oclass = &(struct nv50_fb_impl) { nv84_fb_oclass = &(struct nv50_fb_impl) {
.base.handle = NV_SUBDEV(FB, 0x84), .base.base.handle = NV_SUBDEV(FB, 0x84),
.base.ofuncs = &(struct nouveau_ofuncs) { .base.base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv50_fb_ctor, .ctor = nv50_fb_ctor,
.dtor = nv50_fb_dtor, .dtor = nv50_fb_dtor,
.init = nv50_fb_init, .init = nv50_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
.base.ram = &nv50_ram_oclass,
.trap = 0x001d07ff, .trap = 0x001d07ff,
}.base; }.base.base;
...@@ -26,12 +26,13 @@ ...@@ -26,12 +26,13 @@
struct nouveau_oclass * struct nouveau_oclass *
nva3_fb_oclass = &(struct nv50_fb_impl) { nva3_fb_oclass = &(struct nv50_fb_impl) {
.base.handle = NV_SUBDEV(FB, 0xa3), .base.base.handle = NV_SUBDEV(FB, 0xa3),
.base.ofuncs = &(struct nouveau_ofuncs) { .base.base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv50_fb_ctor, .ctor = nv50_fb_ctor,
.dtor = nv50_fb_dtor, .dtor = nv50_fb_dtor,
.init = nv50_fb_init, .init = nv50_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
.base.ram = &nv50_ram_oclass,
.trap = 0x000d0fff, .trap = 0x000d0fff,
}.base; }.base.base;
...@@ -26,12 +26,13 @@ ...@@ -26,12 +26,13 @@
struct nouveau_oclass * struct nouveau_oclass *
nvaa_fb_oclass = &(struct nv50_fb_impl) { nvaa_fb_oclass = &(struct nv50_fb_impl) {
.base.handle = NV_SUBDEV(FB, 0xaa), .base.base.handle = NV_SUBDEV(FB, 0xaa),
.base.ofuncs = &(struct nouveau_ofuncs) { .base.base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv50_fb_ctor, .ctor = nv50_fb_ctor,
.dtor = nv50_fb_dtor, .dtor = nv50_fb_dtor,
.init = nv50_fb_init, .init = nv50_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
.base.ram = &nv50_ram_oclass,
.trap = 0x001d07ff, .trap = 0x001d07ff,
}.base; }.base.base;
...@@ -26,12 +26,13 @@ ...@@ -26,12 +26,13 @@
struct nouveau_oclass * struct nouveau_oclass *
nvaf_fb_oclass = &(struct nv50_fb_impl) { nvaf_fb_oclass = &(struct nv50_fb_impl) {
.base.handle = NV_SUBDEV(FB, 0xaf), .base.base.handle = NV_SUBDEV(FB, 0xaf),
.base.ofuncs = &(struct nouveau_ofuncs) { .base.base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nv50_fb_ctor, .ctor = nv50_fb_ctor,
.dtor = nv50_fb_dtor, .dtor = nv50_fb_dtor,
.init = nv50_fb_init, .init = nv50_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
.base.ram = &nv50_ram_oclass,
.trap = 0x089d1fff, .trap = 0x089d1fff,
}.base; }.base.base;
...@@ -78,7 +78,7 @@ nvc0_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -78,7 +78,7 @@ nvc0_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nvc0_fb_priv *priv; struct nvc0_fb_priv *priv;
int ret; int ret;
ret = nouveau_fb_create(parent, engine, oclass, &nvc0_ram_oclass, &priv); ret = nouveau_fb_create(parent, engine, oclass, &priv);
*pobject = nv_object(priv); *pobject = nv_object(priv);
if (ret) if (ret)
return ret; return ret;
...@@ -99,12 +99,13 @@ nvc0_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine, ...@@ -99,12 +99,13 @@ nvc0_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
struct nouveau_oclass * struct nouveau_oclass *
nvc0_fb_oclass = &(struct nouveau_oclass) { nvc0_fb_oclass = &(struct nouveau_fb_impl) {
.handle = NV_SUBDEV(FB, 0xc0), .base.handle = NV_SUBDEV(FB, 0xc0),
.ofuncs = &(struct nouveau_ofuncs) { .base.ofuncs = &(struct nouveau_ofuncs) {
.ctor = nvc0_fb_ctor, .ctor = nvc0_fb_ctor,
.dtor = nvc0_fb_dtor, .dtor = nvc0_fb_dtor,
.init = nvc0_fb_init, .init = nvc0_fb_init,
.fini = _nouveau_fb_fini, .fini = _nouveau_fb_fini,
}, },
}; .ram = &nvc0_ram_oclass,
}.base;
...@@ -26,10 +26,12 @@ extern struct nouveau_oclass nv44_ram_oclass; ...@@ -26,10 +26,12 @@ extern struct nouveau_oclass nv44_ram_oclass;
extern struct nouveau_oclass nv49_ram_oclass; extern struct nouveau_oclass nv49_ram_oclass;
extern struct nouveau_oclass nv4e_ram_oclass; extern struct nouveau_oclass nv4e_ram_oclass;
extern struct nouveau_oclass nv50_ram_oclass; extern struct nouveau_oclass nv50_ram_oclass;
extern struct nouveau_oclass nva3_ram_oclass;
extern struct nouveau_oclass nvaa_ram_oclass;
extern struct nouveau_oclass nvc0_ram_oclass; extern struct nouveau_oclass nvc0_ram_oclass;
#define nouveau_fb_create(p,e,c,r,d) \ #define nouveau_fb_create(p,e,c,d) \
nouveau_fb_create_((p), (e), (c), (r), sizeof(**d), (void **)d) nouveau_fb_create_((p), (e), (c), sizeof(**d), (void **)d)
#define nouveau_fb_destroy(p) ({ \ #define nouveau_fb_destroy(p) ({ \
struct nouveau_fb *pfb = (p); \ struct nouveau_fb *pfb = (p); \
_nouveau_fb_dtor(nv_object(pfb)); \ _nouveau_fb_dtor(nv_object(pfb)); \
...@@ -44,12 +46,16 @@ extern struct nouveau_oclass nvc0_ram_oclass; ...@@ -44,12 +46,16 @@ extern struct nouveau_oclass nvc0_ram_oclass;
}) })
int nouveau_fb_create_(struct nouveau_object *, struct nouveau_object *, int nouveau_fb_create_(struct nouveau_object *, struct nouveau_object *,
struct nouveau_oclass *, struct nouveau_oclass *, struct nouveau_oclass *, int, void **);
int length, void **pobject);
void _nouveau_fb_dtor(struct nouveau_object *); void _nouveau_fb_dtor(struct nouveau_object *);
int _nouveau_fb_init(struct nouveau_object *); int _nouveau_fb_init(struct nouveau_object *);
int _nouveau_fb_fini(struct nouveau_object *, bool); int _nouveau_fb_fini(struct nouveau_object *, bool);
struct nouveau_fb_impl {
struct nouveau_oclass base;
struct nouveau_oclass *ram;
};
struct nouveau_bios; struct nouveau_bios;
int nouveau_fb_bios_memtype(struct nouveau_bios *); int nouveau_fb_bios_memtype(struct nouveau_bios *);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment