• Home
  • Raw
  • Download

Lines Matching refs:mci

361 static int i5100_rank_to_slot(const struct mem_ctl_info *mci,  in i5100_rank_to_slot()  argument
364 const struct i5100_priv *priv = mci->pvt_info; in i5100_rank_to_slot()
415 static unsigned int i5100_csrow_to_rank(const struct mem_ctl_info *mci, in i5100_csrow_to_rank() argument
418 const struct i5100_priv *priv = mci->pvt_info; in i5100_csrow_to_rank()
424 static unsigned int i5100_csrow_to_chan(const struct mem_ctl_info *mci, in i5100_csrow_to_chan() argument
427 const struct i5100_priv *priv = mci->pvt_info; in i5100_csrow_to_chan()
432 static void i5100_handle_ce(struct mem_ctl_info *mci, in i5100_handle_ce() argument
448 edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, 1, in i5100_handle_ce()
454 static void i5100_handle_ue(struct mem_ctl_info *mci, in i5100_handle_ue() argument
470 edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, in i5100_handle_ue()
476 static void i5100_read_log(struct mem_ctl_info *mci, int chan, in i5100_read_log() argument
479 struct i5100_priv *priv = mci->pvt_info; in i5100_read_log()
517 i5100_handle_ce(mci, chan, bank, rank, syndrome, cas, ras, msg); in i5100_read_log()
539 i5100_handle_ue(mci, chan, bank, rank, syndrome, cas, ras, msg); in i5100_read_log()
545 static void i5100_check_error(struct mem_ctl_info *mci) in i5100_check_error() argument
547 struct i5100_priv *priv = mci->pvt_info; in i5100_check_error()
555 i5100_read_log(mci, i5100_ferr_nf_mem_chan_indx(dw), in i5100_check_error()
597 static int i5100_set_scrub_rate(struct mem_ctl_info *mci, u32 bandwidth) in i5100_set_scrub_rate() argument
599 struct i5100_priv *priv = mci->pvt_info; in i5100_set_scrub_rate()
622 static int i5100_get_scrub_rate(struct mem_ctl_info *mci) in i5100_get_scrub_rate() argument
624 struct i5100_priv *priv = mci->pvt_info; in i5100_get_scrub_rate()
651 static unsigned long i5100_npages(struct mem_ctl_info *mci, unsigned int csrow) in i5100_npages() argument
653 struct i5100_priv *priv = mci->pvt_info; in i5100_npages()
654 const unsigned int chan_rank = i5100_csrow_to_rank(mci, csrow); in i5100_npages()
655 const unsigned int chan = i5100_csrow_to_chan(mci, csrow); in i5100_npages()
672 static void i5100_init_mtr(struct mem_ctl_info *mci) in i5100_init_mtr() argument
674 struct i5100_priv *priv = mci->pvt_info; in i5100_init_mtr()
704 static int i5100_read_spd_byte(const struct mem_ctl_info *mci, in i5100_read_spd_byte() argument
707 struct i5100_priv *priv = mci->pvt_info; in i5100_read_spd_byte()
742 static void i5100_init_dimm_csmap(struct mem_ctl_info *mci) in i5100_init_dimm_csmap() argument
744 struct i5100_priv *priv = mci->pvt_info; in i5100_init_dimm_csmap()
773 struct mem_ctl_info *mci) in i5100_init_dimm_layout() argument
775 struct i5100_priv *priv = mci->pvt_info; in i5100_init_dimm_layout()
784 if (i5100_read_spd_byte(mci, i, j, 5, &rank) < 0) in i5100_init_dimm_layout()
791 i5100_init_dimm_csmap(mci); in i5100_init_dimm_layout()
795 struct mem_ctl_info *mci) in i5100_init_interleaving() argument
799 struct i5100_priv *priv = mci->pvt_info; in i5100_init_interleaving()
837 i5100_init_mtr(mci); in i5100_init_interleaving()
840 static void i5100_init_csrows(struct mem_ctl_info *mci) in i5100_init_csrows() argument
842 struct i5100_priv *priv = mci->pvt_info; in i5100_init_csrows()
845 mci_for_each_dimm(mci, dimm) { in i5100_init_csrows()
846 const unsigned long npages = i5100_npages(mci, dimm->idx); in i5100_init_csrows()
847 const unsigned int chan = i5100_csrow_to_chan(mci, dimm->idx); in i5100_init_csrows()
848 const unsigned int rank = i5100_csrow_to_rank(mci, dimm->idx); in i5100_init_csrows()
860 i5100_rank_to_slot(mci, chan, rank)); in i5100_init_csrows()
871 static void i5100_do_inject(struct mem_ctl_info *mci) in i5100_do_inject() argument
873 struct i5100_priv *priv = mci->pvt_info; in i5100_do_inject()
936 struct mem_ctl_info *mci = to_mci(dev); in inject_enable_write() local
938 i5100_do_inject(mci); in inject_enable_write()
949 static int i5100_setup_debugfs(struct mem_ctl_info *mci) in i5100_setup_debugfs() argument
951 struct i5100_priv *priv = mci->pvt_info; in i5100_setup_debugfs()
956 priv->debugfs = edac_debugfs_create_dir_at(mci->bus->name, i5100_debugfs); in i5100_setup_debugfs()
974 &mci->dev, &i5100_inject_enable_fops); in i5100_setup_debugfs()
983 struct mem_ctl_info *mci; in i5100_init_one() local
1051 mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, in i5100_init_one()
1053 if (!mci) { in i5100_init_one()
1073 mci->pdev = &pdev->dev; in i5100_init_one()
1075 priv = mci->pvt_info; in i5100_init_one()
1092 i5100_init_dimm_layout(pdev, mci); in i5100_init_one()
1093 i5100_init_interleaving(pdev, mci); in i5100_init_one()
1095 mci->mtype_cap = MEM_FLAG_FB_DDR2; in i5100_init_one()
1096 mci->edac_ctl_cap = EDAC_FLAG_SECDED; in i5100_init_one()
1097 mci->edac_cap = EDAC_FLAG_SECDED; in i5100_init_one()
1098 mci->mod_name = "i5100_edac.c"; in i5100_init_one()
1099 mci->ctl_name = "i5100"; in i5100_init_one()
1100 mci->dev_name = pci_name(pdev); in i5100_init_one()
1101 mci->ctl_page_to_phys = NULL; in i5100_init_one()
1103 mci->edac_check = i5100_check_error; in i5100_init_one()
1104 mci->set_sdram_scrub_rate = i5100_set_scrub_rate; in i5100_init_one()
1105 mci->get_sdram_scrub_rate = i5100_get_scrub_rate; in i5100_init_one()
1114 i5100_init_csrows(mci); in i5100_init_one()
1126 if (edac_mc_add_mc(mci)) { in i5100_init_one()
1131 i5100_setup_debugfs(mci); in i5100_init_one()
1144 edac_mc_free(mci); in i5100_init_one()
1167 struct mem_ctl_info *mci; in i5100_remove_one() local
1170 mci = edac_mc_del_mc(&pdev->dev); in i5100_remove_one()
1172 if (!mci) in i5100_remove_one()
1175 priv = mci->pvt_info; in i5100_remove_one()
1190 edac_mc_free(mci); in i5100_remove_one()