diff options
author | Ben Widawsky <ben@bwidawsk.net> | 2011-07-28 13:42:45 -0700 |
---|---|---|
committer | Ben Widawsky <ben@bwidawsk.net> | 2011-07-28 13:48:51 -0700 |
commit | abd7038e5a814bb29398d6ea259815b293c62a2b (patch) | |
tree | 6d321d7c75b106098907ced54d6ffb6a4a61793c /lib/intel_gpu_tools.h | |
parent | cac8f8b52621f246a7cff412f340a7db28cb1b99 (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.h | 23 |
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) { |