Commit 9b071c79 authored by Alexandre Courbot's avatar Alexandre Courbot Committed by Ben Skeggs

drm/nouveau/pmu/gk20a: use falcon library functions

Use the falcon library functions where relevant.
Signed-off-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 68d82161
...@@ -95,17 +95,19 @@ static void ...@@ -95,17 +95,19 @@ static void
gk20a_pmu_dvfs_get_dev_status(struct gk20a_pmu *pmu, gk20a_pmu_dvfs_get_dev_status(struct gk20a_pmu *pmu,
struct gk20a_pmu_dvfs_dev_status *status) struct gk20a_pmu_dvfs_dev_status *status)
{ {
struct nvkm_device *device = pmu->base.subdev.device; struct nvkm_falcon *falcon = pmu->base.falcon;
status->busy = nvkm_rd32(device, 0x10a508 + (BUSY_SLOT * 0x10));
status->total= nvkm_rd32(device, 0x10a508 + (CLK_SLOT * 0x10)); status->busy = nvkm_falcon_rd32(falcon, 0x508 + (BUSY_SLOT * 0x10));
status->total= nvkm_falcon_rd32(falcon, 0x508 + (CLK_SLOT * 0x10));
} }
static void static void
gk20a_pmu_dvfs_reset_dev_status(struct gk20a_pmu *pmu) gk20a_pmu_dvfs_reset_dev_status(struct gk20a_pmu *pmu)
{ {
struct nvkm_device *device = pmu->base.subdev.device; struct nvkm_falcon *falcon = pmu->base.falcon;
nvkm_wr32(device, 0x10a508 + (BUSY_SLOT * 0x10), 0x80000000);
nvkm_wr32(device, 0x10a508 + (CLK_SLOT * 0x10), 0x80000000); nvkm_falcon_wr32(falcon, 0x508 + (BUSY_SLOT * 0x10), 0x80000000);
nvkm_falcon_wr32(falcon, 0x508 + (CLK_SLOT * 0x10), 0x80000000);
} }
static void static void
...@@ -157,18 +159,29 @@ gk20a_pmu_fini(struct nvkm_pmu *pmu) ...@@ -157,18 +159,29 @@ gk20a_pmu_fini(struct nvkm_pmu *pmu)
{ {
struct gk20a_pmu *gpmu = gk20a_pmu(pmu); struct gk20a_pmu *gpmu = gk20a_pmu(pmu);
nvkm_timer_alarm_cancel(pmu->subdev.device->timer, &gpmu->alarm); nvkm_timer_alarm_cancel(pmu->subdev.device->timer, &gpmu->alarm);
nvkm_falcon_put(pmu->falcon, &pmu->subdev);
} }
static int static int
gk20a_pmu_init(struct nvkm_pmu *pmu) gk20a_pmu_init(struct nvkm_pmu *pmu)
{ {
struct gk20a_pmu *gpmu = gk20a_pmu(pmu); struct gk20a_pmu *gpmu = gk20a_pmu(pmu);
struct nvkm_subdev *subdev = &pmu->subdev;
struct nvkm_device *device = pmu->subdev.device; struct nvkm_device *device = pmu->subdev.device;
struct nvkm_falcon *falcon = pmu->falcon;
int ret;
ret = nvkm_falcon_get(falcon, subdev);
if (ret) {
nvkm_error(subdev, "cannot acquire %s falcon!\n", falcon->name);
return ret;
}
/* init pwr perf counter */ /* init pwr perf counter */
nvkm_wr32(device, 0x10a504 + (BUSY_SLOT * 0x10), 0x00200001); nvkm_falcon_wr32(falcon, 0x504 + (BUSY_SLOT * 0x10), 0x00200001);
nvkm_wr32(device, 0x10a50c + (BUSY_SLOT * 0x10), 0x00000002); nvkm_falcon_wr32(falcon, 0x50c + (BUSY_SLOT * 0x10), 0x00000002);
nvkm_wr32(device, 0x10a50c + (CLK_SLOT * 0x10), 0x00000003); nvkm_falcon_wr32(falcon, 0x50c + (CLK_SLOT * 0x10), 0x00000003);
nvkm_timer_alarm(device->timer, 2000000000, &gpmu->alarm); nvkm_timer_alarm(device->timer, 2000000000, &gpmu->alarm);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment