xref: /linux/drivers/gpu/drm/nouveau/nvkm/engine/mpeg/nv31.h (revision a940daa52167e9db8ecce82213813b735a9d9f23)
1b7019ac5SIlia Mirkin /* SPDX-License-Identifier: MIT */
2c39f472eSBen Skeggs #ifndef __NV31_MPEG_H__
3c39f472eSBen Skeggs #define __NV31_MPEG_H__
47624fc01SBen Skeggs #define nv31_mpeg(p) container_of((p), struct nv31_mpeg, engine)
5218f978dSBen Skeggs #include "priv.h"
6c39f472eSBen Skeggs #include <engine/mpeg.h>
7c39f472eSBen Skeggs 
8b19de4f3SBen Skeggs struct nv31_mpeg {
97624fc01SBen Skeggs 	const struct nv31_mpeg_func *func;
107624fc01SBen Skeggs 	struct nvkm_engine engine;
11c39f472eSBen Skeggs 	struct nv31_mpeg_chan *chan;
127624fc01SBen Skeggs };
137624fc01SBen Skeggs 
14e5e95a76SBen Skeggs int nv31_mpeg_new_(const struct nv31_mpeg_func *, struct nvkm_device *, enum nvkm_subdev_type, int,
15e5e95a76SBen Skeggs 		   struct nvkm_engine **);
167624fc01SBen Skeggs 
177624fc01SBen Skeggs struct nv31_mpeg_func {
18590801c1SBen Skeggs 	bool (*mthd_dma)(struct nvkm_device *, u32 mthd, u32 data);
19c39f472eSBen Skeggs };
20218f978dSBen Skeggs 
21218f978dSBen Skeggs #define nv31_mpeg_chan(p) container_of((p), struct nv31_mpeg_chan, object)
224246b92cSBen Skeggs #include <core/object.h>
23218f978dSBen Skeggs 
24218f978dSBen Skeggs struct nv31_mpeg_chan {
25218f978dSBen Skeggs 	struct nvkm_object object;
26218f978dSBen Skeggs 	struct nv31_mpeg *mpeg;
27*c546656fSBen Skeggs 	struct nvkm_chan *fifo;
28218f978dSBen Skeggs };
29218f978dSBen Skeggs 
30*c546656fSBen Skeggs int nv31_mpeg_chan_new(struct nvkm_chan *, const struct nvkm_oclass *,
31218f978dSBen Skeggs 		       struct nvkm_object **);
32c39f472eSBen Skeggs #endif
33