Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 43598875 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/core: implement shortcut for simple engctx construction



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent e5e454f9
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -189,6 +189,21 @@ nouveau_engctx_fini(struct nouveau_engctx *engctx, bool suspend)
	return nouveau_gpuobj_fini(&engctx->base, suspend);
}

int
_nouveau_engctx_ctor(struct nouveau_object *parent,
		     struct nouveau_object *engine,
		     struct nouveau_oclass *oclass, void *data, u32 size,
		     struct nouveau_object **pobject)
{
	struct nouveau_engctx *engctx;
	int ret;

	ret = nouveau_engctx_create(parent, engine, oclass, NULL, 256, 256,
				    NVOBJ_FLAG_ZERO_ALLOC, &engctx);
	*pobject = nv_object(engctx);
	return ret;
}

void
_nouveau_engctx_dtor(struct nouveau_object *object)
{
+1 −23
Original line number Diff line number Diff line
@@ -38,10 +38,6 @@ struct nva3_copy_priv {
	struct nouveau_falcon base;
};

struct nva3_copy_chan {
	struct nouveau_falcon_chan base;
};

/*******************************************************************************
 * Copy object classes
 ******************************************************************************/
@@ -56,29 +52,11 @@ nva3_copy_sclass[] = {
 * PCOPY context
 ******************************************************************************/

static int
nva3_copy_context_ctor(struct nouveau_object *parent,
		       struct nouveau_object *engine,
		       struct nouveau_oclass *oclass, void *data, u32 size,
		       struct nouveau_object **pobject)
{
	struct nva3_copy_chan *priv;
	int ret;

	ret = nouveau_falcon_context_create(parent, engine, oclass, NULL, 256,
					    0, NVOBJ_FLAG_ZERO_ALLOC, &priv);
	*pobject = nv_object(priv);
	if (ret)
		return ret;

	return 0;
}

static struct nouveau_oclass
nva3_copy_cclass = {
	.handle = NV_ENGCTX(COPY0, 0xa3),
	.ofuncs = &(struct nouveau_ofuncs) {
		.ctor = nva3_copy_context_ctor,
		.ctor = _nouveau_falcon_context_ctor,
		.dtor = _nouveau_falcon_context_dtor,
		.init = _nouveau_falcon_context_init,
		.fini = _nouveau_falcon_context_fini,
+1 −23
Original line number Diff line number Diff line
@@ -35,10 +35,6 @@ struct nvc0_copy_priv {
	struct nouveau_falcon base;
};

struct nvc0_copy_chan {
	struct nouveau_falcon_chan base;
};

/*******************************************************************************
 * Copy object classes
 ******************************************************************************/
@@ -59,27 +55,9 @@ nvc0_copy1_sclass[] = {
 * PCOPY context
 ******************************************************************************/

static int
nvc0_copy_context_ctor(struct nouveau_object *parent,
		       struct nouveau_object *engine,
		       struct nouveau_oclass *oclass, void *data, u32 size,
		       struct nouveau_object **pobject)
{
	struct nvc0_copy_chan *priv;
	int ret;

	ret = nouveau_falcon_context_create(parent, engine, oclass, NULL, 256,
					    256, NVOBJ_FLAG_ZERO_ALLOC, &priv);
	*pobject = nv_object(priv);
	if (ret)
		return ret;

	return 0;
}

static struct nouveau_ofuncs
nvc0_copy_context_ofuncs = {
	.ctor = nvc0_copy_context_ctor,
	.ctor = _nouveau_falcon_context_ctor,
	.dtor = _nouveau_falcon_context_dtor,
	.init = _nouveau_falcon_context_init,
	.fini = _nouveau_falcon_context_fini,
+1 −23
Original line number Diff line number Diff line
@@ -33,10 +33,6 @@ struct nve0_copy_priv {
	struct nouveau_engine base;
};

struct nve0_copy_chan {
	struct nouveau_engctx base;
};

/*******************************************************************************
 * Copy object classes
 ******************************************************************************/
@@ -51,27 +47,9 @@ nve0_copy_sclass[] = {
 * PCOPY context
 ******************************************************************************/

static int
nve0_copy_context_ctor(struct nouveau_object *parent,
		       struct nouveau_object *engine,
		       struct nouveau_oclass *oclass, void *data, u32 size,
		       struct nouveau_object **pobject)
{
	struct nve0_copy_chan *priv;
	int ret;

	ret = nouveau_engctx_create(parent, engine, oclass, NULL, 256,
				    256, NVOBJ_FLAG_ZERO_ALLOC, &priv);
	*pobject = nv_object(priv);
	if (ret)
		return ret;

	return 0;
}

static struct nouveau_ofuncs
nve0_copy_context_ofuncs = {
	.ctor = nve0_copy_context_ctor,
	.ctor = _nouveau_engctx_ctor,
	.dtor = _nouveau_engctx_dtor,
	.init = _nouveau_engctx_init,
	.fini = _nouveau_engctx_fini,
+1 −23
Original line number Diff line number Diff line
@@ -37,10 +37,6 @@ struct nv84_crypt_priv {
	struct nouveau_engine base;
};

struct nv84_crypt_chan {
	struct nouveau_engctx base;
};

/*******************************************************************************
 * Crypt object classes
 ******************************************************************************/
@@ -87,29 +83,11 @@ nv84_crypt_sclass[] = {
 * PCRYPT context
 ******************************************************************************/

static int
nv84_crypt_context_ctor(struct nouveau_object *parent,
			struct nouveau_object *engine,
			struct nouveau_oclass *oclass, void *data, u32 size,
			struct nouveau_object **pobject)
{
	struct nv84_crypt_chan *priv;
	int ret;

	ret = nouveau_engctx_create(parent, engine, oclass, NULL, 256,
				    0, NVOBJ_FLAG_ZERO_ALLOC, &priv);
	*pobject = nv_object(priv);
	if (ret)
		return ret;

	return 0;
}

static struct nouveau_oclass
nv84_crypt_cclass = {
	.handle = NV_ENGCTX(CRYPT, 0x84),
	.ofuncs = &(struct nouveau_ofuncs) {
		.ctor = nv84_crypt_context_ctor,
		.ctor = _nouveau_engctx_ctor,
		.dtor = _nouveau_engctx_dtor,
		.init = _nouveau_engctx_init,
		.fini = _nouveau_engctx_fini,
Loading