drm/nouveau/pmu: instanciate the falcon in PMU device

Have an instance of nvkm_falcon in the PMU structure, ready to be used
by other subdevs (i.e. secboot).

Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
Alexandre Courbot 2016-12-13 17:11:20 +09:00 committed by Ben Skeggs
parent e72da6e04f
commit 1e2115d8c0
2 changed files with 5 additions and 1 deletions

View File

@ -1,10 +1,12 @@
#ifndef __NVKM_PMU_H__ #ifndef __NVKM_PMU_H__
#define __NVKM_PMU_H__ #define __NVKM_PMU_H__
#include <core/subdev.h> #include <core/subdev.h>
#include <engine/falcon.h>
struct nvkm_pmu { struct nvkm_pmu {
const struct nvkm_pmu_func *func; const struct nvkm_pmu_func *func;
struct nvkm_subdev subdev; struct nvkm_subdev subdev;
struct nvkm_falcon *falcon;
struct { struct {
u32 base; u32 base;

View File

@ -116,6 +116,8 @@ nvkm_pmu_init(struct nvkm_subdev *subdev)
static void * static void *
nvkm_pmu_dtor(struct nvkm_subdev *subdev) nvkm_pmu_dtor(struct nvkm_subdev *subdev)
{ {
struct nvkm_pmu *pmu = nvkm_pmu(subdev);
nvkm_falcon_del(&pmu->falcon);
return nvkm_pmu(subdev); return nvkm_pmu(subdev);
} }
@ -136,7 +138,7 @@ nvkm_pmu_ctor(const struct nvkm_pmu_func *func, struct nvkm_device *device,
pmu->func = func; pmu->func = func;
INIT_WORK(&pmu->recv.work, nvkm_pmu_recv); INIT_WORK(&pmu->recv.work, nvkm_pmu_recv);
init_waitqueue_head(&pmu->recv.wait); init_waitqueue_head(&pmu->recv.wait);
return 0; return nvkm_falcon_v1_new(&pmu->subdev, "PMU", 0x10a000, &pmu->falcon);
} }
int int