Commit 1a894c06 authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/fb/gddr5: make sure we update mr7 when we're supposed to

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent a8ccbb77
...@@ -25,6 +25,14 @@ ...@@ -25,6 +25,14 @@
#include <subdev/bios.h> #include <subdev/bios.h>
#include "priv.h" #include "priv.h"
/* binary driver only executes this path if the condition (a) is true
* for any configuration (combination of rammap+ramcfg+timing) that
* can be reached on a given card. for now, we will execute the branch
* unconditionally in the hope that a "false everywhere" in the bios
* tables doesn't actually mean "don't touch this".
*/
#define NOTE00(a) 1
int int
nouveau_gddr5_calc(struct nouveau_ram *ram, bool nuts) nouveau_gddr5_calc(struct nouveau_ram *ram, bool nuts)
{ {
...@@ -99,10 +107,11 @@ nouveau_gddr5_calc(struct nouveau_ram *ram, bool nuts) ...@@ -99,10 +107,11 @@ nouveau_gddr5_calc(struct nouveau_ram *ram, bool nuts)
ram->mr[6] |= (vo & 0xff) << 4; ram->mr[6] |= (vo & 0xff) << 4;
ram->mr[6] |= (pd & 0x01) << 0; ram->mr[6] |= (pd & 0x01) << 0;
if (!(ram->mr[7] & 0x100)) if (NOTE00(vr)) {
vr = 0; /* binary driver does this.. bug? */ ram->mr[7] &= ~0x300;
ram->mr[7] &= ~0x388; ram->mr[7] |= (vr & 0x03) << 8;
ram->mr[7] |= (vr & 0x03) << 8; }
ram->mr[7] &= ~0x088;
ram->mr[7] |= (vh & 0x01) << 7; ram->mr[7] |= (vh & 0x01) << 7;
ram->mr[7] |= (lf & 0x01) << 3; ram->mr[7] |= (lf & 0x01) << 3;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment