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
next prev 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