Commit 1a8150d4b16fbafa6f1d207ddb85eda7dc399e2d
Committed by
Stefano Babic
1 parent
cd562c8d07
Exists in
v2017.01-smarct4x
and in
30 other branches
imx: mx7dsabresd: Add support for MX7D SABRESD board
* Add i.MX7D SABRESD target board support with enabled modules: UART, PMIC, USB/OTG, SD, eMMC, ENET, I2C, 74LV IOX. Build target: mx7dsabresd_config Signed-off-by: Peng Fan <Peng.Fan@freescale.com> Signed-off-by: Fugang Duan <B38611@freescale.com> Signed-off-by: Ye.Li <B37916@freescale.com> Signed-off-by: Adrian Alonso <aalonso@freescale.com>
Showing 11 changed files with 1014 additions and 0 deletions Side-by-side Diff
- arch/arm/Kconfig
- arch/arm/cpu/armv7/mx7/Kconfig
- arch/arm/include/asm/arch-mx7/sys_proto.h
- board/freescale/mx7dsabresd/Kconfig
- board/freescale/mx7dsabresd/MAINTAINERS
- board/freescale/mx7dsabresd/Makefile
- board/freescale/mx7dsabresd/imximage.cfg
- board/freescale/mx7dsabresd/mx7dsabresd.c
- configs/mx7dsabresd_defconfig
- include/configs/mx7_common.h
- include/configs/mx7dsabresd.h
arch/arm/Kconfig
... | ... | @@ -442,6 +442,10 @@ |
442 | 442 | select CPU_V7 |
443 | 443 | select SUPPORT_SPL |
444 | 444 | |
445 | +config ARCH_MX7 | |
446 | + bool "Freescale MX7" | |
447 | + select CPU_V7 | |
448 | + | |
445 | 449 | config ARCH_MX6 |
446 | 450 | bool "Freescale MX6" |
447 | 451 | select CPU_V7 |
... | ... | @@ -664,6 +668,8 @@ |
664 | 668 | source "arch/arm/mach-keystone/Kconfig" |
665 | 669 | |
666 | 670 | source "arch/arm/mach-kirkwood/Kconfig" |
671 | + | |
672 | +source "arch/arm/cpu/armv7/mx7/Kconfig" | |
667 | 673 | |
668 | 674 | source "arch/arm/cpu/armv7/mx6/Kconfig" |
669 | 675 |
arch/arm/cpu/armv7/mx7/Kconfig
1 | +if ARCH_MX7 | |
2 | + | |
3 | +config MX7 | |
4 | + bool | |
5 | + default y | |
6 | + | |
7 | +config MX7D | |
8 | + bool | |
9 | + | |
10 | +choice | |
11 | + prompt "MX7 board select" | |
12 | + optional | |
13 | + | |
14 | +config TARGET_MX7DSABRESD | |
15 | + bool "mx7dsabresd" | |
16 | + select CPU_V7 | |
17 | + select DM | |
18 | + select DM_THERMAL | |
19 | + | |
20 | +endchoice | |
21 | + | |
22 | +config SYS_SOC | |
23 | + default "mx7" | |
24 | + | |
25 | +source "board/freescale/mx7dsabresd/Kconfig" | |
26 | + | |
27 | +endif |
arch/arm/include/asm/arch-mx7/sys_proto.h
board/freescale/mx7dsabresd/Kconfig
board/freescale/mx7dsabresd/MAINTAINERS
board/freescale/mx7dsabresd/Makefile
board/freescale/mx7dsabresd/imximage.cfg
1 | +/* | |
2 | + * Copyright (C) 2015 Freescale Semiconductor, Inc. | |
3 | + * | |
4 | + * SPDX-License-Identifier: GPL-2.0+ | |
5 | + * | |
6 | + * Refer docs/README.imxmage for more details about how-to configure | |
7 | + * and create imximage boot image | |
8 | + * | |
9 | + * The syntax is taken as close as possible with the kwbimage | |
10 | + */ | |
11 | + | |
12 | +#define __ASSEMBLY__ | |
13 | +#include <config.h> | |
14 | + | |
15 | +/* image version */ | |
16 | + | |
17 | +IMAGE_VERSION 2 | |
18 | + | |
19 | +/* | |
20 | + * Boot Device : sd | |
21 | + */ | |
22 | + | |
23 | +BOOT_FROM sd | |
24 | + | |
25 | +/* | |
26 | + * Device Configuration Data (DCD) | |
27 | + * | |
28 | + * Each entry must have the format: | |
29 | + * Addr-type Address Value | |
30 | + * | |
31 | + * where: | |
32 | + * Addr-type register length (1,2 or 4 bytes) | |
33 | + * Address absolute address of the register | |
34 | + * value value to be stored in the register | |
35 | + */ | |
36 | + | |
37 | +DATA 4 0x30340004 0x4F400005 | |
38 | + | |
39 | +DATA 4 0x30391000 0x00000002 | |
40 | +DATA 4 0x307a0000 0x01040001 | |
41 | +DATA 4 0x307a01a0 0x80400003 | |
42 | +DATA 4 0x307a01a4 0x00100020 | |
43 | +DATA 4 0x307a01a8 0x80100004 | |
44 | +DATA 4 0x307a0064 0x00400046 | |
45 | +DATA 4 0x307a0490 0x00000001 | |
46 | +DATA 4 0x307a00d0 0x00020083 | |
47 | +DATA 4 0x307a00d4 0x00690000 | |
48 | +DATA 4 0x307a00dc 0x09300004 | |
49 | +DATA 4 0x307a00e0 0x04080000 | |
50 | +DATA 4 0x307a00e4 0x00100004 | |
51 | +DATA 4 0x307a00f4 0x0000033f | |
52 | +DATA 4 0x307a0100 0x09081109 | |
53 | +DATA 4 0x307a0104 0x0007020d | |
54 | +DATA 4 0x307a0108 0x03040407 | |
55 | +DATA 4 0x307a010c 0x00002006 | |
56 | +DATA 4 0x307a0110 0x04020205 | |
57 | +DATA 4 0x307a0114 0x03030202 | |
58 | +DATA 4 0x307a0120 0x00000803 | |
59 | +DATA 4 0x307a0180 0x00800020 | |
60 | +DATA 4 0x307a0184 0x02000100 | |
61 | +DATA 4 0x307a0190 0x02098204 | |
62 | +DATA 4 0x307a0194 0x00030303 | |
63 | +DATA 4 0x307a0200 0x00000016 | |
64 | +DATA 4 0x307a0204 0x00171717 | |
65 | +DATA 4 0x307a0214 0x04040404 | |
66 | +DATA 4 0x307a0218 0x0f040404 | |
67 | +DATA 4 0x307a0240 0x06000604 | |
68 | +DATA 4 0x307a0244 0x00000001 | |
69 | +DATA 4 0x30391000 0x00000000 | |
70 | +DATA 4 0x30790000 0x17420f40 | |
71 | +DATA 4 0x30790004 0x10210100 | |
72 | +DATA 4 0x30790010 0x00060807 | |
73 | +DATA 4 0x307900b0 0x1010007e | |
74 | +DATA 4 0x3079009c 0x00000d6e | |
75 | +DATA 4 0x30790020 0x08080808 | |
76 | +DATA 4 0x30790030 0x08080808 | |
77 | +DATA 4 0x30790050 0x01000010 | |
78 | +DATA 4 0x30790050 0x00000010 | |
79 | + | |
80 | +DATA 4 0x307900c0 0x0e407304 | |
81 | +DATA 4 0x307900c0 0x0e447304 | |
82 | +DATA 4 0x307900c0 0x0e447306 | |
83 | + | |
84 | +CHECK_BITS_SET 4 0x307900c4 0x1 | |
85 | + | |
86 | +DATA 4 0x307900c0 0x0e447304 | |
87 | +DATA 4 0x307900c0 0x0e407304 | |
88 | + | |
89 | +DATA 4 0x30384130 0x00000000 | |
90 | +DATA 4 0x30340020 0x00000178 | |
91 | +DATA 4 0x30384130 0x00000002 | |
92 | +DATA 4 0x30790018 0x0000000f | |
93 | + | |
94 | +CHECK_BITS_SET 4 0x307a0004 0x1 |
board/freescale/mx7dsabresd/mx7dsabresd.c
1 | +/* | |
2 | + * Copyright (C) 2015 Freescale Semiconductor, Inc. | |
3 | + * | |
4 | + * SPDX-License-Identifier: GPL-2.0+ | |
5 | + */ | |
6 | + | |
7 | +#include <asm/arch/clock.h> | |
8 | +#include <asm/arch/imx-regs.h> | |
9 | +#include <asm/arch/mx7-pins.h> | |
10 | +#include <asm/arch/sys_proto.h> | |
11 | +#include <asm/gpio.h> | |
12 | +#include <asm/imx-common/iomux-v3.h> | |
13 | +#include <asm/imx-common/boot_mode.h> | |
14 | +#include <asm/io.h> | |
15 | +#include <linux/sizes.h> | |
16 | +#include <common.h> | |
17 | +#include <fsl_esdhc.h> | |
18 | +#include <mmc.h> | |
19 | +#include <miiphy.h> | |
20 | +#include <netdev.h> | |
21 | +#include <power/pmic.h> | |
22 | +#include <power/pfuze3000_pmic.h> | |
23 | +#include "../common/pfuze.h" | |
24 | +#include <i2c.h> | |
25 | +#include <asm/imx-common/mxc_i2c.h> | |
26 | +#include <asm/arch/crm_regs.h> | |
27 | + | |
28 | +DECLARE_GLOBAL_DATA_PTR; | |
29 | + | |
30 | +#define UART_PAD_CTRL (PAD_CTL_DSE_3P3V_49OHM | \ | |
31 | + PAD_CTL_PUS_PU100KOHM | PAD_CTL_HYS) | |
32 | + | |
33 | +#define USDHC_PAD_CTRL (PAD_CTL_DSE_3P3V_32OHM | PAD_CTL_SRE_SLOW | \ | |
34 | + PAD_CTL_HYS | PAD_CTL_PUE | PAD_CTL_PUS_PU47KOHM) | |
35 | + | |
36 | +#define ENET_PAD_CTRL (PAD_CTL_PUS_PU100KOHM | PAD_CTL_DSE_3P3V_49OHM) | |
37 | +#define ENET_PAD_CTRL_MII (PAD_CTL_DSE_3P3V_32OHM) | |
38 | + | |
39 | +#define ENET_RX_PAD_CTRL (PAD_CTL_PUS_PU100KOHM | PAD_CTL_DSE_3P3V_49OHM) | |
40 | + | |
41 | +#define I2C_PAD_CTRL (PAD_CTL_DSE_3P3V_32OHM | PAD_CTL_SRE_SLOW | \ | |
42 | + PAD_CTL_HYS | PAD_CTL_PUE | PAD_CTL_PUS_PU100KOHM) | |
43 | + | |
44 | +#ifdef CONFIG_SYS_I2C_MXC | |
45 | +#define PC MUX_PAD_CTRL(I2C_PAD_CTRL) | |
46 | +/* I2C1 for PMIC */ | |
47 | +struct i2c_pads_info i2c_pad_info1 = { | |
48 | + .scl = { | |
49 | + .i2c_mode = MX7D_PAD_I2C1_SCL__I2C1_SCL | PC, | |
50 | + .gpio_mode = MX7D_PAD_I2C1_SCL__GPIO4_IO8 | PC, | |
51 | + .gp = IMX_GPIO_NR(4, 8), | |
52 | + }, | |
53 | + .sda = { | |
54 | + .i2c_mode = MX7D_PAD_I2C1_SDA__I2C1_SDA | PC, | |
55 | + .gpio_mode = MX7D_PAD_I2C1_SDA__GPIO4_IO9 | PC, | |
56 | + .gp = IMX_GPIO_NR(4, 9), | |
57 | + }, | |
58 | +}; | |
59 | +#endif | |
60 | + | |
61 | +int dram_init(void) | |
62 | +{ | |
63 | + gd->ram_size = PHYS_SDRAM_SIZE; | |
64 | + | |
65 | + return 0; | |
66 | +} | |
67 | + | |
68 | +static iomux_v3_cfg_t const wdog_pads[] = { | |
69 | + MX7D_PAD_GPIO1_IO00__WDOG1_WDOG_B | MUX_PAD_CTRL(NO_PAD_CTRL), | |
70 | +}; | |
71 | + | |
72 | +static iomux_v3_cfg_t const uart1_pads[] = { | |
73 | + MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX | MUX_PAD_CTRL(UART_PAD_CTRL), | |
74 | + MX7D_PAD_UART1_RX_DATA__UART1_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL), | |
75 | +}; | |
76 | + | |
77 | +static iomux_v3_cfg_t const usdhc1_pads[] = { | |
78 | + MX7D_PAD_SD1_CLK__SD1_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
79 | + MX7D_PAD_SD1_CMD__SD1_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
80 | + MX7D_PAD_SD1_DATA0__SD1_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
81 | + MX7D_PAD_SD1_DATA1__SD1_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
82 | + MX7D_PAD_SD1_DATA2__SD1_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
83 | + MX7D_PAD_SD1_DATA3__SD1_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
84 | + | |
85 | + MX7D_PAD_SD1_CD_B__GPIO5_IO0 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
86 | + MX7D_PAD_SD1_RESET_B__GPIO5_IO2 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
87 | +}; | |
88 | + | |
89 | +static iomux_v3_cfg_t const usdhc3_emmc_pads[] = { | |
90 | + MX7D_PAD_SD3_CLK__SD3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
91 | + MX7D_PAD_SD3_CMD__SD3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
92 | + MX7D_PAD_SD3_DATA0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
93 | + MX7D_PAD_SD3_DATA1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
94 | + MX7D_PAD_SD3_DATA2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
95 | + MX7D_PAD_SD3_DATA3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
96 | + MX7D_PAD_SD3_DATA4__SD3_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
97 | + MX7D_PAD_SD3_DATA5__SD3_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
98 | + MX7D_PAD_SD3_DATA6__SD3_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
99 | + MX7D_PAD_SD3_DATA7__SD3_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
100 | + MX7D_PAD_SD3_STROBE__SD3_STROBE | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
101 | + | |
102 | + MX7D_PAD_SD3_RESET_B__GPIO6_IO11 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
103 | +}; | |
104 | + | |
105 | +#define IOX_SDI IMX_GPIO_NR(1, 9) | |
106 | +#define IOX_STCP IMX_GPIO_NR(1, 12) | |
107 | +#define IOX_SHCP IMX_GPIO_NR(1, 13) | |
108 | + | |
109 | +static iomux_v3_cfg_t const iox_pads[] = { | |
110 | + /* IOX_SDI */ | |
111 | + MX7D_PAD_GPIO1_IO09__GPIO1_IO9 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
112 | + /* IOX_STCP */ | |
113 | + MX7D_PAD_GPIO1_IO12__GPIO1_IO12 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
114 | + /* IOX_SHCP */ | |
115 | + MX7D_PAD_GPIO1_IO13__GPIO1_IO13 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
116 | +}; | |
117 | + | |
118 | +/* | |
119 | + * PCIE_DIS_B --> Q0 | |
120 | + * PCIE_RST_B --> Q1 | |
121 | + * HDMI_RST_B --> Q2 | |
122 | + * PERI_RST_B --> Q3 | |
123 | + * SENSOR_RST_B --> Q4 | |
124 | + * ENET_RST_B --> Q5 | |
125 | + * PERI_3V3_EN --> Q6 | |
126 | + * LCD_PWR_EN --> Q7 | |
127 | + */ | |
128 | +enum qn { | |
129 | + PCIE_DIS_B, | |
130 | + PCIE_RST_B, | |
131 | + HDMI_RST_B, | |
132 | + PERI_RST_B, | |
133 | + SENSOR_RST_B, | |
134 | + ENET_RST_B, | |
135 | + PERI_3V3_EN, | |
136 | + LCD_PWR_EN, | |
137 | +}; | |
138 | + | |
139 | +enum qn_func { | |
140 | + qn_reset, | |
141 | + qn_enable, | |
142 | + qn_disable, | |
143 | +}; | |
144 | + | |
145 | +enum qn_level { | |
146 | + qn_low = 0, | |
147 | + qn_high = 1, | |
148 | +}; | |
149 | + | |
150 | +static enum qn_level seq[3][2] = { | |
151 | + {0, 1}, {1, 1}, {0, 0} | |
152 | +}; | |
153 | + | |
154 | +static enum qn_func qn_output[8] = { | |
155 | + qn_disable, qn_reset, qn_reset, qn_reset, qn_reset, qn_reset, qn_enable, | |
156 | + qn_enable | |
157 | +}; | |
158 | + | |
159 | +void iox74lv_init(void) | |
160 | +{ | |
161 | + int i; | |
162 | + | |
163 | + for (i = 7; i >= 0; i--) { | |
164 | + gpio_direction_output(IOX_SHCP, 0); | |
165 | + gpio_direction_output(IOX_SDI, seq[qn_output[i]][0]); | |
166 | + udelay(500); | |
167 | + gpio_direction_output(IOX_SHCP, 1); | |
168 | + udelay(500); | |
169 | + } | |
170 | + | |
171 | + gpio_direction_output(IOX_STCP, 0); | |
172 | + udelay(500); | |
173 | + /* | |
174 | + * shift register will be output to pins | |
175 | + */ | |
176 | + gpio_direction_output(IOX_STCP, 1); | |
177 | + | |
178 | + for (i = 7; i >= 0; i--) { | |
179 | + gpio_direction_output(IOX_SHCP, 0); | |
180 | + gpio_direction_output(IOX_SDI, seq[qn_output[i]][1]); | |
181 | + udelay(500); | |
182 | + gpio_direction_output(IOX_SHCP, 1); | |
183 | + udelay(500); | |
184 | + } | |
185 | + gpio_direction_output(IOX_STCP, 0); | |
186 | + udelay(500); | |
187 | + /* | |
188 | + * shift register will be output to pins | |
189 | + */ | |
190 | + gpio_direction_output(IOX_STCP, 1); | |
191 | +}; | |
192 | + | |
193 | +void iox74lv_set(int index) | |
194 | +{ | |
195 | + int i; | |
196 | + for (i = 7; i >= 0; i--) { | |
197 | + gpio_direction_output(IOX_SHCP, 0); | |
198 | + | |
199 | + if (i == index) | |
200 | + gpio_direction_output(IOX_SDI, seq[qn_output[i]][0]); | |
201 | + else | |
202 | + gpio_direction_output(IOX_SDI, seq[qn_output[i]][1]); | |
203 | + udelay(500); | |
204 | + gpio_direction_output(IOX_SHCP, 1); | |
205 | + udelay(500); | |
206 | + } | |
207 | + | |
208 | + gpio_direction_output(IOX_STCP, 0); | |
209 | + udelay(500); | |
210 | + /* | |
211 | + * shift register will be output to pins | |
212 | + */ | |
213 | + gpio_direction_output(IOX_STCP, 1); | |
214 | + | |
215 | + for (i = 7; i >= 0; i--) { | |
216 | + gpio_direction_output(IOX_SHCP, 0); | |
217 | + gpio_direction_output(IOX_SDI, seq[qn_output[i]][1]); | |
218 | + udelay(500); | |
219 | + gpio_direction_output(IOX_SHCP, 1); | |
220 | + udelay(500); | |
221 | + } | |
222 | + | |
223 | + gpio_direction_output(IOX_STCP, 0); | |
224 | + udelay(500); | |
225 | + /* | |
226 | + * shift register will be output to pins | |
227 | + */ | |
228 | + gpio_direction_output(IOX_STCP, 1); | |
229 | +}; | |
230 | + | |
231 | +#ifdef CONFIG_FEC_MXC | |
232 | +static iomux_v3_cfg_t const fec1_pads[] = { | |
233 | + MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL | MUX_PAD_CTRL(ENET_RX_PAD_CTRL), | |
234 | + MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL), | |
235 | + MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL), | |
236 | + MX7D_PAD_ENET1_RGMII_RD2__ENET1_RGMII_RD2 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL), | |
237 | + MX7D_PAD_ENET1_RGMII_RD3__ENET1_RGMII_RD3 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL), | |
238 | + MX7D_PAD_ENET1_RGMII_RXC__ENET1_RGMII_RXC | MUX_PAD_CTRL(ENET_RX_PAD_CTRL), | |
239 | + MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
240 | + MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
241 | + MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
242 | + MX7D_PAD_ENET1_RGMII_TD2__ENET1_RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
243 | + MX7D_PAD_ENET1_RGMII_TD3__ENET1_RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
244 | + MX7D_PAD_ENET1_RGMII_TXC__ENET1_RGMII_TXC | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
245 | + MX7D_PAD_GPIO1_IO10__ENET1_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL_MII), | |
246 | + MX7D_PAD_GPIO1_IO11__ENET1_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL_MII), | |
247 | +}; | |
248 | + | |
249 | +static void setup_iomux_fec(void) | |
250 | +{ | |
251 | + imx_iomux_v3_setup_multiple_pads(fec1_pads, ARRAY_SIZE(fec1_pads)); | |
252 | +} | |
253 | +#endif | |
254 | + | |
255 | +static void setup_iomux_uart(void) | |
256 | +{ | |
257 | + imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads)); | |
258 | +} | |
259 | + | |
260 | +#ifdef CONFIG_FSL_ESDHC | |
261 | + | |
262 | +#define USDHC1_CD_GPIO IMX_GPIO_NR(5, 0) | |
263 | +#define USDHC1_PWR_GPIO IMX_GPIO_NR(5, 2) | |
264 | +#define USDHC3_PWR_GPIO IMX_GPIO_NR(6, 11) | |
265 | + | |
266 | +static struct fsl_esdhc_cfg usdhc_cfg[3] = { | |
267 | + {USDHC1_BASE_ADDR, 0, 4}, | |
268 | + {USDHC3_BASE_ADDR}, | |
269 | +}; | |
270 | + | |
271 | +static int mmc_get_env_devno(void) | |
272 | +{ | |
273 | + struct bootrom_sw_info **p = | |
274 | + (struct bootrom_sw_info **)ROM_SW_INFO_ADDR; | |
275 | + | |
276 | + u8 boot_type = (*p)->boot_dev_type; | |
277 | + u8 dev_no = (*p)->boot_dev_instance; | |
278 | + | |
279 | + /* If not boot from sd/mmc, use default value */ | |
280 | + if ((boot_type != BOOT_TYPE_SD) && (boot_type != BOOT_TYPE_MMC)) | |
281 | + return CONFIG_SYS_MMC_ENV_DEV; | |
282 | + | |
283 | + if (dev_no == 2) | |
284 | + dev_no--; | |
285 | + | |
286 | + return dev_no; | |
287 | +} | |
288 | + | |
289 | +static int mmc_map_to_kernel_blk(int dev_no) | |
290 | +{ | |
291 | + if (dev_no == 1) | |
292 | + dev_no++; | |
293 | + | |
294 | + return dev_no; | |
295 | +} | |
296 | + | |
297 | +int board_mmc_getcd(struct mmc *mmc) | |
298 | +{ | |
299 | + struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv; | |
300 | + int ret = 0; | |
301 | + | |
302 | + switch (cfg->esdhc_base) { | |
303 | + case USDHC1_BASE_ADDR: | |
304 | + ret = !gpio_get_value(USDHC1_CD_GPIO); | |
305 | + break; | |
306 | + case USDHC3_BASE_ADDR: | |
307 | + ret = 1; /* Assume uSDHC3 emmc is always present */ | |
308 | + break; | |
309 | + } | |
310 | + | |
311 | + return ret; | |
312 | +} | |
313 | + | |
314 | +int board_mmc_init(bd_t *bis) | |
315 | +{ | |
316 | + int i, ret; | |
317 | + /* | |
318 | + * According to the board_mmc_init() the following map is done: | |
319 | + * (U-boot device node) (Physical Port) | |
320 | + * mmc0 USDHC1 | |
321 | + * mmc2 USDHC3 (eMMC) | |
322 | + */ | |
323 | + for (i = 0; i < CONFIG_SYS_FSL_USDHC_NUM; i++) { | |
324 | + switch (i) { | |
325 | + case 0: | |
326 | + imx_iomux_v3_setup_multiple_pads( | |
327 | + usdhc1_pads, ARRAY_SIZE(usdhc1_pads)); | |
328 | + gpio_request(USDHC1_CD_GPIO, "usdhc1_cd"); | |
329 | + gpio_direction_input(USDHC1_CD_GPIO); | |
330 | + gpio_request(USDHC1_PWR_GPIO, "usdhc1_pwr"); | |
331 | + gpio_direction_output(USDHC1_PWR_GPIO, 0); | |
332 | + udelay(500); | |
333 | + gpio_direction_output(USDHC1_PWR_GPIO, 1); | |
334 | + usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK); | |
335 | + break; | |
336 | + case 1: | |
337 | + imx_iomux_v3_setup_multiple_pads( | |
338 | + usdhc3_emmc_pads, ARRAY_SIZE(usdhc3_emmc_pads)); | |
339 | + gpio_request(USDHC3_PWR_GPIO, "usdhc3_pwr"); | |
340 | + gpio_direction_output(USDHC3_PWR_GPIO, 0); | |
341 | + udelay(500); | |
342 | + gpio_direction_output(USDHC3_PWR_GPIO, 1); | |
343 | + usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK); | |
344 | + break; | |
345 | + default: | |
346 | + printf("Warning: you configured more USDHC controllers" | |
347 | + "(%d) than supported by the board\n", i + 1); | |
348 | + return -EINVAL; | |
349 | + } | |
350 | + | |
351 | + ret = fsl_esdhc_initialize(bis, &usdhc_cfg[i]); | |
352 | + if (ret) | |
353 | + return ret; | |
354 | + } | |
355 | + | |
356 | + return 0; | |
357 | +} | |
358 | + | |
359 | +static int check_mmc_autodetect(void) | |
360 | +{ | |
361 | + char *autodetect_str = getenv("mmcautodetect"); | |
362 | + | |
363 | + if ((autodetect_str != NULL) && | |
364 | + (strcmp(autodetect_str, "yes") == 0)) { | |
365 | + return 1; | |
366 | + } | |
367 | + | |
368 | + return 0; | |
369 | +} | |
370 | + | |
371 | +static void mmc_late_init(void) | |
372 | +{ | |
373 | + char cmd[32]; | |
374 | + char mmcblk[32]; | |
375 | + u32 dev_no = mmc_get_env_devno(); | |
376 | + | |
377 | + if (!check_mmc_autodetect()) | |
378 | + return; | |
379 | + | |
380 | + setenv_ulong("mmcdev", dev_no); | |
381 | + | |
382 | + /* Set mmcblk env */ | |
383 | + sprintf(mmcblk, "/dev/mmcblk%dp2 rootwait rw", | |
384 | + mmc_map_to_kernel_blk(dev_no)); | |
385 | + setenv("mmcroot", mmcblk); | |
386 | + | |
387 | + sprintf(cmd, "mmc dev %d", dev_no); | |
388 | + run_command(cmd, 0); | |
389 | +} | |
390 | + | |
391 | +#endif | |
392 | + | |
393 | +#ifdef CONFIG_FEC_MXC | |
394 | +int board_eth_init(bd_t *bis) | |
395 | +{ | |
396 | + int ret; | |
397 | + | |
398 | + setup_iomux_fec(); | |
399 | + | |
400 | + ret = fecmxc_initialize_multi(bis, 0, | |
401 | + CONFIG_FEC_MXC_PHYADDR, IMX_FEC_BASE); | |
402 | + if (ret) | |
403 | + printf("FEC1 MXC: %s:failed\n", __func__); | |
404 | + | |
405 | + return ret; | |
406 | +} | |
407 | + | |
408 | +static int setup_fec(void) | |
409 | +{ | |
410 | + struct iomuxc_gpr_base_regs *const iomuxc_gpr_regs | |
411 | + = (struct iomuxc_gpr_base_regs *) IOMUXC_GPR_BASE_ADDR; | |
412 | + | |
413 | + /* Use 125M anatop REF_CLK1 for ENET1, clear gpr1[13], gpr1[17]*/ | |
414 | + clrsetbits_le32(&iomuxc_gpr_regs->gpr[1], | |
415 | + (IOMUXC_GPR_GPR1_GPR_ENET1_TX_CLK_SEL_MASK | | |
416 | + IOMUXC_GPR_GPR1_GPR_ENET1_CLK_DIR_MASK), 0); | |
417 | + | |
418 | + return set_clk_enet(ENET_125MHz); | |
419 | +} | |
420 | + | |
421 | + | |
422 | +int board_phy_config(struct phy_device *phydev) | |
423 | +{ | |
424 | + /* enable rgmii rxc skew and phy mode select to RGMII copper */ | |
425 | + phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x21); | |
426 | + phy_write(phydev, MDIO_DEVAD_NONE, 0x1f, 0x7ea8); | |
427 | + phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x2f); | |
428 | + phy_write(phydev, MDIO_DEVAD_NONE, 0x1f, 0x71b7); | |
429 | + | |
430 | + if (phydev->drv->config) | |
431 | + phydev->drv->config(phydev); | |
432 | + return 0; | |
433 | +} | |
434 | +#endif | |
435 | + | |
436 | +int board_early_init_f(void) | |
437 | +{ | |
438 | + setup_iomux_uart(); | |
439 | + | |
440 | + setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1); | |
441 | + | |
442 | + return 0; | |
443 | +} | |
444 | + | |
445 | +int board_init(void) | |
446 | +{ | |
447 | + /* address of boot parameters */ | |
448 | + gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; | |
449 | + | |
450 | + imx_iomux_v3_setup_multiple_pads(iox_pads, ARRAY_SIZE(iox_pads)); | |
451 | + | |
452 | + iox74lv_init(); | |
453 | + | |
454 | +#ifdef CONFIG_FEC_MXC | |
455 | + setup_fec(); | |
456 | +#endif | |
457 | + | |
458 | + return 0; | |
459 | +} | |
460 | + | |
461 | +#ifdef CONFIG_CMD_BMODE | |
462 | +static const struct boot_mode board_boot_modes[] = { | |
463 | + /* 4 bit bus width */ | |
464 | + {"sd1", MAKE_CFGVAL(0x10, 0x10, 0x00, 0x00)}, | |
465 | + {"emmc", MAKE_CFGVAL(0x10, 0x2a, 0x00, 0x00)}, | |
466 | + {NULL, 0}, | |
467 | +}; | |
468 | +#endif | |
469 | + | |
470 | +#ifdef CONFIG_POWER | |
471 | +#define I2C_PMIC 0 | |
472 | +int power_init_board(void) | |
473 | +{ | |
474 | + struct pmic *p; | |
475 | + int ret; | |
476 | + unsigned int reg, rev_id; | |
477 | + | |
478 | + ret = power_pfuze3000_init(I2C_PMIC); | |
479 | + if (ret) | |
480 | + return ret; | |
481 | + | |
482 | + p = pmic_get("PFUZE3000"); | |
483 | + ret = pmic_probe(p); | |
484 | + if (ret) | |
485 | + return ret; | |
486 | + | |
487 | + pmic_reg_read(p, PFUZE3000_DEVICEID, ®); | |
488 | + pmic_reg_read(p, PFUZE3000_REVID, &rev_id); | |
489 | + printf("PMIC: PFUZE3000 DEV_ID=0x%x REV_ID=0x%x\n", reg, rev_id); | |
490 | + | |
491 | + /* disable Low Power Mode during standby mode */ | |
492 | + pmic_reg_read(p, PFUZE3000_LDOGCTL, ®); | |
493 | + reg |= 0x1; | |
494 | + pmic_reg_write(p, PFUZE3000_LDOGCTL, reg); | |
495 | + | |
496 | + return 0; | |
497 | +} | |
498 | +#endif | |
499 | + | |
500 | +int board_late_init(void) | |
501 | +{ | |
502 | +#ifdef CONFIG_CMD_BMODE | |
503 | + add_board_boot_modes(board_boot_modes); | |
504 | +#endif | |
505 | + | |
506 | +#ifdef CONFIG_ENV_IS_IN_MMC | |
507 | + mmc_late_init(); | |
508 | +#endif | |
509 | + | |
510 | + imx_iomux_v3_setup_multiple_pads(wdog_pads, ARRAY_SIZE(wdog_pads)); | |
511 | + | |
512 | + set_wdog_reset((struct wdog_regs *)WDOG1_BASE_ADDR); | |
513 | + | |
514 | + return 0; | |
515 | +} | |
516 | + | |
517 | +u32 get_board_rev(void) | |
518 | +{ | |
519 | + return get_cpu_rev(); | |
520 | +} | |
521 | + | |
522 | +int checkboard(void) | |
523 | +{ | |
524 | + puts("Board: i.MX7D SABRESD\n"); | |
525 | + | |
526 | + return 0; | |
527 | +} | |
528 | + | |
529 | +#ifdef CONFIG_USB_EHCI_MX7 | |
530 | +iomux_v3_cfg_t const usb_otg1_pads[] = { | |
531 | + MX7D_PAD_GPIO1_IO05__USB_OTG1_PWR | MUX_PAD_CTRL(NO_PAD_CTRL), | |
532 | +}; | |
533 | + | |
534 | +iomux_v3_cfg_t const usb_otg2_pads[] = { | |
535 | + MX7D_PAD_UART3_CTS_B__USB_OTG2_PWR | MUX_PAD_CTRL(NO_PAD_CTRL), | |
536 | +}; | |
537 | + | |
538 | +int board_ehci_hcd_init(int port) | |
539 | +{ | |
540 | + switch (port) { | |
541 | + case 0: | |
542 | + imx_iomux_v3_setup_multiple_pads(usb_otg1_pads, | |
543 | + ARRAY_SIZE(usb_otg1_pads)); | |
544 | + break; | |
545 | + case 1: | |
546 | + imx_iomux_v3_setup_multiple_pads(usb_otg2_pads, | |
547 | + ARRAY_SIZE(usb_otg2_pads)); | |
548 | + break; | |
549 | + default: | |
550 | + printf("MXC USB port %d not yet supported\n", port); | |
551 | + return -EINVAL; | |
552 | + } | |
553 | + return 0; | |
554 | +} | |
555 | +#endif |
configs/mx7dsabresd_defconfig
1 | +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx7dsabresd/imximage.cfg,MX7D" | |
2 | +CONFIG_ARM=y | |
3 | +CONFIG_ARCH_MX7=y | |
4 | +CONFIG_TARGET_MX7DSABRESD=y | |
5 | +CONFIG_SYS_MALLOC_F=y | |
6 | +CONFIG_SYS_MALLOC_F_LEN=0x400 | |
7 | +CONFIG_CMD_NET=y | |
8 | +CONFIG_CMD_PING=y | |
9 | +CONFIG_CMD_DHCP=y | |
10 | +# CONFIG_CMD_BOOTD is not set | |
11 | +# CONFIG_CMD_SETEXPR is not set | |
12 | +# CONFIG_CMD_IMI is not set | |
13 | +# CONFIG_CMD_IMLS is not set | |
14 | +# CONFIG_CMD_XIMG is not set |
include/configs/mx7_common.h
1 | +/* | |
2 | + * Copyright (C) 2015 Freescale Semiconductor, Inc. | |
3 | + * | |
4 | + * Configuration settings for the Freescale i.MX7. | |
5 | + * | |
6 | + * SPDX-License-Identifier: GPL-2.0+ | |
7 | + */ | |
8 | + | |
9 | +#ifndef __MX7_COMMON_H | |
10 | +#define __MX7_COMMON_H | |
11 | + | |
12 | +#include <linux/sizes.h> | |
13 | +#include <asm/arch/imx-regs.h> | |
14 | +#include <asm/imx-common/gpio.h> | |
15 | + | |
16 | +#ifndef CONFIG_MX7 | |
17 | +#define CONFIG_MX7 | |
18 | +#endif | |
19 | + | |
20 | +/* Timer settings */ | |
21 | +#define CONFIG_MXC_GPT_HCLK | |
22 | +#define CONFIG_SYSCOUNTER_TIMER | |
23 | +#define CONFIG_SC_TIMER_CLK 8000000 /* 8Mhz */ | |
24 | + | |
25 | +/* Enable iomux-lpsr support */ | |
26 | +#define CONFIG_IOMUX_LPSR | |
27 | +#define CONFIG_IMX_FIXED_IVT_OFFSET | |
28 | + | |
29 | +/* Size of malloc() pool */ | |
30 | +#define CONFIG_SYS_MALLOC_LEN (32 * SZ_1M) | |
31 | + | |
32 | +#define CONFIG_BOARD_EARLY_INIT_F | |
33 | +#define CONFIG_BOARD_LATE_INIT | |
34 | + | |
35 | +#define CONFIG_ROM_UNIFIED_SECTIONS | |
36 | +#define CONFIG_SYS_GENERIC_BOARD | |
37 | +#define CONFIG_DISPLAY_CPUINFO | |
38 | +#define CONFIG_DISPLAY_BOARDINFO | |
39 | + | |
40 | +#define CONFIG_LOADADDR 0x80800000 | |
41 | +#define CONFIG_SYS_TEXT_BASE 0x87800000 | |
42 | + | |
43 | +#ifndef CONFIG_BOOTDELAY | |
44 | +#define CONFIG_BOOTDELAY 3 | |
45 | +#endif | |
46 | + | |
47 | +/* allow to overwrite serial and ethaddr */ | |
48 | +#define CONFIG_ENV_OVERWRITE | |
49 | +#define CONFIG_CONS_INDEX 1 | |
50 | +#define CONFIG_BAUDRATE 115200 | |
51 | + | |
52 | +/* Filesystems and image support */ | |
53 | +#define CONFIG_OF_LIBFDT | |
54 | +#define CONFIG_CMD_BOOTZ | |
55 | +#define CONFIG_DOS_PARTITION | |
56 | +#define CONFIG_CMD_EXT2 | |
57 | +#define CONFIG_CMD_EXT4 | |
58 | +#define CONFIG_CMD_EXT4_WRITE | |
59 | +#define CONFIG_CMD_FAT | |
60 | + | |
61 | +/* Miscellaneous configurable options */ | |
62 | +#undef CONFIG_CMD_IMLS | |
63 | +#define CONFIG_SYS_LONGHELP | |
64 | +#define CONFIG_SYS_HUSH_PARSER | |
65 | +#define CONFIG_CMDLINE_EDITING | |
66 | +#define CONFIG_AUTO_COMPLETE | |
67 | +#define CONFIG_SYS_CBSIZE 512 | |
68 | +#define CONFIG_SYS_MAXARGS 32 | |
69 | +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE | |
70 | + | |
71 | +#ifndef CONFIG_SYS_DCACHE_OFF | |
72 | +#define CONFIG_CMD_CACHE | |
73 | +#endif | |
74 | + | |
75 | +/* GPIO */ | |
76 | +#define CONFIG_MXC_GPIO | |
77 | +#define CONFIG_CMD_GPIO | |
78 | + | |
79 | +/* UART */ | |
80 | +#define CONFIG_MXC_UART | |
81 | +#define CONFIG_MXC_UART_BASE UART1_IPS_BASE_ADDR | |
82 | + | |
83 | +/* MMC */ | |
84 | +#define CONFIG_MMC | |
85 | +#define CONFIG_CMD_MMC | |
86 | +#define CONFIG_GENERIC_MMC | |
87 | +#define CONFIG_BOUNCE_BUFFER | |
88 | +#define CONFIG_FSL_ESDHC | |
89 | +#define CONFIG_FSL_USDHC | |
90 | + | |
91 | +/* Fuses */ | |
92 | +#define CONFIG_CMD_FUSE | |
93 | +#define CONFIG_MXC_OCOTP | |
94 | + | |
95 | +#endif |
include/configs/mx7dsabresd.h
1 | +/* | |
2 | + * Copyright (C) 2015 Freescale Semiconductor, Inc. | |
3 | + * | |
4 | + * Configuration settings for the Freescale i.MX7D SABRESD board. | |
5 | + * | |
6 | + * SPDX-License-Identifier: GPL-2.0+ | |
7 | + */ | |
8 | + | |
9 | +#ifndef __MX7D_SABRESD_CONFIG_H | |
10 | +#define __MX7D_SABRESD_CONFIG_H | |
11 | + | |
12 | +#include "mx7_common.h" | |
13 | + | |
14 | +#define CONFIG_DBG_MONITOR | |
15 | +#define PHYS_SDRAM_SIZE SZ_1G | |
16 | + | |
17 | +/* Network */ | |
18 | +#define CONFIG_CMD_MII | |
19 | +#define CONFIG_FEC_MXC | |
20 | +#define CONFIG_MII | |
21 | +#define CONFIG_FEC_XCV_TYPE RGMII | |
22 | +#define CONFIG_ETHPRIME "FEC" | |
23 | +#define CONFIG_FEC_MXC_PHYADDR 0 | |
24 | + | |
25 | +#define CONFIG_PHYLIB | |
26 | +#define CONFIG_PHY_BROADCOM | |
27 | +#define CONFIG_FEC_DMA_MINALIGN 64 | |
28 | +/* ENET1 */ | |
29 | +#define IMX_FEC_BASE ENET_IPS_BASE_ADDR | |
30 | + | |
31 | +/* MMC Config*/ | |
32 | +#define CONFIG_SYS_FSL_ESDHC_ADDR 0 | |
33 | + | |
34 | +/* PMIC */ | |
35 | +#define CONFIG_POWER | |
36 | +#define CONFIG_POWER_I2C | |
37 | +#define CONFIG_POWER_PFUZE3000 | |
38 | +#define CONFIG_POWER_PFUZE3000_I2C_ADDR 0x08 | |
39 | + | |
40 | +#undef CONFIG_BOOTM_NETBSD | |
41 | +#undef CONFIG_BOOTM_PLAN9 | |
42 | +#undef CONFIG_BOOTM_RTEMS | |
43 | + | |
44 | +#undef CONFIG_CMD_EXPORTENV | |
45 | +#undef CONFIG_CMD_IMPORTENV | |
46 | + | |
47 | +/* I2C configs */ | |
48 | +#define CONFIG_CMD_I2C | |
49 | +#define CONFIG_SYS_I2C | |
50 | +#define CONFIG_SYS_I2C_MXC | |
51 | +#define CONFIG_SYS_I2C_MXC_I2C1 | |
52 | +#define CONFIG_SYS_I2C_SPEED 100000 | |
53 | + | |
54 | +#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */ | |
55 | +#define CONFIG_SYS_MMC_IMG_LOAD_PART 1 | |
56 | + | |
57 | +#define CONFIG_MFG_ENV_SETTINGS \ | |
58 | + "mfgtool_args=setenv bootargs console=${console},${baudrate} " \ | |
59 | + "rdinit=/linuxrc " \ | |
60 | + "g_mass_storage.stall=0 g_mass_storage.removable=1 " \ | |
61 | + "g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF "\ | |
62 | + "g_mass_storage.iSerialNumber=\"\" "\ | |
63 | + "clk_ignore_unused "\ | |
64 | + "\0" \ | |
65 | + "initrd_addr=0x83800000\0" \ | |
66 | + "initrd_high=0xffffffff\0" \ | |
67 | + "bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};\0" \ | |
68 | + | |
69 | +#define CONFIG_EXTRA_ENV_SETTINGS \ | |
70 | + CONFIG_MFG_ENV_SETTINGS \ | |
71 | + "script=boot.scr\0" \ | |
72 | + "image=zImage\0" \ | |
73 | + "console=ttymxc0\0" \ | |
74 | + "fdt_high=0xffffffff\0" \ | |
75 | + "initrd_high=0xffffffff\0" \ | |
76 | + "fdt_file=imx7d-sdb.dtb\0" \ | |
77 | + "fdt_addr=0x83000000\0" \ | |
78 | + "boot_fdt=try\0" \ | |
79 | + "ip_dyn=yes\0" \ | |
80 | + "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \ | |
81 | + "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \ | |
82 | + "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \ | |
83 | + "mmcautodetect=yes\0" \ | |
84 | + "mmcargs=setenv bootargs console=${console},${baudrate} " \ | |
85 | + "root=${mmcroot}\0" \ | |
86 | + "loadbootscript=" \ | |
87 | + "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \ | |
88 | + "bootscript=echo Running bootscript from mmc ...; " \ | |
89 | + "source\0" \ | |
90 | + "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \ | |
91 | + "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \ | |
92 | + "mmcboot=echo Booting from mmc ...; " \ | |
93 | + "run mmcargs; " \ | |
94 | + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ | |
95 | + "if run loadfdt; then " \ | |
96 | + "bootz ${loadaddr} - ${fdt_addr}; " \ | |
97 | + "else " \ | |
98 | + "if test ${boot_fdt} = try; then " \ | |
99 | + "bootz; " \ | |
100 | + "else " \ | |
101 | + "echo WARN: Cannot load the DT; " \ | |
102 | + "fi; " \ | |
103 | + "fi; " \ | |
104 | + "else " \ | |
105 | + "bootz; " \ | |
106 | + "fi;\0" \ | |
107 | + "netargs=setenv bootargs console=${console},${baudrate} " \ | |
108 | + "root=/dev/nfs " \ | |
109 | + "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \ | |
110 | + "netboot=echo Booting from net ...; " \ | |
111 | + "run netargs; " \ | |
112 | + "if test ${ip_dyn} = yes; then " \ | |
113 | + "setenv get_cmd dhcp; " \ | |
114 | + "else " \ | |
115 | + "setenv get_cmd tftp; " \ | |
116 | + "fi; " \ | |
117 | + "${get_cmd} ${image}; " \ | |
118 | + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ | |
119 | + "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \ | |
120 | + "bootz ${loadaddr} - ${fdt_addr}; " \ | |
121 | + "else " \ | |
122 | + "if test ${boot_fdt} = try; then " \ | |
123 | + "bootz; " \ | |
124 | + "else " \ | |
125 | + "echo WARN: Cannot load the DT; " \ | |
126 | + "fi; " \ | |
127 | + "fi; " \ | |
128 | + "else " \ | |
129 | + "bootz; " \ | |
130 | + "fi;\0" | |
131 | + | |
132 | +#define CONFIG_BOOTCOMMAND \ | |
133 | + "mmc dev ${mmcdev};" \ | |
134 | + "mmc dev ${mmcdev}; if mmc rescan; then " \ | |
135 | + "if run loadbootscript; then " \ | |
136 | + "run bootscript; " \ | |
137 | + "else " \ | |
138 | + "if run loadimage; then " \ | |
139 | + "run mmcboot; " \ | |
140 | + "else run netboot; " \ | |
141 | + "fi; " \ | |
142 | + "fi; " \ | |
143 | + "else run netboot; fi" | |
144 | + | |
145 | +#define CONFIG_CMD_MEMTEST | |
146 | +#define CONFIG_SYS_MEMTEST_START 0x80000000 | |
147 | +#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + 0x20000000) | |
148 | + | |
149 | +#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR | |
150 | +#define CONFIG_SYS_HZ 1000 | |
151 | + | |
152 | +#define CONFIG_STACKSIZE SZ_128K | |
153 | + | |
154 | +/* Physical Memory Map */ | |
155 | +#define CONFIG_NR_DRAM_BANKS 1 | |
156 | +#define PHYS_SDRAM MMDC0_ARB_BASE_ADDR | |
157 | + | |
158 | +#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM | |
159 | +#define CONFIG_SYS_INIT_RAM_ADDR IRAM_BASE_ADDR | |
160 | +#define CONFIG_SYS_INIT_RAM_SIZE IRAM_SIZE | |
161 | + | |
162 | +#define CONFIG_SYS_INIT_SP_OFFSET \ | |
163 | + (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE) | |
164 | +#define CONFIG_SYS_INIT_SP_ADDR \ | |
165 | + (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET) | |
166 | + | |
167 | +/* FLASH and environment organization */ | |
168 | +#define CONFIG_SYS_NO_FLASH | |
169 | +#define CONFIG_ENV_SIZE SZ_8K | |
170 | +#define CONFIG_ENV_IS_IN_MMC | |
171 | +#define CONFIG_ENV_OFFSET (8 * SZ_64K) | |
172 | +#define CONFIG_SYS_FSL_USDHC_NUM 2 | |
173 | + | |
174 | +#define CONFIG_SYS_MMC_ENV_DEV 0 /* USDHC1 */ | |
175 | +#define CONFIG_SYS_MMC_ENV_PART 0 /* user area */ | |
176 | +#define CONFIG_MMCROOT "/dev/mmcblk0p2" /* USDHC1 */ | |
177 | + | |
178 | +#define CONFIG_CMD_BMODE | |
179 | + | |
180 | +/* USB Configs */ | |
181 | +#define CONFIG_CMD_USB | |
182 | +#define CONFIG_USB_EHCI | |
183 | +#define CONFIG_USB_EHCI_MX7 | |
184 | +#define CONFIG_USB_STORAGE | |
185 | +#define CONFIG_EHCI_HCD_INIT_AFTER_RESET | |
186 | +#define CONFIG_USB_HOST_ETHER | |
187 | +#define CONFIG_USB_ETHER_ASIX | |
188 | +#define CONFIG_MXC_USB_PORTSC (PORT_PTS_UTMI | PORT_PTS_PTW) | |
189 | +#define CONFIG_MXC_USB_FLAGS 0 | |
190 | +#define CONFIG_USB_MAX_CONTROLLER_COUNT 2 | |
191 | + | |
192 | +#define CONFIG_IMX_THERMAL | |
193 | + | |
194 | +#endif /* __CONFIG_H */ |