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