aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2016-11-17 20:24:35 -0500
committerBen Skeggs <bskeggs@redhat.com>2016-11-28 00:39:34 -0500
commit5878601767bfa46f0f9856b726a487ae02b57b9c (patch)
tree8e1c87130d7e4765c7bb100a5daeb10746560bbf
parented828666a797bf78c12e83e847516588e1b1cb11 (diff)
drm/nouveau/bios/boost: pointers are 32-bit
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/boost.h12
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/bios/boost.c30
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c4
3 files changed, 23 insertions, 23 deletions
diff --git a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/boost.h b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/boost.h
index 934b0ae5521d..2ff64a20c0ec 100644
--- a/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/boost.h
+++ b/drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/boost.h
@@ -1,6 +1,6 @@
1#ifndef __NVBIOS_BOOST_H__ 1#ifndef __NVBIOS_BOOST_H__
2#define __NVBIOS_BOOST_H__ 2#define __NVBIOS_BOOST_H__
3u16 nvbios_boostTe(struct nvkm_bios *, u8 *, u8 *, u8 *, u8 *, u8 *, u8 *); 3u32 nvbios_boostTe(struct nvkm_bios *, u8 *, u8 *, u8 *, u8 *, u8 *, u8 *);
4 4
5struct nvbios_boostE { 5struct nvbios_boostE {
6 u8 pstate; 6 u8 pstate;
@@ -8,10 +8,10 @@ struct nvbios_boostE {
8 u32 max; 8 u32 max;
9}; 9};
10 10
11u16 nvbios_boostEe(struct nvkm_bios *, int idx, u8 *, u8 *, u8 *, u8 *); 11u32 nvbios_boostEe(struct nvkm_bios *, int idx, u8 *, u8 *, u8 *, u8 *);
12u16 nvbios_boostEp(struct nvkm_bios *, int idx, u8 *, u8 *, u8 *, u8 *, 12u32 nvbios_boostEp(struct nvkm_bios *, int idx, u8 *, u8 *, u8 *, u8 *,
13 struct nvbios_boostE *); 13 struct nvbios_boostE *);
14u16 nvbios_boostEm(struct nvkm_bios *, u8, u8 *, u8 *, u8 *, u8 *, 14u32 nvbios_boostEm(struct nvkm_bios *, u8, u8 *, u8 *, u8 *, u8 *,
15 struct nvbios_boostE *); 15 struct nvbios_boostE *);
16 16
17struct nvbios_boostS { 17struct nvbios_boostS {
@@ -21,7 +21,7 @@ struct nvbios_boostS {
21 u32 max; 21 u32 max;
22}; 22};
23 23
24u16 nvbios_boostSe(struct nvkm_bios *, int, u16, u8 *, u8 *, u8, u8); 24u32 nvbios_boostSe(struct nvkm_bios *, int, u32, u8 *, u8 *, u8, u8);
25u16 nvbios_boostSp(struct nvkm_bios *, int, u16, u8 *, u8 *, u8, u8, 25u32 nvbios_boostSp(struct nvkm_bios *, int, u32, u8 *, u8 *, u8, u8,
26 struct nvbios_boostS *); 26 struct nvbios_boostS *);
27#endif 27#endif
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/boost.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/boost.c
index 3756ec91a88d..eaf74eb72983 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/boost.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/boost.c
@@ -25,16 +25,16 @@
25#include <subdev/bios/bit.h> 25#include <subdev/bios/bit.h>
26#include <subdev/bios/boost.h> 26#include <subdev/bios/boost.h>
27 27
28u16 28u32
29nvbios_boostTe(struct nvkm_bios *bios, 29nvbios_boostTe(struct nvkm_bios *bios,
30 u8 *ver, u8 *hdr, u8 *cnt, u8 *len, u8 *snr, u8 *ssz) 30 u8 *ver, u8 *hdr, u8 *cnt, u8 *len, u8 *snr, u8 *ssz)
31{ 31{
32 struct bit_entry bit_P; 32 struct bit_entry bit_P;
33 u16 boost = 0x0000; 33 u32 boost = 0;
34 34
35 if (!bit_entry(bios, 'P', &bit_P)) { 35 if (!bit_entry(bios, 'P', &bit_P)) {
36 if (bit_P.version == 2) 36 if (bit_P.version == 2)
37 boost = nvbios_rd16(bios, bit_P.offset + 0x30); 37 boost = nvbios_rd32(bios, bit_P.offset + 0x30);
38 38
39 if (boost) { 39 if (boost) {
40 *ver = nvbios_rd08(bios, boost + 0); 40 *ver = nvbios_rd08(bios, boost + 0);
@@ -52,15 +52,15 @@ nvbios_boostTe(struct nvkm_bios *bios,
52 } 52 }
53 } 53 }
54 54
55 return 0x0000; 55 return 0;
56} 56}
57 57
58u16 58u32
59nvbios_boostEe(struct nvkm_bios *bios, int idx, 59nvbios_boostEe(struct nvkm_bios *bios, int idx,
60 u8 *ver, u8 *hdr, u8 *cnt, u8 *len) 60 u8 *ver, u8 *hdr, u8 *cnt, u8 *len)
61{ 61{
62 u8 snr, ssz; 62 u8 snr, ssz;
63 u16 data = nvbios_boostTe(bios, ver, hdr, cnt, len, &snr, &ssz); 63 u32 data = nvbios_boostTe(bios, ver, hdr, cnt, len, &snr, &ssz);
64 if (data && idx < *cnt) { 64 if (data && idx < *cnt) {
65 data = data + *hdr + (idx * (*len + (snr * ssz))); 65 data = data + *hdr + (idx * (*len + (snr * ssz)));
66 *hdr = *len; 66 *hdr = *len;
@@ -68,14 +68,14 @@ nvbios_boostEe(struct nvkm_bios *bios, int idx,
68 *len = ssz; 68 *len = ssz;
69 return data; 69 return data;
70 } 70 }
71 return 0x0000; 71 return 0;
72} 72}
73 73
74u16 74u32
75nvbios_boostEp(struct nvkm_bios *bios, int idx, 75nvbios_boostEp(struct nvkm_bios *bios, int idx,
76 u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_boostE *info) 76 u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_boostE *info)
77{ 77{
78 u16 data = nvbios_boostEe(bios, idx, ver, hdr, cnt, len); 78 u32 data = nvbios_boostEe(bios, idx, ver, hdr, cnt, len);
79 memset(info, 0x00, sizeof(*info)); 79 memset(info, 0x00, sizeof(*info));
80 if (data) { 80 if (data) {
81 info->pstate = (nvbios_rd16(bios, data + 0x00) & 0x01e0) >> 5; 81 info->pstate = (nvbios_rd16(bios, data + 0x00) & 0x01e0) >> 5;
@@ -85,7 +85,7 @@ nvbios_boostEp(struct nvkm_bios *bios, int idx,
85 return data; 85 return data;
86} 86}
87 87
88u16 88u32
89nvbios_boostEm(struct nvkm_bios *bios, u8 pstate, 89nvbios_boostEm(struct nvkm_bios *bios, u8 pstate,
90 u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_boostE *info) 90 u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_boostE *info)
91{ 91{
@@ -97,21 +97,21 @@ nvbios_boostEm(struct nvkm_bios *bios, u8 pstate,
97 return data; 97 return data;
98} 98}
99 99
100u16 100u32
101nvbios_boostSe(struct nvkm_bios *bios, int idx, 101nvbios_boostSe(struct nvkm_bios *bios, int idx,
102 u16 data, u8 *ver, u8 *hdr, u8 cnt, u8 len) 102 u32 data, u8 *ver, u8 *hdr, u8 cnt, u8 len)
103{ 103{
104 if (data && idx < cnt) { 104 if (data && idx < cnt) {
105 data = data + *hdr + (idx * len); 105 data = data + *hdr + (idx * len);
106 *hdr = len; 106 *hdr = len;
107 return data; 107 return data;
108 } 108 }
109 return 0x0000; 109 return 0;
110} 110}
111 111
112u16 112u32
113nvbios_boostSp(struct nvkm_bios *bios, int idx, 113nvbios_boostSp(struct nvkm_bios *bios, int idx,
114 u16 data, u8 *ver, u8 *hdr, u8 cnt, u8 len, 114 u32 data, u8 *ver, u8 *hdr, u8 cnt, u8 len,
115 struct nvbios_boostS *info) 115 struct nvbios_boostS *info)
116{ 116{
117 data = nvbios_boostSe(bios, idx, data, ver, hdr, cnt, len); 117 data = nvbios_boostSe(bios, idx, data, ver, hdr, cnt, len);
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c
index fa1c12185e19..f43970156558 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/clk/base.c
@@ -44,13 +44,13 @@ nvkm_clk_adjust(struct nvkm_clk *clk, bool adjust,
44 struct nvkm_bios *bios = clk->subdev.device->bios; 44 struct nvkm_bios *bios = clk->subdev.device->bios;
45 struct nvbios_boostE boostE; 45 struct nvbios_boostE boostE;
46 u8 ver, hdr, cnt, len; 46 u8 ver, hdr, cnt, len;
47 u16 data; 47 u32 data;
48 48
49 data = nvbios_boostEm(bios, pstate, &ver, &hdr, &cnt, &len, &boostE); 49 data = nvbios_boostEm(bios, pstate, &ver, &hdr, &cnt, &len, &boostE);
50 if (data) { 50 if (data) {
51 struct nvbios_boostS boostS; 51 struct nvbios_boostS boostS;
52 u8 idx = 0, sver, shdr; 52 u8 idx = 0, sver, shdr;
53 u16 subd; 53 u32 subd;
54 54
55 input = max(boostE.min, input); 55 input = max(boostE.min, input);
56 input = min(boostE.max, input); 56 input = min(boostE.max, input);