| 1 | /* SPDX-License-Identifier: MIT */ |
| 2 | /* |
| 3 | * Copyright © 2023 Intel Corporation |
| 4 | */ |
| 5 | |
| 6 | #ifndef _XE_MEMIRQ_TYPES_H_ |
| 7 | #define _XE_MEMIRQ_TYPES_H_ |
| 8 | |
| 9 | #include <linux/iosys-map.h> |
| 10 | |
| 11 | struct xe_bo; |
| 12 | |
| 13 | /* ISR */ |
| 14 | #define XE_MEMIRQ_STATUS_OFFSET(inst) ((inst) * SZ_4K + 0x0) |
| 15 | /* IIR */ |
| 16 | #define XE_MEMIRQ_SOURCE_OFFSET(inst) ((inst) * SZ_4K + 0x400) |
| 17 | /* IMR */ |
| 18 | #define XE_MEMIRQ_ENABLE_OFFSET 0x440 |
| 19 | |
| 20 | /** |
| 21 | * struct xe_memirq - Data used by the `Memory Based Interrupts`_. |
| 22 | * |
| 23 | * @bo: buffer object with `Memory Based Interrupts Page Layout`_. |
| 24 | * @source: iosys pointer to `Interrupt Source Report Page`_. |
| 25 | * @status: iosys pointer to `Interrupt Status Report Page`_. |
| 26 | * @mask: iosys pointer to Interrupt Enable Mask. |
| 27 | * @enabled: internal flag used to control processing of the interrupts. |
| 28 | */ |
| 29 | struct xe_memirq { |
| 30 | struct xe_bo *bo; |
| 31 | struct iosys_map source; |
| 32 | struct iosys_map status; |
| 33 | struct iosys_map mask; |
| 34 | bool enabled; |
| 35 | }; |
| 36 | |
| 37 | #endif |
| 38 | |