Lines Matching +full:0 +full:x4048

19  * 0c04: Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller
20 * 0c08: Xeon E3-1200 v3 Processor DRAM Controller
61 #define PCI_DEVICE_ID_INTEL_IE31200_HB_1 0x0108
62 #define PCI_DEVICE_ID_INTEL_IE31200_HB_2 0x010c
63 #define PCI_DEVICE_ID_INTEL_IE31200_HB_3 0x0150
64 #define PCI_DEVICE_ID_INTEL_IE31200_HB_4 0x0158
65 #define PCI_DEVICE_ID_INTEL_IE31200_HB_5 0x015c
66 #define PCI_DEVICE_ID_INTEL_IE31200_HB_6 0x0c04
67 #define PCI_DEVICE_ID_INTEL_IE31200_HB_7 0x0c08
68 #define PCI_DEVICE_ID_INTEL_IE31200_HB_8 0x190F
69 #define PCI_DEVICE_ID_INTEL_IE31200_HB_9 0x1918
70 #define PCI_DEVICE_ID_INTEL_IE31200_HB_10 0x191F
71 #define PCI_DEVICE_ID_INTEL_IE31200_HB_11 0x590f
72 #define PCI_DEVICE_ID_INTEL_IE31200_HB_12 0x5918
75 #define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_MASK 0x3e00
76 #define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_1 0x3e0f
77 #define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_2 0x3e18
78 #define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_3 0x3e1f
79 #define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_4 0x3e30
80 #define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_5 0x3e31
81 #define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_6 0x3e32
82 #define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_7 0x3e33
83 #define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_8 0x3ec2
84 #define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_9 0x3ec6
85 #define PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_10 0x3eca
101 /* Intel IE31200 register addresses - device 0 function 0 - DRAM Controller */
102 #define IE31200_MCHBAR_LOW 0x48
103 #define IE31200_MCHBAR_HIGH 0x4c
124 * 0 Single-bit DRAM ECC Error Flag (DSERR)
126 #define IE31200_ERRSTS 0xc8
128 #define IE31200_ERRSTS_CE BIT(0)
132 * Channel 0 ECC Error Log (64b)
142 * 0 Correctable Error Status (CERRSTS)
145 #define IE31200_C0ECCERRLOG 0x40c8
146 #define IE31200_C1ECCERRLOG 0x44c8
147 #define IE31200_C0ECCERRLOG_SKL 0x4048
148 #define IE31200_C1ECCERRLOG_SKL 0x4448
149 #define IE31200_ECCERRLOG_CE BIT(0)
160 #define IE31200_CAPID0 0xe4
165 #define IE31200_MAD_DIMM_0_OFFSET 0x5004
166 #define IE31200_MAD_DIMM_0_OFFSET_SKL 0x500C
167 #define IE31200_MAD_DIMM_SIZE GENMASK_ULL(7, 0)
168 #define IE31200_MAD_DIMM_SIZE_SKL GENMASK_ULL(5, 0)
193 IE31200 = 0,
215 x16_width : 2; /* 0 means x8 width */
227 edac_dbg(0, "In single channel mode\n"); in how_many_channels()
230 edac_dbg(0, "In dual channel mode\n"); in how_many_channels()
236 edac_dbg(0, "2 DIMMS per channel disabled\n"); in how_many_channels()
238 edac_dbg(0, "2 DIMMS per channel enabled\n"); in how_many_channels()
286 info->eccerrlog[0] = lo_hi_readq(priv->c0errlog); in ie31200_get_and_clear_error_info()
299 info->eccerrlog[0] = lo_hi_readq(priv->c0errlog); in ie31200_get_and_clear_error_info()
318 edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, 1, 0, 0, 0, in ie31200_process_error_info()
323 for (channel = 0; channel < nr_channels; channel++) { in ie31200_process_error_info()
327 0, 0, 0, in ie31200_process_error_info()
333 0, 0, in ie31200_process_error_info()
366 ie31200_printk(KERN_ERR, "mmio space beyond accessible range (0x%llx)\n", in ie31200_map_mchbar()
373 ie31200_printk(KERN_ERR, "Cannot map mmio space at 0x%llx\n", in ie31200_map_mchbar()
383 dd->dual_rank = (addr_decode & (IE31200_MAD_DIMM_A_RANK_SKL << (chan << 4))) ? 1 : 0; in __skl_populate_dimm_info()
392 dd->dual_rank = (addr_decode & (IE31200_MAD_DIMM_A_RANK << chan)) ? 1 : 0; in __populate_dimm_info()
393 dd->x16_width = (addr_decode & (IE31200_MAD_DIMM_A_WIDTH << chan)) ? 1 : 0; in __populate_dimm_info()
422 edac_dbg(0, "MC:\n"); in ie31200_probe1()
430 layers[0].type = EDAC_MC_LAYER_CHIP_SELECT; in ie31200_probe1()
431 layers[0].size = IE31200_RANKS_PER_CHANNEL; in ie31200_probe1()
432 layers[0].is_virt_csrow = true; in ie31200_probe1()
436 mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, in ie31200_probe1()
473 for (i = 0; i < IE31200_CHANNELS; i++) { in ie31200_probe1()
476 edac_dbg(0, "addr_decode: 0x%x\n", addr_decode); in ie31200_probe1()
477 for (j = 0; j < IE31200_DIMMS_PER_CHANNEL; j++) { in ie31200_probe1()
480 edac_dbg(0, "size: 0x%x, rank: %d, width: %d\n", in ie31200_probe1()
493 for (i = 0; i < IE31200_DIMMS_PER_CHANNEL; i++) { in ie31200_probe1()
494 for (j = 0; j < IE31200_CHANNELS; j++) { in ie31200_probe1()
499 if (nr_pages == 0) in ie31200_probe1()
504 dimm = edac_get_dimm(mci, (i * 2) + 1, j, 0); in ie31200_probe1()
506 edac_dbg(0, "set nr pages: 0x%lx\n", nr_pages); in ie31200_probe1()
515 dimm = edac_get_dimm(mci, i * 2, j, 0); in ie31200_probe1()
517 edac_dbg(0, "set nr pages: 0x%lx\n", nr_pages); in ie31200_probe1()
538 return 0; in ie31200_probe1()
554 edac_dbg(0, "MC:\n"); in ie31200_init_one()
555 if (pci_enable_device(pdev) < 0) in ie31200_init_one()
558 if (rc == 0 && !mci_pdev) in ie31200_init_one()
569 edac_dbg(0, "\n"); in ie31200_remove_one()
581 { PCI_VEND_DEV(INTEL, IE31200_HB_1), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
582 { PCI_VEND_DEV(INTEL, IE31200_HB_2), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
583 { PCI_VEND_DEV(INTEL, IE31200_HB_3), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
584 { PCI_VEND_DEV(INTEL, IE31200_HB_4), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
585 { PCI_VEND_DEV(INTEL, IE31200_HB_5), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
586 { PCI_VEND_DEV(INTEL, IE31200_HB_6), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
587 { PCI_VEND_DEV(INTEL, IE31200_HB_7), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
588 { PCI_VEND_DEV(INTEL, IE31200_HB_8), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
589 { PCI_VEND_DEV(INTEL, IE31200_HB_9), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
590 { PCI_VEND_DEV(INTEL, IE31200_HB_10), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
591 { PCI_VEND_DEV(INTEL, IE31200_HB_11), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
592 { PCI_VEND_DEV(INTEL, IE31200_HB_12), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
593 { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_1), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
594 { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_2), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
595 { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_3), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
596 { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_4), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
597 { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_5), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
598 { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_6), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
599 { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_7), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
600 { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_8), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
601 { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_9), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
602 { PCI_VEND_DEV(INTEL, IE31200_HB_CFL_10), PCI_ANY_ID, PCI_ANY_ID, 0, 0, IE31200 },
603 { 0, } /* 0 terminated list. */
623 if (pci_rc < 0) in ie31200_init()
627 ie31200_registered = 0; in ie31200_init()
628 for (i = 0; ie31200_pci_tbl[i].vendor != 0; i++) { in ie31200_init()
637 edac_dbg(0, "ie31200 pci_get_device fail\n"); in ie31200_init()
643 if (pci_rc < 0) { in ie31200_init()
644 edac_dbg(0, "ie31200 init fail\n"); in ie31200_init()
650 return 0; in ie31200_init()