diff --git a/arch/arm/mach-uniphier/boards.c b/arch/arm/mach-uniphier/boards.c
index 26dae9e92ca8a0aa5c645f9402e9cba9481c9bc3..db7d192d68ef141454513185a33d1cebc6d69590 100644
--- a/arch/arm/mach-uniphier/boards.c
+++ b/arch/arm/mach-uniphier/boards.c
@@ -16,7 +16,6 @@ DECLARE_GLOBAL_DATA_PTR;
 #if defined(CONFIG_ARCH_UNIPHIER_SLD3)
 static const struct uniphier_board_data uniphier_sld3_data = {
 	.dram_freq = 1600,
-	.dram_nr_ch = 3,
 	.dram_ch[0] = {
 		.size = 0x20000000,
 		.width = 32,
@@ -36,7 +35,6 @@ static const struct uniphier_board_data uniphier_sld3_data = {
 #if defined(CONFIG_ARCH_UNIPHIER_LD4)
 static const struct uniphier_board_data uniphier_ld4_data = {
 	.dram_freq = 1600,
-	.dram_nr_ch = 2,
 	.dram_ch[0] = {
 		.size = 0x10000000,
 		.width = 16,
@@ -53,7 +51,6 @@ static const struct uniphier_board_data uniphier_ld4_data = {
 /* 1GB RAM board */
 static const struct uniphier_board_data uniphier_pro4_data = {
 	.dram_freq = 1600,
-	.dram_nr_ch = 2,
 	.dram_ch[0] = {
 		.size = 0x20000000,
 		.width = 32,
@@ -67,7 +64,6 @@ static const struct uniphier_board_data uniphier_pro4_data = {
 /* 2GB RAM board */
 static const struct uniphier_board_data uniphier_pro4_2g_data = {
 	.dram_freq = 1600,
-	.dram_nr_ch = 2,
 	.dram_ch[0] = {
 		.size = 0x40000000,
 		.width = 32,
@@ -82,7 +78,6 @@ static const struct uniphier_board_data uniphier_pro4_2g_data = {
 #if defined(CONFIG_ARCH_UNIPHIER_SLD8)
 static const struct uniphier_board_data uniphier_sld8_data = {
 	.dram_freq = 1333,
-	.dram_nr_ch = 2,
 	.dram_ch[0] = {
 		.size = 0x10000000,
 		.width = 16,
@@ -98,7 +93,6 @@ static const struct uniphier_board_data uniphier_sld8_data = {
 #if defined(CONFIG_ARCH_UNIPHIER_PRO5)
 static const struct uniphier_board_data uniphier_pro5_data = {
 	.dram_freq = 1866,
-	.dram_nr_ch = 2,
 	.dram_ch[0] = {
 		.size = 0x20000000,
 		.width = 32,
@@ -113,7 +107,6 @@ static const struct uniphier_board_data uniphier_pro5_data = {
 #if defined(CONFIG_ARCH_UNIPHIER_PXS2)
 static const struct uniphier_board_data uniphier_pxs2_data = {
 	.dram_freq = 2133,
-	.dram_nr_ch = 3,
 	.dram_ch[0] = {
 		.size = 0x40000000,
 		.width = 32,
@@ -132,7 +125,6 @@ static const struct uniphier_board_data uniphier_pxs2_data = {
 #if defined(CONFIG_ARCH_UNIPHIER_LD6B)
 static const struct uniphier_board_data uniphier_ld6b_data = {
 	.dram_freq = 1866,
-	.dram_nr_ch = 3,
 	.dram_ch[0] = {
 		.size = 0x40000000,
 		.width = 32,
@@ -151,7 +143,6 @@ static const struct uniphier_board_data uniphier_ld6b_data = {
 #if defined(CONFIG_ARCH_UNIPHIER_LD11)
 static const struct uniphier_board_data uniphier_ld11_data = {
 	.dram_freq = 1600,
-	.dram_nr_ch = 2,
 	.dram_ch[0] = {
 		.size = 0x20000000,
 		.width = 16,
@@ -166,7 +157,6 @@ static const struct uniphier_board_data uniphier_ld11_data = {
 #if defined(CONFIG_ARCH_UNIPHIER_LD20)
 static const struct uniphier_board_data uniphier_ld20_ref_data = {
 	.dram_freq = 1866,
-	.dram_nr_ch = 3,
 	.dram_ch[0] = {
 		.size = 0x40000000,
 		.width = 32,
@@ -184,7 +174,6 @@ static const struct uniphier_board_data uniphier_ld20_ref_data = {
 
 static const struct uniphier_board_data uniphier_ld20_data = {
 	.dram_freq = 1866,
-	.dram_nr_ch = 3,
 	.dram_ch[0] = {
 		.size = 0x40000000,
 		.width = 32,
@@ -202,7 +191,6 @@ static const struct uniphier_board_data uniphier_ld20_data = {
 
 static const struct uniphier_board_data uniphier_ld21_data = {
 	.dram_freq = 1866,
-	.dram_nr_ch = 2,
 	.dram_ch[0] = {
 		.size = 0x20000000,
 		.width = 32,
diff --git a/arch/arm/mach-uniphier/dram/umc-ld11.c b/arch/arm/mach-uniphier/dram/umc-ld11.c
index 97a9fef24cf31b6c7c49f18aa143192bbecbd13f..69aa4f2eebe3a7a19a6ff450d55edce5e07396b3 100644
--- a/arch/arm/mach-uniphier/dram/umc-ld11.c
+++ b/arch/arm/mach-uniphier/dram/umc-ld11.c
@@ -471,7 +471,7 @@ int uniphier_ld11_umc_init(const struct uniphier_board_data *bd)
 
 	ddrphy_init(phy_base, freq);
 
-	for (ch = 0; ch < bd->dram_nr_ch; ch++) {
+	for (ch = 0; ch < DRAM_CH_NR; ch++) {
 		unsigned long size = bd->dram_ch[ch].size;
 		unsigned int width = bd->dram_ch[ch].width;
 
diff --git a/arch/arm/mach-uniphier/dram/umc-ld20.c b/arch/arm/mach-uniphier/dram/umc-ld20.c
index 157b915a7b7ec9ca53130fbd058c1333df9c53df..14c44e4645edced6a338a88da76438d3cfb030dc 100644
--- a/arch/arm/mach-uniphier/dram/umc-ld20.c
+++ b/arch/arm/mach-uniphier/dram/umc-ld20.c
@@ -606,15 +606,18 @@ int uniphier_ld20_umc_init(const struct uniphier_board_data *bd)
 		return -EINVAL;
 	}
 
-	for (ch = 0; ch < bd->dram_nr_ch; ch++) {
+	for (ch = 0; ch < DRAM_CH_NR; ch++) {
 		unsigned long size = bd->dram_ch[ch].size;
 		unsigned int width = bd->dram_ch[ch].width;
 
-		ret = umc_ch_init(umc_ch_base, phy_ch_base, board,
-				  bd->dram_freq, size / (width / 16), ch);
-		if (ret) {
-			pr_err("failed to initialize UMC ch%d\n", ch);
-			return ret;
+		if (size) {
+			ret = umc_ch_init(umc_ch_base, phy_ch_base, board,
+					  bd->dram_freq, size / (width / 16),
+					  ch);
+			if (ret) {
+				pr_err("failed to initialize UMC ch%d\n", ch);
+				return ret;
+			}
 		}
 
 		umc_ch_base += 0x00200000;
diff --git a/arch/arm/mach-uniphier/dram/umc-pxs2.c b/arch/arm/mach-uniphier/dram/umc-pxs2.c
index 05a62de45a2307bf859f65655ba358808500ed5d..7fa29f119d0890d10bab877430401068f3973730 100644
--- a/arch/arm/mach-uniphier/dram/umc-pxs2.c
+++ b/arch/arm/mach-uniphier/dram/umc-pxs2.c
@@ -619,15 +619,17 @@ int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd)
 		return -EINVAL;
 	}
 
-	for (ch = 0; ch < bd->dram_nr_ch; ch++) {
+	for (ch = 0; ch < DRAM_CH_NR; ch++) {
 		unsigned long size = bd->dram_ch[ch].size;
 		unsigned int width = bd->dram_ch[ch].width;
 
-		ret = umc_ch_init(umc_ch_base, freq, size / (width / 16),
-				  width, ch);
-		if (ret) {
-			pr_err("failed to initialize UMC ch%d\n", ch);
-			return ret;
+		if (size) {
+			ret = umc_ch_init(umc_ch_base, freq,
+					  size / (width / 16), width, ch);
+			if (ret) {
+				pr_err("failed to initialize UMC ch%d\n", ch);
+				return ret;
+			}
 		}
 
 		umc_ch_base += 0x00200000;
diff --git a/arch/arm/mach-uniphier/init.h b/arch/arm/mach-uniphier/init.h
index 6691d446c6bdfe07d538ecb434148d7aa6f559c7..be0ad6c374c7911b3d3201a0075f3e2d2e00b2fe 100644
--- a/arch/arm/mach-uniphier/init.h
+++ b/arch/arm/mach-uniphier/init.h
@@ -19,7 +19,6 @@ struct uniphier_dram_ch {
 
 struct uniphier_board_data {
 	unsigned int dram_freq;
-	unsigned int dram_nr_ch;
 	struct uniphier_dram_ch dram_ch[UNIPHIER_MAX_NR_DRAM_CH];
 	unsigned int flags;