OpenWrt – Diff between revs 2 and 3
?pathlinks?
Rev 2 | Rev 3 | |||
---|---|---|---|---|
1 | From 6af0148a38b23ba761905f98a7211fab986033ce Mon Sep 17 00:00:00 2001 |
1 | From 25de6430219d3f3698d709c10358fbea17b24cf1 Mon Sep 17 00:00:00 2001 |
|
2 | From: Michael Heimpold <mhei@heimpold.de> |
2 | From: Michael Heimpold <mhei@heimpold.de> |
|
3 | Date: Thu, 13 Sep 2018 21:40:19 +0200 |
3 | Date: Fri, 21 Apr 2017 11:08:19 +0200 |
|
4 | Subject: [PATCH] arm: mxs: add support for I2SE's Duckbill boards |
4 | Subject: [PATCH] arm: mxs: add support for I2SE's Duckbill boards |
|
5 | |
5 | |
|
6 | The Duckbill devices are small, pen-drive sized boards based on |
6 | The Duckbill devices are small, pen-drive sized boards based on |
|
7 | NXP's i.MX28 SoC. While the initial variants (Duckbill series) were |
7 | NXP's i.MX28 SoC. While the initial variants (Duckbill series) were |
|
8 | equipped with a micro SD card slot only, the latest generation |
8 | equipped with a micro SD card slot only, the latest generation |
|
9 | (Duckbill 2 series) have an additional internal eMMC onboard. |
9 | (Duckbill 2 series) have an additional internal eMMC onboard. |
|
10 | |
10 | |
|
11 | Both device generations consist of four "family members": |
11 | Both device generations consists of four "family members": |
|
12 | |
12 | |
|
13 | - Duckbill/Duckbill 2: generic board, intended to be used as |
13 | - Duckbill/Duckbill 2: generic board, intended to be used as |
|
14 | baseboard for custom designs and/or as development board |
14 | baseboard for custom designs and/or as development board |
|
15 | |
15 | |
|
16 | - Duckbill EnOcean/Duckbill 2 EnOcean: come with an EnOcean |
16 | - Duckbill EnOcean/Duckbill 2 EnOcean: come with an EnOcean |
|
17 | daugther board equipped with the popular TCM310 module |
17 | daugther board equipped with the popular TCM310 module |
|
18 | |
18 | |
|
19 | - Duckbill 485/Duckbill 2 485: as the name implies, these |
19 | - Duckbill 485/Duckbill 2 485: as the name implies, these |
|
20 | devices are intended to be used as Ethernet - RS485 converters |
20 | devices are intended to be used as Ethernet - RS485 converters |
|
21 | |
21 | |
|
22 | - Duckbill SPI/Duckbill 2 SPI: not sold separately, but used |
22 | - Duckbill SPI/Duckbill 2 SPI: not sold separately, but used |
|
23 | in I2SE's development kits for Green PHY HomePlug Powerline |
23 | in I2SE's development kits for Green PHY HomePlug Powerline |
|
24 | communication |
24 | communication |
|
25 | |
25 | |
|
26 | Signed-off-by: Michael Heimpold <mhei@heimpold.de> |
26 | Signed-off-by: Michael Heimpold <mhei@heimpold.de> |
|
27 | Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> |
27 | Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> |
|
28 | --- |
28 | --- |
|
29 | arch/arm/mach-imx/mxs/Kconfig | 5 + |
29 | arch/arm/Kconfig | 9 +- |
|
30 | board/i2se/duckbill/Kconfig | 15 +++ |
30 | board/i2se/duckbill/Kconfig | 15 +++ |
|
31 | board/i2se/duckbill/MAINTAINERS | 6 ++ |
31 | board/i2se/duckbill/MAINTAINERS | 6 ++ |
|
32 | board/i2se/duckbill/Makefile | 10 ++ |
32 | board/i2se/duckbill/Makefile | 12 +++ |
|
33 | board/i2se/duckbill/duckbill.c | 186 ++++++++++++++++++++++++++++++++ |
33 | board/i2se/duckbill/duckbill.c | 181 ++++++++++++++++++++++++++++++++++++ |
|
34 | board/i2se/duckbill/iomux.c | 156 +++++++++++++++++++++++++++ |
34 | board/i2se/duckbill/iomux.c | 157 +++++++++++++++++++++++++++++++ |
|
35 | configs/duckbill_defconfig | 38 +++++++ |
35 | configs/duckbill_defconfig | 31 +++++++ |
|
36 | include/configs/duckbill.h | 179 ++++++++++++++++++++++++++++++ |
36 | include/configs/duckbill.h | 199 ++++++++++++++++++++++++++++++++++++++++ |
|
37 | 8 files changed, 595 insertions(+) |
37 | 8 files changed, 609 insertions(+), 1 deletion(-) |
|
38 | create mode 100644 board/i2se/duckbill/Kconfig |
38 | create mode 100644 board/i2se/duckbill/Kconfig |
|
39 | create mode 100644 board/i2se/duckbill/MAINTAINERS |
39 | create mode 100644 board/i2se/duckbill/MAINTAINERS |
|
40 | create mode 100644 board/i2se/duckbill/Makefile |
40 | create mode 100644 board/i2se/duckbill/Makefile |
|
41 | create mode 100644 board/i2se/duckbill/duckbill.c |
41 | create mode 100644 board/i2se/duckbill/duckbill.c |
|
42 | create mode 100644 board/i2se/duckbill/iomux.c |
42 | create mode 100644 board/i2se/duckbill/iomux.c |
|
43 | create mode 100644 configs/duckbill_defconfig |
43 | create mode 100644 configs/duckbill_defconfig |
|
44 | create mode 100644 include/configs/duckbill.h |
44 | create mode 100644 include/configs/duckbill.h |
|
45 | |
- | ||
46 | diff --git a/arch/arm/mach-imx/mxs/Kconfig b/arch/arm/mach-imx/mxs/Kconfig |
- | ||
47 | index 68072d5a1f..82aaa3ef76 100644 |
45 | |
|
48 | --- a/arch/arm/mach-imx/mxs/Kconfig |
46 | --- a/arch/arm/Kconfig |
|
49 | +++ b/arch/arm/mach-imx/mxs/Kconfig |
47 | +++ b/arch/arm/Kconfig |
|
50 | @@ -50,6 +50,10 @@ config TARGET_APX4DEVKIT |
48 | @@ -373,6 +373,12 @@ config TARGET_MX28EVK |
|
51 | config TARGET_BG0900 |
49 | select SUPPORT_SPL |
|
52 | bool "Support bg0900" |
50 | select BOARD_EARLY_INIT_F |
|
53 | |
51 | |
|
54 | +config TARGET_DUCKBILL |
52 | +config TARGET_DUCKBILL |
|
55 | + bool "Support duckbill" |
53 | + bool "Support duckbill" |
|
- | 54 | + select CPU_ARM926EJS |
||
- | 55 | + select SUPPORT_SPL |
||
56 | + select BOARD_EARLY_INIT_F |
56 | + select BOARD_EARLY_INIT_F |
|
57 | + |
57 | + |
|
58 | config TARGET_MX28EVK |
58 | config TARGET_MX23_OLINUXINO |
|
59 | bool "Support mx28evk" |
59 | bool "Support mx23_olinuxino" |
|
60 | select BOARD_EARLY_INIT_F |
60 | select CPU_ARM926EJS |
|
61 | @@ -67,6 +71,7 @@ config SYS_SOC |
61 | @@ -1250,6 +1256,7 @@ source "board/gumstix/pepper/Kconfig" |
|
62 | |
- | ||
- | 62 | source "board/h2200/Kconfig" |
||
63 | source "board/bluegiga/apx4devkit/Kconfig" |
63 | source "board/hisilicon/hikey/Kconfig" |
|
64 | source "board/freescale/mx28evk/Kconfig" |
64 | source "board/hisilicon/poplar/Kconfig" |
|
65 | +source "board/i2se/duckbill/Kconfig" |
65 | +source "board/i2se/duckbill/Kconfig" |
|
66 | source "board/ppcag/bg0900/Kconfig" |
66 | source "board/imx31_phycore/Kconfig" |
|
67 | source "board/schulercontrol/sc_sps_1/Kconfig" |
67 | source "board/isee/igep003x/Kconfig" |
|
68 | source "board/technologic/ts4600/Kconfig" |
68 | source "board/olimex/mx23_olinuxino/Kconfig" |
|
69 | diff --git a/board/i2se/duckbill/Kconfig b/board/i2se/duckbill/Kconfig |
69 | @@ -1279,7 +1286,7 @@ source "arch/arm/Kconfig.debug" |
|
- | 70 | endmenu |
||
- | 71 | |
||
70 | new file mode 100644 |
72 | config SPL_LDSCRIPT |
|
- | 73 | - default "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds" if TARGET_APX4DEVKIT || TARGET_BG0900 || TARGET_M28EVK || TARGET_MX23_OLINUXINO || TARGET_MX23EVK || TARGET_MX28EVK || TARGET_SANSA_FUZE_PLUS || TARGET_SC_SPS_1 || TARGET_TS4600 || TARGET_XFI3 |
||
71 | index 0000000000..98c1e4689f |
74 | + default "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds" if TARGET_APX4DEVKIT || TARGET_BG0900 || TARGET_M28EVK || TARGET_MX23_OLINUXINO || TARGET_MX23EVK || TARGET_MX28EVK || TARGET_DUCKBILL || TARGET_SANSA_FUZE_PLUS || TARGET_SC_SPS_1 || TARGET_TS4600 || TARGET_XFI3 |
|
- | 75 | default "arch/arm/cpu/arm1136/u-boot-spl.lds" if CPU_ARM1136 |
||
- | 76 | default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64 |
||
- | 77 | |
||
72 | --- /dev/null |
78 | --- /dev/null |
|
73 | +++ b/board/i2se/duckbill/Kconfig |
79 | +++ b/board/i2se/duckbill/Kconfig |
|
74 | @@ -0,0 +1,15 @@ |
80 | @@ -0,0 +1,15 @@ |
|
75 | +if TARGET_DUCKBILL |
81 | +if TARGET_DUCKBILL |
|
76 | + |
82 | + |
|
77 | +config SYS_BOARD |
83 | +config SYS_BOARD |
|
78 | + default "duckbill" |
84 | + default "duckbill" |
|
79 | + |
85 | + |
|
80 | +config SYS_VENDOR |
86 | +config SYS_VENDOR |
|
81 | + default "i2se" |
87 | + default "i2se" |
|
82 | + |
88 | + |
|
83 | +config SYS_SOC |
89 | +config SYS_SOC |
|
84 | + default "mxs" |
90 | + default "mxs" |
|
85 | + |
91 | + |
|
86 | +config SYS_CONFIG_NAME |
92 | +config SYS_CONFIG_NAME |
|
87 | + default "duckbill" |
93 | + default "duckbill" |
|
88 | + |
94 | + |
|
89 | +endif |
95 | +endif |
|
90 | diff --git a/board/i2se/duckbill/MAINTAINERS b/board/i2se/duckbill/MAINTAINERS |
- | ||
91 | new file mode 100644 |
- | ||
92 | index 0000000000..5496baa330 |
- | ||
93 | --- /dev/null |
96 | --- /dev/null |
|
94 | +++ b/board/i2se/duckbill/MAINTAINERS |
97 | +++ b/board/i2se/duckbill/MAINTAINERS |
|
95 | @@ -0,0 +1,6 @@ |
98 | @@ -0,0 +1,6 @@ |
|
96 | +I2SE DUCKBILL BOARD |
99 | +I2SE DUCKBILL BOARD |
|
97 | +M: Michael Heimpold <mhei@heimpold.de> |
100 | +M: Michael Heimpold <mhei@heimpold.de> |
|
98 | +S: Maintained |
101 | +S: Maintained |
|
99 | +F: board/i2se/duckbill/ |
102 | +F: board/i2se/duckbill/ |
|
100 | +F: include/configs/duckbill.h |
103 | +F: include/configs/duckbill.h |
|
101 | +F: configs/duckbill_defconfig |
104 | +F: configs/duckbill_defconfig |
|
102 | diff --git a/board/i2se/duckbill/Makefile b/board/i2se/duckbill/Makefile |
- | ||
103 | new file mode 100644 |
- | ||
104 | index 0000000000..0079eb413c |
- | ||
105 | --- /dev/null |
105 | --- /dev/null |
|
106 | +++ b/board/i2se/duckbill/Makefile |
106 | +++ b/board/i2se/duckbill/Makefile |
|
107 | @@ -0,0 +1,10 @@ |
107 | @@ -0,0 +1,12 @@ |
|
108 | +# SPDX-License-Identifier: GPL-2.0+ |
- | ||
109 | +# |
108 | +# |
|
110 | +# (C) Copyright 2014-2019 |
109 | +# (C) Copyright 2014-2017 |
|
111 | +# Michael Heimpold, mhei@heimpold.de. |
110 | +# Michael Heimpold, mhei@heimpold.de. |
|
- | 111 | +# |
||
- | 112 | +# SPDX-License-Identifier: GPL-2.0+ |
||
- | 113 | +# |
||
112 | + |
114 | + |
|
113 | +ifndef CONFIG_SPL_BUILD |
115 | +ifndef CONFIG_SPL_BUILD |
|
114 | +obj-y := duckbill.o |
116 | +obj-y := duckbill.o |
|
115 | +else |
117 | +else |
|
116 | +obj-y := iomux.o |
118 | +obj-y := iomux.o |
|
117 | +endif |
119 | +endif |
|
118 | diff --git a/board/i2se/duckbill/duckbill.c b/board/i2se/duckbill/duckbill.c |
- | ||
119 | new file mode 100644 |
- | ||
120 | index 0000000000..f93c372611 |
- | ||
121 | --- /dev/null |
120 | --- /dev/null |
|
122 | +++ b/board/i2se/duckbill/duckbill.c |
121 | +++ b/board/i2se/duckbill/duckbill.c |
|
123 | @@ -0,0 +1,186 @@ |
122 | @@ -0,0 +1,181 @@ |
|
124 | +// SPDX-License-Identifier: GPL-2.0+ |
- | ||
125 | +/* |
123 | +/* |
|
126 | + * I2SE Duckbill board |
124 | + * I2SE Duckbill board |
|
127 | + * |
125 | + * |
|
128 | + * (C) Copyright 2014-2019 Michael Heimpold <mhei@heimpold.de> |
126 | + * (C) Copyright 2014-2017 Michael Heimpold <mhei@heimpold.de> |
|
- | 127 | + * |
||
- | 128 | + * SPDX-License-Identifier: GPL-2.0+ |
||
129 | + */ |
129 | + */ |
|
130 | + |
130 | + |
|
131 | +#include <common.h> |
131 | +#include <common.h> |
|
132 | +#include <asm/gpio.h> |
132 | +#include <asm/gpio.h> |
|
133 | +#include <asm/io.h> |
133 | +#include <asm/io.h> |
|
134 | +#include <asm/arch/imx-regs.h> |
134 | +#include <asm/arch/imx-regs.h> |
|
135 | +#include <asm/arch/iomux-mx28.h> |
135 | +#include <asm/arch/iomux-mx28.h> |
|
136 | +#include <asm/arch/clock.h> |
136 | +#include <asm/arch/clock.h> |
|
137 | +#include <asm/arch/sys_proto.h> |
137 | +#include <asm/arch/sys_proto.h> |
|
138 | +#include <asm/setup.h> |
138 | +#include <asm/setup.h> |
|
139 | +#include <fdt_support.h> |
139 | +#include <fdt_support.h> |
|
140 | +#include <linux/mii.h> |
140 | +#include <linux/mii.h> |
|
141 | +#include <miiphy.h> |
141 | +#include <miiphy.h> |
|
142 | +#include <netdev.h> |
142 | +#include <netdev.h> |
|
143 | +#include <errno.h> |
143 | +#include <errno.h> |
|
144 | +#include <fuse.h> |
144 | +#include <fuse.h> |
|
145 | + |
145 | + |
|
146 | +DECLARE_GLOBAL_DATA_PTR; |
146 | +DECLARE_GLOBAL_DATA_PTR; |
|
147 | + |
147 | + |
|
148 | +static u32 system_rev; |
148 | +static u32 system_rev; |
|
149 | +static u32 serialno; |
149 | +static u32 serialno; |
|
150 | + |
150 | + |
|
151 | +/* |
151 | +/* |
|
152 | + * Functions |
152 | + * Functions |
|
153 | + */ |
153 | + */ |
|
154 | +int board_early_init_f(void) |
154 | +int board_early_init_f(void) |
|
155 | +{ |
155 | +{ |
|
156 | + /* IO0 clock at 480MHz */ |
156 | + /* IO0 clock at 480MHz */ |
|
157 | + mxs_set_ioclk(MXC_IOCLK0, 480000); |
157 | + mxs_set_ioclk(MXC_IOCLK0, 480000); |
|
158 | + /* IO1 clock at 480MHz */ |
158 | + /* IO1 clock at 480MHz */ |
|
159 | + mxs_set_ioclk(MXC_IOCLK1, 480000); |
159 | + mxs_set_ioclk(MXC_IOCLK1, 480000); |
|
160 | + |
160 | + |
|
161 | + /* SSP0 clock at 96MHz */ |
161 | + /* SSP0 clock at 96MHz */ |
|
162 | + mxs_set_sspclk(MXC_SSPCLK0, 96000, 0); |
162 | + mxs_set_sspclk(MXC_SSPCLK0, 96000, 0); |
|
163 | + |
163 | + |
|
164 | + return 0; |
164 | + return 0; |
|
165 | +} |
165 | +} |
|
166 | + |
166 | + |
|
167 | +int dram_init(void) |
167 | +int dram_init(void) |
|
168 | +{ |
168 | +{ |
|
169 | + return mxs_dram_init(); |
169 | + return mxs_dram_init(); |
|
170 | +} |
170 | +} |
|
171 | + |
171 | + |
|
172 | +int board_init(void) |
172 | +int board_init(void) |
|
173 | +{ |
173 | +{ |
|
174 | + /* Adress of boot parameters */ |
174 | + /* Adress of boot parameters */ |
|
175 | + gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100; |
175 | + gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100; |
|
176 | + |
176 | + |
|
177 | + return 0; |
177 | + return 0; |
|
178 | +} |
178 | +} |
|
179 | + |
179 | + |
|
180 | +#ifdef CONFIG_CMD_MMC |
180 | +#ifdef CONFIG_CMD_MMC |
|
181 | +int board_mmc_init(bd_t *bis) |
181 | +int board_mmc_init(bd_t *bis) |
|
182 | +{ |
182 | +{ |
|
183 | + return mxsmmc_initialize(bis, 0, NULL, NULL); |
183 | + return mxsmmc_initialize(bis, 0, NULL, NULL); |
|
184 | +} |
184 | +} |
|
185 | +#endif |
185 | +#endif |
|
186 | + |
186 | + |
|
187 | +#ifdef CONFIG_CMD_NET |
187 | +#ifdef CONFIG_CMD_NET |
|
188 | +int board_eth_init(bd_t *bis) |
188 | +int board_eth_init(bd_t *bis) |
|
189 | +{ |
189 | +{ |
|
190 | + unsigned int reset_gpio; |
190 | + unsigned int reset_gpio; |
|
191 | + int ret; |
191 | + int ret; |
|
192 | + |
192 | + |
|
193 | + ret = cpu_eth_init(bis); |
193 | + ret = cpu_eth_init(bis); |
|
194 | + |
194 | + |
|
195 | + if (system_rev == 1) |
195 | + if (system_rev == 1) |
|
196 | + reset_gpio = MX28_PAD_SSP0_DATA7__GPIO_2_7; |
196 | + reset_gpio = MX28_PAD_SSP0_DATA7__GPIO_2_7; |
|
197 | + else |
197 | + else |
|
198 | + reset_gpio = MX28_PAD_GPMI_ALE__GPIO_0_26; |
198 | + reset_gpio = MX28_PAD_GPMI_ALE__GPIO_0_26; |
|
199 | + |
199 | + |
|
200 | + /* Reset PHY */ |
200 | + /* Reset PHY */ |
|
201 | + gpio_direction_output(reset_gpio, 0); |
201 | + gpio_direction_output(reset_gpio, 0); |
|
202 | + udelay(200); |
202 | + udelay(200); |
|
203 | + gpio_set_value(reset_gpio, 1); |
203 | + gpio_set_value(reset_gpio, 1); |
|
204 | + |
204 | + |
|
205 | + /* give PHY some time to get out of the reset */ |
205 | + /* give PHY some time to get out of the reset */ |
|
206 | + udelay(10000); |
206 | + udelay(10000); |
|
207 | + |
207 | + |
|
208 | + ret = fecmxc_initialize_multi(bis, 0, 0, MXS_ENET0_BASE); |
208 | + ret = fecmxc_initialize(bis); |
|
209 | + if (ret) { |
209 | + if (ret) { |
|
210 | + puts("FEC MXS: Unable to init FEC\n"); |
210 | + puts("FEC MXS: Unable to init FEC\n"); |
|
211 | + return ret; |
211 | + return ret; |
|
212 | + } |
212 | + } |
|
213 | + |
213 | + |
|
214 | + return ret; |
214 | + return ret; |
|
215 | +} |
215 | +} |
|
216 | + |
216 | + |
|
217 | +void mx28_adjust_mac(int dev_id, unsigned char *mac) |
217 | +void mx28_adjust_mac(int dev_id, unsigned char *mac) |
|
218 | +{ |
218 | +{ |
|
219 | + mac[0] = 0x00; |
219 | + mac[0] = 0x00; |
|
220 | + mac[1] = 0x01; |
220 | + mac[1] = 0x01; |
|
221 | + mac[2] = 0x87; |
221 | + mac[2] = 0x87; |
|
222 | +} |
222 | +} |
|
223 | +#endif |
223 | +#endif |
|
224 | + |
224 | + |
|
225 | +#ifdef CONFIG_OF_BOARD_SETUP |
225 | +#ifdef CONFIG_OF_BOARD_SETUP |
|
226 | +int ft_board_setup(void *blob, bd_t *bd) |
226 | +int ft_board_setup(void *blob, bd_t *bd) |
|
227 | +{ |
227 | +{ |
|
228 | + uint8_t enetaddr[6]; |
228 | + uint8_t enetaddr[6]; |
|
229 | + u32 mac = 0; |
229 | + u32 mac = 0; |
|
230 | + |
230 | + |
|
- | 231 | + enetaddr[0] = 0x00; |
||
- | 232 | + enetaddr[1] = 0x01; |
||
- | 233 | + enetaddr[2] = 0x87; |
||
- | 234 | + |
||
231 | +#ifdef CONFIG_MXS_OCOTP |
235 | +#ifdef CONFIG_MXS_OCOTP |
|
232 | + /* only Duckbill SPI has a MAC for the QCA7k */ |
236 | + /* only Duckbill SPI has a MAC for the QCA7k */ |
|
233 | + fuse_read(0, 1, &mac); |
237 | + fuse_read(0, 1, &mac); |
|
234 | +#endif |
238 | +#endif |
|
235 | + |
239 | + |
|
236 | + if (mac != 0) { |
240 | + if (mac != 0) { |
|
237 | + enetaddr[0] = 0x00; |
- | ||
238 | + enetaddr[1] = 0x01; |
- | ||
239 | + enetaddr[2] = 0x87; |
- | ||
240 | + enetaddr[3] = (mac >> 16) & 0xff; |
241 | + enetaddr[3] = (mac >> 16) & 0xff; |
|
241 | + enetaddr[4] = (mac >> 8) & 0xff; |
242 | + enetaddr[4] = (mac >> 8) & 0xff; |
|
242 | + enetaddr[5] = mac & 0xff; |
243 | + enetaddr[5] = mac & 0xff; |
|
243 | + |
244 | + |
|
244 | + fdt_find_and_setprop(blob, "spi1/ethernet@0", |
245 | + fdt_find_and_setprop(blob, |
|
- | 246 | + "/apb@80000000/apbh@80000000/ssp@80014000/ethernet@0", |
||
245 | + "local-mac-address", enetaddr, 6, 1); |
247 | + "local-mac-address", enetaddr, 6, 1); |
|
246 | + } |
248 | + } |
|
247 | + |
249 | + |
|
248 | + return 0; |
250 | + return 0; |
|
249 | +} |
251 | +} |
|
250 | +#endif |
252 | +#endif |
|
251 | + |
253 | + |
|
252 | +#ifdef CONFIG_REVISION_TAG |
254 | +#ifdef CONFIG_REVISION_TAG |
|
253 | +u32 get_board_rev(void) |
255 | +u32 get_board_rev(void) |
|
254 | +{ |
256 | +{ |
|
255 | + return system_rev; |
257 | + return system_rev; |
|
256 | +} |
258 | +} |
|
257 | +#endif |
259 | +#endif |
|
258 | + |
260 | + |
|
259 | +#ifdef CONFIG_SERIAL_TAG |
261 | +#ifdef CONFIG_SERIAL_TAG |
|
260 | +void get_board_serial(struct tag_serialnr *serialnr) |
262 | +void get_board_serial(struct tag_serialnr *serialnr) |
|
261 | +{ |
263 | +{ |
|
262 | + serialnr->low = serialno; |
264 | + serialnr->low = serialno; |
|
263 | + serialnr->high = 0; |
265 | + serialnr->high = 0; |
|
264 | +} |
266 | +} |
|
265 | +#endif |
267 | +#endif |
|
266 | + |
268 | + |
|
267 | +int misc_init_r(void) |
269 | +int misc_init_r(void) |
|
268 | +{ |
270 | +{ |
|
269 | + unsigned int led_red_gpio; |
271 | + unsigned int led_red_gpio; |
|
270 | + char *s; |
272 | + char *s; |
|
271 | + |
273 | + |
|
272 | + /* Board revision detection */ |
274 | + /* Board revision detection */ |
|
273 | + gpio_direction_input(MX28_PAD_LCD_D17__GPIO_1_17); |
275 | + gpio_direction_input(MX28_PAD_LCD_D17__GPIO_1_17); |
|
274 | + |
276 | + |
|
275 | + /* MX28_PAD_LCD_D17__GPIO_1_17: v1 = pull-down, v2 = pull-up */ |
277 | + /* MX28_PAD_LCD_D17__GPIO_1_17: v1 = pull-down, v2 = pull-up */ |
|
276 | + system_rev = |
278 | + system_rev = |
|
277 | + gpio_get_value(MX28_PAD_LCD_D17__GPIO_1_17); |
279 | + gpio_get_value(MX28_PAD_LCD_D17__GPIO_1_17); |
|
278 | + system_rev += 1; |
280 | + system_rev += 1; |
|
279 | + |
281 | + |
|
280 | + /* guess DT blob if not set in environment */ |
- | ||
281 | + if (!env_get("fdt_file")) { |
- | ||
282 | + if (system_rev == 1) |
- | ||
283 | + env_set("fdt_file", "imx28-duckbill.dtb"); |
- | ||
284 | + else |
- | ||
285 | + env_set("fdt_file", "imx28-duckbill-2.dtb"); |
- | ||
286 | + } |
- | ||
287 | + |
- | ||
288 | + /* enable red LED to indicate a running bootloader */ |
282 | + /* enable red LED to indicate a running bootloader */ |
|
289 | + if (system_rev == 1) |
283 | + if (system_rev == 1) |
|
290 | + led_red_gpio = MX28_PAD_AUART1_RX__GPIO_3_4; |
284 | + led_red_gpio = MX28_PAD_AUART1_RX__GPIO_3_4; |
|
291 | + else |
285 | + else |
|
292 | + led_red_gpio = MX28_PAD_SAIF0_LRCLK__GPIO_3_21; |
286 | + led_red_gpio = MX28_PAD_SAIF0_LRCLK__GPIO_3_21; |
|
293 | + gpio_direction_output(led_red_gpio, 1); |
287 | + gpio_direction_output(led_red_gpio, 1); |
|
294 | + |
288 | + |
|
295 | + if (system_rev == 1) |
289 | + if (system_rev == 1) |
|
296 | + puts("Board: I2SE Duckbill\n"); |
290 | + puts("Board: I2SE Duckbill\n"); |
|
297 | + else |
291 | + else |
|
298 | + puts("Board: I2SE Duckbill 2\n"); |
292 | + puts("Board: I2SE Duckbill 2\n"); |
|
299 | + |
293 | + |
|
300 | + serialno = env_get_ulong("serial#", 10, 0); |
294 | + serialno = env_get_ulong("serial#", 10, 0); |
|
301 | + s = env_get("serial#"); |
295 | + s = env_get("serial#"); |
|
302 | + if (s && s[0]) { |
296 | + if (s && s[0]) { |
|
303 | + puts("Serial: "); |
297 | + puts("Serial: "); |
|
304 | + puts(s); |
298 | + puts(s); |
|
305 | + putc('\n'); |
299 | + putc('\n'); |
|
306 | + } |
300 | + } |
|
307 | + |
301 | + |
|
308 | + return 0; |
302 | + return 0; |
|
309 | +} |
303 | +} |
|
310 | diff --git a/board/i2se/duckbill/iomux.c b/board/i2se/duckbill/iomux.c |
- | ||
311 | new file mode 100644 |
- | ||
312 | index 0000000000..1db3c52c34 |
- | ||
313 | --- /dev/null |
304 | --- /dev/null |
|
314 | +++ b/board/i2se/duckbill/iomux.c |
305 | +++ b/board/i2se/duckbill/iomux.c |
|
315 | @@ -0,0 +1,156 @@ |
306 | @@ -0,0 +1,157 @@ |
|
316 | +// SPDX-License-Identifier: GPL-2.0+ |
- | ||
317 | +/* |
307 | +/* |
|
318 | + * I2SE Duckbill IOMUX setup |
308 | + * I2SE Duckbill IOMUX setup |
|
319 | + * |
309 | + * |
|
320 | + * Copyright (C) 2013-2019 Michael Heimpold <mhei@heimpold.de> |
310 | + * Copyright (C) 2013-2017 Michael Heimpold <mhei@heimpold.de> |
|
- | 311 | + * |
||
- | 312 | + * SPDX-License-Identifier: GPL-2.0+ |
||
321 | + */ |
313 | + */ |
|
322 | + |
314 | + |
|
323 | +#include <common.h> |
315 | +#include <common.h> |
|
324 | +#include <config.h> |
316 | +#include <config.h> |
|
325 | +#include <asm/io.h> |
317 | +#include <asm/io.h> |
|
326 | +#include <asm/gpio.h> |
318 | +#include <asm/gpio.h> |
|
327 | +#include <asm/arch/iomux-mx28.h> |
319 | +#include <asm/arch/iomux-mx28.h> |
|
328 | +#include <asm/arch/imx-regs.h> |
320 | +#include <asm/arch/imx-regs.h> |
|
329 | +#include <asm/arch/sys_proto.h> |
321 | +#include <asm/arch/sys_proto.h> |
|
330 | + |
322 | + |
|
331 | +#define MUX_CONFIG_SSP0 (MXS_PAD_3V3 | MXS_PAD_8MA | MXS_PAD_PULLUP) |
323 | +#define MUX_CONFIG_SSP0 (MXS_PAD_3V3 | MXS_PAD_8MA | MXS_PAD_PULLUP) |
|
332 | +#define MUX_CONFIG_ENET (MXS_PAD_3V3 | MXS_PAD_8MA | MXS_PAD_PULLUP) |
324 | +#define MUX_CONFIG_ENET (MXS_PAD_3V3 | MXS_PAD_8MA | MXS_PAD_PULLUP) |
|
333 | +#define MUX_CONFIG_EMI (MXS_PAD_3V3 | MXS_PAD_12MA | MXS_PAD_NOPULL) |
325 | +#define MUX_CONFIG_EMI (MXS_PAD_3V3 | MXS_PAD_12MA | MXS_PAD_NOPULL) |
|
334 | + |
326 | + |
|
335 | +/* For all revisions */ |
327 | +/* For all revisions */ |
|
336 | +const iomux_cfg_t iomux_setup[] = { |
328 | +const iomux_cfg_t iomux_setup[] = { |
|
337 | + /* DUART */ |
329 | + /* DUART */ |
|
338 | + MX28_PAD_PWM0__DUART_RX, |
330 | + MX28_PAD_PWM0__DUART_RX, |
|
339 | + MX28_PAD_PWM1__DUART_TX, |
331 | + MX28_PAD_PWM1__DUART_TX, |
|
340 | + |
332 | + |
|
341 | + /* eMMC (v2) or SD card (v1) */ |
333 | + /* eMMC (v2) or SD card (v1) */ |
|
342 | + MX28_PAD_SSP0_DATA0__SSP0_D0 | MUX_CONFIG_SSP0, |
334 | + MX28_PAD_SSP0_DATA0__SSP0_D0 | MUX_CONFIG_SSP0, |
|
343 | + MX28_PAD_SSP0_DATA1__SSP0_D1 | MUX_CONFIG_SSP0, |
335 | + MX28_PAD_SSP0_DATA1__SSP0_D1 | MUX_CONFIG_SSP0, |
|
344 | + MX28_PAD_SSP0_DATA2__SSP0_D2 | MUX_CONFIG_SSP0, |
336 | + MX28_PAD_SSP0_DATA2__SSP0_D2 | MUX_CONFIG_SSP0, |
|
345 | + MX28_PAD_SSP0_DATA3__SSP0_D3 | MUX_CONFIG_SSP0, |
337 | + MX28_PAD_SSP0_DATA3__SSP0_D3 | MUX_CONFIG_SSP0, |
|
346 | + MX28_PAD_SSP0_CMD__SSP0_CMD | MUX_CONFIG_SSP0, |
338 | + MX28_PAD_SSP0_CMD__SSP0_CMD | MUX_CONFIG_SSP0, |
|
347 | + MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT | |
339 | + MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT | |
|
348 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), |
340 | + (MXS_PAD_8MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), |
|
349 | + MX28_PAD_SSP0_SCK__SSP0_SCK | |
341 | + MX28_PAD_SSP0_SCK__SSP0_SCK | |
|
350 | + (MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), |
342 | + (MXS_PAD_12MA | MXS_PAD_3V3 | MXS_PAD_NOPULL), |
|
351 | + |
343 | + |
|
352 | + /* Ethernet */ |
344 | + /* Ethernet */ |
|
353 | + MX28_PAD_ENET0_MDC__ENET0_MDC | MUX_CONFIG_ENET, |
345 | + MX28_PAD_ENET0_MDC__ENET0_MDC | MUX_CONFIG_ENET, |
|
354 | + MX28_PAD_ENET0_MDIO__ENET0_MDIO | MUX_CONFIG_ENET, |
346 | + MX28_PAD_ENET0_MDIO__ENET0_MDIO | MUX_CONFIG_ENET, |
|
355 | + MX28_PAD_ENET0_RX_EN__ENET0_RX_EN | MUX_CONFIG_ENET, |
347 | + MX28_PAD_ENET0_RX_EN__ENET0_RX_EN | MUX_CONFIG_ENET, |
|
356 | + MX28_PAD_ENET0_TX_EN__ENET0_TX_EN | MUX_CONFIG_ENET, |
348 | + MX28_PAD_ENET0_TX_EN__ENET0_TX_EN | MUX_CONFIG_ENET, |
|
357 | + MX28_PAD_ENET0_RXD0__ENET0_RXD0 | MUX_CONFIG_ENET, |
349 | + MX28_PAD_ENET0_RXD0__ENET0_RXD0 | MUX_CONFIG_ENET, |
|
358 | + MX28_PAD_ENET0_RXD1__ENET0_RXD1 | MUX_CONFIG_ENET, |
350 | + MX28_PAD_ENET0_RXD1__ENET0_RXD1 | MUX_CONFIG_ENET, |
|
359 | + MX28_PAD_ENET0_TXD0__ENET0_TXD0 | MUX_CONFIG_ENET, |
351 | + MX28_PAD_ENET0_TXD0__ENET0_TXD0 | MUX_CONFIG_ENET, |
|
360 | + MX28_PAD_ENET0_TXD1__ENET0_TXD1 | MUX_CONFIG_ENET, |
352 | + MX28_PAD_ENET0_TXD1__ENET0_TXD1 | MUX_CONFIG_ENET, |
|
361 | + MX28_PAD_ENET_CLK__CLKCTRL_ENET | MUX_CONFIG_ENET, |
353 | + MX28_PAD_ENET_CLK__CLKCTRL_ENET | MUX_CONFIG_ENET, |
|
362 | + |
354 | + |
|
363 | + /* EMI */ |
355 | + /* EMI */ |
|
364 | + MX28_PAD_EMI_D00__EMI_DATA0 | MUX_CONFIG_EMI, |
356 | + MX28_PAD_EMI_D00__EMI_DATA0 | MUX_CONFIG_EMI, |
|
365 | + MX28_PAD_EMI_D01__EMI_DATA1 | MUX_CONFIG_EMI, |
357 | + MX28_PAD_EMI_D01__EMI_DATA1 | MUX_CONFIG_EMI, |
|
366 | + MX28_PAD_EMI_D02__EMI_DATA2 | MUX_CONFIG_EMI, |
358 | + MX28_PAD_EMI_D02__EMI_DATA2 | MUX_CONFIG_EMI, |
|
367 | + MX28_PAD_EMI_D03__EMI_DATA3 | MUX_CONFIG_EMI, |
359 | + MX28_PAD_EMI_D03__EMI_DATA3 | MUX_CONFIG_EMI, |
|
368 | + MX28_PAD_EMI_D04__EMI_DATA4 | MUX_CONFIG_EMI, |
360 | + MX28_PAD_EMI_D04__EMI_DATA4 | MUX_CONFIG_EMI, |
|
369 | + MX28_PAD_EMI_D05__EMI_DATA5 | MUX_CONFIG_EMI, |
361 | + MX28_PAD_EMI_D05__EMI_DATA5 | MUX_CONFIG_EMI, |
|
370 | + MX28_PAD_EMI_D06__EMI_DATA6 | MUX_CONFIG_EMI, |
362 | + MX28_PAD_EMI_D06__EMI_DATA6 | MUX_CONFIG_EMI, |
|
371 | + MX28_PAD_EMI_D07__EMI_DATA7 | MUX_CONFIG_EMI, |
363 | + MX28_PAD_EMI_D07__EMI_DATA7 | MUX_CONFIG_EMI, |
|
372 | + MX28_PAD_EMI_D08__EMI_DATA8 | MUX_CONFIG_EMI, |
364 | + MX28_PAD_EMI_D08__EMI_DATA8 | MUX_CONFIG_EMI, |
|
373 | + MX28_PAD_EMI_D09__EMI_DATA9 | MUX_CONFIG_EMI, |
365 | + MX28_PAD_EMI_D09__EMI_DATA9 | MUX_CONFIG_EMI, |
|
374 | + MX28_PAD_EMI_D10__EMI_DATA10 | MUX_CONFIG_EMI, |
366 | + MX28_PAD_EMI_D10__EMI_DATA10 | MUX_CONFIG_EMI, |
|
375 | + MX28_PAD_EMI_D11__EMI_DATA11 | MUX_CONFIG_EMI, |
367 | + MX28_PAD_EMI_D11__EMI_DATA11 | MUX_CONFIG_EMI, |
|
376 | + MX28_PAD_EMI_D12__EMI_DATA12 | MUX_CONFIG_EMI, |
368 | + MX28_PAD_EMI_D12__EMI_DATA12 | MUX_CONFIG_EMI, |
|
377 | + MX28_PAD_EMI_D13__EMI_DATA13 | MUX_CONFIG_EMI, |
369 | + MX28_PAD_EMI_D13__EMI_DATA13 | MUX_CONFIG_EMI, |
|
378 | + MX28_PAD_EMI_D14__EMI_DATA14 | MUX_CONFIG_EMI, |
370 | + MX28_PAD_EMI_D14__EMI_DATA14 | MUX_CONFIG_EMI, |
|
379 | + MX28_PAD_EMI_D15__EMI_DATA15 | MUX_CONFIG_EMI, |
371 | + MX28_PAD_EMI_D15__EMI_DATA15 | MUX_CONFIG_EMI, |
|
380 | + MX28_PAD_EMI_ODT0__EMI_ODT0 | MUX_CONFIG_EMI, |
372 | + MX28_PAD_EMI_ODT0__EMI_ODT0 | MUX_CONFIG_EMI, |
|
381 | + MX28_PAD_EMI_DQM0__EMI_DQM0 | MUX_CONFIG_EMI, |
373 | + MX28_PAD_EMI_DQM0__EMI_DQM0 | MUX_CONFIG_EMI, |
|
382 | + MX28_PAD_EMI_ODT1__EMI_ODT1 | MUX_CONFIG_EMI, |
374 | + MX28_PAD_EMI_ODT1__EMI_ODT1 | MUX_CONFIG_EMI, |
|
383 | + MX28_PAD_EMI_DQM1__EMI_DQM1 | MUX_CONFIG_EMI, |
375 | + MX28_PAD_EMI_DQM1__EMI_DQM1 | MUX_CONFIG_EMI, |
|
384 | + MX28_PAD_EMI_DDR_OPEN_FB__EMI_DDR_OPEN_FEEDBACK | MUX_CONFIG_EMI, |
376 | + MX28_PAD_EMI_DDR_OPEN_FB__EMI_DDR_OPEN_FEEDBACK | MUX_CONFIG_EMI, |
|
385 | + MX28_PAD_EMI_CLK__EMI_CLK | MUX_CONFIG_EMI, |
377 | + MX28_PAD_EMI_CLK__EMI_CLK | MUX_CONFIG_EMI, |
|
386 | + MX28_PAD_EMI_DQS0__EMI_DQS0 | MUX_CONFIG_EMI, |
378 | + MX28_PAD_EMI_DQS0__EMI_DQS0 | MUX_CONFIG_EMI, |
|
387 | + MX28_PAD_EMI_DQS1__EMI_DQS1 | MUX_CONFIG_EMI, |
379 | + MX28_PAD_EMI_DQS1__EMI_DQS1 | MUX_CONFIG_EMI, |
|
388 | + MX28_PAD_EMI_DDR_OPEN__EMI_DDR_OPEN | MUX_CONFIG_EMI, |
380 | + MX28_PAD_EMI_DDR_OPEN__EMI_DDR_OPEN | MUX_CONFIG_EMI, |
|
389 | + |
381 | + |
|
390 | + MX28_PAD_EMI_A00__EMI_ADDR0 | MUX_CONFIG_EMI, |
382 | + MX28_PAD_EMI_A00__EMI_ADDR0 | MUX_CONFIG_EMI, |
|
391 | + MX28_PAD_EMI_A01__EMI_ADDR1 | MUX_CONFIG_EMI, |
383 | + MX28_PAD_EMI_A01__EMI_ADDR1 | MUX_CONFIG_EMI, |
|
392 | + MX28_PAD_EMI_A02__EMI_ADDR2 | MUX_CONFIG_EMI, |
384 | + MX28_PAD_EMI_A02__EMI_ADDR2 | MUX_CONFIG_EMI, |
|
393 | + MX28_PAD_EMI_A03__EMI_ADDR3 | MUX_CONFIG_EMI, |
385 | + MX28_PAD_EMI_A03__EMI_ADDR3 | MUX_CONFIG_EMI, |
|
394 | + MX28_PAD_EMI_A04__EMI_ADDR4 | MUX_CONFIG_EMI, |
386 | + MX28_PAD_EMI_A04__EMI_ADDR4 | MUX_CONFIG_EMI, |
|
395 | + MX28_PAD_EMI_A05__EMI_ADDR5 | MUX_CONFIG_EMI, |
387 | + MX28_PAD_EMI_A05__EMI_ADDR5 | MUX_CONFIG_EMI, |
|
396 | + MX28_PAD_EMI_A06__EMI_ADDR6 | MUX_CONFIG_EMI, |
388 | + MX28_PAD_EMI_A06__EMI_ADDR6 | MUX_CONFIG_EMI, |
|
397 | + MX28_PAD_EMI_A07__EMI_ADDR7 | MUX_CONFIG_EMI, |
389 | + MX28_PAD_EMI_A07__EMI_ADDR7 | MUX_CONFIG_EMI, |
|
398 | + MX28_PAD_EMI_A08__EMI_ADDR8 | MUX_CONFIG_EMI, |
390 | + MX28_PAD_EMI_A08__EMI_ADDR8 | MUX_CONFIG_EMI, |
|
399 | + MX28_PAD_EMI_A09__EMI_ADDR9 | MUX_CONFIG_EMI, |
391 | + MX28_PAD_EMI_A09__EMI_ADDR9 | MUX_CONFIG_EMI, |
|
400 | + MX28_PAD_EMI_A10__EMI_ADDR10 | MUX_CONFIG_EMI, |
392 | + MX28_PAD_EMI_A10__EMI_ADDR10 | MUX_CONFIG_EMI, |
|
401 | + MX28_PAD_EMI_A11__EMI_ADDR11 | MUX_CONFIG_EMI, |
393 | + MX28_PAD_EMI_A11__EMI_ADDR11 | MUX_CONFIG_EMI, |
|
402 | + MX28_PAD_EMI_A12__EMI_ADDR12 | MUX_CONFIG_EMI, |
394 | + MX28_PAD_EMI_A12__EMI_ADDR12 | MUX_CONFIG_EMI, |
|
403 | + MX28_PAD_EMI_A13__EMI_ADDR13 | MUX_CONFIG_EMI, |
395 | + MX28_PAD_EMI_A13__EMI_ADDR13 | MUX_CONFIG_EMI, |
|
404 | + MX28_PAD_EMI_A14__EMI_ADDR14 | MUX_CONFIG_EMI, |
396 | + MX28_PAD_EMI_A14__EMI_ADDR14 | MUX_CONFIG_EMI, |
|
405 | + MX28_PAD_EMI_BA0__EMI_BA0 | MUX_CONFIG_EMI, |
397 | + MX28_PAD_EMI_BA0__EMI_BA0 | MUX_CONFIG_EMI, |
|
406 | + MX28_PAD_EMI_BA1__EMI_BA1 | MUX_CONFIG_EMI, |
398 | + MX28_PAD_EMI_BA1__EMI_BA1 | MUX_CONFIG_EMI, |
|
407 | + MX28_PAD_EMI_BA2__EMI_BA2 | MUX_CONFIG_EMI, |
399 | + MX28_PAD_EMI_BA2__EMI_BA2 | MUX_CONFIG_EMI, |
|
408 | + MX28_PAD_EMI_CASN__EMI_CASN | MUX_CONFIG_EMI, |
400 | + MX28_PAD_EMI_CASN__EMI_CASN | MUX_CONFIG_EMI, |
|
409 | + MX28_PAD_EMI_RASN__EMI_RASN | MUX_CONFIG_EMI, |
401 | + MX28_PAD_EMI_RASN__EMI_RASN | MUX_CONFIG_EMI, |
|
410 | + MX28_PAD_EMI_WEN__EMI_WEN | MUX_CONFIG_EMI, |
402 | + MX28_PAD_EMI_WEN__EMI_WEN | MUX_CONFIG_EMI, |
|
411 | + MX28_PAD_EMI_CE0N__EMI_CE0N | MUX_CONFIG_EMI, |
403 | + MX28_PAD_EMI_CE0N__EMI_CE0N | MUX_CONFIG_EMI, |
|
412 | + MX28_PAD_EMI_CE1N__EMI_CE1N | MUX_CONFIG_EMI, |
404 | + MX28_PAD_EMI_CE1N__EMI_CE1N | MUX_CONFIG_EMI, |
|
413 | + MX28_PAD_EMI_CKE__EMI_CKE | MUX_CONFIG_EMI, |
405 | + MX28_PAD_EMI_CKE__EMI_CKE | MUX_CONFIG_EMI, |
|
414 | + |
406 | + |
|
415 | + /* Revision pin(s) */ |
407 | + /* Revision pin(s) */ |
|
416 | + MX28_PAD_LCD_D17__GPIO_1_17, |
408 | + MX28_PAD_LCD_D17__GPIO_1_17, |
|
417 | +}; |
409 | +}; |
|
418 | + |
410 | + |
|
419 | +/* For revision 1 only */ |
411 | +/* For revision 1 only */ |
|
420 | +const iomux_cfg_t iomux_setup_v1[] = { |
412 | +const iomux_cfg_t iomux_setup_v1[] = { |
|
421 | + /* PHY reset */ |
413 | + /* PHY reset */ |
|
422 | + MX28_PAD_SSP0_DATA7__GPIO_2_7 | |
414 | + MX28_PAD_SSP0_DATA7__GPIO_2_7 | |
|
423 | + (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), |
415 | + (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), |
|
424 | + |
416 | + |
|
425 | + /* LEDs */ |
417 | + /* LEDs */ |
|
426 | + MX28_PAD_AUART1_RX__GPIO_3_4, |
418 | + MX28_PAD_AUART1_RX__GPIO_3_4, |
|
427 | + MX28_PAD_AUART1_TX__GPIO_3_5, |
419 | + MX28_PAD_AUART1_TX__GPIO_3_5, |
|
428 | +}; |
420 | +}; |
|
429 | + |
421 | + |
|
430 | +/* For revision 2 only */ |
422 | +/* For revision 2 only */ |
|
431 | +const iomux_cfg_t iomux_setup_v2[] = { |
423 | +const iomux_cfg_t iomux_setup_v2[] = { |
|
432 | + /* eMMC (v2) */ |
424 | + /* eMMC (v2) */ |
|
433 | + MX28_PAD_SSP0_DATA4__SSP0_D4 | MUX_CONFIG_SSP0, |
425 | + MX28_PAD_SSP0_DATA4__SSP0_D4 | MUX_CONFIG_SSP0, |
|
434 | + MX28_PAD_SSP0_DATA5__SSP0_D5 | MUX_CONFIG_SSP0, |
426 | + MX28_PAD_SSP0_DATA5__SSP0_D5 | MUX_CONFIG_SSP0, |
|
435 | + MX28_PAD_SSP0_DATA6__SSP0_D6 | MUX_CONFIG_SSP0, |
427 | + MX28_PAD_SSP0_DATA6__SSP0_D6 | MUX_CONFIG_SSP0, |
|
436 | + MX28_PAD_SSP0_DATA7__SSP0_D7 | MUX_CONFIG_SSP0, |
428 | + MX28_PAD_SSP0_DATA7__SSP0_D7 | MUX_CONFIG_SSP0, |
|
437 | + |
429 | + |
|
438 | + /* PHY reset */ |
430 | + /* PHY reset */ |
|
439 | + MX28_PAD_GPMI_ALE__GPIO_0_26 | |
431 | + MX28_PAD_GPMI_ALE__GPIO_0_26 | |
|
440 | + (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), |
432 | + (MXS_PAD_4MA | MXS_PAD_3V3 | MXS_PAD_PULLUP), |
|
441 | + |
433 | + |
|
442 | + /* LEDs */ |
434 | + /* LEDs */ |
|
443 | + MX28_PAD_SAIF0_LRCLK__GPIO_3_21, |
435 | + MX28_PAD_SAIF0_LRCLK__GPIO_3_21, |
|
444 | + MX28_PAD_SAIF0_MCLK__GPIO_3_20, |
436 | + MX28_PAD_SAIF0_MCLK__GPIO_3_20, |
|
445 | +}; |
437 | +}; |
|
446 | + |
438 | + |
|
447 | +#define HW_DRAM_CTL29 (0x74 >> 2) |
439 | +#define HW_DRAM_CTL29 (0x74 >> 2) |
|
448 | +#define CS_MAP 0xf |
440 | +#define CS_MAP 0xf |
|
449 | +#define COLUMN_SIZE 0x2 |
441 | +#define COLUMN_SIZE 0x2 |
|
450 | +#define ADDR_PINS 0x1 |
442 | +#define ADDR_PINS 0x1 |
|
451 | +#define APREBIT 0xa |
443 | +#define APREBIT 0xa |
|
452 | + |
444 | + |
|
453 | +#define HW_DRAM_CTL29_CONFIG (CS_MAP << 24 | COLUMN_SIZE << 16 | \ |
445 | +#define HW_DRAM_CTL29_CONFIG (CS_MAP << 24 | COLUMN_SIZE << 16 | \ |
|
454 | + ADDR_PINS << 8 | APREBIT) |
446 | + ADDR_PINS << 8 | APREBIT) |
|
455 | + |
447 | + |
|
456 | +void mxs_adjust_memory_params(uint32_t *dram_vals) |
448 | +void mxs_adjust_memory_params(uint32_t *dram_vals) |
|
457 | +{ |
449 | +{ |
|
458 | + dram_vals[HW_DRAM_CTL29] = HW_DRAM_CTL29_CONFIG; |
450 | + dram_vals[HW_DRAM_CTL29] = HW_DRAM_CTL29_CONFIG; |
|
459 | +} |
451 | +} |
|
460 | + |
452 | + |
|
461 | +void board_init_ll(const uint32_t arg, const uint32_t *resptr) |
453 | +void board_init_ll(const uint32_t arg, const uint32_t *resptr) |
|
462 | +{ |
454 | +{ |
|
463 | + mxs_common_spl_init(arg, resptr, iomux_setup, ARRAY_SIZE(iomux_setup)); |
455 | + mxs_common_spl_init(arg, resptr, iomux_setup, ARRAY_SIZE(iomux_setup)); |
|
464 | + |
456 | + |
|
465 | + gpio_direction_input(MX28_PAD_LCD_D17__GPIO_1_17); |
457 | + gpio_direction_input(MX28_PAD_LCD_D17__GPIO_1_17); |
|
466 | + |
458 | + |
|
467 | + if (gpio_get_value(MX28_PAD_LCD_D17__GPIO_1_17)) |
459 | + if (gpio_get_value(MX28_PAD_LCD_D17__GPIO_1_17)) |
|
468 | + mxs_iomux_setup_multiple_pads(iomux_setup_v2, ARRAY_SIZE(iomux_setup_v2)); |
460 | + mxs_iomux_setup_multiple_pads(iomux_setup_v2, ARRAY_SIZE(iomux_setup_v2)); |
|
469 | + else |
461 | + else |
|
470 | + mxs_iomux_setup_multiple_pads(iomux_setup_v1, ARRAY_SIZE(iomux_setup_v1)); |
462 | + mxs_iomux_setup_multiple_pads(iomux_setup_v1, ARRAY_SIZE(iomux_setup_v1)); |
|
471 | +} |
463 | +} |
|
472 | diff --git a/configs/duckbill_defconfig b/configs/duckbill_defconfig |
- | ||
473 | new file mode 100644 |
- | ||
474 | index 0000000000..f92a67d53d |
- | ||
475 | --- /dev/null |
464 | --- /dev/null |
|
476 | +++ b/configs/duckbill_defconfig |
465 | +++ b/configs/duckbill_defconfig |
|
477 | @@ -0,0 +1,38 @@ |
466 | @@ -0,0 +1,31 @@ |
|
478 | +CONFIG_ARM=y |
467 | +CONFIG_ARM=y |
|
479 | +CONFIG_ARCH_MX28=y |
468 | +CONFIG_TARGET_DUCKBILL=y |
|
480 | +CONFIG_SYS_TEXT_BASE=0x40002000 |
- | ||
481 | +CONFIG_SPL_GPIO_SUPPORT=y |
469 | +CONFIG_SPL_GPIO_SUPPORT=y |
|
482 | +CONFIG_SPL_LIBCOMMON_SUPPORT=y |
470 | +CONFIG_SPL_LIBCOMMON_SUPPORT=y |
|
483 | +CONFIG_SPL_LIBGENERIC_SUPPORT=y |
471 | +CONFIG_SPL_LIBGENERIC_SUPPORT=y |
|
484 | +CONFIG_TARGET_DUCKBILL=y |
- | ||
485 | +CONFIG_SPL_SERIAL_SUPPORT=y |
472 | +CONFIG_SPL_SERIAL_SUPPORT=y |
|
486 | +CONFIG_SPL=y |
- | ||
487 | +CONFIG_NR_DRAM_BANKS=1 |
- | ||
488 | +CONFIG_BOOTDELAY=1 |
473 | +CONFIG_BOOTDELAY=1 |
|
- | 474 | +# CONFIG_CONSOLE_MUX is not set |
||
489 | +CONFIG_SYS_CONSOLE_IS_IN_ENV=y |
475 | +CONFIG_SYS_CONSOLE_IS_IN_ENV=y |
|
490 | +CONFIG_VERSION_VARIABLE=y |
476 | +CONFIG_VERSION_VARIABLE=y |
|
491 | +# CONFIG_DISPLAY_BOARDINFO is not set |
477 | +# CONFIG_DISPLAY_BOARDINFO is not set |
|
- | 478 | +# CONFIG_EFI_LOADER is not set |
||
492 | +CONFIG_ARCH_MISC_INIT=y |
479 | +CONFIG_ARCH_MISC_INIT=y |
|
493 | +# CONFIG_SPL_FRAMEWORK is not set |
480 | +CONFIG_SPL=y |
|
494 | +CONFIG_HUSH_PARSER=y |
481 | +CONFIG_HUSH_PARSER=y |
|
495 | +CONFIG_CMD_BOOTZ=y |
482 | +CONFIG_CMD_BOOTZ=y |
|
496 | +# CONFIG_CMD_ELF is not set |
483 | +# CONFIG_CMD_IMLS is not set |
|
497 | +CONFIG_CMD_UNZIP=y |
- | ||
498 | +# CONFIG_CMD_FLASH is not set |
484 | +# CONFIG_CMD_FLASH is not set |
|
499 | +CONFIG_CMD_FUSE=y |
- | ||
500 | +CONFIG_CMD_GPIO=y |
- | ||
501 | +CONFIG_CMD_MMC=y |
485 | +CONFIG_CMD_MMC=y |
|
502 | +CONFIG_CMD_MMC_SWRITE=y |
486 | +CONFIG_CMD_GPIO=y |
|
503 | +CONFIG_CMD_DHCP=y |
487 | +CONFIG_CMD_DHCP=y |
|
504 | +CONFIG_CMD_MII=y |
488 | +CONFIG_CMD_MII=y |
|
505 | +CONFIG_CMD_PING=y |
489 | +CONFIG_CMD_PING=y |
|
- | 490 | +CONFIG_CMD_CACHE=y |
||
506 | +CONFIG_CMD_EXT4=y |
491 | +CONFIG_CMD_EXT4=y |
|
507 | +CONFIG_CMD_EXT4_WRITE=y |
492 | +CONFIG_CMD_EXT4_WRITE=y |
|
- | 493 | +CONFIG_CMD_FAT=y |
||
508 | +CONFIG_CMD_FS_GENERIC=y |
494 | +CONFIG_CMD_FS_GENERIC=y |
|
509 | +CONFIG_DOS_PARTITION=y |
- | ||
510 | +CONFIG_ENV_IS_IN_MMC=y |
495 | +CONFIG_ENV_IS_IN_MMC=y |
|
511 | +CONFIG_MMC_MXS=y |
496 | +CONFIG_MMC_MXS=y |
|
512 | +CONFIG_MII=y |
- | ||
513 | +CONFIG_CONS_INDEX=0 |
- | ||
514 | +CONFIG_OF_LIBFDT=y |
497 | +CONFIG_OF_LIBFDT=y |
|
515 | +# CONFIG_EFI_LOADER is not set |
- | ||
516 | diff --git a/include/configs/duckbill.h b/include/configs/duckbill.h |
- | ||
517 | new file mode 100644 |
- | ||
518 | index 0000000000..e7fce8843e |
- | ||
519 | --- /dev/null |
498 | --- /dev/null |
|
520 | +++ b/include/configs/duckbill.h |
499 | +++ b/include/configs/duckbill.h |
|
521 | @@ -0,0 +1,179 @@ |
500 | @@ -0,0 +1,199 @@ |
|
522 | +/* SPDX-License-Identifier: GPL-2.0+ */ |
- | ||
523 | +/* |
501 | +/* |
|
524 | + * Copyright (C) 2014-2019 Michael Heimpold <mhei@heimpold.de> |
502 | + * Copyright (C) 2014-2015 Michael Heimpold <mhei@heimpold.de> |
|
525 | + * |
503 | + * |
|
- | 504 | + * SPDX-License-Identifier: GPL-2.0+ |
||
526 | + */ |
505 | + */ |
|
527 | +#ifndef __CONFIGS_DUCKBILL_H__ |
506 | +#ifndef __CONFIGS_DUCKBILL_H__ |
|
528 | +#define __CONFIGS_DUCKBILL_H__ |
507 | +#define __CONFIGS_DUCKBILL_H__ |
|
529 | + |
508 | + |
|
530 | +/* System configurations */ |
509 | +/* System configurations */ |
|
- | 510 | +#define CONFIG_MX28 /* i.MX28 SoC */ |
||
531 | +#define CONFIG_MACH_TYPE MACH_TYPE_DUCKBILL |
511 | +#define CONFIG_MACH_TYPE MACH_TYPE_DUCKBILL |
|
532 | + |
512 | + |
|
533 | +#define CONFIG_MISC_INIT_R |
513 | +#define CONFIG_MISC_INIT_R |
|
534 | + |
514 | + |
|
535 | +#define CONFIG_SYS_MXS_VDD5V_ONLY |
515 | +#define CONFIG_SYS_MXS_VDD5V_ONLY |
|
536 | + |
516 | + |
|
- | 517 | +/* U-Boot Commands */ |
||
- | 518 | +#define CONFIG_CMD_FUSE |
||
- | 519 | +#define CONFIG_CMD_UNZIP |
||
- | 520 | + |
||
537 | +/* Memory configuration */ |
521 | +/* Memory configuration */ |
|
- | 522 | +#define CONFIG_NR_DRAM_BANKS 1 /* 1 bank of DRAM */ |
||
538 | +#define PHYS_SDRAM_1 0x40000000 /* Base address */ |
523 | +#define PHYS_SDRAM_1 0x40000000 /* Base address */ |
|
539 | +#define PHYS_SDRAM_1_SIZE 0x40000000 /* Max 1 GB RAM */ |
524 | +#define PHYS_SDRAM_1_SIZE 0x40000000 /* Max 1 GB RAM */ |
|
540 | +#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1 |
525 | +#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1 |
|
541 | + |
526 | + |
|
542 | +/* Environment is in MMC */ |
527 | +/* Environment is in MMC */ |
|
543 | +#define CONFIG_ENV_OVERWRITE |
528 | +#define CONFIG_ENV_OVERWRITE |
|
544 | +#define CONFIG_ENV_SIZE (128 * 1024) |
529 | +#define CONFIG_ENV_SIZE (128 * 1024) |
|
545 | +#define CONFIG_ENV_OFFSET (128 * 1024) |
530 | +#define CONFIG_ENV_OFFSET (128 * 1024) |
|
546 | +#define CONFIG_ENV_OFFSET_REDUND (256 * 1024) |
531 | +#define CONFIG_ENV_OFFSET_REDUND (256 * 1024) |
|
547 | +#define CONFIG_SYS_MMC_ENV_DEV 0 |
532 | +#define CONFIG_SYS_MMC_ENV_DEV 0 |
|
548 | +#define CONFIG_SYS_REDUNDAND_ENVIRONMENT |
533 | +#define CONFIG_SYS_REDUNDAND_ENVIRONMENT |
|
549 | + |
534 | + |
|
550 | +/* FEC Ethernet on SoC */ |
535 | +/* FEC Ethernet on SoC */ |
|
551 | +#ifdef CONFIG_CMD_NET |
536 | +#ifdef CONFIG_CMD_NET |
|
552 | +#define CONFIG_FEC_MXC |
537 | +#define CONFIG_FEC_MXC |
|
- | 538 | +#define CONFIG_NET_MULTI |
||
553 | +#define CONFIG_MX28_FEC_MAC_IN_OCOTP |
539 | +#define CONFIG_MX28_FEC_MAC_IN_OCOTP |
|
- | 540 | +#define CONFIG_FEC_MXC_PHYADDR 1 |
||
554 | +#define CONFIG_FEC_MXC_MDIO_BASE MXS_ENET0_BASE |
541 | +#define IMX_FEC_BASE MXS_ENET0_BASE |
|
555 | +#endif |
542 | +#endif |
|
556 | + |
543 | + |
|
557 | +#define CONFIG_IPADDR 192.168.1.10 |
544 | +#define CONFIG_IPADDR 192.168.1.10 |
|
558 | +#define CONFIG_SERVERIP 192.168.1.1 |
545 | +#define CONFIG_SERVERIP 192.168.1.1 |
|
559 | +#define CONFIG_NETMASK 255.255.255.0 |
546 | +#define CONFIG_NETMASK 255.255.255.0 |
|
560 | +#define CONFIG_GATEWAYIP 192.168.1.254 |
547 | +#define CONFIG_GATEWAYIP 192.168.1.254 |
|
561 | + |
548 | + |
|
- | 549 | +/* BOOTP options */ |
||
- | 550 | +#define CONFIG_BOOTP_SUBNETMASK |
||
- | 551 | +#define CONFIG_BOOTP_GATEWAY |
||
- | 552 | +#define CONFIG_BOOTP_HOSTNAME |
||
- | 553 | + |
||
- | 554 | +/* SPI */ |
||
- | 555 | +#ifdef CONFIG_CMD_SPI |
||
- | 556 | +#define CONFIG_DEFAULT_SPI_BUS 2 |
||
- | 557 | +#define CONFIG_DEFAULT_SPI_MODE SPI_MODE_0 |
||
- | 558 | +#endif |
||
- | 559 | + |
||
562 | +/* Boot Linux */ |
560 | +/* Boot Linux */ |
|
563 | +#define CONFIG_BOOTDELAY 1 |
561 | +#define CONFIG_BOOTDELAY 1 |
|
564 | +#define CONFIG_BOOTFILE "zImage" |
562 | +#define CONFIG_BOOTFILE "zImage" |
|
565 | +#define CONFIG_LOADADDR 0x42000000 |
563 | +#define CONFIG_LOADADDR 0x42000000 |
|
566 | +#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR |
564 | +#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR |
|
567 | +#define CONFIG_REVISION_TAG |
565 | +#define CONFIG_REVISION_TAG |
|
568 | +#define CONFIG_SERIAL_TAG |
566 | +#define CONFIG_SERIAL_TAG |
|
569 | +#define CONFIG_OF_BOARD_SETUP |
567 | +#define CONFIG_OF_BOARD_SETUP |
|
570 | +#define CONFIG_BOOT_RETRY_TIME 120 /* retry autoboot after 120 seconds */ |
568 | +#define CONFIG_BOOT_RETRY_TIME 120 /* retry autoboot after 120 seconds */ |
|
571 | +#define CONFIG_AUTOBOOT_KEYED |
569 | +#define CONFIG_AUTOBOOT_KEYED |
|
572 | +#define CONFIG_AUTOBOOT_PROMPT "Autobooting in %d seconds, " \ |
570 | +#define CONFIG_AUTOBOOT_PROMPT "Autobooting in %d seconds, " \ |
|
573 | + "press <c> to stop\n" |
571 | + "press <c> to stop\n" |
|
574 | +#define CONFIG_AUTOBOOT_DELAY_STR "\x63" /* allows retry after retry time */ |
572 | +#define CONFIG_AUTOBOOT_DELAY_STR "\x63" /* allows retry after retry time */ |
|
575 | +#define CONFIG_AUTOBOOT_STOP_STR " " /* stop autoboot with <Space> */ |
573 | +#define CONFIG_AUTOBOOT_STOP_STR " " /* stop autoboot with <Space> */ |
|
576 | +#define CONFIG_RESET_TO_RETRY /* reset board to retry booting */ |
574 | +#define CONFIG_RESET_TO_RETRY /* reset board to retry booting */ |
|
577 | + |
575 | + |
|
578 | +/* Extra Environment */ |
576 | +/* Extra Environment */ |
|
579 | +#define CONFIG_EXTRA_ENV_SETTINGS \ |
577 | +#define CONFIG_EXTRA_ENV_SETTINGS \ |
|
580 | + "mmc_part2_offset=1000\0" \ |
578 | + "mmc_part2_offset=1000\0" \ |
|
581 | + "mmc_part3_offset=19000\0" \ |
579 | + "mmc_part3_offset=19000\0" \ |
|
582 | + "update_openwrt_firmware_filename=openwrt-mxs-root.ext4\0" \ |
580 | + "update_openwrt_firmware_filename=openwrt-mxs-root.ext4\0" \ |
|
583 | + "update_openwrt_firmware=" \ |
581 | + "update_openwrt_firmware=" \ |
|
584 | + "if mmc rescan; then " \ |
582 | + "if mmc rescan; then " \ |
|
585 | + "if tftp ${update_openwrt_firmware_filename}; then " \ |
583 | + "if tftp ${update_openwrt_firmware_filename}; then " \ |
|
586 | + "setexpr fw_sz ${filesize} + 1ff; " \ |
584 | + "setexpr fw_sz ${filesize} + 1ff; " \ |
|
587 | + "setexpr fw_sz ${fw_sz} / 200; " \ |
585 | + "setexpr fw_sz ${fw_sz} / 200; " \ |
|
588 | + "mmc write ${loadaddr} ${mmc_part2_offset} ${fw_sz}; " \ |
586 | + "mmc write ${loadaddr} ${mmc_part2_offset} ${fw_sz}; " \ |
|
589 | + "mmc write ${loadaddr} ${mmc_part3_offset} ${fw_sz}; " \ |
587 | + "mmc write ${loadaddr} ${mmc_part3_offset} ${fw_sz}; " \ |
|
590 | + "fi; " \ |
588 | + "fi; " \ |
|
591 | + "fi\0" \ |
589 | + "fi\0" \ |
|
592 | + "update_fw_filename_prefix=emmc.img.\0" \ |
590 | + "update_fw_filename_prefix=emmc.img.\0" \ |
|
593 | + "update_fw_filename_suffix=.gz\0" \ |
591 | + "update_fw_filename_suffix=.gz\0" \ |
|
594 | + "update_fw_parts=0x6\0" \ |
592 | + "update_fw_parts=0x6\0" \ |
|
595 | + "update_fw_fsize_uncompressed=4000000\0" \ |
593 | + "update_fw_fsize_uncompressed=4000000\0" \ |
|
596 | + "gzwrite_wbuf=100000\0" \ |
594 | + "gzwrite_wbuf=100000\0" \ |
|
597 | + "update_emmc_firmware=" \ |
595 | + "update_emmc_firmware=" \ |
|
598 | + "setexpr i ${update_fw_parts}; setexpr error 0; " \ |
596 | + "setexpr i ${update_fw_parts}; setexpr error 0; " \ |
|
599 | + "while itest ${i} -gt 0; do " \ |
597 | + "while itest ${i} -gt 0; do " \ |
|
600 | + "echo Transfering firmware image part ${i} of ${update_fw_parts}; " \ |
598 | + "echo Transfering firmware image part ${i} of ${update_fw_parts}; " \ |
|
601 | + "if itest ${i} -le f; then " \ |
599 | + "if itest ${i} -le 9; then " \ |
|
602 | + "setenv j 0${i}; " \ |
600 | + "setenv j 0${i}; " \ |
|
603 | + "else " \ |
601 | + "else " \ |
|
604 | + "setenv j ${i}; " \ |
602 | + "setenv j ${i}; " \ |
|
605 | + "fi; " \ |
603 | + "fi; " \ |
|
606 | + "if tftp ${loadaddr} ${update_fw_basedir}${update_fw_filename_prefix}${j}${update_fw_filename_suffix}; then " \ |
604 | + "if tftp ${loadaddr} ${update_fw_basedir}${update_fw_filename_prefix}${j}${update_fw_filename_suffix}; then " \ |
|
607 | + "setexpr k ${i} - 1; " \ |
605 | + "setexpr k ${i} - 1; " \ |
|
608 | + "setexpr offset ${update_fw_fsize_uncompressed} * ${k}; " \ |
606 | + "setexpr offset ${update_fw_fsize_uncompressed} * ${k}; " \ |
|
609 | + "if gzwrite mmc ${mmcdev} ${loadaddr} ${filesize} ${gzwrite_wbuf} ${offset}; then " \ |
607 | + "if gzwrite mmc ${mmcdev} ${loadaddr} ${filesize} ${gzwrite_wbuf} ${offset}; then " \ |
|
610 | + "setexpr i ${i} - 1; " \ |
608 | + "setexpr i ${i} - 1; " \ |
|
611 | + "else " \ |
609 | + "else " \ |
|
612 | + "setexpr i 0; " \ |
610 | + "setexpr i 0; " \ |
|
613 | + "setexpr error 1; " \ |
611 | + "setexpr error 1; " \ |
|
614 | + "fi; " \ |
612 | + "fi; " \ |
|
615 | + "else " \ |
613 | + "else " \ |
|
616 | + "setexpr i 0; " \ |
614 | + "setexpr i 0; " \ |
|
617 | + "setexpr error 1; " \ |
615 | + "setexpr error 1; " \ |
|
618 | + "fi; " \ |
616 | + "fi; " \ |
|
619 | + "done; setenv i; setenv j; setenv k; setenv fsize; setenv filesize; setenv offset; " \ |
617 | + "done; setenv i; setenv j; setenv k; setenv fsize; setenv filesize; setenv offset; " \ |
|
620 | + "if test ${error} -eq 1; then " \ |
618 | + "if test ${error} -eq 1; then " \ |
|
621 | + "echo Firmware Update FAILED; " \ |
619 | + "echo Firmware Update FAILED; " \ |
|
622 | + "else " \ |
620 | + "else " \ |
|
623 | + "echo Firmware Update OK; " \ |
621 | + "echo Firmware Update OK; " \ |
|
624 | + "fi; setenv error\0" \ |
622 | + "fi; setenv error\0" \ |
|
625 | + "erase_mmc=mmc erase 0 2\0" \ |
623 | + "erase_mmc=mmc erase 0 2\0" \ |
|
626 | + "erase_env1=mmc erase 100 100\0" \ |
624 | + "erase_env1=mmc erase 100 100\0" \ |
|
627 | + "erase_env2=mmc erase 200 100\0" \ |
625 | + "erase_env2=mmc erase 200 100\0" \ |
|
628 | + "image=zImage\0" \ |
626 | + "image=zImage\0" \ |
|
629 | + "console=ttyAMA0\0" \ |
627 | + "console=ttyAMA0\0" \ |
|
- | 628 | + "fdt_file=imx28-duckbill-2.dtb\0" \ |
||
630 | + "fdt_addr=0x41000000\0" \ |
629 | + "fdt_addr=0x41000000\0" \ |
|
631 | + "boot_fdt=try\0" \ |
630 | + "boot_fdt=try\0" \ |
|
632 | + "ip_dyn=yes\0" \ |
631 | + "ip_dyn=yes\0" \ |
|
633 | + "bootsys=1\0" \ |
632 | + "bootsys=1\0" \ |
|
634 | + "mmcdev=0\0" \ |
633 | + "mmcdev=0\0" \ |
|
635 | + "mmcpart=2\0" \ |
634 | + "mmcpart=2\0" \ |
|
636 | + "mmcroot=/dev/mmcblk0p2\0" \ |
635 | + "mmcroot=/dev/mmcblk0p2\0" \ |
|
637 | + "mmcargs=setenv bootargs console=${console},${baudrate} " \ |
636 | + "mmcargs=setenv bootargs console=${console},${baudrate} " \ |
|
638 | + "root=${mmcroot} " \ |
637 | + "root=${mmcroot} " \ |
|
639 | + "rootwait bootsys=${bootsys} panic=1 ${extraargs}\0" \ |
638 | + "rootwait bootsys=${bootsys} panic=1\0" \ |
|
640 | + "loadimage=ext4load mmc ${mmcdev}:${mmcpart} ${loadaddr} /boot/${image}\0" \ |
639 | + "loadimage=ext4load mmc ${mmcdev}:${mmcpart} ${loadaddr} /boot/${image}\0" \ |
|
641 | + "loadfdt=ext4load mmc ${mmcdev}:${mmcpart} ${fdt_addr} /boot/${fdt_file}\0" \ |
640 | + "loadfdt=ext4load mmc ${mmcdev}:${mmcpart} ${fdt_addr} /boot/${fdt_file}\0" \ |
|
642 | + "mmcboot=echo Booting from mmc ...; " \ |
641 | + "mmcboot=echo Booting from mmc ...; " \ |
|
643 | + "setexpr mmcpart 1 + ${bootsys}; " \ |
642 | + "setexpr mmcpart 1 + ${bootsys}; " \ |
|
644 | + "setenv mmcroot /dev/mmcblk0p${mmcpart}; " \ |
643 | + "setenv mmcroot /dev/mmcblk0p${mmcpart}; " \ |
|
645 | + "run mmcargs; " \ |
644 | + "run mmcargs; " \ |
|
646 | + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ |
645 | + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ |
|
647 | + "if run loadfdt; then " \ |
646 | + "if run loadfdt; then " \ |
|
648 | + "bootz ${loadaddr} - ${fdt_addr}; " \ |
647 | + "bootz ${loadaddr} - ${fdt_addr}; " \ |
|
649 | + "else " \ |
648 | + "else " \ |
|
650 | + "if test ${boot_fdt} = try; then " \ |
649 | + "if test ${boot_fdt} = try; then " \ |
|
651 | + "bootz; " \ |
650 | + "bootz; " \ |
|
652 | + "else " \ |
651 | + "else " \ |
|
653 | + "echo WARN: Cannot load the DT; " \ |
652 | + "echo WARN: Cannot load the DT; " \ |
|
654 | + "fi; " \ |
653 | + "fi; " \ |
|
655 | + "fi; " \ |
654 | + "fi; " \ |
|
656 | + "else " \ |
655 | + "else " \ |
|
657 | + "bootz; " \ |
656 | + "bootz; " \ |
|
658 | + "fi\0" \ |
657 | + "fi\0" \ |
|
659 | + "nfsroot=/\0" \ |
658 | + "nfsroot=/\0" \ |
|
660 | + "netargs=setenv bootargs console=${console},${baudrate} " \ |
659 | + "netargs=setenv bootargs console=${console},${baudrate} " \ |
|
661 | + "root=/dev/nfs " \ |
660 | + "root=/dev/nfs " \ |
|
662 | + "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp ${extraargs}\0" \ |
661 | + "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \ |
|
663 | + "netboot=echo Booting from net ...; " \ |
662 | + "netboot=echo Booting from net ...; " \ |
|
664 | + "run netargs; " \ |
663 | + "run netargs; " \ |
|
665 | + "if test ${ip_dyn} = yes; then " \ |
664 | + "if test ${ip_dyn} = yes; then " \ |
|
666 | + "setenv get_cmd dhcp; " \ |
665 | + "setenv get_cmd dhcp; " \ |
|
667 | + "else " \ |
666 | + "else " \ |
|
668 | + "setenv get_cmd tftp; " \ |
667 | + "setenv get_cmd tftp; " \ |
|
669 | + "fi; " \ |
668 | + "fi; " \ |
|
670 | + "${get_cmd} ${image}; " \ |
669 | + "${get_cmd} ${image}; " \ |
|
671 | + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ |
670 | + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ |
|
672 | + "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \ |
671 | + "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \ |
|
673 | + "bootz ${loadaddr} - ${fdt_addr}; " \ |
672 | + "bootz ${loadaddr} - ${fdt_addr}; " \ |
|
674 | + "else " \ |
673 | + "else " \ |
|
675 | + "if test ${boot_fdt} = try; then " \ |
674 | + "if test ${boot_fdt} = try; then " \ |
|
676 | + "bootz; " \ |
675 | + "bootz; " \ |
|
677 | + "else " \ |
676 | + "else " \ |
|
678 | + "echo WARN: Cannot load the DT; " \ |
677 | + "echo WARN: Cannot load the DT; " \ |
|
679 | + "fi;" \ |
678 | + "fi;" \ |
|
680 | + "fi; " \ |
679 | + "fi; " \ |
|
681 | + "else " \ |
680 | + "else " \ |
|
682 | + "bootz; " \ |
681 | + "bootz; " \ |
|
683 | + "fi\0" |
682 | + "fi\0" |
|
684 | + |
683 | + |
|
685 | +#define CONFIG_BOOTCOMMAND \ |
684 | +#define CONFIG_BOOTCOMMAND \ |
|
686 | + "mmc dev ${mmcdev}; " \ |
685 | + "mmc dev ${mmcdev}; " \ |
|
687 | + "if mmc rescan; then " \ |
686 | + "if mmc rescan; then " \ |
|
688 | + "if run loadimage; then " \ |
687 | + "if run loadimage; then " \ |
|
689 | + "run mmcboot; " \ |
688 | + "run mmcboot; " \ |
|
690 | + "else " \ |
689 | + "else " \ |
|
691 | + "run netboot; " \ |
690 | + "run netboot; " \ |
|
692 | + "fi; " \ |
691 | + "fi; " \ |
|
693 | + "else " \ |
692 | + "else " \ |
|
694 | + "run netboot; " \ |
693 | + "run netboot; " \ |
|
695 | + "fi" |
694 | + "fi" |
|
696 | + |
695 | + |
|
697 | +/* The rest of the configuration is shared */ |
696 | +/* The rest of the configuration is shared */ |
|
698 | +#include <configs/mxs.h> |
697 | +#include <configs/mxs.h> |
|
699 | + |
698 | + |
|
700 | +#endif /* __CONFIGS_DUCKBILL_H__ */ |
699 | +#endif /* __CONFIGS_DUCKBILL_H__ */ |
|
701 | -- |
- | ||
702 | 2.17.1 |
- | ||
703 | |
- | ||
704 | |
700 | |
|
705 | |
701 | |
|
706 |
|
702 |
|
|
707 | |
703 | |
|
708 | |
704 | |
|
709 | |
705 | |