Lines Matching refs:mc4

28 #pragma ident	"%Z%%M%	%I%	%E% SMI"	/* mc4.c */
32 #include "mc4.h"
41 void t1_mc4_destroy(struct pemc4 *mc4)
43 t1_os_free((void *)mc4, sizeof(*mc4));
83 int t1_mc4_init(struct pemc4 *mc4, unsigned int mc4_clock)
88 adapter_t *adapter = mc4->adapter;
133 mc4->nwords = 4 >> width;
168 t1_write_reg_4(adapter, A_MC4_BIST_ADDR_END, (mc4->size << width) - 1);
195 struct pemc4 *mc4 = t1_os_malloc_wait_zero(sizeof(*mc4));
197 if (mc4) {
198 mc4->adapter = adapter;
199 mc4->size = mc4_calc_size(adapter);
201 return mc4;
204 unsigned int t1_mc4_get_size(struct pemc4 *mc4)
206 return mc4->size;
212 void t1_mc4_intr_enable(struct pemc4 *mc4)
216 if (t1_is_asic(mc4->adapter)) {
217 t1_write_reg_4(mc4->adapter, A_MC4_INT_ENABLE, MC4_INT_MASK);
219 pl_intr = t1_read_reg_4(mc4->adapter, A_PL_ENABLE);
220 t1_write_reg_4(mc4->adapter, A_PL_ENABLE,
225 void t1_mc4_intr_disable(struct pemc4 *mc4)
229 if (t1_is_asic(mc4->adapter)) {
230 t1_write_reg_4(mc4->adapter, A_MC4_INT_ENABLE, 0);
232 pl_intr = t1_read_reg_4(mc4->adapter, A_PL_ENABLE);
233 t1_write_reg_4(mc4->adapter, A_PL_ENABLE,
238 void t1_mc4_intr_clear(struct pemc4 *mc4)
240 if (t1_is_asic(mc4->adapter)) {
241 t1_write_reg_4(mc4->adapter, A_MC4_INT_CAUSE, 0xffffffff);
242 t1_write_reg_4(mc4->adapter, A_PL_CAUSE, F_PL_INTR_MC4);
246 int t1_mc4_intr_handler(struct pemc4 *mc4)
248 adapter_t *adapter = mc4->adapter;
252 mc4->intr_cnt.corr_err++;
265 mc4->intr_cnt.uncorr_err++;
278 mc4->intr_cnt.addr_err++;
285 t1_write_reg_4(mc4->adapter, A_MC4_INT_CAUSE, cause);
289 const struct pemc4_intr_counts *t1_mc4_get_intr_counts(struct pemc4 *mc4)
291 return &mc4->intr_cnt;
298 int t1_mc4_bd_read(struct pemc4 *mc4, unsigned int start, unsigned int n,
301 adapter_t *adap = mc4->adapter;
302 unsigned int size256 = mc4->size / 32, c = 8 / mc4->nwords, i;
321 if (mc4->nwords >= 2)
323 if (mc4->nwords == 4) {