diff options
author | Dave Airlie <airlied@redhat.com> | 2015-05-28 21:13:52 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2015-05-28 21:13:52 -0400 |
commit | 1fe7142063517dfb17bfd3ada394e1dd7ee44ba7 (patch) | |
tree | 769fd60024af3a469a930f2c08e093e62b4f5bf7 /drivers/gpu | |
parent | d641958f658833b5866ea80861f9ff8eb1519bec (diff) | |
parent | aaea3938b5637ffb1d77e8b7707c207b24e02937 (diff) |
Merge branch 'linux-4.1' of git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes
Regression fix for Fermi acceleration, and fixes important to bringing
up display-less Maxwell boards.
* 'linux-4.1' of git://anongit.freedesktop.org/git/nouveau/linux-2.6:
drm/nouveau/gr/gm204: remove a stray printk
drm/nouveau/devinit/gm100-: force devinit table execution on boards without PDISP
drm/nouveau/devinit/gf100: make the force-post condition more obvious
drm/nouveau/gr/gf100-: fix wrong constant definition
Diffstat (limited to 'drivers/gpu')
6 files changed, 11 insertions, 6 deletions
diff --git a/drivers/gpu/drm/nouveau/include/nvif/class.h b/drivers/gpu/drm/nouveau/include/nvif/class.h index 0b5af0fe8659..64f8b2f687d2 100644 --- a/drivers/gpu/drm/nouveau/include/nvif/class.h +++ b/drivers/gpu/drm/nouveau/include/nvif/class.h | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | #define FERMI_TWOD_A 0x0000902d | 15 | #define FERMI_TWOD_A 0x0000902d |
16 | 16 | ||
17 | #define FERMI_MEMORY_TO_MEMORY_FORMAT_A 0x0000903d | 17 | #define FERMI_MEMORY_TO_MEMORY_FORMAT_A 0x00009039 |
18 | 18 | ||
19 | #define KEPLER_INLINE_TO_MEMORY_A 0x0000a040 | 19 | #define KEPLER_INLINE_TO_MEMORY_A 0x0000a040 |
20 | #define KEPLER_INLINE_TO_MEMORY_B 0x0000a140 | 20 | #define KEPLER_INLINE_TO_MEMORY_B 0x0000a140 |
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gm204.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gm204.c index 2f5eadd12a9b..fdb1dcf16a59 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gm204.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gm204.c | |||
@@ -329,7 +329,6 @@ gm204_gr_init(struct nvkm_object *object) | |||
329 | nv_mask(priv, 0x419cc0, 0x00000008, 0x00000008); | 329 | nv_mask(priv, 0x419cc0, 0x00000008, 0x00000008); |
330 | 330 | ||
331 | for (gpc = 0; gpc < priv->gpc_nr; gpc++) { | 331 | for (gpc = 0; gpc < priv->gpc_nr; gpc++) { |
332 | printk(KERN_ERR "ppc %d %d\n", gpc, priv->ppc_nr[gpc]); | ||
333 | for (ppc = 0; ppc < priv->ppc_nr[gpc]; ppc++) | 332 | for (ppc = 0; ppc < priv->ppc_nr[gpc]; ppc++) |
334 | nv_wr32(priv, PPC_UNIT(gpc, ppc, 0x038), 0xc0000000); | 333 | nv_wr32(priv, PPC_UNIT(gpc, ppc, 0x038), 0xc0000000); |
335 | nv_wr32(priv, GPC_UNIT(gpc, 0x0420), 0xc0000000); | 334 | nv_wr32(priv, GPC_UNIT(gpc, 0x0420), 0xc0000000); |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gf100.c b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gf100.c index e8778c67578e..c61102f70805 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gf100.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gf100.c | |||
@@ -90,12 +90,14 @@ gf100_devinit_disable(struct nvkm_devinit *devinit) | |||
90 | return disable; | 90 | return disable; |
91 | } | 91 | } |
92 | 92 | ||
93 | static int | 93 | int |
94 | gf100_devinit_ctor(struct nvkm_object *parent, struct nvkm_object *engine, | 94 | gf100_devinit_ctor(struct nvkm_object *parent, struct nvkm_object *engine, |
95 | struct nvkm_oclass *oclass, void *data, u32 size, | 95 | struct nvkm_oclass *oclass, void *data, u32 size, |
96 | struct nvkm_object **pobject) | 96 | struct nvkm_object **pobject) |
97 | { | 97 | { |
98 | struct nvkm_devinit_impl *impl = (void *)oclass; | ||
98 | struct nv50_devinit_priv *priv; | 99 | struct nv50_devinit_priv *priv; |
100 | u64 disable; | ||
99 | int ret; | 101 | int ret; |
100 | 102 | ||
101 | ret = nvkm_devinit_create(parent, engine, oclass, &priv); | 103 | ret = nvkm_devinit_create(parent, engine, oclass, &priv); |
@@ -103,7 +105,8 @@ gf100_devinit_ctor(struct nvkm_object *parent, struct nvkm_object *engine, | |||
103 | if (ret) | 105 | if (ret) |
104 | return ret; | 106 | return ret; |
105 | 107 | ||
106 | if (nv_rd32(priv, 0x022500) & 0x00000001) | 108 | disable = impl->disable(&priv->base); |
109 | if (disable & (1ULL << NVDEV_ENGINE_DISP)) | ||
107 | priv->base.post = true; | 110 | priv->base.post = true; |
108 | 111 | ||
109 | return 0; | 112 | return 0; |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm107.c b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm107.c index b345a53e881d..87ca0ece37b4 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm107.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm107.c | |||
@@ -48,7 +48,7 @@ struct nvkm_oclass * | |||
48 | gm107_devinit_oclass = &(struct nvkm_devinit_impl) { | 48 | gm107_devinit_oclass = &(struct nvkm_devinit_impl) { |
49 | .base.handle = NV_SUBDEV(DEVINIT, 0x07), | 49 | .base.handle = NV_SUBDEV(DEVINIT, 0x07), |
50 | .base.ofuncs = &(struct nvkm_ofuncs) { | 50 | .base.ofuncs = &(struct nvkm_ofuncs) { |
51 | .ctor = nv50_devinit_ctor, | 51 | .ctor = gf100_devinit_ctor, |
52 | .dtor = _nvkm_devinit_dtor, | 52 | .dtor = _nvkm_devinit_dtor, |
53 | .init = nv50_devinit_init, | 53 | .init = nv50_devinit_init, |
54 | .fini = _nvkm_devinit_fini, | 54 | .fini = _nvkm_devinit_fini, |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm204.c b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm204.c index 535172c5f1ad..1076fcf0d716 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm204.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm204.c | |||
@@ -161,7 +161,7 @@ struct nvkm_oclass * | |||
161 | gm204_devinit_oclass = &(struct nvkm_devinit_impl) { | 161 | gm204_devinit_oclass = &(struct nvkm_devinit_impl) { |
162 | .base.handle = NV_SUBDEV(DEVINIT, 0x07), | 162 | .base.handle = NV_SUBDEV(DEVINIT, 0x07), |
163 | .base.ofuncs = &(struct nvkm_ofuncs) { | 163 | .base.ofuncs = &(struct nvkm_ofuncs) { |
164 | .ctor = nv50_devinit_ctor, | 164 | .ctor = gf100_devinit_ctor, |
165 | .dtor = _nvkm_devinit_dtor, | 165 | .dtor = _nvkm_devinit_dtor, |
166 | .init = nv50_devinit_init, | 166 | .init = nv50_devinit_init, |
167 | .fini = _nvkm_devinit_fini, | 167 | .fini = _nvkm_devinit_fini, |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv50.h b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv50.h index b882b65ff3cd..9243521c80ac 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv50.h +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/devinit/nv50.h | |||
@@ -15,6 +15,9 @@ int nv50_devinit_pll_set(struct nvkm_devinit *, u32, u32); | |||
15 | 15 | ||
16 | int gt215_devinit_pll_set(struct nvkm_devinit *, u32, u32); | 16 | int gt215_devinit_pll_set(struct nvkm_devinit *, u32, u32); |
17 | 17 | ||
18 | int gf100_devinit_ctor(struct nvkm_object *, struct nvkm_object *, | ||
19 | struct nvkm_oclass *, void *, u32, | ||
20 | struct nvkm_object **); | ||
18 | int gf100_devinit_pll_set(struct nvkm_devinit *, u32, u32); | 21 | int gf100_devinit_pll_set(struct nvkm_devinit *, u32, u32); |
19 | 22 | ||
20 | u64 gm107_devinit_disable(struct nvkm_devinit *); | 23 | u64 gm107_devinit_disable(struct nvkm_devinit *); |