[PATCH 05/12] mci: imx-esdhc-pbl: Share initialization code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Move common ESDHC initialization code into subroutines and convert the
rest of the code to use it.

Signed-off-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx>
---
 drivers/mci/imx-esdhc-pbl.c | 64 +++++++++++++++++++------------------
 1 file changed, 33 insertions(+), 31 deletions(-)

diff --git a/drivers/mci/imx-esdhc-pbl.c b/drivers/mci/imx-esdhc-pbl.c
index 2afb55af9..d5d83d18e 100644
--- a/drivers/mci/imx-esdhc-pbl.c
+++ b/drivers/mci/imx-esdhc-pbl.c
@@ -365,6 +365,31 @@ esdhc_start_image(struct esdhc *esdhc, ptrdiff_t address, ptrdiff_t entry,
 	bb();
 }
 
+static void imx_esdhc_init(struct esdhc *esdhc)
+{
+	esdhc->is_be = 0;
+	esdhc->is_mx6 = 1;
+	esdhc->wrap_wml = false;
+}
+
+static int imx8_esdhc_init(struct esdhc *esdhc, int instance)
+{
+	switch (instance) {
+	case 0:
+		esdhc->regs = IOMEM(MX8MQ_USDHC1_BASE_ADDR);
+		break;
+	case 1:
+		esdhc->regs = IOMEM(MX8MQ_USDHC2_BASE_ADDR);
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	imx_esdhc_init(esdhc);
+
+	return 0;
+}
+
 /**
  * imx6_esdhc_start_image - Load and start an image from USDHC controller
  * @instance: The USDHC controller instance (0..4)
@@ -398,9 +423,7 @@ int imx6_esdhc_start_image(int instance)
 		return -EINVAL;
 	}
 
-	esdhc.is_be = 0;
-	esdhc.is_mx6 = 1;
-	esdhc.wrap_wml = false;
+	imx_esdhc_init(&esdhc);
 
 	return esdhc_start_image(&esdhc, 0x10000000, 0x10000000, 0);
 }
@@ -420,21 +443,11 @@ int imx6_esdhc_start_image(int instance)
 int imx8_esdhc_start_image(int instance)
 {
 	struct esdhc esdhc;
+	int ret;
 
-	switch (instance) {
-	case 0:
-		esdhc.regs = IOMEM(MX8MQ_USDHC1_BASE_ADDR);
-		break;
-	case 1:
-		esdhc.regs = IOMEM(MX8MQ_USDHC2_BASE_ADDR);
-		break;
-	default:
-		return -EINVAL;
-	}
-
-	esdhc.is_be = 0;
-	esdhc.is_mx6 = 1;
-	esdhc.wrap_wml = false;
+	ret = imx8_esdhc_init(&esdhc, instance);
+	if (ret)
+		return ret;
 
 	return esdhc_start_image(&esdhc, MX8MQ_DDR_CSD1_BASE_ADDR,
 				 MX8MQ_ATF_BL33_BASE_ADDR, SZ_32K);
@@ -448,20 +461,9 @@ int imx8_esdhc_load_piggy(int instance)
 	int ret, len;
 	int offset = SZ_32K;
 
-	switch (instance) {
-	case 0:
-		esdhc.regs = IOMEM(MX8MQ_USDHC1_BASE_ADDR);
-		break;
-	case 1:
-		esdhc.regs = IOMEM(MX8MQ_USDHC2_BASE_ADDR);
-		break;
-	default:
-		return -EINVAL;
-	}
-
-	esdhc.is_be = 0;
-	esdhc.is_mx6 = 1;
-	esdhc.wrap_wml = false;
+	ret = imx8_esdhc_init(&esdhc, instance);
+	if (ret)
+		return ret;
 
 	/*
 	 * We expect to be running at MX8MQ_ATF_BL33_BASE_ADDR where the atf
-- 
2.21.0


_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox



[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux