[U-Boot] [PATCH 03/21] ARM: uniphier: optimize ProXstream2 UMC init code with "for" loop

Masahiro Yamada yamada.masahiro at socionext.com
Fri Feb 26 06:21:35 CET 2016


Now this code can be re-written with a "for" statement instead of
calling the same function multiple times.

Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
---

 arch/arm/mach-uniphier/dram/umc-proxstream2.c | 33 +++++++++------------------
 1 file changed, 11 insertions(+), 22 deletions(-)

diff --git a/arch/arm/mach-uniphier/dram/umc-proxstream2.c b/arch/arm/mach-uniphier/dram/umc-proxstream2.c
index 6e6fff9..dca34ba 100644
--- a/arch/arm/mach-uniphier/dram/umc-proxstream2.c
+++ b/arch/arm/mach-uniphier/dram/umc-proxstream2.c
@@ -585,11 +585,9 @@ static void um_init(void __iomem *um_base)
 int proxstream2_umc_init(const struct uniphier_board_data *bd)
 {
 	void __iomem *um_base = (void __iomem *)0x5b600000;
-	void __iomem *umc_ch0_base = (void __iomem *)0x5b800000;
-	void __iomem *umc_ch1_base = (void __iomem *)0x5ba00000;
-	void __iomem *umc_ch2_base = (void __iomem *)0x5bc00000;
+	void __iomem *umc_ch_base = (void __iomem *)0x5b800000;
 	enum dram_freq freq;
-	int ret;
+	int ch, ret;
 
 	switch (bd->dram_freq) {
 	case 1866:
@@ -603,25 +601,16 @@ int proxstream2_umc_init(const struct uniphier_board_data *bd)
 		return -EINVAL;
 	}
 
-	ret = umc_init(umc_ch0_base, freq, 0, bd->dram_ch[0].size / SZ_256M,
-		       bd->dram_ch[0].width);
-	if (ret) {
-		printf("failed to initialize UMC ch0\n");
-		return ret;
-	}
-
-	ret = umc_init(umc_ch1_base, freq, 1, bd->dram_ch[1].size / SZ_256M,
-		       bd->dram_ch[1].width);
-	if (ret) {
-		printf("failed to initialize UMC ch1\n");
-		return ret;
-	}
+	for (ch = 0; ch < bd->dram_nr_ch; ch++) {
+		ret = umc_init(umc_ch_base, freq, ch,
+			       bd->dram_ch[ch].size / SZ_256M,
+			       bd->dram_ch[ch].width);
+		if (ret) {
+			printf("failed to initialize UMC ch%d\n", ch);
+			return ret;
+		}
 
-	ret = umc_init(umc_ch2_base, freq, 2, bd->dram_ch[2].size / SZ_256M,
-		       bd->dram_ch[2].width);
-	if (ret) {
-		printf("failed to initialize UMC ch2\n");
-		return ret;
+		umc_ch_base += 0x00200000;
 	}
 
 	um_init(um_base);
-- 
1.9.1



More information about the U-Boot mailing list