1 /* SPDX-License-Identifier: MIT */ 2 /* 3 * Copyright © 2021-2023 Intel Corporation 4 */ 5 6 #ifndef _XE_MMIO_H_ 7 #define _XE_MMIO_H_ 8 9 #include <linux/delay.h> 10 #include <linux/io-64-nonatomic-lo-hi.h> 11 12 #include "regs/xe_reg_defs.h" 13 #include "xe_device_types.h" 14 #include "xe_gt_printk.h" 15 #include "xe_gt_types.h" 16 17 struct drm_device; 18 struct drm_file; 19 struct xe_device; 20 21 #define LMEM_BAR 2 22 23 int xe_mmio_init(struct xe_device *xe); 24 void xe_mmio_probe_tiles(struct xe_device *xe); 25 26 u8 xe_mmio_read8(struct xe_gt *gt, struct xe_reg reg); 27 u16 xe_mmio_read16(struct xe_gt *gt, struct xe_reg reg); 28 void xe_mmio_write32(struct xe_gt *gt, struct xe_reg reg, u32 val); 29 u32 xe_mmio_read32(struct xe_gt *gt, struct xe_reg reg); 30 u32 xe_mmio_rmw32(struct xe_gt *gt, struct xe_reg reg, u32 clr, u32 set); 31 int xe_mmio_write32_and_verify(struct xe_gt *gt, struct xe_reg reg, u32 val, u32 mask, u32 eval); 32 bool xe_mmio_in_range(const struct xe_gt *gt, const struct xe_mmio_range *range, struct xe_reg reg); 33 34 int xe_mmio_probe_vram(struct xe_device *xe); 35 u64 xe_mmio_read64_2x32(struct xe_gt *gt, struct xe_reg reg); 36 int xe_mmio_wait32(struct xe_gt *gt, struct xe_reg reg, u32 mask, u32 val, u32 timeout_us, 37 u32 *out_val, bool atomic); 38 39 #endif 40