drm/nouveau/core: recognise gv100
authorBen Skeggs <bskeggs@redhat.com>
Tue, 8 May 2018 10:39:47 +0000 (20:39 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 18 May 2018 05:01:31 +0000 (15:01 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/include/nvif/cl0080.h
drivers/gpu/drm/nouveau/include/nvkm/core/device.h
drivers/gpu/drm/nouveau/nouveau_abi16.c
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
drivers/gpu/drm/nouveau/nvkm/engine/device/user.c

index 49c1c90d2bde0f12bbc1bf2715ae824c51b9a3c5..4f5233107f5f83d4ea2abbf8a639278f6588e577 100644 (file)
@@ -31,6 +31,7 @@ struct nv_device_info_v0 {
 #define NV_DEVICE_INFO_V0_KEPLER                                           0x08
 #define NV_DEVICE_INFO_V0_MAXWELL                                          0x09
 #define NV_DEVICE_INFO_V0_PASCAL                                           0x0a
+#define NV_DEVICE_INFO_V0_VOLTA                                            0x0b
        __u8  family;
        __u8  pad06[2];
        __u64 ram_size;
index 08c52e3afc0309fde99446b6ec221e86dccb9718..d83d834b745217940a9125c8ce99930aad6ac79a 100644 (file)
@@ -113,6 +113,7 @@ struct nvkm_device {
                NV_E0    = 0xe0,
                GM100    = 0x110,
                GP100    = 0x130,
+               GV100    = 0x140,
        } card_type;
        u32 chipset;
        u8  chiprev;
index ea2472770b21bed407cfc1de27fbd1bc639b80de..e2211bb2cf79e8affb9d8ca06b7f4b8e7d2c74d0 100644 (file)
@@ -103,6 +103,7 @@ nouveau_abi16_swclass(struct nouveau_drm *drm)
        case NV_DEVICE_INFO_V0_KEPLER:
        case NV_DEVICE_INFO_V0_MAXWELL:
        case NV_DEVICE_INFO_V0_PASCAL:
+       case NV_DEVICE_INFO_V0_VOLTA:
                return NVIF_CLASS_SW_GF100;
        }
 
index b9b6bef3b805e1f539e2d972fcef8fb8720909de..e0e4d286f7e6cbc922c80394d48081c1047855db 100644 (file)
@@ -2394,6 +2394,11 @@ nv13b_chipset = {
        .sw = gf100_sw_new,
 };
 
+static const struct nvkm_device_chip
+nv140_chipset = {
+       .name = "GV100",
+};
+
 static int
 nvkm_device_event_ctor(struct nvkm_object *object, void *data, u32 size,
                       struct nvkm_notify *notify)
@@ -2750,6 +2755,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
                        case 0x110:
                        case 0x120: device->card_type = GM100; break;
                        case 0x130: device->card_type = GP100; break;
+                       case 0x140: device->card_type = GV100; break;
                        default:
                                break;
                        }
@@ -2841,6 +2847,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
                case 0x137: device->chip = &nv137_chipset; break;
                case 0x138: device->chip = &nv138_chipset; break;
                case 0x13b: device->chip = &nv13b_chipset; break;
+               case 0x140: device->chip = &nv140_chipset; break;
                default:
                        nvdev_error(device, "unknown chipset (%08x)\n", boot0);
                        goto done;
index 600bdb8704627665ffdd48fc27662b041e4178d4..dde6bbafa709f781e776434c374664dff037c9a6 100644 (file)
@@ -174,6 +174,7 @@ nvkm_udevice_info(struct nvkm_udevice *udev, void *data, u32 size)
        case NV_E0: args->v0.family = NV_DEVICE_INFO_V0_KEPLER; break;
        case GM100: args->v0.family = NV_DEVICE_INFO_V0_MAXWELL; break;
        case GP100: args->v0.family = NV_DEVICE_INFO_V0_PASCAL; break;
+       case GV100: args->v0.family = NV_DEVICE_INFO_V0_VOLTA; break;
        default:
                args->v0.family = 0;
                break;