tFAW, tCKE, tXPDLL, derived from datasheets. Merge skeggsb's: "bios/rammap: make unknown timing 1.0 fields match 2.0's naming"
Signed-off-by: Roy Spliet <nouv...@spliet.org> --- .../drm/nouveau/include/nvkm/subdev/bios/ramcfg.h | 12 +++---- drivers/gpu/drm/nouveau/nvkm/subdev/bios/timing.c | 42 +++++++++++----------- drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgt215.c | 14 ++++---- drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv50.c | 6 ++-- 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/ramcfg.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/ramcfg.h index dca6c06..d8a7c04 100644 --- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/ramcfg.h +++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/ramcfg.h @@ -127,17 +127,17 @@ struct nvbios_ramcfg { unsigned timing_10_RCDRD:8; unsigned timing_10_RCDWR:8; unsigned timing_10_RRD:8; - unsigned timing_10_13:8; + unsigned timing_10_XPDLL:8; unsigned timing_10_ODT:3; /* empty: 15 */ - unsigned timing_10_16:8; + unsigned timing_10_10:8; /* empty: 17 */ - unsigned timing_10_18:8; + unsigned timing_10_12:8; unsigned timing_10_CWL:8; - unsigned timing_10_20:8; - unsigned timing_10_21:8; + unsigned timing_10_FAW:8; + unsigned timing_10_CKE:8; /* empty: 22, 23 */ - unsigned timing_10_24:8; + unsigned timing_10_18:8; }; struct { unsigned timing_20_2e_03:2; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/timing.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/timing.c index 7e83c39..c36be13 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/timing.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/timing.c @@ -100,34 +100,34 @@ nvbios_timingEp(struct nvkm_bios *bios, int idx, p->timing_10_RCDRD = nvbios_rd08(bios, data + 0x0a); p->timing_10_RCDWR = nvbios_rd08(bios, data + 0x0b); p->timing_10_RRD = nvbios_rd08(bios, data + 0x0c); - p->timing_10_13 = nvbios_rd08(bios, data + 0x0d); + p->timing_10_XPDLL = nvbios_rd08(bios, data + 0x0d); p->timing_10_ODT = nvbios_rd08(bios, data + 0x0e) & 0x07; if (p->ramcfg_ver >= 0x10) p->ramcfg_RON = nvbios_rd08(bios, data + 0x0e) & 0x07; - p->timing_10_24 = 0xff; - p->timing_10_21 = 0; - p->timing_10_20 = 0; + p->timing_10_18 = 0xff; + p->timing_10_CKE = 0; + p->timing_10_FAW = 0; p->timing_10_CWL = 0; - p->timing_10_18 = 0; - p->timing_10_16 = 0; + p->timing_10_12 = 0; + p->timing_10_10 = 0; - switch (min_t(u8, *hdr, 25)) { - case 25: - p->timing_10_24 = nvbios_rd08(bios, data + 0x18); - case 24: - case 23: - case 22: - p->timing_10_21 = nvbios_rd08(bios, data + 0x15); - case 21: - p->timing_10_20 = nvbios_rd08(bios, data + 0x14); - case 20: + switch (min_t(u8, *hdr, 0x19)) { + case 0x19: + p->timing_10_18 = nvbios_rd08(bios, data + 0x18); + case 0x18: + case 0x17: + case 0x16: + p->timing_10_CKE = nvbios_rd08(bios, data + 0x15); + case 0x15: + p->timing_10_FAW = nvbios_rd08(bios, data + 0x14); + case 0x14: p->timing_10_CWL = nvbios_rd08(bios, data + 0x13); - case 19: - p->timing_10_18 = nvbios_rd08(bios, data + 0x12); - case 18: - case 17: - p->timing_10_16 = nvbios_rd08(bios, data + 0x10); + case 0x13: + p->timing_10_12 = nvbios_rd08(bios, data + 0x12); + case 0x12: + case 0x11: + p->timing_10_10 = nvbios_rd08(bios, data + 0x10); } break; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgt215.c b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgt215.c index f106643..dd80de1 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgt215.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgt215.c @@ -373,7 +373,7 @@ gt215_ram_timing_calc(struct gt215_ram *ram, u32 *timing) timing[0] = (T(RP) << 24 | T(RAS) << 16 | T(RFC) << 8 | T(RC)); timing[1] = (T(WR) + 1 + T(CWL)) << 24 | - max_t(u8,T(18), 1) << 16 | + max_t(u8,T(12), 1) << 16 | (T(WTR) + 1 + T(CWL)) << 8 | (5 + T(CL) - T(CWL)); timing[2] = (T(CWL) - 1) << 24 | @@ -384,10 +384,10 @@ gt215_ram_timing_calc(struct gt215_ram *ram, u32 *timing) (0x30 + T(CL)) << 24 | (0xb + T(CL)) << 8 | (T(CL) - 1); - timing[4] = T(20) << 24 | - T(21) << 16 | - T(13) << 8 | - T(13); + timing[4] = T(FAW) << 24 | + T(CKE) << 16 | + T(XPDLL) << 8 | + T(XPDLL); timing[5] = T(RFC) << 24 | max_t(u8,T(RCDRD), T(RCDWR)) << 16 | max_t(u8, (T(CWL) + 6), (T(CL) + 2)) << 8 | @@ -819,9 +819,9 @@ gt215_ram_calc(struct nvkm_ram *base, u32 freq) unk718 |= 0x00000100; if (next->bios.ramcfg_10_02_01) unk71c |= 0x00000100; - if (next->bios.timing_10_24 != 0xff) { + if (next->bios.timing_10_18 != 0xff) { unk718 &= ~0xf0000000; - unk718 |= next->bios.timing_10_24 << 28; + unk718 |= next->bios.timing_10_18 << 28; } if (next->bios.ramcfg_10_02_10) r111100 &= ~0x04020000; diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv50.c b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv50.c index 87bde8f..54d37f3 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv50.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramnv50.c @@ -108,7 +108,7 @@ nv50_ram_timing_calc(struct nv50_ram *ram, u32 *timing) timing[0] = (T(RP) << 24 | T(RAS) << 16 | T(RFC) << 8 | T(RC)); timing[1] = (T(WR) + 1 + T(CWL)) << 24 | - max_t(u8, T(18), 1) << 16 | + max_t(u8, T(12), 1) << 16 | (T(WTR) + 1 + T(CWL)) << 8 | (3 + T(CL) - T(CWL)); timing[2] = (T(CWL) - 1) << 24 | @@ -120,8 +120,8 @@ nv50_ram_timing_calc(struct nv50_ram *ram, u32 *timing) (T(CL) - 1) << 8 | (T(CL) - 1); timing[4] = (cur4 & 0xffff0000) | - T(13) << 8 | - T(13); + T(XPDLL) << 8 | + T(XPDLL); timing[5] = T(RFC) << 24 | max_t(u8, T(RCDRD), T(RCDWR)) << 16 | T(RP); -- 2.9.3 _______________________________________________ Nouveau mailing list Nouveau@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/nouveau