1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2021 Intel Corporation
14 #define IOAT_PCI_CHANERR_INT_OFFSET 0x180
16 #define IOAT_VER_3_0 0x30
17 #define IOAT_VER_3_3 0x33
19 #define IOAT_VENDOR_ID 0x8086
20 #define IOAT_DEVICE_ID_SKX 0x2021
21 #define IOAT_DEVICE_ID_BDX0 0x6f20
22 #define IOAT_DEVICE_ID_BDX1 0x6f21
23 #define IOAT_DEVICE_ID_BDX2 0x6f22
24 #define IOAT_DEVICE_ID_BDX3 0x6f23
25 #define IOAT_DEVICE_ID_BDX4 0x6f24
26 #define IOAT_DEVICE_ID_BDX5 0x6f25
27 #define IOAT_DEVICE_ID_BDX6 0x6f26
28 #define IOAT_DEVICE_ID_BDX7 0x6f27
29 #define IOAT_DEVICE_ID_BDXE 0x6f2E
30 #define IOAT_DEVICE_ID_BDXF 0x6f2F
31 #define IOAT_DEVICE_ID_ICX 0x0b00
33 #define IOAT_COMP_UPDATE_SHIFT 3
34 #define IOAT_CMD_OP_SHIFT 24
36 /* DMA Channel Registers */
37 #define IOAT_CHANCTRL_CHANNEL_PRIORITY_MASK 0xF000
38 #define IOAT_CHANCTRL_COMPL_DCA_EN 0x0200
39 #define IOAT_CHANCTRL_CHANNEL_IN_USE 0x0100
40 #define IOAT_CHANCTRL_DESCRIPTOR_ADDR_SNOOP_CONTROL 0x0020
41 #define IOAT_CHANCTRL_ERR_INT_EN 0x0010
42 #define IOAT_CHANCTRL_ANY_ERR_ABORT_EN 0x0008
43 #define IOAT_CHANCTRL_ERR_COMPLETION_EN 0x0004
44 #define IOAT_CHANCTRL_INT_REARM 0x0001
46 struct ioat_registers {
52 uint8_t cbver; /* 0x08 */
53 uint8_t reserved4[0x3]; /* 0x09 */
54 uint16_t intrdelay; /* 0x0C */
55 uint16_t cs_status; /* 0x0E */
56 uint32_t dmacapability; /* 0x10 */
57 uint8_t reserved5[0x6C]; /* 0x14 */
58 uint16_t chanctrl; /* 0x80 */
59 uint8_t reserved6[0x2]; /* 0x82 */
60 uint8_t chancmd; /* 0x84 */
61 uint8_t reserved3[1]; /* 0x85 */
62 uint16_t dmacount; /* 0x86 */
63 uint64_t chansts; /* 0x88 */
64 uint64_t chainaddr; /* 0x90 */
65 uint64_t chancmp; /* 0x98 */
66 uint8_t reserved2[0x8]; /* 0xA0 */
67 uint32_t chanerr; /* 0xA8 */
68 uint32_t chanerrmask; /* 0xAC */
71 #define IOAT_CHANCMD_RESET 0x20
72 #define IOAT_CHANCMD_SUSPEND 0x04
74 #define IOAT_CHANCMP_ALIGN 8 /* CHANCMP address must be 64-bit aligned */
80 #endif /* IOAT_HW_DEFS_H */