[PATCH v3 1/2] sunxi: reorganize mctl_mem_matches_* functions
Andre Przywara
andre.przywara at arm.com
Tue Mar 5 02:21:33 CET 2024
On Thu, 28 Dec 2023 00:28:42 +0300
Andrey Skvortsov <andrej.skvortzov at gmail.com> wrote:
Hi,
> mctl_mem_matches and mctl_mem_matches_base identical functions. To
> avoid code duplication move them to dram_helpers and make
> mctl_mem_matches use generic mctl_mem_matches_base.
>
> Signed-off-by: Andrey Skvortsov <andrej.skvortzov at gmail.com>
thanks for the changes, that looks good now!
Reviewed-by: Andre Przywara <andre.przywara at arm.com>
Merged to sunxi/master.
Cheers,
Andre
> ---
> arch/arm/include/asm/arch-sunxi/dram.h | 1 +
> arch/arm/mach-sunxi/dram_helpers.c | 20 ++++++++++++++------
> arch/arm/mach-sunxi/dram_sunxi_dw.c | 13 -------------
> 3 files changed, 15 insertions(+), 19 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-sunxi/dram.h b/arch/arm/include/asm/arch-sunxi/dram.h
> index 682daae6b1..9d21b49241 100644
> --- a/arch/arm/include/asm/arch-sunxi/dram.h
> +++ b/arch/arm/include/asm/arch-sunxi/dram.h
> @@ -40,5 +40,6 @@
> unsigned long sunxi_dram_init(void);
> void mctl_await_completion(u32 *reg, u32 mask, u32 val);
> bool mctl_mem_matches(u32 offset);
> +bool mctl_mem_matches_base(u32 offset, ulong base);
>
> #endif /* _SUNXI_DRAM_H */
> diff --git a/arch/arm/mach-sunxi/dram_helpers.c b/arch/arm/mach-sunxi/dram_helpers.c
> index cdf2750f1c..661186b648 100644
> --- a/arch/arm/mach-sunxi/dram_helpers.c
> +++ b/arch/arm/mach-sunxi/dram_helpers.c
> @@ -25,19 +25,27 @@ void mctl_await_completion(u32 *reg, u32 mask, u32 val)
> }
>
> /*
> - * Test if memory at offset offset matches memory at begin of DRAM
> + * Test if memory at offset matches memory at a certain base
> *
> * Note: dsb() is not available on ARMv5 in Thumb mode
> */
> #ifndef CONFIG_MACH_SUNIV
> -bool mctl_mem_matches(u32 offset)
> +bool mctl_mem_matches_base(u32 offset, ulong base)
> {
> /* Try to write different values to RAM at two addresses */
> - writel(0, CFG_SYS_SDRAM_BASE);
> - writel(0xaa55aa55, (ulong)CFG_SYS_SDRAM_BASE + offset);
> + writel(0, base);
> + writel(0xaa55aa55, base + offset);
> dsb();
> /* Check if the same value is actually observed when reading back */
> - return readl(CFG_SYS_SDRAM_BASE) ==
> - readl((ulong)CFG_SYS_SDRAM_BASE + offset);
> + return readl(base) ==
> + readl(base + offset);
> +}
> +
> +/*
> + * Test if memory at offset matches memory at begin of DRAM
> + */
> +bool mctl_mem_matches(u32 offset)
> +{
> + return mctl_mem_matches_base(offset, CFG_SYS_SDRAM_BASE);
> }
> #endif
> diff --git a/arch/arm/mach-sunxi/dram_sunxi_dw.c b/arch/arm/mach-sunxi/dram_sunxi_dw.c
> index 9382d3d0be..2e8dd40b97 100644
> --- a/arch/arm/mach-sunxi/dram_sunxi_dw.c
> +++ b/arch/arm/mach-sunxi/dram_sunxi_dw.c
> @@ -652,19 +652,6 @@ static int mctl_channel_init(uint16_t socid, struct dram_para *para)
> return 0;
> }
>
> -/*
> - * Test if memory at offset offset matches memory at a certain base
> - */
> -static bool mctl_mem_matches_base(u32 offset, ulong base)
> -{
> - /* Try to write different values to RAM at two addresses */
> - writel(0, base);
> - writel(0xaa55aa55, base + offset);
> - dsb();
> - /* Check if the same value is actually observed when reading back */
> - return readl(base) ==
> - readl(base + offset);
> -}
>
> static void mctl_auto_detect_dram_size_rank(uint16_t socid, struct dram_para *para, ulong base, struct rank_para *rank)
> {
More information about the U-Boot
mailing list