Commit b7f44ef7 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/pmu: move preinit() falcon reset to devinit



Cleanup before falcon changes.

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
parent 74f9dcb0
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
#include <subdev/bios.h>
#include <subdev/bios/bit.h>
#include <subdev/bios/pmu.h>
#include <subdev/pmu.h>
#include <subdev/timer.h>

static void
@@ -85,13 +86,18 @@ pmu_load(struct nv50_devinit *init, u8 type, bool post,
	struct nvkm_subdev *subdev = &init->base.subdev;
	struct nvkm_bios *bios = subdev->device->bios;
	struct nvbios_pmuR pmu;
	int ret;

	if (!nvbios_pmuRm(bios, type, &pmu))
		return -EINVAL;

	if (!post)
	if (!post || !subdev->device->pmu)
		return 0;

	ret = nvkm_falcon_reset(&subdev->device->pmu->falcon);
	if (ret)
		return ret;

	pmu_code(init, pmu.boot_addr_pmu, pmu.boot_addr, pmu.boot_size, false);
	pmu_code(init, pmu.code_addr_pmu, pmu.code_addr, pmu.code_size, true);
	pmu_data(init, pmu.data_addr_pmu, pmu.data_addr, pmu.data_size);
+0 −12
Original line number Diff line number Diff line
@@ -99,9 +99,6 @@ nvkm_pmu_reset(struct nvkm_pmu *pmu)
{
	struct nvkm_device *device = pmu->subdev.device;

	if (!pmu->func->enabled(pmu))
		return;

	/* Reset. */
	if (pmu->func->reset)
		pmu->func->reset(pmu);
@@ -113,14 +110,6 @@ nvkm_pmu_reset(struct nvkm_pmu *pmu)
	);
}

static int
nvkm_pmu_preinit(struct nvkm_subdev *subdev)
{
	struct nvkm_pmu *pmu = nvkm_pmu(subdev);
	nvkm_pmu_reset(pmu);
	return 0;
}

static int
nvkm_pmu_init(struct nvkm_subdev *subdev)
{
@@ -160,7 +149,6 @@ nvkm_pmu_dtor(struct nvkm_subdev *subdev)
static const struct nvkm_subdev_func
nvkm_pmu = {
	.dtor = nvkm_pmu_dtor,
	.preinit = nvkm_pmu_preinit,
	.init = nvkm_pmu_init,
	.fini = nvkm_pmu_fini,
	.intr = nvkm_pmu_intr,