Browse Source

drm/nouveau: memory type detection for the really old chipsets

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs 13 years ago
parent
commit
ddfd2da484
2 changed files with 13 additions and 0 deletions
  1. 5 0
      drivers/gpu/drm/nouveau/nv04_fb.c
  2. 8 0
      drivers/gpu/drm/nouveau/nv10_fb.c

+ 5 - 0
drivers/gpu/drm/nouveau/nv04_fb.c

@@ -29,6 +29,11 @@ nv04_fb_vram_init(struct drm_device *dev)
 		}
 	}
 
+	if ((boot0 & 0x00000038) <= 0x10)
+		dev_priv->vram_type = NV_MEM_TYPE_SGRAM;
+	else
+		dev_priv->vram_type = NV_MEM_TYPE_SDRAM;
+
 	return 0;
 }
 

+ 8 - 0
drivers/gpu/drm/nouveau/nv10_fb.c

@@ -35,6 +35,14 @@ nv10_fb_vram_init(struct drm_device *dev)
 	u32 fifo_data = nv_rd32(dev, NV04_PFB_FIFO_DATA);
 
 	dev_priv->vram_size = fifo_data & NV10_PFB_FIFO_DATA_RAM_AMOUNT_MB_MASK;
+	if (dev_priv->card_type < NV_20) {
+		u32 cfg0 = nv_rd32(dev, 0x100200);
+		if (cfg0 & 0x00000001)
+			dev_priv->vram_type = NV_MEM_TYPE_DDR1;
+		else
+			dev_priv->vram_type = NV_MEM_TYPE_SDRAM;
+	}
+
 	return 0;
 }