1275970Scy/* SPDX-License-Identifier: MIT */ 2275970Scy#ifndef __NVKM_PM_H__ 3275970Scy#define __NVKM_PM_H__ 4275970Scy#include <core/engine.h> 5275970Scy 6275970Scystruct nvkm_pm { 7275970Scy const struct nvkm_pm_func *func; 8275970Scy struct nvkm_engine engine; 9275970Scy 10275970Scy struct { 11275970Scy spinlock_t lock; 12275970Scy struct nvkm_object *object; 13275970Scy } client; 14275970Scy 15275970Scy struct list_head domains; 16275970Scy struct list_head sources; 17275970Scy u32 sequence; 18275970Scy}; 19275970Scy 20275970Scyint nv40_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 21275970Scyint nv50_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 22275970Scyint g84_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 23275970Scyint gt200_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 24275970Scyint gt215_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 25275970Scyint gf100_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 26275970Scyint gf108_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 27275970Scyint gf117_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 28275970Scyint gk104_pm_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_pm **); 29275970Scy#endif 30275970Scy