Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

crypto: qat - expand CSR operations for QAT GEN4 devices

Extend the CSR operations for QAT GEN4 devices to allow saving and
restoring the rings state.

The new operations will be used as a building block for implementing the
state save and restore of Virtual Functions necessary for VM live
migration.

This adds the following operations:
- read ring status register
- read ring underflow/overflow status register
- read ring nearly empty status register
- read ring nearly full status register
- read ring full status register
- read ring complete status register
- read ring exception status register
- read/write ring exception interrupt mask register
- read ring configuration register
- read ring base register
- read/write ring interrupt enable register
- read ring interrupt flag register
- read/write ring interrupt source select register
- read ring coalesced interrupt enable register
- read ring coalesced interrupt control register
- read ring flag and coalesced interrupt enable register
- read ring service arbiter enable register
- get ring coalesced interrupt control enable mask

Signed-off-by: Siming Wan <siming.wan@intel.com>
Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Signed-off-by: Xin Zeng <xin.zeng@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

authored by

Siming Wan and committed by
Herbert Xu
3fa1057e 84058ffb

+249 -1
+27
drivers/crypto/intel/qat/qat_common/adf_accel_devices.h
··· 150 150 u32 ring); 151 151 void (*write_csr_ring_tail)(void __iomem *csr_base_addr, u32 bank, 152 152 u32 ring, u32 value); 153 + u32 (*read_csr_stat)(void __iomem *csr_base_addr, u32 bank); 154 + u32 (*read_csr_uo_stat)(void __iomem *csr_base_addr, u32 bank); 153 155 u32 (*read_csr_e_stat)(void __iomem *csr_base_addr, u32 bank); 156 + u32 (*read_csr_ne_stat)(void __iomem *csr_base_addr, u32 bank); 157 + u32 (*read_csr_nf_stat)(void __iomem *csr_base_addr, u32 bank); 158 + u32 (*read_csr_f_stat)(void __iomem *csr_base_addr, u32 bank); 159 + u32 (*read_csr_c_stat)(void __iomem *csr_base_addr, u32 bank); 160 + u32 (*read_csr_exp_stat)(void __iomem *csr_base_addr, u32 bank); 161 + u32 (*read_csr_exp_int_en)(void __iomem *csr_base_addr, u32 bank); 162 + void (*write_csr_exp_int_en)(void __iomem *csr_base_addr, u32 bank, 163 + u32 value); 164 + u32 (*read_csr_ring_config)(void __iomem *csr_base_addr, u32 bank, 165 + u32 ring); 154 166 void (*write_csr_ring_config)(void __iomem *csr_base_addr, u32 bank, 155 167 u32 ring, u32 value); 168 + dma_addr_t (*read_csr_ring_base)(void __iomem *csr_base_addr, u32 bank, 169 + u32 ring); 156 170 void (*write_csr_ring_base)(void __iomem *csr_base_addr, u32 bank, 157 171 u32 ring, dma_addr_t addr); 172 + u32 (*read_csr_int_en)(void __iomem *csr_base_addr, u32 bank); 173 + void (*write_csr_int_en)(void __iomem *csr_base_addr, u32 bank, 174 + u32 value); 175 + u32 (*read_csr_int_flag)(void __iomem *csr_base_addr, u32 bank); 158 176 void (*write_csr_int_flag)(void __iomem *csr_base_addr, u32 bank, 159 177 u32 value); 178 + u32 (*read_csr_int_srcsel)(void __iomem *csr_base_addr, u32 bank); 160 179 void (*write_csr_int_srcsel)(void __iomem *csr_base_addr, u32 bank); 180 + void (*write_csr_int_srcsel_w_val)(void __iomem *csr_base_addr, 181 + u32 bank, u32 value); 182 + u32 (*read_csr_int_col_en)(void __iomem *csr_base_addr, u32 bank); 161 183 void (*write_csr_int_col_en)(void __iomem *csr_base_addr, u32 bank, 162 184 u32 value); 185 + u32 (*read_csr_int_col_ctl)(void __iomem *csr_base_addr, u32 bank); 163 186 void (*write_csr_int_col_ctl)(void __iomem *csr_base_addr, u32 bank, 164 187 u32 value); 188 + u32 (*read_csr_int_flag_and_col)(void __iomem *csr_base_addr, 189 + u32 bank); 165 190 void (*write_csr_int_flag_and_col)(void __iomem *csr_base_addr, 166 191 u32 bank, u32 value); 192 + u32 (*read_csr_ring_srv_arb_en)(void __iomem *csr_base_addr, u32 bank); 167 193 void (*write_csr_ring_srv_arb_en)(void __iomem *csr_base_addr, u32 bank, 168 194 u32 value); 195 + u32 (*get_int_col_ctl_enable_mask)(void); 169 196 }; 170 197 171 198 struct adf_cfg_device_data;
+130
drivers/crypto/intel/qat/qat_common/adf_gen4_hw_csr_data.c
··· 30 30 WRITE_CSR_RING_TAIL(csr_base_addr, bank, ring, value); 31 31 } 32 32 33 + static u32 read_csr_stat(void __iomem *csr_base_addr, u32 bank) 34 + { 35 + return READ_CSR_STAT(csr_base_addr, bank); 36 + } 37 + 38 + static u32 read_csr_uo_stat(void __iomem *csr_base_addr, u32 bank) 39 + { 40 + return READ_CSR_UO_STAT(csr_base_addr, bank); 41 + } 42 + 33 43 static u32 read_csr_e_stat(void __iomem *csr_base_addr, u32 bank) 34 44 { 35 45 return READ_CSR_E_STAT(csr_base_addr, bank); 46 + } 47 + 48 + static u32 read_csr_ne_stat(void __iomem *csr_base_addr, u32 bank) 49 + { 50 + return READ_CSR_NE_STAT(csr_base_addr, bank); 51 + } 52 + 53 + static u32 read_csr_nf_stat(void __iomem *csr_base_addr, u32 bank) 54 + { 55 + return READ_CSR_NF_STAT(csr_base_addr, bank); 56 + } 57 + 58 + static u32 read_csr_f_stat(void __iomem *csr_base_addr, u32 bank) 59 + { 60 + return READ_CSR_F_STAT(csr_base_addr, bank); 61 + } 62 + 63 + static u32 read_csr_c_stat(void __iomem *csr_base_addr, u32 bank) 64 + { 65 + return READ_CSR_C_STAT(csr_base_addr, bank); 66 + } 67 + 68 + static u32 read_csr_exp_stat(void __iomem *csr_base_addr, u32 bank) 69 + { 70 + return READ_CSR_EXP_STAT(csr_base_addr, bank); 71 + } 72 + 73 + static u32 read_csr_exp_int_en(void __iomem *csr_base_addr, u32 bank) 74 + { 75 + return READ_CSR_EXP_INT_EN(csr_base_addr, bank); 76 + } 77 + 78 + static void write_csr_exp_int_en(void __iomem *csr_base_addr, u32 bank, 79 + u32 value) 80 + { 81 + WRITE_CSR_EXP_INT_EN(csr_base_addr, bank, value); 82 + } 83 + 84 + static u32 read_csr_ring_config(void __iomem *csr_base_addr, u32 bank, 85 + u32 ring) 86 + { 87 + return READ_CSR_RING_CONFIG(csr_base_addr, bank, ring); 36 88 } 37 89 38 90 static void write_csr_ring_config(void __iomem *csr_base_addr, u32 bank, u32 ring, ··· 93 41 WRITE_CSR_RING_CONFIG(csr_base_addr, bank, ring, value); 94 42 } 95 43 44 + static dma_addr_t read_csr_ring_base(void __iomem *csr_base_addr, u32 bank, 45 + u32 ring) 46 + { 47 + return READ_CSR_RING_BASE(csr_base_addr, bank, ring); 48 + } 49 + 96 50 static void write_csr_ring_base(void __iomem *csr_base_addr, u32 bank, u32 ring, 97 51 dma_addr_t addr) 98 52 { 99 53 WRITE_CSR_RING_BASE(csr_base_addr, bank, ring, addr); 54 + } 55 + 56 + static u32 read_csr_int_en(void __iomem *csr_base_addr, u32 bank) 57 + { 58 + return READ_CSR_INT_EN(csr_base_addr, bank); 59 + } 60 + 61 + static void write_csr_int_en(void __iomem *csr_base_addr, u32 bank, u32 value) 62 + { 63 + WRITE_CSR_INT_EN(csr_base_addr, bank, value); 64 + } 65 + 66 + static u32 read_csr_int_flag(void __iomem *csr_base_addr, u32 bank) 67 + { 68 + return READ_CSR_INT_FLAG(csr_base_addr, bank); 100 69 } 101 70 102 71 static void write_csr_int_flag(void __iomem *csr_base_addr, u32 bank, ··· 126 53 WRITE_CSR_INT_FLAG(csr_base_addr, bank, value); 127 54 } 128 55 56 + static u32 read_csr_int_srcsel(void __iomem *csr_base_addr, u32 bank) 57 + { 58 + return READ_CSR_INT_SRCSEL(csr_base_addr, bank); 59 + } 60 + 129 61 static void write_csr_int_srcsel(void __iomem *csr_base_addr, u32 bank) 130 62 { 131 63 WRITE_CSR_INT_SRCSEL(csr_base_addr, bank); 132 64 } 133 65 66 + static void write_csr_int_srcsel_w_val(void __iomem *csr_base_addr, u32 bank, 67 + u32 value) 68 + { 69 + WRITE_CSR_INT_SRCSEL_W_VAL(csr_base_addr, bank, value); 70 + } 71 + 72 + static u32 read_csr_int_col_en(void __iomem *csr_base_addr, u32 bank) 73 + { 74 + return READ_CSR_INT_COL_EN(csr_base_addr, bank); 75 + } 76 + 134 77 static void write_csr_int_col_en(void __iomem *csr_base_addr, u32 bank, u32 value) 135 78 { 136 79 WRITE_CSR_INT_COL_EN(csr_base_addr, bank, value); 80 + } 81 + 82 + static u32 read_csr_int_col_ctl(void __iomem *csr_base_addr, u32 bank) 83 + { 84 + return READ_CSR_INT_COL_CTL(csr_base_addr, bank); 137 85 } 138 86 139 87 static void write_csr_int_col_ctl(void __iomem *csr_base_addr, u32 bank, ··· 163 69 WRITE_CSR_INT_COL_CTL(csr_base_addr, bank, value); 164 70 } 165 71 72 + static u32 read_csr_int_flag_and_col(void __iomem *csr_base_addr, u32 bank) 73 + { 74 + return READ_CSR_INT_FLAG_AND_COL(csr_base_addr, bank); 75 + } 76 + 166 77 static void write_csr_int_flag_and_col(void __iomem *csr_base_addr, u32 bank, 167 78 u32 value) 168 79 { 169 80 WRITE_CSR_INT_FLAG_AND_COL(csr_base_addr, bank, value); 170 81 } 171 82 83 + static u32 read_csr_ring_srv_arb_en(void __iomem *csr_base_addr, u32 bank) 84 + { 85 + return READ_CSR_RING_SRV_ARB_EN(csr_base_addr, bank); 86 + } 87 + 172 88 static void write_csr_ring_srv_arb_en(void __iomem *csr_base_addr, u32 bank, 173 89 u32 value) 174 90 { 175 91 WRITE_CSR_RING_SRV_ARB_EN(csr_base_addr, bank, value); 92 + } 93 + 94 + static u32 get_int_col_ctl_enable_mask(void) 95 + { 96 + return ADF_RING_CSR_INT_COL_CTL_ENABLE; 176 97 } 177 98 178 99 void adf_gen4_init_hw_csr_ops(struct adf_hw_csr_ops *csr_ops) ··· 197 88 csr_ops->write_csr_ring_head = write_csr_ring_head; 198 89 csr_ops->read_csr_ring_tail = read_csr_ring_tail; 199 90 csr_ops->write_csr_ring_tail = write_csr_ring_tail; 91 + csr_ops->read_csr_stat = read_csr_stat; 92 + csr_ops->read_csr_uo_stat = read_csr_uo_stat; 200 93 csr_ops->read_csr_e_stat = read_csr_e_stat; 94 + csr_ops->read_csr_ne_stat = read_csr_ne_stat; 95 + csr_ops->read_csr_nf_stat = read_csr_nf_stat; 96 + csr_ops->read_csr_f_stat = read_csr_f_stat; 97 + csr_ops->read_csr_c_stat = read_csr_c_stat; 98 + csr_ops->read_csr_exp_stat = read_csr_exp_stat; 99 + csr_ops->read_csr_exp_int_en = read_csr_exp_int_en; 100 + csr_ops->write_csr_exp_int_en = write_csr_exp_int_en; 101 + csr_ops->read_csr_ring_config = read_csr_ring_config; 201 102 csr_ops->write_csr_ring_config = write_csr_ring_config; 103 + csr_ops->read_csr_ring_base = read_csr_ring_base; 202 104 csr_ops->write_csr_ring_base = write_csr_ring_base; 105 + csr_ops->read_csr_int_en = read_csr_int_en; 106 + csr_ops->write_csr_int_en = write_csr_int_en; 107 + csr_ops->read_csr_int_flag = read_csr_int_flag; 203 108 csr_ops->write_csr_int_flag = write_csr_int_flag; 109 + csr_ops->read_csr_int_srcsel = read_csr_int_srcsel; 204 110 csr_ops->write_csr_int_srcsel = write_csr_int_srcsel; 111 + csr_ops->write_csr_int_srcsel_w_val = write_csr_int_srcsel_w_val; 112 + csr_ops->read_csr_int_col_en = read_csr_int_col_en; 205 113 csr_ops->write_csr_int_col_en = write_csr_int_col_en; 114 + csr_ops->read_csr_int_col_ctl = read_csr_int_col_ctl; 206 115 csr_ops->write_csr_int_col_ctl = write_csr_int_col_ctl; 116 + csr_ops->read_csr_int_flag_and_col = read_csr_int_flag_and_col; 207 117 csr_ops->write_csr_int_flag_and_col = write_csr_int_flag_and_col; 118 + csr_ops->read_csr_ring_srv_arb_en = read_csr_ring_srv_arb_en; 208 119 csr_ops->write_csr_ring_srv_arb_en = write_csr_ring_srv_arb_en; 120 + csr_ops->get_int_col_ctl_enable_mask = get_int_col_ctl_enable_mask; 209 121 } 210 122 EXPORT_SYMBOL_GPL(adf_gen4_init_hw_csr_ops);
+92 -1
drivers/crypto/intel/qat/qat_common/adf_gen4_hw_csr_data.h
··· 12 12 #define ADF_RING_CSR_RING_UBASE 0x1080 13 13 #define ADF_RING_CSR_RING_HEAD 0x0C0 14 14 #define ADF_RING_CSR_RING_TAIL 0x100 15 + #define ADF_RING_CSR_STAT 0x140 16 + #define ADF_RING_CSR_UO_STAT 0x148 15 17 #define ADF_RING_CSR_E_STAT 0x14C 18 + #define ADF_RING_CSR_NE_STAT 0x150 19 + #define ADF_RING_CSR_NF_STAT 0x154 20 + #define ADF_RING_CSR_F_STAT 0x158 21 + #define ADF_RING_CSR_C_STAT 0x15C 22 + #define ADF_RING_CSR_INT_FLAG_EN 0x16C 16 23 #define ADF_RING_CSR_INT_FLAG 0x170 17 24 #define ADF_RING_CSR_INT_SRCSEL 0x174 25 + #define ADF_RING_CSR_INT_COL_EN 0x17C 18 26 #define ADF_RING_CSR_INT_COL_CTL 0x180 19 27 #define ADF_RING_CSR_INT_FLAG_AND_COL 0x184 28 + #define ADF_RING_CSR_EXP_STAT 0x188 29 + #define ADF_RING_CSR_EXP_INT_EN 0x18C 20 30 #define ADF_RING_CSR_INT_COL_CTL_ENABLE 0x80000000 21 - #define ADF_RING_CSR_INT_COL_EN 0x17C 22 31 #define ADF_RING_CSR_ADDR_OFFSET 0x100000 23 32 #define ADF_RING_BUNDLE_SIZE 0x2000 24 33 #define ADF_RING_CSR_RING_SRV_ARB_EN 0x19C ··· 42 33 ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 43 34 ADF_RING_BUNDLE_SIZE * (bank) + \ 44 35 ADF_RING_CSR_RING_TAIL + ((ring) << 2)) 36 + #define READ_CSR_STAT(csr_base_addr, bank) \ 37 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 38 + ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_STAT) 39 + #define READ_CSR_UO_STAT(csr_base_addr, bank) \ 40 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 41 + ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_UO_STAT) 45 42 #define READ_CSR_E_STAT(csr_base_addr, bank) \ 46 43 ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 47 44 ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_E_STAT) 45 + #define READ_CSR_NE_STAT(csr_base_addr, bank) \ 46 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 47 + ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_NE_STAT) 48 + #define READ_CSR_NF_STAT(csr_base_addr, bank) \ 49 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 50 + ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_NF_STAT) 51 + #define READ_CSR_F_STAT(csr_base_addr, bank) \ 52 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 53 + ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_F_STAT) 54 + #define READ_CSR_C_STAT(csr_base_addr, bank) \ 55 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 56 + ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_C_STAT) 57 + #define READ_CSR_EXP_STAT(csr_base_addr, bank) \ 58 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 59 + ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_EXP_STAT) 60 + #define READ_CSR_EXP_INT_EN(csr_base_addr, bank) \ 61 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 62 + ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_EXP_INT_EN) 63 + #define WRITE_CSR_EXP_INT_EN(csr_base_addr, bank, value) \ 64 + ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 65 + ADF_RING_BUNDLE_SIZE * (bank) + \ 66 + ADF_RING_CSR_EXP_INT_EN, value) 67 + #define READ_CSR_RING_CONFIG(csr_base_addr, bank, ring) \ 68 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 69 + ADF_RING_BUNDLE_SIZE * (bank) + \ 70 + ADF_RING_CSR_RING_CONFIG + ((ring) << 2)) 48 71 #define WRITE_CSR_RING_CONFIG(csr_base_addr, bank, ring, value) \ 49 72 ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 50 73 ADF_RING_BUNDLE_SIZE * (bank) + \ ··· 98 57 ADF_RING_CSR_RING_UBASE + ((_ring) << 2), u_base); \ 99 58 } while (0) 100 59 60 + static inline u64 read_base(void __iomem *csr_base_addr, u32 bank, u32 ring) 61 + { 62 + u32 l_base, u_base; 63 + 64 + /* 65 + * Use special IO wrapper for ring base as LBASE and UBASE are 66 + * not physically contigious 67 + */ 68 + l_base = ADF_CSR_RD(csr_base_addr, (ADF_RING_BUNDLE_SIZE * bank) + 69 + ADF_RING_CSR_RING_LBASE + (ring << 2)); 70 + u_base = ADF_CSR_RD(csr_base_addr, (ADF_RING_BUNDLE_SIZE * bank) + 71 + ADF_RING_CSR_RING_UBASE + (ring << 2)); 72 + 73 + return (u64)u_base << 32 | (u64)l_base; 74 + } 75 + 76 + #define READ_CSR_RING_BASE(csr_base_addr, bank, ring) \ 77 + read_base((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, (bank), (ring)) 78 + 101 79 #define WRITE_CSR_RING_HEAD(csr_base_addr, bank, ring, value) \ 102 80 ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 103 81 ADF_RING_BUNDLE_SIZE * (bank) + \ ··· 125 65 ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 126 66 ADF_RING_BUNDLE_SIZE * (bank) + \ 127 67 ADF_RING_CSR_RING_TAIL + ((ring) << 2), value) 68 + #define READ_CSR_INT_EN(csr_base_addr, bank) \ 69 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 70 + ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_INT_FLAG_EN) 71 + #define WRITE_CSR_INT_EN(csr_base_addr, bank, value) \ 72 + ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 73 + ADF_RING_BUNDLE_SIZE * (bank) + \ 74 + ADF_RING_CSR_INT_FLAG_EN, (value)) 75 + #define READ_CSR_INT_FLAG(csr_base_addr, bank) \ 76 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 77 + ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_INT_FLAG) 128 78 #define WRITE_CSR_INT_FLAG(csr_base_addr, bank, value) \ 129 79 ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 130 80 ADF_RING_BUNDLE_SIZE * (bank) + \ 131 81 ADF_RING_CSR_INT_FLAG, (value)) 82 + #define READ_CSR_INT_SRCSEL(csr_base_addr, bank) \ 83 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 84 + ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_INT_SRCSEL) 132 85 #define WRITE_CSR_INT_SRCSEL(csr_base_addr, bank) \ 133 86 ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 134 87 ADF_RING_BUNDLE_SIZE * (bank) + \ 135 88 ADF_RING_CSR_INT_SRCSEL, ADF_BANK_INT_SRC_SEL_MASK) 89 + #define WRITE_CSR_INT_SRCSEL_W_VAL(csr_base_addr, bank, value) \ 90 + ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 91 + ADF_RING_BUNDLE_SIZE * (bank) + \ 92 + ADF_RING_CSR_INT_SRCSEL, (value)) 93 + #define READ_CSR_INT_COL_EN(csr_base_addr, bank) \ 94 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 95 + ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_INT_COL_EN) 136 96 #define WRITE_CSR_INT_COL_EN(csr_base_addr, bank, value) \ 137 97 ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 138 98 ADF_RING_BUNDLE_SIZE * (bank) + \ 139 99 ADF_RING_CSR_INT_COL_EN, (value)) 100 + #define READ_CSR_INT_COL_CTL(csr_base_addr, bank) \ 101 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 102 + ADF_RING_BUNDLE_SIZE * (bank) + ADF_RING_CSR_INT_COL_CTL) 140 103 #define WRITE_CSR_INT_COL_CTL(csr_base_addr, bank, value) \ 141 104 ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 142 105 ADF_RING_BUNDLE_SIZE * (bank) + \ 143 106 ADF_RING_CSR_INT_COL_CTL, \ 144 107 ADF_RING_CSR_INT_COL_CTL_ENABLE | (value)) 108 + #define READ_CSR_INT_FLAG_AND_COL(csr_base_addr, bank) \ 109 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 110 + ADF_RING_BUNDLE_SIZE * (bank) + \ 111 + ADF_RING_CSR_INT_FLAG_AND_COL) 145 112 #define WRITE_CSR_INT_FLAG_AND_COL(csr_base_addr, bank, value) \ 146 113 ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 147 114 ADF_RING_BUNDLE_SIZE * (bank) + \ 148 115 ADF_RING_CSR_INT_FLAG_AND_COL, (value)) 149 116 117 + #define READ_CSR_RING_SRV_ARB_EN(csr_base_addr, bank) \ 118 + ADF_CSR_RD((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 119 + ADF_RING_BUNDLE_SIZE * (bank) + \ 120 + ADF_RING_CSR_RING_SRV_ARB_EN) 150 121 #define WRITE_CSR_RING_SRV_ARB_EN(csr_base_addr, bank, value) \ 151 122 ADF_CSR_WR((csr_base_addr) + ADF_RING_CSR_ADDR_OFFSET, \ 152 123 ADF_RING_BUNDLE_SIZE * (bank) + \