forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-11 04dd17822334871b23ea2862f7798fb0e0007777
kernel/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c
....@@ -95,7 +95,7 @@
9595 gk20a_pmu_dvfs_get_dev_status(struct gk20a_pmu *pmu,
9696 struct gk20a_pmu_dvfs_dev_status *status)
9797 {
98
- struct nvkm_falcon *falcon = pmu->base.falcon;
98
+ struct nvkm_falcon *falcon = &pmu->base.falcon;
9999
100100 status->busy = nvkm_falcon_rd32(falcon, 0x508 + (BUSY_SLOT * 0x10));
101101 status->total= nvkm_falcon_rd32(falcon, 0x508 + (CLK_SLOT * 0x10));
....@@ -104,7 +104,7 @@
104104 static void
105105 gk20a_pmu_dvfs_reset_dev_status(struct gk20a_pmu *pmu)
106106 {
107
- struct nvkm_falcon *falcon = pmu->base.falcon;
107
+ struct nvkm_falcon *falcon = &pmu->base.falcon;
108108
109109 nvkm_falcon_wr32(falcon, 0x508 + (BUSY_SLOT * 0x10), 0x80000000);
110110 nvkm_falcon_wr32(falcon, 0x508 + (CLK_SLOT * 0x10), 0x80000000);
....@@ -160,7 +160,7 @@
160160 struct gk20a_pmu *gpmu = gk20a_pmu(pmu);
161161 nvkm_timer_alarm(pmu->subdev.device->timer, 0, &gpmu->alarm);
162162
163
- nvkm_falcon_put(pmu->falcon, &pmu->subdev);
163
+ nvkm_falcon_put(&pmu->falcon, &pmu->subdev);
164164 }
165165
166166 static int
....@@ -169,7 +169,7 @@
169169 struct gk20a_pmu *gpmu = gk20a_pmu(pmu);
170170 struct nvkm_subdev *subdev = &pmu->subdev;
171171 struct nvkm_device *device = pmu->subdev.device;
172
- struct nvkm_falcon *falcon = pmu->falcon;
172
+ struct nvkm_falcon *falcon = &pmu->falcon;
173173 int ret;
174174
175175 ret = nvkm_falcon_get(falcon, subdev);
....@@ -196,25 +196,34 @@
196196
197197 static const struct nvkm_pmu_func
198198 gk20a_pmu = {
199
+ .flcn = &gt215_pmu_flcn,
199200 .enabled = gf100_pmu_enabled,
200201 .init = gk20a_pmu_init,
201202 .fini = gk20a_pmu_fini,
202203 .reset = gf100_pmu_reset,
203204 };
204205
206
+static const struct nvkm_pmu_fwif
207
+gk20a_pmu_fwif[] = {
208
+ { -1, gf100_pmu_nofw, &gk20a_pmu },
209
+ {}
210
+};
211
+
205212 int
206213 gk20a_pmu_new(struct nvkm_device *device, int index, struct nvkm_pmu **ppmu)
207214 {
208215 struct gk20a_pmu *pmu;
216
+ int ret;
209217
210218 if (!(pmu = kzalloc(sizeof(*pmu), GFP_KERNEL)))
211219 return -ENOMEM;
212220 *ppmu = &pmu->base;
213221
214
- nvkm_pmu_ctor(&gk20a_pmu, device, index, &pmu->base);
222
+ ret = nvkm_pmu_ctor(gk20a_pmu_fwif, device, index, &pmu->base);
223
+ if (ret)
224
+ return ret;
215225
216226 pmu->data = &gk20a_dvfs_data;
217227 nvkm_alarm_init(&pmu->alarm, gk20a_pmu_dvfs_work);
218
-
219228 return 0;
220229 }