diff mbox

[U-Boot,v2,14/17] engicam: icorem6: Add DM_GPIO, DM_MMC support

Message ID 1474058929-17637-15-git-send-email-jagan@amarulasolutions.com
State Superseded
Delegated to: Stefano Babic
Headers show

Commit Message

Jagan Teki Sept. 16, 2016, 8:48 p.m. UTC
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(-)

Comments

Peng Fan Sept. 19, 2016, 6:25 a.m. UTC | #1
Hi Jagan,
On Sat, Sep 17, 2016 at 02:18:46AM +0530, Jagan Teki wrote:
>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

I do not see MXC_GPIO defined.

>+	select DM_MMC
> 	select DM_THERMAL
> 	select SUPPORT_SPL
> 
>diff --git a/board/engicam/icorem6/icorem6.c b/board/engicam/icorem6/icorem6.c
>index 4331ad3..2aa8a4e 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)

You could use "#ifdef CONFIG_SPL_BUILD" if this is only for SPL


Regards,
Peng.
Jagan Teki Sept. 19, 2016, 7:23 a.m. UTC | #2
On Mon, Sep 19, 2016 at 11:55 AM, Peng Fan <van.freenix@gmail.com> wrote:
> Hi Jagan,
> On Sat, Sep 17, 2016 at 02:18:46AM +0530, Jagan Teki wrote:
>>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
>
> I do not see MXC_GPIO defined.

Defined in common mx6 - include/configs/mx6_common.h

>
>>+      select DM_MMC
>>       select DM_THERMAL
>>       select SUPPORT_SPL
>>
>>diff --git a/board/engicam/icorem6/icorem6.c b/board/engicam/icorem6/icorem6.c
>>index 4331ad3..2aa8a4e 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)
>
> You could use "#ifdef CONFIG_SPL_BUILD" if this is only for SPL

Yes this code already in #ifdefc CONFIG_SPL_BUILD blcok, please check
it clearly.

thanks!
diff mbox

Patch

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 4331ad3..2aa8a4e 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 b5ad865..0dcf173 100644
--- a/include/configs/imx6qdl_icore.h
+++ b/include/configs/imx6qdl_icore.h
@@ -122,6 +122,10 @@ 
 #define CONFIG_SPL_MMC_SUPPORT
 #endif
 #include "imx6_spl.h"
+#ifdef CONFIG_SPL_BUILD
+#undef CONFIG_DM_GPIO
+#undef CONFIG_DM_MMC
+#endif
 #endif
 
 #endif /* __IMX6QLD_ICORE_CONFIG_H */