drm/nouveau: use static vidshift of 2 on volt 0x30 tables
authorBen Skeggs <bskeggs@redhat.com>
Thu, 31 Mar 2011 00:39:44 +0000 (10:39 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Mon, 16 May 2011 00:47:47 +0000 (10:47 +1000)
Explanation is in the commit.  If anyone has an example of where this is
*not* the case, please report it!

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nouveau_volt.c

index 04fdc00a67d540324bb8a5ef4ee4fcf0d9b1ecfa..75e872741d9218c91aeb49c46dfd7f3f6268cdf2 100644 (file)
@@ -159,8 +159,16 @@ nouveau_volt_init(struct drm_device *dev)
                headerlen = volt[1];
                recordlen = volt[2];
                entries   = volt[3];
-               vidshift  = hweight8(volt[5]);
                vidmask   = volt[4];
+               /* no longer certain what volt[5] is, if it's related to
+                * the vid shift then it's definitely not a function of
+                * how many bits are set.
+                *
+                * after looking at a number of nva3+ vbios images, they
+                * all seem likely to have a static shift of 2.. lets
+                * go with that for now until proven otherwise.
+                */
+               vidshift  = 2;
                break;
        default:
                NV_WARN(dev, "voltage table 0x%02x unknown\n", volt[0]);