1ebb58dc2SBen Skeggs #ifndef __NVKM_PMU_PRIV_H__ 2ebb58dc2SBen Skeggs #define __NVKM_PMU_PRIV_H__ 3ebb58dc2SBen Skeggs 4ebb58dc2SBen Skeggs #include <subdev/pmu.h> 5ebb58dc2SBen Skeggs #include <subdev/pmu/fuc/os.h> 6ebb58dc2SBen Skeggs 7ebb58dc2SBen Skeggs #define nouveau_pmu_create(p, e, o, d) \ 8ebb58dc2SBen Skeggs nouveau_pmu_create_((p), (e), (o), sizeof(**d), (void **)d) 9ebb58dc2SBen Skeggs #define nouveau_pmu_destroy(p) \ 10ebb58dc2SBen Skeggs nouveau_subdev_destroy(&(p)->base) 11ebb58dc2SBen Skeggs #define nouveau_pmu_init(p) ({ \ 12ebb58dc2SBen Skeggs struct nouveau_pmu *_pmu = (p); \ 13ebb58dc2SBen Skeggs _nouveau_pmu_init(nv_object(_pmu)); \ 14ebb58dc2SBen Skeggs }) 15ebb58dc2SBen Skeggs #define nouveau_pmu_fini(p,s) ({ \ 16ebb58dc2SBen Skeggs struct nouveau_pmu *_pmu = (p); \ 17ebb58dc2SBen Skeggs _nouveau_pmu_fini(nv_object(_pmu), (s)); \ 18ebb58dc2SBen Skeggs }) 19ebb58dc2SBen Skeggs 20ebb58dc2SBen Skeggs int nouveau_pmu_create_(struct nouveau_object *, struct nouveau_object *, 21ebb58dc2SBen Skeggs struct nouveau_oclass *, int, void **); 22ebb58dc2SBen Skeggs 23ebb58dc2SBen Skeggs int _nouveau_pmu_ctor(struct nouveau_object *, struct nouveau_object *, 24ebb58dc2SBen Skeggs struct nouveau_oclass *, void *, u32, 25ebb58dc2SBen Skeggs struct nouveau_object **); 26ebb58dc2SBen Skeggs #define _nouveau_pmu_dtor _nouveau_subdev_dtor 27ebb58dc2SBen Skeggs int _nouveau_pmu_init(struct nouveau_object *); 28ebb58dc2SBen Skeggs int _nouveau_pmu_fini(struct nouveau_object *, bool); 29ebb58dc2SBen Skeggs void nouveau_pmu_pgob(struct nouveau_pmu *pmu, bool enable); 30ebb58dc2SBen Skeggs 31ebb58dc2SBen Skeggs struct nvkm_pmu_impl { 32ebb58dc2SBen Skeggs struct nouveau_oclass base; 33ebb58dc2SBen Skeggs struct { 34ebb58dc2SBen Skeggs u32 *data; 35ebb58dc2SBen Skeggs u32 size; 36ebb58dc2SBen Skeggs } code; 37ebb58dc2SBen Skeggs struct { 38ebb58dc2SBen Skeggs u32 *data; 39ebb58dc2SBen Skeggs u32 size; 40ebb58dc2SBen Skeggs } data; 41ebb58dc2SBen Skeggs 42ebb58dc2SBen Skeggs void (*pgob)(struct nouveau_pmu *, bool); 43ebb58dc2SBen Skeggs }; 44ebb58dc2SBen Skeggs 45ebb58dc2SBen Skeggs #endif 46