Lines Matching +full:reserved +full:- +full:channels

34 /* Intel 82975X register addresses - device 0 function 0 - DRAM Controller */
37 * 31:7 128 byte cache-line address
38 * 6:1 reserved
49 * 1h:7h reserved
50 * More - See Page 65 of Intel DocSheet.
55 * 15:12 reserved
57 * 10 reserved
58 * 9 non-DRAM lock error (ndlock)
60 * 7:2 reserved
73 * 15:12 reserved
75 * 10 reserved
76 * 9 non-DRAM lock error (ndlock)
78 * 7:2 reserved
85 * 15:2 reserved
92 * 15:2 reserved
99 * 7:1 reserved
105 * 31:14 Base Addr of 16K memory-mapped
107 * 13:1 reserved
108 * 0 mem-mapped config space enable
137 * 7 reserved
139 * 3 reserved
143 * 001 = reserved
147 * others = reserved
155 #define I82975X_BNKARC 0x10e /* Type of device in each rank - Bank Arch (16b)
157 * 15:8 reserved
173 * 31:30 reserved
175 * 28:11 reserved, according to Intel
176 * 22:21 number of channels
184 * 7 reserved
186 * 3:2 reserved
189 * 00, 01, 11 reserved
198 * 30:0 reserved
243 pdev = to_pci_dev(mci->pdev); in i82975x_get_error_info()
250 pci_read_config_word(pdev, I82975X_ERRSTS, &info->errsts); in i82975x_get_error_info()
251 pci_read_config_dword(pdev, I82975X_EAP, &info->eap); in i82975x_get_error_info()
252 pci_read_config_byte(pdev, I82975X_XEAP, &info->xeap); in i82975x_get_error_info()
253 pci_read_config_byte(pdev, I82975X_DES, &info->des); in i82975x_get_error_info()
254 pci_read_config_byte(pdev, I82975X_DERRSYN, &info->derrsyn); in i82975x_get_error_info()
255 pci_read_config_word(pdev, I82975X_ERRSTS, &info->errsts2); in i82975x_get_error_info()
265 if (!(info->errsts2 & 0x0003)) in i82975x_get_error_info()
268 if ((info->errsts ^ info->errsts2) & 0x0003) { in i82975x_get_error_info()
269 pci_read_config_dword(pdev, I82975X_EAP, &info->eap); in i82975x_get_error_info()
270 pci_read_config_byte(pdev, I82975X_XEAP, &info->xeap); in i82975x_get_error_info()
271 pci_read_config_byte(pdev, I82975X_DES, &info->des); in i82975x_get_error_info()
273 &info->derrsyn); in i82975x_get_error_info()
283 if (!(info->errsts2 & 0x0003)) in i82975x_process_error_info()
289 if ((info->errsts ^ info->errsts2) & 0x0003) { in i82975x_process_error_info()
291 -1, -1, -1, "UE overwrote CE", ""); in i82975x_process_error_info()
292 info->errsts = info->errsts2; in i82975x_process_error_info()
295 page = (unsigned long) info->eap; in i82975x_process_error_info()
297 if (info->xeap & 1) in i82975x_process_error_info()
299 page >>= (PAGE_SHIFT - 1); in i82975x_process_error_info()
302 if (row == -1) { in i82975x_process_error_info()
307 (info->xeap & 1) ? 1 : 0, info->eap, (unsigned int) page); in i82975x_process_error_info()
310 chan = (mci->csrows[row]->nr_channels == 1) ? 0 : info->eap & 1; in i82975x_process_error_info()
311 offst = info->eap in i82975x_process_error_info()
312 & ((1 << PAGE_SHIFT) - in i82975x_process_error_info()
313 (1 << mci->csrows[row]->channels[chan]->dimm->grain)); in i82975x_process_error_info()
315 if (info->errsts & 0x0002) in i82975x_process_error_info()
318 row, -1, -1, in i82975x_process_error_info()
322 page, offst, info->derrsyn, in i82975x_process_error_info()
323 row, chan ? chan : 0, -1, in i82975x_process_error_info()
341 * We treat interleaved-symmetric configuration as dual-channel - EAP's in dual_channel_active()
342 * bit-0 giving the channel of the error location. in dual_channel_active()
344 * All other configurations are treated as single channel - the EAP's in dual_channel_active()
345 * bit-0 will resolve ok in symmetric area of mixed in dual_channel_active()
381 for (index = 0; index < mci->nr_csrows; index++) { in i82975x_init_csrows()
382 csrow = mci->csrows[index]; in i82975x_init_csrows()
387 cumul_size <<= (I82975X_DRB_SHIFT - PAGE_SHIFT); in i82975x_init_csrows()
389 * Adjust cumul_size w.r.t number of channels in i82975x_init_csrows()
392 if (csrow->nr_channels > 1) in i82975x_init_csrows()
396 nr_pages = cumul_size - last_cumul_size; in i82975x_init_csrows()
403 * [0-7] for single-channel; i.e. csrow->nr_channels = 1 in i82975x_init_csrows()
404 * [0-3] for dual-channel; i.e. csrow->nr_channels = 2 in i82975x_init_csrows()
406 for (chan = 0; chan < csrow->nr_channels; chan++) { in i82975x_init_csrows()
407 dimm = mci->csrows[index]->channels[chan]->dimm; in i82975x_init_csrows()
409 dimm->nr_pages = nr_pages / csrow->nr_channels; in i82975x_init_csrows()
411 snprintf(csrow->channels[chan]->dimm->label, EDAC_MC_LABEL_LEN, "DIMM %c%d", in i82975x_init_csrows()
414 dimm->grain = 1 << 7; /* 128Byte cache-line resolution */ in i82975x_init_csrows()
417 dimm->dtype = DEV_X8; in i82975x_init_csrows()
419 dimm->mtype = MEM_DDR2; /* I82975x supports only DDR2 */ in i82975x_init_csrows()
420 dimm->edac_mode = EDAC_SECDED; /* only supported */ in i82975x_init_csrows()
423 csrow->first_page = last_cumul_size; in i82975x_init_csrows()
424 csrow->last_page = cumul_size - 1; in i82975x_init_csrows()
436 * (shows 13-5-5-5 for 800-DDR2) in i82975x_print_dram_timings()
437 * Asus P5W Bios reports 15-5-4-4 in i82975x_print_dram_timings()
465 int rc = -ENODEV; in i82975x_probe1()
533 i82975x_printk(KERN_INFO, "ECC disabled on both channels.\n"); in i82975x_probe1()
548 rc = -ENOMEM; in i82975x_probe1()
553 mci->pdev = &pdev->dev; in i82975x_probe1()
554 mci->mtype_cap = MEM_FLAG_DDR2; in i82975x_probe1()
555 mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_SECDED; in i82975x_probe1()
556 mci->edac_cap = EDAC_FLAG_NONE | EDAC_FLAG_SECDED; in i82975x_probe1()
557 mci->mod_name = EDAC_MOD_STR; in i82975x_probe1()
558 mci->ctl_name = i82975x_devs[dev_idx].ctl_name; in i82975x_probe1()
559 mci->dev_name = pci_name(pdev); in i82975x_probe1()
560 mci->edac_check = i82975x_check; in i82975x_probe1()
561 mci->ctl_page_to_phys = NULL; in i82975x_probe1()
563 pvt = (struct i82975x_pvt *) mci->pvt_info; in i82975x_probe1()
564 pvt->mch_window = mch_window; in i82975x_probe1()
566 mci->scrub_mode = SCRUB_HW_SRC; in i82975x_probe1()
597 return -EIO; in i82975x_init_one()
599 rc = i82975x_probe1(pdev, ent->driver_data); in i82975x_init_one()
614 mci = edac_mc_del_mc(&pdev->dev); in i82975x_remove_one()
618 pvt = mci->pvt_info; in i82975x_remove_one()
619 if (pvt->mch_window) in i82975x_remove_one()
620 iounmap( pvt->mch_window ); in i82975x_remove_one()
663 pci_rc = -ENODEV; in i82975x_init()
671 pci_rc = -ENODEV; in i82975x_init()