1 /* SPDX-License-Identifier: MIT */
4 #include <core/subdev.h>
5 #include <core/falcon.h>
8 const struct nvkm_pmu_func
*func
;
9 struct nvkm_subdev subdev
;
10 struct nvkm_falcon falcon
;
12 struct nvkm_falcon_qmgr
*qmgr
;
13 struct nvkm_falcon_cmdq
*hpq
;
14 struct nvkm_falcon_cmdq
*lpq
;
15 struct nvkm_falcon_msgq
*msgq
;
16 bool initmsg_received
;
18 struct completion wpr_ready
;
29 struct work_struct work
;
30 wait_queue_head_t wait
;
37 int nvkm_pmu_send(struct nvkm_pmu
*, u32 reply
[2], u32 process
,
38 u32 message
, u32 data0
, u32 data1
);
39 void nvkm_pmu_pgob(struct nvkm_pmu
*, bool enable
);
40 bool nvkm_pmu_fan_controlled(struct nvkm_device
*);
42 int gt215_pmu_new(struct nvkm_device
*, int, struct nvkm_pmu
**);
43 int gf100_pmu_new(struct nvkm_device
*, int, struct nvkm_pmu
**);
44 int gf119_pmu_new(struct nvkm_device
*, int, struct nvkm_pmu
**);
45 int gk104_pmu_new(struct nvkm_device
*, int, struct nvkm_pmu
**);
46 int gk110_pmu_new(struct nvkm_device
*, int, struct nvkm_pmu
**);
47 int gk208_pmu_new(struct nvkm_device
*, int, struct nvkm_pmu
**);
48 int gk20a_pmu_new(struct nvkm_device
*, int, struct nvkm_pmu
**);
49 int gm107_pmu_new(struct nvkm_device
*, int, struct nvkm_pmu
**);
50 int gm20b_pmu_new(struct nvkm_device
*, int, struct nvkm_pmu
**);
51 int gp100_pmu_new(struct nvkm_device
*, int, struct nvkm_pmu
**);
52 int gp102_pmu_new(struct nvkm_device
*, int, struct nvkm_pmu
**);
53 int gp10b_pmu_new(struct nvkm_device
*, int, struct nvkm_pmu
**);
55 /* interface to MEMX process running on PMU */
57 int nvkm_memx_init(struct nvkm_pmu
*, struct nvkm_memx
**);
58 int nvkm_memx_fini(struct nvkm_memx
**, bool exec
);
59 void nvkm_memx_wr32(struct nvkm_memx
*, u32 addr
, u32 data
);
60 void nvkm_memx_wait(struct nvkm_memx
*, u32 addr
, u32 mask
, u32 data
, u32 nsec
);
61 void nvkm_memx_nsec(struct nvkm_memx
*, u32 nsec
);
62 void nvkm_memx_wait_vblank(struct nvkm_memx
*);
63 void nvkm_memx_train(struct nvkm_memx
*);
64 int nvkm_memx_train_result(struct nvkm_pmu
*, u32
*, int);
65 void nvkm_memx_block(struct nvkm_memx
*);
66 void nvkm_memx_unblock(struct nvkm_memx
*);