drm/nvc0/vram: skip disabled PBFB subunits
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user