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

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

drm/nvc0/vram: skip disabled PBFB subunits



Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 2bfa7482
Loading
Loading
Loading
Loading
+9 −5
Original line number Original line Diff line number Diff line
@@ -110,22 +110,26 @@ nvc0_vram_init(struct drm_device *dev)
	u32 bsize = nv_rd32(dev, 0x10f20c);
	u32 bsize = nv_rd32(dev, 0x10f20c);
	u32 offset, length;
	u32 offset, length;
	bool uniform = true;
	bool uniform = true;
	int ret, i;
	int ret, part;


	NV_DEBUG(dev, "0x100800: 0x%08x\n", nv_rd32(dev, 0x100800));
	NV_DEBUG(dev, "0x100800: 0x%08x\n", nv_rd32(dev, 0x100800));
	NV_DEBUG(dev, "parts 0x%08x bcast_mem_amount 0x%08x\n", parts, bsize);
	NV_DEBUG(dev, "parts 0x%08x bcast_mem_amount 0x%08x\n", parts, bsize);


	/* read amount of vram attached to each memory controller */
	/* read amount of vram attached to each memory controller */
	for (i = 0; i < parts; i++) {
	part = 0;
		u32 psize = nv_rd32(dev, 0x11020c + (i * 0x1000));
	while (parts) {
		u32 psize = nv_rd32(dev, 0x11020c + (part++ * 0x1000));
		if (psize == 0)
			continue;
		parts--;

		if (psize != bsize) {
		if (psize != bsize) {
			if (psize < bsize)
			if (psize < bsize)
				bsize = psize;
				bsize = psize;
			uniform = false;
			uniform = false;
		}
		}


		NV_DEBUG(dev, "%d: mem_amount 0x%08x\n", i, psize);
		NV_DEBUG(dev, "%d: mem_amount 0x%08x\n", part, psize);

		dev_priv->vram_size += (u64)psize << 20;
		dev_priv->vram_size += (u64)psize << 20;
	}
	}