[PATCH v2] Add support for Baltos systems

Yegor Yefremov yegorslists at googlemail.com
Mon Jun 13 02:22:30 PDT 2016


On Mon, Jun 13, 2016 at 10:56 AM, Yegor Yefremov
<yegorslists at googlemail.com> wrote:
> On Mon, Jun 13, 2016 at 10:55 AM, Sascha Hauer <s.hauer at pengutronix.de> wrote:
>> 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.
>
> OK. Then I'll remove mem_init from board.c and stick to the static setup.
>
> Yegor

I've checked once more. I do need mem_initcall(baltos_mem_init),
because without it, I'll get 512MB in Linux for both modules. So could
you apply the patch as is? I'll submit a followup patch, when I sort
the things out. Some customers are waiting for barebox support in
order to work with i2c-gpio extender directly from bootloader.

Thanks.

Yegor



More information about the barebox mailing list