Lines Matching refs:mci
129 #define ppc4xx_edac_mc_printk(level, mci, fmt, arg...) \ argument
130 edac_mc_chipset_printk(mci, level, "PPC4xx", fmt, ##arg)
315 ppc4xx_edac_generate_bank_message(const struct mem_ctl_info *mci, in ppc4xx_edac_generate_bank_message() argument
323 n = snprintf(buffer, size, "%s: Banks: ", mci->dev_name); in ppc4xx_edac_generate_bank_message()
332 for (rows = 0, row = 0; row < mci->nr_csrows; row++) { in ppc4xx_edac_generate_bank_message()
377 ppc4xx_edac_generate_checkbit_message(const struct mem_ctl_info *mci, in ppc4xx_edac_generate_checkbit_message() argument
382 const struct ppc4xx_edac_pdata *pdata = mci->pvt_info; in ppc4xx_edac_generate_checkbit_message()
435 ppc4xx_edac_generate_lane_message(const struct mem_ctl_info *mci, in ppc4xx_edac_generate_lane_message() argument
500 ppc4xx_edac_generate_ecc_message(const struct mem_ctl_info *mci, in ppc4xx_edac_generate_ecc_message() argument
507 n = ppc4xx_edac_generate_bank_message(mci, status, buffer, size); in ppc4xx_edac_generate_ecc_message()
516 n = ppc4xx_edac_generate_checkbit_message(mci, status, buffer, size); in ppc4xx_edac_generate_ecc_message()
525 n = ppc4xx_edac_generate_lane_message(mci, status, buffer, size); in ppc4xx_edac_generate_ecc_message()
556 ppc4xx_edac_generate_plb_message(const struct mem_ctl_info *mci, in ppc4xx_edac_generate_plb_message() argument
597 ppc4xx_edac_generate_message(const struct mem_ctl_info *mci, in ppc4xx_edac_generate_message() argument
607 n = ppc4xx_edac_generate_ecc_message(mci, status, buffer, size); in ppc4xx_edac_generate_message()
615 ppc4xx_edac_generate_plb_message(mci, status, buffer, size); in ppc4xx_edac_generate_message()
630 ppc4xx_ecc_dump_status(const struct mem_ctl_info *mci, in ppc4xx_ecc_dump_status() argument
635 ppc4xx_edac_generate_message(mci, status, message, sizeof(message)); in ppc4xx_ecc_dump_status()
637 ppc4xx_edac_mc_printk(KERN_INFO, mci, in ppc4xx_ecc_dump_status()
667 ppc4xx_ecc_get_status(const struct mem_ctl_info *mci, in ppc4xx_ecc_get_status() argument
670 const struct ppc4xx_edac_pdata *pdata = mci->pvt_info; in ppc4xx_ecc_get_status()
692 ppc4xx_ecc_clear_status(const struct mem_ctl_info *mci, in ppc4xx_ecc_clear_status() argument
695 const struct ppc4xx_edac_pdata *pdata = mci->pvt_info; in ppc4xx_ecc_clear_status()
719 ppc4xx_edac_handle_ce(struct mem_ctl_info *mci, in ppc4xx_edac_handle_ce() argument
725 ppc4xx_edac_generate_message(mci, status, message, sizeof(message)); in ppc4xx_edac_handle_ce()
727 for (row = 0; row < mci->nr_csrows; row++) in ppc4xx_edac_handle_ce()
729 edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, in ppc4xx_edac_handle_ce()
747 ppc4xx_edac_handle_ue(struct mem_ctl_info *mci, in ppc4xx_edac_handle_ue() argument
756 ppc4xx_edac_generate_message(mci, status, message, sizeof(message)); in ppc4xx_edac_handle_ue()
758 for (row = 0; row < mci->nr_csrows; row++) in ppc4xx_edac_handle_ue()
760 edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, in ppc4xx_edac_handle_ue()
777 ppc4xx_edac_check(struct mem_ctl_info *mci) in ppc4xx_edac_check() argument
784 ppc4xx_ecc_get_status(mci, &status); in ppc4xx_edac_check()
788 ppc4xx_ecc_dump_status(mci, &status); in ppc4xx_edac_check()
792 ppc4xx_edac_handle_ue(mci, &status); in ppc4xx_edac_check()
795 ppc4xx_edac_handle_ce(mci, &status); in ppc4xx_edac_check()
797 ppc4xx_ecc_clear_status(mci, &status); in ppc4xx_edac_check()
816 struct mem_ctl_info *mci = dev_id; in ppc4xx_edac_isr() local
818 ppc4xx_edac_check(mci); in ppc4xx_edac_isr()
893 static int ppc4xx_edac_init_csrows(struct mem_ctl_info *mci, u32 mcopt1) in ppc4xx_edac_init_csrows() argument
895 const struct ppc4xx_edac_pdata *pdata = mci->pvt_info; in ppc4xx_edac_init_csrows()
910 if (mci->edac_cap & EDAC_FLAG_SECDED) in ppc4xx_edac_init_csrows()
912 else if (mci->edac_cap & EDAC_FLAG_EC) in ppc4xx_edac_init_csrows()
922 for (row = 0; row < mci->nr_csrows; row++) { in ppc4xx_edac_init_csrows()
923 struct csrow_info *csi = mci->csrows[row]; in ppc4xx_edac_init_csrows()
955 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_init_csrows()
1010 static int ppc4xx_edac_mc_init(struct mem_ctl_info *mci, in ppc4xx_edac_mc_init() argument
1024 mci->pdev = &op->dev; in ppc4xx_edac_mc_init()
1026 dev_set_drvdata(mci->pdev, mci); in ppc4xx_edac_mc_init()
1028 pdata = mci->pvt_info; in ppc4xx_edac_mc_init()
1036 mci->mtype_cap = (MEM_FLAG_DDR | MEM_FLAG_RDDR | in ppc4xx_edac_mc_init()
1039 mci->edac_ctl_cap = (EDAC_FLAG_NONE | in ppc4xx_edac_mc_init()
1043 mci->scrub_cap = SCRUB_NONE; in ppc4xx_edac_mc_init()
1044 mci->scrub_mode = SCRUB_NONE; in ppc4xx_edac_mc_init()
1053 mci->edac_cap = EDAC_FLAG_EC; in ppc4xx_edac_mc_init()
1056 mci->edac_cap = (EDAC_FLAG_EC | EDAC_FLAG_SECDED); in ppc4xx_edac_mc_init()
1057 mci->scrub_mode = SCRUB_SW_SRC; in ppc4xx_edac_mc_init()
1060 mci->edac_cap = EDAC_FLAG_NONE; in ppc4xx_edac_mc_init()
1066 mci->mod_name = PPC4XX_EDAC_MODULE_NAME; in ppc4xx_edac_mc_init()
1067 mci->mod_ver = PPC4XX_EDAC_MODULE_REVISION; in ppc4xx_edac_mc_init()
1068 mci->ctl_name = ppc4xx_edac_match->compatible, in ppc4xx_edac_mc_init()
1069 mci->dev_name = np->full_name; in ppc4xx_edac_mc_init()
1073 mci->edac_check = ppc4xx_edac_check; in ppc4xx_edac_mc_init()
1074 mci->ctl_page_to_phys = NULL; in ppc4xx_edac_mc_init()
1078 status = ppc4xx_edac_init_csrows(mci, mcopt1); in ppc4xx_edac_mc_init()
1081 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_mc_init()
1103 struct mem_ctl_info *mci) in ppc4xx_edac_register_irq() argument
1107 struct ppc4xx_edac_pdata *pdata = mci->pvt_info; in ppc4xx_edac_register_irq()
1114 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_register_irq()
1124 mci); in ppc4xx_edac_register_irq()
1127 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_register_irq()
1138 mci); in ppc4xx_edac_register_irq()
1141 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_register_irq()
1148 ppc4xx_edac_mc_printk(KERN_INFO, mci, "ECCDED irq is %d\n", ded_irq); in ppc4xx_edac_register_irq()
1149 ppc4xx_edac_mc_printk(KERN_INFO, mci, "ECCSEC irq is %d\n", sec_irq); in ppc4xx_edac_register_irq()
1157 free_irq(sec_irq, mci); in ppc4xx_edac_register_irq()
1160 free_irq(ded_irq, mci); in ppc4xx_edac_register_irq()
1235 struct mem_ctl_info *mci = NULL; in ppc4xx_edac_probe() local
1288 mci = edac_mc_alloc(ppc4xx_edac_instance, ARRAY_SIZE(layers), layers, in ppc4xx_edac_probe()
1290 if (mci == NULL) { in ppc4xx_edac_probe()
1298 status = ppc4xx_edac_mc_init(mci, op, &dcr_host, mcopt1); in ppc4xx_edac_probe()
1301 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_probe()
1312 if (edac_mc_add_mc(mci)) { in ppc4xx_edac_probe()
1313 ppc4xx_edac_mc_printk(KERN_ERR, mci, in ppc4xx_edac_probe()
1320 status = ppc4xx_edac_register_irq(op, mci); in ppc4xx_edac_probe()
1331 edac_mc_del_mc(mci->pdev); in ppc4xx_edac_probe()
1334 edac_mc_free(mci); in ppc4xx_edac_probe()
1355 struct mem_ctl_info *mci = dev_get_drvdata(&op->dev); in ppc4xx_edac_remove() local
1356 struct ppc4xx_edac_pdata *pdata = mci->pvt_info; in ppc4xx_edac_remove()
1359 free_irq(pdata->irqs.sec, mci); in ppc4xx_edac_remove()
1360 free_irq(pdata->irqs.ded, mci); in ppc4xx_edac_remove()
1365 edac_mc_del_mc(mci->pdev); in ppc4xx_edac_remove()
1366 edac_mc_free(mci); in ppc4xx_edac_remove()