|
@@ -90,9 +90,21 @@ gf100_devinit_disable(struct nvkm_devinit *init)
|
|
return disable;
|
|
return disable;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void
|
|
|
|
+gf100_devinit_preinit(struct nvkm_devinit *base)
|
|
|
|
+{
|
|
|
|
+ struct nv50_devinit *init = nv50_devinit(base);
|
|
|
|
+ struct nvkm_subdev *subdev = &init->base.subdev;
|
|
|
|
+ struct nvkm_device *device = subdev->device;
|
|
|
|
+
|
|
|
|
+ /* This bit is set by devinit, and flips back to 0 on suspend */
|
|
|
|
+ if (!base->post)
|
|
|
|
+ base->post = ((nvkm_rd32(device, 0x2240c) & BIT(1)) == 0);
|
|
|
|
+}
|
|
|
|
+
|
|
static const struct nvkm_devinit_func
|
|
static const struct nvkm_devinit_func
|
|
gf100_devinit = {
|
|
gf100_devinit = {
|
|
- .preinit = nv50_devinit_preinit,
|
|
|
|
|
|
+ .preinit = gf100_devinit_preinit,
|
|
.init = nv50_devinit_init,
|
|
.init = nv50_devinit_init,
|
|
.post = nv04_devinit_post,
|
|
.post = nv04_devinit_post,
|
|
.pll_set = gf100_devinit_pll_set,
|
|
.pll_set = gf100_devinit_pll_set,
|