falcon.h 876 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifndef __NVKM_FALCON_H__
  2. #define __NVKM_FALCON_H__
  3. #define nvkm_falcon(p) container_of((p), struct nvkm_falcon, engine)
  4. #include <core/engine.h>
  5. struct nvkm_fifo_chan;
  6. struct nvkm_falcon {
  7. const struct nvkm_falcon_func *func;
  8. struct nvkm_engine engine;
  9. u32 addr;
  10. u8 version;
  11. u8 secret;
  12. struct nvkm_memory *core;
  13. bool external;
  14. struct {
  15. u32 limit;
  16. u32 *data;
  17. u32 size;
  18. } code;
  19. struct {
  20. u32 limit;
  21. u32 *data;
  22. u32 size;
  23. } data;
  24. };
  25. int nvkm_falcon_new_(const struct nvkm_falcon_func *, struct nvkm_device *,
  26. int index, bool enable, u32 addr, struct nvkm_engine **);
  27. struct nvkm_falcon_func {
  28. struct {
  29. u32 *data;
  30. u32 size;
  31. } code;
  32. struct {
  33. u32 *data;
  34. u32 size;
  35. } data;
  36. u32 pmc_enable;
  37. void (*init)(struct nvkm_falcon *);
  38. void (*intr)(struct nvkm_falcon *, struct nvkm_fifo_chan *);
  39. struct nvkm_sclass sclass[];
  40. };
  41. #endif