diff options
author | Tom Rini <trini@konsulko.com> | 2018-09-04 17:45:53 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2018-09-04 17:45:53 -0400 |
commit | b2f90c461e999a1b1a03c7f9f79069b5440b2306 (patch) | |
tree | 090dc33e83808ccce62798d7aedba4e4f5347ecb /board/toradex | |
parent | 3005162a43adcfd9cbb524960ad9ff44e809980c (diff) | |
parent | c1d1543ebc6e1fb026d0d7ac96d865faa7567555 (diff) | |
download | u-boot-b2f90c461e999a1b1a03c7f9f79069b5440b2306.tar.gz u-boot-b2f90c461e999a1b1a03c7f9f79069b5440b2306.tar.xz u-boot-b2f90c461e999a1b1a03c7f9f79069b5440b2306.zip |
Merge branch 'master' of git://git.denx.de/u-boot-imx
Diffstat (limited to 'board/toradex')
-rw-r--r-- | board/toradex/colibri_imx7/Kconfig | 42 | ||||
-rw-r--r-- | board/toradex/colibri_imx7/MAINTAINERS | 4 | ||||
-rw-r--r-- | board/toradex/colibri_imx7/colibri_imx7.c | 41 | ||||
-rw-r--r-- | board/toradex/common/tdx-cfg-block.c | 7 |
4 files changed, 87 insertions, 7 deletions
diff --git a/board/toradex/colibri_imx7/Kconfig b/board/toradex/colibri_imx7/Kconfig index 414a600eef..d33ec63523 100644 --- a/board/toradex/colibri_imx7/Kconfig +++ b/board/toradex/colibri_imx7/Kconfig @@ -1,5 +1,24 @@ if TARGET_COLIBRI_IMX7 +choice + prompt "Colibri iMX7S/D variant" + +config TARGET_COLIBRI_IMX7_NAND + bool "Support Colibri iMX7 Solo 256MB/Dual 512MB (raw NAND) modules" + imply NAND_MXS + help + Choose this option if you build for a Toradex Colibri iMX7S + 256MB or Colibri iMX7D 512MB module which do have raw NAND + on-module. + +config TARGET_COLIBRI_IMX7_EMMC + bool "Support Colibri iMX7 Dual 1GB (eMMC) modules" + help + Choose this option if you build for a Toradex Colibri iMX7D + 1GB module which does have eMMC on-module. + +endchoice + config SYS_BOARD default "colibri_imx7" @@ -19,6 +38,11 @@ config COLIBRI_IMX7_EXT_PHYCLK config TDX_CFG_BLOCK default y +config TDX_CFG_BLOCK_2ND_ETHADDR + default y + +if TARGET_COLIBRI_IMX7_NAND + config TDX_HAVE_NAND default y @@ -28,9 +52,25 @@ config TDX_CFG_BLOCK_OFFSET config TDX_CFG_BLOCK_OFFSET2 default "133120" -config TDX_CFG_BLOCK_2ND_ETHADDR +endif + +if TARGET_COLIBRI_IMX7_EMMC + +config TDX_HAVE_MMC default y +config TDX_CFG_BLOCK_DEV + default "0" + +config TDX_CFG_BLOCK_PART + default "1" + +# Toradex config block in eMMC, at the end of 1st "boot sector" +config TDX_CFG_BLOCK_OFFSET + default "-512" + +endif + source "board/toradex/common/Kconfig" endif diff --git a/board/toradex/colibri_imx7/MAINTAINERS b/board/toradex/colibri_imx7/MAINTAINERS index 5ffb2417aa..9c1d42aa8c 100644 --- a/board/toradex/colibri_imx7/MAINTAINERS +++ b/board/toradex/colibri_imx7/MAINTAINERS @@ -1,6 +1,10 @@ Colibri iMX7 M: Stefan Agner <stefan.agner@toradex.com> +M: Toradex ARM Support <support.arm@toradex.com> +W: http://developer.toradex.com/software/linux/linux-software +W: https://www.toradex.com/community S: Maintained F: board/toradex/colibri_imx7/ F: include/configs/colibri_imx7.h F: configs/colibri_imx7_defconfig +F: configs/colibri_imx7_emmc_defconfig diff --git a/board/toradex/colibri_imx7/colibri_imx7.c b/board/toradex/colibri_imx7/colibri_imx7.c index 2210095d7a..2b7591eb00 100644 --- a/board/toradex/colibri_imx7/colibri_imx7.c +++ b/board/toradex/colibri_imx7/colibri_imx7.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * Copyright (C) 2016 Toradex AG + * Copyright (C) 2016-2018 Toradex AG */ #include <asm/arch/clock.h> @@ -81,7 +81,7 @@ static iomux_v3_cfg_t const usb_cdet_pads[] = { }; #endif -#ifdef CONFIG_NAND_MXS +#ifdef CONFIG_TARGET_COLIBRI_IMX7_NAND static iomux_v3_cfg_t const gpmi_pads[] = { MX7D_PAD_SD3_DATA0__NAND_DATA00 | MUX_PAD_CTRL(NAND_PAD_CTRL), MX7D_PAD_SD3_DATA1__NAND_DATA01 | MUX_PAD_CTRL(NAND_PAD_CTRL), @@ -109,6 +109,24 @@ static void setup_gpmi_nand(void) } #endif +#ifdef CONFIG_TARGET_COLIBRI_IMX7_EMMC +static iomux_v3_cfg_t const usdhc3_emmc_pads[] = { + MX7D_PAD_SD3_CLK__SD3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL), + MX7D_PAD_SD3_CMD__SD3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL), + MX7D_PAD_SD3_DATA0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + MX7D_PAD_SD3_DATA1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + MX7D_PAD_SD3_DATA2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + MX7D_PAD_SD3_DATA3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + MX7D_PAD_SD3_DATA4__SD3_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + MX7D_PAD_SD3_DATA5__SD3_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + MX7D_PAD_SD3_DATA6__SD3_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + MX7D_PAD_SD3_DATA7__SD3_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL), + MX7D_PAD_SD3_STROBE__SD3_STROBE | MUX_PAD_CTRL(USDHC_PAD_CTRL), + + MX7D_PAD_SD3_RESET_B__GPIO6_IO11 | MUX_PAD_CTRL(USDHC_PAD_CTRL), +}; +#endif + #ifdef CONFIG_VIDEO_MXS static iomux_v3_cfg_t const lcd_pads[] = { MX7D_PAD_LCD_CLK__LCD_CLK | MUX_PAD_CTRL(LCD_PAD_CTRL), @@ -198,6 +216,9 @@ static void setup_iomux_uart(void) #define USDHC1_CD_GPIO IMX_GPIO_NR(1, 0) static struct fsl_esdhc_cfg usdhc_cfg[] = { +#ifdef CONFIG_TARGET_COLIBRI_IMX7_EMMC + {USDHC3_BASE_ADDR}, +#endif {USDHC1_BASE_ADDR, 0, 4}, }; @@ -210,6 +231,11 @@ int board_mmc_getcd(struct mmc *mmc) case USDHC1_BASE_ADDR: ret = !gpio_get_value(USDHC1_CD_GPIO); break; +#ifdef CONFIG_TARGET_COLIBRI_IMX7_EMMC + case USDHC3_BASE_ADDR: + ret = 1; + break; +#endif } return ret; @@ -218,7 +244,7 @@ int board_mmc_getcd(struct mmc *mmc) int board_mmc_init(bd_t *bis) { int i, ret; - /* USDHC1 is mmc0 */ + /* USDHC1 is mmc0, USDHC3 is mmc1 */ for (i = 0; i < CONFIG_SYS_FSL_USDHC_NUM; i++) { switch (i) { case 0: @@ -228,6 +254,13 @@ int board_mmc_init(bd_t *bis) gpio_direction_input(USDHC1_CD_GPIO); usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK); break; +#ifdef CONFIG_TARGET_COLIBRI_IMX7_EMMC + case 1: + imx_iomux_v3_setup_multiple_pads(usdhc3_emmc_pads, + ARRAY_SIZE(usdhc3_emmc_pads)); + usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK); + break; +#endif default: printf("Warning: you configured more USDHC controllers" "(%d) than supported by the board\n", i + 1); @@ -305,7 +338,7 @@ int board_init(void) setup_fec(); #endif -#ifdef CONFIG_NAND_MXS +#ifdef CONFIG_TARGET_COLIBRI_IMX7_NAND setup_gpmi_nand(); #endif diff --git a/board/toradex/common/tdx-cfg-block.c b/board/toradex/common/tdx-cfg-block.c index 57edb6c5c9..d4f5b1803a 100644 --- a/board/toradex/common/tdx-cfg-block.c +++ b/board/toradex/common/tdx-cfg-block.c @@ -156,10 +156,13 @@ out: static int read_tdx_cfg_block_from_nand(unsigned char *config_block) { size_t size = TDX_CFG_BLOCK_MAX_SIZE; + struct mtd_info *mtd = get_nand_dev_by_index(0); + + if (!mtd) + return -ENODEV; /* Read production parameter config block from NAND page */ - return nand_read_skip_bad(get_nand_dev_by_index(0), - CONFIG_TDX_CFG_BLOCK_OFFSET, + return nand_read_skip_bad(mtd, CONFIG_TDX_CFG_BLOCK_OFFSET, &size, NULL, TDX_CFG_BLOCK_MAX_SIZE, config_block); } |