Lines Matching refs:drvdata
82 static uint32_t axp_mc_calc_address(struct axp_mc_drvdata *drvdata, in axp_mc_calc_address() argument
86 if (drvdata->width == 8) { in axp_mc_calc_address()
88 if (drvdata->cs_addr_sel[cs]) in axp_mc_calc_address()
98 } else if (drvdata->width == 4) { in axp_mc_calc_address()
100 if (drvdata->cs_addr_sel[cs]) in axp_mc_calc_address()
112 if (drvdata->cs_addr_sel[cs]) in axp_mc_calc_address()
127 struct axp_mc_drvdata *drvdata = mci->pvt_info; in axp_mc_check() local
132 char *msg = drvdata->msg; in axp_mc_check()
134 data_h = readl(drvdata->base + SDRAM_ERR_DATA_H_REG); in axp_mc_check()
135 data_l = readl(drvdata->base + SDRAM_ERR_DATA_L_REG); in axp_mc_check()
136 recv_ecc = readl(drvdata->base + SDRAM_ERR_RECV_ECC_REG); in axp_mc_check()
137 calc_ecc = readl(drvdata->base + SDRAM_ERR_CALC_ECC_REG); in axp_mc_check()
138 addr = readl(drvdata->base + SDRAM_ERR_ADDR_REG); in axp_mc_check()
139 cnt_sbe = readl(drvdata->base + SDRAM_ERR_SBE_COUNT_REG); in axp_mc_check()
140 cnt_dbe = readl(drvdata->base + SDRAM_ERR_DBE_COUNT_REG); in axp_mc_check()
141 cause_err = readl(drvdata->base + SDRAM_ERR_CAUSE_ERR_REG); in axp_mc_check()
142 cause_msg = readl(drvdata->base + SDRAM_ERR_CAUSE_MSG_REG); in axp_mc_check()
146 drvdata->base + SDRAM_ERR_CAUSE_ERR_REG); in axp_mc_check()
148 drvdata->base + SDRAM_ERR_CAUSE_MSG_REG); in axp_mc_check()
152 writel(0, drvdata->base + SDRAM_ERR_SBE_COUNT_REG); in axp_mc_check()
154 writel(0, drvdata->base + SDRAM_ERR_DBE_COUNT_REG); in axp_mc_check()
193 addr_val = axp_mc_calc_address(drvdata, cs_val, bank_val, row_val, in axp_mc_check()
207 mci->ctl_name, drvdata->msg); in axp_mc_check()
215 mci->ctl_name, drvdata->msg); in axp_mc_check()
221 struct axp_mc_drvdata *drvdata = mci->pvt_info; in axp_mc_read_config() local
226 config = readl(drvdata->base + SDRAM_CONFIG_REG); in axp_mc_read_config()
229 drvdata->width = 8; in axp_mc_read_config()
232 drvdata->width = 4; in axp_mc_read_config()
234 addr_ctrl = readl(drvdata->base + SDRAM_ADDR_CTRL_REG); in axp_mc_read_config()
235 rank_ctrl = readl(drvdata->base + SDRAM_RANK_CTRL_REG); in axp_mc_read_config()
242 drvdata->cs_addr_sel[i] = in axp_mc_read_config()
285 struct axp_mc_drvdata *drvdata; in axp_mc_probe() local
315 mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(*drvdata)); in axp_mc_probe()
319 drvdata = mci->pvt_info; in axp_mc_probe()
320 drvdata->base = base; in axp_mc_probe()
338 drvdata->width /= 2; in axp_mc_probe()
342 writel(1 << SDRAM_ERR_CTRL_THR_OFFSET, drvdata->base + SDRAM_ERR_CTRL_REG); in axp_mc_probe()
345 …writel(~(SDRAM_ERR_CAUSE_DBE_MASK | SDRAM_ERR_CAUSE_SBE_MASK), drvdata->base + SDRAM_ERR_CAUSE_ERR… in axp_mc_probe()
346 …writel(~(SDRAM_ERR_CAUSE_DBE_MASK | SDRAM_ERR_CAUSE_SBE_MASK), drvdata->base + SDRAM_ERR_CAUSE_MSG… in axp_mc_probe()
349 writel(0, drvdata->base + SDRAM_ERR_SBE_COUNT_REG); in axp_mc_probe()
350 writel(0, drvdata->base + SDRAM_ERR_DBE_COUNT_REG); in axp_mc_probe()
397 static void aurora_l2_inject(struct aurora_l2_drvdata *drvdata) in aurora_l2_inject() argument
399 drvdata->inject_addr &= AURORA_ERR_INJECT_CTL_ADDR_MASK; in aurora_l2_inject()
400 drvdata->inject_ctl &= AURORA_ERR_INJECT_CTL_EN_MASK; in aurora_l2_inject()
401 writel(0, drvdata->base + AURORA_ERR_INJECT_CTL_REG); in aurora_l2_inject()
402 writel(drvdata->inject_mask, drvdata->base + AURORA_ERR_INJECT_MASK_REG); in aurora_l2_inject()
403 writel(drvdata->inject_addr | drvdata->inject_ctl, drvdata->base + AURORA_ERR_INJECT_CTL_REG); in aurora_l2_inject()
409 struct aurora_l2_drvdata *drvdata = dci->pvt_info; in aurora_l2_check() local
412 char *msg = drvdata->msg; in aurora_l2_check()
413 size_t size = sizeof(drvdata->msg); in aurora_l2_check()
416 cnt = readl(drvdata->base + AURORA_ERR_CNT_REG); in aurora_l2_check()
417 attr_cap = readl(drvdata->base + AURORA_ERR_ATTR_CAP_REG); in aurora_l2_check()
418 addr_cap = readl(drvdata->base + AURORA_ERR_ADDR_CAP_REG); in aurora_l2_check()
419 way_cap = readl(drvdata->base + AURORA_ERR_WAY_CAP_REG); in aurora_l2_check()
425 writel(AURORA_ERR_CNT_CLR, drvdata->base + AURORA_ERR_CNT_REG); in aurora_l2_check()
474 writel(AURORA_ERR_ATTR_CAP_VALID, drvdata->base + AURORA_ERR_ATTR_CAP_REG); in aurora_l2_check()
479 edac_device_handle_ue(dci, 0, 0, drvdata->msg); in aurora_l2_check()
483 edac_device_handle_ce(dci, 0, 0, drvdata->msg); in aurora_l2_check()
497 struct aurora_l2_drvdata *drvdata = dci->pvt_info; in aurora_l2_poll() local
502 aurora_l2_inject(drvdata); in aurora_l2_poll()
514 struct aurora_l2_drvdata *drvdata; in aurora_l2_probe() local
539 dci = edac_device_alloc_ctl_info(sizeof(*drvdata), in aurora_l2_probe()
544 drvdata = dci->pvt_info; in aurora_l2_probe()
545 drvdata->base = base; in aurora_l2_probe()
556 writel(AURORA_ERR_CNT_CLR, drvdata->base + AURORA_ERR_CNT_REG); in aurora_l2_probe()
557 writel(AURORA_ERR_ATTR_CAP_VALID, drvdata->base + AURORA_ERR_ATTR_CAP_REG); in aurora_l2_probe()
565 drvdata->debugfs = edac_debugfs_create_dir(dev_name(&pdev->dev)); in aurora_l2_probe()
566 if (drvdata->debugfs) { in aurora_l2_probe()
568 drvdata->debugfs, in aurora_l2_probe()
569 &drvdata->inject_addr); in aurora_l2_probe()
571 drvdata->debugfs, in aurora_l2_probe()
572 &drvdata->inject_mask); in aurora_l2_probe()
574 drvdata->debugfs, &drvdata->inject_ctl); in aurora_l2_probe()
585 struct aurora_l2_drvdata *drvdata = dci->pvt_info; in aurora_l2_remove() local
587 edac_debugfs_remove_recursive(drvdata->debugfs); in aurora_l2_remove()