Commit 2952a2b4 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/pmu: initialise SW state for falcon from constructor



This will allow us to register the falcon with ACR, and further customise
its behaviour by providing the nvkm_falcon_func structure directly.

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 989863d7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2,12 +2,12 @@
#ifndef __NVKM_PMU_H__
#define __NVKM_PMU_H__
#include <core/subdev.h>
#include <engine/falcon.h>
#include <core/falcon.h>

struct nvkm_pmu {
	const struct nvkm_pmu_func *func;
	struct nvkm_subdev subdev;
	struct nvkm_falcon *falcon;
	struct nvkm_falcon falcon;
	struct nvkm_msgqueue *queue;

	struct {
+5 −10
Original line number Diff line number Diff line
@@ -134,19 +134,12 @@ nvkm_pmu_init(struct nvkm_subdev *subdev)
	return ret;
}

static int
nvkm_pmu_oneinit(struct nvkm_subdev *subdev)
{
	struct nvkm_pmu *pmu = nvkm_pmu(subdev);
	return nvkm_falcon_v1_new(&pmu->subdev, "PMU", 0x10a000, &pmu->falcon);
}

static void *
nvkm_pmu_dtor(struct nvkm_subdev *subdev)
{
	struct nvkm_pmu *pmu = nvkm_pmu(subdev);
	nvkm_msgqueue_del(&pmu->queue);
	nvkm_falcon_del(&pmu->falcon);
	nvkm_falcon_dtor(&pmu->falcon);
	return nvkm_pmu(subdev);
}

@@ -154,7 +147,6 @@ static const struct nvkm_subdev_func
nvkm_pmu = {
	.dtor = nvkm_pmu_dtor,
	.preinit = nvkm_pmu_preinit,
	.oneinit = nvkm_pmu_oneinit,
	.init = nvkm_pmu_init,
	.fini = nvkm_pmu_fini,
	.intr = nvkm_pmu_intr,
@@ -174,7 +166,10 @@ nvkm_pmu_ctor(const struct nvkm_pmu_fwif *fwif, struct nvkm_device *device,
		return PTR_ERR(fwif);

	pmu->func = fwif->func;
	return 0;

	return nvkm_falcon_ctor(pmu->func->flcn, &pmu->subdev,
				nvkm_subdev_name[pmu->subdev.index], 0x10a000,
				&pmu->falcon);
}

int
+1 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ gf100_pmu_enabled(struct nvkm_pmu *pmu)

static const struct nvkm_pmu_func
gf100_pmu = {
	.flcn = &gt215_pmu_flcn,
	.code.data = gf100_pmu_code,
	.code.size = sizeof(gf100_pmu_code),
	.data.data = gf100_pmu_data,
+1 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@

static const struct nvkm_pmu_func
gf119_pmu = {
	.flcn = &gt215_pmu_flcn,
	.code.data = gf119_pmu_code,
	.code.size = sizeof(gf119_pmu_code),
	.data.data = gf119_pmu_data,
+1 −0
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@ gk104_pmu_pgob(struct nvkm_pmu *pmu, bool enable)

static const struct nvkm_pmu_func
gk104_pmu = {
	.flcn = &gt215_pmu_flcn,
	.code.data = gk104_pmu_code,
	.code.size = sizeof(gk104_pmu_code),
	.data.data = gk104_pmu_data,
Loading