summaryrefslogtreecommitdiff
path: root/nvkm
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2014-09-23 15:39:26 +1000
committerBen Skeggs <bskeggs@redhat.com>2014-12-02 15:37:18 +1000
commit9cf0dbbfb419b16a57bf57e653c4f9a40d0887e3 (patch)
tree3b73109c86f5fcbccda2829b9d57df130e948ea2 /nvkm
parent562dbfc15ce0ef5db71f76715d544c62f0d70c7b (diff)
downloadnouveau-9cf0dbbfb419b16a57bf57e653c4f9a40d0887e3.tar.gz
devinit: allow impl to select its own cold-boot method
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'nvkm')
-rw-r--r--nvkm/subdev/devinit/base.c4
-rw-r--r--nvkm/subdev/devinit/gm107.c1
-rw-r--r--nvkm/subdev/devinit/nv04.c1
-rw-r--r--nvkm/subdev/devinit/nv05.c1
-rw-r--r--nvkm/subdev/devinit/nv10.c1
-rw-r--r--nvkm/subdev/devinit/nv1a.c1
-rw-r--r--nvkm/subdev/devinit/nv20.c1
-rw-r--r--nvkm/subdev/devinit/nv50.c1
-rw-r--r--nvkm/subdev/devinit/nv84.c1
-rw-r--r--nvkm/subdev/devinit/nv98.c1
-rw-r--r--nvkm/subdev/devinit/nva3.c1
-rw-r--r--nvkm/subdev/devinit/nvaf.c1
-rw-r--r--nvkm/subdev/devinit/nvc0.c1
-rw-r--r--nvkm/subdev/devinit/priv.h2
14 files changed, 15 insertions, 3 deletions
diff --git a/nvkm/subdev/devinit/base.c b/nvkm/subdev/devinit/base.c
index 239acfe87..0e45cee82 100644
--- a/nvkm/subdev/devinit/base.c
+++ b/nvkm/subdev/devinit/base.c
@@ -24,8 +24,6 @@
#include <core/option.h>
-#include <subdev/bios.h>
-#include <subdev/bios/init.h>
#include <subdev/vga.h>
#include "priv.h"
@@ -56,7 +54,7 @@ _nouveau_devinit_init(struct nouveau_object *object)
if (ret)
return ret;
- ret = nvbios_init(&devinit->base, devinit->post);
+ ret = impl->post(&devinit->base, devinit->post);
if (ret)
return ret;
diff --git a/nvkm/subdev/devinit/gm107.c b/nvkm/subdev/devinit/gm107.c
index c69bc7f54..bc2b2a9aa 100644
--- a/nvkm/subdev/devinit/gm107.c
+++ b/nvkm/subdev/devinit/gm107.c
@@ -53,4 +53,5 @@ gm107_devinit_oclass = &(struct nouveau_devinit_impl) {
},
.pll_set = nvc0_devinit_pll_set,
.disable = gm107_devinit_disable,
+ .post = nvbios_init,
}.base;
diff --git a/nvkm/subdev/devinit/nv04.c b/nvkm/subdev/devinit/nv04.c
index 052ad690b..65651c50f 100644
--- a/nvkm/subdev/devinit/nv04.c
+++ b/nvkm/subdev/devinit/nv04.c
@@ -464,4 +464,5 @@ nv04_devinit_oclass = &(struct nouveau_devinit_impl) {
},
.meminit = nv04_devinit_meminit,
.pll_set = nv04_devinit_pll_set,
+ .post = nvbios_init,
}.base;
diff --git a/nvkm/subdev/devinit/nv05.c b/nvkm/subdev/devinit/nv05.c
index 4a19c10e5..a2007a3ef 100644
--- a/nvkm/subdev/devinit/nv05.c
+++ b/nvkm/subdev/devinit/nv05.c
@@ -136,4 +136,5 @@ nv05_devinit_oclass = &(struct nouveau_devinit_impl) {
},
.meminit = nv05_devinit_meminit,
.pll_set = nv04_devinit_pll_set,
+ .post = nvbios_init,
}.base;
diff --git a/nvkm/subdev/devinit/nv10.c b/nvkm/subdev/devinit/nv10.c
index 3b8d657da..178b46f79 100644
--- a/nvkm/subdev/devinit/nv10.c
+++ b/nvkm/subdev/devinit/nv10.c
@@ -107,4 +107,5 @@ nv10_devinit_oclass = &(struct nouveau_devinit_impl) {
},
.meminit = nv10_devinit_meminit,
.pll_set = nv04_devinit_pll_set,
+ .post = nvbios_init,
}.base;
diff --git a/nvkm/subdev/devinit/nv1a.c b/nvkm/subdev/devinit/nv1a.c
index 526d0c6fa..995dd97af 100644
--- a/nvkm/subdev/devinit/nv1a.c
+++ b/nvkm/subdev/devinit/nv1a.c
@@ -34,4 +34,5 @@ nv1a_devinit_oclass = &(struct nouveau_devinit_impl) {
.fini = nv04_devinit_fini,
},
.pll_set = nv04_devinit_pll_set,
+ .post = nvbios_init,
}.base;
diff --git a/nvkm/subdev/devinit/nv20.c b/nvkm/subdev/devinit/nv20.c
index 04bc97326..915089fb4 100644
--- a/nvkm/subdev/devinit/nv20.c
+++ b/nvkm/subdev/devinit/nv20.c
@@ -71,4 +71,5 @@ nv20_devinit_oclass = &(struct nouveau_devinit_impl) {
},
.meminit = nv20_devinit_meminit,
.pll_set = nv04_devinit_pll_set,
+ .post = nvbios_init,
}.base;
diff --git a/nvkm/subdev/devinit/nv50.c b/nvkm/subdev/devinit/nv50.c
index b46c62a1d..0de7fa6e8 100644
--- a/nvkm/subdev/devinit/nv50.c
+++ b/nvkm/subdev/devinit/nv50.c
@@ -160,4 +160,5 @@ nv50_devinit_oclass = &(struct nouveau_devinit_impl) {
},
.pll_set = nv50_devinit_pll_set,
.disable = nv50_devinit_disable,
+ .post = nvbios_init,
}.base;
diff --git a/nvkm/subdev/devinit/nv84.c b/nvkm/subdev/devinit/nv84.c
index 787422505..a7c80ded7 100644
--- a/nvkm/subdev/devinit/nv84.c
+++ b/nvkm/subdev/devinit/nv84.c
@@ -60,4 +60,5 @@ nv84_devinit_oclass = &(struct nouveau_devinit_impl) {
},
.pll_set = nv50_devinit_pll_set,
.disable = nv84_devinit_disable,
+ .post = nvbios_init,
}.base;
diff --git a/nvkm/subdev/devinit/nv98.c b/nvkm/subdev/devinit/nv98.c
index 2b0e963fc..a773253a1 100644
--- a/nvkm/subdev/devinit/nv98.c
+++ b/nvkm/subdev/devinit/nv98.c
@@ -59,4 +59,5 @@ nv98_devinit_oclass = &(struct nouveau_devinit_impl) {
},
.pll_set = nv50_devinit_pll_set,
.disable = nv98_devinit_disable,
+ .post = nvbios_init,
}.base;
diff --git a/nvkm/subdev/devinit/nva3.c b/nvkm/subdev/devinit/nva3.c
index 006cf348b..b9cd9e53f 100644
--- a/nvkm/subdev/devinit/nva3.c
+++ b/nvkm/subdev/devinit/nva3.c
@@ -142,4 +142,5 @@ nva3_devinit_oclass = &(struct nouveau_devinit_impl) {
.pll_set = nva3_devinit_pll_set,
.disable = nva3_devinit_disable,
.mmio = nva3_devinit_mmio,
+ .post = nvbios_init,
}.base;
diff --git a/nvkm/subdev/devinit/nvaf.c b/nvkm/subdev/devinit/nvaf.c
index 4fc68d27e..3729846a8 100644
--- a/nvkm/subdev/devinit/nvaf.c
+++ b/nvkm/subdev/devinit/nvaf.c
@@ -60,4 +60,5 @@ nvaf_devinit_oclass = &(struct nouveau_devinit_impl) {
},
.pll_set = nva3_devinit_pll_set,
.disable = nvaf_devinit_disable,
+ .post = nvbios_init,
}.base;
diff --git a/nvkm/subdev/devinit/nvc0.c b/nvkm/subdev/devinit/nvc0.c
index 30c765747..80bd7f5ed 100644
--- a/nvkm/subdev/devinit/nvc0.c
+++ b/nvkm/subdev/devinit/nvc0.c
@@ -115,4 +115,5 @@ nvc0_devinit_oclass = &(struct nouveau_devinit_impl) {
},
.pll_set = nvc0_devinit_pll_set,
.disable = nvc0_devinit_disable,
+ .post = nvbios_init,
}.base;
diff --git a/nvkm/subdev/devinit/priv.h b/nvkm/subdev/devinit/priv.h
index f0e8683ad..cbcd51852 100644
--- a/nvkm/subdev/devinit/priv.h
+++ b/nvkm/subdev/devinit/priv.h
@@ -3,6 +3,7 @@
#include <subdev/bios.h>
#include <subdev/bios/pll.h>
+#include <subdev/bios/init.h>
#include <subdev/clock/pll.h>
#include <subdev/devinit.h>
@@ -12,6 +13,7 @@ struct nouveau_devinit_impl {
int (*pll_set)(struct nouveau_devinit *, u32 type, u32 freq);
u64 (*disable)(struct nouveau_devinit *);
u32 (*mmio)(struct nouveau_devinit *, u32);
+ int (*post)(struct nouveau_subdev *, bool);
};
#define nouveau_devinit_create(p,e,o,d) \