Lines Matching full:mci

63 static u32 pasemi_edac_get_error_info(struct mem_ctl_info *mci)  in pasemi_edac_get_error_info()  argument
65 struct pci_dev *pdev = to_pci_dev(mci->pdev); in pasemi_edac_get_error_info()
84 static void pasemi_edac_process_error_info(struct mem_ctl_info *mci, u32 errsta) in pasemi_edac_process_error_info() argument
86 struct pci_dev *pdev = to_pci_dev(mci->pdev); in pasemi_edac_process_error_info()
101 edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, in pasemi_edac_process_error_info()
102 mci->csrows[cs]->first_page, 0, 0, in pasemi_edac_process_error_info()
103 cs, 0, -1, mci->ctl_name, ""); in pasemi_edac_process_error_info()
108 edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, in pasemi_edac_process_error_info()
109 mci->csrows[cs]->first_page, 0, 0, in pasemi_edac_process_error_info()
110 cs, 0, -1, mci->ctl_name, ""); in pasemi_edac_process_error_info()
113 static void pasemi_edac_check(struct mem_ctl_info *mci) in pasemi_edac_check() argument
117 errsta = pasemi_edac_get_error_info(mci); in pasemi_edac_check()
119 pasemi_edac_process_error_info(mci, errsta); in pasemi_edac_check()
122 static int pasemi_edac_init_csrows(struct mem_ctl_info *mci, in pasemi_edac_init_csrows() argument
131 for (index = 0; index < mci->nr_csrows; index++) { in pasemi_edac_init_csrows()
132 csrow = mci->csrows[index]; in pasemi_edac_init_csrows()
161 edac_mc_printk(mci, KERN_ERR, in pasemi_edac_init_csrows()
182 struct mem_ctl_info *mci = NULL; in pasemi_edac_probe() local
206 mci = edac_mc_alloc(system_mmc_id++, ARRAY_SIZE(layers), layers, in pasemi_edac_probe()
208 if (mci == NULL) in pasemi_edac_probe()
216 mci->pdev = &pdev->dev; in pasemi_edac_probe()
217 mci->mtype_cap = MEM_FLAG_DDR | MEM_FLAG_RDDR; in pasemi_edac_probe()
218 mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_EC | EDAC_FLAG_SECDED; in pasemi_edac_probe()
219 mci->edac_cap = (errcor & MCCFG_ERRCOR_ECC_GEN_EN) ? in pasemi_edac_probe()
223 mci->mod_name = MODULE_NAME; in pasemi_edac_probe()
224 mci->dev_name = pci_name(pdev); in pasemi_edac_probe()
225 mci->ctl_name = "pasemi,pwrficient-mc"; in pasemi_edac_probe()
226 mci->edac_check = pasemi_edac_check; in pasemi_edac_probe()
227 mci->ctl_page_to_phys = NULL; in pasemi_edac_probe()
229 mci->scrub_cap = SCRUB_FLAG_HW_PROG | SCRUB_FLAG_HW_SRC; in pasemi_edac_probe()
230 mci->scrub_mode = in pasemi_edac_probe()
234 if (pasemi_edac_init_csrows(mci, pdev, in pasemi_edac_probe()
235 (mci->edac_cap & EDAC_FLAG_SECDED) ? in pasemi_edac_probe()
237 ((mci->edac_cap & EDAC_FLAG_EC) ? in pasemi_edac_probe()
244 pasemi_edac_get_error_info(mci); in pasemi_edac_probe()
246 if (edac_mc_add_mc(mci)) in pasemi_edac_probe()
253 edac_mc_free(mci); in pasemi_edac_probe()
259 struct mem_ctl_info *mci = edac_mc_del_mc(&pdev->dev); in pasemi_edac_remove() local
261 if (!mci) in pasemi_edac_remove()
264 edac_mc_free(mci); in pasemi_edac_remove()