diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2014-09-23 15:39:26 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2014-12-02 15:37:18 +1000 |
commit | 9cf0dbbfb419b16a57bf57e653c4f9a40d0887e3 (patch) | |
tree | 3b73109c86f5fcbccda2829b9d57df130e948ea2 | |
parent | 562dbfc15ce0ef5db71f76715d544c62f0d70c7b (diff) | |
download | nouveau-9cf0dbbfb419b16a57bf57e653c4f9a40d0887e3.tar.gz |
devinit: allow impl to select its own cold-boot method
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | nvkm/subdev/devinit/base.c | 4 | ||||
-rw-r--r-- | nvkm/subdev/devinit/gm107.c | 1 | ||||
-rw-r--r-- | nvkm/subdev/devinit/nv04.c | 1 | ||||
-rw-r--r-- | nvkm/subdev/devinit/nv05.c | 1 | ||||
-rw-r--r-- | nvkm/subdev/devinit/nv10.c | 1 | ||||
-rw-r--r-- | nvkm/subdev/devinit/nv1a.c | 1 | ||||
-rw-r--r-- | nvkm/subdev/devinit/nv20.c | 1 | ||||
-rw-r--r-- | nvkm/subdev/devinit/nv50.c | 1 | ||||
-rw-r--r-- | nvkm/subdev/devinit/nv84.c | 1 | ||||
-rw-r--r-- | nvkm/subdev/devinit/nv98.c | 1 | ||||
-rw-r--r-- | nvkm/subdev/devinit/nva3.c | 1 | ||||
-rw-r--r-- | nvkm/subdev/devinit/nvaf.c | 1 | ||||
-rw-r--r-- | nvkm/subdev/devinit/nvc0.c | 1 | ||||
-rw-r--r-- | nvkm/subdev/devinit/priv.h | 2 |
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) \ |