aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/edac/i5000_edac.c
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2012-01-28 07:09:38 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-05-28 18:10:58 -0400
commita895bf8b1e1ea4c032a8fa8a09475a2ce09fe77a (patch)
tree79a1110d0f4a6f2d50d870fa77d11a5311fee4fc /drivers/edac/i5000_edac.c
parent5e2af0c09e60d11dd8297e259a9ca2b3d92d2cf4 (diff)
edac: move nr_pages to dimm struct
The number of pages is a dimm property. Move it to the dimm struct. After this change, it is possible to add sysfs nodes for the DIMM's that will properly represent the DIMM stick properties, including its size. A TODO fix here is to properly represent dual-rank/quad-rank DIMMs when the memory controller represents the memory via chip select rows. Reviewed-by: Aristeu Rozanski <arozansk@redhat.com> Acked-by: Borislav Petkov <borislav.petkov@amd.com> Acked-by: Chris Metcalf <cmetcalf@tilera.com> Cc: Doug Thompson <norsk5@yahoo.com> Cc: Mark Gross <mark.gross@intel.com> Cc: Jason Uhlenkott <juhlenko@akamai.com> Cc: Tim Small <tim@buttersideup.com> Cc: Ranganathan Desikan <ravi@jetztechnologies.com> Cc: "Arvind R." <arvino55@gmail.com> Cc: Olof Johansson <olof@lixom.net> Cc: Egor Martovetsky <egor@pasemi.com> Cc: Michal Marek <mmarek@suse.cz> Cc: Jiri Kosina <jkosina@suse.cz> Cc: Joe Perches <joe@perches.com> Cc: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Hitoshi Mitake <h.mitake@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: "Niklas Söderlund" <niklas.soderlund@ericsson.com> Cc: Shaohui Xie <Shaohui.Xie@freescale.com> Cc: Josh Boyer <jwboyer@gmail.com> Cc: linuxppc-dev@lists.ozlabs.org Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/edac/i5000_edac.c')
-rw-r--r--drivers/edac/i5000_edac.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/edac/i5000_edac.c b/drivers/edac/i5000_edac.c
index 26b40556958e..f3a1a3e1e4e1 100644
--- a/drivers/edac/i5000_edac.c
+++ b/drivers/edac/i5000_edac.c
@@ -1236,6 +1236,7 @@ static int i5000_init_csrows(struct mem_ctl_info *mci)
1236{ 1236{
1237 struct i5000_pvt *pvt; 1237 struct i5000_pvt *pvt;
1238 struct csrow_info *p_csrow; 1238 struct csrow_info *p_csrow;
1239 struct dimm_info *dimm;
1239 int empty, channel_count; 1240 int empty, channel_count;
1240 int max_csrows; 1241 int max_csrows;
1241 int mtr, mtr1; 1242 int mtr, mtr1;
@@ -1265,21 +1266,22 @@ static int i5000_init_csrows(struct mem_ctl_info *mci)
1265 1266
1266 csrow_megs = 0; 1267 csrow_megs = 0;
1267 for (channel = 0; channel < pvt->maxch; channel++) { 1268 for (channel = 0; channel < pvt->maxch; channel++) {
1269 dimm = p_csrow->channels[channel].dimm;
1268 csrow_megs += pvt->dimm_info[csrow][channel].megabytes; 1270 csrow_megs += pvt->dimm_info[csrow][channel].megabytes;
1269 p_csrow->channels[channel].dimm->grain = 8; 1271 dimm->grain = 8;
1270 1272
1271 /* Assume DDR2 for now */ 1273 /* Assume DDR2 for now */
1272 p_csrow->channels[channel].dimm->mtype = MEM_FB_DDR2; 1274 dimm->mtype = MEM_FB_DDR2;
1273 1275
1274 /* ask what device type on this row */ 1276 /* ask what device type on this row */
1275 if (MTR_DRAM_WIDTH(mtr)) 1277 if (MTR_DRAM_WIDTH(mtr))
1276 p_csrow->channels[channel].dimm->dtype = DEV_X8; 1278 dimm->dtype = DEV_X8;
1277 else 1279 else
1278 p_csrow->channels[channel].dimm->dtype = DEV_X4; 1280 dimm->dtype = DEV_X4;
1279 1281
1280 p_csrow->channels[channel].dimm->edac_mode = EDAC_S8ECD8ED; 1282 dimm->edac_mode = EDAC_S8ECD8ED;
1283 dimm->nr_pages = (csrow_megs << 8) / pvt->maxch;
1281 } 1284 }
1282 p_csrow->nr_pages = csrow_megs << 8;
1283 1285
1284 empty = 0; 1286 empty = 0;
1285 } 1287 }