summaryrefslogtreecommitdiff
path: root/shared-core/nouveau_mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'shared-core/nouveau_mem.c')
-rw-r--r--shared-core/nouveau_mem.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/shared-core/nouveau_mem.c b/shared-core/nouveau_mem.c
index 4d4100eb..df8641ed 100644
--- a/shared-core/nouveau_mem.c
+++ b/shared-core/nouveau_mem.c
@@ -492,6 +492,38 @@ void nouveau_instmem_free(struct drm_device *dev, struct mem_block *block)
}
}
+uint32_t nouveau_instmem_r32(drm_nouveau_private_t *dev_priv,
+ struct mem_block *mem, int index)
+{
+ uint32_t ofs = (uint32_t)mem->start + (index<<2);
+
+ if (dev_priv->ramin) {
+#if defined(__powerpc__)
+ return in_be32((void __iomem *)(dev_priv->ramin)->handle + ofs);
+#else
+ return DRM_READ32(dev_priv->ramin, ofs);
+#endif
+ } else {
+ return NV_READ(NV_RAMIN+ofs);
+ }
+}
+
+void nouveau_instmem_w32(drm_nouveau_private_t *dev_priv,
+ struct mem_block *mem, int index, uint32_t val)
+{
+ uint32_t ofs = (uint32_t)mem->start + (index<<2);
+
+ if (dev_priv->ramin) {
+#if defined(__powerpc__)
+ out_be32((void __iomem *)(dev_priv->ramin)->handle + ofs, val);
+#else
+ DRM_WRITE32(dev_priv->ramin, ofs, val);
+#endif
+ } else {
+ NV_WRITE(NV_RAMIN+ofs, val);
+ }
+}
+
/*
* Ioctls
*/