#include <core/engctx.h>
-struct gm204_ce_priv {
- struct nvkm_engine base;
-};
-
/*******************************************************************************
* Copy object classes
******************************************************************************/
static void
gm204_ce_intr(struct nvkm_subdev *subdev)
{
- const int ce = nv_subidx(subdev) - NVDEV_ENGINE_CE0;
- struct gm204_ce_priv *priv = (void *)subdev;
- u32 stat = nv_rd32(priv, 0x104908 + (ce * 0x1000));
+ struct nvkm_device *device = subdev->device;
+ const int idx = nv_subidx(subdev) - NVDEV_ENGINE_CE0;
+ u32 stat = nvkm_rd32(device, 0x104908 + (idx * 0x1000));
if (stat) {
- nv_warn(priv, "unhandled intr 0x%08x\n", stat);
- nv_wr32(priv, 0x104908 + (ce * 0x1000), stat);
+ nvkm_warn(subdev, "intr %08x\n", stat);
+ nvkm_wr32(device, 0x104908 + (idx * 0x1000), stat);
}
}
struct nvkm_oclass *oclass, void *data, u32 size,
struct nvkm_object **pobject)
{
- struct gm204_ce_priv *priv;
+ struct nvkm_engine *ce;
int ret;
ret = nvkm_engine_create(parent, engine, oclass, true,
- "PCE0", "ce0", &priv);
- *pobject = nv_object(priv);
+ "PCE0", "ce0", &ce);
+ *pobject = nv_object(ce);
if (ret)
return ret;
- nv_subdev(priv)->unit = 0x00000040;
- nv_subdev(priv)->intr = gm204_ce_intr;
- nv_engine(priv)->cclass = &gm204_ce_cclass;
- nv_engine(priv)->sclass = gm204_ce_sclass;
+ nv_subdev(ce)->unit = 0x00000040;
+ nv_subdev(ce)->intr = gm204_ce_intr;
+ nv_engine(ce)->cclass = &gm204_ce_cclass;
+ nv_engine(ce)->sclass = gm204_ce_sclass;
return 0;
}
struct nvkm_oclass *oclass, void *data, u32 size,
struct nvkm_object **pobject)
{
- struct gm204_ce_priv *priv;
+ struct nvkm_engine *ce;
int ret;
ret = nvkm_engine_create(parent, engine, oclass, true,
- "PCE1", "ce1", &priv);
- *pobject = nv_object(priv);
+ "PCE1", "ce1", &ce);
+ *pobject = nv_object(ce);
if (ret)
return ret;
- nv_subdev(priv)->unit = 0x00000080;
- nv_subdev(priv)->intr = gm204_ce_intr;
- nv_engine(priv)->cclass = &gm204_ce_cclass;
- nv_engine(priv)->sclass = gm204_ce_sclass;
+ nv_subdev(ce)->unit = 0x00000080;
+ nv_subdev(ce)->intr = gm204_ce_intr;
+ nv_engine(ce)->cclass = &gm204_ce_cclass;
+ nv_engine(ce)->sclass = gm204_ce_sclass;
return 0;
}
struct nvkm_oclass *oclass, void *data, u32 size,
struct nvkm_object **pobject)
{
- struct gm204_ce_priv *priv;
+ struct nvkm_engine *ce;
int ret;
ret = nvkm_engine_create(parent, engine, oclass, true,
- "PCE2", "ce2", &priv);
- *pobject = nv_object(priv);
+ "PCE2", "ce2", &ce);
+ *pobject = nv_object(ce);
if (ret)
return ret;
- nv_subdev(priv)->unit = 0x00200000;
- nv_subdev(priv)->intr = gm204_ce_intr;
- nv_engine(priv)->cclass = &gm204_ce_cclass;
- nv_engine(priv)->sclass = gm204_ce_sclass;
+ nv_subdev(ce)->unit = 0x00200000;
+ nv_subdev(ce)->intr = gm204_ce_intr;
+ nv_engine(ce)->cclass = &gm204_ce_cclass;
+ nv_engine(ce)->sclass = gm204_ce_sclass;
return 0;
}