From 8bba8896a671f8c479d8bae8c179e6854b704e7a Mon Sep 17 00:00:00 2001 From: Ben Skeggs Date: Mon, 20 Sep 2010 10:38:30 +1000 Subject: [PATCH] --- yaml --- r: 218209 b: refs/heads/master c: dc7339df11bc7a90268929e57e13a14951343cc3 h: refs/heads/master i: 218207: af2ea0556c2a7c99cb611169b9dcfb80ac785691 v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/nouveau/nouveau_volt.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 489ede3cb5e7..5181924b2586 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e49f70f775335ab1ee0ecd54904d2b25982a2600 +refs/heads/master: dc7339df11bc7a90268929e57e13a14951343cc3 diff --git a/trunk/drivers/gpu/drm/nouveau/nouveau_volt.c b/trunk/drivers/gpu/drm/nouveau/nouveau_volt.c index 6ce857688eb6..04fdc00a67d5 100644 --- a/trunk/drivers/gpu/drm/nouveau/nouveau_volt.c +++ b/trunk/drivers/gpu/drm/nouveau/nouveau_volt.c @@ -110,7 +110,7 @@ nouveau_volt_init(struct drm_device *dev) struct nvbios *bios = &dev_priv->vbios; struct bit_entry P; u8 *volt = NULL, *entry; - int i, recordlen, entries, vidmask, vidshift; + int i, headerlen, recordlen, entries, vidmask, vidshift; if (bios->type == NVBIOS_BIT) { if (bit_table(dev, 'P', &P)) @@ -142,18 +142,21 @@ nouveau_volt_init(struct drm_device *dev) case 0x10: case 0x11: case 0x12: - recordlen = 5; + headerlen = 5; + recordlen = volt[1]; entries = volt[2]; vidshift = 0; vidmask = volt[4]; break; case 0x20: + headerlen = volt[1]; recordlen = volt[3]; entries = volt[2]; vidshift = 0; /* could be vidshift like 0x30? */ vidmask = volt[5]; break; case 0x30: + headerlen = volt[1]; recordlen = volt[2]; entries = volt[3]; vidshift = hweight8(volt[5]); @@ -190,7 +193,7 @@ nouveau_volt_init(struct drm_device *dev) if (!voltage->level) return; - entry = volt + volt[1]; + entry = volt + headerlen; for (i = 0; i < entries; i++, entry += recordlen) { voltage->level[i].voltage = entry[0]; voltage->level[i].vid = entry[1] >> vidshift;