diff options
author | Ilia Mirkin <imirkin@alum.mit.edu> | 2013-07-28 22:30:06 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2013-09-03 23:46:15 -0400 |
commit | ef7d64e5c27bc2587b4a20c9ae04413ce679bd8c (patch) | |
tree | 775522e08719e62fd1aac7695e9fbfb7380a7261 /drivers/gpu/drm | |
parent | 57be046e5af098ab2ff972269799ef495a7f8a2b (diff) |
drm/nouveau/vdec: implement support for VP3 engines
For NV98+, BSP/VP/PPP are all FUC-based engines. Hook them all up in the
same way as NVC0, but with a couple of different values. Also make sure
that the PPP engine is handled in the fifo/mc/vm.
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/nouveau/core/engine/bsp/nv98.c | 52 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/core/engine/fifo/nv84.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/core/engine/ppp/nv98.c | 52 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/core/engine/vp/nv98.c | 47 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/nouveau/core/subdev/vm/nv50.c | 1 |
6 files changed, 104 insertions, 53 deletions
diff --git a/drivers/gpu/drm/nouveau/core/engine/bsp/nv98.c b/drivers/gpu/drm/nouveau/core/engine/bsp/nv98.c index 8bf92b0e6d82..6b089e022fd2 100644 --- a/drivers/gpu/drm/nouveau/core/engine/bsp/nv98.c +++ b/drivers/gpu/drm/nouveau/core/engine/bsp/nv98.c | |||
@@ -19,16 +19,14 @@ | |||
19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | 19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
20 | * OTHER DEALINGS IN THE SOFTWARE. | 20 | * OTHER DEALINGS IN THE SOFTWARE. |
21 | * | 21 | * |
22 | * Authors: Ben Skeggs | 22 | * Authors: Ben Skeggs, Maarten Lankhorst, Ilia Mirkin |
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include <core/engctx.h> | 25 | #include <engine/falcon.h> |
26 | #include <core/class.h> | ||
27 | |||
28 | #include <engine/bsp.h> | 26 | #include <engine/bsp.h> |
29 | 27 | ||
30 | struct nv98_bsp_priv { | 28 | struct nv98_bsp_priv { |
31 | struct nouveau_engine base; | 29 | struct nouveau_falcon base; |
32 | }; | 30 | }; |
33 | 31 | ||
34 | /******************************************************************************* | 32 | /******************************************************************************* |
@@ -37,31 +35,49 @@ struct nv98_bsp_priv { | |||
37 | 35 | ||
38 | static struct nouveau_oclass | 36 | static struct nouveau_oclass |
39 | nv98_bsp_sclass[] = { | 37 | nv98_bsp_sclass[] = { |
38 | { 0x88b1, &nouveau_object_ofuncs }, | ||
39 | { 0x85b1, &nouveau_object_ofuncs }, | ||
40 | { 0x86b1, &nouveau_object_ofuncs }, | ||
40 | {}, | 41 | {}, |
41 | }; | 42 | }; |
42 | 43 | ||
43 | /******************************************************************************* | 44 | /******************************************************************************* |
44 | * BSP context | 45 | * PBSP context |
45 | ******************************************************************************/ | 46 | ******************************************************************************/ |
46 | 47 | ||
47 | static struct nouveau_oclass | 48 | static struct nouveau_oclass |
48 | nv98_bsp_cclass = { | 49 | nv98_bsp_cclass = { |
49 | .handle = NV_ENGCTX(BSP, 0x98), | 50 | .handle = NV_ENGCTX(BSP, 0x98), |
50 | .ofuncs = &(struct nouveau_ofuncs) { | 51 | .ofuncs = &(struct nouveau_ofuncs) { |
51 | .ctor = _nouveau_engctx_ctor, | 52 | .ctor = _nouveau_falcon_context_ctor, |
52 | .dtor = _nouveau_engctx_dtor, | 53 | .dtor = _nouveau_falcon_context_dtor, |
53 | .init = _nouveau_engctx_init, | 54 | .init = _nouveau_falcon_context_init, |
54 | .fini = _nouveau_engctx_fini, | 55 | .fini = _nouveau_falcon_context_fini, |
55 | .rd32 = _nouveau_engctx_rd32, | 56 | .rd32 = _nouveau_falcon_context_rd32, |
56 | .wr32 = _nouveau_engctx_wr32, | 57 | .wr32 = _nouveau_falcon_context_wr32, |
57 | }, | 58 | }, |
58 | }; | 59 | }; |
59 | 60 | ||
60 | /******************************************************************************* | 61 | /******************************************************************************* |
61 | * BSP engine/subdev functions | 62 | * PBSP engine/subdev functions |
62 | ******************************************************************************/ | 63 | ******************************************************************************/ |
63 | 64 | ||
64 | static int | 65 | static int |
66 | nv98_bsp_init(struct nouveau_object *object) | ||
67 | { | ||
68 | struct nv98_bsp_priv *priv = (void *)object; | ||
69 | int ret; | ||
70 | |||
71 | ret = nouveau_falcon_init(&priv->base); | ||
72 | if (ret) | ||
73 | return ret; | ||
74 | |||
75 | nv_wr32(priv, 0x084010, 0x0000ffd2); | ||
76 | nv_wr32(priv, 0x08401c, 0x0000fff2); | ||
77 | return 0; | ||
78 | } | ||
79 | |||
80 | static int | ||
65 | nv98_bsp_ctor(struct nouveau_object *parent, struct nouveau_object *engine, | 81 | nv98_bsp_ctor(struct nouveau_object *parent, struct nouveau_object *engine, |
66 | struct nouveau_oclass *oclass, void *data, u32 size, | 82 | struct nouveau_oclass *oclass, void *data, u32 size, |
67 | struct nouveau_object **pobject) | 83 | struct nouveau_object **pobject) |
@@ -69,7 +85,7 @@ nv98_bsp_ctor(struct nouveau_object *parent, struct nouveau_object *engine, | |||
69 | struct nv98_bsp_priv *priv; | 85 | struct nv98_bsp_priv *priv; |
70 | int ret; | 86 | int ret; |
71 | 87 | ||
72 | ret = nouveau_engine_create(parent, engine, oclass, true, | 88 | ret = nouveau_falcon_create(parent, engine, oclass, 0x084000, true, |
73 | "PBSP", "bsp", &priv); | 89 | "PBSP", "bsp", &priv); |
74 | *pobject = nv_object(priv); | 90 | *pobject = nv_object(priv); |
75 | if (ret) | 91 | if (ret) |
@@ -86,8 +102,10 @@ nv98_bsp_oclass = { | |||
86 | .handle = NV_ENGINE(BSP, 0x98), | 102 | .handle = NV_ENGINE(BSP, 0x98), |
87 | .ofuncs = &(struct nouveau_ofuncs) { | 103 | .ofuncs = &(struct nouveau_ofuncs) { |
88 | .ctor = nv98_bsp_ctor, | 104 | .ctor = nv98_bsp_ctor, |
89 | .dtor = _nouveau_engine_dtor, | 105 | .dtor = _nouveau_falcon_dtor, |
90 | .init = _nouveau_engine_init, | 106 | .init = nv98_bsp_init, |
91 | .fini = _nouveau_engine_fini, | 107 | .fini = _nouveau_falcon_fini, |
108 | .rd32 = _nouveau_falcon_rd32, | ||
109 | .wr32 = _nouveau_falcon_wr32, | ||
92 | }, | 110 | }, |
93 | }; | 111 | }; |
diff --git a/drivers/gpu/drm/nouveau/core/engine/fifo/nv84.c b/drivers/gpu/drm/nouveau/core/engine/fifo/nv84.c index 433b2d8b73b2..91a87cd7195a 100644 --- a/drivers/gpu/drm/nouveau/core/engine/fifo/nv84.c +++ b/drivers/gpu/drm/nouveau/core/engine/fifo/nv84.c | |||
@@ -56,6 +56,7 @@ nv84_fifo_context_attach(struct nouveau_object *parent, | |||
56 | case NVDEV_ENGINE_SW : return 0; | 56 | case NVDEV_ENGINE_SW : return 0; |
57 | case NVDEV_ENGINE_GR : addr = 0x0020; break; | 57 | case NVDEV_ENGINE_GR : addr = 0x0020; break; |
58 | case NVDEV_ENGINE_VP : addr = 0x0040; break; | 58 | case NVDEV_ENGINE_VP : addr = 0x0040; break; |
59 | case NVDEV_ENGINE_PPP : | ||
59 | case NVDEV_ENGINE_MPEG : addr = 0x0060; break; | 60 | case NVDEV_ENGINE_MPEG : addr = 0x0060; break; |
60 | case NVDEV_ENGINE_BSP : addr = 0x0080; break; | 61 | case NVDEV_ENGINE_BSP : addr = 0x0080; break; |
61 | case NVDEV_ENGINE_CRYPT: addr = 0x00a0; break; | 62 | case NVDEV_ENGINE_CRYPT: addr = 0x00a0; break; |
@@ -91,6 +92,7 @@ nv84_fifo_context_detach(struct nouveau_object *parent, bool suspend, | |||
91 | case NVDEV_ENGINE_SW : return 0; | 92 | case NVDEV_ENGINE_SW : return 0; |
92 | case NVDEV_ENGINE_GR : engn = 0; addr = 0x0020; break; | 93 | case NVDEV_ENGINE_GR : engn = 0; addr = 0x0020; break; |
93 | case NVDEV_ENGINE_VP : engn = 3; addr = 0x0040; break; | 94 | case NVDEV_ENGINE_VP : engn = 3; addr = 0x0040; break; |
95 | case NVDEV_ENGINE_PPP : | ||
94 | case NVDEV_ENGINE_MPEG : engn = 1; addr = 0x0060; break; | 96 | case NVDEV_ENGINE_MPEG : engn = 1; addr = 0x0060; break; |
95 | case NVDEV_ENGINE_BSP : engn = 5; addr = 0x0080; break; | 97 | case NVDEV_ENGINE_BSP : engn = 5; addr = 0x0080; break; |
96 | case NVDEV_ENGINE_CRYPT: engn = 4; addr = 0x00a0; break; | 98 | case NVDEV_ENGINE_CRYPT: engn = 4; addr = 0x00a0; break; |
diff --git a/drivers/gpu/drm/nouveau/core/engine/ppp/nv98.c b/drivers/gpu/drm/nouveau/core/engine/ppp/nv98.c index 5a5b2a773ed7..13bf31c40aa1 100644 --- a/drivers/gpu/drm/nouveau/core/engine/ppp/nv98.c +++ b/drivers/gpu/drm/nouveau/core/engine/ppp/nv98.c | |||
@@ -19,21 +19,14 @@ | |||
19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | 19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
20 | * OTHER DEALINGS IN THE SOFTWARE. | 20 | * OTHER DEALINGS IN THE SOFTWARE. |
21 | * | 21 | * |
22 | * Authors: Ben Skeggs | 22 | * Authors: Ben Skeggs, Maarten Lankhorst, Ilia Mirkin |
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include <core/engine.h> | 25 | #include <engine/falcon.h> |
26 | #include <core/engctx.h> | ||
27 | #include <core/class.h> | ||
28 | |||
29 | #include <engine/ppp.h> | 26 | #include <engine/ppp.h> |
30 | 27 | ||
31 | struct nv98_ppp_priv { | 28 | struct nv98_ppp_priv { |
32 | struct nouveau_engine base; | 29 | struct nouveau_falcon base; |
33 | }; | ||
34 | |||
35 | struct nv98_ppp_chan { | ||
36 | struct nouveau_engctx base; | ||
37 | }; | 30 | }; |
38 | 31 | ||
39 | /******************************************************************************* | 32 | /******************************************************************************* |
@@ -42,6 +35,8 @@ struct nv98_ppp_chan { | |||
42 | 35 | ||
43 | static struct nouveau_oclass | 36 | static struct nouveau_oclass |
44 | nv98_ppp_sclass[] = { | 37 | nv98_ppp_sclass[] = { |
38 | { 0x88b3, &nouveau_object_ofuncs }, | ||
39 | { 0x85b3, &nouveau_object_ofuncs }, | ||
45 | {}, | 40 | {}, |
46 | }; | 41 | }; |
47 | 42 | ||
@@ -53,12 +48,12 @@ static struct nouveau_oclass | |||
53 | nv98_ppp_cclass = { | 48 | nv98_ppp_cclass = { |
54 | .handle = NV_ENGCTX(PPP, 0x98), | 49 | .handle = NV_ENGCTX(PPP, 0x98), |
55 | .ofuncs = &(struct nouveau_ofuncs) { | 50 | .ofuncs = &(struct nouveau_ofuncs) { |
56 | .ctor = _nouveau_engctx_ctor, | 51 | .ctor = _nouveau_falcon_context_ctor, |
57 | .dtor = _nouveau_engctx_dtor, | 52 | .dtor = _nouveau_falcon_context_dtor, |
58 | .init = _nouveau_engctx_init, | 53 | .init = _nouveau_falcon_context_init, |
59 | .fini = _nouveau_engctx_fini, | 54 | .fini = _nouveau_falcon_context_fini, |
60 | .rd32 = _nouveau_engctx_rd32, | 55 | .rd32 = _nouveau_falcon_context_rd32, |
61 | .wr32 = _nouveau_engctx_wr32, | 56 | .wr32 = _nouveau_falcon_context_wr32, |
62 | }, | 57 | }, |
63 | }; | 58 | }; |
64 | 59 | ||
@@ -67,6 +62,21 @@ nv98_ppp_cclass = { | |||
67 | ******************************************************************************/ | 62 | ******************************************************************************/ |
68 | 63 | ||
69 | static int | 64 | static int |
65 | nv98_ppp_init(struct nouveau_object *object) | ||
66 | { | ||
67 | struct nv98_ppp_priv *priv = (void *)object; | ||
68 | int ret; | ||
69 | |||
70 | ret = nouveau_falcon_init(&priv->base); | ||
71 | if (ret) | ||
72 | return ret; | ||
73 | |||
74 | nv_wr32(priv, 0x086010, 0x0000ffd2); | ||
75 | nv_wr32(priv, 0x08601c, 0x0000fff2); | ||
76 | return 0; | ||
77 | } | ||
78 | |||
79 | static int | ||
70 | nv98_ppp_ctor(struct nouveau_object *parent, struct nouveau_object *engine, | 80 | nv98_ppp_ctor(struct nouveau_object *parent, struct nouveau_object *engine, |
71 | struct nouveau_oclass *oclass, void *data, u32 size, | 81 | struct nouveau_oclass *oclass, void *data, u32 size, |
72 | struct nouveau_object **pobject) | 82 | struct nouveau_object **pobject) |
@@ -74,7 +84,7 @@ nv98_ppp_ctor(struct nouveau_object *parent, struct nouveau_object *engine, | |||
74 | struct nv98_ppp_priv *priv; | 84 | struct nv98_ppp_priv *priv; |
75 | int ret; | 85 | int ret; |
76 | 86 | ||
77 | ret = nouveau_engine_create(parent, engine, oclass, true, | 87 | ret = nouveau_falcon_create(parent, engine, oclass, 0x086000, true, |
78 | "PPPP", "ppp", &priv); | 88 | "PPPP", "ppp", &priv); |
79 | *pobject = nv_object(priv); | 89 | *pobject = nv_object(priv); |
80 | if (ret) | 90 | if (ret) |
@@ -91,8 +101,10 @@ nv98_ppp_oclass = { | |||
91 | .handle = NV_ENGINE(PPP, 0x98), | 101 | .handle = NV_ENGINE(PPP, 0x98), |
92 | .ofuncs = &(struct nouveau_ofuncs) { | 102 | .ofuncs = &(struct nouveau_ofuncs) { |
93 | .ctor = nv98_ppp_ctor, | 103 | .ctor = nv98_ppp_ctor, |
94 | .dtor = _nouveau_engine_dtor, | 104 | .dtor = _nouveau_falcon_dtor, |
95 | .init = _nouveau_engine_init, | 105 | .init = nv98_ppp_init, |
96 | .fini = _nouveau_engine_fini, | 106 | .fini = _nouveau_falcon_fini, |
107 | .rd32 = _nouveau_falcon_rd32, | ||
108 | .wr32 = _nouveau_falcon_wr32, | ||
97 | }, | 109 | }, |
98 | }; | 110 | }; |
diff --git a/drivers/gpu/drm/nouveau/core/engine/vp/nv98.c b/drivers/gpu/drm/nouveau/core/engine/vp/nv98.c index 8a8236bc84de..fc9ae0ff1ef5 100644 --- a/drivers/gpu/drm/nouveau/core/engine/vp/nv98.c +++ b/drivers/gpu/drm/nouveau/core/engine/vp/nv98.c | |||
@@ -19,16 +19,14 @@ | |||
19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | 19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
20 | * OTHER DEALINGS IN THE SOFTWARE. | 20 | * OTHER DEALINGS IN THE SOFTWARE. |
21 | * | 21 | * |
22 | * Authors: Ben Skeggs | 22 | * Authors: Ben Skeggs, Maarten Lankhorst, Ilia Mirkin |
23 | */ | 23 | */ |
24 | 24 | ||
25 | #include <core/engctx.h> | 25 | #include <engine/falcon.h> |
26 | #include <core/class.h> | ||
27 | |||
28 | #include <engine/vp.h> | 26 | #include <engine/vp.h> |
29 | 27 | ||
30 | struct nv98_vp_priv { | 28 | struct nv98_vp_priv { |
31 | struct nouveau_engine base; | 29 | struct nouveau_falcon base; |
32 | }; | 30 | }; |
33 | 31 | ||
34 | /******************************************************************************* | 32 | /******************************************************************************* |
@@ -37,6 +35,8 @@ struct nv98_vp_priv { | |||
37 | 35 | ||
38 | static struct nouveau_oclass | 36 | static struct nouveau_oclass |
39 | nv98_vp_sclass[] = { | 37 | nv98_vp_sclass[] = { |
38 | { 0x88b2, &nouveau_object_ofuncs }, | ||
39 | { 0x85b2, &nouveau_object_ofuncs }, | ||
40 | {}, | 40 | {}, |
41 | }; | 41 | }; |
42 | 42 | ||
@@ -48,12 +48,12 @@ static struct nouveau_oclass | |||
48 | nv98_vp_cclass = { | 48 | nv98_vp_cclass = { |
49 | .handle = NV_ENGCTX(VP, 0x98), | 49 | .handle = NV_ENGCTX(VP, 0x98), |
50 | .ofuncs = &(struct nouveau_ofuncs) { | 50 | .ofuncs = &(struct nouveau_ofuncs) { |
51 | .ctor = _nouveau_engctx_ctor, | 51 | .ctor = _nouveau_falcon_context_ctor, |
52 | .dtor = _nouveau_engctx_dtor, | 52 | .dtor = _nouveau_falcon_context_dtor, |
53 | .init = _nouveau_engctx_init, | 53 | .init = _nouveau_falcon_context_init, |
54 | .fini = _nouveau_engctx_fini, | 54 | .fini = _nouveau_falcon_context_fini, |
55 | .rd32 = _nouveau_engctx_rd32, | 55 | .rd32 = _nouveau_falcon_context_rd32, |
56 | .wr32 = _nouveau_engctx_wr32, | 56 | .wr32 = _nouveau_falcon_context_wr32, |
57 | }, | 57 | }, |
58 | }; | 58 | }; |
59 | 59 | ||
@@ -62,6 +62,21 @@ nv98_vp_cclass = { | |||
62 | ******************************************************************************/ | 62 | ******************************************************************************/ |
63 | 63 | ||
64 | static int | 64 | static int |
65 | nv98_vp_init(struct nouveau_object *object) | ||
66 | { | ||
67 | struct nv98_vp_priv *priv = (void *)object; | ||
68 | int ret; | ||
69 | |||
70 | ret = nouveau_falcon_init(&priv->base); | ||
71 | if (ret) | ||
72 | return ret; | ||
73 | |||
74 | nv_wr32(priv, 0x085010, 0x0000ffd2); | ||
75 | nv_wr32(priv, 0x08501c, 0x0000fff2); | ||
76 | return 0; | ||
77 | } | ||
78 | |||
79 | static int | ||
65 | nv98_vp_ctor(struct nouveau_object *parent, struct nouveau_object *engine, | 80 | nv98_vp_ctor(struct nouveau_object *parent, struct nouveau_object *engine, |
66 | struct nouveau_oclass *oclass, void *data, u32 size, | 81 | struct nouveau_oclass *oclass, void *data, u32 size, |
67 | struct nouveau_object **pobject) | 82 | struct nouveau_object **pobject) |
@@ -69,7 +84,7 @@ nv98_vp_ctor(struct nouveau_object *parent, struct nouveau_object *engine, | |||
69 | struct nv98_vp_priv *priv; | 84 | struct nv98_vp_priv *priv; |
70 | int ret; | 85 | int ret; |
71 | 86 | ||
72 | ret = nouveau_engine_create(parent, engine, oclass, true, | 87 | ret = nouveau_falcon_create(parent, engine, oclass, 0x085000, true, |
73 | "PVP", "vp", &priv); | 88 | "PVP", "vp", &priv); |
74 | *pobject = nv_object(priv); | 89 | *pobject = nv_object(priv); |
75 | if (ret) | 90 | if (ret) |
@@ -86,8 +101,10 @@ nv98_vp_oclass = { | |||
86 | .handle = NV_ENGINE(VP, 0x98), | 101 | .handle = NV_ENGINE(VP, 0x98), |
87 | .ofuncs = &(struct nouveau_ofuncs) { | 102 | .ofuncs = &(struct nouveau_ofuncs) { |
88 | .ctor = nv98_vp_ctor, | 103 | .ctor = nv98_vp_ctor, |
89 | .dtor = _nouveau_engine_dtor, | 104 | .dtor = _nouveau_falcon_dtor, |
90 | .init = _nouveau_engine_init, | 105 | .init = nv98_vp_init, |
91 | .fini = _nouveau_engine_fini, | 106 | .fini = _nouveau_falcon_fini, |
107 | .rd32 = _nouveau_falcon_rd32, | ||
108 | .wr32 = _nouveau_falcon_wr32, | ||
92 | }, | 109 | }, |
93 | }; | 110 | }; |
diff --git a/drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c b/drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c index 0d57b4d3e001..06710419a59b 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c +++ b/drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c | |||
@@ -35,6 +35,7 @@ nv98_mc_intr[] = { | |||
35 | { 0x00001000, NVDEV_ENGINE_GR }, | 35 | { 0x00001000, NVDEV_ENGINE_GR }, |
36 | { 0x00004000, NVDEV_ENGINE_CRYPT }, /* NV84:NVA3 */ | 36 | { 0x00004000, NVDEV_ENGINE_CRYPT }, /* NV84:NVA3 */ |
37 | { 0x00008000, NVDEV_ENGINE_BSP }, | 37 | { 0x00008000, NVDEV_ENGINE_BSP }, |
38 | { 0x00020000, NVDEV_ENGINE_VP }, | ||
38 | { 0x00080000, NVDEV_SUBDEV_THERM }, /* NVA3:NVC0 */ | 39 | { 0x00080000, NVDEV_SUBDEV_THERM }, /* NVA3:NVC0 */ |
39 | { 0x00100000, NVDEV_SUBDEV_TIMER }, | 40 | { 0x00100000, NVDEV_SUBDEV_TIMER }, |
40 | { 0x00200000, NVDEV_SUBDEV_GPIO }, | 41 | { 0x00200000, NVDEV_SUBDEV_GPIO }, |
@@ -42,7 +43,7 @@ nv98_mc_intr[] = { | |||
42 | { 0x04000000, NVDEV_ENGINE_DISP }, | 43 | { 0x04000000, NVDEV_ENGINE_DISP }, |
43 | { 0x10000000, NVDEV_SUBDEV_BUS }, | 44 | { 0x10000000, NVDEV_SUBDEV_BUS }, |
44 | { 0x80000000, NVDEV_ENGINE_SW }, | 45 | { 0x80000000, NVDEV_ENGINE_SW }, |
45 | { 0x0040d101, NVDEV_SUBDEV_FB }, | 46 | { 0x0042d101, NVDEV_SUBDEV_FB }, |
46 | {}, | 47 | {}, |
47 | }; | 48 | }; |
48 | 49 | ||
diff --git a/drivers/gpu/drm/nouveau/core/subdev/vm/nv50.c b/drivers/gpu/drm/nouveau/core/subdev/vm/nv50.c index 07dd1fe2d6fb..a4aa81a2173b 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/vm/nv50.c +++ b/drivers/gpu/drm/nouveau/core/subdev/vm/nv50.c | |||
@@ -174,6 +174,7 @@ nv50_vm_flush(struct nouveau_vm *vm) | |||
174 | case NVDEV_ENGINE_GR : vme = 0x00; break; | 174 | case NVDEV_ENGINE_GR : vme = 0x00; break; |
175 | case NVDEV_ENGINE_VP : vme = 0x01; break; | 175 | case NVDEV_ENGINE_VP : vme = 0x01; break; |
176 | case NVDEV_SUBDEV_BAR : vme = 0x06; break; | 176 | case NVDEV_SUBDEV_BAR : vme = 0x06; break; |
177 | case NVDEV_ENGINE_PPP : | ||
177 | case NVDEV_ENGINE_MPEG : vme = 0x08; break; | 178 | case NVDEV_ENGINE_MPEG : vme = 0x08; break; |
178 | case NVDEV_ENGINE_BSP : vme = 0x09; break; | 179 | case NVDEV_ENGINE_BSP : vme = 0x09; break; |
179 | case NVDEV_ENGINE_CRYPT: vme = 0x0a; break; | 180 | case NVDEV_ENGINE_CRYPT: vme = 0x0a; break; |