20 #if CONFIG(DEBUG_RAM_SETUP)
21 #define PRINT_DEBUG(x...) printk(BIOS_DEBUG, x)
22 #define DUMPNORTH() dump_pci_device(NB)
24 #define PRINT_DEBUG(x...)
29 #define RAM_COMMAND_NORMAL 0x0
30 #define RAM_COMMAND_NOP 0x1
31 #define RAM_COMMAND_PRECHARGE 0x2
32 #define RAM_COMMAND_MRS 0x3
33 #define RAM_COMMAND_CBR 0x4
279 #if CONFIG(SDRAMPWR_4DIMM)
353 u8 dimm_start, dimm_end;
361 reg16 |= (
u16) (command << 5);
381 if ((i >= 0 && i <= 3) && caslatency == 3)
383 if ((i >= 4 && i <= 7) && caslatency == 3)
384 addr_offset = 0x1e28;
385 if ((i >= 0 && i <= 3) && caslatency == 2)
387 if ((i >= 4 && i <= 7) && caslatency == 2)
388 addr_offset = 0x1ea8;
393 addr = (
void *)((dimm_start * 8 * 1024 * 1024) + addr_offset);
394 if (dimm_end > dimm_start) {
399 dimm_start = dimm_end;
414 unsigned int i, reg, drb;
415 uint8_t mbsc0, mbfs0, mbfs1, mbfs2;
425 for (drb = 0, i =
DRB0; i <=
DRB7; i++) {
437 if (
CONFIG(SDRAMPWR_4DIMM)) {
531 if ((dimm03 + dimm47) > 4) {
603 if ((dimm03 + dimm47) > 4) {
633 PRINT_DEBUG(
" Enabling refresh (DRAMC = 0x%02x) for DIMM %02x\n", reg, i);
653 for (i = 0; i < max; i += 2)
665 int i, module_density, dimm_banks;
672 for (i = 512; i >= 0; i >>= 1) {
673 if ((module_density & i) == i) {
683 if (dimm_banks > 1) {
685 if (module_density != i) {
691 for (i >>= 1; i >= 0; i >>= 1) {
692 if (module_density == (sz.
side1 | i)) {
714 if (sz.
side1 > 128) {
715 PRINT_DEBUG(
"Side1 was %dMB but only 128MB will be used.\n",
719 if (sz.
side2 > 128) {
720 PRINT_DEBUG(
"Side2 was %dMB but only 128MB will be used.\n",
834 }
else if (dra == 4) {
836 }
else if (dra == 8) {
838 }
else if (dra >= 16) {
853 }
else if (
value == 2) {
856 }
else if (dra == 4) {
858 }
else if (dra == 8) {
860 }
else if (dra >= 16) {
885 if ((sz.
side1 < 8)) {
887 "are not supported on this NB.\n");
892 drb += (sz.
side1 / 8);
900 drb |= (drb + (sz.
side2 / 8)) << 8;
916 rps |= (dra & 0x0f) << (i * 4);
921 PRINT_DEBUG(
"PGPOL[BPR] has been set to 0x%02x\n", bpr);
929 PRINT_DEBUG(
"NBXECC[31:24] has been set to 0x%02x\n", nbxecc);
976 for (i = 0; i < 8; i++) {
997 PRINT_DEBUG(
"Northbridge following SDRAM init:\n");
static uint32_t read32(const void *addr)
enum fch_io_device device
#define printk(level,...)
void __noreturn die(const char *fmt,...)
#define dump_spd_registers()
static __always_inline u16 pci_read_config16(const struct device *dev, u16 reg)
static __always_inline u8 pci_read_config8(const struct device *dev, u16 reg)
static __always_inline void pci_write_config16(const struct device *dev, u16 reg, u16 val)
static __always_inline void pci_write_config8(const struct device *dev, u16 reg, u8 val)
static int smbus_read_byte(struct device *const dev, u8 addr)
#define SPD_NUM_BANKS_PER_SDRAM
#define SPD_ERROR_CHECKING_SDRAM_WIDTH
#define SPD_NUM_DIMM_BANKS
#define SPD_MODULE_ATTRIBUTES
#define MODULE_REGISTERED
#define SPD_DIMM_CONFIG_TYPE
#define SPD_DENSITY_OF_EACH_ROW_ON_MODULE
#define SPD_MODULE_DATA_WIDTH_LSB
void timestamp_add_now(enum timestamp_id id)
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
void sdram_initialize(void)
static struct dimm_size spd_get_dimm_size(unsigned int device)
static const u8 register_values[]
static void sdram_set_registers(void)
static void sdram_enable(void)
static void set_dram_row_attributes(void)
static void sdram_set_spd_registers(void)
static void do_ram_command(u32 command)
Send the specified RAM command to all DIMMs.
void __weak enable_spd(void)
static void set_dram_buffer_strength(void)
#define PRINT_DEBUG(x...)
#define RAM_COMMAND_NORMAL
void __weak disable_spd(void)
static void spd_enable_refresh(void)
#define RAM_COMMAND_PRECHARGE
static const uint32_t refresh_rate_map[]
const struct smm_save_state_ops *legacy_ops __weak