summaryrefslogtreecommitdiff
path: root/nvkm
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2014-11-17 22:56:37 +1000
committerBen Skeggs <bskeggs@redhat.com>2014-12-02 15:37:21 +1000
commit508b7c8822e8f9dca4aaea68cbc81ac0133120b1 (patch)
tree877bb41129c3b04f14003c6d98f55806c8775cfb /nvkm
parent4ca2a201caac3d511dda276a26560814592b6148 (diff)
downloadnouveau-508b7c8822e8f9dca4aaea68cbc81ac0133120b1.tar.gz
device: store revision
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'nvkm')
-rw-r--r--nvkm/engine/device/base.c4
-rw-r--r--nvkm/include/core/device.h1
2 files changed, 4 insertions, 1 deletions
diff --git a/nvkm/engine/device/base.c b/nvkm/engine/device/base.c
index 786119e63..9262f2790 100644
--- a/nvkm/engine/device/base.c
+++ b/nvkm/engine/device/base.c
@@ -138,7 +138,7 @@ nouveau_devobj_info(struct nouveau_object *object, void *data, u32 size)
}
args->v0.chipset = device->chipset;
- args->v0.revision = device->chipset >= 0x10 ? nv_rd32(device, 0) : 0x00;
+ args->v0.revision = device->chiprev;
if (pfb) args->v0.ram_size = args->v0.ram_user = pfb->ram->size;
else args->v0.ram_size = args->v0.ram_user = 0;
if (imem) args->v0.ram_user = args->v0.ram_user - imem->reserved;
@@ -354,12 +354,14 @@ nouveau_devobj_ctor(struct nouveau_object *parent,
/* determine chipset and derive architecture from it */
if ((boot0 & 0x1f000000) > 0) {
device->chipset = (boot0 & 0x1ff00000) >> 20;
+ device->chiprev = (boot0 & 0x000000ff);
switch (device->chipset & 0x1f0) {
case 0x010: {
if (0x461 & (1 << (device->chipset & 0xf)))
device->card_type = NV_10;
else
device->card_type = NV_11;
+ device->chiprev = 0x00;
break;
}
case 0x020: device->card_type = NV_20; break;
diff --git a/nvkm/include/core/device.h b/nvkm/include/core/device.h
index 0d839e1dd..0e0ce4366 100644
--- a/nvkm/include/core/device.h
+++ b/nvkm/include/core/device.h
@@ -92,6 +92,7 @@ struct nouveau_device {
GM100 = 0x110,
} card_type;
u32 chipset;
+ u8 chiprev;
u32 crystal;
struct nouveau_oclass *oclass[NVDEV_SUBDEV_NR];