summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2022-06-01 20:46:55 +1000
committerBen Skeggs <bskeggs@redhat.com>2022-11-09 10:44:36 +1000
commit565bfaf1f26af0e9fc9aafbb7053da1187afe9f4 (patch)
treeb3285a19cfcb68d89d3e5001df83a27b7f908b53
parentebb195dbb3390324100cb85c22129f6334064b5f (diff)
downloadlinux-565bfaf1f26af0e9fc9aafbb7053da1187afe9f4.tar.bz2
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: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/mc/ga100.c47
1 files changed, 44 insertions, 3 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mc/ga100.c b/drivers/gpu/drm/nouveau/nvkm/subdev/mc/ga100.c
index 842326a24393..1e2eabec1a76 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/mc/ga100.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mc/ga100.c
@@ -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