mirror of https://gitee.com/openkylin/linux.git
drm/nouveau/disp/nv50-: replace user object with engine pointer in channels
More simplification. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
bb3b0a4220
commit
abc1d4379b
|
@ -58,7 +58,7 @@ nv50_disp_base_new(const struct nv50_disp_dmac_func *func,
|
|||
} else
|
||||
return ret;
|
||||
|
||||
return nv50_disp_dmac_new_(func, mthd, root, chid + head,
|
||||
return nv50_disp_dmac_new_(func, mthd, disp, chid + head,
|
||||
head, push, oclass, pobject);
|
||||
}
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ nv50_disp_mthd_list(struct nv50_disp *disp, int debug, u32 base, int c,
|
|||
void
|
||||
nv50_disp_chan_mthd(struct nv50_disp_chan *chan, int debug)
|
||||
{
|
||||
struct nv50_disp *disp = chan->root->disp;
|
||||
struct nv50_disp *disp = chan->disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
const struct nv50_disp_chan_mthd *mthd = chan->mthd;
|
||||
const struct nv50_disp_mthd_list *list;
|
||||
|
@ -158,7 +158,7 @@ static int
|
|||
nv50_disp_chan_rd32(struct nvkm_object *object, u64 addr, u32 *data)
|
||||
{
|
||||
struct nv50_disp_chan *chan = nv50_disp_chan(object);
|
||||
struct nv50_disp *disp = chan->root->disp;
|
||||
struct nv50_disp *disp = chan->disp;
|
||||
struct nvkm_device *device = disp->base.engine.subdev.device;
|
||||
*data = nvkm_rd32(device, 0x640000 + (chan->chid.user * 0x1000) + addr);
|
||||
return 0;
|
||||
|
@ -168,7 +168,7 @@ static int
|
|||
nv50_disp_chan_wr32(struct nvkm_object *object, u64 addr, u32 data)
|
||||
{
|
||||
struct nv50_disp_chan *chan = nv50_disp_chan(object);
|
||||
struct nv50_disp *disp = chan->root->disp;
|
||||
struct nv50_disp *disp = chan->disp;
|
||||
struct nvkm_device *device = disp->base.engine.subdev.device;
|
||||
nvkm_wr32(device, 0x640000 + (chan->chid.user * 0x1000) + addr, data);
|
||||
return 0;
|
||||
|
@ -179,7 +179,7 @@ nv50_disp_chan_ntfy(struct nvkm_object *object, u32 type,
|
|||
struct nvkm_event **pevent)
|
||||
{
|
||||
struct nv50_disp_chan *chan = nv50_disp_chan(object);
|
||||
struct nv50_disp *disp = chan->root->disp;
|
||||
struct nv50_disp *disp = chan->disp;
|
||||
switch (type) {
|
||||
case NV50_DISP_CORE_CHANNEL_DMA_V0_NTFY_UEVENT:
|
||||
*pevent = &disp->uevent;
|
||||
|
@ -195,7 +195,7 @@ nv50_disp_chan_map(struct nvkm_object *object, void *argv, u32 argc,
|
|||
enum nvkm_object_map *type, u64 *addr, u64 *size)
|
||||
{
|
||||
struct nv50_disp_chan *chan = nv50_disp_chan(object);
|
||||
struct nv50_disp *disp = chan->root->disp;
|
||||
struct nv50_disp *disp = chan->disp;
|
||||
struct nvkm_device *device = disp->base.engine.subdev.device;
|
||||
*type = NVKM_OBJECT_MAP_IO;
|
||||
*addr = device->func->resource_addr(device, 0) +
|
||||
|
@ -245,7 +245,7 @@ static void *
|
|||
nv50_disp_chan_dtor(struct nvkm_object *object)
|
||||
{
|
||||
struct nv50_disp_chan *chan = nv50_disp_chan(object);
|
||||
struct nv50_disp *disp = chan->root->disp;
|
||||
struct nv50_disp *disp = chan->disp;
|
||||
if (chan->chid.user >= 0)
|
||||
disp->chan[chan->chid.user] = NULL;
|
||||
return chan->func->dtor ? chan->func->dtor(chan) : chan;
|
||||
|
@ -266,16 +266,14 @@ nv50_disp_chan = {
|
|||
int
|
||||
nv50_disp_chan_ctor(const struct nv50_disp_chan_func *func,
|
||||
const struct nv50_disp_chan_mthd *mthd,
|
||||
struct nv50_disp_root *root, int ctrl, int user, int head,
|
||||
struct nv50_disp *disp, int ctrl, int user, int head,
|
||||
const struct nvkm_oclass *oclass,
|
||||
struct nv50_disp_chan *chan)
|
||||
{
|
||||
struct nv50_disp *disp = root->disp;
|
||||
|
||||
nvkm_object_ctor(&nv50_disp_chan, oclass, &chan->object);
|
||||
chan->func = func;
|
||||
chan->mthd = mthd;
|
||||
chan->root = root;
|
||||
chan->disp = disp;
|
||||
chan->chid.ctrl = ctrl;
|
||||
chan->chid.user = user;
|
||||
chan->head = head;
|
||||
|
@ -291,7 +289,7 @@ nv50_disp_chan_ctor(const struct nv50_disp_chan_func *func,
|
|||
int
|
||||
nv50_disp_chan_new_(const struct nv50_disp_chan_func *func,
|
||||
const struct nv50_disp_chan_mthd *mthd,
|
||||
struct nv50_disp_root *root, int ctrl, int user, int head,
|
||||
struct nv50_disp *disp, int ctrl, int user, int head,
|
||||
const struct nvkm_oclass *oclass,
|
||||
struct nvkm_object **pobject)
|
||||
{
|
||||
|
@ -301,6 +299,6 @@ nv50_disp_chan_new_(const struct nv50_disp_chan_func *func,
|
|||
return -ENOMEM;
|
||||
*pobject = &chan->object;
|
||||
|
||||
return nv50_disp_chan_ctor(func, mthd, root, ctrl, user,
|
||||
return nv50_disp_chan_ctor(func, mthd, disp, ctrl, user,
|
||||
head, oclass, chan);
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ struct nv50_disp_root;
|
|||
struct nv50_disp_chan {
|
||||
const struct nv50_disp_chan_func *func;
|
||||
const struct nv50_disp_chan_mthd *mthd;
|
||||
struct nv50_disp_root *root;
|
||||
struct nv50_disp *disp;
|
||||
|
||||
struct {
|
||||
int ctrl;
|
||||
|
@ -32,11 +32,11 @@ struct nv50_disp_chan_func {
|
|||
|
||||
int nv50_disp_chan_ctor(const struct nv50_disp_chan_func *,
|
||||
const struct nv50_disp_chan_mthd *,
|
||||
struct nv50_disp_root *, int ctrl, int user, int head,
|
||||
struct nv50_disp *, int ctrl, int user, int head,
|
||||
const struct nvkm_oclass *, struct nv50_disp_chan *);
|
||||
int nv50_disp_chan_new_(const struct nv50_disp_chan_func *,
|
||||
const struct nv50_disp_chan_mthd *,
|
||||
struct nv50_disp_root *, int ctrl, int user, int head,
|
||||
struct nv50_disp *, int ctrl, int user, int head,
|
||||
const struct nvkm_oclass *, struct nvkm_object **);
|
||||
|
||||
extern const struct nv50_disp_chan_func nv50_disp_pioc_func;
|
||||
|
|
|
@ -174,7 +174,7 @@ gf119_disp_core_chan_mthd = {
|
|||
void
|
||||
gf119_disp_core_fini(struct nv50_disp_dmac *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->base.root->disp;
|
||||
struct nv50_disp *disp = chan->base.disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
|
||||
|
@ -197,7 +197,7 @@ gf119_disp_core_fini(struct nv50_disp_dmac *chan)
|
|||
static int
|
||||
gf119_disp_core_init(struct nv50_disp_dmac *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->base.root->disp;
|
||||
struct nv50_disp *disp = chan->base.disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
static int
|
||||
gp102_disp_core_init(struct nv50_disp_dmac *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->base.root->disp;
|
||||
struct nv50_disp *disp = chan->base.disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ nv50_disp_core_new(const struct nv50_disp_dmac_func *func,
|
|||
} else
|
||||
return ret;
|
||||
|
||||
return nv50_disp_dmac_new_(func, mthd, root, chid, 0,
|
||||
return nv50_disp_dmac_new_(func, mthd, root->disp, chid, 0,
|
||||
push, oclass, pobject);
|
||||
}
|
||||
|
||||
|
@ -168,7 +168,7 @@ nv50_disp_core_chan_mthd = {
|
|||
static void
|
||||
nv50_disp_core_fini(struct nv50_disp_dmac *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->base.root->disp;
|
||||
struct nv50_disp *disp = chan->base.disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
|
||||
|
@ -190,7 +190,7 @@ nv50_disp_core_fini(struct nv50_disp_dmac *chan)
|
|||
static int
|
||||
nv50_disp_core_init(struct nv50_disp_dmac *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->base.root->disp;
|
||||
struct nv50_disp *disp = chan->base.disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ nv50_disp_curs_new(const struct nv50_disp_chan_func *func,
|
|||
} else
|
||||
return ret;
|
||||
|
||||
return nv50_disp_chan_new_(func, mthd, root, ctrl + head, user + head,
|
||||
return nv50_disp_chan_new_(func, mthd, disp, ctrl + head, user + head,
|
||||
head, oclass, pobject);
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ int
|
|||
gf119_disp_dmac_bind(struct nv50_disp_dmac *chan,
|
||||
struct nvkm_object *object, u32 handle)
|
||||
{
|
||||
return nvkm_ramht_insert(chan->base.root->disp->ramht, object,
|
||||
return nvkm_ramht_insert(chan->base.disp->ramht, object,
|
||||
chan->base.chid.user, -9, handle,
|
||||
chan->base.chid.user << 27 | 0x00000001);
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ gf119_disp_dmac_bind(struct nv50_disp_dmac *chan,
|
|||
void
|
||||
gf119_disp_dmac_fini(struct nv50_disp_dmac *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->base.root->disp;
|
||||
struct nv50_disp *disp = chan->base.disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
int ctrl = chan->base.chid.ctrl;
|
||||
|
@ -64,7 +64,7 @@ gf119_disp_dmac_fini(struct nv50_disp_dmac *chan)
|
|||
static int
|
||||
gf119_disp_dmac_init(struct nv50_disp_dmac *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->base.root->disp;
|
||||
struct nv50_disp *disp = chan->base.disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
int ctrl = chan->base.chid.ctrl;
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
static int
|
||||
gp102_disp_dmac_init(struct nv50_disp_dmac *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->base.root->disp;
|
||||
struct nv50_disp *disp = chan->base.disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
int ctrl = chan->base.chid.ctrl;
|
||||
|
|
|
@ -56,7 +56,7 @@ nv50_disp_dmac_child_new_(struct nv50_disp_chan *base,
|
|||
void *data, u32 size, struct nvkm_object **pobject)
|
||||
{
|
||||
struct nv50_disp_dmac *chan = nv50_disp_dmac(base);
|
||||
struct nv50_disp *disp = chan->base.root->disp;
|
||||
struct nv50_disp *disp = chan->base.disp;
|
||||
struct nvkm_device *device = disp->base.engine.subdev.device;
|
||||
const struct nvkm_device_oclass *sclass = oclass->priv;
|
||||
struct nv50_disp_dmac_object *object;
|
||||
|
@ -85,7 +85,7 @@ nv50_disp_dmac_child_get_(struct nv50_disp_chan *base, int index,
|
|||
struct nvkm_oclass *sclass)
|
||||
{
|
||||
struct nv50_disp_dmac *chan = nv50_disp_dmac(base);
|
||||
struct nv50_disp *disp = chan->base.root->disp;
|
||||
struct nv50_disp *disp = chan->base.disp;
|
||||
struct nvkm_device *device = disp->base.engine.subdev.device;
|
||||
const struct nvkm_device_oclass *oclass = NULL;
|
||||
|
||||
|
@ -133,7 +133,7 @@ nv50_disp_dmac_func_ = {
|
|||
int
|
||||
nv50_disp_dmac_new_(const struct nv50_disp_dmac_func *func,
|
||||
const struct nv50_disp_chan_mthd *mthd,
|
||||
struct nv50_disp_root *root, int chid, int head, u64 push,
|
||||
struct nv50_disp *disp, int chid, int head, u64 push,
|
||||
const struct nvkm_oclass *oclass,
|
||||
struct nvkm_object **pobject)
|
||||
{
|
||||
|
@ -147,7 +147,7 @@ nv50_disp_dmac_new_(const struct nv50_disp_dmac_func *func,
|
|||
*pobject = &chan->base.object;
|
||||
chan->func = func;
|
||||
|
||||
ret = nv50_disp_chan_ctor(&nv50_disp_dmac_func_, mthd, root,
|
||||
ret = nv50_disp_chan_ctor(&nv50_disp_dmac_func_, mthd, disp,
|
||||
chid, chid, head, oclass, &chan->base);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
@ -177,7 +177,7 @@ int
|
|||
nv50_disp_dmac_bind(struct nv50_disp_dmac *chan,
|
||||
struct nvkm_object *object, u32 handle)
|
||||
{
|
||||
return nvkm_ramht_insert(chan->base.root->disp->ramht, object,
|
||||
return nvkm_ramht_insert(chan->base.disp->ramht, object,
|
||||
chan->base.chid.user, -10, handle,
|
||||
chan->base.chid.user << 28 |
|
||||
chan->base.chid.user);
|
||||
|
@ -186,7 +186,7 @@ nv50_disp_dmac_bind(struct nv50_disp_dmac *chan,
|
|||
static void
|
||||
nv50_disp_dmac_fini(struct nv50_disp_dmac *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->base.root->disp;
|
||||
struct nv50_disp *disp = chan->base.disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
int ctrl = chan->base.chid.ctrl;
|
||||
|
@ -210,7 +210,7 @@ nv50_disp_dmac_fini(struct nv50_disp_dmac *chan)
|
|||
static int
|
||||
nv50_disp_dmac_init(struct nv50_disp_dmac *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->base.root->disp;
|
||||
struct nv50_disp *disp = chan->base.disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
int ctrl = chan->base.chid.ctrl;
|
||||
|
|
|
@ -18,7 +18,7 @@ struct nv50_disp_dmac_func {
|
|||
|
||||
int nv50_disp_dmac_new_(const struct nv50_disp_dmac_func *,
|
||||
const struct nv50_disp_chan_mthd *,
|
||||
struct nv50_disp_root *, int chid, int head, u64 push,
|
||||
struct nv50_disp *, int chid, int head, u64 push,
|
||||
const struct nvkm_oclass *, struct nvkm_object **);
|
||||
|
||||
extern const struct nv50_disp_dmac_func nv50_disp_dmac_func;
|
||||
|
|
|
@ -55,7 +55,7 @@ nv50_disp_oimm_new(const struct nv50_disp_chan_func *func,
|
|||
} else
|
||||
return ret;
|
||||
|
||||
return nv50_disp_chan_new_(func, mthd, root, ctrl + head, user + head,
|
||||
return nv50_disp_chan_new_(func, mthd, disp, ctrl + head, user + head,
|
||||
head, oclass, pobject);
|
||||
}
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ nv50_disp_ovly_new(const struct nv50_disp_dmac_func *func,
|
|||
} else
|
||||
return ret;
|
||||
|
||||
return nv50_disp_dmac_new_(func, mthd, root, chid + head,
|
||||
return nv50_disp_dmac_new_(func, mthd, disp, chid + head,
|
||||
head, push, oclass, pobject);
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
static void
|
||||
gf119_disp_pioc_fini(struct nv50_disp_chan *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->root->disp;
|
||||
struct nv50_disp *disp = chan->disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
int ctrl = chan->chid.ctrl;
|
||||
|
@ -52,7 +52,7 @@ gf119_disp_pioc_fini(struct nv50_disp_chan *chan)
|
|||
static int
|
||||
gf119_disp_pioc_init(struct nv50_disp_chan *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->root->disp;
|
||||
struct nv50_disp *disp = chan->disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
int ctrl = chan->chid.ctrl;
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
static void
|
||||
nv50_disp_pioc_fini(struct nv50_disp_chan *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->root->disp;
|
||||
struct nv50_disp *disp = chan->disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
int ctrl = chan->chid.ctrl;
|
||||
|
@ -48,7 +48,7 @@ nv50_disp_pioc_fini(struct nv50_disp_chan *chan)
|
|||
static int
|
||||
nv50_disp_pioc_init(struct nv50_disp_chan *chan)
|
||||
{
|
||||
struct nv50_disp *disp = chan->root->disp;
|
||||
struct nv50_disp *disp = chan->disp;
|
||||
struct nvkm_subdev *subdev = &disp->base.engine.subdev;
|
||||
struct nvkm_device *device = subdev->device;
|
||||
int ctrl = chan->chid.ctrl;
|
||||
|
|
Loading…
Reference in New Issue