[U-Boot] How do ARM platform initialize DDR?

Sharma Bhupesh-B45370
2013-09-18T04:23:48Z

Adding Vipin to the thread as he has better knowledge on this than me.
Vipin can you please add your comments here as well..

As far as I can remember for the ARM based SPEAr SoCs on which we worked in the past:

- At the moment the DDR initialization code for various ARM SoCs in u-boot is scattered
across ARCH directories:

See examples of SPEAr (based on ARM926ejs) [1] and OMAP4 (ARmv7) [2] DDR drivers.

- There is no unified driver model in place for DDR driver similar to what is available for eth/serial
drivers and we need to formulate a DDR model (something using the suggested framework in [3]) so
that the same DDR driver can be shared across PPC and ARM SoCs.

References:

[1] SPEAr DDR drivers for Denali MPMC -

http://git.denx.de/?p=u-boot.git;a=blob;f=arch/arm/cpu/arm926ejs/spear/start.S;h=7dbd5dbf99e8c6e216cc50e789ec7f103e0ecaea;hb=HEAD#l105

http://git.denx.de/?p=u-boot.git;a=blob;f=arch/arm/cpu/arm926ejs/spear/spl.c;h=b550404352b8c04f2e5d5d71df41c750c07ab1a8;hb=HEAD#l69

http://git.denx.de/?p=u-boot.git;a=blob;f=arch/arm/cpu/arm926ejs/spear/spr600_mt47h128m8_3_266_cl5_async.c;h=cc45ab7016b1658eceb545c959bb1b59f33c06c7;hb=HEAD#l12

[2] OMAP4 Elpida DDR drivers -

http://git.denx.de/?p=u-boot.git;a=blob;f=arch/arm/cpu/armv7/omap4/sdram_elpida.c;h=67a79261f778c6afab3d0e3870eac1e18cff8411;hb=HEAD

http://git.denx.de/?p=u-boot.git;a=blob;f=arch/arm/cpu/armv7/omap4/emif.c;h=e89032be75dc916891ccfd70c66e19c4b7b38839;hb=HEAD

[3] UDM-cores.txt -

http://git.denx.de/?p=u-boot.git;a=blob;f=doc/driver-model/UDM-cores.txt;h=4e1318871a8d9f7f6f329800d6394158e42f85dd;hb=HEAD

Regards,
Bhupesh

> -----Original Message-----
> From: u-boot-bounces at lists.denx.de [mailto:u-boot-bounces at lists.denx.de]
> On Behalf Of MJ embd
> Sent: Tuesday, September 17, 2013 10:37 PM
> To: sun york-R58495
> Cc: u-boot at lists.denx.de
> Subject: Re: [U-Boot] How do ARM platform initialize DDR?
>
> yes, I am using uboot for arndale board.
> The code is written by samsung only and it is not static.
>
> The best option would be to have an eth / serial driver kind of arch
> which all soc vendors can share. But ddr is scattered, in absence of
> that, your point seems valid for fsl specific.
>
> -mj
>
> On 9/17/13, York Sun <yorksun@freescale.com> wrote:
> > Dear MJ,
> >
> > Thanks for your reply.
> >
> > I don't see the file in my copy. Probably it is not merged yet?
> > Anyway, you just confirmed what I found so far. Do you use static
> > setting in dmc_init_ddr3.c? I mean does it adapt to different DDR
> > speeds and modules (if applicable)?
> >
> > In my mind, I am thinking to restructure arch/powerpc/cpu/mpc8xxx/ddr/
> > to driver/ddr/fsl/ so the same driver can be shared as far as the DDR
> > IP is the same (or similar).
> >
> > York
> >
> >
> > On 09/17/2013 09:34 AM, MJ embd wrote:
> >> Hi York,
> >>
> >> There is no generic driver. AFAIK. Having worked on both mpc85xx and
> >> ARM
> >>
> >> I can tell you about samsung 5250. There are 2 uboots (one spl and
> >> other main).
> >> In case of sd/mmc boot the internal rom copies the spl uboot to iRAM
> >> and the spl boot loader initialises the DDR3.
> >>
> >> you can check for board/samsung/smdk5250/dmc_init_ddr3.c
> >>
> >> -Regards
> >> mj
> >>
> >> On 9/17/13, York Sun <yorksun@freescale.com> wrote:
> >>> Albert,
> >>>
> >>> Pardon me if this is a dumb question. I have been working on powerpc
> >>> platforms in the past. Now we (the developers I work with) are
> >>> exploring ARM cores. I am searching how memory is initialized and
> >>> found different solutions. Some platforms have memory ready before
> >>> u-boot even starts, some simply write to a set of registers. I
> >>> understand many platforms don't share the IP of DDR controller. I am
> >>> wondering if there is generic DDR driver used by many ARM platforms,
> >>> like the one we have for powerpc/mpc85xx SoCs.
> >>>
> >>> Regards,
> >>>
> >>> York
> >>>
> >>> _______________________________________________
> >>> U-Boot mailing list
> >>> U-Boot at lists.denx.de
> >>> http://lists.denx.de/mailman/listinfo/u-boot
> >>>
> >>
> >>
> >
> >
> >
>
>
> --
> -mj
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot