Commit 565bfaf1 authored by Ben Skeggs's avatar Ben Skeggs
Browse files

drm/nouveau/mc/ga100: switch to using NV_PMC_DEVICE_ENABLE



- NV_PMC_ENABLE still exists, but we don't touch anything in it yet

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
parent ebb195db
Loading
Loading
Loading
Loading
+44 −3
Original line number Diff line number Diff line
@@ -21,11 +21,52 @@
 */
#include "priv.h"

static void
ga100_mc_device_disable(struct nvkm_mc *mc, u32 mask)
{
	struct nvkm_device *device = mc->subdev.device;

	nvkm_mask(device, 0x000600, mask, 0x00000000);
	nvkm_rd32(device, 0x000600);
	nvkm_rd32(device, 0x000600);
}

static void
ga100_mc_device_enable(struct nvkm_mc *mc, u32 mask)
{
	struct nvkm_device *device = mc->subdev.device;

	nvkm_mask(device, 0x000600, mask, mask);
	nvkm_rd32(device, 0x000600);
	nvkm_rd32(device, 0x000600);
}

static bool
ga100_mc_device_enabled(struct nvkm_mc *mc, u32 mask)
{
	return (nvkm_rd32(mc->subdev.device, 0x000600) & mask) == mask;
}

const struct nvkm_mc_device_func
ga100_mc_device = {
	.enabled = ga100_mc_device_enabled,
	.enable = ga100_mc_device_enable,
	.disable = ga100_mc_device_disable,
};

static void
ga100_mc_init(struct nvkm_mc *mc)
{
	struct nvkm_device *device = mc->subdev.device;

	nvkm_wr32(device, 0x000200, 0xffffffff);
	nvkm_wr32(device, 0x000600, 0xffffffff);
}

static const struct nvkm_mc_func
ga100_mc = {
	.init = nv50_mc_init,
	.device = &nv04_mc_device,
	.reset = gk104_mc_reset,
	.init = ga100_mc_init,
	.device = &ga100_mc_device,
};

int