aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/edac/i7300_edac.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/edac/i7300_edac.c')
-rw-r--r--drivers/edac/i7300_edac.c42
1 files changed, 26 insertions, 16 deletions
diff --git a/drivers/edac/i7300_edac.c b/drivers/edac/i7300_edac.c
index a2a9ad499b6b..38920c0b5fbb 100644
--- a/drivers/edac/i7300_edac.c
+++ b/drivers/edac/i7300_edac.c
@@ -104,7 +104,7 @@ struct i7300_pvt {
104 104
105 u16 mir[MAX_MIR]; /* Memory Interleave Reg*/ 105 u16 mir[MAX_MIR]; /* Memory Interleave Reg*/
106 106
107 u16 mtr[MAX_SLOTS][MAX_BRANCHES]; /* Memory Technlogy Reg */ 107 u16 mtr[MAX_SLOTS][MAX_BRANCHES]; /* Memory Technlogy Reg */
108 u16 ambpresent[MAX_CHANNELS]; /* AMB present regs */ 108 u16 ambpresent[MAX_CHANNELS]; /* AMB present regs */
109 109
110 /* DIMM information matrix, allocating architecture maximums */ 110 /* DIMM information matrix, allocating architecture maximums */
@@ -162,7 +162,7 @@ static struct edac_pci_ctl_info *i7300_pci;
162#define AMBPRESENT_0 0x64 162#define AMBPRESENT_0 0x64
163#define AMBPRESENT_1 0x66 163#define AMBPRESENT_1 0x66
164 164
165const static u16 mtr_regs [MAX_SLOTS] = { 165const static u16 mtr_regs[MAX_SLOTS] = {
166 0x80, 0x84, 0x88, 0x8c, 166 0x80, 0x84, 0x88, 0x8c,
167 0x82, 0x86, 0x8a, 0x8e 167 0x82, 0x86, 0x8a, 0x8e
168}; 168};
@@ -726,7 +726,7 @@ static void print_dimm_size(struct i7300_pvt *pvt)
726 p = pvt->tmp_prt_buffer; 726 p = pvt->tmp_prt_buffer;
727 space = PAGE_SIZE; 727 space = PAGE_SIZE;
728 n = snprintf(p, space, "-------------------------------" 728 n = snprintf(p, space, "-------------------------------"
729 "------------------------------"); 729 "------------------------------");
730 p += n; 730 p += n;
731 space -= n; 731 space -= n;
732 debugf2("%s\n", pvt->tmp_prt_buffer); 732 debugf2("%s\n", pvt->tmp_prt_buffer);
@@ -751,7 +751,7 @@ static void print_dimm_size(struct i7300_pvt *pvt)
751 } 751 }
752 752
753 n = snprintf(p, space, "-------------------------------" 753 n = snprintf(p, space, "-------------------------------"
754 "------------------------------"); 754 "------------------------------");
755 p += n; 755 p += n;
756 space -= n; 756 space -= n;
757 debugf2("%s\n", pvt->tmp_prt_buffer); 757 debugf2("%s\n", pvt->tmp_prt_buffer);
@@ -783,13 +783,15 @@ static int i7300_init_csrows(struct mem_ctl_info *mci)
783 for (branch = 0; branch < MAX_BRANCHES; branch++) { 783 for (branch = 0; branch < MAX_BRANCHES; branch++) {
784 /* Read and dump branch 0's MTRs */ 784 /* Read and dump branch 0's MTRs */
785 channel = to_channel(0, branch); 785 channel = to_channel(0, branch);
786 pci_read_config_word(pvt->pci_dev_2x_0_fbd_branch[branch], AMBPRESENT_0, 786 pci_read_config_word(pvt->pci_dev_2x_0_fbd_branch[branch],
787 AMBPRESENT_0,
787 &pvt->ambpresent[channel]); 788 &pvt->ambpresent[channel]);
788 debugf2("\t\tAMB-present CH%d = 0x%x:\n", 789 debugf2("\t\tAMB-present CH%d = 0x%x:\n",
789 channel, pvt->ambpresent[channel]); 790 channel, pvt->ambpresent[channel]);
790 791
791 channel = to_channel(1, branch); 792 channel = to_channel(1, branch);
792 pci_read_config_word(pvt->pci_dev_2x_0_fbd_branch[branch], AMBPRESENT_1, 793 pci_read_config_word(pvt->pci_dev_2x_0_fbd_branch[branch],
794 AMBPRESENT_1,
793 &pvt->ambpresent[channel]); 795 &pvt->ambpresent[channel]);
794 debugf2("\t\tAMB-present CH%d = 0x%x:\n", 796 debugf2("\t\tAMB-present CH%d = 0x%x:\n",
795 channel, pvt->ambpresent[channel]); 797 channel, pvt->ambpresent[channel]);
@@ -837,11 +839,12 @@ static int i7300_init_csrows(struct mem_ctl_info *mci)
837static void decode_mir(int mir_no, u16 mir[MAX_MIR]) 839static void decode_mir(int mir_no, u16 mir[MAX_MIR])
838{ 840{
839 if (mir[mir_no] & 3) 841 if (mir[mir_no] & 3)
840 debugf2("MIR%d: limit= 0x%x Branch(es) that participate: %s %s\n", 842 debugf2("MIR%d: limit= 0x%x Branch(es) that participate:"
843 " %s %s\n",
841 mir_no, 844 mir_no,
842 (mir[mir_no] >> 4) & 0xfff, 845 (mir[mir_no] >> 4) & 0xfff,
843 (mir[mir_no] & 1) ? "B0" : "", 846 (mir[mir_no] & 1) ? "B0" : "",
844 (mir[mir_no] & 2) ? "B1": ""); 847 (mir[mir_no] & 2) ? "B1" : "");
845} 848}
846 849
847/** 850/**
@@ -891,9 +894,12 @@ static int i7300_get_mc_regs(struct mem_ctl_info *mci)
891 IS_RETRY_ENABLED(pvt->mc_settings) ? "enabled" : "disabled"); 894 IS_RETRY_ENABLED(pvt->mc_settings) ? "enabled" : "disabled");
892 895
893 /* Get Memory Interleave Range registers */ 896 /* Get Memory Interleave Range registers */
894 pci_read_config_word(pvt->pci_dev_16_1_fsb_addr_map, MIR0, &pvt->mir[0]); 897 pci_read_config_word(pvt->pci_dev_16_1_fsb_addr_map, MIR0,
895 pci_read_config_word(pvt->pci_dev_16_1_fsb_addr_map, MIR1, &pvt->mir[1]); 898 &pvt->mir[0]);
896 pci_read_config_word(pvt->pci_dev_16_1_fsb_addr_map, MIR2, &pvt->mir[2]); 899 pci_read_config_word(pvt->pci_dev_16_1_fsb_addr_map, MIR1,
900 &pvt->mir[1]);
901 pci_read_config_word(pvt->pci_dev_16_1_fsb_addr_map, MIR2,
902 &pvt->mir[2]);
897 903
898 /* Decode the MIR regs */ 904 /* Decode the MIR regs */
899 for (i = 0; i < MAX_MIR; i++) 905 for (i = 0; i < MAX_MIR; i++)
@@ -952,7 +958,8 @@ static int __devinit i7300_get_devices(struct mem_ctl_info *mci)
952 958
953 /* Attempt to 'get' the MCH register we want */ 959 /* Attempt to 'get' the MCH register we want */
954 pdev = NULL; 960 pdev = NULL;
955 while (!pvt->pci_dev_16_1_fsb_addr_map || !pvt->pci_dev_16_2_fsb_err_regs) { 961 while (!pvt->pci_dev_16_1_fsb_addr_map ||
962 !pvt->pci_dev_16_2_fsb_err_regs) {
956 pdev = pci_get_device(PCI_VENDOR_ID_INTEL, 963 pdev = pci_get_device(PCI_VENDOR_ID_INTEL,
957 PCI_DEVICE_ID_INTEL_I7300_MCH_ERR, pdev); 964 PCI_DEVICE_ID_INTEL_I7300_MCH_ERR, pdev);
958 if (!pdev) { 965 if (!pdev) {
@@ -980,16 +987,19 @@ static int __devinit i7300_get_devices(struct mem_ctl_info *mci)
980 987
981 debugf1("System Address, processor bus- PCI Bus ID: %s %x:%x\n", 988 debugf1("System Address, processor bus- PCI Bus ID: %s %x:%x\n",
982 pci_name(pvt->pci_dev_16_0_fsb_ctlr), 989 pci_name(pvt->pci_dev_16_0_fsb_ctlr),
983 pvt->pci_dev_16_0_fsb_ctlr->vendor, pvt->pci_dev_16_0_fsb_ctlr->device); 990 pvt->pci_dev_16_0_fsb_ctlr->vendor,
991 pvt->pci_dev_16_0_fsb_ctlr->device);
984 debugf1("Branchmap, control and errors - PCI Bus ID: %s %x:%x\n", 992 debugf1("Branchmap, control and errors - PCI Bus ID: %s %x:%x\n",
985 pci_name(pvt->pci_dev_16_1_fsb_addr_map), 993 pci_name(pvt->pci_dev_16_1_fsb_addr_map),
986 pvt->pci_dev_16_1_fsb_addr_map->vendor, pvt->pci_dev_16_1_fsb_addr_map->device); 994 pvt->pci_dev_16_1_fsb_addr_map->vendor,
995 pvt->pci_dev_16_1_fsb_addr_map->device);
987 debugf1("FSB Error Regs - PCI Bus ID: %s %x:%x\n", 996 debugf1("FSB Error Regs - PCI Bus ID: %s %x:%x\n",
988 pci_name(pvt->pci_dev_16_2_fsb_err_regs), 997 pci_name(pvt->pci_dev_16_2_fsb_err_regs),
989 pvt->pci_dev_16_2_fsb_err_regs->vendor, pvt->pci_dev_16_2_fsb_err_regs->device); 998 pvt->pci_dev_16_2_fsb_err_regs->vendor,
999 pvt->pci_dev_16_2_fsb_err_regs->device);
990 1000
991 pvt->pci_dev_2x_0_fbd_branch[0] = pci_get_device(PCI_VENDOR_ID_INTEL, 1001 pvt->pci_dev_2x_0_fbd_branch[0] = pci_get_device(PCI_VENDOR_ID_INTEL,
992 PCI_DEVICE_ID_INTEL_I7300_MCH_FB0, 1002 PCI_DEVICE_ID_INTEL_I7300_MCH_FB0,
993 NULL); 1003 NULL);
994 if (!pvt->pci_dev_2x_0_fbd_branch[0]) { 1004 if (!pvt->pci_dev_2x_0_fbd_branch[0]) {
995 i7300_printk(KERN_ERR, 1005 i7300_printk(KERN_ERR,