void intel_register_write(uint32_t reg, uint32_t val) { struct intel_register_range *range; assert(mmio_data.inited); if (IS_GEN6(mmio_data.i915_devid)) assert(mmio_data.key != -1); if (!mmio_data.safe) goto write_out; range = intel_get_register_range(mmio_data.map, reg, INTEL_RANGE_WRITE); if (!range) { fprintf(stderr, "Register write blocked for safety " "(*0x%08x = 0x%x)\n", reg, val); } write_out: *(volatile uint32_t *)((volatile char *)mmio + reg) = val; }
/** * intel_register_read: * @reg: register offset * * 32-bit read of the register at @offset. This function only works when the new * register access helper is initialized with intel_register_access_init(). * * Compared to INREG() it can do optional checking with the register access * white lists. * * Returns: * The value read from the register. */ uint32_t intel_register_read(uint32_t reg) { struct intel_register_range *range; uint32_t ret; igt_assert(mmio_data.inited); if (intel_gen(mmio_data.i915_devid) >= 6) igt_assert(mmio_data.key != -1); if (!mmio_data.safe) goto read_out; range = intel_get_register_range(mmio_data.map, reg, INTEL_RANGE_READ); if(!range) { igt_warn("Register read blocked for safety ""(*0x%08x)\n", reg); ret = 0xffffffff; goto out; } read_out: ret = *(volatile uint32_t *)((volatile char *)igt_global_mmio + reg); out: return ret; }
uint32_t intel_register_read(uint32_t reg) { struct intel_register_range *range; uint32_t ret; assert(mmio_data.inited); if (IS_GEN6(mmio_data.i915_devid)) assert(mmio_data.key != -1); if (!mmio_data.safe) goto read_out; range = intel_get_register_range(mmio_data.map, reg, INTEL_RANGE_READ); if(!range) { fprintf(stderr, "Register read blocked for safety " "(*0x%08x)\n", reg); ret = 0xffffffff; goto out; } read_out: ret = *(volatile uint32_t *)((volatile char *)mmio + reg); out: return ret; }
/** * intel_register_write: * @reg: register offset * @val: value to write * * 32-bit write to the register at @offset. This function only works when the new * register access helper is initialized with intel_register_access_init(). * * Compared to OUTREG() it can do optional checking with the register access * white lists. */ void intel_register_write(uint32_t reg, uint32_t val) { struct intel_register_range *range; igt_assert(mmio_data.inited); if (intel_gen(mmio_data.i915_devid) >= 6) igt_assert(mmio_data.key != -1); if (!mmio_data.safe) goto write_out; range = intel_get_register_range(mmio_data.map, reg, INTEL_RANGE_WRITE); igt_warn_on_f(!range, "Register write blocked for safety ""(*0x%08x = 0x%x)\n", reg, val); write_out: *(volatile uint32_t *)((volatile char *)igt_global_mmio + reg) = val; }