[PATCH v2] Add support for Baltos systems

Sascha Hauer s.hauer at pengutronix.de
Mon Jun 13 01:55:02 PDT 2016


On Mon, Jun 13, 2016 at 09:44:24AM +0200, Yegor Yefremov wrote:
> On Wed, Jun 1, 2016 at 9:08 AM, Sascha Hauer <s.hauer at pengutronix.de> wrote:
> > On Mon, May 30, 2016 at 04:43:50PM +0200, yegorslists at googlemail.com wrote:
> >> From: Yegor Yefremov <yegorslists at googlemail.com>
> >>
> >> OnRISC Baltos devices are based on a am335x SoC and can be booted
> >> either from MMC or NAND.
> >>
> >> Signed-off-by: Yegor Yefremov <yegorslists at googlemail.com>
> >> ---
> >> Changes:
> >>         v2: - remove typedef
> >>             - rework invalid EEPROM content handling
> >>             - add mmc0 as boot device for MMC boot source
> >>
> >> +static int baltos_mem_init(void)
> >> +{
> >> +     uint32_t sdram_size;
> >> +
> >> +     if (!of_machine_is_compatible("vscom,onrisc"))
> >> +             return 0;
> >> +
> >> +     sdram_size = SZ_256M;
> >> +
> >> +     arm_add_mem_device("ram0", 0x80000000, sdram_size);
> >> +
> >> +     return 0;
> >> +}
> >> +mem_initcall(baltos_mem_init);
> >
> > This shouldn't be necessary. See arch/arm/mach-omap/am33xx_scrm.c, here
> > the correct amount of memory should be registered.
> 
> ACK
> 
> >> +ENTRY_FUNCTION(start_am33xx_baltos_sdram, r0, r1, r2)
> >> +{
> >> +     uint32_t sdram_size;
> >> +     void *fdt;
> >> +
> >> +     sdram_size = SZ_256M;
> >> +     fdt = __dtb_am335x_baltos_minimal_start;
> >> +
> >> +     fdt -= get_runtime_offset();
> >> +
> >> +     barebox_arm_entry(0x80000000, sdram_size, fdt);
> >
> > am335x_barebox_entry() calculates the SDRAM size automatically for you.
> >
> > Doing this has the advantage that you can configure your SDRAM as you
> > like without having to bother that all other locations where the SDRAM
> > size is needed are correct.
> 
> This is not working for me. As soon as barebox.bin starts I can see only
> 
> barebox 2016.05.0 #3 Mon Jun 13 09:32:01 CEST 2016
> 
> Board: OnRISC Baltos
> 
> I don't know why, but am335x_sdram_size() always finds 0x20000000 i.e.
> 512MB on both 256MB modules and 512MB.

Could it be that you use the 512MB settings for both variants and in the
256MB case you simply only use half of it? In this case
am335x_sdram_size() cannot work properly. You either have to fix the
settings in the controller after you detected that you have 256MB or you
have to stick to the current static setup. There's also get_ram_size()
that tests the given address space for mirrors and returns the real ram
size.

> I understand only main railway station :-)

;)

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list