On Thu, 28 Dec 2023 00:28:42 +0300 Andrey Skvortsov <andrej.skvort...@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.skvort...@gmail.com> thanks for the changes, that looks good now! Reviewed-by: Andre Przywara <andre.przyw...@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) > {