public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Jagan Teki <jagan@openedev.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 05/35] ARM: i.MX6Q: sabresd: Add initial devicetree support
Date: Sun,  9 Apr 2017 12:22:26 +0530	[thread overview]
Message-ID: <1491720776-7445-6-git-send-email-jagan@openedev.com> (raw)
In-Reply-To: <1491720776-7445-1-git-send-email-jagan@openedev.com>

From: Jagan Teki <jagan@amarulasolutions.com>

Add initial devicetree support for i.MX6 Quad Sabresd board.

The configs item are copied from configs/mx6sabresd_spl_defconfig
and added
- CONFIG_OF_CONTROL=y
- CONFIG_DM_GPIO=y
- CONFIG_DM_MMC=y
- CONFIG_BLK is not set
- CONFIG_DM_MMC_OPS is not set
- CONFIG_PINCTRL=y
- CONFIG_PINCTRL_IMX6=y

Cc: Stefano Babic <sbabic@denx.de>
Cc: Fabio Estevam <fabio.estevam@nxp.com>
Cc: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Jagan Teki <jagan@amarulasolutions.com>
---
Changes for v4, v3, v2:
- none

 board/freescale/mx6sabresd/MAINTAINERS  |   1 +
 board/freescale/mx6sabresd/mx6sabresd.c | 122 +++++++++++++++++++++-----------
 configs/imx6q_sabresd_spl_defconfig     |  58 +++++++++++++++
 include/configs/mx6sabresd.h            |   4 ++
 4 files changed, 145 insertions(+), 40 deletions(-)
 create mode 100644 configs/imx6q_sabresd_spl_defconfig

diff --git a/board/freescale/mx6sabresd/MAINTAINERS b/board/freescale/mx6sabresd/MAINTAINERS
index add2314..a08f576 100644
--- a/board/freescale/mx6sabresd/MAINTAINERS
+++ b/board/freescale/mx6sabresd/MAINTAINERS
@@ -6,3 +6,4 @@ F:	include/configs/mx6sabresd.h
 F:	configs/mx6dlsabresd_defconfig
 F:	configs/mx6qsabresd_defconfig
 F:	configs/mx6sabresd_spl_defconfig
+F:	configs/imx6q_sabresd_spl_defconfig
diff --git a/board/freescale/mx6sabresd/mx6sabresd.c b/board/freescale/mx6sabresd/mx6sabresd.c
index 80a7789..db25dad 100644
--- a/board/freescale/mx6sabresd/mx6sabresd.c
+++ b/board/freescale/mx6sabresd/mx6sabresd.c
@@ -241,7 +241,7 @@ static void setup_iomux_uart(void)
 	imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
 }
 
-#ifdef CONFIG_FSL_ESDHC
+#if defined(CONFIG_FSL_ESDHC) && !defined(CONFIG_OF_CONTROL)
 struct fsl_esdhc_cfg usdhc_cfg[3] = {
 	{USDHC2_BASE_ADDR},
 	{USDHC3_BASE_ADDR},
@@ -276,9 +276,9 @@ int board_mmc_getcd(struct mmc *mmc)
 	return ret;
 }
 
+#ifndef CONFIG_FSL_ESDHC
 int board_mmc_init(bd_t *bis)
 {
-#ifndef CONFIG_SPL_BUILD
 	int ret;
 	int i;
 
@@ -321,46 +321,9 @@ int board_mmc_init(bd_t *bis)
 	}
 
 	return 0;
-#else
-	struct src *psrc = (struct src *)SRC_BASE_ADDR;
-	unsigned reg = readl(&psrc->sbmr1) >> 11;
-	/*
-	 * Upon reading BOOT_CFG register the following map is done:
-	 * Bit 11 and 12 of BOOT_CFG register can determine the current
-	 * mmc port
-	 * 0x1                  SD1
-	 * 0x2                  SD2
-	 * 0x3                  SD4
-	 */
-
-	switch (reg & 0x3) {
-	case 0x1:
-		imx_iomux_v3_setup_multiple_pads(
-			usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
-		usdhc_cfg[0].esdhc_base = USDHC2_BASE_ADDR;
-		usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
-		gd->arch.sdhc_clk = usdhc_cfg[0].sdhc_clk;
-		break;
-	case 0x2:
-		imx_iomux_v3_setup_multiple_pads(
-			usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
-		usdhc_cfg[0].esdhc_base = USDHC3_BASE_ADDR;
-		usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
-		gd->arch.sdhc_clk = usdhc_cfg[0].sdhc_clk;
-		break;
-	case 0x3:
-		imx_iomux_v3_setup_multiple_pads(
-			usdhc4_pads, ARRAY_SIZE(usdhc4_pads));
-		usdhc_cfg[0].esdhc_base = USDHC4_BASE_ADDR;
-		usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC4_CLK);
-		gd->arch.sdhc_clk = usdhc_cfg[0].sdhc_clk;
-		break;
-	}
-
-	return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
-#endif
 }
 #endif
