summaryrefslogtreecommitdiff
path: root/lib/intel_gpu_tools.h
diff options
context:
space:
mode:
authorBen Widawsky <ben@bwidawsk.net>2011-07-28 13:42:45 -0700
committerBen Widawsky <ben@bwidawsk.net>2011-07-28 13:48:51 -0700
commitabd7038e5a814bb29398d6ea259815b293c62a2b (patch)
tree6d321d7c75b106098907ced54d6ffb6a4a61793c /lib/intel_gpu_tools.h
parentcac8f8b52621f246a7cff412f340a7db28cb1b99 (diff)
intel-gpu-tools/range handling: register range handling
Hooks to allow safe accesses from userspace. Can revert to old behavior by using unsafe access.
Diffstat (limited to 'lib/intel_gpu_tools.h')
-rw-r--r--lib/intel_gpu_tools.h23
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/intel_gpu_tools.h b/lib/intel_gpu_tools.h
index 6b307782..a145fb9b 100644
--- a/lib/intel_gpu_tools.h
+++ b/lib/intel_gpu_tools.h
@@ -38,11 +38,32 @@ extern void *mmio;
void intel_get_mmio(struct pci_device *pci_dev);
/* New style register access API */
-int intel_register_access_init(struct pci_device *pci_dev);
+int intel_register_access_init(struct pci_device *pci_dev, int safe);
void intel_register_access_fini(void);
uint32_t intel_register_read(uint32_t reg);
void intel_register_write(uint32_t reg, uint32_t val);
+#define INTEL_RANGE_RSVD (0<<0) /* Shouldn't be read or written */
+#define INTEL_RANGE_READ (1<<0)
+#define INTEL_RANGE_WRITE (1<<1)
+#define INTEL_RANGE_RW (INTEL_RANGE_READ | INTEL_RANGE_WRITE)
+#define INTEL_RANGE_END (1<<31)
+
+struct intel_register_range {
+ uint32_t base;
+ uint32_t size;
+ uint32_t flags;
+};
+
+struct intel_register_map {
+ struct intel_register_range *map;
+ uint32_t top;
+ uint32_t alignment_mask;
+};
+struct intel_register_map intel_get_register_map(uint32_t devid);
+struct intel_register_range *intel_get_register_range(struct intel_register_map map, uint32_t offset, int mode);
+
+
static inline uint32_t
INREG(uint32_t reg)
{