diff options
Diffstat (limited to 'drivers/gpu/drm/nouveau/core/engine/dmaobj/nv50.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/core/engine/dmaobj/nv50.c | 56 |
1 files changed, 1 insertions, 55 deletions
diff --git a/drivers/gpu/drm/nouveau/core/engine/dmaobj/nv50.c b/drivers/gpu/drm/nouveau/core/engine/dmaobj/nv50.c index 045d2565e28..58876f53b3a 100644 --- a/drivers/gpu/drm/nouveau/core/engine/dmaobj/nv50.c +++ b/drivers/gpu/drm/nouveau/core/engine/dmaobj/nv50.c | |||
@@ -32,10 +32,6 @@ struct nv50_dmaeng_priv { | |||
32 | struct nouveau_dmaeng base; | 32 | struct nouveau_dmaeng base; |
33 | }; | 33 | }; |
34 | 34 | ||
35 | struct nv50_dmaobj_priv { | ||
36 | struct nouveau_dmaobj base; | ||
37 | }; | ||
38 | |||
39 | static int | 35 | static int |
40 | nv50_dmaobj_bind(struct nouveau_dmaeng *dmaeng, | 36 | nv50_dmaobj_bind(struct nouveau_dmaeng *dmaeng, |
41 | struct nouveau_object *parent, | 37 | struct nouveau_object *parent, |
@@ -94,56 +90,6 @@ nv50_dmaobj_bind(struct nouveau_dmaeng *dmaeng, | |||
94 | } | 90 | } |
95 | 91 | ||
96 | static int | 92 | static int |
97 | nv50_dmaobj_ctor(struct nouveau_object *parent, struct nouveau_object *engine, | ||
98 | struct nouveau_oclass *oclass, void *data, u32 size, | ||
99 | struct nouveau_object **pobject) | ||
100 | { | ||
101 | struct nouveau_dmaeng *dmaeng = (void *)engine; | ||
102 | struct nv50_dmaobj_priv *dmaobj; | ||
103 | struct nouveau_gpuobj *gpuobj; | ||
104 | int ret; | ||
105 | |||
106 | ret = nouveau_dmaobj_create(parent, engine, oclass, | ||
107 | data, size, &dmaobj); | ||
108 | *pobject = nv_object(dmaobj); | ||
109 | if (ret) | ||
110 | return ret; | ||
111 | |||
112 | switch (nv_mclass(parent)) { | ||
113 | case NV_DEVICE_CLASS: | ||
114 | break; | ||
115 | case NV50_CHANNEL_DMA_CLASS: | ||
116 | case NV84_CHANNEL_DMA_CLASS: | ||
117 | case NV50_CHANNEL_IND_CLASS: | ||
118 | case NV84_CHANNEL_IND_CLASS: | ||
119 | ret = dmaeng->bind(dmaeng, *pobject, &dmaobj->base, &gpuobj); | ||
120 | nouveau_object_ref(NULL, pobject); | ||
121 | *pobject = nv_object(gpuobj); | ||
122 | break; | ||
123 | default: | ||
124 | return -EINVAL; | ||
125 | } | ||
126 | |||
127 | return ret; | ||
128 | } | ||
129 | |||
130 | static struct nouveau_ofuncs | ||
131 | nv50_dmaobj_ofuncs = { | ||
132 | .ctor = nv50_dmaobj_ctor, | ||
133 | .dtor = _nouveau_dmaobj_dtor, | ||
134 | .init = _nouveau_dmaobj_init, | ||
135 | .fini = _nouveau_dmaobj_fini, | ||
136 | }; | ||
137 | |||
138 | static struct nouveau_oclass | ||
139 | nv50_dmaobj_sclass[] = { | ||
140 | { 0x0002, &nv50_dmaobj_ofuncs }, | ||
141 | { 0x0003, &nv50_dmaobj_ofuncs }, | ||
142 | { 0x003d, &nv50_dmaobj_ofuncs }, | ||
143 | {} | ||
144 | }; | ||
145 | |||
146 | static int | ||
147 | nv50_dmaeng_ctor(struct nouveau_object *parent, struct nouveau_object *engine, | 93 | nv50_dmaeng_ctor(struct nouveau_object *parent, struct nouveau_object *engine, |
148 | struct nouveau_oclass *oclass, void *data, u32 size, | 94 | struct nouveau_oclass *oclass, void *data, u32 size, |
149 | struct nouveau_object **pobject) | 95 | struct nouveau_object **pobject) |
@@ -156,7 +102,7 @@ nv50_dmaeng_ctor(struct nouveau_object *parent, struct nouveau_object *engine, | |||
156 | if (ret) | 102 | if (ret) |
157 | return ret; | 103 | return ret; |
158 | 104 | ||
159 | priv->base.base.sclass = nv50_dmaobj_sclass; | 105 | nv_engine(priv)->sclass = nouveau_dmaobj_sclass; |
160 | priv->base.bind = nv50_dmaobj_bind; | 106 | priv->base.bind = nv50_dmaobj_bind; |
161 | return 0; | 107 | return 0; |
162 | } | 108 | } |