[Nouveau] [PATCH 01/13] nvkm/bios: Give timings a name
Roy Spliet
nouveau at spliet.org
Mon Apr 10 19:50:38 UTC 2017
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 <nouveau at 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
More information about the Nouveau
mailing list