Lines Matching refs:mci

124 #define ppc4xx_edac_mc_printk(level, mci, fmt, arg...) \
125 edac_mc_chipset_printk(mci, level, "PPC4xx", fmt, ##arg)
295 * @mci: A pointer to the EDAC memory controller instance associated
311 ppc4xx_edac_generate_bank_message(const struct mem_ctl_info *mci,
319 n = snprintf(buffer, size, "%s: Banks: ", mci->dev_name);
328 for (rows = 0, row = 0; row < mci->nr_csrows; row++) {
357 * @mci: A pointer to the EDAC memory controller instance associated
373 ppc4xx_edac_generate_checkbit_message(const struct mem_ctl_info *mci,
378 const struct ppc4xx_edac_pdata *pdata = mci->pvt_info;
415 * @mci: A pointer to the EDAC memory controller instance associated
431 ppc4xx_edac_generate_lane_message(const struct mem_ctl_info *mci,
480 * @mci: A pointer to the EDAC memory controller instance associated
496 ppc4xx_edac_generate_ecc_message(const struct mem_ctl_info *mci,
503 n = ppc4xx_edac_generate_bank_message(mci, status, buffer, size);
512 n = ppc4xx_edac_generate_checkbit_message(mci, status, buffer, size);
521 n = ppc4xx_edac_generate_lane_message(mci, status, buffer, size);
536 * @mci: A pointer to the EDAC memory controller instance associated
552 ppc4xx_edac_generate_plb_message(const struct mem_ctl_info *mci,
581 * @mci: A pointer to the EDAC memory controller instance associated
593 ppc4xx_edac_generate_message(const struct mem_ctl_info *mci,
603 n = ppc4xx_edac_generate_ecc_message(mci, status, buffer, size);
611 ppc4xx_edac_generate_plb_message(mci, status, buffer, size);
617 * @mci: A pointer to the EDAC memory controller instance
626 ppc4xx_ecc_dump_status(const struct mem_ctl_info *mci,
631 ppc4xx_edac_generate_message(mci, status, message, sizeof(message));
633 ppc4xx_edac_mc_printk(KERN_INFO, mci,
651 * @mci: A pointer to the EDAC memory controller instance
663 ppc4xx_ecc_get_status(const struct mem_ctl_info *mci,
666 const struct ppc4xx_edac_pdata *pdata = mci->pvt_info;
678 * @mci: A pointer to the EDAC memory controller instance
688 ppc4xx_ecc_clear_status(const struct mem_ctl_info *mci,
691 const struct ppc4xx_edac_pdata *pdata = mci->pvt_info;
703 * @mci: A pointer to the EDAC memory controller instance
715 ppc4xx_edac_handle_ce(struct mem_ctl_info *mci,
721 ppc4xx_edac_generate_message(mci, status, message, sizeof(message));
723 for (row = 0; row < mci->nr_csrows; row++)
725 edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1,
733 * @mci: A pointer to the EDAC memory controller instance
743 ppc4xx_edac_handle_ue(struct mem_ctl_info *mci,
752 ppc4xx_edac_generate_message(mci, status, message, sizeof(message));
754 for (row = 0; row < mci->nr_csrows; row++)
756 edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1,
764 * @mci: A pointer to the EDAC memory controller instance
773 ppc4xx_edac_check(struct mem_ctl_info *mci)
780 ppc4xx_ecc_get_status(mci, &status);
784 ppc4xx_ecc_dump_status(mci, &status);
788 ppc4xx_edac_handle_ue(mci, &status);
791 ppc4xx_edac_handle_ce(mci, &status);
793 ppc4xx_ecc_clear_status(mci, &status);
812 struct mem_ctl_info *mci = dev_id;
814 ppc4xx_edac_check(mci);
875 * @mci: A pointer to the EDAC memory controller instance
889 static int ppc4xx_edac_init_csrows(struct mem_ctl_info *mci, u32 mcopt1)
891 const struct ppc4xx_edac_pdata *pdata = mci->pvt_info;
906 if (mci->edac_cap & EDAC_FLAG_SECDED)
908 else if (mci->edac_cap & EDAC_FLAG_EC)
918 for (row = 0; row < mci->nr_csrows; row++) {
919 struct csrow_info *csi = mci->csrows[row];
951 ppc4xx_edac_mc_printk(KERN_ERR, mci,
990 * @mci: A pointer to the EDAC memory controller instance being
1006 static int ppc4xx_edac_mc_init(struct mem_ctl_info *mci,
1020 mci->pdev = &op->dev;
1022 dev_set_drvdata(mci->pdev, mci);
1024 pdata = mci->pvt_info;
1030 mci->mtype_cap = (MEM_FLAG_DDR | MEM_FLAG_RDDR |
1033 mci->edac_ctl_cap = (EDAC_FLAG_NONE |
1037 mci->scrub_cap = SCRUB_NONE;
1038 mci->scrub_mode = SCRUB_NONE;
1047 mci->edac_cap = EDAC_FLAG_EC;
1050 mci->edac_cap = (EDAC_FLAG_EC | EDAC_FLAG_SECDED);
1051 mci->scrub_mode = SCRUB_SW_SRC;
1054 mci->edac_cap = EDAC_FLAG_NONE;
1060 mci->mod_name = PPC4XX_EDAC_MODULE_NAME;
1061 mci->ctl_name = ppc4xx_edac_match->compatible,
1062 mci->dev_name = np->full_name;
1066 mci->edac_check = ppc4xx_edac_check;
1067 mci->ctl_page_to_phys = NULL;
1071 status = ppc4xx_edac_init_csrows(mci, mcopt1);
1074 ppc4xx_edac_mc_printk(KERN_ERR, mci,
1084 * @mci: A pointer to the EDAC memory controller instance
1096 struct mem_ctl_info *mci)
1100 struct ppc4xx_edac_pdata *pdata = mci->pvt_info;
1107 ppc4xx_edac_mc_printk(KERN_ERR, mci,
1117 mci);
1120 ppc4xx_edac_mc_printk(KERN_ERR, mci,
1131 mci);
1134 ppc4xx_edac_mc_printk(KERN_ERR, mci,
1141 ppc4xx_edac_mc_printk(KERN_INFO, mci, "ECCDED irq is %d\n", ded_irq);
1142 ppc4xx_edac_mc_printk(KERN_INFO, mci, "ECCSEC irq is %d\n", sec_irq);
1150 free_irq(sec_irq, mci);
1153 free_irq(ded_irq, mci);
1228 struct mem_ctl_info *mci = NULL;
1281 mci = edac_mc_alloc(ppc4xx_edac_instance, ARRAY_SIZE(layers), layers,
1283 if (mci == NULL) {
1291 status = ppc4xx_edac_mc_init(mci, op, &dcr_host, mcopt1);
1294 ppc4xx_edac_mc_printk(KERN_ERR, mci,
1305 if (edac_mc_add_mc(mci)) {
1306 ppc4xx_edac_mc_printk(KERN_ERR, mci,
1313 status = ppc4xx_edac_register_irq(op, mci);
1324 edac_mc_del_mc(mci->pdev);
1327 edac_mc_free(mci);
1348 struct mem_ctl_info *mci = dev_get_drvdata(&op->dev);
1349 struct ppc4xx_edac_pdata *pdata = mci->pvt_info;
1352 free_irq(pdata->irqs.sec, mci);
1353 free_irq(pdata->irqs.ded, mci);
1358 edac_mc_del_mc(mci->pdev);
1359 edac_mc_free(mci);