drm/nouveau/disp/nv50-: specify ctrl/user separately when constructing classes
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
Родитель
4391d7f5c7
Коммит
2a32b9b186
|
@ -263,7 +263,7 @@ nv50_disp_chan = {
|
||||||
int
|
int
|
||||||
nv50_disp_chan_ctor(const struct nv50_disp_chan_func *func,
|
nv50_disp_chan_ctor(const struct nv50_disp_chan_func *func,
|
||||||
const struct nv50_disp_chan_mthd *mthd,
|
const struct nv50_disp_chan_mthd *mthd,
|
||||||
struct nv50_disp_root *root, int chid, int head,
|
struct nv50_disp_root *root, int ctrl, int user, int head,
|
||||||
const struct nvkm_oclass *oclass,
|
const struct nvkm_oclass *oclass,
|
||||||
struct nv50_disp_chan *chan)
|
struct nv50_disp_chan *chan)
|
||||||
{
|
{
|
||||||
|
@ -273,8 +273,8 @@ nv50_disp_chan_ctor(const struct nv50_disp_chan_func *func,
|
||||||
chan->func = func;
|
chan->func = func;
|
||||||
chan->mthd = mthd;
|
chan->mthd = mthd;
|
||||||
chan->root = root;
|
chan->root = root;
|
||||||
chan->chid.ctrl = chid;
|
chan->chid.ctrl = ctrl;
|
||||||
chan->chid.user = chid;
|
chan->chid.user = user;
|
||||||
chan->head = head;
|
chan->head = head;
|
||||||
|
|
||||||
if (disp->chan[chan->chid.user]) {
|
if (disp->chan[chan->chid.user]) {
|
||||||
|
@ -288,7 +288,7 @@ nv50_disp_chan_ctor(const struct nv50_disp_chan_func *func,
|
||||||
int
|
int
|
||||||
nv50_disp_chan_new_(const struct nv50_disp_chan_func *func,
|
nv50_disp_chan_new_(const struct nv50_disp_chan_func *func,
|
||||||
const struct nv50_disp_chan_mthd *mthd,
|
const struct nv50_disp_chan_mthd *mthd,
|
||||||
struct nv50_disp_root *root, int chid, int head,
|
struct nv50_disp_root *root, int ctrl, int user, int head,
|
||||||
const struct nvkm_oclass *oclass,
|
const struct nvkm_oclass *oclass,
|
||||||
struct nvkm_object **pobject)
|
struct nvkm_object **pobject)
|
||||||
{
|
{
|
||||||
|
@ -298,5 +298,6 @@ nv50_disp_chan_new_(const struct nv50_disp_chan_func *func,
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
*pobject = &chan->object;
|
*pobject = &chan->object;
|
||||||
|
|
||||||
return nv50_disp_chan_ctor(func, mthd, root, chid, head, oclass, chan);
|
return nv50_disp_chan_ctor(func, mthd, root, ctrl, user,
|
||||||
|
head, oclass, chan);
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,11 +29,11 @@ struct nv50_disp_chan_func {
|
||||||
|
|
||||||
int nv50_disp_chan_ctor(const struct nv50_disp_chan_func *,
|
int nv50_disp_chan_ctor(const struct nv50_disp_chan_func *,
|
||||||
const struct nv50_disp_chan_mthd *,
|
const struct nv50_disp_chan_mthd *,
|
||||||
struct nv50_disp_root *, int chid, int head,
|
struct nv50_disp_root *, int ctrl, int user, int head,
|
||||||
const struct nvkm_oclass *, struct nv50_disp_chan *);
|
const struct nvkm_oclass *, struct nv50_disp_chan *);
|
||||||
int nv50_disp_chan_new_(const struct nv50_disp_chan_func *,
|
int nv50_disp_chan_new_(const struct nv50_disp_chan_func *,
|
||||||
const struct nv50_disp_chan_mthd *,
|
const struct nv50_disp_chan_mthd *,
|
||||||
struct nv50_disp_root *, int chid, int head,
|
struct nv50_disp_root *, int ctrl, int user, int head,
|
||||||
const struct nvkm_oclass *, struct nvkm_object **);
|
const struct nvkm_oclass *, struct nvkm_object **);
|
||||||
|
|
||||||
extern const struct nv50_disp_chan_func nv50_disp_pioc_func;
|
extern const struct nv50_disp_chan_func nv50_disp_pioc_func;
|
||||||
|
@ -94,13 +94,16 @@ extern const struct nv50_disp_chan_mthd gk104_disp_ovly_chan_mthd;
|
||||||
struct nv50_disp_pioc_oclass {
|
struct nv50_disp_pioc_oclass {
|
||||||
int (*ctor)(const struct nv50_disp_chan_func *,
|
int (*ctor)(const struct nv50_disp_chan_func *,
|
||||||
const struct nv50_disp_chan_mthd *,
|
const struct nv50_disp_chan_mthd *,
|
||||||
struct nv50_disp_root *, int chid,
|
struct nv50_disp_root *, int ctrl, int user,
|
||||||
const struct nvkm_oclass *, void *data, u32 size,
|
const struct nvkm_oclass *, void *data, u32 size,
|
||||||
struct nvkm_object **);
|
struct nvkm_object **);
|
||||||
struct nvkm_sclass base;
|
struct nvkm_sclass base;
|
||||||
const struct nv50_disp_chan_func *func;
|
const struct nv50_disp_chan_func *func;
|
||||||
const struct nv50_disp_chan_mthd *mthd;
|
const struct nv50_disp_chan_mthd *mthd;
|
||||||
int chid;
|
struct {
|
||||||
|
int ctrl;
|
||||||
|
int user;
|
||||||
|
} chid;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const struct nv50_disp_pioc_oclass nv50_disp_oimm_oclass;
|
extern const struct nv50_disp_pioc_oclass nv50_disp_oimm_oclass;
|
||||||
|
@ -121,12 +124,12 @@ extern const struct nv50_disp_pioc_oclass gk104_disp_curs_oclass;
|
||||||
|
|
||||||
int nv50_disp_curs_new(const struct nv50_disp_chan_func *,
|
int nv50_disp_curs_new(const struct nv50_disp_chan_func *,
|
||||||
const struct nv50_disp_chan_mthd *,
|
const struct nv50_disp_chan_mthd *,
|
||||||
struct nv50_disp_root *, int chid,
|
struct nv50_disp_root *, int ctrl, int user,
|
||||||
const struct nvkm_oclass *, void *data, u32 size,
|
const struct nvkm_oclass *, void *data, u32 size,
|
||||||
struct nvkm_object **);
|
struct nvkm_object **);
|
||||||
int nv50_disp_oimm_new(const struct nv50_disp_chan_func *,
|
int nv50_disp_oimm_new(const struct nv50_disp_chan_func *,
|
||||||
const struct nv50_disp_chan_mthd *,
|
const struct nv50_disp_chan_mthd *,
|
||||||
struct nv50_disp_root *, int chid,
|
struct nv50_disp_root *, int ctrl, int user,
|
||||||
const struct nvkm_oclass *, void *data, u32 size,
|
const struct nvkm_oclass *, void *data, u32 size,
|
||||||
struct nvkm_object **);
|
struct nvkm_object **);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -33,5 +33,5 @@ g84_disp_curs_oclass = {
|
||||||
.base.maxver = 0,
|
.base.maxver = 0,
|
||||||
.ctor = nv50_disp_curs_new,
|
.ctor = nv50_disp_curs_new,
|
||||||
.func = &nv50_disp_pioc_func,
|
.func = &nv50_disp_pioc_func,
|
||||||
.chid = 7,
|
.chid = { 7, 7 },
|
||||||
};
|
};
|
||||||
|
|
|
@ -33,5 +33,5 @@ gf119_disp_curs_oclass = {
|
||||||
.base.maxver = 0,
|
.base.maxver = 0,
|
||||||
.ctor = nv50_disp_curs_new,
|
.ctor = nv50_disp_curs_new,
|
||||||
.func = &gf119_disp_pioc_func,
|
.func = &gf119_disp_pioc_func,
|
||||||
.chid = 13,
|
.chid = { 13, 13 },
|
||||||
};
|
};
|
||||||
|
|
|
@ -33,5 +33,5 @@ gk104_disp_curs_oclass = {
|
||||||
.base.maxver = 0,
|
.base.maxver = 0,
|
||||||
.ctor = nv50_disp_curs_new,
|
.ctor = nv50_disp_curs_new,
|
||||||
.func = &gf119_disp_pioc_func,
|
.func = &gf119_disp_pioc_func,
|
||||||
.chid = 13,
|
.chid = { 13, 13 },
|
||||||
};
|
};
|
||||||
|
|
|
@ -33,5 +33,5 @@ gt215_disp_curs_oclass = {
|
||||||
.base.maxver = 0,
|
.base.maxver = 0,
|
||||||
.ctor = nv50_disp_curs_new,
|
.ctor = nv50_disp_curs_new,
|
||||||
.func = &nv50_disp_pioc_func,
|
.func = &nv50_disp_pioc_func,
|
||||||
.chid = 7,
|
.chid = { 7, 7 },
|
||||||
};
|
};
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
int
|
int
|
||||||
nv50_disp_curs_new(const struct nv50_disp_chan_func *func,
|
nv50_disp_curs_new(const struct nv50_disp_chan_func *func,
|
||||||
const struct nv50_disp_chan_mthd *mthd,
|
const struct nv50_disp_chan_mthd *mthd,
|
||||||
struct nv50_disp_root *root, int chid,
|
struct nv50_disp_root *root, int ctrl, int user,
|
||||||
const struct nvkm_oclass *oclass, void *data, u32 size,
|
const struct nvkm_oclass *oclass, void *data, u32 size,
|
||||||
struct nvkm_object **pobject)
|
struct nvkm_object **pobject)
|
||||||
{
|
{
|
||||||
|
@ -54,7 +54,7 @@ nv50_disp_curs_new(const struct nv50_disp_chan_func *func,
|
||||||
} else
|
} else
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
return nv50_disp_chan_new_(func, mthd, root, chid + head,
|
return nv50_disp_chan_new_(func, mthd, root, ctrl + head, user + head,
|
||||||
head, oclass, pobject);
|
head, oclass, pobject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,5 +65,5 @@ nv50_disp_curs_oclass = {
|
||||||
.base.maxver = 0,
|
.base.maxver = 0,
|
||||||
.ctor = nv50_disp_curs_new,
|
.ctor = nv50_disp_curs_new,
|
||||||
.func = &nv50_disp_pioc_func,
|
.func = &nv50_disp_pioc_func,
|
||||||
.chid = 7,
|
.chid = { 7, 7 },
|
||||||
};
|
};
|
||||||
|
|
|
@ -149,7 +149,7 @@ nv50_disp_dmac_new_(const struct nv50_disp_dmac_func *func,
|
||||||
chan->func = func;
|
chan->func = func;
|
||||||
|
|
||||||
ret = nv50_disp_chan_ctor(&nv50_disp_dmac_func_, mthd, root,
|
ret = nv50_disp_chan_ctor(&nv50_disp_dmac_func_, mthd, root,
|
||||||
chid, head, oclass, &chan->base);
|
chid, chid, head, oclass, &chan->base);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
|
|
@ -33,5 +33,5 @@ g84_disp_oimm_oclass = {
|
||||||
.base.maxver = 0,
|
.base.maxver = 0,
|
||||||
.ctor = nv50_disp_oimm_new,
|
.ctor = nv50_disp_oimm_new,
|
||||||
.func = &nv50_disp_pioc_func,
|
.func = &nv50_disp_pioc_func,
|
||||||
.chid = 5,
|
.chid = { 5, 5 },
|
||||||
};
|
};
|
||||||
|
|
|
@ -33,5 +33,5 @@ gf119_disp_oimm_oclass = {
|
||||||
.base.maxver = 0,
|
.base.maxver = 0,
|
||||||
.ctor = nv50_disp_oimm_new,
|
.ctor = nv50_disp_oimm_new,
|
||||||
.func = &gf119_disp_pioc_func,
|
.func = &gf119_disp_pioc_func,
|
||||||
.chid = 9,
|
.chid = { 9, 9 },
|
||||||
};
|
};
|
||||||
|
|
|
@ -33,5 +33,5 @@ gk104_disp_oimm_oclass = {
|
||||||
.base.maxver = 0,
|
.base.maxver = 0,
|
||||||
.ctor = nv50_disp_oimm_new,
|
.ctor = nv50_disp_oimm_new,
|
||||||
.func = &gf119_disp_pioc_func,
|
.func = &gf119_disp_pioc_func,
|
||||||
.chid = 9,
|
.chid = { 9, 9 },
|
||||||
};
|
};
|
||||||
|
|
|
@ -33,5 +33,5 @@ gt215_disp_oimm_oclass = {
|
||||||
.base.maxver = 0,
|
.base.maxver = 0,
|
||||||
.ctor = nv50_disp_oimm_new,
|
.ctor = nv50_disp_oimm_new,
|
||||||
.func = &nv50_disp_pioc_func,
|
.func = &nv50_disp_pioc_func,
|
||||||
.chid = 5,
|
.chid = { 5, 5 },
|
||||||
};
|
};
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
int
|
int
|
||||||
nv50_disp_oimm_new(const struct nv50_disp_chan_func *func,
|
nv50_disp_oimm_new(const struct nv50_disp_chan_func *func,
|
||||||
const struct nv50_disp_chan_mthd *mthd,
|
const struct nv50_disp_chan_mthd *mthd,
|
||||||
struct nv50_disp_root *root, int chid,
|
struct nv50_disp_root *root, int ctrl, int user,
|
||||||
const struct nvkm_oclass *oclass, void *data, u32 size,
|
const struct nvkm_oclass *oclass, void *data, u32 size,
|
||||||
struct nvkm_object **pobject)
|
struct nvkm_object **pobject)
|
||||||
{
|
{
|
||||||
|
@ -54,7 +54,7 @@ nv50_disp_oimm_new(const struct nv50_disp_chan_func *func,
|
||||||
} else
|
} else
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
return nv50_disp_chan_new_(func, mthd, root, chid + head,
|
return nv50_disp_chan_new_(func, mthd, root, ctrl + head, user + head,
|
||||||
head, oclass, pobject);
|
head, oclass, pobject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,5 +65,5 @@ nv50_disp_oimm_oclass = {
|
||||||
.base.maxver = 0,
|
.base.maxver = 0,
|
||||||
.ctor = nv50_disp_oimm_new,
|
.ctor = nv50_disp_oimm_new,
|
||||||
.func = &nv50_disp_pioc_func,
|
.func = &nv50_disp_pioc_func,
|
||||||
.chid = 5,
|
.chid = { 5, 5 },
|
||||||
};
|
};
|
||||||
|
|
|
@ -250,8 +250,8 @@ nv50_disp_root_pioc_new_(const struct nvkm_oclass *oclass,
|
||||||
{
|
{
|
||||||
const struct nv50_disp_pioc_oclass *sclass = oclass->priv;
|
const struct nv50_disp_pioc_oclass *sclass = oclass->priv;
|
||||||
struct nv50_disp_root *root = nv50_disp_root(oclass->parent);
|
struct nv50_disp_root *root = nv50_disp_root(oclass->parent);
|
||||||
return sclass->ctor(sclass->func, sclass->mthd, root, sclass->chid,
|
return sclass->ctor(sclass->func, sclass->mthd, root, sclass->chid.ctrl,
|
||||||
oclass, data, size, pobject);
|
sclass->chid.user, oclass, data, size, pobject);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
Загрузка…
Ссылка в новой задаче