[U-Boot] spd_dram.c for mpc83xx broken
Joakim Tjernlund
Joakim.Tjernlund at transmode.se
Wed Feb 18 09:23:43 CET 2009
Kim Phillips <kim.phillips at freescale.com> wrote on 18/02/2009 02:35:50:
>
> On Tue, 17 Feb 2009 20:25:03 +0100
> Joakim Tjernlund <Joakim.Tjernlund at transmode.se> wrote:
>
> > The spd code for mpc83xx is so broken it isn't funny. This is what I
had
> > to do to get my
> > Micron MT47H64M16-3. This isn't against current u-boot, but it is a
start.
>
> well it applies, but it also nuked the first board I tried it on. For
> any new ddr work on 83xx, I'd suggest starting with porting the new
> common mpc8xxx ddr code.
Won't be upgrading to latest u-boot any time soon, too much code churn.
There are a few chip specific bits in there so you probably need
to revert a few chunks. Looked at the new code and it still looks
wrong in a few places. Try with only these hunks applied:
ddr->cs_config[0] = ( 1 << 31
- | (odt_rd_cfg << 20)
- | (odt_wr_cfg << 16)
+ | (odt_rd_cfg << 22)
+ | (odt_wr_cfg << 18)
| (spd.nrow_addr - 12) << 8
| (spd.ncol_addr - 8) );
----
twr_clk = picos_to_clk(spd.twr * 250);
twtr_clk = picos_to_clk(spd.twtr * 250);
+ if (twtr_clk < 2)
+ twtr_clk = 2; /* Must be at least 2 */
----
/* Convert SPD value from quarter nanos to picos. */
trtp_clk = picos_to_clk(spd.trtp * 250);
-
+ trtp_clk += add_lat;
-----
ddr->sdram_mode =
(0
+ | (1 << (16 + 14)) /* MRS 01 */
| (1 << (16 + 10)) /* DQS
Differential disable */
More information about the U-Boot
mailing list