chan.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef __NVKM_FIFO_CHAN_H__
  3. #define __NVKM_FIFO_CHAN_H__
  4. #define nvkm_fifo_chan(p) container_of((p), struct nvkm_fifo_chan, object)
  5. #include "priv.h"
  6. struct nvkm_fifo_chan_func {
  7. void *(*dtor)(struct nvkm_fifo_chan *);
  8. void (*init)(struct nvkm_fifo_chan *);
  9. void (*fini)(struct nvkm_fifo_chan *);
  10. int (*ntfy)(struct nvkm_fifo_chan *, u32 type, struct nvkm_event **);
  11. int (*engine_ctor)(struct nvkm_fifo_chan *, struct nvkm_engine *,
  12. struct nvkm_object *);
  13. void (*engine_dtor)(struct nvkm_fifo_chan *, struct nvkm_engine *);
  14. int (*engine_init)(struct nvkm_fifo_chan *, struct nvkm_engine *);
  15. int (*engine_fini)(struct nvkm_fifo_chan *, struct nvkm_engine *,
  16. bool suspend);
  17. int (*object_ctor)(struct nvkm_fifo_chan *, struct nvkm_object *);
  18. void (*object_dtor)(struct nvkm_fifo_chan *, int);
  19. };
  20. int nvkm_fifo_chan_ctor(const struct nvkm_fifo_chan_func *, struct nvkm_fifo *,
  21. u32 size, u32 align, bool zero, u64 vm, u64 push,
  22. u64 engines, int bar, u32 base, u32 user,
  23. const struct nvkm_oclass *, struct nvkm_fifo_chan *);
  24. struct nvkm_fifo_chan_oclass {
  25. int (*ctor)(struct nvkm_fifo *, const struct nvkm_oclass *,
  26. void *data, u32 size, struct nvkm_object **);
  27. struct nvkm_sclass base;
  28. };
  29. int gf100_fifo_chan_ntfy(struct nvkm_fifo_chan *, u32, struct nvkm_event **);
  30. #endif