0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef NHI_REGS_H_
0010 #define NHI_REGS_H_
0011
0012 #include <linux/types.h>
0013
0014 enum ring_flags {
0015 RING_FLAG_ISOCH_ENABLE = 1 << 27,
0016 RING_FLAG_E2E_FLOW_CONTROL = 1 << 28,
0017 RING_FLAG_PCI_NO_SNOOP = 1 << 29,
0018 RING_FLAG_RAW = 1 << 30,
0019 RING_FLAG_ENABLE = 1 << 31,
0020 };
0021
0022
0023
0024
0025
0026
0027
0028 struct ring_desc {
0029 u64 phys;
0030 u32 length:12;
0031 u32 eof:4;
0032 u32 sof:4;
0033 enum ring_desc_flags flags:12;
0034 u32 time;
0035 } __packed;
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046 #define REG_TX_RING_BASE 0x00000
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056 #define REG_RX_RING_BASE 0x08000
0057
0058
0059
0060
0061
0062
0063
0064 #define REG_TX_OPTIONS_BASE 0x19800
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074 #define REG_RX_OPTIONS_BASE 0x29800
0075 #define REG_RX_OPTIONS_E2E_HOP_MASK GENMASK(22, 12)
0076 #define REG_RX_OPTIONS_E2E_HOP_SHIFT 12
0077
0078
0079
0080
0081
0082
0083
0084 #define REG_RING_NOTIFY_BASE 0x37800
0085 #define RING_NOTIFY_REG_COUNT(nhi) ((31 + 3 * nhi->hop_count) / 32)
0086
0087
0088
0089
0090
0091
0092 #define REG_RING_INTERRUPT_BASE 0x38200
0093 #define RING_INTERRUPT_REG_COUNT(nhi) ((31 + 2 * nhi->hop_count) / 32)
0094
0095 #define REG_INT_THROTTLING_RATE 0x38c00
0096
0097
0098 #define REG_INT_VEC_ALLOC_BASE 0x38c40
0099 #define REG_INT_VEC_ALLOC_BITS 4
0100 #define REG_INT_VEC_ALLOC_MASK GENMASK(3, 0)
0101 #define REG_INT_VEC_ALLOC_REGS (32 / REG_INT_VEC_ALLOC_BITS)
0102
0103
0104 #define REG_HOP_COUNT 0x39640
0105
0106 #define REG_DMA_MISC 0x39864
0107 #define REG_DMA_MISC_INT_AUTO_CLEAR BIT(2)
0108
0109 #define REG_INMAIL_DATA 0x39900
0110
0111 #define REG_INMAIL_CMD 0x39904
0112 #define REG_INMAIL_CMD_MASK GENMASK(7, 0)
0113 #define REG_INMAIL_ERROR BIT(30)
0114 #define REG_INMAIL_OP_REQUEST BIT(31)
0115
0116 #define REG_OUTMAIL_CMD 0x3990c
0117 #define REG_OUTMAIL_CMD_OPMODE_SHIFT 8
0118 #define REG_OUTMAIL_CMD_OPMODE_MASK GENMASK(11, 8)
0119
0120 #define REG_FW_STS 0x39944
0121 #define REG_FW_STS_NVM_AUTH_DONE BIT(31)
0122 #define REG_FW_STS_CIO_RESET_REQ BIT(30)
0123 #define REG_FW_STS_ICM_EN_CPU BIT(2)
0124 #define REG_FW_STS_ICM_EN_INVERT BIT(1)
0125 #define REG_FW_STS_ICM_EN BIT(0)
0126
0127
0128
0129
0130 #define VS_CAP_9 0xc8
0131 #define VS_CAP_9_FW_READY BIT(31)
0132
0133 #define VS_CAP_10 0xcc
0134 #define VS_CAP_11 0xd0
0135
0136 #define VS_CAP_15 0xe0
0137 #define VS_CAP_16 0xe4
0138
0139 #define VS_CAP_18 0xec
0140 #define VS_CAP_18_DONE BIT(0)
0141
0142 #define VS_CAP_19 0xf0
0143 #define VS_CAP_19_VALID BIT(0)
0144 #define VS_CAP_19_CMD_SHIFT 1
0145 #define VS_CAP_19_CMD_MASK GENMASK(7, 1)
0146
0147 #define VS_CAP_22 0xfc
0148 #define VS_CAP_22_FORCE_POWER BIT(1)
0149 #define VS_CAP_22_DMA_DELAY_MASK GENMASK(31, 24)
0150 #define VS_CAP_22_DMA_DELAY_SHIFT 24
0151
0152
0153
0154
0155
0156
0157
0158 enum icl_lc_mailbox_cmd {
0159 ICL_LC_GO2SX = 0x02,
0160 ICL_LC_GO2SX_NO_WAKE = 0x03,
0161 ICL_LC_PREPARE_FOR_RESET = 0x21,
0162 };
0163
0164 #endif