diff options
author | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-04-16 14:12:13 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-05-28 18:13:47 -0400 |
commit | 63b5d1d9aa4b59847ce6279b8798ed28c686a459 (patch) | |
tree | 4805f99adc20c6d4302452f95510a4baeb39a428 /drivers/edac | |
parent | 94d933745928ad6d8c40da89b4d0ccb2511578fc (diff) |
r82600_edac: convert driver to use the new edac ABI
The legacy edac ABI is going to be removed. Port the driver to use
and benefit from the new API functionality.
Cc: Tim Small <tim@buttersideup.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/edac')
-rw-r--r-- | drivers/edac/r82600_edac.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/drivers/edac/r82600_edac.c b/drivers/edac/r82600_edac.c index c41b375e1f38..aea1a0c0eca3 100644 --- a/drivers/edac/r82600_edac.c +++ b/drivers/edac/r82600_edac.c | |||
@@ -179,10 +179,11 @@ static int r82600_process_error_info(struct mem_ctl_info *mci, | |||
179 | error_found = 1; | 179 | error_found = 1; |
180 | 180 | ||
181 | if (handle_errors) | 181 | if (handle_errors) |
182 | edac_mc_handle_ce(mci, page, 0, /* not avail */ | 182 | edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, |
183 | syndrome, | 183 | page, 0, syndrome, |
184 | edac_mc_find_csrow_by_page(mci, page), | 184 | edac_mc_find_csrow_by_page(mci, page), |
185 | 0, mci->ctl_name); | 185 | 0, -1, |
186 | mci->ctl_name, "", NULL); | ||
186 | } | 187 | } |
187 | 188 | ||
188 | if (info->eapr & BIT(1)) { /* UE? */ | 189 | if (info->eapr & BIT(1)) { /* UE? */ |
@@ -190,9 +191,11 @@ static int r82600_process_error_info(struct mem_ctl_info *mci, | |||
190 | 191 | ||
191 | if (handle_errors) | 192 | if (handle_errors) |
192 | /* 82600 doesn't give enough info */ | 193 | /* 82600 doesn't give enough info */ |
193 | edac_mc_handle_ue(mci, page, 0, | 194 | edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, |
194 | edac_mc_find_csrow_by_page(mci, page), | 195 | page, 0, 0, |
195 | mci->ctl_name); | 196 | edac_mc_find_csrow_by_page(mci, page), |
197 | 0, -1, | ||
198 | mci->ctl_name, "", NULL); | ||
196 | } | 199 | } |
197 | 200 | ||
198 | return error_found; | 201 | return error_found; |
@@ -267,6 +270,7 @@ static void r82600_init_csrows(struct mem_ctl_info *mci, struct pci_dev *pdev, | |||
267 | static int r82600_probe1(struct pci_dev *pdev, int dev_idx) | 270 | static int r82600_probe1(struct pci_dev *pdev, int dev_idx) |
268 | { | 271 | { |
269 | struct mem_ctl_info *mci; | 272 | struct mem_ctl_info *mci; |
273 | struct edac_mc_layer layers[2]; | ||
270 | u8 dramcr; | 274 | u8 dramcr; |
271 | u32 eapr; | 275 | u32 eapr; |
272 | u32 scrub_disabled; | 276 | u32 scrub_disabled; |
@@ -281,8 +285,13 @@ static int r82600_probe1(struct pci_dev *pdev, int dev_idx) | |||
281 | debugf2("%s(): sdram refresh rate = %#0x\n", __func__, | 285 | debugf2("%s(): sdram refresh rate = %#0x\n", __func__, |
282 | sdram_refresh_rate); | 286 | sdram_refresh_rate); |
283 | debugf2("%s(): DRAMC register = %#0x\n", __func__, dramcr); | 287 | debugf2("%s(): DRAMC register = %#0x\n", __func__, dramcr); |
284 | mci = edac_mc_alloc(0, R82600_NR_CSROWS, R82600_NR_CHANS, 0); | 288 | layers[0].type = EDAC_MC_LAYER_CHIP_SELECT; |
285 | 289 | layers[0].size = R82600_NR_CSROWS; | |
290 | layers[0].is_virt_csrow = true; | ||
291 | layers[1].type = EDAC_MC_LAYER_CHANNEL; | ||
292 | layers[1].size = R82600_NR_CHANS; | ||
293 | layers[1].is_virt_csrow = false; | ||
294 | mci = new_edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0); | ||
286 | if (mci == NULL) | 295 | if (mci == NULL) |
287 | return -ENOMEM; | 296 | return -ENOMEM; |
288 | 297 | ||