Commit 4a8daacf authored by Ben Skeggs's avatar Ben Skeggs

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

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 6496b4e5
...@@ -2,5 +2,5 @@ ...@@ -2,5 +2,5 @@
#define __NVBIOS_FAN_H__ #define __NVBIOS_FAN_H__
#include <subdev/bios/therm.h> #include <subdev/bios/therm.h>
u16 nvbios_fan_parse(struct nvkm_bios *bios, struct nvbios_therm_fan *fan); u32 nvbios_fan_parse(struct nvkm_bios *bios, struct nvbios_therm_fan *fan);
#endif #endif
...@@ -25,15 +25,15 @@ ...@@ -25,15 +25,15 @@
#include <subdev/bios/bit.h> #include <subdev/bios/bit.h>
#include <subdev/bios/fan.h> #include <subdev/bios/fan.h>
static u16 static u32
nvbios_fan_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len) nvbios_fan_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len)
{ {
struct bit_entry bit_P; struct bit_entry bit_P;
u16 fan = 0x0000; u32 fan = 0;
if (!bit_entry(bios, 'P', &bit_P)) { if (!bit_entry(bios, 'P', &bit_P)) {
if (bit_P.version == 2 && bit_P.length >= 0x5a) if (bit_P.version == 2 && bit_P.length >= 0x5a)
fan = nvbios_rd16(bios, bit_P.offset + 0x58); fan = nvbios_rd32(bios, bit_P.offset + 0x58);
if (fan) { if (fan) {
*ver = nvbios_rd08(bios, fan + 0); *ver = nvbios_rd08(bios, fan + 0);
...@@ -49,25 +49,25 @@ nvbios_fan_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len) ...@@ -49,25 +49,25 @@ nvbios_fan_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len)
} }
} }
return 0x0000; return 0;
} }
static u16 static u32
nvbios_fan_entry(struct nvkm_bios *bios, int idx, u8 *ver, u8 *hdr, nvbios_fan_entry(struct nvkm_bios *bios, int idx, u8 *ver, u8 *hdr,
u8 *cnt, u8 *len) u8 *cnt, u8 *len)
{ {
u16 data = nvbios_fan_table(bios, ver, hdr, cnt, len); u32 data = nvbios_fan_table(bios, ver, hdr, cnt, len);
if (data && idx < *cnt) if (data && idx < *cnt)
return data + *hdr + (idx * (*len)); return data + *hdr + (idx * (*len));
return 0x0000; return 0;
} }
u16 u32
nvbios_fan_parse(struct nvkm_bios *bios, struct nvbios_therm_fan *fan) nvbios_fan_parse(struct nvkm_bios *bios, struct nvbios_therm_fan *fan)
{ {
u8 ver, hdr, cnt, len; u8 ver, hdr, cnt, len;
u16 data = nvbios_fan_entry(bios, 0, &ver, &hdr, &cnt, &len); u32 data = nvbios_fan_entry(bios, 0, &ver, &hdr, &cnt, &len);
if (data) { if (data) {
u8 type = nvbios_rd08(bios, data + 0x00); u8 type = nvbios_rd08(bios, data + 0x00);
switch (type) { switch (type) {
......
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