Commit 3b050680 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

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: default avatarBen Skeggs <bskeggs@redhat.com>
parent caeb6ab8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ struct nv_device_info_v0 {
#define NV_DEVICE_INFO_V0_PASCAL                                           0x0a
#define NV_DEVICE_INFO_V0_VOLTA                                            0x0b
#define NV_DEVICE_INFO_V0_TURING                                           0x0c
#define NV_DEVICE_INFO_V0_AMPERE                                           0x0d
	__u8  family;
	__u8  pad06[2];
	__u64 ram_size;
+1 −0
Original line number Diff line number Diff line
@@ -120,6 +120,7 @@ struct nvkm_device {
		GP100    = 0x130,
		GV100    = 0x140,
		TU100    = 0x160,
		GA100    = 0x170,
	} card_type;
	u32 chipset;
	u8  chiprev;
+1 −0
Original line number Diff line number Diff line
@@ -256,6 +256,7 @@ nouveau_backlight_init(struct drm_connector *connector)
	case NV_DEVICE_INFO_V0_PASCAL:
	case NV_DEVICE_INFO_V0_VOLTA:
	case NV_DEVICE_INFO_V0_TURING:
	case NV_DEVICE_INFO_V0_AMPERE: //XXX: not confirmed
		ret = nv50_backlight_init(nv_encoder, &props, &ops);
		break;
	default:
+32 −3
Original line number Diff line number Diff line
@@ -2652,6 +2652,21 @@ nv168_chipset = {
	.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
nvkm_device_event_ctor(struct nvkm_object *object, void *data, u32 size,
		       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 0x140: device->card_type = GV100; break;
			case 0x160: device->card_type = TU100; break;
			case 0x170: device->card_type = GA100; break;
			default:
				break;
			}
@@ -3160,11 +3176,24 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
		case 0x166: device->chip = &nv166_chipset; break;
		case 0x167: device->chip = &nv167_chipset; break;
		case 0x168: device->chip = &nv168_chipset; break;
		case 0x172: device->chip = &nv172_chipset; break;
		case 0x174: device->chip = &nv174_chipset; break;
		default:
			if (nvkm_boolopt(device->cfgopt, "NvEnableUnsupportedChipsets", false)) {
				switch (device->chipset) {
				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",
			   device->chip->name, boot0);
+1 −0
Original line number Diff line number Diff line
@@ -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 GV100: args->v0.family = NV_DEVICE_INFO_V0_VOLTA; break;
	case TU100: args->v0.family = NV_DEVICE_INFO_V0_TURING; break;
	case GA100: args->v0.family = NV_DEVICE_INFO_V0_AMPERE; break;
	default:
		args->v0.family = 0;
		break;