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