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

Commit 7e22e71e authored by Christoph Bumiller's avatar Christoph Bumiller Committed by Ben Skeggs
Browse files

drm/nvc0-: support NOUVEAU_GETPARAM_GRAPH_UNITS

parent e30441ad
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -46,6 +46,14 @@ struct nv40_graph_chan {
	struct nouveau_graph_chan base;
};

static u64
nv40_graph_units(struct nouveau_graph *graph)
{
	struct nv40_graph_priv *priv = (void *)graph;

	return nv_rd32(priv, 0x1540);
}

/*******************************************************************************
 * Graphics object classes
 ******************************************************************************/
@@ -359,6 +367,8 @@ nv40_graph_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
	else
		nv_engine(priv)->sclass = nv40_graph_sclass;
	nv_engine(priv)->tile_prog = nv40_graph_tile_prog;

	priv->base.units = nv40_graph_units;
	return 0;
}

+10 −0
Original line number Diff line number Diff line
@@ -48,6 +48,14 @@ struct nv50_graph_chan {
	struct nouveau_graph_chan base;
};

static u64
nv50_graph_units(struct nouveau_graph *graph)
{
	struct nv50_graph_priv *priv = (void *)graph;

	return nv_rd32(priv, 0x1540);
}

/*******************************************************************************
 * Graphics object classes
 ******************************************************************************/
@@ -819,6 +827,8 @@ nv50_graph_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
	nv_subdev(priv)->intr = nv50_graph_intr;
	nv_engine(priv)->cclass = &nv50_graph_cclass;

	priv->base.units = nv50_graph_units;

	switch (nv_device(priv)->chipset) {
	case 0x50:
		nv_engine(priv)->sclass = nv50_graph_sclass;
+15 −0
Original line number Diff line number Diff line
@@ -60,6 +60,19 @@ nvc8_graph_sclass[] = {
	{}
};

u64
nvc0_graph_units(struct nouveau_graph *graph)
{
	struct nvc0_graph_priv *priv = (void *)graph;
	u64 cfg;

	cfg  = (u32)priv->gpc_nr;
	cfg |= (u32)priv->tpc_total << 8;
	cfg |= (u64)priv->rop_nr << 32;

	return cfg;
}

/*******************************************************************************
 * PGRAPH context
 ******************************************************************************/
@@ -529,6 +542,8 @@ nvc0_graph_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
	nv_subdev(priv)->intr = nvc0_graph_intr;
	nv_engine(priv)->cclass = &nvc0_graph_cclass;

	priv->base.units = nvc0_graph_units;

	if (nouveau_boolopt(device->cfgopt, "NvGrUseFW", false)) {
		nv_info(priv, "using external firmware\n");
		if (nvc0_graph_ctor_fw(priv, "fuc409c", &priv->fuc409c) ||
+2 −0
Original line number Diff line number Diff line
@@ -169,4 +169,6 @@ int nvc0_graph_context_ctor(struct nouveau_object *, struct nouveau_object *,
			     struct nouveau_object **);
void nvc0_graph_context_dtor(struct nouveau_object *);

u64 nvc0_graph_units(struct nouveau_graph *);

#endif
+2 −0
Original line number Diff line number Diff line
@@ -217,6 +217,8 @@ nve0_graph_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
	nv_engine(priv)->cclass = &nve0_graph_cclass;
	nv_engine(priv)->sclass = nve0_graph_sclass;

	priv->base.units = nvc0_graph_units;

	if (nouveau_boolopt(device->cfgopt, "NvGrUseFW", false)) {
		nv_info(priv, "using external firmware\n");
		if (nvc0_graph_ctor_fw(priv, "fuc409c", &priv->fuc409c) ||
Loading