mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-29 23:53:32 +00:00
drm/nouveau/bios/rammap: Parse perf mode as if it's a rammap entry
Some of the bits in there are similar to the bits in the gt215 rammap. Signed-off-by: Roy Spliet <rspliet@eclipso.eu> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
35fe024acf
commit
2813e19f13
4 changed files with 24 additions and 0 deletions
|
@ -6,6 +6,11 @@ struct nvbios_ramcfg {
|
|||
unsigned rammap_min;
|
||||
unsigned rammap_max;
|
||||
union {
|
||||
struct {
|
||||
unsigned rammap_00_16_20:1;
|
||||
unsigned rammap_00_16_40:1;
|
||||
unsigned rammap_00_17_02:1;
|
||||
};
|
||||
struct {
|
||||
unsigned rammap_10_04_02:1;
|
||||
unsigned rammap_10_04_08:1;
|
||||
|
|
|
@ -7,6 +7,8 @@ u32 nvbios_rammapTe(struct nvkm_bios *, u8 *ver, u8 *hdr,
|
|||
|
||||
u32 nvbios_rammapEe(struct nvkm_bios *, int idx,
|
||||
u8 *ver, u8 *hdr, u8 *cnt, u8 *len);
|
||||
u32 nvbios_rammapEp_from_perf(struct nvkm_bios *bios, u32 data, u8 size,
|
||||
struct nvbios_ramcfg *p);
|
||||
u32 nvbios_rammapEp(struct nvkm_bios *, int idx,
|
||||
u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_ramcfg *);
|
||||
u32 nvbios_rammapEm(struct nvkm_bios *, u16 mhz,
|
||||
|
|
|
@ -72,6 +72,21 @@ nvbios_rammapEe(struct nvkm_bios *bios, int idx,
|
|||
return 0x0000;
|
||||
}
|
||||
|
||||
/* Pretend a performance mode is also a rammap entry, helps coalesce entries
|
||||
* later on */
|
||||
u32
|
||||
nvbios_rammapEp_from_perf(struct nvkm_bios *bios, u32 data, u8 size,
|
||||
struct nvbios_ramcfg *p)
|
||||
{
|
||||
memset(p, 0x00, sizeof(*p));
|
||||
|
||||
p->rammap_00_16_20 = (nv_ro08(bios, data + 0x16) & 0x20) >> 5;
|
||||
p->rammap_00_16_40 = (nv_ro08(bios, data + 0x16) & 0x40) >> 6;
|
||||
p->rammap_00_17_02 = (nv_ro08(bios, data + 0x17) & 0x02) >> 1;
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
u32
|
||||
nvbios_rammapEp(struct nvkm_bios *bios, int idx,
|
||||
u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_ramcfg *p)
|
||||
|
|
|
@ -169,6 +169,8 @@ nv50_ram_calc(struct nvkm_fb *pfb, u32 freq)
|
|||
}
|
||||
} while (perfE.memory < freq);
|
||||
|
||||
nvbios_rammapEp_from_perf(bios, data, hdr, &next->bios);
|
||||
|
||||
/* locate specific data set for the attached memory */
|
||||
strap = nvbios_ramcfg_index(nv_subdev(pfb));
|
||||
if (strap >= cnt) {
|
||||
|
|
Loading…
Reference in a new issue