Commit ff535412 authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/bios/volt: pointers are 32-bit

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 60fb7064
...@@ -22,8 +22,8 @@ struct nvbios_volt { ...@@ -22,8 +22,8 @@ struct nvbios_volt {
u32 pwm_range; u32 pwm_range;
}; };
u16 nvbios_volt_table(struct nvkm_bios *, u8 *ver, u8 *hdr, u8 *cnt, u8 *len); u32 nvbios_volt_table(struct nvkm_bios *, u8 *ver, u8 *hdr, u8 *cnt, u8 *len);
u16 nvbios_volt_parse(struct nvkm_bios *, u8 *ver, u8 *hdr, u8 *cnt, u8 *len, u32 nvbios_volt_parse(struct nvkm_bios *, u8 *ver, u8 *hdr, u8 *cnt, u8 *len,
struct nvbios_volt *); struct nvbios_volt *);
struct nvbios_volt_entry { struct nvbios_volt_entry {
...@@ -31,7 +31,7 @@ struct nvbios_volt_entry { ...@@ -31,7 +31,7 @@ struct nvbios_volt_entry {
u8 vid; u8 vid;
}; };
u16 nvbios_volt_entry(struct nvkm_bios *, int idx, u8 *ver, u8 *len); u32 nvbios_volt_entry(struct nvkm_bios *, int idx, u8 *ver, u8 *len);
u16 nvbios_volt_entry_parse(struct nvkm_bios *, int idx, u8 *ver, u8 *len, u32 nvbios_volt_entry_parse(struct nvkm_bios *, int idx, u8 *ver, u8 *len,
struct nvbios_volt_entry *); struct nvbios_volt_entry *);
#endif #endif
...@@ -25,18 +25,18 @@ ...@@ -25,18 +25,18 @@
#include <subdev/bios/bit.h> #include <subdev/bios/bit.h>
#include <subdev/bios/volt.h> #include <subdev/bios/volt.h>
u16 u32
nvbios_volt_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len) nvbios_volt_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len)
{ {
struct bit_entry bit_P; struct bit_entry bit_P;
u16 volt = 0x0000; u32 volt = 0;
if (!bit_entry(bios, 'P', &bit_P)) { if (!bit_entry(bios, 'P', &bit_P)) {
if (bit_P.version == 2) if (bit_P.version == 2)
volt = nvbios_rd16(bios, bit_P.offset + 0x0c); volt = nvbios_rd32(bios, bit_P.offset + 0x0c);
else else
if (bit_P.version == 1) if (bit_P.version == 1)
volt = nvbios_rd16(bios, bit_P.offset + 0x10); volt = nvbios_rd32(bios, bit_P.offset + 0x10);
if (volt) { if (volt) {
*ver = nvbios_rd08(bios, volt + 0); *ver = nvbios_rd08(bios, volt + 0);
...@@ -62,14 +62,14 @@ nvbios_volt_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len) ...@@ -62,14 +62,14 @@ nvbios_volt_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len)
} }
} }
return 0x0000; return 0;
} }
u16 u32
nvbios_volt_parse(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len, nvbios_volt_parse(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len,
struct nvbios_volt *info) struct nvbios_volt *info)
{ {
u16 volt = nvbios_volt_table(bios, ver, hdr, cnt, len); u32 volt = nvbios_volt_table(bios, ver, hdr, cnt, len);
memset(info, 0x00, sizeof(*info)); memset(info, 0x00, sizeof(*info));
switch (!!volt * *ver) { switch (!!volt * *ver) {
case 0x12: case 0x12:
...@@ -119,23 +119,23 @@ nvbios_volt_parse(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len, ...@@ -119,23 +119,23 @@ nvbios_volt_parse(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len,
return volt; return volt;
} }
u16 u32
nvbios_volt_entry(struct nvkm_bios *bios, int idx, u8 *ver, u8 *len) nvbios_volt_entry(struct nvkm_bios *bios, int idx, u8 *ver, u8 *len)
{ {
u8 hdr, cnt; u8 hdr, cnt;
u16 volt = nvbios_volt_table(bios, ver, &hdr, &cnt, len); u32 volt = nvbios_volt_table(bios, ver, &hdr, &cnt, len);
if (volt && idx < cnt) { if (volt && idx < cnt) {
volt = volt + hdr + (idx * *len); volt = volt + hdr + (idx * *len);
return volt; return volt;
} }
return 0x0000; return 0;
} }
u16 u32
nvbios_volt_entry_parse(struct nvkm_bios *bios, int idx, u8 *ver, u8 *len, nvbios_volt_entry_parse(struct nvkm_bios *bios, int idx, u8 *ver, u8 *len,
struct nvbios_volt_entry *info) struct nvbios_volt_entry *info)
{ {
u16 volt = nvbios_volt_entry(bios, idx, ver, len); u32 volt = nvbios_volt_entry(bios, idx, ver, len);
memset(info, 0x00, sizeof(*info)); memset(info, 0x00, sizeof(*info));
switch (!!volt * *ver) { switch (!!volt * *ver) {
case 0x12: case 0x12:
......
...@@ -189,7 +189,7 @@ nvkm_volt_parse_bios(struct nvkm_bios *bios, struct nvkm_volt *volt) ...@@ -189,7 +189,7 @@ nvkm_volt_parse_bios(struct nvkm_bios *bios, struct nvkm_volt *volt)
struct nvbios_volt_entry ivid; struct nvbios_volt_entry ivid;
struct nvbios_volt info; struct nvbios_volt info;
u8 ver, hdr, cnt, len; u8 ver, hdr, cnt, len;
u16 data; u32 data;
int i; int i;
data = nvbios_volt_parse(bios, &ver, &hdr, &cnt, &len, &info); data = nvbios_volt_parse(bios, &ver, &hdr, &cnt, &len, &info);
......
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