Hi Jagan,

can you please apply this patch to the sunxi tree, so that it
doesn't get lost.

thank you,
        Ondrej

On Mon, Jul 29, 2019 at 01:39:42AM +0200, megous hlavni wrote:
> From: Ondrej Jirman <[email protected]>
> 
> Orange Pi 3 has 2 GiB of DRAM, that sometime get misdetected
> as 4 GiB, due to false negative result from mctl_mem_matches()
> when detecting number of column address bits. This leads to
> u-boot detecting more address bits than there are and the
> boot process hangs shortly after.
> 
> In mctl_mem_matches() we need to wait for each write to finish,
> separately. Without this, the check is not reliable for some
> unknown reason, probably having to do with unpredictable memory
> access ordering.
> 
> Patch was made with help from André Przywara, who noticed that
> my original idea about detection failing due to read-back from
> cache without involving DRAM was false, because data cache is
> still of at the time of the DRAM size autodetection.
> 
> Signed-off-by: Ondrej Jirman <[email protected]>
> Cc: André Przywara <[email protected]>
> ---
>  arch/arm/mach-sunxi/dram_helpers.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/arm/mach-sunxi/dram_helpers.c 
> b/arch/arm/mach-sunxi/dram_helpers.c
> index 239ab421a8..6dba448638 100644
> --- a/arch/arm/mach-sunxi/dram_helpers.c
> +++ b/arch/arm/mach-sunxi/dram_helpers.c
> @@ -30,6 +30,7 @@ bool mctl_mem_matches(u32 offset)
>  {
>       /* Try to write different values to RAM at two addresses */
>       writel(0, CONFIG_SYS_SDRAM_BASE);
> +     dsb();
>       writel(0xaa55aa55, (ulong)CONFIG_SYS_SDRAM_BASE + offset);
>       dsb();
>       /* Check if the same value is actually observed when reading back */
> -- 
> 2.22.0
> 
_______________________________________________
U-Boot mailing list
[email protected]
https://lists.denx.de/listinfo/u-boot

Reply via email to