Commit b4698ce0e5b6952a88702075ce905a059da277d9
1 parent
ed4a4a9d1c
Exists in
smarc_8mm-imx_v2018.03_4.14.98_2.0.0_ga
and in
5 other branches
MLK-14445-2 mx7ulp_evk: Add QSPI flash support
Porting the QSPI flash board support from v2016.03, and convert to use DM QSPI driver. Since we need to support QSPI at default in u-boot, change the default DTS file to qspi enabled DTS. Signed-off-by: Ye Li <ye.li@nxp.com> (cherry picked from commit 41895cd598be6c4a64fc4fec521120e4962abc28)
Showing 7 changed files with 112 additions and 3 deletions Side-by-side Diff
arch/arm/dts/Makefile
arch/arm/dts/imx7ulp-evk-qspi.dts
1 | +/* | |
2 | + * Copyright (C) 2016 Freescale Semiconductor, Inc. | |
3 | + * Copyright 2017 NXP | |
4 | + * | |
5 | + * This program is free software; you can redistribute it and/or modify | |
6 | + * it under the terms of the GNU General Public License version 2 as | |
7 | + * published by the Free Software Foundation. | |
8 | + */ | |
9 | + | |
10 | +#include "imx7ulp-evk.dts" | |
11 | + | |
12 | +&qspi1 { | |
13 | + pinctrl-names = "default"; | |
14 | + pinctrl-0 = <&pinctrl_qspi1_1>; | |
15 | + status = "okay"; | |
16 | + | |
17 | + flash0: mx25r6435f@0 { | |
18 | + reg = <0>; | |
19 | + #address-cells = <1>; | |
20 | + #size-cells = <1>; | |
21 | + compatible = "macronix,mx25r6435f"; | |
22 | + spi-max-frequency = <29000000>; | |
23 | + }; | |
24 | +}; | |
25 | + | |
26 | +&iomuxc { | |
27 | + status = "okay"; | |
28 | +}; | |
29 | + | |
30 | +&iomuxc { | |
31 | + imx7ulp-evk { | |
32 | + pinctrl_qspi1_1: qspi1grp_1 { | |
33 | + fsl,pins = < | |
34 | + ULP1_PAD_PTB7_LLWU0_P11__QSPIA_SS1_B 0x43 /* SS1 */ | |
35 | + ULP1_PAD_PTB8__QSPIA_SS0_B 0x43 /* SS0 */ | |
36 | + ULP1_PAD_PTB15__QSPIA_SCLK 0x43 /* SCLK */ | |
37 | + ULP1_PAD_PTB9_LLWU0_P12__QSPIA_DQS 0x43 /* DQS */ | |
38 | + ULP1_PAD_PTB16_LLWU0_P14__QSPIA_DATA3 0x43 /* D3 */ | |
39 | + ULP1_PAD_PTB17__QSPIA_DATA2 0x43 /* D2 */ | |
40 | + ULP1_PAD_PTB18__QSPIA_DATA1 0x43 /* D1 */ | |
41 | + ULP1_PAD_PTB19_LLWU0_P15__QSPIA_DATA0 0x43 /* D0 */ | |
42 | + >; | |
43 | + }; | |
44 | + }; | |
45 | +}; |
arch/arm/dts/imx7ulp.dtsi
board/freescale/mx7ulp_evk/mx7ulp_evk.c
... | ... | @@ -13,6 +13,7 @@ |
13 | 13 | DECLARE_GLOBAL_DATA_PTR; |
14 | 14 | |
15 | 15 | #define UART_PAD_CTRL (PAD_CTL_PUS_UP) |
16 | +#define QSPI_PAD_CTRL1 (PAD_CTL_PUS_UP | PAD_CTL_DSE) | |
16 | 17 | |
17 | 18 | int dram_init(void) |
18 | 19 | { |
... | ... | @@ -32,6 +33,36 @@ |
32 | 33 | ARRAY_SIZE(lpuart4_pads)); |
33 | 34 | } |
34 | 35 | |
36 | +#ifdef CONFIG_FSL_QSPI | |
37 | +#ifndef CONFIG_DM_SPI | |
38 | +static iomux_cfg_t const quadspi_pads[] = { | |
39 | + MX7ULP_PAD_PTB8__QSPIA_SS0_B | MUX_PAD_CTRL(QSPI_PAD_CTRL1), | |
40 | + MX7ULP_PAD_PTB15__QSPIA_SCLK | MUX_PAD_CTRL(QSPI_PAD_CTRL1), | |
41 | + MX7ULP_PAD_PTB16__QSPIA_DATA3 | MUX_PAD_CTRL(QSPI_PAD_CTRL1), | |
42 | + MX7ULP_PAD_PTB17__QSPIA_DATA2 | MUX_PAD_CTRL(QSPI_PAD_CTRL1), | |
43 | + MX7ULP_PAD_PTB18__QSPIA_DATA1 | MUX_PAD_CTRL(QSPI_PAD_CTRL1), | |
44 | + MX7ULP_PAD_PTB19__QSPIA_DATA0 | MUX_PAD_CTRL(QSPI_PAD_CTRL1), | |
45 | +}; | |
46 | +#endif | |
47 | + | |
48 | +int board_qspi_init(void) | |
49 | +{ | |
50 | + u32 val; | |
51 | +#ifndef CONFIG_DM_SPI | |
52 | + mx7ulp_iomux_setup_multiple_pads(quadspi_pads, ARRAY_SIZE(quadspi_pads)); | |
53 | +#endif | |
54 | + | |
55 | + /* enable clock */ | |
56 | + val = readl(PCC1_RBASE + 0x94); | |
57 | + | |
58 | + if (!(val & 0x20000000)) { | |
59 | + writel(0x03000003, (PCC1_RBASE + 0x94)); | |
60 | + writel(0x43000003, (PCC1_RBASE + 0x94)); | |
61 | + } | |
62 | + return 0; | |
63 | +} | |
64 | +#endif | |
65 | + | |
35 | 66 | int board_early_init_f(void) |
36 | 67 | { |
37 | 68 | setup_iomux_uart(); |
... | ... | @@ -43,6 +74,10 @@ |
43 | 74 | { |
44 | 75 | /* address of boot parameters */ |
45 | 76 | gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; |
77 | + | |
78 | +#ifdef CONFIG_FSL_QSPI | |
79 | + board_qspi_init(); | |
80 | +#endif | |
46 | 81 | |
47 | 82 | return 0; |
48 | 83 | } |
configs/mx7ulp_evk_defconfig
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | CONFIG_ARCH_MX7ULP=y |
3 | 3 | CONFIG_SYS_TEXT_BASE=0x67800000 |
4 | 4 | CONFIG_TARGET_MX7ULP_EVK=y |
5 | -CONFIG_DEFAULT_DEVICE_TREE="imx7ulp-evk" | |
5 | +CONFIG_DEFAULT_DEVICE_TREE="imx7ulp-evk-qspi" | |
6 | 6 | CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx7ulp_evk/imximage.cfg" |
7 | 7 | CONFIG_HUSH_PARSER=y |
8 | 8 | CONFIG_CMD_BOOTZ=y |
... | ... | @@ -25,4 +25,10 @@ |
25 | 25 | CONFIG_DM_REGULATOR_GPIO=y |
26 | 26 | CONFIG_DM_SERIAL=y |
27 | 27 | CONFIG_FSL_LPUART=y |
28 | +CONFIG_CMD_SF=y | |
29 | +CONFIG_FSL_QSPI=y | |
30 | +CONFIG_DM_SPI=y | |
31 | +CONFIG_DM_SPI_FLASH=y | |
32 | +CONFIG_SPI_FLASH=y | |
33 | +CONFIG_SPI_FLASH_MACRONIX=y |
configs/mx7ulp_evk_plugin_defconfig
... | ... | @@ -2,7 +2,8 @@ |
2 | 2 | CONFIG_ARCH_MX7ULP=y |
3 | 3 | CONFIG_SYS_TEXT_BASE=0x67800000 |
4 | 4 | CONFIG_TARGET_MX7ULP_EVK=y |
5 | -CONFIG_DEFAULT_DEVICE_TREE="imx7ulp-evk" | |
5 | +CONFIG_USE_IMXIMG_PLUGIN=y | |
6 | +CONFIG_DEFAULT_DEVICE_TREE="imx7ulp-evk-qspi" | |
6 | 7 | CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx7ulp_evk/imximage.cfg" |
7 | 8 | CONFIG_HUSH_PARSER=y |
8 | 9 | CONFIG_CMD_GPIO=y |
... | ... | @@ -24,4 +25,10 @@ |
24 | 25 | CONFIG_DM_REGULATOR_GPIO=y |
25 | 26 | CONFIG_DM_SERIAL=y |
26 | 27 | CONFIG_FSL_LPUART=y |
28 | +CONFIG_CMD_SF=y | |
29 | +CONFIG_FSL_QSPI=y | |
30 | +CONFIG_DM_SPI=y | |
31 | +CONFIG_DM_SPI_FLASH=y | |
32 | +CONFIG_SPI_FLASH=y | |
33 | +CONFIG_SPI_FLASH_MACRONIX=y |
include/configs/mx7ulp_evk.h
... | ... | @@ -179,6 +179,19 @@ |
179 | 179 | #define CONFIG_CMD_CACHE |
180 | 180 | #endif |
181 | 181 | |
182 | +/* QSPI configs */ | |
183 | +#ifdef CONFIG_FSL_QSPI | |
184 | +#define CONFIG_SYS_FSL_QSPI_AHB | |
185 | +#define CONFIG_SF_DEFAULT_BUS 0 | |
186 | +#define CONFIG_SF_DEFAULT_CS 0 | |
187 | +#define CONFIG_SF_DEFAULT_SPEED 40000000 | |
188 | +#define CONFIG_SF_DEFAULT_MODE SPI_MODE_0 | |
189 | +#define FSL_QSPI_FLASH_NUM 1 | |
190 | +#define FSL_QSPI_FLASH_SIZE SZ_8M | |
191 | +#define QSPI0_BASE_ADDR 0x410A5000 | |
192 | +#define QSPI0_AMBA_BASE 0xC0000000 | |
193 | +#endif | |
194 | + | |
182 | 195 | #define CONFIG_OF_SYSTEM_SETUP |
183 | 196 | |
184 | 197 | #endif /* __CONFIG_H */ |
-
mentioned in commit 2fa815
-
mentioned in commit 2fa815
-
mentioned in commit 94111f
-
mentioned in commit 94111f
-
mentioned in commit 94111f
-
mentioned in commit 94111f
-
mentioned in commit e8795e
-
mentioned in commit e8795e
-
mentioned in commit 94111f
-
mentioned in commit e8795e
-
mentioned in commit e8795e
-
mentioned in commit e8795e
-
mentioned in commit e8795e
-
mentioned in commit ccd1dc