+#endif
 
 static int ar8031_phy_fixup(struct phy_device *phydev)
 {
@@ -717,6 +680,85 @@ int checkboard(void)
 #include <spl.h>
 #include <libfdt.h>
 
+#ifdef CONFIG_FSL_ESDHC
+
+#if defined(CONFIG_OF_CONTROL) && !defined(CONFIG_DM_MMC)
+struct fsl_esdhc_cfg usdhc_cfg[3] = {
+	{USDHC2_BASE_ADDR},
+	{USDHC3_BASE_ADDR},
+	{USDHC4_BASE_ADDR},
+};
+
+#define USDHC2_CD_GPIO	IMX_GPIO_NR(2, 2)
+#define USDHC3_CD_GPIO	IMX_GPIO_NR(2, 0)
+
+int board_mmc_get_env_dev(int devno)
+{
+	return devno - 1;
+}
+
+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 USDHC2_BASE_ADDR:
+		ret = !gpio_get_value(USDHC2_CD_GPIO);
+		break;
+	case USDHC3_BASE_ADDR:
+		ret = !gpio_get_value(USDHC3_CD_GPIO);
+		break;
+	case USDHC4_BASE_ADDR:
+		ret = 1; /* eMMC/uSDHC4 is always present */
+		break;
+	}
+
+	return ret;
+}
+#endif
+
+int board_mmc_init(bd_t *bis)
+{
+	struct src *psrc = (struct src *)SRC_BASE_ADDR;
+	unsigned reg = readl(&psrc->sbmr1) >> 11;
+	/*
+	 * Upon reading BOOT_CFG register the following map is done:
+	 * Bit 11 and 12 of BOOT_CFG register can determine the current
+	 * mmc port
+	 * 0x1                  SD1
+	 * 0x2                  SD2
+	 * 0x3                  SD4
+	 */
+
+	switch (reg & 0x3) {
+	case 0x1:
+		imx_iomux_v3_setup_multiple_pads(
+			usdhc2_pads, ARRAY_SIZE(usdhc2_pads));
+		usdhc_cfg[0].esdhc_base = USDHC2_BASE_ADDR;
+		usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
+		gd->arch.sdhc_clk = usdhc_cfg[0].sdhc_clk;
+		break;
+	case 0x2:
+		imx_iomux_v3_setup_multiple_pads(
+			usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
+		usdhc_cfg[0].esdhc_base = USDHC3_BASE_ADDR;
+		usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+		gd->arch.sdhc_clk = usdhc_cfg[0].sdhc_clk;
+		break;
+	case 0x3:
+		imx_iomux_v3_setup_multiple_pads(
+			usdhc4_pads, ARRAY_SIZE(usdhc4_pads));
+		usdhc_cfg[0].esdhc_base = USDHC4_BASE_ADDR;
+		usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC4_CLK);
+		gd->arch.sdhc_clk = usdhc_cfg[0].sdhc_clk;
+		break;
+	}
+
+	return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
+}
+#endif
+
 #ifdef CONFIG_SPL_OS_BOOT
 int spl_start_uboot(void)
 {
diff --git a/configs/imx6q_sabresd_spl_defconfig b/configs/imx6q_sabresd_spl_defconfig
new file mode 100644
index 0000000..c6d4462
--- /dev/null
+++ b/configs/imx6q_sabresd_spl_defconfig
@@ -0,0 +1,58 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
+CONFIG_SPL_GPIO_SUPPORT=y
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_TARGET_MX6SABRESD=y
+CONFIG_SPL_MMC_SUPPORT=y
+CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SPL_LIBDISK_SUPPORT=y
+CONFIG_SPL_WATCHDOG_SUPPORT=y
+CONFIG_VIDEO=y
+CONFIG_DEFAULT_DEVICE_TREE="imx6q-sabresd"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
+CONFIG_BOOTDELAY=3
+# CONFIG_CONSOLE_MUX is not set
+CONFIG_SYS_CONSOLE_IS_IN_ENV=y
+CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
+CONFIG_SPL=y
+CONFIG_SPL_EXT_SUPPORT=y
+CONFIG_SPL_OS_BOOT=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MMC=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_PCI=y
+CONFIG_USB=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_G_DNL_MANUFACTURER="FSL"
+CONFIG_G_DNL_VENDOR_NUM=0x0525
+CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
+# CONFIG_VIDEO_SW_CURSOR is not set
+CONFIG_OF_LIBFDT=y
+CONFIG_OF_CONTROL=y
+CONFIG_DM_GPIO=y
+CONFIG_DM_MMC=y
+# CONFIG_BLK is not set
+# CONFIG_DM_MMC_OPS is not set
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX6=y
diff --git a/include/configs/mx6sabresd.h b/include/configs/mx6sabresd.h
index 598ab9a..9885a5c 100644
--- a/include/configs/mx6sabresd.h
+++ b/include/configs/mx6sabresd.h
@@ -11,6 +11,10 @@
 
 #ifdef CONFIG_SPL
 #include "imx6_spl.h"
+# ifdef CONFIG_SPL_BUILD
+#  undef CONFIG_DM_GPIO
+#  undef CONFIG_DM_MMC
+# endif
 #endif
 
 #define CONFIG_MACH_TYPE	3980
-- 
1.9.1

  parent reply	other threads:[~2017-04-09  6:52 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-09  6:52 [U-Boot] [PATCH v4 00/35] ARM: i.MX6: SabreSD: Add dts support Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 01/35] ARM: i.MX6: sabresd: Fix README - s/of=/dev/sdbbs=1K/of=/dev/sdb bs=1K/ Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 02/35] ARM: dts: i.MX6: Add imx6qdl-sabresd.dtsi Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 03/35] ARM: dts: imx6qdl-sabresd: Add imx6q-sabresd.dts Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 04/35] ARM: i.MX6: sabresd: Remove SPL_I2C_SUPPORT Jagan Teki
