]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
drm/nouveau/bios/volt: Handle voltage table version 0x50 with zeroed header
authorKarol Herbst <karolherbst@gmail.com>
Tue, 12 Jul 2016 19:36:08 +0000 (21:36 +0200)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 12 Oct 2016 07:29:19 +0000 (17:29 +1000)
Some Fermi+ GPUs specify VID information via voltage table entries, rather
than describing them as a range in the header.

The mask may be bigger than 0x1fffff, but this value is already >2V, so it
will be fine for now.

This patch fixes volting issues on those cards enabling them to switch
cstates.

v6: rework message

Signed-off-by: Karol Herbst <karolherbst@gmail.com>
Reviewed-by: Martin Peres <martin.peres@free.fr>
Tested-by: Pierre Moreau <pierre.morrow@free.fr>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nvkm/subdev/bios/volt.c

index 6e0a33648be92a0d1c15cc85272cfe846154f445..81a47b22617a401b1f2e945897a57ed62b2a4e4d 100644 (file)
@@ -142,7 +142,10 @@ nvbios_volt_entry_parse(struct nvkm_bios *bios, int idx, u8 *ver, u8 *len,
                info->vid     = nvbios_rd08(bios, volt + 0x01) >> 2;
                break;
        case 0x40:
+               break;
        case 0x50:
+               info->voltage = nvbios_rd32(bios, volt) & 0x001fffff;
+               info->vid     = (nvbios_rd32(bios, volt) >> 23) & 0xff;
                break;
        }
        return volt;