Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b0b78cd authored by Roy Spliet's avatar Roy Spliet Committed by Ben Skeggs
Browse files

drm/nouveau/fb/ramgt215: Restructure r111100 calculation for DDR2



Seems to be mostly equal to DDR3 on < GT218, should improve stability for
DDR2 reclocks.

Signed-off-by: default avatarRoy Spliet <rspliet@eclipso.eu>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent ef6e8f4c
Loading
Loading
Loading
Loading
+34 −30
Original line number Diff line number Diff line
@@ -771,14 +771,21 @@ gt215_ram_calc(struct nvkm_ram *base, u32 freq)
	unk71c  = ram_rd32(fuc, 0x10071c) & ~0x00000100;
	r111100 = ram_rd32(fuc, 0x111100) & ~0x3a800000;

	/* NVA8 seems to skip various bits related to ramcfg_10_02_04 */
	if (device->chipset == 0xa8) {
		r111100 |= 0x08000000;
		if (!next->bios.ramcfg_10_02_04)
			unk714  |= 0x00000010;
	} else {
		if (next->bios.ramcfg_10_02_04) {
			switch (ram->base.type) {
		case NVKM_RAM_TYPE_DDR3:
			if (device->chipset != 0xa8)
				r111100 |= 0x00000004;
			/* no break */
			case NVKM_RAM_TYPE_DDR2:
			r111100 |= 0x08000000;
			case NVKM_RAM_TYPE_DDR3:
				r111100 &= ~0x00000020;
				if (next->bios.ramcfg_10_02_10)
					r111100 |= 0x08000004;
				else
					r111100 |= 0x00000024;
				break;
			default:
				break;
@@ -786,16 +793,12 @@ gt215_ram_calc(struct nvkm_ram *base, u32 freq)
		} else {
			switch (ram->base.type) {
			case NVKM_RAM_TYPE_DDR2:
			r111100 |= 0x1a800000;
			unk714  |= 0x00000010;
			break;
			case NVKM_RAM_TYPE_DDR3:
			if (device->chipset == 0xa8) {
				r111100 |=  0x08000000;
			} else {
				r111100 &= ~0x00000004;
				r111100 &= ~0x00000024;
				r111100 |=  0x12800000;
			}

				if (next->bios.ramcfg_10_02_10)
					r111100 |= 0x08000000;
				unk714  |= 0x00000010;
				break;
			case NVKM_RAM_TYPE_GDDR3:
@@ -806,6 +809,7 @@ gt215_ram_calc(struct nvkm_ram *base, u32 freq)
				break;
			}
		}
	}

	unk714 |= (next->bios.ramcfg_10_04_01) << 8;