hw_err:
sz.side1 = 0;
sz.side2 = 0;
- out:
+out:
print_debug("dimm ");
print_debug_hex8(device);
print_debug(" size = ");
write32(BAR+DCALADDR, 0x0b840001);
write32(BAR+DCALCSR, 0x80000003 | ((i+1)<<21));
- data32 = read32(BAR+DCALCSR);
- while (data32 & 0x80000000)
- data32 = read32(BAR+DCALCSR);
+ do data32 = read32(BAR+DCALCSR);
+ while (data32 & 0x80000000);
}
}
udelay(16);
write32(BAR+DCALCSR, (0x00000000 | ((cs+1)<<21)));
write32(BAR+DCALCSR, (0x80000000 | ((cs+1)<<21)));
- data32 = read32(BAR+DCALCSR);
- while (data32 & 0x80000000)
- data32 = read32(BAR+DCALCSR);
+ do data32 = read32(BAR+DCALCSR);
+ while (data32 & 0x80000000);
}
/* Apply NOP */
print_debug_hex8(cs);
print_debug("\n");
write32(BAR + DCALCSR, (0x80000000 | ((cs+1)<<21)));
- data32 = read32(BAR+DCALCSR);
- while (data32 & 0x80000000)
- data32 = read32(BAR+DCALCSR);
+ do data32 = read32(BAR+DCALCSR);
+ while (data32 & 0x80000000);
}
/* Precharge all banks */
print_debug("\n");
write32(BAR+DCALADDR, 0x04000000);
write32(BAR+DCALCSR, (0x80000002 | ((cs+1)<<21)));
- data32 = read32(BAR+DCALCSR);
- while (data32 & 0x80000000)
- data32 = read32(BAR+DCALCSR);
+ do data32 = read32(BAR+DCALCSR);
+ while (data32 & 0x80000000);
}
/* EMRS: Enable DLLs, set OCD calibration mode to default */
print_debug("\n");
write32(BAR+DCALADDR, 0x0b840001);
write32(BAR+DCALCSR, (0x80000003 | ((cs+1)<<21)));
- data32 = read32(BAR+DCALCSR);
- while (data32 & 0x80000000)
- data32 = read32(BAR+DCALCSR);
+ do data32 = read32(BAR+DCALCSR);
+ while (data32 & 0x80000000);
}
/* MRS: Reset DLLs */
udelay(16);
print_debug("\n");
write32(BAR+DCALADDR, mode_reg);
write32(BAR+DCALCSR, (0x80000003 | ((cs+1)<<21)));
- data32 = read32(BAR+DCALCSR);
- while (data32 & 0x80000000)
- data32 = read32(BAR+DCALCSR);
+ do data32 = read32(BAR+DCALCSR);
+ while (data32 & 0x80000000);
}
/* Precharge all banks */
print_debug("\n");
write32(BAR+DCALADDR, 0x04000000);
write32(BAR+DCALCSR, (0x80000002 | ((cs+1)<<21)));
- data32 = read32(BAR+DCALCSR);
- while (data32 & 0x80000000)
- data32 = read32(BAR+DCALCSR);
+ do data32 = read32(BAR+DCALCSR);
+ while (data32 & 0x80000000);
}
/* Do 2 refreshes */
print_debug_hex8(cs);
print_debug("\n");
write32(BAR+DCALCSR, (0x80000001 | ((cs+1)<<21)));
- data32 = read32(BAR+DCALCSR);
- while (data32 & 0x80000000)
- data32 = read32(BAR+DCALCSR);
+ do data32 = read32(BAR+DCALCSR);
+ while (data32 & 0x80000000);
}
}
print_debug("\n");
write32(BAR+DCALADDR, (mode_reg & ~(1<<24)));
write32(BAR+DCALCSR, (0x80000003 | ((cs+1)<<21)));
- data32 = read32(BAR+DCALCSR);
- while (data32 & 0x80000000)
- data32 = read32(BAR+DCALCSR);
+ do data32 = read32(BAR+DCALCSR);
+ while (data32 & 0x80000000);
}
/* EMRS: Enable DLLs */
print_debug("\n");
write32(BAR+DCALADDR, 0x0b840001);
write32(BAR+DCALCSR, (0x80000003 | ((cs+1)<<21)));
- data32 = read32(BAR+DCALCSR);
- while (data32 & 0x80000000)
- data32 = read32(BAR+DCALCSR);
+ do data32 = read32(BAR+DCALCSR);
+ while (data32 & 0x80000000);
}
udelay(16);
print_debug_hex8(cs);
print_debug("\n");
write32(BAR+DCALCSR, (0x8000000c | ((cs+1)<<21)));
- data32 = read32(BAR+DCALCSR);
- while (data32 & 0x80000000)
- data32 = read32(BAR+DCALCSR);
+ do data32 = read32(BAR+DCALCSR);
+ while (data32 & 0x80000000);
}
dump_dcal_regs();
print_debug_hex8(cs);
print_debug("\n");
write32(BAR+MBCSR, 0xa00000f0 | ((cs+1)<<20) | (0<<16));
- data32 = read32(BAR+MBCSR);
- while (data32 & 0x80000000)
- data32 = read32(BAR+MBCSR);
+ do data32 = read32(BAR+MBCSR);
+ while (data32 & 0x80000000);
if (data32 & 0x40000000)
print_debug("failed!\n");
}