#ifndef __NVBIOS_BOOST_H__
 #define __NVBIOS_BOOST_H__
-u16 nvbios_boostTe(struct nvkm_bios *, u8 *, u8 *, u8 *, u8 *, u8 *, u8 *);
+u32 nvbios_boostTe(struct nvkm_bios *, u8 *, u8 *, u8 *, u8 *, u8 *, u8 *);
 
 struct nvbios_boostE {
        u8  pstate;
        u32 max;
 };
 
-u16 nvbios_boostEe(struct nvkm_bios *, int idx, u8 *, u8 *, u8 *, u8 *);
-u16 nvbios_boostEp(struct nvkm_bios *, int idx, u8 *, u8 *, u8 *, u8 *,
+u32 nvbios_boostEe(struct nvkm_bios *, int idx, u8 *, u8 *, u8 *, u8 *);
+u32 nvbios_boostEp(struct nvkm_bios *, int idx, u8 *, u8 *, u8 *, u8 *,
                   struct nvbios_boostE *);
-u16 nvbios_boostEm(struct nvkm_bios *, u8, u8 *, u8 *, u8 *, u8 *,
+u32 nvbios_boostEm(struct nvkm_bios *, u8, u8 *, u8 *, u8 *, u8 *,
                   struct nvbios_boostE *);
 
 struct nvbios_boostS {
        u32 max;
 };
 
-u16 nvbios_boostSe(struct nvkm_bios *, int, u16, u8 *, u8 *, u8, u8);
-u16 nvbios_boostSp(struct nvkm_bios *, int, u16, u8 *, u8 *, u8, u8,
+u32 nvbios_boostSe(struct nvkm_bios *, int, u32, u8 *, u8 *, u8, u8);
+u32 nvbios_boostSp(struct nvkm_bios *, int, u32, u8 *, u8 *, u8, u8,
                   struct nvbios_boostS *);
 #endif
 
 #include <subdev/bios/bit.h>
 #include <subdev/bios/boost.h>
 
-u16
+u32
 nvbios_boostTe(struct nvkm_bios *bios,
               u8 *ver, u8 *hdr, u8 *cnt, u8 *len, u8 *snr, u8 *ssz)
 {
        struct bit_entry bit_P;
-       u16 boost = 0x0000;
+       u32 boost = 0;
 
        if (!bit_entry(bios, 'P', &bit_P)) {
                if (bit_P.version == 2)
-                       boost = nvbios_rd16(bios, bit_P.offset + 0x30);
+                       boost = nvbios_rd32(bios, bit_P.offset + 0x30);
 
                if (boost) {
                        *ver = nvbios_rd08(bios, boost + 0);
                }
        }
 
-       return 0x0000;
+       return 0;
 }
 
-u16
+u32
 nvbios_boostEe(struct nvkm_bios *bios, int idx,
               u8 *ver, u8 *hdr, u8 *cnt, u8 *len)
 {
        u8  snr, ssz;
-       u16 data = nvbios_boostTe(bios, ver, hdr, cnt, len, &snr, &ssz);
+       u32 data = nvbios_boostTe(bios, ver, hdr, cnt, len, &snr, &ssz);
        if (data && idx < *cnt) {
                data = data + *hdr + (idx * (*len + (snr * ssz)));
                *hdr = *len;
                *len = ssz;
                return data;
        }
-       return 0x0000;
+       return 0;
 }
 
-u16
+u32
 nvbios_boostEp(struct nvkm_bios *bios, int idx,
               u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_boostE *info)
 {
-       u16 data = nvbios_boostEe(bios, idx, ver, hdr, cnt, len);
+       u32 data = nvbios_boostEe(bios, idx, ver, hdr, cnt, len);
        memset(info, 0x00, sizeof(*info));
        if (data) {
                info->pstate = (nvbios_rd16(bios, data + 0x00) & 0x01e0) >> 5;
        return data;
 }
 
-u16
+u32
 nvbios_boostEm(struct nvkm_bios *bios, u8 pstate,
               u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_boostE *info)
 {
        return data;
 }
 
-u16
+u32
 nvbios_boostSe(struct nvkm_bios *bios, int idx,
-              u16 data, u8 *ver, u8 *hdr, u8 cnt, u8 len)
+              u32 data, u8 *ver, u8 *hdr, u8 cnt, u8 len)
 {
        if (data && idx < cnt) {
                data = data + *hdr + (idx * len);
                *hdr = len;
                return data;
        }
-       return 0x0000;
+       return 0;
 }
 
-u16
+u32
 nvbios_boostSp(struct nvkm_bios *bios, int idx,
-              u16 data, u8 *ver, u8 *hdr, u8 cnt, u8 len,
+              u32 data, u8 *ver, u8 *hdr, u8 cnt, u8 len,
               struct nvbios_boostS *info)
 {
        data = nvbios_boostSe(bios, idx, data, ver, hdr, cnt, len);