Lines Matching refs:mci

39 #define cpc925_mc_printk(mci, level, fmt, arg...) \  argument
40 edac_mc_chipset_printk(mci, level, "CPC925", fmt, ##arg)
327 static void cpc925_init_csrows(struct mem_ctl_info *mci) in cpc925_init_csrows() argument
329 struct cpc925_mc_pdata *pdata = mci->pvt_info; in cpc925_init_csrows()
339 for (index = 0; index < mci->nr_csrows; index++) { in cpc925_init_csrows()
350 csrow = mci->csrows[index]; in cpc925_init_csrows()
393 static void cpc925_mc_init(struct mem_ctl_info *mci) in cpc925_mc_init() argument
395 struct cpc925_mc_pdata *pdata = mci->pvt_info; in cpc925_mc_init()
415 static void cpc925_mc_exit(struct mem_ctl_info *mci) in cpc925_mc_exit() argument
448 static void cpc925_mc_get_pfn(struct mem_ctl_info *mci, u32 mear, in cpc925_mc_get_pfn() argument
465 if (mci->csrows[rank]->first_page == 0) { in cpc925_mc_get_pfn()
466 cpc925_mc_printk(mci, KERN_ERR, "ECC occurs in a " in cpc925_mc_get_pfn()
473 pa = mci->csrows[rank]->first_page << PAGE_SHIFT; in cpc925_mc_get_pfn()
517 static int cpc925_mc_find_channel(struct mem_ctl_info *mci, u16 syndrome) in cpc925_mc_find_channel() argument
525 cpc925_mc_printk(mci, KERN_INFO, "Unexpected syndrome value: 0x%x\n", in cpc925_mc_find_channel()
531 static void cpc925_mc_check(struct mem_ctl_info *mci) in cpc925_mc_check() argument
533 struct cpc925_mc_pdata *pdata = mci->pvt_info; in cpc925_mc_check()
552 cpc925_mc_get_pfn(mci, mear, &pfn, &offset, &csrow); in cpc925_mc_check()
555 cpc925_mc_printk(mci, KERN_INFO, "DRAM CECC Fault\n"); in cpc925_mc_check()
556 channel = cpc925_mc_find_channel(mci, syndrome); in cpc925_mc_check()
557 edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, in cpc925_mc_check()
560 mci->ctl_name, ""); in cpc925_mc_check()
564 cpc925_mc_printk(mci, KERN_INFO, "DRAM UECC Fault\n"); in cpc925_mc_check()
565 edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, in cpc925_mc_check()
568 mci->ctl_name, ""); in cpc925_mc_check()
571 cpc925_mc_printk(mci, KERN_INFO, "Dump registers:\n"); in cpc925_mc_check()
572 cpc925_mc_printk(mci, KERN_INFO, "APIMASK 0x%08x\n", in cpc925_mc_check()
574 cpc925_mc_printk(mci, KERN_INFO, "APIEXCP 0x%08x\n", in cpc925_mc_check()
576 cpc925_mc_printk(mci, KERN_INFO, "Mem Scrub Ctrl 0x%08x\n", in cpc925_mc_check()
578 cpc925_mc_printk(mci, KERN_INFO, "Mem Scrub Rge Start 0x%08x\n", in cpc925_mc_check()
580 cpc925_mc_printk(mci, KERN_INFO, "Mem Scrub Rge End 0x%08x\n", in cpc925_mc_check()
582 cpc925_mc_printk(mci, KERN_INFO, "Mem Scrub Pattern 0x%08x\n", in cpc925_mc_check()
584 cpc925_mc_printk(mci, KERN_INFO, "Mem Chk Ctrl 0x%08x\n", in cpc925_mc_check()
586 cpc925_mc_printk(mci, KERN_INFO, "Mem Chk Rge End 0x%08x\n", in cpc925_mc_check()
588 cpc925_mc_printk(mci, KERN_INFO, "Mem Err Address 0x%08x\n", in cpc925_mc_check()
590 cpc925_mc_printk(mci, KERN_INFO, "Mem Err Syndrome 0x%08x\n", in cpc925_mc_check()
892 static int cpc925_get_sdram_scrub_rate(struct mem_ctl_info *mci) in cpc925_get_sdram_scrub_rate() argument
894 struct cpc925_mc_pdata *pdata = mci->pvt_info; in cpc925_get_sdram_scrub_rate()
906 cpc925_mc_printk(mci, KERN_INFO, "Scrub mode not enabled\n"); in cpc925_get_sdram_scrub_rate()
938 struct mem_ctl_info *mci; in cpc925_probe() local
983 mci = edac_mc_alloc(edac_mc_idx, ARRAY_SIZE(layers), layers, in cpc925_probe()
985 if (!mci) { in cpc925_probe()
991 pdata = mci->pvt_info; in cpc925_probe()
996 mci->pdev = &pdev->dev; in cpc925_probe()
997 platform_set_drvdata(pdev, mci); in cpc925_probe()
998 mci->dev_name = dev_name(&pdev->dev); in cpc925_probe()
999 mci->mtype_cap = MEM_FLAG_RDDR | MEM_FLAG_DDR; in cpc925_probe()
1000 mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_SECDED; in cpc925_probe()
1001 mci->edac_cap = EDAC_FLAG_SECDED; in cpc925_probe()
1002 mci->mod_name = CPC925_EDAC_MOD_STR; in cpc925_probe()
1003 mci->mod_ver = CPC925_EDAC_REVISION; in cpc925_probe()
1004 mci->ctl_name = pdev->name; in cpc925_probe()
1007 mci->edac_check = cpc925_mc_check; in cpc925_probe()
1009 mci->ctl_page_to_phys = NULL; in cpc925_probe()
1010 mci->scrub_mode = SCRUB_SW_SRC; in cpc925_probe()
1011 mci->set_sdram_scrub_rate = NULL; in cpc925_probe()
1012 mci->get_sdram_scrub_rate = cpc925_get_sdram_scrub_rate; in cpc925_probe()
1014 cpc925_init_csrows(mci); in cpc925_probe()
1017 cpc925_mc_init(mci); in cpc925_probe()
1019 if (edac_mc_add_mc(mci) > 0) { in cpc925_probe()
1020 cpc925_mc_printk(mci, KERN_ERR, "Failed edac_mc_add_mc()\n"); in cpc925_probe()
1033 cpc925_mc_exit(mci); in cpc925_probe()
1034 edac_mc_free(mci); in cpc925_probe()
1045 struct mem_ctl_info *mci = platform_get_drvdata(pdev); in cpc925_remove() local
1052 cpc925_mc_exit(mci); in cpc925_remove()
1055 edac_mc_free(mci); in cpc925_remove()