Lines Matching refs:mci

71 #define i7core_mc_printk(mci, level, fmt, arg...)		\
72 edac_mc_chipset_printk(mci, level, "i7core", fmt, ##arg)
245 struct mem_ctl_info *mci;
487 static int get_dimm_config(struct mem_ctl_info *mci)
489 struct i7core_pvt *pvt = mci->pvt_info;
588 dimm = edac_get_dimm(mci, i, j, 0);
660 static int disable_inject(const struct mem_ctl_info *mci)
662 struct i7core_pvt *pvt = mci->pvt_info;
686 struct mem_ctl_info *mci = to_mci(dev);
687 struct i7core_pvt *pvt = mci->pvt_info;
692 disable_inject(mci);
706 struct mem_ctl_info *mci = to_mci(dev);
707 struct i7core_pvt *pvt = mci->pvt_info;
723 struct mem_ctl_info *mci = to_mci(dev);
724 struct i7core_pvt *pvt = mci->pvt_info;
729 disable_inject(mci);
743 struct mem_ctl_info *mci = to_mci(dev);
744 struct i7core_pvt *pvt = mci->pvt_info;
763 struct mem_ctl_info *mci = to_mci(dev);
764 struct i7core_pvt *pvt = mci->pvt_info;
769 disable_inject(mci);
783 struct mem_ctl_info *mci = to_mci(dev);
784 struct i7core_pvt *pvt = mci->pvt_info;
806 struct mem_ctl_info *mci = dev_get_drvdata(dev); \
812 pvt = mci->pvt_info; \
815 disable_inject(mci); \
835 struct mem_ctl_info *mci = dev_get_drvdata(dev); \
838 pvt = mci->pvt_info; \
914 struct mem_ctl_info *mci = to_mci(dev);
915 struct i7core_pvt *pvt = mci->pvt_info;
931 disable_inject(mci);
1018 struct mem_ctl_info *mci = to_mci(dev);
1019 struct i7core_pvt *pvt = mci->pvt_info;
1042 struct mem_ctl_info *mci = dev_get_drvdata(dev); \
1043 struct i7core_pvt *pvt = mci->pvt_info; \
1157 static int i7core_create_sysfs_devices(struct mem_ctl_info *mci)
1159 struct i7core_pvt *pvt = mci->pvt_info;
1167 pvt->addrmatch_dev->bus = mci->dev.bus;
1169 pvt->addrmatch_dev->parent = &mci->dev;
1171 dev_set_drvdata(pvt->addrmatch_dev, mci);
1188 pvt->chancounts_dev->bus = mci->dev.bus;
1190 pvt->chancounts_dev->parent = &mci->dev;
1192 dev_set_drvdata(pvt->chancounts_dev, mci);
1212 static void i7core_delete_sysfs_devices(struct mem_ctl_info *mci)
1214 struct i7core_pvt *pvt = mci->pvt_info;
1452 static int mci_bind_devs(struct mem_ctl_info *mci,
1455 struct i7core_pvt *pvt = mci->pvt_info;
1532 static void i7core_rdimm_update_ce_count(struct mem_ctl_info *mci,
1538 struct i7core_pvt *pvt = mci->pvt_info;
1569 edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, add0,
1573 edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, add1,
1577 edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, add2,
1582 static void i7core_rdimm_check_mc_ecc_err(struct mem_ctl_info *mci)
1584 struct i7core_pvt *pvt = mci->pvt_info;
1617 i7core_rdimm_update_ce_count(mci, i, new0, new1, new2);
1627 static void i7core_udimm_check_mc_ecc_err(struct mem_ctl_info *mci)
1629 struct i7core_pvt *pvt = mci->pvt_info;
1694 static void i7core_mce_output_error(struct mem_ctl_info *mci,
1697 struct i7core_pvt *pvt = mci->pvt_info;
1779 edac_mc_handle_error(tp_event, mci, core_err_cnt,
1791 static void i7core_check_error(struct mem_ctl_info *mci, struct mce *m)
1793 struct i7core_pvt *pvt = mci->pvt_info;
1795 i7core_mce_output_error(mci, m);
1801 i7core_udimm_check_mc_ecc_err(mci);
1803 i7core_rdimm_check_mc_ecc_err(mci);
1815 struct mem_ctl_info *mci;
1821 mci = i7_dev->mci;
1834 i7core_check_error(mci, mce);
1957 static int set_sdram_scrub_rate(struct mem_ctl_info *mci, u32 new_bw)
1959 struct i7core_pvt *pvt = mci->pvt_info;
2019 static int get_sdram_scrub_rate(struct mem_ctl_info *mci)
2021 struct i7core_pvt *pvt = mci->pvt_info;
2048 static void enable_sdram_scrub_setting(struct mem_ctl_info *mci)
2050 struct i7core_pvt *pvt = mci->pvt_info;
2059 mci->set_sdram_scrub_rate = set_sdram_scrub_rate;
2060 mci->get_sdram_scrub_rate = get_sdram_scrub_rate;
2063 static void disable_sdram_scrub_setting(struct mem_ctl_info *mci)
2065 struct i7core_pvt *pvt = mci->pvt_info;
2098 struct mem_ctl_info *mci = i7core_dev->mci;
2101 if (unlikely(!mci || !mci->pvt_info)) {
2104 i7core_printk(KERN_ERR, "Couldn't find mci handler\n");
2108 pvt = mci->pvt_info;
2110 edac_dbg(0, "MC: mci = %p, dev = %p\n", mci, &i7core_dev->pdev[0]->dev);
2114 disable_sdram_scrub_setting(mci);
2120 i7core_delete_sysfs_devices(mci);
2121 edac_mc_del_mc(mci->pdev);
2123 edac_dbg(1, "%s: free mci struct\n", mci->ctl_name);
2124 kfree(mci->ctl_name);
2125 edac_mc_free(mci);
2126 i7core_dev->mci = NULL;
2131 struct mem_ctl_info *mci;
2144 mci = edac_mc_alloc(i7core_dev->socket, ARRAY_SIZE(layers), layers,
2146 if (unlikely(!mci))
2149 edac_dbg(0, "MC: mci = %p, dev = %p\n", mci, &i7core_dev->pdev[0]->dev);
2151 pvt = mci->pvt_info;
2154 /* Associates i7core_dev and mci for future usage */
2156 i7core_dev->mci = mci;
2163 mci->mtype_cap = MEM_FLAG_DDR3;
2164 mci->edac_ctl_cap = EDAC_FLAG_NONE;
2165 mci->edac_cap = EDAC_FLAG_NONE;
2166 mci->mod_name = "i7core_edac.c";
2168 mci->ctl_name = kasprintf(GFP_KERNEL, "i7 core #%d", i7core_dev->socket);
2169 if (!mci->ctl_name) {
2174 mci->dev_name = pci_name(i7core_dev->pdev[0]);
2175 mci->ctl_page_to_phys = NULL;
2177 /* Store pci devices at mci for faster access */
2178 rc = mci_bind_devs(mci, i7core_dev);
2184 get_dimm_config(mci);
2186 mci->pdev = &i7core_dev->pdev[0]->dev;
2190 enable_sdram_scrub_setting(mci);
2193 if (unlikely(edac_mc_add_mc_with_groups(mci, i7core_dev_groups))) {
2202 if (i7core_create_sysfs_devices(mci)) {
2204 edac_mc_del_mc(mci->pdev);
2226 kfree(mci->ctl_name);
2229 edac_mc_free(mci);
2230 i7core_dev->mci = NULL;