priv.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #ifndef __NVKM_MC_PRIV_H__
  2. #define __NVKM_MC_PRIV_H__
  3. #define nvkm_mc(p) container_of((p), struct nvkm_mc, subdev)
  4. #include <subdev/mc.h>
  5. void nvkm_mc_ctor(const struct nvkm_mc_func *, struct nvkm_device *,
  6. int index, struct nvkm_mc *);
  7. int nvkm_mc_new_(const struct nvkm_mc_func *, struct nvkm_device *,
  8. int index, struct nvkm_mc **);
  9. struct nvkm_mc_map {
  10. u32 stat;
  11. u32 unit;
  12. bool noauto;
  13. };
  14. struct nvkm_mc_func {
  15. void (*init)(struct nvkm_mc *);
  16. const struct nvkm_mc_map *intr;
  17. /* disable reporting of interrupts to host */
  18. void (*intr_unarm)(struct nvkm_mc *);
  19. /* enable reporting of interrupts to host */
  20. void (*intr_rearm)(struct nvkm_mc *);
  21. /* (un)mask delivery of specific interrupts */
  22. void (*intr_mask)(struct nvkm_mc *, u32 mask, u32 stat);
  23. /* retrieve pending interrupt mask (NV_PMC_INTR) */
  24. u32 (*intr_stat)(struct nvkm_mc *);
  25. const struct nvkm_mc_map *reset;
  26. void (*unk260)(struct nvkm_mc *, u32);
  27. };
  28. void nv04_mc_init(struct nvkm_mc *);
  29. void nv04_mc_intr_unarm(struct nvkm_mc *);
  30. void nv04_mc_intr_rearm(struct nvkm_mc *);
  31. u32 nv04_mc_intr_stat(struct nvkm_mc *);
  32. extern const struct nvkm_mc_map nv04_mc_reset[];
  33. extern const struct nvkm_mc_map nv17_mc_intr[];
  34. extern const struct nvkm_mc_map nv17_mc_reset[];
  35. void nv44_mc_init(struct nvkm_mc *);
  36. void nv50_mc_init(struct nvkm_mc *);
  37. void gf100_mc_intr_unarm(struct nvkm_mc *);
  38. void gf100_mc_intr_rearm(struct nvkm_mc *);
  39. void gf100_mc_intr_mask(struct nvkm_mc *, u32, u32);
  40. u32 gf100_mc_intr_stat(struct nvkm_mc *);
  41. void gf100_mc_unk260(struct nvkm_mc *, u32);
  42. extern const struct nvkm_mc_map gk104_mc_intr[];
  43. extern const struct nvkm_mc_map gk104_mc_reset[];
  44. #endif