2017-04-09  6:52 ` Jagan Teki [this message]
2017-04-09  6:52 ` [U-Boot] [PATCH v4 06/35] ARM: dts: imx6qdl-sabresd: Add imx6qp-sabresd.dts Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 07/35] ARM: i.MX6QP: sabresd: Add initial devicetree support Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 08/35] ARM: i.MX6: sabresd: Move CONFIG_SYS_I2C_MXC to defconfigs Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 09/35] ARM: dts: imx6qdl-sabresd: Add I2C node's Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 10/35] ARM: dts: imx6qdl-sabresd: Add PMIC pfuze100 node Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 11/35] ARM: i.MX6: sabresd: Enable DM_I2C and DM_PMIC Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 12/35] ARM: i.MX6: sabresd: defconfig move - CONFIG_USB_EHCI(_MX6) Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 13/35] ARM: dts: imx6qdl-sabresd: Add usb host node Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 14/35] ARM: dts: imx6qdl-sabresd: Add usb otg node Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 15/35] ARM: i.MX6: sabresd: Enable CONFIG_DM_REGULATOR Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 16/35] ARM: i.MX6: sabresd: Enable DM_USB Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 17/35] ARM: dts: imx6qdl-sabresd: Add FEC node Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 18/35] ARM: i.MX6: sabre: Move CONFIG_FEC_MXC to defconfigs Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 19/35] ARM: i.MX6: sabresd: Enable DM_ETH Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 20/35] ARM: i.MX6: sabresd: Add dm_gpio_* for backlight Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 21/35] ARM: i.MX6: sabresd: Add imx6_pcie_toggle_power Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 22/35] ARM: i.MX6: sabresd: Add imx6_pcie_toggle_reset Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 23/35] ARM: i.MX6DL: sabresd: Move DCD reginit on SPL Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 24/35] ARM: dts: imx6qdl-sabresd: Add imx6dl-sabresd.dts Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 25/35] ARM: i.MX6DL: sabresd: Add initial devicetree support Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 26/35] ARM: i.MX6: %s/mx6[dl|q]sabresd_defconfig/imx6[dl|q]_sabresd_defconfig Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 27/35] ARM: i.MX6Q: sabresd: Add dts support for imx6q_sabresd Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 28/35] ARM: i.MX6DL: sabresd: Add dts support for imx6dl_sabresd Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 29/35] ARM: i.MX6: sabresd: Drop legacy non-fdt code Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 30/35] ARM: i.MX6: %s/mx6sabresd/imx6sabresd Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 31/35] ARM: i.MX6: %s/MX6SABRESD/IMX6SABRESD Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 32/35] ARM: i.MX6: sabresd: Move DM_* and OF_CONTROL to arch Kconfig Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 33/35] ARM: i.MX6: sabresd: Update README Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 34/35] ARM: i.MX6: sabresd: Drop checkboard Jagan Teki
2017-04-09  6:52 ` [U-Boot] [PATCH v4 35/35] ARM: i.MX6: sabresd: Cleanup board code Jagan Teki
2017-04-09 12:47 ` [U-Boot] [PATCH v4 00/35] ARM: i.MX6: SabreSD: Add dts support Fabio Estevam
2017-04-09 19:12   ` Jagan Teki
2017-04-09 23:13     ` Fabio Estevam
2017-04-17 13:28       ` Jagan Teki
2017-04-25 18:35         ` Jagan Teki
2017-04-25 19:27           ` Fabio Estevam
2017-05-03  6:53             ` Jagan Teki
2017-05-03 11:50               ` Tom Rini
2017-04-28 20:07     ` Fabio Estevam
2017-05-03  6:55       ` 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=1491720776-7445-6-git-send-email-jagan@openedev.com \
    --to=jagan@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