diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2015-03-20 01:28:52 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2015-04-14 03:00:50 -0400 |
commit | f02a0e849dbd16541a1e75ef8c8719bc5f611219 (patch) | |
tree | b1ff83074c9816dde9b6b3e9582c828dfe382790 /drivers/gpu | |
parent | e1fc44fb9dbec4ff4e63c888d206a0bc4ca93f4f (diff) |
drm/nouveau/pmu/gk208: implement gr power-up magic with gk110_pmu_pgob()
Before we moved gk110's implementation of this to pmu, the functions were
identical. This commit just switches GK208 to use the new (more complete)
implementation of the power-up sequence.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/gr/gk208.c | 39 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk110.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk208.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h | 2 |
4 files changed, 5 insertions, 39 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gk208.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gk208.c index ae6b853173b6..31d8e6055376 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gk208.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gk208.c | |||
@@ -152,43 +152,6 @@ gk208_gr_pack_mmio[] = { | |||
152 | * PGRAPH engine/subdev functions | 152 | * PGRAPH engine/subdev functions |
153 | ******************************************************************************/ | 153 | ******************************************************************************/ |
154 | 154 | ||
155 | static int | ||
156 | gk208_gr_fini(struct nvkm_object *object, bool suspend) | ||
157 | { | ||
158 | struct gf100_gr_priv *priv = (void *)object; | ||
159 | static const struct { | ||
160 | u32 addr; | ||
161 | u32 data; | ||
162 | } magic[] = { | ||
163 | { 0x020520, 0xfffffffc }, | ||
164 | { 0x020524, 0xfffffffe }, | ||
165 | { 0x020524, 0xfffffffc }, | ||
166 | { 0x020524, 0xfffffff8 }, | ||
167 | { 0x020524, 0xffffffe0 }, | ||
168 | { 0x020530, 0xfffffffe }, | ||
169 | { 0x02052c, 0xfffffffa }, | ||
170 | { 0x02052c, 0xfffffff0 }, | ||
171 | { 0x02052c, 0xffffffc0 }, | ||
172 | { 0x02052c, 0xffffff00 }, | ||
173 | { 0x02052c, 0xfffffc00 }, | ||
174 | { 0x02052c, 0xfffcfc00 }, | ||
175 | { 0x02052c, 0xfff0fc00 }, | ||
176 | { 0x02052c, 0xff80fc00 }, | ||
177 | { 0x020528, 0xfffffffe }, | ||
178 | { 0x020528, 0xfffffffc }, | ||
179 | }; | ||
180 | int i; | ||
181 | |||
182 | nv_mask(priv, 0x000200, 0x08001000, 0x00000000); | ||
183 | nv_mask(priv, 0x0206b4, 0x00000000, 0x00000000); | ||
184 | for (i = 0; i < ARRAY_SIZE(magic); i++) { | ||
185 | nv_wr32(priv, magic[i].addr, magic[i].data); | ||
186 | nv_wait(priv, magic[i].addr, 0x80000000, 0x00000000); | ||
187 | } | ||
188 | |||
189 | return nvkm_gr_fini(&priv->base, suspend); | ||
190 | } | ||
191 | |||
192 | #include "fuc/hubgk208.fuc5.h" | 155 | #include "fuc/hubgk208.fuc5.h" |
193 | 156 | ||
194 | static struct gf100_gr_ucode | 157 | static struct gf100_gr_ucode |
@@ -216,7 +179,7 @@ gk208_gr_oclass = &(struct gf100_gr_oclass) { | |||
216 | .ctor = gf100_gr_ctor, | 179 | .ctor = gf100_gr_ctor, |
217 | .dtor = gf100_gr_dtor, | 180 | .dtor = gf100_gr_dtor, |
218 | .init = gk104_gr_init, | 181 | .init = gk104_gr_init, |
219 | .fini = gk208_gr_fini, | 182 | .fini = _nvkm_gr_fini, |
220 | }, | 183 | }, |
221 | .cclass = &gk208_grctx_oclass, | 184 | .cclass = &gk208_grctx_oclass, |
222 | .sclass = gk208_gr_sclass, | 185 | .sclass = gk208_gr_sclass, |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk110.c b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk110.c index e318745b8274..89bb94b0af8b 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk110.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk110.c | |||
@@ -28,7 +28,7 @@ | |||
28 | 28 | ||
29 | #include <subdev/timer.h> | 29 | #include <subdev/timer.h> |
30 | 30 | ||
31 | static void | 31 | void |
32 | gk110_pmu_pgob(struct nvkm_pmu *pmu, bool enable) | 32 | gk110_pmu_pgob(struct nvkm_pmu *pmu, bool enable) |
33 | { | 33 | { |
34 | static const struct { | 34 | static const struct { |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk208.c b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk208.c index 6f9c09af1a49..b14134ef9ea5 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk208.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk208.c | |||
@@ -37,4 +37,5 @@ gk208_pmu_oclass = &(struct nvkm_pmu_impl) { | |||
37 | .code.size = sizeof(gk208_pmu_code), | 37 | .code.size = sizeof(gk208_pmu_code), |
38 | .data.data = gk208_pmu_data, | 38 | .data.data = gk208_pmu_data, |
39 | .data.size = sizeof(gk208_pmu_data), | 39 | .data.size = sizeof(gk208_pmu_data), |
40 | .pgob = gk110_pmu_pgob, | ||
40 | }.base; | 41 | }.base; |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h index 998410563bfd..799e7c8b88f5 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/priv.h | |||
@@ -40,4 +40,6 @@ struct nvkm_pmu_impl { | |||
40 | 40 | ||
41 | void (*pgob)(struct nvkm_pmu *, bool); | 41 | void (*pgob)(struct nvkm_pmu *, bool); |
42 | }; | 42 | }; |
43 | |||
44 | void gk110_pmu_pgob(struct nvkm_pmu *, bool); | ||
43 | #endif | 45 | #endif |