nb/intel/sandybridge/raminit: Factor out code into toggle_io_reset
Found while doing code review. Use a function to toggle IO reset signal. Change-Id: I4cb0885ed9be763fbc4069e4d015a36a7183c823 Signed-off-by: Patrick Rudolph <siro@das-labor.org> Reviewed-on: http://review.coreboot.org/11916 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Nicolas Reinecke <nr@das-labor.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
parent
b15a0d0a6f
commit
9b51568897
|
@ -220,6 +220,15 @@ static void sfence(void)
|
||||||
asm volatile ("sfence");
|
asm volatile ("sfence");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void toggle_io_reset(void) {
|
||||||
|
/* toggle IO reset bit */
|
||||||
|
u32 r32 = read32(DEFAULT_MCHBAR + 0x5030);
|
||||||
|
write32(DEFAULT_MCHBAR + 0x5030, r32 | 0x20);
|
||||||
|
udelay(1);
|
||||||
|
write32(DEFAULT_MCHBAR + 0x5030, r32 & ~0x20);
|
||||||
|
udelay(1);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dump in the log memory controller configuration as read from the memory
|
* Dump in the log memory controller configuration as read from the memory
|
||||||
* controller registers.
|
* controller registers.
|
||||||
|
@ -1914,7 +1923,6 @@ static void read_training(ramctr_timing * ctrl)
|
||||||
int channel, slotrank, lane;
|
int channel, slotrank, lane;
|
||||||
|
|
||||||
FOR_ALL_CHANNELS FOR_ALL_POPULATED_RANKS {
|
FOR_ALL_CHANNELS FOR_ALL_POPULATED_RANKS {
|
||||||
u32 r32;
|
|
||||||
int all_high, some_high;
|
int all_high, some_high;
|
||||||
int upperA[NUM_LANES];
|
int upperA[NUM_LANES];
|
||||||
struct timA_minmax mnmx;
|
struct timA_minmax mnmx;
|
||||||
|
@ -1997,12 +2005,7 @@ static void read_training(ramctr_timing * ctrl)
|
||||||
|
|
||||||
write32(DEFAULT_MCHBAR + 0x3400, 0);
|
write32(DEFAULT_MCHBAR + 0x3400, 0);
|
||||||
|
|
||||||
/* toggle IO reset bit */
|
toggle_io_reset();
|
||||||
r32 = read32(DEFAULT_MCHBAR + 0x5030);
|
|
||||||
write32(DEFAULT_MCHBAR + 0x5030, r32 | 0x20);
|
|
||||||
udelay(1);
|
|
||||||
write32(DEFAULT_MCHBAR + 0x5030, r32 & ~0x20);
|
|
||||||
udelay(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FOR_ALL_POPULATED_CHANNELS {
|
FOR_ALL_POPULATED_CHANNELS {
|
||||||
|
@ -2536,7 +2539,6 @@ static void write_op(ramctr_timing * ctrl, int channel)
|
||||||
static void write_training(ramctr_timing * ctrl)
|
static void write_training(ramctr_timing * ctrl)
|
||||||
{
|
{
|
||||||
int channel, slotrank, lane;
|
int channel, slotrank, lane;
|
||||||
u32 r32;
|
|
||||||
|
|
||||||
FOR_ALL_POPULATED_CHANNELS
|
FOR_ALL_POPULATED_CHANNELS
|
||||||
write32(DEFAULT_MCHBAR + 0x4008 + 0x400 * channel,
|
write32(DEFAULT_MCHBAR + 0x4008 + 0x400 * channel,
|
||||||
|
@ -2566,12 +2568,7 @@ static void write_training(ramctr_timing * ctrl)
|
||||||
|
|
||||||
write32(DEFAULT_MCHBAR + 0x3400, 0x108052);
|
write32(DEFAULT_MCHBAR + 0x3400, 0x108052);
|
||||||
|
|
||||||
/* toggle IO reset bit */
|
toggle_io_reset();
|
||||||
r32 = read32(DEFAULT_MCHBAR + 0x5030);
|
|
||||||
write32(DEFAULT_MCHBAR + 0x5030, r32 | 0x20);
|
|
||||||
udelay(1);
|
|
||||||
write32(DEFAULT_MCHBAR + 0x5030, r32 & ~0x20);
|
|
||||||
udelay(1);
|
|
||||||
|
|
||||||
/* set any valid value for timB, it gets corrected later */
|
/* set any valid value for timB, it gets corrected later */
|
||||||
FOR_ALL_CHANNELS FOR_ALL_POPULATED_RANKS
|
FOR_ALL_CHANNELS FOR_ALL_POPULATED_RANKS
|
||||||
|
@ -2607,12 +2604,7 @@ static void write_training(ramctr_timing * ctrl)
|
||||||
wait_428c(channel);
|
wait_428c(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* toggle IO reset bit */
|
toggle_io_reset();
|
||||||
r32 = read32(DEFAULT_MCHBAR + 0x5030);
|
|
||||||
write32(DEFAULT_MCHBAR + 0x5030, r32 | 0x20);
|
|
||||||
udelay(1);
|
|
||||||
write32(DEFAULT_MCHBAR + 0x5030, r32 & ~0x20);
|
|
||||||
udelay(1);
|
|
||||||
|
|
||||||
printram("CPE\n");
|
printram("CPE\n");
|
||||||
precharge(ctrl);
|
precharge(ctrl);
|
||||||
|
@ -2760,7 +2752,6 @@ static void fill_pattern5(ramctr_timing * ctrl, int channel, int patno)
|
||||||
static void reprogram_320c(ramctr_timing * ctrl)
|
static void reprogram_320c(ramctr_timing * ctrl)
|
||||||
{
|
{
|
||||||
int channel, slotrank;
|
int channel, slotrank;
|
||||||
u32 r32;
|
|
||||||
|
|
||||||
FOR_ALL_POPULATED_CHANNELS {
|
FOR_ALL_POPULATED_CHANNELS {
|
||||||
wait_428c(channel);
|
wait_428c(channel);
|
||||||
|
@ -2810,12 +2801,7 @@ static void reprogram_320c(ramctr_timing * ctrl)
|
||||||
/* mrs commands. */
|
/* mrs commands. */
|
||||||
dram_mrscommands(ctrl);
|
dram_mrscommands(ctrl);
|
||||||
|
|
||||||
/* toggle IO reset bit */
|
toggle_io_reset();
|
||||||
r32 = read32(DEFAULT_MCHBAR + 0x5030);
|
|
||||||
write32(DEFAULT_MCHBAR + 0x5030, r32 | 0x20);
|
|
||||||
udelay(1);
|
|
||||||
write32(DEFAULT_MCHBAR + 0x5030, r32 & ~0x20);
|
|
||||||
udelay(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MIN_C320C_LEN 13
|
#define MIN_C320C_LEN 13
|
||||||
|
@ -3001,16 +2987,10 @@ static void discover_edges(ramctr_timing * ctrl)
|
||||||
int falling_edges[NUM_CHANNELS][NUM_SLOTRANKS][NUM_LANES];
|
int falling_edges[NUM_CHANNELS][NUM_SLOTRANKS][NUM_LANES];
|
||||||
int rising_edges[NUM_CHANNELS][NUM_SLOTRANKS][NUM_LANES];
|
int rising_edges[NUM_CHANNELS][NUM_SLOTRANKS][NUM_LANES];
|
||||||
int channel, slotrank, lane;
|
int channel, slotrank, lane;
|
||||||
u32 r32;
|
|
||||||
|
|
||||||
write32(DEFAULT_MCHBAR + 0x3400, 0);
|
write32(DEFAULT_MCHBAR + 0x3400, 0);
|
||||||
|
|
||||||
/* toggle IO reset bit */
|
toggle_io_reset();
|
||||||
r32 = read32(DEFAULT_MCHBAR + 0x5030);
|
|
||||||
write32(DEFAULT_MCHBAR + 0x5030, r32 | 0x20);
|
|
||||||
udelay(1);
|
|
||||||
write32(DEFAULT_MCHBAR + 0x5030, r32 & ~0x20);
|
|
||||||
udelay(1);
|
|
||||||
|
|
||||||
FOR_ALL_POPULATED_CHANNELS FOR_ALL_LANES {
|
FOR_ALL_POPULATED_CHANNELS FOR_ALL_LANES {
|
||||||
write32(DEFAULT_MCHBAR + 4 * lane +
|
write32(DEFAULT_MCHBAR + 4 * lane +
|
||||||
|
|
Loading…
Reference in New Issue