This source file includes following definitions.
- nvkm_nvdec_oneinit
- nvkm_nvdec_dtor
- nvkm_nvdec_new_
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 #include "priv.h"
23
24 #include <subdev/top.h>
25 #include <engine/falcon.h>
26
27 static int
28 nvkm_nvdec_oneinit(struct nvkm_engine *engine)
29 {
30 struct nvkm_nvdec *nvdec = nvkm_nvdec(engine);
31 struct nvkm_subdev *subdev = &nvdec->engine.subdev;
32
33 nvdec->addr = nvkm_top_addr(subdev->device, subdev->index);
34 if (!nvdec->addr)
35 return -EINVAL;
36
37
38 return nvkm_falcon_v1_new(subdev, "NVDEC", nvdec->addr,
39 &nvdec->falcon);
40 }
41
42 static void *
43 nvkm_nvdec_dtor(struct nvkm_engine *engine)
44 {
45 struct nvkm_nvdec *nvdec = nvkm_nvdec(engine);
46 nvkm_falcon_del(&nvdec->falcon);
47 return nvdec;
48 }
49
50 static const struct nvkm_engine_func
51 nvkm_nvdec = {
52 .dtor = nvkm_nvdec_dtor,
53 .oneinit = nvkm_nvdec_oneinit,
54 };
55
56 int
57 nvkm_nvdec_new_(struct nvkm_device *device, int index,
58 struct nvkm_nvdec **pnvdec)
59 {
60 struct nvkm_nvdec *nvdec;
61
62 if (!(nvdec = *pnvdec = kzalloc(sizeof(*nvdec), GFP_KERNEL)))
63 return -ENOMEM;
64
65 return nvkm_engine_ctor(&nvkm_nvdec, device, index, true,
66 &nvdec->engine);
67 };