1 /* SPDX-License-Identifier: MIT */ 2 #ifndef __NVKM_PM_H__ 3 #define __NVKM_PM_H__ 4 #include <core/engine.h> 5 6 struct nvkm_pm { 7 const struct nvkm_pm_func *func; 8 struct nvkm_engine engine; 9 10 struct { 11 spinlock_t lock; 12 struct nvkm_object *object; 13 } client; 14 15 struct list_head domains; 16 struct list_head sources; 17 u32 sequence; 18 }; 19 20 int nv40_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 21 int nv50_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 22 int g84_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 23 int gt200_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 24 int gt215_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 25 int gf100_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 26 int gf108_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 27 int gf117_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 28 int gk104_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 29 #endif 30