On Mon, Jun 13, 2016 at 10:56 AM, Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx> wrote: > On Mon, Jun 13, 2016 at 10:55 AM, Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxx> wrote: >>> > On Mon, May 30, 2016 at 04:43:50PM +0200, yegorslists@xxxxxxxxxxxxxx wrote: >>> >> From: Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx> >>> >> >>> >> OnRISC Baltos devices are based on a am335x SoC and can be booted >>> >> either from MMC or NAND. >>> >> >>> >> Signed-off-by: Yegor Yefremov <yegorslists@xxxxxxxxxxxxxx> >>> >> --- >>> >> 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 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox