arm: vf610: add NAND support for vf610twr
This adds NAND support for the Vybrid tower system (TWR-VF65GS10) provided by the vf610_nfc driver. Full 16-Bit bus width is supported. Also an aditional config vf610twr_nand is introduced which gets the environment from NAND. However, booting U-Boot from NAND is not yet possible due to missing boot configuration block (BCB). Signed-off-by: Stefan Agner <stefan@agner.ch>
This commit is contained in:
		
							parent
							
								
									72d7beabf7
								
							
						
					
					
						commit
						d6d07a9bec
					
				|  | @ -278,6 +278,39 @@ static void setup_iomux_i2c(void) | ||||||
| 	imx_iomux_v3_setup_multiple_pads(i2c0_pads, ARRAY_SIZE(i2c0_pads)); | 	imx_iomux_v3_setup_multiple_pads(i2c0_pads, ARRAY_SIZE(i2c0_pads)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | #ifdef CONFIG_NAND_VF610_NFC | ||||||
|  | static void setup_iomux_nfc(void) | ||||||
|  | { | ||||||
|  | 	static const iomux_v3_cfg_t nfc_pads[] = { | ||||||
|  | 		VF610_PAD_PTD31__NF_IO15, | ||||||
|  | 		VF610_PAD_PTD30__NF_IO14, | ||||||
|  | 		VF610_PAD_PTD29__NF_IO13, | ||||||
|  | 		VF610_PAD_PTD28__NF_IO12, | ||||||
|  | 		VF610_PAD_PTD27__NF_IO11, | ||||||
|  | 		VF610_PAD_PTD26__NF_IO10, | ||||||
|  | 		VF610_PAD_PTD25__NF_IO9, | ||||||
|  | 		VF610_PAD_PTD24__NF_IO8, | ||||||
|  | 		VF610_PAD_PTD23__NF_IO7, | ||||||
|  | 		VF610_PAD_PTD22__NF_IO6, | ||||||
|  | 		VF610_PAD_PTD21__NF_IO5, | ||||||
|  | 		VF610_PAD_PTD20__NF_IO4, | ||||||
|  | 		VF610_PAD_PTD19__NF_IO3, | ||||||
|  | 		VF610_PAD_PTD18__NF_IO2, | ||||||
|  | 		VF610_PAD_PTD17__NF_IO1, | ||||||
|  | 		VF610_PAD_PTD16__NF_IO0, | ||||||
|  | 		VF610_PAD_PTB24__NF_WE_B, | ||||||
|  | 		VF610_PAD_PTB25__NF_CE0_B, | ||||||
|  | 		VF610_PAD_PTB27__NF_RE_B, | ||||||
|  | 		VF610_PAD_PTC26__NF_RB_B, | ||||||
|  | 		VF610_PAD_PTC27__NF_ALE, | ||||||
|  | 		VF610_PAD_PTC28__NF_CLE | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
|  | 	imx_iomux_v3_setup_multiple_pads(nfc_pads, ARRAY_SIZE(nfc_pads)); | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| static void setup_iomux_qspi(void) | static void setup_iomux_qspi(void) | ||||||
| { | { | ||||||
| 	static const iomux_v3_cfg_t qspi0_pads[] = { | 	static const iomux_v3_cfg_t qspi0_pads[] = { | ||||||
|  | @ -354,6 +387,8 @@ static void clock_init(void) | ||||||
| 		CCM_CCGR7_SDHC1_CTRL_MASK); | 		CCM_CCGR7_SDHC1_CTRL_MASK); | ||||||
| 	clrsetbits_le32(&ccm->ccgr9, CCM_REG_CTRL_MASK, | 	clrsetbits_le32(&ccm->ccgr9, CCM_REG_CTRL_MASK, | ||||||
| 		CCM_CCGR9_FEC0_CTRL_MASK | CCM_CCGR9_FEC1_CTRL_MASK); | 		CCM_CCGR9_FEC0_CTRL_MASK | CCM_CCGR9_FEC1_CTRL_MASK); | ||||||
|  | 	clrsetbits_le32(&ccm->ccgr10, CCM_REG_CTRL_MASK, | ||||||
|  | 		CCM_CCGR10_NFC_CTRL_MASK); | ||||||
| 
 | 
 | ||||||
| 	clrsetbits_le32(&anadig->pll2_ctrl, ANADIG_PLL2_CTRL_POWERDOWN, | 	clrsetbits_le32(&anadig->pll2_ctrl, ANADIG_PLL2_CTRL_POWERDOWN, | ||||||
| 		ANADIG_PLL2_CTRL_ENABLE | ANADIG_PLL2_CTRL_DIV_SELECT); | 		ANADIG_PLL2_CTRL_ENABLE | ANADIG_PLL2_CTRL_DIV_SELECT); | ||||||
|  | @ -373,14 +408,17 @@ static void clock_init(void) | ||||||
| 		CCM_CACRR_IPG_CLK_DIV(1) | CCM_CACRR_BUS_CLK_DIV(2) | | 		CCM_CACRR_IPG_CLK_DIV(1) | CCM_CACRR_BUS_CLK_DIV(2) | | ||||||
| 		CCM_CACRR_ARM_CLK_DIV(0)); | 		CCM_CACRR_ARM_CLK_DIV(0)); | ||||||
| 	clrsetbits_le32(&ccm->cscmr1, CCM_REG_CTRL_MASK, | 	clrsetbits_le32(&ccm->cscmr1, CCM_REG_CTRL_MASK, | ||||||
| 		CCM_CSCMR1_ESDHC1_CLK_SEL(3) | CCM_CSCMR1_QSPI0_CLK_SEL(3)); | 		CCM_CSCMR1_ESDHC1_CLK_SEL(3) | CCM_CSCMR1_QSPI0_CLK_SEL(3) | | ||||||
|  | 		CCM_CSCMR1_NFC_CLK_SEL(0)); | ||||||
| 	clrsetbits_le32(&ccm->cscdr1, CCM_REG_CTRL_MASK, | 	clrsetbits_le32(&ccm->cscdr1, CCM_REG_CTRL_MASK, | ||||||
| 		CCM_CSCDR1_RMII_CLK_EN); | 		CCM_CSCDR1_RMII_CLK_EN); | ||||||
| 	clrsetbits_le32(&ccm->cscdr2, CCM_REG_CTRL_MASK, | 	clrsetbits_le32(&ccm->cscdr2, CCM_REG_CTRL_MASK, | ||||||
| 		CCM_CSCDR2_ESDHC1_EN | CCM_CSCDR2_ESDHC1_CLK_DIV(0)); | 		CCM_CSCDR2_ESDHC1_EN | CCM_CSCDR2_ESDHC1_CLK_DIV(0) | | ||||||
|  | 		CCM_CSCDR2_NFC_EN); | ||||||
| 	clrsetbits_le32(&ccm->cscdr3, CCM_REG_CTRL_MASK, | 	clrsetbits_le32(&ccm->cscdr3, CCM_REG_CTRL_MASK, | ||||||
| 		CCM_CSCDR3_QSPI0_EN | CCM_CSCDR3_QSPI0_DIV(1) | | 		CCM_CSCDR3_QSPI0_EN | CCM_CSCDR3_QSPI0_DIV(1) | | ||||||
| 		CCM_CSCDR3_QSPI0_X2_DIV(1) | CCM_CSCDR3_QSPI0_X4_DIV(3)); | 		CCM_CSCDR3_QSPI0_X2_DIV(1) | CCM_CSCDR3_QSPI0_X4_DIV(3) | | ||||||
|  | 		CCM_CSCDR3_NFC_PRE_DIV(5)); | ||||||
| 	clrsetbits_le32(&ccm->cscmr2, CCM_REG_CTRL_MASK, | 	clrsetbits_le32(&ccm->cscmr2, CCM_REG_CTRL_MASK, | ||||||
| 		CCM_CSCMR2_RMII_CLK_SEL(0)); | 		CCM_CSCMR2_RMII_CLK_SEL(0)); | ||||||
| } | } | ||||||
|  | @ -411,6 +449,9 @@ int board_early_init_f(void) | ||||||
| 	setup_iomux_enet(); | 	setup_iomux_enet(); | ||||||
| 	setup_iomux_i2c(); | 	setup_iomux_i2c(); | ||||||
| 	setup_iomux_qspi(); | 	setup_iomux_qspi(); | ||||||
|  | #ifdef CONFIG_NAND_VF610_NFC | ||||||
|  | 	setup_iomux_nfc(); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,3 +1,3 @@ | ||||||
| CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/vf610twr/imximage.cfg" | CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/vf610twr/imximage.cfg,ENV_IS_IN_MMC" | ||||||
| CONFIG_ARM=y | CONFIG_ARM=y | ||||||
| CONFIG_TARGET_VF610TWR=y | CONFIG_TARGET_VF610TWR=y | ||||||
|  |  | ||||||
|  | @ -0,0 +1,3 @@ | ||||||
|  | CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/vf610twr/imximage.cfg,ENV_IS_IN_NAND" | ||||||
|  | CONFIG_ARM=y | ||||||
|  | CONFIG_TARGET_VF610TWR=y | ||||||
|  | @ -14,6 +14,7 @@ | ||||||
| 
 | 
 | ||||||
| #define CONFIG_VF610 | #define CONFIG_VF610 | ||||||
| 
 | 
 | ||||||
|  | #define CONFIG_SYS_GENERIC_BOARD | ||||||
| #define CONFIG_DISPLAY_CPUINFO | #define CONFIG_DISPLAY_CPUINFO | ||||||
| #define CONFIG_DISPLAY_BOARDINFO | #define CONFIG_DISPLAY_BOARDINFO | ||||||
| 
 | 
 | ||||||
|  | @ -44,6 +45,41 @@ | ||||||
| 
 | 
 | ||||||
| #undef CONFIG_CMD_IMLS | #undef CONFIG_CMD_IMLS | ||||||
| 
 | 
 | ||||||
|  | /* NAND support */ | ||||||
|  | #define CONFIG_CMD_NAND | ||||||
|  | #define CONFIG_CMD_NAND_TRIMFFS | ||||||
|  | 
 | ||||||
|  | #ifdef CONFIG_CMD_NAND | ||||||
|  | #define CONFIG_NAND_VF610_NFC | ||||||
|  | #define CONFIG_SYS_NAND_SELF_INIT | ||||||
|  | #define CONFIG_USE_ARCH_MEMCPY | ||||||
|  | #define CONFIG_SYS_NAND_BUSWIDTH_16BIT | ||||||
|  | #define CONFIG_SYS_MAX_NAND_DEVICE	1 | ||||||
|  | #define CONFIG_SYS_NAND_BASE		NFC_BASE_ADDR | ||||||
|  | 
 | ||||||
|  | /* UBI */ | ||||||
|  | #define CONFIG_CMD_UBI | ||||||
|  | #define CONFIG_CMD_UBIFS | ||||||
|  | #define CONFIG_CMD_MTDPARTS | ||||||
|  | #define CONFIG_RBTREE | ||||||
|  | #define CONFIG_LZO | ||||||
|  | #define CONFIG_MTD_DEVICE | ||||||
|  | #define CONFIG_MTD_PARTITIONS | ||||||
|  | 
 | ||||||
|  | /* Dynamic MTD partition support */ | ||||||
|  | #define CONFIG_CMD_MTDPARTS | ||||||
|  | #define CONFIG_MTD_PARTITIONS | ||||||
|  | #define CONFIG_MTD_DEVICE | ||||||
|  | #define MTDIDS_DEFAULT			"nand0=fsl_nfc" | ||||||
|  | #define MTDPARTS_DEFAULT		"mtdparts=fsl_nfc:"		\ | ||||||
|  | 					"128k(vf-bcb)ro,"		\ | ||||||
|  | 					"1408k(u-boot)ro,"		\ | ||||||
|  | 					"512k(u-boot-env),"		\ | ||||||
|  | 					"4m(kernel),"			\ | ||||||
|  | 					"512k(fdt),"		\ | ||||||
|  | 					"-(rootfs)" | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| #define CONFIG_MMC | #define CONFIG_MMC | ||||||
| #define CONFIG_FSL_ESDHC | #define CONFIG_FSL_ESDHC | ||||||
| #define CONFIG_SYS_FSL_ESDHC_ADDR	0 | #define CONFIG_SYS_FSL_ESDHC_ADDR	0 | ||||||
|  | @ -218,11 +254,19 @@ | ||||||
| /* FLASH and environment organization */ | /* FLASH and environment organization */ | ||||||
| #define CONFIG_SYS_NO_FLASH | #define CONFIG_SYS_NO_FLASH | ||||||
| 
 | 
 | ||||||
|  | #ifdef CONFIG_ENV_IS_IN_MMC | ||||||
| #define CONFIG_ENV_SIZE			(8 * 1024) | #define CONFIG_ENV_SIZE			(8 * 1024) | ||||||
| #define CONFIG_ENV_IS_IN_MMC |  | ||||||
| 
 | 
 | ||||||
| #define CONFIG_ENV_OFFSET		(12 * 64 * 1024) | #define CONFIG_ENV_OFFSET		(12 * 64 * 1024) | ||||||
| #define CONFIG_SYS_MMC_ENV_DEV		0 | #define CONFIG_SYS_MMC_ENV_DEV		0 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #ifdef CONFIG_ENV_IS_IN_NAND | ||||||
|  | #define CONFIG_ENV_SIZE			(64 * 2048) | ||||||
|  | #define CONFIG_ENV_SECT_SIZE		(64 * 2048) | ||||||
|  | #define CONFIG_ENV_RANGE		(512 * 1024) | ||||||
|  | #define CONFIG_ENV_OFFSET		0x180000 | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| #define CONFIG_OF_LIBFDT | #define CONFIG_OF_LIBFDT | ||||||
| #define CONFIG_CMD_BOOTZ | #define CONFIG_CMD_BOOTZ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue