Commit 3847bccc authored by Dave Peterson's avatar Dave Peterson Committed by Linus Torvalds

[PATCH] EDAC: e752x cleanup

- Add ctl_dev field to "struct e752x_dev_info".  Then we can eliminate
  ugly switch statement from e752x_probe1().

- Remove code from e752x_probe1() that clears initial PCI bus parity
  errors.  The core EDAC module already does this.
Signed-off-by: default avatarDavid S. Peterson <dsp@llnl.gov>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 225159bd
...@@ -181,6 +181,7 @@ struct e752x_pvt { ...@@ -181,6 +181,7 @@ struct e752x_pvt {
struct e752x_dev_info { struct e752x_dev_info {
u16 err_dev; u16 err_dev;
u16 ctl_dev;
const char *ctl_name; const char *ctl_name;
}; };
...@@ -207,12 +208,15 @@ struct e752x_error_info { ...@@ -207,12 +208,15 @@ struct e752x_error_info {
static const struct e752x_dev_info e752x_devs[] = { static const struct e752x_dev_info e752x_devs[] = {
[E7520] = { [E7520] = {
.err_dev = PCI_DEVICE_ID_INTEL_7520_1_ERR, .err_dev = PCI_DEVICE_ID_INTEL_7520_1_ERR,
.ctl_dev = PCI_DEVICE_ID_INTEL_7520_0,
.ctl_name = "E7520"}, .ctl_name = "E7520"},
[E7525] = { [E7525] = {
.err_dev = PCI_DEVICE_ID_INTEL_7525_1_ERR, .err_dev = PCI_DEVICE_ID_INTEL_7525_1_ERR,
.ctl_dev = PCI_DEVICE_ID_INTEL_7525_0,
.ctl_name = "E7525"}, .ctl_name = "E7525"},
[E7320] = { [E7320] = {
.err_dev = PCI_DEVICE_ID_INTEL_7320_1_ERR, .err_dev = PCI_DEVICE_ID_INTEL_7320_1_ERR,
.ctl_dev = PCI_DEVICE_ID_INTEL_7320_0,
.ctl_name = "E7320"}, .ctl_name = "E7320"},
}; };
...@@ -742,7 +746,7 @@ static int e752x_probe1(struct pci_dev *pdev, int dev_idx) ...@@ -742,7 +746,7 @@ static int e752x_probe1(struct pci_dev *pdev, int dev_idx)
{ {
int rc = -ENODEV; int rc = -ENODEV;
int index; int index;
u16 pci_data, stat; u16 pci_data;
u32 stat32; u32 stat32;
u16 stat16; u16 stat16;
u8 stat8; u8 stat8;
...@@ -755,7 +759,6 @@ static int e752x_probe1(struct pci_dev *pdev, int dev_idx) ...@@ -755,7 +759,6 @@ static int e752x_probe1(struct pci_dev *pdev, int dev_idx)
int drc_ddim; /* DRAM Data Integrity Mode 0=none,2=edac */ int drc_ddim; /* DRAM Data Integrity Mode 0=none,2=edac */
u32 dra; u32 dra;
unsigned long last_cumul_size; unsigned long last_cumul_size;
struct pci_dev *pres_dev;
struct pci_dev *dev = NULL; struct pci_dev *dev = NULL;
debugf0("%s(): mci\n", __func__); debugf0("%s(): mci\n", __func__);
...@@ -920,33 +923,9 @@ static int e752x_probe1(struct pci_dev *pdev, int dev_idx) ...@@ -920,33 +923,9 @@ static int e752x_probe1(struct pci_dev *pdev, int dev_idx)
goto fail; goto fail;
} }
/* Walk through the PCI table and clear errors */ dev = pci_get_device(PCI_VENDOR_ID_INTEL, e752x_devs[dev_idx].ctl_dev,
switch (dev_idx) { NULL);
case E7520:
dev = pci_get_device(PCI_VENDOR_ID_INTEL,
PCI_DEVICE_ID_INTEL_7520_0, NULL);
break;
case E7525:
dev = pci_get_device(PCI_VENDOR_ID_INTEL,
PCI_DEVICE_ID_INTEL_7525_0, NULL);
break;
case E7320:
dev = pci_get_device(PCI_VENDOR_ID_INTEL,
PCI_DEVICE_ID_INTEL_7320_0, NULL);
break;
}
pvt->dev_d0f0 = dev; pvt->dev_d0f0 = dev;
for (pres_dev = dev;
((struct pci_dev *) pres_dev->global_list.next != dev);
pres_dev = (struct pci_dev *) pres_dev->global_list.next) {
pci_read_config_dword(pres_dev, PCI_COMMAND, &stat32);
stat = (u16) (stat32 >> 16);
/* clear any error bits */
if (stat32 & ((1 << 6) + (1 << 8)))
pci_write_config_word(pres_dev, PCI_STATUS, stat);
}
/* find the error reporting device and clear errors */ /* find the error reporting device and clear errors */
dev = pvt->dev_d0f1 = pci_dev_get(pvt->bridge_ck); dev = pvt->dev_d0f1 = pci_dev_get(pvt->bridge_ck);
/* Turn off error disable & SMI in case the BIOS turned it on */ /* Turn off error disable & SMI in case the BIOS turned it on */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment