Lines Matching refs:mci
125 #define ppc4xx_edac_mc_printk(level, mci, fmt, arg...) \ argument
126 edac_mc_chipset_printk(mci, level, "PPC4xx", fmt, ##arg)
298 ppc4xx_edac_generate_bank_message(const struct mem_ctl_info *mci, in ppc4xx_edac_generate_bank_message() argument
306 n = snprintf(buffer, size, "%s: Banks: ", mci->dev_name); in ppc4xx_edac_generate_bank_message()
315 for (rows = 0, row = 0; row < mci->nr_csrows; row++) { in ppc4xx_edac_generate_bank_message()
360 ppc4xx_edac_generate_checkbit_message(const struct mem_ctl_info *mci, in ppc4xx_edac_generate_checkbit_message() argument
365 const struct ppc4xx_edac_pdata *pdata = mci->pvt_info; in ppc4xx_edac_generate_checkbit_message()
418 ppc4xx_edac_generate_lane_message(const struct mem_ctl_info *mci, in ppc4xx_edac_generate_lane_message() argument
483 ppc4xx_edac_generate_ecc_message(const struct mem_ctl_info *mci, in ppc4xx_edac_generate_ecc_message() argument
490 n = ppc4xx_edac_generate_bank_message(mci, status, buffer, size); in ppc4xx_edac_generate_ecc_message()
499 n = ppc4xx_edac_generate_checkbit_message(mci, status, buffer, size); in ppc4xx_edac_generate_ecc_message()
508 n = ppc4xx_edac_generate_lane_message(mci, status, buffer, size); in ppc4xx_edac_generate_ecc_message()
539 ppc4xx_edac_generate_plb_message(const struct mem_ctl_info *mci, in ppc4xx_edac_generate_plb_message() argument
580 ppc4xx_edac_generate_message(const struct mem_ctl_info *mci, in ppc4xx_edac_generate_message() argument
590 n = ppc4xx_edac_generate_ecc_message(mci, status, buffer, size); in ppc4xx_edac_generate_message()
598 ppc4xx_edac_generate_plb_message(mci, status, buffer, size); in ppc4xx_edac_generate_message()
613 ppc4xx_ecc_dump_status(const struct mem_ctl_info *mci, in ppc4xx_ecc_dump_status() argument
618 ppc4xx_edac_generate_message(mci, status, message, sizeof(message)); in ppc4xx_ecc_dump_status()
620 ppc4xx_edac_mc_printk(KERN_INFO, mci, in ppc4xx_ecc_dump_status()
650 ppc4xx_ecc_get_status(const struct mem_ctl_info *mci, in ppc4xx_ecc_get_status() argument
653 const struct ppc4xx_edac_pdata *pdata = mci->pvt_info; in ppc4xx_ecc_get_status()
675 ppc4xx_ecc_clear_status(const struct mem_ctl_info *mci, in ppc4xx_ecc_clear_status() argument
678 const struct ppc4xx_edac_pdata *pdata = mci->pvt_info; in ppc4xx_ecc_clear_status()
702 ppc4xx_edac_handle_ce(struct mem_ctl_info *mci, in ppc4xx_edac_handle_ce() argument
708 ppc4xx_edac_generate_message(mci, status, message, sizeof(message)); in ppc4xx_edac_handle_ce()
710 for (row = 0; row < mci->nr_csrows; row++) in ppc4xx_edac_handle_ce()
712 edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, in ppc4xx_edac_handle_ce()
730 ppc4xx_edac_handle_ue(struct mem_ctl_info *mci, in ppc4xx_edac_handle_ue() argument
739 ppc4xx_edac_generate_message(mci, status, message, sizeof(message)); in ppc4xx_edac_handle_ue()
741 for (row = 0; row < mci->nr_csrows; row++) in ppc4xx_edac_handle_ue()
743 edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, in ppc4xx_edac_handle_ue()
760 ppc4xx_edac_check(struct mem_ctl_info *mci) in ppc4xx_edac_check() argument
767 ppc4xx_ecc_get_status(mci, &status); in ppc4xx_edac_check()
771 ppc4xx_ecc_dump_status(mci, &status); in ppc4xx_edac_check()
775 ppc4xx_edac_handle_ue(mci, &status); in ppc4xx_edac_check()
778 ppc4xx_edac_handle_ce(mci, &status); in ppc4xx_edac_check()
780 ppc4xx_ecc_clear_status(mci, &status); in ppc4xx_edac_check()
799 struct mem_ctl_info *mci = dev_id; in ppc4xx_edac_isr() local
801 ppc4xx_edac_check(mci); in ppc4xx_edac_isr()
876 static int ppc4xx_edac_init_csrows(struct mem_ctl_info *mci, u32 mcopt1) in ppc4xx_edac_init_csrows() argument
878 const struct ppc4xx_edac_pdata *pdata = mci->pvt_info; in ppc4xx_edac_init_csrows()
893 if (mci->edac_cap & EDAC_FLAG_SECDED) in ppc4xx_edac_init_csrows()
895 else if (mci->edac_cap & EDAC_FLAG_EC) in ppc4xx_edac_init_csrows()
905 for (row = 0; row < mci->nr_csrows; row++) { in ppc4xx_edac_init_csrows()
906 struct csrow_info *csi = mci->csrows[row]; in ppc4xx_edac_init_csrows()
938 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_init_csrows()
993 static int ppc4xx_edac_mc_init(struct mem_ctl_info *mci, in ppc4xx_edac_mc_init() argument
1007 mci->pdev = &op->dev; in ppc4xx_edac_mc_init()
1009 dev_set_drvdata(mci->pdev, mci); in ppc4xx_edac_mc_init()
1011 pdata = mci->pvt_info; in ppc4xx_edac_mc_init()
1017 mci->mtype_cap = (MEM_FLAG_DDR | MEM_FLAG_RDDR | in ppc4xx_edac_mc_init()
1020 mci->edac_ctl_cap = (EDAC_FLAG_NONE | in ppc4xx_edac_mc_init()
1024 mci->scrub_cap = SCRUB_NONE; in ppc4xx_edac_mc_init()
1025 mci->scrub_mode = SCRUB_NONE; in ppc4xx_edac_mc_init()
1034 mci->edac_cap = EDAC_FLAG_EC; in ppc4xx_edac_mc_init()
1037 mci->edac_cap = (EDAC_FLAG_EC | EDAC_FLAG_SECDED); in ppc4xx_edac_mc_init()
1038 mci->scrub_mode = SCRUB_SW_SRC; in ppc4xx_edac_mc_init()
1041 mci->edac_cap = EDAC_FLAG_NONE; in ppc4xx_edac_mc_init()
1047 mci->mod_name = PPC4XX_EDAC_MODULE_NAME; in ppc4xx_edac_mc_init()
1048 mci->ctl_name = ppc4xx_edac_match->compatible; in ppc4xx_edac_mc_init()
1049 mci->dev_name = np->full_name; in ppc4xx_edac_mc_init()
1053 mci->edac_check = ppc4xx_edac_check; in ppc4xx_edac_mc_init()
1054 mci->ctl_page_to_phys = NULL; in ppc4xx_edac_mc_init()
1058 status = ppc4xx_edac_init_csrows(mci, mcopt1); in ppc4xx_edac_mc_init()
1061 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_mc_init()
1083 struct mem_ctl_info *mci) in ppc4xx_edac_register_irq() argument
1087 struct ppc4xx_edac_pdata *pdata = mci->pvt_info; in ppc4xx_edac_register_irq()
1094 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_register_irq()
1104 mci); in ppc4xx_edac_register_irq()
1107 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_register_irq()
1118 mci); in ppc4xx_edac_register_irq()
1121 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_register_irq()
1128 ppc4xx_edac_mc_printk(KERN_INFO, mci, "ECCDED irq is %d\n", ded_irq); in ppc4xx_edac_register_irq()
1129 ppc4xx_edac_mc_printk(KERN_INFO, mci, "ECCSEC irq is %d\n", sec_irq); in ppc4xx_edac_register_irq()
1137 free_irq(sec_irq, mci); in ppc4xx_edac_register_irq()
1140 free_irq(ded_irq, mci); in ppc4xx_edac_register_irq()
1215 struct mem_ctl_info *mci = NULL; in ppc4xx_edac_probe() local
1268 mci = edac_mc_alloc(ppc4xx_edac_instance, ARRAY_SIZE(layers), layers, in ppc4xx_edac_probe()
1270 if (mci == NULL) { in ppc4xx_edac_probe()
1278 status = ppc4xx_edac_mc_init(mci, op, &dcr_host, mcopt1); in ppc4xx_edac_probe()
1281 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_probe()
1292 if (edac_mc_add_mc(mci)) { in ppc4xx_edac_probe()
1293 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_probe()
1300 status = ppc4xx_edac_register_irq(op, mci); in ppc4xx_edac_probe()
1311 edac_mc_del_mc(mci->pdev); in ppc4xx_edac_probe()
1314 edac_mc_free(mci); in ppc4xx_edac_probe()
1335 struct mem_ctl_info *mci = dev_get_drvdata(&op->dev); in ppc4xx_edac_remove() local
1336 struct ppc4xx_edac_pdata *pdata = mci->pvt_info; in ppc4xx_edac_remove()
1339 free_irq(pdata->irqs.sec, mci); in ppc4xx_edac_remove()
1340 free_irq(pdata->irqs.ded, mci); in ppc4xx_edac_remove()
1345 edac_mc_del_mc(mci->pdev); in ppc4xx_edac_remove()
1346 edac_mc_free(mci); in ppc4xx_edac_remove()