[U-Boot] [PATCH] board: topic: Detect RAM size at boot
Mike Looijmans
mike.looijmans at topic.nl
Mon Dec 12 14:19:54 CET 2016
On 12-12-16 08:46, Michal Simek wrote:
> Hi Mike,
>
> On 22.11.2016 12:00, Michal Simek wrote:
>> On 21.11.2016 09:30, Mike Looijmans wrote:
>>> Miami boards can have memory sizes of 256M, 512M or 1GB. To prevent requiring
>>> separate bootloaders for each variant, just detect the RAM size at boot time
>>> instead of relying on the devicetree information.
>>>
>>> Signed-off-by: Mike Looijmans <mike.looijmans at topic.nl>
>>> ---
>>> board/topic/zynq/board.c | 39 +++++++++++++++++++++++++++++++++++++++
>>> configs/topic_miami_defconfig | 1 +
>>> configs/topic_miamiplus_defconfig | 1 +
>>> 3 files changed, 41 insertions(+)
>>>
>>> diff --git a/board/topic/zynq/board.c b/board/topic/zynq/board.c
>>> index a95c9d1..8a5765e 100644
>>> --- a/board/topic/zynq/board.c
>>> +++ b/board/topic/zynq/board.c
>>> @@ -1 +1,40 @@
>>> +/*
>>> + * (C) Copyright 2016 Topic Embedded Products
>>> + *
>>> + * SPDX-License-Identifier: GPL-2.0+
>>> + */
>>> +
>>> +/*
>>> + * Miami boards can have memory sizes of 256M, 512M or 1GB. To prevent needing
>>> + * separate bootloaders for each variant, just detect the RAM size at boot time
>>> + * instead of relying on the devicetree information.
>>> + */
>>> +#define CONFIG_SYS_SDRAM_BASE 0
>>> +#define CONFIG_SYS_SDRAM_SIZE topic_get_sdram_size()
>>
>> I am not happy with this but I see where you go.
>>
>>> +#define CONFIG_SYS_SDRAM_SIZE_MAX 0x40000000u
>>> +
>>> +static unsigned int topic_get_sdram_size(void);
>>> +
>>> #include "../../xilinx/zynq/board.c"
>>> +
>>> +#include <fdt_support.h>
>>> +
>>> +int ft_board_setup(void *blob, bd_t *bd)
>>> +{
>>> + fdt_fixup_memory(blob, (u64)CONFIG_SYS_SDRAM_BASE, (u64)gd->ram_size);
>>> +
>>> + return 0;
>>> +}
>>
>> This action is taken at arch_fixup_fdt(). Can you please confirm that
>> this is really needed? And it is not done there? That you don't
>> duplicate stuff here.
>
> Did you check this?
Well, if omitted, the linux devicetree doesn't get updated with the proper
memory size, and the system malfunctions if the size differs.
Apparently, the internal u-boot DT gets updated by the other routines, but
this routine is required to patch the devicetree as it will be transferred to
Linux.
Kind regards,
Mike Looijmans
System Expert
TOPIC Products
Materiaalweg 4, NL-5681 RJ Best
Postbus 440, NL-5680 AK Best
Telefoon: +31 (0) 499 33 69 79
E-mail: mike.looijmans at topicproducts.com
Website: www.topicproducts.com
Please consider the environment before printing this e-mail
More information about the U-Boot
mailing list