Lines Matching refs:mci

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