drm/gf100-/gr: fetch tpcs-per-ppc info on startup
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>wifi-calibration
parent
f331a15f84
commit
b81146b03b
|
@ -113,4 +113,5 @@ gk110b_graph_oclass = &(struct nvc0_graph_oclass) {
|
||||||
.mmio = gk110b_graph_pack_mmio,
|
.mmio = gk110b_graph_pack_mmio,
|
||||||
.fecs.ucode = &nvf0_graph_fecs_ucode,
|
.fecs.ucode = &nvf0_graph_fecs_ucode,
|
||||||
.gpccs.ucode = &nvf0_graph_gpccs_ucode,
|
.gpccs.ucode = &nvf0_graph_gpccs_ucode,
|
||||||
|
.ppc_nr = 2,
|
||||||
}.base;
|
}.base;
|
||||||
|
|
|
@ -44,4 +44,5 @@ gk20a_graph_oclass = &(struct nvc0_graph_oclass) {
|
||||||
.cclass = &gk20a_grctx_oclass,
|
.cclass = &gk20a_grctx_oclass,
|
||||||
.sclass = gk20a_graph_sclass,
|
.sclass = gk20a_graph_sclass,
|
||||||
.mmio = nve4_graph_pack_mmio,
|
.mmio = nve4_graph_pack_mmio,
|
||||||
|
.ppc_nr = 1,
|
||||||
}.base;
|
}.base;
|
||||||
|
|
|
@ -465,4 +465,5 @@ gm107_graph_oclass = &(struct nvc0_graph_oclass) {
|
||||||
.mmio = gm107_graph_pack_mmio,
|
.mmio = gm107_graph_pack_mmio,
|
||||||
.fecs.ucode = 0 ? &gm107_graph_fecs_ucode : NULL,
|
.fecs.ucode = 0 ? &gm107_graph_fecs_ucode : NULL,
|
||||||
.gpccs.ucode = &gm107_graph_gpccs_ucode,
|
.gpccs.ucode = &gm107_graph_gpccs_ucode,
|
||||||
|
.ppc_nr = 2,
|
||||||
}.base;
|
}.base;
|
||||||
|
|
|
@ -220,4 +220,5 @@ nv108_graph_oclass = &(struct nvc0_graph_oclass) {
|
||||||
.mmio = nv108_graph_pack_mmio,
|
.mmio = nv108_graph_pack_mmio,
|
||||||
.fecs.ucode = &nv108_graph_fecs_ucode,
|
.fecs.ucode = &nv108_graph_fecs_ucode,
|
||||||
.gpccs.ucode = &nv108_graph_gpccs_ucode,
|
.gpccs.ucode = &nv108_graph_gpccs_ucode,
|
||||||
|
.ppc_nr = 1,
|
||||||
}.base;
|
}.base;
|
||||||
|
|
|
@ -1503,7 +1503,7 @@ nvc0_graph_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
|
||||||
struct nouveau_device *device = nv_device(parent);
|
struct nouveau_device *device = nv_device(parent);
|
||||||
struct nvc0_graph_priv *priv;
|
struct nvc0_graph_priv *priv;
|
||||||
bool use_ext_fw, enable;
|
bool use_ext_fw, enable;
|
||||||
int ret, i;
|
int ret, i, j;
|
||||||
|
|
||||||
use_ext_fw = nouveau_boolopt(device->cfgopt, "NvGrUseFW",
|
use_ext_fw = nouveau_boolopt(device->cfgopt, "NvGrUseFW",
|
||||||
oclass->fecs.ucode == NULL);
|
oclass->fecs.ucode == NULL);
|
||||||
|
@ -1549,6 +1549,11 @@ nvc0_graph_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
|
||||||
for (i = 0; i < priv->gpc_nr; i++) {
|
for (i = 0; i < priv->gpc_nr; i++) {
|
||||||
priv->tpc_nr[i] = nv_rd32(priv, GPC_UNIT(i, 0x2608));
|
priv->tpc_nr[i] = nv_rd32(priv, GPC_UNIT(i, 0x2608));
|
||||||
priv->tpc_total += priv->tpc_nr[i];
|
priv->tpc_total += priv->tpc_nr[i];
|
||||||
|
priv->ppc_nr[i] = oclass->ppc_nr;
|
||||||
|
for (j = 0; j < priv->ppc_nr[i]; j++) {
|
||||||
|
u8 mask = nv_rd32(priv, GPC_UNIT(i, 0x0c30 + (j * 4)));
|
||||||
|
priv->ppc_tpc_nr[i][j] = hweight8(mask);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*XXX: these need figuring out... though it might not even matter */
|
/*XXX: these need figuring out... though it might not even matter */
|
||||||
|
|
|
@ -101,6 +101,8 @@ struct nvc0_graph_priv {
|
||||||
u8 gpc_nr;
|
u8 gpc_nr;
|
||||||
u8 tpc_nr[GPC_MAX];
|
u8 tpc_nr[GPC_MAX];
|
||||||
u8 tpc_total;
|
u8 tpc_total;
|
||||||
|
u8 ppc_nr[GPC_MAX];
|
||||||
|
u8 ppc_tpc_nr[GPC_MAX][4];
|
||||||
|
|
||||||
struct nouveau_gpuobj *unk4188b4;
|
struct nouveau_gpuobj *unk4188b4;
|
||||||
struct nouveau_gpuobj *unk4188b8;
|
struct nouveau_gpuobj *unk4188b8;
|
||||||
|
@ -189,6 +191,7 @@ struct nvc0_graph_oclass {
|
||||||
struct {
|
struct {
|
||||||
struct nvc0_graph_ucode *ucode;
|
struct nvc0_graph_ucode *ucode;
|
||||||
} gpccs;
|
} gpccs;
|
||||||
|
int ppc_nr;
|
||||||
};
|
};
|
||||||
|
|
||||||
void nvc0_graph_mmio(struct nvc0_graph_priv *, const struct nvc0_graph_pack *);
|
void nvc0_graph_mmio(struct nvc0_graph_priv *, const struct nvc0_graph_pack *);
|
||||||
|
|
|
@ -133,4 +133,5 @@ nvd7_graph_oclass = &(struct nvc0_graph_oclass) {
|
||||||
.mmio = nvd7_graph_pack_mmio,
|
.mmio = nvd7_graph_pack_mmio,
|
||||||
.fecs.ucode = &nvd7_graph_fecs_ucode,
|
.fecs.ucode = &nvd7_graph_fecs_ucode,
|
||||||
.gpccs.ucode = &nvd7_graph_gpccs_ucode,
|
.gpccs.ucode = &nvd7_graph_gpccs_ucode,
|
||||||
|
.ppc_nr = 1,
|
||||||
}.base;
|
}.base;
|
||||||
|
|
|
@ -343,4 +343,5 @@ nve4_graph_oclass = &(struct nvc0_graph_oclass) {
|
||||||
.mmio = nve4_graph_pack_mmio,
|
.mmio = nve4_graph_pack_mmio,
|
||||||
.fecs.ucode = &nve4_graph_fecs_ucode,
|
.fecs.ucode = &nve4_graph_fecs_ucode,
|
||||||
.gpccs.ucode = &nve4_graph_gpccs_ucode,
|
.gpccs.ucode = &nve4_graph_gpccs_ucode,
|
||||||
|
.ppc_nr = 1,
|
||||||
}.base;
|
}.base;
|
||||||
|
|
|
@ -241,4 +241,5 @@ nvf0_graph_oclass = &(struct nvc0_graph_oclass) {
|
||||||
.mmio = nvf0_graph_pack_mmio,
|
.mmio = nvf0_graph_pack_mmio,
|
||||||
.fecs.ucode = &nvf0_graph_fecs_ucode,
|
.fecs.ucode = &nvf0_graph_fecs_ucode,
|
||||||
.gpccs.ucode = &nvf0_graph_gpccs_ucode,
|
.gpccs.ucode = &nvf0_graph_gpccs_ucode,
|
||||||
|
.ppc_nr = 2,
|
||||||
}.base;
|
}.base;
|
||||||
|
|
Loading…
Reference in New Issue