priv.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #ifndef __NVKM_PM_PRIV_H__
  2. #define __NVKM_PM_PRIV_H__
  3. #define nvkm_pm(p) container_of((p), struct nvkm_pm, engine)
  4. #include <engine/pm.h>
  5. int nvkm_pm_ctor(const struct nvkm_pm_func *, struct nvkm_device *,
  6. int index, struct nvkm_pm *);
  7. struct nvkm_pm_func {
  8. void (*fini)(struct nvkm_pm *);
  9. };
  10. struct nvkm_perfctr {
  11. struct list_head head;
  12. u8 domain;
  13. u8 signal[4];
  14. u64 source[4][8];
  15. int slot;
  16. u32 logic_op;
  17. u32 ctr;
  18. };
  19. struct nvkm_specmux {
  20. u32 mask;
  21. u8 shift;
  22. const char *name;
  23. bool enable;
  24. };
  25. struct nvkm_specsrc {
  26. u32 addr;
  27. const struct nvkm_specmux *mux;
  28. const char *name;
  29. };
  30. struct nvkm_perfsrc {
  31. struct list_head head;
  32. char *name;
  33. u32 addr;
  34. u32 mask;
  35. u8 shift;
  36. bool enable;
  37. };
  38. extern const struct nvkm_specsrc nv50_zcull_sources[];
  39. extern const struct nvkm_specsrc nv50_zrop_sources[];
  40. extern const struct nvkm_specsrc g84_vfetch_sources[];
  41. extern const struct nvkm_specsrc gt200_crop_sources[];
  42. extern const struct nvkm_specsrc gt200_prop_sources[];
  43. extern const struct nvkm_specsrc gt200_tex_sources[];
  44. struct nvkm_specsig {
  45. u8 signal;
  46. const char *name;
  47. const struct nvkm_specsrc *source;
  48. };
  49. struct nvkm_perfsig {
  50. const char *name;
  51. u8 source[8];
  52. };
  53. struct nvkm_specdom {
  54. u16 signal_nr;
  55. const struct nvkm_specsig *signal;
  56. const struct nvkm_funcdom *func;
  57. };
  58. #define nvkm_perfdom(p) container_of((p), struct nvkm_perfdom, object)
  59. struct nvkm_perfdom {
  60. struct nvkm_object object;
  61. struct nvkm_perfmon *perfmon;
  62. struct list_head head;
  63. struct list_head list;
  64. const struct nvkm_funcdom *func;
  65. struct nvkm_perfctr *ctr[4];
  66. char name[32];
  67. u32 addr;
  68. u8 mode;
  69. u32 clk;
  70. u16 signal_nr;
  71. struct nvkm_perfsig signal[];
  72. };
  73. struct nvkm_funcdom {
  74. void (*init)(struct nvkm_pm *, struct nvkm_perfdom *,
  75. struct nvkm_perfctr *);
  76. void (*read)(struct nvkm_pm *, struct nvkm_perfdom *,
  77. struct nvkm_perfctr *);
  78. void (*next)(struct nvkm_pm *, struct nvkm_perfdom *);
  79. };
  80. int nvkm_perfdom_new(struct nvkm_pm *, const char *, u32, u32, u32, u32,
  81. const struct nvkm_specdom *);
  82. #define nvkm_perfmon(p) container_of((p), struct nvkm_perfmon, object)
  83. struct nvkm_perfmon {
  84. struct nvkm_object object;
  85. struct nvkm_pm *pm;
  86. };
  87. #endif