Lines Matching +full:address +full:- +full:bits

14  * www.radisys.com/files/support_downloads/007-01277-0002.82600DataBook.pdf
35 * sizes of 64 bit wide (72 bits with ECC) Synchronous DRAM (SDRAM) DIMMs,
38 * registered and unbuffered DIMMs as well as mixing of ECC and non-ECC DIMMs
49 /* Radisys 82600 register addresses - device 0 function 0 - PCI bridge */
50 #define R82600_DRAMC 0x57 /* Various SDRAM related control bits
51 * all bits are R/W
65 * More SDRAM related control bits
66 * all bits are R/W
74 * 1=Drive ECC bits to 0 during
88 #define R82600_EAP 0x80 /* ECC Error Address Pointer Register
94 * 30:12 Error Address Pointer (RO)
95 * Upper 19 bits of error address
97 * 11:4 Syndrome Bits (RO)
122 #define R82600_DRBA 0x60 /* + 0x60..0x63 SDRAM Row Boundary Address
125 * 7:0 Address lines 30:24 - upper limit of
142 pdev = to_pci_dev(mci->pdev); in r82600_get_error_info()
143 pci_read_config_dword(pdev, R82600_EAP, &info->eapr); in r82600_get_error_info()
145 if (info->eapr & BIT(0)) in r82600_get_error_info()
151 if (info->eapr & BIT(1)) in r82600_get_error_info()
168 /* bits 30:12 store the upper 19 bits of the 32 bit error address */ in r82600_process_error_info()
169 eapaddr = ((info->eapr >> 12) & 0x7FFF) << 13; in r82600_process_error_info()
170 /* Syndrome in bits 11:4 [p.62] */ in r82600_process_error_info()
171 syndrome = (info->eapr >> 4) & 0xFF; in r82600_process_error_info()
174 * granularity (upper 19 bits only) */ in r82600_process_error_info()
177 if (info->eapr & BIT(0)) { /* CE? */ in r82600_process_error_info()
184 0, -1, in r82600_process_error_info()
185 mci->ctl_name, ""); in r82600_process_error_info()
188 if (info->eapr & BIT(1)) { /* UE? */ in r82600_process_error_info()
196 0, -1, in r82600_process_error_info()
197 mci->ctl_name, ""); in r82600_process_error_info()
222 u8 drbar; /* SDRAM Row Boundary Address Register */ in r82600_init_csrows()
230 for (index = 0; index < mci->nr_csrows; index++) { in r82600_init_csrows()
231 csrow = mci->csrows[index]; in r82600_init_csrows()
232 dimm = csrow->channels[0]->dimm; in r82600_init_csrows()
234 /* find the DRAM Chip Select Base address and mask */ in r82600_init_csrows()
242 edac_dbg(1, "Row=%d, Boundary Address=%#0x, Last = %#0x\n", in r82600_init_csrows()
251 csrow->first_page = row_base >> PAGE_SHIFT; in r82600_init_csrows()
252 csrow->last_page = (row_high_limit >> PAGE_SHIFT) - 1; in r82600_init_csrows()
254 dimm->nr_pages = csrow->last_page - csrow->first_page + 1; in r82600_init_csrows()
255 /* Error address is top 19 bits - so granularity is * in r82600_init_csrows()
256 * 14 bits */ in r82600_init_csrows()
257 dimm->grain = 1 << 14; in r82600_init_csrows()
258 dimm->mtype = reg_sdram ? MEM_RDDR : MEM_DDR; in r82600_init_csrows()
259 /* FIXME - check that this is unknowable with this chipset */ in r82600_init_csrows()
260 dimm->dtype = DEV_UNKNOWN; in r82600_init_csrows()
263 dimm->edac_mode = ecc_on ? EDAC_SECDED : EDAC_NONE; in r82600_init_csrows()
293 return -ENOMEM; in r82600_probe1()
296 mci->pdev = &pdev->dev; in r82600_probe1()
297 mci->mtype_cap = MEM_FLAG_RDDR | MEM_FLAG_DDR; in r82600_probe1()
298 mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_EC | EDAC_FLAG_SECDED; in r82600_probe1()
303 /* On the R82600, the pins for memory bits 72:65 - i.e. the * in r82600_probe1()
304 * EC bits are shared with the pins for COM2 (!), so if COM2 * in r82600_probe1()
307 mci->edac_cap = EDAC_FLAG_NONE | EDAC_FLAG_EC | EDAC_FLAG_SECDED; in r82600_probe1()
311 edac_dbg(3, "mci = %p - Scrubbing disabled! EAP: %#0x\n", in r82600_probe1()
314 mci->edac_cap = EDAC_FLAG_NONE; in r82600_probe1()
316 mci->mod_name = EDAC_MOD_STR; in r82600_probe1()
317 mci->ctl_name = "R82600"; in r82600_probe1()
318 mci->dev_name = pci_name(pdev); in r82600_probe1()
319 mci->edac_check = r82600_check; in r82600_probe1()
320 mci->ctl_page_to_phys = NULL; in r82600_probe1()
340 r82600_pci = edac_pci_create_generic_ctl(&pdev->dev, EDAC_MOD_STR); in r82600_probe1()
355 return -ENODEV; in r82600_probe1()
365 return r82600_probe1(pdev, ent->driver_data); in r82600_init_one()
377 if ((mci = edac_mc_del_mc(&pdev->dev)) == NULL) in r82600_remove_one()
418 MODULE_AUTHOR("Tim Small <tim@buttersideup.com> - WPAD Ltd. on behalf of EADS Astrium");