From: Jagan Teki <jteki@openedev.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v8 16/23] engicam: icorem6: Add DM_GPIO, DM_MMC support
Date: Mon, 24 Oct 2016 17:27:35 +0530 [thread overview]
Message-ID: <1477310262-17841-17-git-send-email-jteki@openedev.com> (raw)
In-Reply-To: <1477310262-17841-1-git-send-email-jteki@openedev.com>
From: Jagan Teki <jagan@amarulasolutions.com>
Add DM_GPIO, DM_MMC support for u-boot and disable for SPL.
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Stefano Babic <sbabic@denx.de>
Cc: Fabio Estevam <fabio.estevam@nxp.com>
Cc: Matteo Lisi <matteo.lisi@engicam.com>
Cc: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
---
arch/arm/cpu/armv7/mx6/Kconfig | 2 +
board/engicam/icorem6/icorem6.c | 142 ++++++++++++++++++++--------------------
include/configs/imx6qdl_icore.h | 4 ++
3 files changed, 78 insertions(+), 70 deletions(-)
diff --git a/arch/arm/cpu/armv7/mx6/Kconfig b/arch/arm/cpu/armv7/mx6/Kconfig
index e2431a8..762a581 100644
--- a/arch/arm/cpu/armv7/mx6/Kconfig
+++ b/arch/arm/cpu/armv7/mx6/Kconfig
@@ -100,6 +100,8 @@ config TARGET_MX6Q_ICORE
select MX6QDL
select OF_CONTROL
select DM
+ select DM_GPIO
+ select DM_MMC
select DM_THERMAL
select SUPPORT_SPL
diff --git a/board/engicam/icorem6/icorem6.c b/board/engicam/icorem6/icorem6.c
index a23cb7e..a370c8b 100644
--- a/board/engicam/icorem6/icorem6.c
+++ b/board/engicam/icorem6/icorem6.c
@@ -7,8 +7,6 @@
*/
#include <common.h>
-#include <fsl_esdhc.h>
-#include <mmc.h>
#include <miiphy.h>
#include <netdev.h>
@@ -29,10 +27,6 @@ DECLARE_GLOBAL_DATA_PTR;
PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS)
-#define USDHC_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \
- PAD_CTL_PUS_22K_UP | PAD_CTL_SPEED_LOW | \
- PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS)
-
#define ENET_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \
PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
@@ -55,70 +49,6 @@ static iomux_v3_cfg_t const enet_pads[] = {
IOMUX_PADS(PAD_GPIO_17__GPIO7_IO12 | MUX_PAD_CTRL(NO_PAD_CTRL)),
};
-static iomux_v3_cfg_t const usdhc1_pads[] = {
- IOMUX_PADS(PAD_SD1_CLK__SD1_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
- IOMUX_PADS(PAD_SD1_CMD__SD1_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
- IOMUX_PADS(PAD_SD1_DAT0__SD1_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
- IOMUX_PADS(PAD_SD1_DAT1__SD1_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
- IOMUX_PADS(PAD_SD1_DAT2__SD1_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
- IOMUX_PADS(PAD_SD1_DAT3__SD1_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
- IOMUX_PADS(PAD_GPIO_1__GPIO1_IO01 | MUX_PAD_CTRL(NO_PAD_CTRL)),/* CD */
-};
-
-#ifdef CONFIG_FSL_ESDHC
-#define USDHC1_CD_GPIO IMX_GPIO_NR(1, 1)
-
-struct fsl_esdhc_cfg usdhc_cfg[1] = {
- {USDHC1_BASE_ADDR, 0, 4},
-};
-
-int board_mmc_getcd(struct mmc *mmc)
-{
- struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
- int ret = 0;
-
- switch (cfg->esdhc_base) {
- case USDHC1_BASE_ADDR:
- ret = !gpio_get_value(USDHC1_CD_GPIO);
- break;
- }
-
- return ret;
-}
-
-int board_mmc_init(bd_t *bis)
-{
- int i, ret;
-
- /*
- * According to the board_mmc_init() the following map is done:
- * (U-boot device node) (Physical Port)
- * mmc0 USDHC1
- */
- for (i = 0; i < CONFIG_SYS_FSL_USDHC_NUM; i++) {
- switch (i) {
- case 0:
- SETUP_IOMUX_PADS(usdhc1_pads);
- gpio_direction_input(USDHC1_CD_GPIO);
- usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
- break;
- default:
- printf("Warning - USDHC%d controller not supporting\n",
- i + 1);
- return 0;
- }
-
- ret = fsl_esdhc_initialize(bis, &usdhc_cfg[i]);
- if (ret) {
- printf("Warning: failed to initialize mmc dev %d\n", i);
- return ret;
- }
- }
-
- return 0;
-}
-#endif
-
#ifdef CONFIG_FEC_MXC
#define ENET_PHY_RST IMX_GPIO_NR(7, 12)
static int setup_fec(void)
@@ -200,6 +130,78 @@ int dram_init(void)
#include <asm/arch/crm_regs.h>
#include <asm/arch/mx6-ddr.h>
+/* MMC board initialization is needed till adding DM support in SPL */
+#if defined(CONFIG_FSL_ESDHC) && !defined(CONFIG_DM_MMC)
+#include <mmc.h>
+#include <fsl_esdhc.h>
+
+#define USDHC_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE | \
+ PAD_CTL_PUS_22K_UP | PAD_CTL_SPEED_LOW | \
+ PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS)
+
+static iomux_v3_cfg_t const usdhc1_pads[] = {
+ IOMUX_PADS(PAD_SD1_CLK__SD1_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+ IOMUX_PADS(PAD_SD1_CMD__SD1_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+ IOMUX_PADS(PAD_SD1_DAT0__SD1_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+ IOMUX_PADS(PAD_SD1_DAT1__SD1_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+ IOMUX_PADS(PAD_SD1_DAT2__SD1_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+ IOMUX_PADS(PAD_SD1_DAT3__SD1_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+ IOMUX_PADS(PAD_GPIO_1__GPIO1_IO01 | MUX_PAD_CTRL(NO_PAD_CTRL)),/* CD */
+};
+
+#define USDHC1_CD_GPIO IMX_GPIO_NR(1, 1)
+
+struct fsl_esdhc_cfg usdhc_cfg[1] = {
+ {USDHC1_BASE_ADDR, 0, 4},
+};
+
+int board_mmc_getcd(struct mmc *mmc)
+{
+ struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
+ int ret = 0;
+
+ switch (cfg->esdhc_base) {
+ case USDHC1_BASE_ADDR:
+ ret = !gpio_get_value(USDHC1_CD_GPIO);
+ break;
+ }
+
+ return ret;
+}
+
+int board_mmc_init(bd_t *bis)
+{
+ int i, ret;
+
+ /*
+ * According to the board_mmc_init() the following map is done:
+ * (U-boot device node) (Physical Port)
+ * mmc0 USDHC1
+ */
+ for (i = 0; i < CONFIG_SYS_FSL_USDHC_NUM; i++) {
+ switch (i) {
+ case 0:
+ SETUP_IOMUX_PADS(usdhc1_pads);
+ gpio_direction_input(USDHC1_CD_GPIO);
+ usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
+ break;
+ default:
+ printf("Warning - USDHC%d controller not supporting\n",
+ i + 1);
+ return 0;
+ }
+
+ ret = fsl_esdhc_initialize(bis, &usdhc_cfg[i]);
+ if (ret) {
+ printf("Warning: failed to initialize mmc dev %d\n", i);
+ return ret;
+ }
+ }
+
+ return 0;
+}
+#endif
+
/*
* Driving strength:
* 0x30 == 40 Ohm
diff --git a/include/configs/imx6qdl_icore.h b/include/configs/imx6qdl_icore.h
index ad4c5f2..6b58447 100644
--- a/include/configs/imx6qdl_icore.h
+++ b/include/configs/imx6qdl_icore.h
@@ -127,6 +127,10 @@
#ifdef CONFIG_SPL
# define CONFIG_SPL_MMC_SUPPORT
# include "imx6_spl.h"
+# ifdef CONFIG_SPL_BUILD
+# undef CONFIG_DM_GPIO
+# undef CONFIG_DM_MMC
+# endif
#endif
#endif /* __IMX6QLD_ICORE_CONFIG_H */
--
2.7.4
next prev parent reply other threads:[~2016-10-24 11:57 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-24 11:57 [U-Boot] [PATCH v8 00/23] imx6: Add Engicam i.CoreM6 QDL support Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 01/23] serial: Kconfig: Add MXC_UART entry Jagan Teki
2016-10-26 17:14 ` Markus Niebel
2016-10-26 17:44 ` Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 02/23] thermal: Kconfig: Add IMX_THERMAL entry Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 03/23] config: Move CONFIG_DEFAULT_FDT_FILE to defconfigs Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 04/23] arm: imx: Add Engicam i.CoreM6 QDL Starter Kit initial support Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 05/23] net: Kconfig: Add FEC_MXC entry Jagan Teki
2016-10-26 17:16 ` Markus Niebel
2016-10-26 18:04 ` Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 06/23] imx6: icorem6: Add ENET support Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 07/23] imx: s/docs\/README.imximage/doc\/README.imximage/g Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 08/23] arm: dts: Add devicetree for i.MX6DL Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 09/23] arm: dts: Add devicetree for i.MX6DQL Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 10/23] arm: dts: imx6dl: Add pinctrl defines Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 11/23] dt-bindings: clock: imx6qdl: Add clock defines Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 12/23] arm: imx6q: Add devicetree support for Engicam i.CoreM6 DualLite/Solo Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 13/23] imx6q: icorem6: Enable pinctrl driver Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 14/23] configs: imx6qdl: Enable CONFIG_BLK if DM_MMC Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 15/23] configs: imx6qdl: Enable CONFIG_DM_MMC_OPS " Jagan Teki
2016-10-24 11:57 ` Jagan Teki [this message]
2016-10-24 11:57 ` [U-Boot] [PATCH v8 17/23] arm: dts: Add devicetree for i.MX6Q Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 18/23] arm: dts: imx6q: Add pinctrl defines Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 19/23] arm: imx6q: Add devicetree support for Engicam i.CoreM6 Quad/Dual Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 20/23] mtd: nand: Kconfig: Add NAND_MXS entry Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 21/23] imx6: icorem6: Add NAND support Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 22/23] imx6: icorem6: Enable MTD device support Jagan Teki
2016-10-24 11:57 ` [U-Boot] [PATCH v8 23/23] imx6: icorem6: Add default mtd nand partition table Jagan Teki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1477310262-17841-17-git-send-email-jteki@openedev.com \
--to=jteki@openedev.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox