drm/nouveau/mc/ga100: switch to using NV_PMC_DEVICE_ENABLE
authorBen Skeggs <bskeggs@redhat.com>
Wed, 1 Jun 2022 10:46:55 +0000 (20:46 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 9 Nov 2022 00:44:36 +0000 (10:44 +1000)
- NV_PMC_ENABLE still exists, but we don't touch anything in it yet

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
drivers/gpu/drm/nouveau/nvkm/subdev/mc/ga100.c

index 842326a..1e2eabe 100644 (file)
  */
 #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