mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
drm/nouveau/core: recognise GA10[024]
GA100 hidden behind a module option, as it's not been as well verified since initial bring-up and may need additional changes. There's no display anyway, so this can wait for a bit. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
caeb6ab899
commit
3b050680c8
5 changed files with 36 additions and 3 deletions
|
@ -33,6 +33,7 @@ struct nv_device_info_v0 {
|
||||||
#define NV_DEVICE_INFO_V0_PASCAL 0x0a
|
#define NV_DEVICE_INFO_V0_PASCAL 0x0a
|
||||||
#define NV_DEVICE_INFO_V0_VOLTA 0x0b
|
#define NV_DEVICE_INFO_V0_VOLTA 0x0b
|
||||||
#define NV_DEVICE_INFO_V0_TURING 0x0c
|
#define NV_DEVICE_INFO_V0_TURING 0x0c
|
||||||
|
#define NV_DEVICE_INFO_V0_AMPERE 0x0d
|
||||||
__u8 family;
|
__u8 family;
|
||||||
__u8 pad06[2];
|
__u8 pad06[2];
|
||||||
__u64 ram_size;
|
__u64 ram_size;
|
||||||
|
|
|
@ -120,6 +120,7 @@ struct nvkm_device {
|
||||||
GP100 = 0x130,
|
GP100 = 0x130,
|
||||||
GV100 = 0x140,
|
GV100 = 0x140,
|
||||||
TU100 = 0x160,
|
TU100 = 0x160,
|
||||||
|
GA100 = 0x170,
|
||||||
} card_type;
|
} card_type;
|
||||||
u32 chipset;
|
u32 chipset;
|
||||||
u8 chiprev;
|
u8 chiprev;
|
||||||
|
|
|
@ -256,6 +256,7 @@ nouveau_backlight_init(struct drm_connector *connector)
|
||||||
case NV_DEVICE_INFO_V0_PASCAL:
|
case NV_DEVICE_INFO_V0_PASCAL:
|
||||||
case NV_DEVICE_INFO_V0_VOLTA:
|
case NV_DEVICE_INFO_V0_VOLTA:
|
||||||
case NV_DEVICE_INFO_V0_TURING:
|
case NV_DEVICE_INFO_V0_TURING:
|
||||||
|
case NV_DEVICE_INFO_V0_AMPERE: //XXX: not confirmed
|
||||||
ret = nv50_backlight_init(nv_encoder, &props, &ops);
|
ret = nv50_backlight_init(nv_encoder, &props, &ops);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -2652,6 +2652,21 @@ nv168_chipset = {
|
||||||
.sec2 = tu102_sec2_new,
|
.sec2 = tu102_sec2_new,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct nvkm_device_chip
|
||||||
|
nv170_chipset = {
|
||||||
|
.name = "GA100",
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct nvkm_device_chip
|
||||||
|
nv172_chipset = {
|
||||||
|
.name = "GA102",
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct nvkm_device_chip
|
||||||
|
nv174_chipset = {
|
||||||
|
.name = "GA104",
|
||||||
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
nvkm_device_event_ctor(struct nvkm_object *object, void *data, u32 size,
|
nvkm_device_event_ctor(struct nvkm_object *object, void *data, u32 size,
|
||||||
struct nvkm_notify *notify)
|
struct nvkm_notify *notify)
|
||||||
|
@ -3063,6 +3078,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
|
||||||
case 0x130: device->card_type = GP100; break;
|
case 0x130: device->card_type = GP100; break;
|
||||||
case 0x140: device->card_type = GV100; break;
|
case 0x140: device->card_type = GV100; break;
|
||||||
case 0x160: device->card_type = TU100; break;
|
case 0x160: device->card_type = TU100; break;
|
||||||
|
case 0x170: device->card_type = GA100; break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -3160,10 +3176,23 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
|
||||||
case 0x166: device->chip = &nv166_chipset; break;
|
case 0x166: device->chip = &nv166_chipset; break;
|
||||||
case 0x167: device->chip = &nv167_chipset; break;
|
case 0x167: device->chip = &nv167_chipset; break;
|
||||||
case 0x168: device->chip = &nv168_chipset; break;
|
case 0x168: device->chip = &nv168_chipset; break;
|
||||||
|
case 0x172: device->chip = &nv172_chipset; break;
|
||||||
|
case 0x174: device->chip = &nv174_chipset; break;
|
||||||
default:
|
default:
|
||||||
nvdev_error(device, "unknown chipset (%08x)\n", boot0);
|
if (nvkm_boolopt(device->cfgopt, "NvEnableUnsupportedChipsets", false)) {
|
||||||
ret = -ENODEV;
|
switch (device->chipset) {
|
||||||
goto done;
|
case 0x170: device->chip = &nv170_chipset; break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!device->chip) {
|
||||||
|
nvdev_error(device, "unknown chipset (%08x)\n", boot0);
|
||||||
|
ret = -ENODEV;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
nvdev_info(device, "NVIDIA %s (%08x)\n",
|
nvdev_info(device, "NVIDIA %s (%08x)\n",
|
||||||
|
|
|
@ -176,6 +176,7 @@ nvkm_udevice_info(struct nvkm_udevice *udev, void *data, u32 size)
|
||||||
case GP100: args->v0.family = NV_DEVICE_INFO_V0_PASCAL; break;
|
case GP100: args->v0.family = NV_DEVICE_INFO_V0_PASCAL; break;
|
||||||
case GV100: args->v0.family = NV_DEVICE_INFO_V0_VOLTA; break;
|
case GV100: args->v0.family = NV_DEVICE_INFO_V0_VOLTA; break;
|
||||||
case TU100: args->v0.family = NV_DEVICE_INFO_V0_TURING; break;
|
case TU100: args->v0.family = NV_DEVICE_INFO_V0_TURING; break;
|
||||||
|
case GA100: args->v0.family = NV_DEVICE_INFO_V0_AMPERE; break;
|
||||||
default:
|
default:
|
||||||
args->v0.family = 0;
|
args->v0.family = 0;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Reference in a new issue