Commit c3c6fd4176b5433ea21a1b4da45677dc71a8f7d6
1 parent
93e96ce2ff
Exists in
v2017.01-smarct4x
Initial Release of v2017.01 U-Boot for SMARC-T437X
Showing 31 changed files with 3747 additions and 9 deletions Side-by-side Diff
- arch/arm/Kconfig
- arch/arm/dts/Makefile
- arch/arm/dts/am437x-smarct437x.dts
- arch/arm/include/asm/arch-am33xx/hardware_am43xx.h
- arch/arm/include/asm/arch-am33xx/mmc_host_def.h
- arch/arm/mach-omap2/am33xx/Kconfig
- arch/arm/mach-omap2/am33xx/board.c
- arch/arm/mach-omap2/am33xx/clock_am43xx.c
- arch/arm/mach-omap2/config.mk
- board/embedian/common/Kconfig
- board/embedian/smarct437x/Kconfig
- board/embedian/smarct437x/MAINTAINERS
- board/embedian/smarct437x/Makefile
- board/embedian/smarct437x/board.c
- board/embedian/smarct437x/board.h
- board/embedian/smarct437x/mux.c
- common/Kconfig
- configs/smarct437x_evm_spi_uart0_defconfig
- configs/smarct437x_evm_spi_uart1_defconfig
- configs/smarct437x_evm_spi_uart2_defconfig
- configs/smarct437x_evm_spi_uart3_defconfig
- configs/smarct437x_evm_uart0_defconfig
- configs/smarct437x_evm_uart1_defconfig
- configs/smarct437x_evm_uart2_defconfig
- configs/smarct437x_evm_uart3_defconfig
- drivers/mtd/spi/spi_flash_ids.c
- drivers/power/power_i2c.c
- include/configs/embedian_armv7_common.h
- include/configs/embedian_armv7_omap.h
- include/configs/smarct437x_evm.h
- include/dt-bindings/pinctrl/am43xx.h
arch/arm/Kconfig
... | ... | @@ -1055,6 +1055,7 @@ |
1055 | 1055 | source "board/ti/am335x/Kconfig" |
1056 | 1056 | source "board/embedian/smarct335x/Kconfig" |
1057 | 1057 | source "board/ti/am43xx/Kconfig" |
1058 | +source "board/embedian/smarct437x/Kconfig" | |
1058 | 1059 | source "board/birdland/bav335x/Kconfig" |
1059 | 1060 | source "board/ti/ti814x/Kconfig" |
1060 | 1061 | source "board/ti/ti816x/Kconfig" |
arch/arm/dts/Makefile
... | ... | @@ -117,9 +117,7 @@ |
117 | 117 | dtb-$(CONFIG_AM33XX) += am335x-boneblack.dtb am335x-bone.dtb \ |
118 | 118 | am335x-draco.dtb \ |
119 | 119 | am335x-evm.dtb \ |
120 | - am335x-smarct335x-uart0.dtb \ | |
121 | - am335x-smarct335x-uart2.dtb \ | |
122 | - am335x-smarct335x-uart3.dtb \ | |
120 | + am335x-smarct335x.dtb \ | |
123 | 121 | am335x-evmsk.dtb \ |
124 | 122 | am335x-bonegreen.dtb \ |
125 | 123 | am335x-icev2.dtb \ |
... | ... | @@ -127,6 +125,7 @@ |
127 | 125 | am335x-rut.dtb |
128 | 126 | dtb-$(CONFIG_AM43XX) += am437x-gp-evm.dtb am437x-sk-evm.dtb \ |
129 | 127 | am43x-epos-evm.dtb \ |
128 | + am437x-smarct437x.dtb \ | |
130 | 129 | am437x-idk-evm.dtb |
131 | 130 | dtb-$(CONFIG_THUNDERX) += thunderx-88xx.dtb |
132 | 131 |
arch/arm/dts/am437x-smarct437x.dts
1 | +/* | |
2 | + * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ | |
3 | + * | |
4 | + * This program is free software; you can redistribute it and/or modify | |
5 | + * it under the terms of the GNU General Public License version 2 as | |
6 | + * published by the Free Software Foundation. | |
7 | + */ | |
8 | + | |
9 | +/* AM437x SK EVM */ | |
10 | + | |
11 | +/dts-v1/; | |
12 | + | |
13 | +#include "am4372.dtsi" | |
14 | +#include <dt-bindings/pinctrl/am43xx.h> | |
15 | +#include <dt-bindings/pwm/pwm.h> | |
16 | +#include <dt-bindings/gpio/gpio.h> | |
17 | +#include <dt-bindings/input/input.h> | |
18 | + | |
19 | +/ { | |
20 | + model = "TI AM437x SMARCT437X"; | |
21 | + compatible = "ti,am437x-smarct437x","ti,am4372","ti,am43"; | |
22 | + | |
23 | + aliases { | |
24 | + display0 = &lcd0; | |
25 | + }; | |
26 | + | |
27 | + chosen { | |
28 | + tick-timer = &timer2; | |
29 | + }; | |
30 | + | |
31 | + vmmcwl_fixed: fixedregulator-mmcwl { | |
32 | + compatible = "regulator-fixed"; | |
33 | + regulator-name = "vmmcwl_fixed"; | |
34 | + regulator-min-microvolt = <1800000>; | |
35 | + regulator-max-microvolt = <1800000>; | |
36 | + }; | |
37 | + | |
38 | + backlight { | |
39 | + compatible = "pwm-backlight"; | |
40 | + enable-gpios = <&gpio2 4 GPIO_ACTIVE_HIGH>; /* Backlight Enable Pin*/ | |
41 | + pwms = <&ehrpwm0 1 250000 PWM_POLARITY_INVERTED>; | |
42 | + brightness-levels = <0 51 53 56 62 75 128 212 255>; | |
43 | + default-brightness-level = <7>; /* 7 is the brightest */ | |
44 | + }; | |
45 | + | |
46 | + sound: sound@0 { | |
47 | + compatible = "simple-audio-card"; | |
48 | + simple-audio-card,name = "SMARCT437X SOUND CARD"; | |
49 | + simple-audio-card,widgets = | |
50 | + "Headphone", "Headphone Jack", | |
51 | + "Line", "Line In"; | |
52 | + simple-audio-card,routing = | |
53 | + "Headphone Jack", "HPLOUT", | |
54 | + "Headphone Jack", "HPROUT", | |
55 | + "LINE1L", "Line In", | |
56 | + "LINE1R", "Line In"; | |
57 | + simple-audio-card,format = "dsp_b"; | |
58 | + simple-audio-card,bitclock-master = <&sound_master>; | |
59 | + simple-audio-card,frame-master = <&sound_master>; | |
60 | + simple-audio-card,bitclock-inversion; | |
61 | + | |
62 | + simple-audio-card,cpu { | |
63 | + sound-dai = <&mcasp1>; | |
64 | + system-clock-frequency = <12000000>; | |
65 | + }; | |
66 | + | |
67 | + /* For TI TLV320AIC3106 Audio Codec */ | |
68 | + /*sound_master: simple-audio-card,codec { | |
69 | + sound-dai = <&tlv320aic3106>; | |
70 | + system-clock-frequency = <24576000>;*/ | |
71 | + | |
72 | + /* For Freescale SGTL5000 Audio Codec */ | |
73 | + sound_master: simple-audio-card,codec { | |
74 | + sound-dai = <&sgtl5000>; | |
75 | + system-clock-frequency = <24000000>; | |
76 | + }; | |
77 | + }; | |
78 | + | |
79 | + audio_mstrclk: mclk_osc { | |
80 | + compatible = "fixed-clock"; | |
81 | + #clock-cells = <0>; | |
82 | + clock-frequency = <24000000>; | |
83 | + }; | |
84 | + | |
85 | + lcd0: display { | |
86 | + compatible = "primeview,pm070wl4", "panel-dpi"; | |
87 | + label = "lcd"; | |
88 | + | |
89 | + pinctrl-names = "default"; | |
90 | + pinctrl-0 = <&lcd_pins>; | |
91 | + | |
92 | + enable-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>; | |
93 | + | |
94 | + panel-timing { | |
95 | + clock-frequency = <32000000>; | |
96 | + hactive = <800>; | |
97 | + vactive = <480>; | |
98 | + hfront-porch = <42>; | |
99 | + hback-porch = <84>; | |
100 | + hsync-len = <128>; | |
101 | + vback-porch = <33>; | |
102 | + vfront-porch = <10>; | |
103 | + vsync-len = <2>; | |
104 | + hsync-active = <0>; | |
105 | + vsync-active = <0>; | |
106 | + de-active = <1>; | |
107 | + pixelclk-active = <1>; | |
108 | + }; | |
109 | + | |
110 | + port { | |
111 | + lcd_in: endpoint { | |
112 | + remote-endpoint = <&dpi_out>; | |
113 | + }; | |
114 | + }; | |
115 | + }; | |
116 | +}; | |
117 | + | |
118 | +&am43xx_pinmux { | |
119 | + pinctrl-names = "default"; | |
120 | + pinctrl-0 = <&clkout1_pin &clkout2_pin &gpio_pins_default &wdt_time_out_pins_default &debugss_pins>; | |
121 | + | |
122 | + i2c0_pins: i2c0_pins { | |
123 | + pinctrl-single,pins = < | |
124 | + 0x188 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_sda.i2c0_sda */ | |
125 | + 0x18c (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE0) /* i2c0_scl.i2c0_scl */ | |
126 | + >; | |
127 | + }; | |
128 | + | |
129 | + i2c1_pins: i2c1_pins { | |
130 | + pinctrl-single,pins = < | |
131 | + 0x110 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE3) /* mii1_rxerr.i2c1_scl */ | |
132 | + 0x10c (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE3) /* mii1_crs.i2c1_sda */ | |
133 | + >; | |
134 | + }; | |
135 | + | |
136 | + i2c2_pins: i2c2_pins { | |
137 | + pinctrl-single,pins = < | |
138 | + 0x1ec (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE3) /* cam1_data1.i2c2_scl */ | |
139 | + 0x1e8 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE3) /* cam1_data0.i2c2_sda */ | |
140 | + >; | |
141 | + }; | |
142 | + | |
143 | + mmc1_pins: pinmux_mmc1_pins { | |
144 | + pinctrl-single,pins = < | |
145 | + 0x0f0 (PIN_INPUT | MUX_MODE0) /* mmc0_dat3.mmc0_dat3 */ | |
146 | + 0x0f4 (PIN_INPUT | MUX_MODE0) /* mmc0_dat2.mmc0_dat2 */ | |
147 | + 0x0f8 (PIN_INPUT | MUX_MODE0) /* mmc0_dat1.mmc0_dat1 */ | |
148 | + 0x0fc (PIN_INPUT | MUX_MODE0) /* mmc0_dat0.mmc0_dat0 */ | |
149 | + 0x100 (PIN_INPUT | MUX_MODE0) /* mmc0_clk.mmc0_clk */ | |
150 | + 0x104 (PIN_INPUT | MUX_MODE0) /* mmc0_cmd.mmc0_cmd */ | |
151 | + 0x160 (PIN_INPUT | MUX_MODE7) /* spi0_cs1.gpio0_6 */ | |
152 | + >; | |
153 | + }; | |
154 | + | |
155 | + emmc_pins: pinmux_emmc_pins { | |
156 | + pinctrl-single,pins = < | |
157 | + 0x80 (PIN_INPUT | MUX_MODE2) /* gpmc_csn1.mmc1_clk */ | |
158 | + 0x84 (PIN_INPUT | MUX_MODE2) /* gpmc_csn2.mmc1_cmd */ | |
159 | + 0x00 (PIN_INPUT | MUX_MODE1) /* gpmc_ad0.mmc1_dat0 */ | |
160 | + 0x04 (PIN_INPUT | MUX_MODE1) /* gpmc_ad1.mmc1_dat1 */ | |
161 | + 0x08 (PIN_INPUT | MUX_MODE1) /* gpmc_ad2.mmc1_dat2 */ | |
162 | + 0x0c (PIN_INPUT | MUX_MODE1) /* gpmc_ad3.mmc1_dat3 */ | |
163 | + 0x10 (PIN_INPUT | MUX_MODE1) /* gpmc_ad4.mmc1_dat4 */ | |
164 | + 0x14 (PIN_INPUT | MUX_MODE1) /* gpmc_ad5.mmc1_dat5 */ | |
165 | + 0x18 (PIN_INPUT | MUX_MODE1) /* gpmc_ad6.mmc1_dat6 */ | |
166 | + 0x1c (PIN_INPUT | MUX_MODE1) /* gpmc_ad7.mmc1_dat7 */ | |
167 | + >; | |
168 | + }; | |
169 | + | |
170 | + sdmmc_pins: pinmux_sdmmc_pins { | |
171 | + pinctrl-single,pins = < | |
172 | + 0x8c (PIN_INPUT | MUX_MODE3) /* gpmc_clk.mmc2_clk */ | |
173 | + 0x88 (PIN_INPUT | MUX_MODE3) /* gpmc_csn3.mmc2_cmd */ | |
174 | + 0x30 (PIN_INPUT | MUX_MODE3) /* gpmc_ad12.mmc2_dat0 */ | |
175 | + 0x34 (PIN_INPUT | MUX_MODE3) /* gpmc_ad13.mmc2_dat1 */ | |
176 | + 0x38 (PIN_INPUT | MUX_MODE3) /* gpmc_ad14.mmc2_dat2 */ | |
177 | + 0x3c (PIN_INPUT | MUX_MODE3) /* gpmc_ad15.mmc2_dat3 */ | |
178 | + 0x20 (PIN_INPUT | MUX_MODE3) /* gpmc_ad8.mmc2_dat4 */ | |
179 | + 0x24 (PIN_INPUT | MUX_MODE3) /* gpmc_ad9.mmc2_dat5 */ | |
180 | + 0x28 (PIN_INPUT | MUX_MODE3) /* gpmc_ad10.mmc2_dat6 */ | |
181 | + 0x2c (PIN_INPUT | MUX_MODE3) /* gpmc_ad11.mmc2_dat7 */ | |
182 | + >; | |
183 | + }; | |
184 | + | |
185 | + ehrpwm0b_pins: backlight_pins { | |
186 | + pinctrl-single,pins = < | |
187 | + 0x1d8 (PIN_OUTPUT | MUX_MODE6) /* cam1_vd.ehrpwm0B */ | |
188 | + >; | |
189 | + }; | |
190 | + | |
191 | + clkout1_pin: pinmux_clkout1_pin { | |
192 | + pinctrl-single,pins = < | |
193 | + 0x270 (PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* XDMA_EVENT_INTR0/CLKOUT1 */ | |
194 | + >; | |
195 | + }; | |
196 | + | |
197 | + clkout2_pin: pinmux_clkout2_pin { | |
198 | + pinctrl-single,pins = < | |
199 | + 0x274 (PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* XDMA_EVENT_INTR1/CLKOUT2 */ | |
200 | + >; | |
201 | + }; | |
202 | + | |
203 | + dcan0_default: dcan0_default_pins { | |
204 | + pinctrl-single,pins = < | |
205 | + 0x17c (PIN_INPUT_PULLUP | MUX_MODE2) /* uart1_rtsn.dcan0_rx */ | |
206 | + 0x178 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* uart1_ctsn.dcan0_tx */ | |
207 | + >; | |
208 | + }; | |
209 | + | |
210 | + dcan1_default: dcan1_default_pins { | |
211 | + pinctrl-single,pins = < | |
212 | + 0x184 (PIN_INPUT_PULLUP | MUX_MODE2) /* uart1_txd.dcan1_rx */ | |
213 | + 0x180 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* uart1_rxd.dcan1_tx */ | |
214 | + >; | |
215 | + }; | |
216 | + | |
217 | + uart0_pins: pinmux_uart0_pins { | |
218 | + pinctrl-single,pins = < | |
219 | + 0x168 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE0) /* uart0_ctsn.uart0_ctsn */ | |
220 | + 0x16c (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE0) /* uart0_rtsn.uart0_rtsn */ | |
221 | + 0x170 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE0) /* uart0_rxd.uart0_rxd */ | |
222 | + 0x174 (PIN_INPUT | PULL_DISABLE | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE0) /* uart0_txd.uart0_txd */ | |
223 | + >; | |
224 | + }; | |
225 | + | |
226 | + uart0_pins_sleep: pinmux_uart0_pins_sleep { | |
227 | + pinctrl-single,pins = < | |
228 | + 0x168 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
229 | + 0x16c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
230 | + 0x170 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
231 | + 0x174 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
232 | + >; | |
233 | + }; | |
234 | + | |
235 | + uart3_pins: pinmux_uart3_pins { | |
236 | + pinctrl-single,pins = < | |
237 | + 0x228 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE0) /* uart3_rxd.uart3_rxd */ | |
238 | + 0x22c (PIN_INPUT | PULL_DISABLE | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE0) /* uart3_txd.uart3_txd */ | |
239 | + >; | |
240 | + }; | |
241 | + | |
242 | + uart3_pins_sleep: pinmux_uart3_pins_sleep { | |
243 | + pinctrl-single,pins = < | |
244 | + 0x228 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
245 | + 0x22c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
246 | + >; | |
247 | + }; | |
248 | + | |
249 | + uart2_pins: pinmux_uart2_pins { | |
250 | + pinctrl-single,pins = < | |
251 | + 0x200 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE2) /* cam1_data6.uart2_ctsn */ | |
252 | + 0x204 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE2) /* cam1_data7_rtsn.uart2_rtsn */ | |
253 | + 0x1f8 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE2) /* cam1_data4_uart2rxd */ | |
254 | + 0x1fc (PIN_INPUT | PULL_DISABLE | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE2) /* cam1_data5.uart2_txd */ | |
255 | + >; | |
256 | + }; | |
257 | + | |
258 | + uart2_pins_sleep: pinmux_uart2_pins_sleep { | |
259 | + pinctrl-single,pins = < | |
260 | + 0x200 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
261 | + 0x204 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
262 | + 0x1f8 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
263 | + 0x1fc (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
264 | + >; | |
265 | + }; | |
266 | + | |
267 | + uart4_pins: pinmux_uart4_pins { | |
268 | + pinctrl-single,pins = < | |
269 | + 0x070 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE6) /* gpmc_wait0.uart4_rxd */ | |
270 | + 0x074 (PIN_INPUT | PULL_DISABLE | SLEWCTRL_FAST | DS0_PULL_UP_DOWN_EN | MUX_MODE6) /* gpmc_wpn.uart4_txd */ | |
271 | + >; | |
272 | + }; | |
273 | + | |
274 | + uart4_pins_sleep: pinmux_uart4_pins_sleep { | |
275 | + pinctrl-single,pins = < | |
276 | + 0x070 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
277 | + 0x174 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
278 | + >; | |
279 | + }; | |
280 | + | |
281 | + /*GPIO0-GPIO11, GPIO0-5 is input and GPIO6-11 is output by default.*/ | |
282 | + gpio_pins_default: pinmux_gpio_pin { | |
283 | + pinctrl-single,pins = < | |
284 | + 0x26c (PIN_INPUT_PULLDOWN | MUX_MODE9) /* spi2_cs0.gpio0_23 */ | |
285 | + 0x264 (PIN_INPUT_PULLDOWN | MUX_MODE9) /* spi2_d0.gpio0_20 */ | |
286 | + 0x268 (PIN_INPUT_PULLDOWN | MUX_MODE9) /* spi2_d1.gpio0_21 */ | |
287 | + 0x260 (PIN_INPUT_PULLDOWN | MUX_MODE9) /* spi2_sclk.gpio0_22 */ | |
288 | + 0x21c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* cam0_data5.gpio4_27 */ | |
289 | + 0x224 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* cam0_data7.gpio4_29 */ | |
290 | + 0x19c (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* mcasp0_ahclkr.gpio3_17 */ | |
291 | + 0x198 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* mcasp0_axr0.gpio3_16 */ | |
292 | + 0x210 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* cam0_data2.gpio4_24 */ | |
293 | + 0x214 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* cam0_data3.gpio4_25 */ | |
294 | + 0x218 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* cam0_data4.gpio4_26 */ | |
295 | + 0x220 (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* cam0_data6.gpio4_28 */ | |
296 | + >; | |
297 | + }; | |
298 | + | |
299 | + wdt_time_out_pins_default: pinmux_wdt_time_out_pin { | |
300 | + pinctrl-single,pins = < | |
301 | + 0x234 (PIN_OUTPUT_PULLDOWN | MUX_MODE6) /* uart3_rtsn.ehrpwm5B */ | |
302 | + >; | |
303 | + }; | |
304 | + | |
305 | + cpsw_default: cpsw_default { | |
306 | + pinctrl-single,pins = < | |
307 | + /* Slave 1 */ | |
308 | + 0x12c (PIN_OUTPUT | MUX_MODE2) /* mii1_txclk.rmii1_tclk */ | |
309 | + 0x114 (PIN_OUTPUT | MUX_MODE2) /* mii1_txen.rgmii1_tctl */ | |
310 | + 0x128 (PIN_OUTPUT | MUX_MODE2) /* mii1_txd0.rgmii1_td0 */ | |
311 | + 0x124 (PIN_OUTPUT | MUX_MODE2) /* mii1_txd1.rgmii1_td1 */ | |
312 | + 0x120 (PIN_OUTPUT | MUX_MODE2) /* mii1_txd0.rgmii1_td2 */ | |
313 | + 0x11c (PIN_OUTPUT | MUX_MODE2) /* mii1_txd1.rgmii1_td3 */ | |
314 | + 0x130 (PIN_INPUT | MUX_MODE2) /* mii1_rxclk.rmii1_rclk */ | |
315 | + 0x118 (PIN_INPUT | MUX_MODE2) /* mii1_rxdv.rgmii1_rctl */ | |
316 | + 0x140 (PIN_INPUT | MUX_MODE2) /* mii1_rxd0.rgmii1_rd0 */ | |
317 | + 0x13c (PIN_INPUT | MUX_MODE2) /* mii1_rxd1.rgmii1_rd1 */ | |
318 | + 0x138 (PIN_INPUT | MUX_MODE2) /* mii1_rxd0.rgmii1_rd2 */ | |
319 | + 0x134 (PIN_INPUT | MUX_MODE2) /* mii1_rxd1.rgmii1_rd3 */ | |
320 | + | |
321 | + /* Slave 2 */ | |
322 | + 0x58 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a6.rgmii2_tclk */ | |
323 | + 0x40 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a0.rgmii2_tctl */ | |
324 | + 0x54 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a5.rgmii2_td0 */ | |
325 | + 0x50 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a4.rgmii2_td1 */ | |
326 | + 0x4c (PIN_OUTPUT | MUX_MODE2) /* gpmc_a3.rgmii2_td2 */ | |
327 | + 0x48 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a2.rgmii2_td3 */ | |
328 | + 0x5c (PIN_INPUT | MUX_MODE2) /* gpmc_a7.rgmii2_rclk */ | |
329 | + 0x44 (PIN_INPUT | MUX_MODE2) /* gpmc_a1.rgmii2_rtcl */ | |
330 | + 0x6c (PIN_INPUT | MUX_MODE2) /* gpmc_a11.rgmii2_rd0 */ | |
331 | + 0x68 (PIN_INPUT | MUX_MODE2) /* gpmc_a10.rgmii2_rd1 */ | |
332 | + 0x64 (PIN_INPUT | MUX_MODE2) /* gpmc_a9.rgmii2_rd2 */ | |
333 | + 0x60 (PIN_INPUT | MUX_MODE2) /* gpmc_a8.rgmii2_rd3 */ | |
334 | + >; | |
335 | + }; | |
336 | + | |
337 | + cpsw_sleep: cpsw_sleep { | |
338 | + pinctrl-single,pins = < | |
339 | + /* Slave 1 reset value */ | |
340 | + 0x12c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
341 | + 0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
342 | + 0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
343 | + 0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
344 | + 0x120 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
345 | + 0x11c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
346 | + 0x130 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
347 | + 0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
348 | + 0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
349 | + 0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
350 | + 0x138 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
351 | + 0x134 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
352 | + | |
353 | + /* Slave 2 reset value */ | |
354 | + 0x58 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
355 | + 0x40 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
356 | + 0x54 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
357 | + 0x50 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
358 | + 0x4c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
359 | + 0x48 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
360 | + 0x5c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
361 | + 0x44 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
362 | + 0x6c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
363 | + 0x68 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
364 | + 0x64 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
365 | + 0x60 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
366 | + >; | |
367 | + }; | |
368 | + | |
369 | + davinci_mdio_default: davinci_mdio_default { | |
370 | + pinctrl-single,pins = < | |
371 | + /* MDIO */ | |
372 | + 0x148 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */ | |
373 | + 0x14c (PIN_OUTPUT | MUX_MODE0) /* mdio_clk.mdio_clk */ | |
374 | + >; | |
375 | + }; | |
376 | + | |
377 | + davinci_mdio_sleep: davinci_mdio_sleep { | |
378 | + pinctrl-single,pins = < | |
379 | + /* MDIO reset value */ | |
380 | + 0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
381 | + 0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
382 | + >; | |
383 | + }; | |
384 | + | |
385 | + dss_pins: dss_pins { | |
386 | + pinctrl-single,pins = < | |
387 | + 0x1b0 (PIN_OUTPUT | MUX_MODE2) /* cam0_hd.dss_data23 */ | |
388 | + 0x1b4 (PIN_OUTPUT | MUX_MODE2) /* cam0_vd.dss_data22 */ | |
389 | + 0x1b8 (PIN_OUTPUT | MUX_MODE2) /* cam0_field.dss_data21 */ | |
390 | + 0x1bc (PIN_OUTPUT | MUX_MODE2) /* cam0_wen.dss_data20 */ | |
391 | + 0x1c0 (PIN_OUTPUT | MUX_MODE2) /* cam0_pclk.dss_data19 */ | |
392 | + 0x1c4 (PIN_OUTPUT | MUX_MODE2) /* cam0_data8.dss_data18 */ | |
393 | + 0x1c8 (PIN_OUTPUT | MUX_MODE2) /* cam0_data9.dss_data17 */ | |
394 | + 0x1cc (PIN_OUTPUT | MUX_MODE2) /* cam1_data9.dss_data16 */ | |
395 | + 0x0a0 (PIN_OUTPUT | MUX_MODE0) /* DSS DATA 0 */ | |
396 | + 0x0a4 (PIN_OUTPUT | MUX_MODE0) | |
397 | + 0x0a8 (PIN_OUTPUT | MUX_MODE0) | |
398 | + 0x0ac (PIN_OUTPUT | MUX_MODE0) | |
399 | + 0x0b0 (PIN_OUTPUT | MUX_MODE0) | |
400 | + 0x0b4 (PIN_OUTPUT | MUX_MODE0) | |
401 | + 0x0b8 (PIN_OUTPUT | MUX_MODE0) | |
402 | + 0x0bc (PIN_OUTPUT | MUX_MODE0) | |
403 | + 0x0c0 (PIN_OUTPUT | MUX_MODE0) | |
404 | + 0x0c4 (PIN_OUTPUT | MUX_MODE0) | |
405 | + 0x0c8 (PIN_OUTPUT | MUX_MODE0) | |
406 | + 0x0cc (PIN_OUTPUT | MUX_MODE0) | |
407 | + 0x0d0 (PIN_OUTPUT | MUX_MODE0) | |
408 | + 0x0d4 (PIN_OUTPUT | MUX_MODE0) | |
409 | + 0x0d8 (PIN_OUTPUT | MUX_MODE0) | |
410 | + 0x0dc (PIN_OUTPUT | MUX_MODE0) /* DSS DATA 15 */ | |
411 | + 0x0e0 (PIN_OUTPUT | MUX_MODE0) /* DSS VSYNC */ | |
412 | + 0x0e4 (PIN_OUTPUT | MUX_MODE0) /* DSS HSYNC */ | |
413 | + 0x0e8 (PIN_OUTPUT | MUX_MODE0) /* DSS PCLK */ | |
414 | + 0x0ec (PIN_OUTPUT | MUX_MODE0) /* DSS AC BIAS EN */ | |
415 | + | |
416 | + >; | |
417 | + }; | |
418 | + | |
419 | + /* SPI_NOR Pins */ | |
420 | + spi0_pins: spi0_pins { | |
421 | + pinctrl-single,pins = < | |
422 | + 0x15c (PIN_OUTPUT | MUX_MODE0) /* spi0_cs0.spi0_cs0 */ | |
423 | + 0x150 (PIN_INPUT | MUX_MODE0) /* spi0_sclk.spi0_sclk */ | |
424 | + 0x154 (PIN_INPUT | MUX_MODE0) /* spi0_d0.spi0_d0 */ | |
425 | + 0x158 (PIN_OUTPUT | MUX_MODE0) /* spi0_d1.spi0_d1 */ | |
426 | + >; | |
427 | + }; | |
428 | + | |
429 | + /* SPI0 Pins */ | |
430 | + spi2_pins: spi2_pins { | |
431 | + pinctrl-single,pins = < | |
432 | + 0x1d4 (PIN_OUTPUT | MUX_MODE4) /* cam1_hd.spi2_cs0 */ | |
433 | + 0x1e0 (PIN_OUTPUT | MUX_MODE4) /* cam1_field.spi2_cs0 */ | |
434 | + 0x1dc (PIN_INPUT | MUX_MODE4) /* cam1_pclk.spi2_sclk */ | |
435 | + 0x1d0 (PIN_INPUT | MUX_MODE4) /* cam1_data8.spi2_d0 */ | |
436 | + 0x1e4 (PIN_OUTPUT | MUX_MODE4) /* cam1_wen.spi2_d1 */ | |
437 | + >; | |
438 | + }; | |
439 | + | |
440 | + /* SPI1 Pins */ | |
441 | + spi4_pins: spi4_pins { | |
442 | + pinctrl-single,pins = < | |
443 | + 0x25c (PIN_OUTPUT | MUX_MODE0) /* spi4_cs0.spi4_cs0 */ | |
444 | + 0x230 (PIN_OUTPUT | MUX_MODE2) /* uart3_cstn.spi4_cs1 */ | |
445 | + 0x250 (PIN_INPUT | MUX_MODE0) /* spi4_sclk.spi4_sclk */ | |
446 | + 0x254 (PIN_INPUT | MUX_MODE0) /* spi4_d0.spi4_d0 */ | |
447 | + 0x258 (PIN_OUTPUT | MUX_MODE0) /* spi4_d1.spi4_d1 */ | |
448 | + >; | |
449 | + }; | |
450 | + | |
451 | + mcasp1_pins: mcasp1_pins { | |
452 | + pinctrl-single,pins = < | |
453 | + 0x1a0 (PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcasp0_aclkr.mcasp1_aclkx */ | |
454 | + 0x1a4 (PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcasp0_fsr.mcasp1_fsx */ | |
455 | + 0x1a8 (PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* mcasp0_axr1.mcasp1_axr0 */ | |
456 | + 0x1ac (PIN_INPUT_PULLDOWN | MUX_MODE3) /* mcasp0_ahclkx.mcasp1_axr1 */ | |
457 | + >; | |
458 | + }; | |
459 | + | |
460 | + mcasp1_sleep_pins: mcasp1_sleep_pins { | |
461 | + pinctrl-single,pins = < | |
462 | + 0x1a0 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
463 | + 0x1a4 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
464 | + 0x1a8 (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
465 | + 0x1ac (PIN_INPUT_PULLDOWN | MUX_MODE7) | |
466 | + >; | |
467 | + }; | |
468 | + | |
469 | + lcd_pins: lcd_pins { | |
470 | + pinctrl-single,pins = < | |
471 | + 0x09c (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gpmc_be0n_cle.gpio2_5 */ | |
472 | + >; | |
473 | + }; | |
474 | + | |
475 | + debugss_pins: pinmux_debugss_pins { | |
476 | + pinctrl-single,pins = < | |
477 | + 0x290 (PIN_INPUT_PULLDOWN) | |
478 | + 0x294 (PIN_INPUT_PULLDOWN) | |
479 | + 0x298 (PIN_INPUT_PULLDOWN) | |
480 | + 0x29C (PIN_INPUT_PULLDOWN) | |
481 | + 0x2A0 (PIN_INPUT_PULLDOWN) | |
482 | + 0x2A4 (PIN_INPUT_PULLDOWN) | |
483 | + 0x2A8 (PIN_INPUT_PULLDOWN) | |
484 | + >; | |
485 | + }; | |
486 | + | |
487 | + usb1_pins: usb1_pins { | |
488 | + pinctrl-single,pins = < | |
489 | + 0x2c0 (PIN_OUTPUT | MUX_MODE0) /* usb0_drvvbus.usb0_drvvbus */ | |
490 | + /* USB0 Over Current */ | |
491 | + 0x108 (PIN_INPUT | MUX_MODE9) /* mii1_col.gpio0_0 */ | |
492 | + >; | |
493 | + }; | |
494 | + | |
495 | + usb2_pins: usb2_pins { | |
496 | + pinctrl-single,pins = < | |
497 | + 0x2c4 (PIN_OUTPUT | MUX_MODE0) /* usb1_drvvbus.usb1_drvvbus */ | |
498 | + /* USB1 Over Current */ | |
499 | + 0x078 (PIN_INPUT | MUX_MODE7) /* gpmc_be1n.gpio1_28 */ | |
500 | + >; | |
501 | + }; | |
502 | +}; | |
503 | + | |
504 | +&i2c0 { | |
505 | + status = "okay"; | |
506 | + pinctrl-names = "default"; | |
507 | + pinctrl-0 = <&i2c0_pins>; | |
508 | + clock-frequency = <100000>; | |
509 | +}; | |
510 | + | |
511 | +&i2c1 { | |
512 | + status = "okay"; | |
513 | + pinctrl-names = "default"; | |
514 | + pinctrl-0 = <&i2c1_pins>; | |
515 | + clock-frequency = <100000>; | |
516 | + | |
517 | + tps@24 { | |
518 | + compatible = "ti,tps65218"; | |
519 | + reg = <0x24>; | |
520 | + interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; | |
521 | + interrupt-controller; | |
522 | + #interrupt-cells = <2>; | |
523 | + | |
524 | + dcdc1: regulator-dcdc1 { | |
525 | + compatible = "ti,tps65218-dcdc1"; | |
526 | + /* VDD_CORE limits min of OPP50 and max of OPP100 */ | |
527 | + regulator-name = "vdd_core"; | |
528 | + regulator-min-microvolt = <912000>; | |
529 | + regulator-max-microvolt = <1144000>; | |
530 | + regulator-boot-on; | |
531 | + regulator-always-on; | |
532 | + }; | |
533 | + | |
534 | + dcdc2: regulator-dcdc2 { | |
535 | + compatible = "ti,tps65218-dcdc2"; | |
536 | + /* VDD_MPU limits min of OPP50 and max of OPP_NITRO */ | |
537 | + regulator-name = "vdd_mpu"; | |
538 | + regulator-min-microvolt = <912000>; | |
539 | + regulator-max-microvolt = <1378000>; | |
540 | + regulator-boot-on; | |
541 | + regulator-always-on; | |
542 | + }; | |
543 | + | |
544 | + dcdc3: regulator-dcdc3 { | |
545 | + compatible = "ti,tps65218-dcdc3"; | |
546 | + regulator-name = "vdds_ddr"; | |
547 | + regulator-min-microvolt = <1500000>; | |
548 | + regulator-max-microvolt = <1500000>; | |
549 | + regulator-boot-on; | |
550 | + regulator-always-on; | |
551 | + regulator-state-mem { | |
552 | + regulator-on-in-suspend; | |
553 | + }; | |
554 | + regulator-state-disk { | |
555 | + regulator-off-in-suspend; | |
556 | + }; | |
557 | + }; | |
558 | + | |
559 | + dcdc4: regulator-dcdc4 { | |
560 | + compatible = "ti,tps65218-dcdc4"; | |
561 | + regulator-name = "v3_3d"; | |
562 | + regulator-min-microvolt = <3300000>; | |
563 | + regulator-max-microvolt = <3300000>; | |
564 | + regulator-boot-on; | |
565 | + regulator-always-on; | |
566 | + }; | |
567 | + | |
568 | + dcdc5: regulator-dcdc5 { | |
569 | + compatible = "ti,tps65218-dcdc5"; | |
570 | + regulator-name = "v1_0bat"; | |
571 | + regulator-min-microvolt = <1000000>; | |
572 | + regulator-max-microvolt = <1000000>; | |
573 | + regulator-boot-on; | |
574 | + regulator-always-on; | |
575 | + regulator-state-mem { | |
576 | + regulator-on-in-suspend; | |
577 | + }; | |
578 | + }; | |
579 | + | |
580 | + dcdc6: regulator-dcdc6 { | |
581 | + compatible = "ti,tps65218-dcdc6"; | |
582 | + regulator-name = "v1_8bat"; | |
583 | + regulator-min-microvolt = <1800000>; | |
584 | + regulator-max-microvolt = <1800000>; | |
585 | + regulator-boot-on; | |
586 | + regulator-always-on; | |
587 | + regulator-state-mem { | |
588 | + regulator-on-in-suspend; | |
589 | + }; | |
590 | + }; | |
591 | + | |
592 | + ldo1: regulator-ldo1 { | |
593 | + compatible = "ti,tps65218-ldo1"; | |
594 | + regulator-name = "v1_8d"; | |
595 | + regulator-min-microvolt = <1800000>; | |
596 | + regulator-max-microvolt = <1800000>; | |
597 | + regulator-boot-on; | |
598 | + regulator-always-on; | |
599 | + }; | |
600 | + | |
601 | + power-button { | |
602 | + compatible = "ti,tps65218-pwrbutton"; | |
603 | + status = "okay"; | |
604 | + interrupts = <3 IRQ_TYPE_EDGE_BOTH>; | |
605 | + }; | |
606 | + }; | |
607 | + | |
608 | + s35390a: s35390a@30 { | |
609 | + compatible = "s35390a"; | |
610 | + reg = <0x30>; | |
611 | + }; | |
612 | + | |
613 | + at24@50 { | |
614 | + compatible = "at24,24c256"; | |
615 | + reg = <0x50>; | |
616 | + }; | |
617 | + | |
618 | + at24@57 { | |
619 | + compatible = "at24,24c256"; | |
620 | + reg = <0x57>; | |
621 | + }; | |
622 | + | |
623 | + /* For TI TLV320AIC3106 Audio Codec */ | |
624 | + /*tlv320aic3106: tlv320aic3106@1b { | |
625 | + #sound-dai-cells = <0>; | |
626 | + compatible = "ti,tlv320aic3106"; | |
627 | + reg = <0x1b>; | |
628 | + status = "okay"; | |
629 | + | |
630 | + AVDD-supply = <&dcdc4>; | |
631 | + IOVDD-supply = <&dcdc6>; | |
632 | + DRVDD-supply = <&dcdc4>; | |
633 | + DVDD-supply = <&ldo1>; | |
634 | + };*/ | |
635 | + | |
636 | + /* For Freescale SGTL5000 Audio Codec */ | |
637 | + sgtl5000: sgtl5000@0a { | |
638 | + #sound-dai-cells = <0>; | |
639 | + compatible = "fsl,sgtl5000"; | |
640 | + reg = <0x0a>; | |
641 | + clocks = <&audio_mstrclk>; | |
642 | + VDDA-supply = <&dcdc4>; | |
643 | + VDDIO-supply = <&dcdc6>; | |
644 | + VDDD-supply = <&ldo1>; | |
645 | + }; | |
646 | +}; | |
647 | + | |
648 | +&i2c2 { | |
649 | + status = "okay"; | |
650 | + pinctrl-names = "default"; | |
651 | + pinctrl-0 = <&i2c2_pins>; | |
652 | + clock-frequency = <100000>; | |
653 | + | |
654 | + /* CH7055A Parallel LCD to VGA D-SUB 15 way */ | |
655 | + eeprom@76 { | |
656 | + compatible = "at,24c256"; | |
657 | + reg = <0x76>; | |
658 | + }; | |
659 | +}; | |
660 | + | |
661 | + | |
662 | +&epwmss0 { | |
663 | + status = "okay"; | |
664 | + | |
665 | + ehrpwm0: ehrpwm@48300200 { | |
666 | + status = "okay"; | |
667 | + pinctrl-names = "default"; | |
668 | + pinctrl-0 = <&ehrpwm0b_pins>; | |
669 | + }; | |
670 | +}; | |
671 | + | |
672 | +&gpio0 { | |
673 | + status = "okay"; | |
674 | +}; | |
675 | + | |
676 | +&gpio1 { | |
677 | + status = "okay"; | |
678 | +}; | |
679 | + | |
680 | +&gpio2 { | |
681 | + status = "okay"; | |
682 | +}; | |
683 | + | |
684 | +&gpio3 { | |
685 | + status = "okay"; | |
686 | +}; | |
687 | + | |
688 | +&gpio4 { | |
689 | + status = "okay"; | |
690 | +}; | |
691 | + | |
692 | +&gpio5 { | |
693 | + status = "okay"; | |
694 | +}; | |
695 | + | |
696 | +&mmc1 { | |
697 | + status = "okay"; | |
698 | + pinctrl-names = "default"; | |
699 | + pinctrl-0 = <&mmc1_pins>; | |
700 | + | |
701 | + vmmc-supply = <&dcdc4>; | |
702 | + bus-width = <4>; | |
703 | + cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; | |
704 | +}; | |
705 | + | |
706 | +&mmc2 { | |
707 | + pinctrl-names = "default"; | |
708 | + pinctrl-0 = <&emmc_pins>; | |
709 | + bus-width = <8>; | |
710 | + vmmc-supply = <&vmmcwl_fixed>; | |
711 | + status = "okay"; | |
712 | + ti,non-removable; | |
713 | +}; | |
714 | + | |
715 | +/*If carrier board eMMC (or 2nd SD slot) is present and used, un-comment out the following nodes. SD card will be emulated /dev/mmcblk2 instead of /dev/mmcblk1*/ | |
716 | + | |
717 | +&mmc3 { | |
718 | + status = "okay"; | |
719 | + dmas = <&edma 30 | |
720 | + &edma 31>; | |
721 | + dma-names = "tx", "rx"; | |
722 | + vmmc-supply = <&vmmcwl_fixed>; | |
723 | + bus-width = <8>; | |
724 | + pinctrl-names = "default"; | |
725 | + pinctrl-0 = <&sdmmc_pins>; | |
726 | + keep-power-in-suspend; | |
727 | + ti,non-removable; | |
728 | +}; | |
729 | + | |
730 | +&edma { | |
731 | + ti,edma-xbar-event-map = /bits/ 16 <1 30 | |
732 | + 2 31>; | |
733 | +}; | |
734 | + | |
735 | +/* Four-Wire Resistive Touch */ | |
736 | +&tscadc { | |
737 | + status = "disabled"; | |
738 | + tsc { | |
739 | + ti,wires = <4>; | |
740 | + ti,x-plate-resistance = <200>; | |
741 | + ti,coordinate-readouts = <5>; | |
742 | + ti,wire-config = <0x00 0x11 0x22 0x33>; | |
743 | + ti,charge-delay = <0xB000>; | |
744 | + }; | |
745 | + | |
746 | + adc { | |
747 | + ti,adc-channels = <0 1 2 3>; | |
748 | + }; | |
749 | +}; | |
750 | + | |
751 | +&usb2_phy1 { | |
752 | + status = "okay"; | |
753 | +}; | |
754 | + | |
755 | +&usb1 { | |
756 | + dr_mode = "host"; | |
757 | + status = "okay"; | |
758 | + pinctrl-names = "default"; | |
759 | + pinctrl-0 = <&usb1_pins>; | |
760 | +}; | |
761 | + | |
762 | +&usb2_phy2 { | |
763 | + status = "okay"; | |
764 | +}; | |
765 | + | |
766 | +&usb2 { | |
767 | + dr_mode = "host"; | |
768 | + status = "okay"; | |
769 | + pinctrl-names = "default"; | |
770 | + pinctrl-0 = <&usb2_pins>; | |
771 | +}; | |
772 | + | |
773 | +&spi0 { | |
774 | + ti,spi-num-cs = <1>; | |
775 | + status = "okay"; | |
776 | + pinctrl-names = "default"; | |
777 | + pinctrl-0 = <&spi0_pins>; | |
778 | + dmas = <&edma 16 | |
779 | + &edma 17>; | |
780 | + dma-names = "tx0", "rx0"; | |
781 | + | |
782 | + flash: mx25u3235f@0 { | |
783 | + #address-cells = <1>; | |
784 | + #size-cells = <1>; | |
785 | + compatible = "jedec,spi-nor"; | |
786 | + spi-max-frequency = <24000000>; | |
787 | + reg = <0>; | |
788 | + | |
789 | + /* MTD partition table. | |
790 | + * The ROM checks the first 512KiB | |
791 | + * for a valid file to boot(XIP). | |
792 | + */ | |
793 | + partition@0 { | |
794 | + label = "U-Boot"; | |
795 | + reg = <0x0 0x100000>; | |
796 | + }; | |
797 | + | |
798 | + partition@100000 { | |
799 | + label = "U-Boot Environment"; | |
800 | + reg = <0x100000 0x080000>; | |
801 | + }; | |
802 | + | |
803 | + partition@180000 { | |
804 | + label = "Flattened Device Tree"; | |
805 | + reg = <0x180000 0x200000>; | |
806 | + }; | |
807 | + | |
808 | + }; | |
809 | +}; | |
810 | + | |
811 | +&spi2 { | |
812 | + ti,spi-num-cs = <2>; | |
813 | + status = "okay"; | |
814 | + pinctrl-names = "default"; | |
815 | + pinctrl-0 = <&spi2_pins>; | |
816 | + dmas = <&edma 18 | |
817 | + &edma 19 | |
818 | + &edma 20 | |
819 | + &edma 21>; | |
820 | + dma-names = "tx0", "rx0", "tx1", "rx1"; | |
821 | + | |
822 | + spidev1: spidev@0 { | |
823 | + #address-cells = <1>; | |
824 | + #size-cells = <0>; | |
825 | + compatible = "spidev"; | |
826 | + reg = <0>; | |
827 | + spi-max-frequency = <24000000>; | |
828 | + }; | |
829 | + | |
830 | + spidev2: spidev@1 { | |
831 | + #address-cells = <1>; | |
832 | + #size-cells = <0>; | |
833 | + compatible = "spidev"; | |
834 | + reg = <1>; | |
835 | + spi-max-frequency = <24000000>; | |
836 | + }; | |
837 | + }; | |
838 | + | |
839 | +&spi4 { | |
840 | + ti,spi-num-cs = <2>; | |
841 | + status = "okay"; | |
842 | + pinctrl-names = "default"; | |
843 | + pinctrl-0 = <&spi4_pins>; | |
844 | + dmas = <&edma 26 | |
845 | + &edma 27 | |
846 | + &edma 28 | |
847 | + &edma 29>; | |
848 | + dma-names = "tx0", "rx0", "tx1", "rx1"; | |
849 | + | |
850 | + spidev3: spidev@0 { | |
851 | + #address-cells = <1>; | |
852 | + #size-cells = <0>; | |
853 | + compatible = "spidev"; | |
854 | + reg = <0>; | |
855 | + spi-max-frequency = <24000000>; | |
856 | + }; | |
857 | + | |
858 | + spidev4: spidev@1 { | |
859 | + #address-cells = <1>; | |
860 | + #size-cells = <0>; | |
861 | + compatible = "spidev"; | |
862 | + reg = <1>; | |
863 | + spi-max-frequency = <24000000>; | |
864 | + }; | |
865 | + }; | |
866 | + | |
867 | +&uart0 { | |
868 | + pinctrl-names = "default"; | |
869 | + pinctrl-0 = <&uart0_pins>; | |
870 | + pinctrl-1 = <&uart0_pins_sleep>; | |
871 | + | |
872 | + status = "okay"; | |
873 | +}; | |
874 | + | |
875 | +&uart3 { | |
876 | + pinctrl-names = "default"; | |
877 | + pinctrl-0 = <&uart3_pins>; | |
878 | + pinctrl-1 = <&uart3_pins_sleep>; | |
879 | + | |
880 | + status = "okay"; | |
881 | +}; | |
882 | + | |
883 | +&uart2 { | |
884 | + pinctrl-names = "default"; | |
885 | + pinctrl-0 = <&uart2_pins>; | |
886 | + pinctrl-1 = <&uart2_pins_sleep>; | |
887 | + | |
888 | + status = "okay"; | |
889 | +}; | |
890 | + | |
891 | +&uart4 { | |
892 | + pinctrl-names = "default"; | |
893 | + pinctrl-0 = <&uart4_pins>; | |
894 | + pinctrl-1 = <&uart4_pins_sleep>; | |
895 | + | |
896 | + status = "okay"; | |
897 | +}; | |
898 | + | |
899 | +&dcan0 { | |
900 | + pinctrl-names = "default"; | |
901 | + pinctrl-0 = <&dcan0_default>; | |
902 | + status = "okay"; | |
903 | +}; | |
904 | + | |
905 | +&dcan1 { | |
906 | + pinctrl-names = "default"; | |
907 | + pinctrl-0 = <&dcan1_default>; | |
908 | + status = "okay"; | |
909 | +}; | |
910 | + | |
911 | +&mac { | |
912 | + pinctrl-names = "default", "sleep"; | |
913 | + pinctrl-0 = <&cpsw_default>; | |
914 | + pinctrl-1 = <&cpsw_sleep>; | |
915 | + dual_emac = <1>; | |
916 | + status = "okay"; | |
917 | +}; | |
918 | + | |
919 | +&davinci_mdio { | |
920 | + pinctrl-names = "default", "sleep"; | |
921 | + pinctrl-0 = <&davinci_mdio_default>; | |
922 | + pinctrl-1 = <&davinci_mdio_sleep>; | |
923 | + status = "okay"; | |
924 | +}; | |
925 | + | |
926 | +&cpsw_emac0 { | |
927 | + phy_id = <&davinci_mdio>, <6>; | |
928 | + phy-mode = "rgmii"; | |
929 | + dual_emac_res_vlan = <1>; | |
930 | +}; | |
931 | + | |
932 | +&cpsw_emac1 { | |
933 | + phy_id = <&davinci_mdio>, <7>; | |
934 | + phy-mode = "rgmii"; | |
935 | + dual_emac_res_vlan = <2>; | |
936 | +}; | |
937 | + | |
938 | +&elm { | |
939 | + status = "okay"; | |
940 | +}; | |
941 | + | |
942 | +&mcasp1 { | |
943 | + #sound-dai-cells = <0>; | |
944 | + pinctrl-names = "default", "sleep"; | |
945 | + pinctrl-0 = <&mcasp1_pins>; | |
946 | + pinctrl-1 = <&mcasp1_sleep_pins>; | |
947 | + | |
948 | + status = "okay"; | |
949 | + | |
950 | + op-mode = <0>; /* MCASP_IIS_MODE */ | |
951 | + tdm-slots = <2>; | |
952 | + /* 4 serializers */ | |
953 | + serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */ | |
954 | + 1 2 0 0 | |
955 | + >; | |
956 | + | |
957 | + tx-num-evt = <1>; | |
958 | + rx-num-evt = <1>; | |
959 | +}; | |
960 | + | |
961 | +&dss { | |
962 | + status = "okay"; | |
963 | + | |
964 | + pinctrl-names = "default"; | |
965 | + pinctrl-0 = <&dss_pins>; | |
966 | + | |
967 | + port { | |
968 | + dpi_out: endpoint@0 { | |
969 | + remote-endpoint = <&lcd_in>; | |
970 | + data-lines = <24>; | |
971 | + }; | |
972 | + }; | |
973 | +}; | |
974 | + | |
975 | +&rtc { | |
976 | + status = "disabled"; /* Use Seiko S35390A on Module instead */ | |
977 | + ext-clk-src; | |
978 | +}; | |
979 | + | |
980 | +&wdt { | |
981 | + status = "okay"; | |
982 | +}; | |
983 | + | |
984 | +&cpu { | |
985 | + cpu0-supply = <&dcdc2>; | |
986 | +}; |
arch/arm/include/asm/arch-am33xx/hardware_am43xx.h
... | ... | @@ -88,5 +88,11 @@ |
88 | 88 | /* EDMA3 Base Address */ |
89 | 89 | #define EDMA3_BASE 0x49000000 |
90 | 90 | |
91 | +/* LCD Controller */ | |
92 | +#define LCD_CNTL_BASE 0x4832A000 | |
93 | + | |
94 | +/* PWMSS */ | |
95 | +#define PWMSS0_BASE 0x48300000 | |
96 | +#define AM33XX_EHRPWM0_BASE 0x48300200 | |
91 | 97 | #endif /* __AM43XX_HARDWARE_AM43XX_H */ |
arch/arm/include/asm/arch-am33xx/mmc_host_def.h
arch/arm/mach-omap2/am33xx/Kconfig
... | ... | @@ -121,7 +121,16 @@ |
121 | 121 | GP EVM is a standalone test, development, and |
122 | 122 | evaluation module system that enables developers |
123 | 123 | to write software and develop hardware around |
124 | - an AM43xx processor subsystem. | |
124 | + | |
125 | +config TARGET_SMARCT437X_EVM | |
126 | + bool "Support smarc-t437x" | |
127 | + select TI_I2C_BOARD_DETECT | |
128 | + help | |
129 | + This option specifies support for the SMARC-T437X EVM | |
130 | + development platforms.The SMARC-T437X EVM is a standalone | |
131 | + test, development, and evaluation module system that | |
132 | + enables developers to write software and develop | |
133 | + hardware around an SMARC-T437X processor subsystem. | |
125 | 134 | endif |
126 | 135 | |
127 | 136 | if AM43XX || AM33XX |
arch/arm/mach-omap2/am33xx/board.c
arch/arm/mach-omap2/am33xx/clock_am43xx.c
... | ... | @@ -60,6 +60,10 @@ |
60 | 60 | CD_CLKCTRL_CLKTRCTRL_SW_WKUP << |
61 | 61 | CD_CLKCTRL_CLKTRCTRL_SHIFT); |
62 | 62 | |
63 | + clrsetbits_le32(&cmper->l4lsclkstctrl, CD_CLKCTRL_CLKTRCTRL_MASK, | |
64 | + CD_CLKCTRL_CLKTRCTRL_SW_WKUP << | |
65 | + CD_CLKCTRL_CLKTRCTRL_SHIFT); | |
66 | + | |
63 | 67 | /* Enable UART0 */ |
64 | 68 | clrsetbits_le32(&cmwkup->wkup_uart0ctrl, |
65 | 69 | MODULE_CLKCTRL_MODULEMODE_MASK, |
... | ... | @@ -72,6 +76,45 @@ |
72 | 76 | idlest = (clkctrl & MODULE_CLKCTRL_IDLEST_MASK) >> |
73 | 77 | MODULE_CLKCTRL_IDLEST_SHIFT; |
74 | 78 | } |
79 | + | |
80 | + /* Enable UART2 */ | |
81 | + clrsetbits_le32(&cmper->uart2clkctrl, | |
82 | + MODULE_CLKCTRL_MODULEMODE_MASK, | |
83 | + MODULE_CLKCTRL_MODULEMODE_SW_EXPLICIT_EN << | |
84 | + MODULE_CLKCTRL_MODULEMODE_SHIFT); | |
85 | + | |
86 | + while ((idlest == MODULE_CLKCTRL_IDLEST_DISABLED) || | |
87 | + (idlest == MODULE_CLKCTRL_IDLEST_TRANSITIONING)) { | |
88 | + clkctrl = readl(&cmper->uart2clkctrl); | |
89 | + idlest = (clkctrl & MODULE_CLKCTRL_IDLEST_MASK) >> | |
90 | + MODULE_CLKCTRL_IDLEST_SHIFT; | |
91 | + } | |
92 | + | |
93 | + /* Enable UART3 */ | |
94 | + clrsetbits_le32(&cmper->uart3clkctrl, | |
95 | + MODULE_CLKCTRL_MODULEMODE_MASK, | |
96 | + MODULE_CLKCTRL_MODULEMODE_SW_EXPLICIT_EN << | |
97 | + MODULE_CLKCTRL_MODULEMODE_SHIFT); | |
98 | + | |
99 | + while ((idlest == MODULE_CLKCTRL_IDLEST_DISABLED) || | |
100 | + (idlest == MODULE_CLKCTRL_IDLEST_TRANSITIONING)) { | |
101 | + clkctrl = readl(&cmper->uart3clkctrl); | |
102 | + idlest = (clkctrl & MODULE_CLKCTRL_IDLEST_MASK) >> | |
103 | + MODULE_CLKCTRL_IDLEST_SHIFT; | |
104 | + } | |
105 | + | |
106 | + /* Enable UART4 */ | |
107 | + clrsetbits_le32(&cmper->uart4clkctrl, | |
108 | + MODULE_CLKCTRL_MODULEMODE_MASK, | |
109 | + MODULE_CLKCTRL_MODULEMODE_SW_EXPLICIT_EN << | |
110 | + MODULE_CLKCTRL_MODULEMODE_SHIFT); | |
111 | + | |
112 | + while ((idlest == MODULE_CLKCTRL_IDLEST_DISABLED) || | |
113 | + (idlest == MODULE_CLKCTRL_IDLEST_TRANSITIONING)) { | |
114 | + clkctrl = readl(&cmper->uart4clkctrl); | |
115 | + idlest = (clkctrl & MODULE_CLKCTRL_IDLEST_MASK) >> | |
116 | + MODULE_CLKCTRL_IDLEST_SHIFT; | |
117 | + } | |
75 | 118 | } |
76 | 119 | |
77 | 120 | void enable_basic_clocks(void) |
... | ... | @@ -99,6 +142,7 @@ |
99 | 142 | &cmper->elmclkctrl, |
100 | 143 | &cmper->mmc0clkctrl, |
101 | 144 | &cmper->mmc1clkctrl, |
145 | + &cmper->mmc2clkctrl, | |
102 | 146 | &cmwkup->wkup_i2c0ctrl, |
103 | 147 | &cmper->gpio1clkctrl, |
104 | 148 | &cmper->gpio2clkctrl, |
105 | 149 | |
... | ... | @@ -106,11 +150,11 @@ |
106 | 150 | &cmper->gpio4clkctrl, |
107 | 151 | &cmper->gpio5clkctrl, |
108 | 152 | &cmper->i2c1clkctrl, |
153 | + &cmper->i2c2clkctrl, | |
109 | 154 | &cmper->cpgmac0clkctrl, |
110 | 155 | &cmper->emiffwclkctrl, |
111 | 156 | &cmper->emifclkctrl, |
112 | 157 | &cmper->otfaemifclkctrl, |
113 | - &cmper->qspiclkctrl, | |
114 | 158 | &cmper->spi0clkctrl, |
115 | 159 | 0 |
116 | 160 | }; |
... | ... | @@ -122,6 +166,10 @@ |
122 | 166 | |
123 | 167 | /* For OPP100 the mac clock should be /5. */ |
124 | 168 | writel(0x4, &cmdpll->clkselmacclk); |
169 | + | |
170 | + /* enable i2c1 clock */ | |
171 | + writel(0x2, &cmper->i2c1clkctrl); | |
172 | + while (readl(&cmper->i2c1clkctrl) != 0x2) ; | |
125 | 173 | } |
126 | 174 | |
127 | 175 | void rtc_only_enable_basic_clocks(void) |
arch/arm/mach-omap2/config.mk
board/embedian/common/Kconfig
... | ... | @@ -7,7 +7,7 @@ |
7 | 7 | config EEPROM_BUS_ADDRESS |
8 | 8 | int "Board EEPROM's I2C bus address" |
9 | 9 | range 0 8 |
10 | - default 0 | |
10 | + default 1 | |
11 | 11 | |
12 | 12 | config EEPROM_CHIP_ADDRESS |
13 | 13 | hex "Board EEPROM's I2C chip address" |
... | ... | @@ -48,6 +48,16 @@ |
48 | 48 | |
49 | 49 | config SPL_SERIAL_SUPPORT |
50 | 50 | default y |
51 | + | |
52 | +config CONFIG_SPL_SPI_BUS | |
53 | + int "Board NOR Flash SPI bus address" | |
54 | + range 0 8 | |
55 | + default 0 | |
56 | + | |
57 | +config CONFIG_SPL_SPI_CS | |
58 | + int "Board NOR Flash SPI bus chip select" | |
59 | + range 0 4 | |
60 | + default 0 | |
51 | 61 | |
52 | 62 | endif |
board/embedian/smarct437x/Kconfig
board/embedian/smarct437x/MAINTAINERS
1 | +SMARCT437X SMARC BOARD | |
2 | +M: Eric Lee <eric.lee@embedian.com> | |
3 | +S: Maintained | |
4 | +F: board/embedian/smarct437x/ | |
5 | +F: include/configs/smarct437x_evm.h | |
6 | +F: configs/smarct437x_evm_uart0_defconfig | |
7 | +F: configs/smarct437x_evm_uart1_defconfig | |
8 | +F: configs/smarct437x_evm_uart2_defconfig | |
9 | +F: configs/smarct437x_evm_uart3_defconfig | |
10 | +F: configs/smarct437x_evm_spi_usrt0_defconfig | |
11 | +F: configs/smarct437x_evm_spi_uart1_defconfig | |
12 | +F: configs/smarct437x_evm_spi_uart2_defconfig | |
13 | +F: configs/smarct437x_evm_spi_uart3_defconfig |
board/embedian/smarct437x/Makefile
board/embedian/smarct437x/board.c
Changes suppressed. Click to show
1 | +/* | |
2 | + * board.c | |
3 | + * | |
4 | + * Board functions for TI AM43XX based boards | |
5 | + * | |
6 | + * Copyright (C) 2013, Texas Instruments, Incorporated - http://www.ti.com/ | |
7 | + * | |
8 | + * SPDX-License-Identifier: GPL-2.0+ | |
9 | + */ | |
10 | + | |
11 | +#include <common.h> | |
12 | +#include <i2c.h> | |
13 | +#include <linux/errno.h> | |
14 | +#include <spl.h> | |
15 | +#include <usb.h> | |
16 | +#include <asm/omap_sec_common.h> | |
17 | +#include <asm/arch/clock.h> | |
18 | +#include <asm/arch/sys_proto.h> | |
19 | +#include <asm/arch/mux.h> | |
20 | +#include <asm/arch/ddr_defs.h> | |
21 | +#include <asm/arch/gpio.h> | |
22 | +#include <asm/gpio.h> | |
23 | +#include <asm/emif.h> | |
24 | +#include "../common/board_detect.h" | |
25 | +#include "board.h" | |
26 | +#include <power/pmic.h> | |
27 | +#include <power/tps65218.h> | |
28 | +#include <power/tps62362.h> | |
29 | +#include <miiphy.h> | |
30 | +#include <cpsw.h> | |
31 | +#include <linux/usb/gadget.h> | |
32 | +#include <dwc3-uboot.h> | |
33 | +#include <dwc3-omap-uboot.h> | |
34 | +#include <ti-usb-phy-uboot.h> | |
35 | + | |
36 | +DECLARE_GLOBAL_DATA_PTR; | |
37 | + | |
38 | +static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE; | |
39 | + | |
40 | +/* | |
41 | + * Read header information from EEPROM into global structure. | |
42 | + */ | |
43 | +#ifdef CONFIG_TI_I2C_BOARD_DETECT | |
44 | +void do_board_detect(void) | |
45 | +{ | |
46 | + i2c_set_bus_num(1); | |
47 | + if (ti_i2c_eeprom_am_get(-1, CONFIG_SYS_I2C_EEPROM_ADDR)) | |
48 | + printf("ti_i2c_eeprom_init failed\n"); | |
49 | +} | |
50 | +#endif | |
51 | + | |
52 | +#ifndef CONFIG_SKIP_LOWLEVEL_INIT | |
53 | + | |
54 | +const struct dpll_params dpll_mpu[NUM_CRYSTAL_FREQ][NUM_OPPS] = { | |
55 | + { /* 19.2 MHz */ | |
56 | + {125, 3, 2, -1, -1, -1, -1}, /* OPP 50 */ | |
57 | + {-1, -1, -1, -1, -1, -1, -1}, /* OPP RESERVED */ | |
58 | + {125, 3, 1, -1, -1, -1, -1}, /* OPP 100 */ | |
59 | + {150, 3, 1, -1, -1, -1, -1}, /* OPP 120 */ | |
60 | + {125, 2, 1, -1, -1, -1, -1}, /* OPP TB */ | |
61 | + {625, 11, 1, -1, -1, -1, -1} /* OPP NT */ | |
62 | + }, | |
63 | + { /* 24 MHz */ | |
64 | + {300, 23, 1, -1, -1, -1, -1}, /* OPP 50 */ | |
65 | + {-1, -1, -1, -1, -1, -1, -1}, /* OPP RESERVED */ | |
66 | + {600, 23, 1, -1, -1, -1, -1}, /* OPP 100 */ | |
67 | + {720, 23, 1, -1, -1, -1, -1}, /* OPP 120 */ | |
68 | + {800, 23, 1, -1, -1, -1, -1}, /* OPP TB */ | |
69 | + {1000, 23, 1, -1, -1, -1, -1} /* OPP NT */ | |
70 | + }, | |
71 | + { /* 25 MHz */ | |
72 | + {300, 24, 1, -1, -1, -1, -1}, /* OPP 50 */ | |
73 | + {-1, -1, -1, -1, -1, -1, -1}, /* OPP RESERVED */ | |
74 | + {600, 24, 1, -1, -1, -1, -1}, /* OPP 100 */ | |
75 | + {720, 24, 1, -1, -1, -1, -1}, /* OPP 120 */ | |
76 | + {800, 24, 1, -1, -1, -1, -1}, /* OPP TB */ | |
77 | + {1000, 24, 1, -1, -1, -1, -1} /* OPP NT */ | |
78 | + }, | |
79 | + { /* 26 MHz */ | |
80 | + {300, 25, 1, -1, -1, -1, -1}, /* OPP 50 */ | |
81 | + {-1, -1, -1, -1, -1, -1, -1}, /* OPP RESERVED */ | |
82 | + {600, 25, 1, -1, -1, -1, -1}, /* OPP 100 */ | |
83 | + {720, 25, 1, -1, -1, -1, -1}, /* OPP 120 */ | |
84 | + {800, 25, 1, -1, -1, -1, -1}, /* OPP TB */ | |
85 | + {1000, 25, 1, -1, -1, -1, -1} /* OPP NT */ | |
86 | + }, | |
87 | +}; | |
88 | + | |
89 | +const struct dpll_params dpll_core[NUM_CRYSTAL_FREQ] = { | |
90 | + {625, 11, -1, -1, 10, 8, 4}, /* 19.2 MHz */ | |
91 | + {1000, 23, -1, -1, 10, 8, 4}, /* 24 MHz */ | |
92 | + {1000, 24, -1, -1, 10, 8, 4}, /* 25 MHz */ | |
93 | + {1000, 25, -1, -1, 10, 8, 4} /* 26 MHz */ | |
94 | +}; | |
95 | + | |
96 | +const struct dpll_params dpll_per[NUM_CRYSTAL_FREQ] = { | |
97 | + {400, 7, 5, -1, -1, -1, -1}, /* 19.2 MHz */ | |
98 | + {400, 9, 5, -1, -1, -1, -1}, /* 24 MHz */ | |
99 | + {384, 9, 5, -1, -1, -1, -1}, /* 25 MHz */ | |
100 | + {480, 12, 5, -1, -1, -1, -1} /* 26 MHz */ | |
101 | +}; | |
102 | + | |
103 | +const struct dpll_params epos_evm_dpll_ddr[NUM_CRYSTAL_FREQ] = { | |
104 | + {665, 47, 1, -1, 4, -1, -1}, /*19.2*/ | |
105 | + {133, 11, 1, -1, 4, -1, -1}, /* 24 MHz */ | |
106 | + {266, 24, 1, -1, 4, -1, -1}, /* 25 MHz */ | |
107 | + {133, 12, 1, -1, 4, -1, -1} /* 26 MHz */ | |
108 | +}; | |
109 | + | |
110 | +const struct dpll_params gp_evm_dpll_ddr = { | |
111 | + 50, 2, 1, -1, 2, -1, -1}; | |
112 | + | |
113 | +static const struct dpll_params idk_dpll_ddr = { | |
114 | + 400, 23, 1, -1, 2, -1, -1 | |
115 | +}; | |
116 | + | |
117 | +static const u32 ext_phy_ctrl_const_base_lpddr2[] = { | |
118 | + 0x00500050, | |
119 | + 0x00350035, | |
120 | + 0x00350035, | |
121 | + 0x00350035, | |
122 | + 0x00350035, | |
123 | + 0x00350035, | |
124 | + 0x00000000, | |
125 | + 0x00000000, | |
126 | + 0x00000000, | |
127 | + 0x00000000, | |
128 | + 0x00000000, | |
129 | + 0x00000000, | |
130 | + 0x00000000, | |
131 | + 0x00000000, | |
132 | + 0x00000000, | |
133 | + 0x00000000, | |
134 | + 0x00000000, | |
135 | + 0x00000000, | |
136 | + 0x40001000, | |
137 | + 0x08102040 | |
138 | +}; | |
139 | + | |
140 | +const struct ctrl_ioregs ioregs_lpddr2 = { | |
141 | + .cm0ioctl = LPDDR2_ADDRCTRL_IOCTRL_VALUE, | |
142 | + .cm1ioctl = LPDDR2_ADDRCTRL_WD0_IOCTRL_VALUE, | |
143 | + .cm2ioctl = LPDDR2_ADDRCTRL_WD1_IOCTRL_VALUE, | |
144 | + .dt0ioctl = LPDDR2_DATA0_IOCTRL_VALUE, | |
145 | + .dt1ioctl = LPDDR2_DATA0_IOCTRL_VALUE, | |
146 | + .dt2ioctrl = LPDDR2_DATA0_IOCTRL_VALUE, | |
147 | + .dt3ioctrl = LPDDR2_DATA0_IOCTRL_VALUE, | |
148 | + .emif_sdram_config_ext = 0x1, | |
149 | +}; | |
150 | + | |
151 | +const struct emif_regs emif_regs_lpddr2 = { | |
152 | + .sdram_config = 0x808012BA, | |
153 | + .ref_ctrl = 0x0000040D, | |
154 | + .sdram_tim1 = 0xEA86B411, | |
155 | + .sdram_tim2 = 0x103A094A, | |
156 | + .sdram_tim3 = 0x0F6BA37F, | |
157 | + .read_idle_ctrl = 0x00050000, | |
158 | + .zq_config = 0x50074BE4, | |
159 | + .temp_alert_config = 0x0, | |
160 | + .emif_rd_wr_lvl_rmp_win = 0x0, | |
161 | + .emif_rd_wr_lvl_rmp_ctl = 0x0, | |
162 | + .emif_rd_wr_lvl_ctl = 0x0, | |
163 | + .emif_ddr_phy_ctlr_1 = 0x0E284006, | |
164 | + .emif_rd_wr_exec_thresh = 0x80000405, | |
165 | + .emif_ddr_ext_phy_ctrl_1 = 0x04010040, | |
166 | + .emif_ddr_ext_phy_ctrl_2 = 0x00500050, | |
167 | + .emif_ddr_ext_phy_ctrl_3 = 0x00500050, | |
168 | + .emif_ddr_ext_phy_ctrl_4 = 0x00500050, | |
169 | + .emif_ddr_ext_phy_ctrl_5 = 0x00500050, | |
170 | + .emif_prio_class_serv_map = 0x80000001, | |
171 | + .emif_connect_id_serv_1_map = 0x80000094, | |
172 | + .emif_connect_id_serv_2_map = 0x00000000, | |
173 | + .emif_cos_config = 0x000FFFFF | |
174 | +}; | |
175 | + | |
176 | +const struct ctrl_ioregs ioregs_ddr3 = { | |
177 | + .cm0ioctl = DDR3_ADDRCTRL_IOCTRL_VALUE, | |
178 | + .cm1ioctl = DDR3_ADDRCTRL_WD0_IOCTRL_VALUE, | |
179 | + .cm2ioctl = DDR3_ADDRCTRL_WD1_IOCTRL_VALUE, | |
180 | + .dt0ioctl = DDR3_DATA0_IOCTRL_VALUE, | |
181 | + .dt1ioctl = DDR3_DATA0_IOCTRL_VALUE, | |
182 | + .dt2ioctrl = DDR3_DATA0_IOCTRL_VALUE, | |
183 | + .dt3ioctrl = DDR3_DATA0_IOCTRL_VALUE, | |
184 | + .emif_sdram_config_ext = 0xc163, | |
185 | +}; | |
186 | + | |
187 | +const struct emif_regs ddr3_emif_regs_400Mhz = { | |
188 | + .sdram_config = 0x638413B2, | |
189 | + .ref_ctrl = 0x00000C30, | |
190 | + .sdram_tim1 = 0xEAAAD4DB, | |
191 | + .sdram_tim2 = 0x266B7FDA, | |
192 | + .sdram_tim3 = 0x107F8678, | |
193 | + .read_idle_ctrl = 0x00050000, | |
194 | + .zq_config = 0x50074BE4, | |
195 | + .temp_alert_config = 0x0, | |
196 | + .emif_ddr_phy_ctlr_1 = 0x0E004008, | |
197 | + .emif_ddr_ext_phy_ctrl_1 = 0x08020080, | |
198 | + .emif_ddr_ext_phy_ctrl_2 = 0x00400040, | |
199 | + .emif_ddr_ext_phy_ctrl_3 = 0x00400040, | |
200 | + .emif_ddr_ext_phy_ctrl_4 = 0x00400040, | |
201 | + .emif_ddr_ext_phy_ctrl_5 = 0x00400040, | |
202 | + .emif_rd_wr_lvl_rmp_win = 0x0, | |
203 | + .emif_rd_wr_lvl_rmp_ctl = 0x0, | |
204 | + .emif_rd_wr_lvl_ctl = 0x0, | |
205 | + .emif_rd_wr_exec_thresh = 0x80000405, | |
206 | + .emif_prio_class_serv_map = 0x80000001, | |
207 | + .emif_connect_id_serv_1_map = 0x80000094, | |
208 | + .emif_connect_id_serv_2_map = 0x00000000, | |
209 | + .emif_cos_config = 0x000FFFFF | |
210 | +}; | |
211 | + | |
212 | +/* EMIF DDR3 Configurations are different for beta AM43X GP EVMs */ | |
213 | +const struct emif_regs ddr3_emif_regs_400Mhz_beta = { | |
214 | + .sdram_config = 0x638413B2, | |
215 | + .ref_ctrl = 0x00000C30, | |
216 | + .sdram_tim1 = 0xEAAAD4DB, | |
217 | + .sdram_tim2 = 0x266B7FDA, | |
218 | + .sdram_tim3 = 0x107F8678, | |
219 | + .read_idle_ctrl = 0x00050000, | |
220 | + .zq_config = 0x50074BE4, | |
221 | + .temp_alert_config = 0x0, | |
222 | + .emif_ddr_phy_ctlr_1 = 0x0E004008, | |
223 | + .emif_ddr_ext_phy_ctrl_1 = 0x08020080, | |
224 | + .emif_ddr_ext_phy_ctrl_2 = 0x00000065, | |
225 | + .emif_ddr_ext_phy_ctrl_3 = 0x00000091, | |
226 | + .emif_ddr_ext_phy_ctrl_4 = 0x000000B5, | |
227 | + .emif_ddr_ext_phy_ctrl_5 = 0x000000E5, | |
228 | + .emif_rd_wr_exec_thresh = 0x80000405, | |
229 | + .emif_prio_class_serv_map = 0x80000001, | |
230 | + .emif_connect_id_serv_1_map = 0x80000094, | |
231 | + .emif_connect_id_serv_2_map = 0x00000000, | |
232 | + .emif_cos_config = 0x000FFFFF | |
233 | +}; | |
234 | + | |
235 | +/* EMIF DDR3 Configurations are different for production AM43X GP EVMs */ | |
236 | +const struct emif_regs ddr3_emif_regs_400Mhz_production = { | |
237 | + .sdram_config = 0x638413B2, | |
238 | + .ref_ctrl = 0x00000C30, | |
239 | + .sdram_tim1 = 0xEAAAD4DB, | |
240 | + .sdram_tim2 = 0x266B7FDA, | |
241 | + .sdram_tim3 = 0x107F8678, | |
242 | + .read_idle_ctrl = 0x00050000, | |
243 | + .zq_config = 0x50074BE4, | |
244 | + .temp_alert_config = 0x0, | |
245 | + .emif_ddr_phy_ctlr_1 = 0x0E004008, | |
246 | + .emif_ddr_ext_phy_ctrl_1 = 0x08020080, | |
247 | + .emif_ddr_ext_phy_ctrl_2 = 0x00000066, | |
248 | + .emif_ddr_ext_phy_ctrl_3 = 0x00000091, | |
249 | + .emif_ddr_ext_phy_ctrl_4 = 0x000000B9, | |
250 | + .emif_ddr_ext_phy_ctrl_5 = 0x000000E6, | |
251 | + .emif_rd_wr_exec_thresh = 0x80000405, | |
252 | + .emif_prio_class_serv_map = 0x80000001, | |
253 | + .emif_connect_id_serv_1_map = 0x80000094, | |
254 | + .emif_connect_id_serv_2_map = 0x00000000, | |
255 | + .emif_cos_config = 0x000FFFFF | |
256 | +}; | |
257 | + | |
258 | +static const struct emif_regs ddr3_sk_emif_regs_400Mhz = { | |
259 | + .sdram_config = 0x638413b2, | |
260 | + .sdram_config2 = 0x00000000, | |
261 | + .ref_ctrl = 0x00000c30, | |
262 | + .sdram_tim1 = 0xeaaad4db, | |
263 | + .sdram_tim2 = 0x266b7fda, | |
264 | + .sdram_tim3 = 0x107f8678, | |
265 | + .read_idle_ctrl = 0x00050000, | |
266 | + .zq_config = 0x50074be4, | |
267 | + .temp_alert_config = 0x0, | |
268 | + .emif_ddr_phy_ctlr_1 = 0x0e084008, | |
269 | + .emif_ddr_ext_phy_ctrl_1 = 0x08020080, | |
270 | + .emif_ddr_ext_phy_ctrl_2 = 0x89, | |
271 | + .emif_ddr_ext_phy_ctrl_3 = 0x90, | |
272 | + .emif_ddr_ext_phy_ctrl_4 = 0x8e, | |
273 | + .emif_ddr_ext_phy_ctrl_5 = 0x8d, | |
274 | + .emif_rd_wr_lvl_rmp_win = 0x0, | |
275 | + .emif_rd_wr_lvl_rmp_ctl = 0x00000000, | |
276 | + .emif_rd_wr_lvl_ctl = 0x00000000, | |
277 | + .emif_rd_wr_exec_thresh = 0x80000000, | |
278 | + .emif_prio_class_serv_map = 0x80000001, | |
279 | + .emif_connect_id_serv_1_map = 0x80000094, | |
280 | + .emif_connect_id_serv_2_map = 0x00000000, | |
281 | + .emif_cos_config = 0x000FFFFF | |
282 | +}; | |
283 | + | |
284 | +static const struct emif_regs ddr3_idk_emif_regs_400Mhz = { | |
285 | + .sdram_config = 0x61a11b32, | |
286 | + .sdram_config2 = 0x00000000, | |
287 | + .ref_ctrl = 0x00000c30, | |
288 | + .sdram_tim1 = 0xeaaad4db, | |
289 | + .sdram_tim2 = 0x266b7fda, | |
290 | + .sdram_tim3 = 0x107f8678, | |
291 | + .read_idle_ctrl = 0x00050000, | |
292 | + .zq_config = 0x50074be4, | |
293 | + .temp_alert_config = 0x00000000, | |
294 | + .emif_ddr_phy_ctlr_1 = 0x00008009, | |
295 | + .emif_ddr_ext_phy_ctrl_1 = 0x08020080, | |
296 | + .emif_ddr_ext_phy_ctrl_2 = 0x00000040, | |
297 | + .emif_ddr_ext_phy_ctrl_3 = 0x0000003e, | |
298 | + .emif_ddr_ext_phy_ctrl_4 = 0x00000051, | |
299 | + .emif_ddr_ext_phy_ctrl_5 = 0x00000051, | |
300 | + .emif_rd_wr_lvl_rmp_win = 0x00000000, | |
301 | + .emif_rd_wr_lvl_rmp_ctl = 0x00000000, | |
302 | + .emif_rd_wr_lvl_ctl = 0x00000000, | |
303 | + .emif_rd_wr_exec_thresh = 0x00000405, | |
304 | + .emif_prio_class_serv_map = 0x00000000, | |
305 | + .emif_connect_id_serv_1_map = 0x00000000, | |
306 | + .emif_connect_id_serv_2_map = 0x00000000, | |
307 | + .emif_cos_config = 0x00ffffff | |
308 | +}; | |
309 | + | |
310 | +static const struct emif_regs ddr3_smarc80_emif_regs_400Mhz = { | |
311 | + .sdram_config = 0x63841372, | |
312 | + .sdram_config2 = 0x00000000, | |
313 | + .ref_ctrl = 0x00000c30, | |
314 | + .sdram_tim1 = 0xeaaad4db, | |
315 | + .sdram_tim2 = 0x266b7fda, | |
316 | + .sdram_tim3 = 0x107f8678, | |
317 | + .read_idle_ctrl = 0x00050000, | |
318 | + .zq_config = 0x50074be4, | |
319 | + .temp_alert_config = 0x0, | |
320 | + .emif_ddr_phy_ctlr_1 = 0x0e084008, | |
321 | + .emif_ddr_ext_phy_ctrl_1 = 0x08020080, | |
322 | + .emif_ddr_ext_phy_ctrl_2 = 0x89, | |
323 | + .emif_ddr_ext_phy_ctrl_3 = 0x90, | |
324 | + .emif_ddr_ext_phy_ctrl_4 = 0x8e, | |
325 | + .emif_ddr_ext_phy_ctrl_5 = 0x8d, | |
326 | + .emif_rd_wr_lvl_rmp_win = 0x0, | |
327 | + .emif_rd_wr_lvl_rmp_ctl = 0x00000000, | |
328 | + .emif_rd_wr_lvl_ctl = 0x00000000, | |
329 | + .emif_rd_wr_exec_thresh = 0x80000000, | |
330 | + .emif_prio_class_serv_map = 0x80000001, | |
331 | + .emif_connect_id_serv_1_map = 0x80000094, | |
332 | + .emif_connect_id_serv_2_map = 0x00000000, | |
333 | + .emif_cos_config = 0x000FFFFF | |
334 | +}; | |
335 | + | |
336 | +static const struct emif_regs ddr3_smarc1g_emif_regs_400Mhz = { | |
337 | + .sdram_config = 0x638413b2, | |
338 | + .sdram_config2 = 0x00000000, | |
339 | + .ref_ctrl = 0x00000c30, | |
340 | + .sdram_tim1 = 0xeaaad4db, | |
341 | + .sdram_tim2 = 0x266b7fda, | |
342 | + .sdram_tim3 = 0x107f8678, | |
343 | + .read_idle_ctrl = 0x00050000, | |
344 | + .zq_config = 0x50074be4, | |
345 | + .temp_alert_config = 0x0, | |
346 | + .emif_ddr_phy_ctlr_1 = 0x0e084008, | |
347 | + .emif_ddr_ext_phy_ctrl_1 = 0x08020080, | |
348 | + .emif_ddr_ext_phy_ctrl_2 = 0x89, | |
349 | + .emif_ddr_ext_phy_ctrl_3 = 0x90, | |
350 | + .emif_ddr_ext_phy_ctrl_4 = 0x8e, | |
351 | + .emif_ddr_ext_phy_ctrl_5 = 0x8d, | |
352 | + .emif_rd_wr_lvl_rmp_win = 0x0, | |
353 | + .emif_rd_wr_lvl_rmp_ctl = 0x00000000, | |
354 | + .emif_rd_wr_lvl_ctl = 0x00000000, | |
355 | + .emif_rd_wr_exec_thresh = 0x80000000, | |
356 | + .emif_prio_class_serv_map = 0x80000001, | |
357 | + .emif_connect_id_serv_1_map = 0x80000094, | |
358 | + .emif_connect_id_serv_2_map = 0x00000000, | |
359 | + .emif_cos_config = 0x000FFFFF | |
360 | +}; | |
361 | + | |
362 | +void emif_get_ext_phy_ctrl_const_regs(const u32 **regs, u32 *size) | |
363 | +{ | |
364 | + if (board_is_eposevm()) { | |
365 | + *regs = ext_phy_ctrl_const_base_lpddr2; | |
366 | + *size = ARRAY_SIZE(ext_phy_ctrl_const_base_lpddr2); | |
367 | + } | |
368 | + | |
369 | + return; | |
370 | +} | |
371 | + | |
372 | +const struct dpll_params *get_dpll_ddr_params(void) | |
373 | +{ | |
374 | + int ind = get_sys_clk_index(); | |
375 | + | |
376 | + if (board_is_eposevm()) | |
377 | + return &epos_evm_dpll_ddr[ind]; | |
378 | + else if (board_is_evm() || board_is_sk() || board_is_smarc_t437x_800() || board_is_smarc_t437x_01g()) | |
379 | + return &gp_evm_dpll_ddr; | |
380 | + else if (board_is_idk()) | |
381 | + return &idk_dpll_ddr; | |
382 | + else | |
383 | + printf(" Board '%s' not supported\n", board_ti_get_name()); | |
384 | + return &gp_evm_dpll_ddr; | |
385 | +} | |
386 | + | |
387 | + | |
388 | +/* | |
389 | + * get_opp_offset: | |
390 | + * Returns the index for safest OPP of the device to boot. | |
391 | + * max_off: Index of the MAX OPP in DEV ATTRIBUTE register. | |
392 | + * min_off: Index of the MIN OPP in DEV ATTRIBUTE register. | |
393 | + * This data is read from dev_attribute register which is e-fused. | |
394 | + * A'1' in bit indicates OPP disabled and not available, a '0' indicates | |
395 | + * OPP available. Lowest OPP starts with min_off. So returning the | |
396 | + * bit with rightmost '0'. | |
397 | + */ | |
398 | +static int get_opp_offset(int max_off, int min_off) | |
399 | +{ | |
400 | + struct ctrl_stat *ctrl = (struct ctrl_stat *)CTRL_BASE; | |
401 | + int opp, offset, i; | |
402 | + | |
403 | + /* Bits 0:11 are defined to be the MPU_MAX_FREQ */ | |
404 | + opp = readl(&ctrl->dev_attr) & ~0xFFFFF000; | |
405 | + | |
406 | + for (i = max_off; i >= min_off; i--) { | |
407 | + offset = opp & (1 << i); | |
408 | + if (!offset) | |
409 | + return i; | |
410 | + } | |
411 | + | |
412 | + return min_off; | |
413 | +} | |
414 | + | |
415 | +const struct dpll_params *get_dpll_mpu_params(void) | |
416 | +{ | |
417 | + int opp = get_opp_offset(DEV_ATTR_MAX_OFFSET, DEV_ATTR_MIN_OFFSET); | |
418 | + u32 ind = get_sys_clk_index(); | |
419 | + | |
420 | + return &dpll_mpu[ind][opp]; | |
421 | +} | |
422 | + | |
423 | +const struct dpll_params *get_dpll_core_params(void) | |
424 | +{ | |
425 | + int ind = get_sys_clk_index(); | |
426 | + | |
427 | + return &dpll_core[ind]; | |
428 | +} | |
429 | + | |
430 | +const struct dpll_params *get_dpll_per_params(void) | |
431 | +{ | |
432 | + int ind = get_sys_clk_index(); | |
433 | + | |
434 | + return &dpll_per[ind]; | |
435 | +} | |
436 | + | |
437 | +void scale_vcores_generic(u32 m) | |
438 | +{ | |
439 | + int mpu_vdd; | |
440 | + | |
441 | + if (i2c_probe(TPS65218_CHIP_PM)) | |
442 | + return; | |
443 | + | |
444 | + switch (m) { | |
445 | + case 1000: | |
446 | + mpu_vdd = TPS65218_DCDC_VOLT_SEL_1330MV; | |
447 | + break; | |
448 | + case 800: | |
449 | + mpu_vdd = TPS65218_DCDC_VOLT_SEL_1260MV; | |
450 | + break; | |
451 | + case 720: | |
452 | + mpu_vdd = TPS65218_DCDC_VOLT_SEL_1200MV; | |
453 | + break; | |
454 | + case 600: | |
455 | + mpu_vdd = TPS65218_DCDC_VOLT_SEL_1100MV; | |
456 | + break; | |
457 | + case 300: | |
458 | + mpu_vdd = TPS65218_DCDC_VOLT_SEL_0950MV; | |
459 | + break; | |
460 | + default: | |
461 | + puts("Unknown MPU clock, not scaling\n"); | |
462 | + return; | |
463 | + } | |
464 | + | |
465 | + /* Set DCDC1 (CORE) voltage to 1.1V */ | |
466 | + if (tps65218_voltage_update(TPS65218_DCDC1, | |
467 | + TPS65218_DCDC_VOLT_SEL_1100MV)) { | |
468 | + printf("%s failure\n", __func__); | |
469 | + return; | |
470 | + } | |
471 | + | |
472 | + /* Set DCDC2 (MPU) voltage */ | |
473 | + if (tps65218_voltage_update(TPS65218_DCDC2, mpu_vdd)) { | |
474 | + printf("%s failure\n", __func__); | |
475 | + return; | |
476 | + } | |
477 | + | |
478 | + /* Set DCDC3 (DDR) voltage */ | |
479 | + if (tps65218_voltage_update(TPS65218_DCDC3, | |
480 | + TPS65218_DCDC3_VOLT_SEL_1350MV)) { | |
481 | + printf("%s failure\n", __func__); | |
482 | + return; | |
483 | + } | |
484 | +} | |
485 | + | |
486 | +void scale_vcores_idk(u32 m) | |
487 | +{ | |
488 | + int mpu_vdd; | |
489 | + | |
490 | + if (i2c_probe(TPS62362_I2C_ADDR)) | |
491 | + return; | |
492 | + | |
493 | + switch (m) { | |
494 | + case 1000: | |
495 | + mpu_vdd = TPS62362_DCDC_VOLT_SEL_1330MV; | |
496 | + break; | |
497 | + case 800: | |
498 | + mpu_vdd = TPS62362_DCDC_VOLT_SEL_1260MV; | |
499 | + break; | |
500 | + case 720: | |
501 | + mpu_vdd = TPS62362_DCDC_VOLT_SEL_1200MV; | |
502 | + break; | |
503 | + case 600: | |
504 | + mpu_vdd = TPS62362_DCDC_VOLT_SEL_1100MV; | |
505 | + break; | |
506 | + case 300: | |
507 | + mpu_vdd = TPS62362_DCDC_VOLT_SEL_1330MV; | |
508 | + break; | |
509 | + default: | |
510 | + puts("Unknown MPU clock, not scaling\n"); | |
511 | + return; | |
512 | + } | |
513 | + | |
514 | + /* Set VDD_MPU voltage */ | |
515 | + if (tps62362_voltage_update(TPS62362_SET3, mpu_vdd)) { | |
516 | + printf("%s failure\n", __func__); | |
517 | + return; | |
518 | + } | |
519 | +} | |
520 | + | |
521 | +void gpi2c_init(void) | |
522 | +{ | |
523 | + /* When needed to be invoked prior to BSS initialization */ | |
524 | + static bool first_time = true; | |
525 | + | |
526 | + if (first_time) { | |
527 | + enable_i2c1_pin_mux(); | |
528 | + i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, | |
529 | + CONFIG_SYS_OMAP24_I2C_SLAVE); | |
530 | + first_time = false; | |
531 | + } | |
532 | +} | |
533 | + | |
534 | +void scale_vcores(void) | |
535 | +{ | |
536 | + const struct dpll_params *mpu_params; | |
537 | + | |
538 | + /* Ensure I2C is initialized for PMIC configuration */ | |
539 | + gpi2c_init(); | |
540 | + | |
541 | + /* Get the frequency */ | |
542 | + mpu_params = get_dpll_mpu_params(); | |
543 | + | |
544 | + if (board_is_idk()) | |
545 | + scale_vcores_idk(mpu_params->m); | |
546 | + else | |
547 | + scale_vcores_generic(mpu_params->m); | |
548 | +} | |
549 | + | |
550 | +void set_uart_mux_conf(void) | |
551 | +{ | |
552 | +#if CONFIG_CONS_INDEX == 1 | |
553 | + enable_uart0_pin_mux(); | |
554 | +#elif CONFIG_CONS_INDEX == 2 | |
555 | + enable_uart1_pin_mux(); | |
556 | +#elif CONFIG_CONS_INDEX == 3 | |
557 | + enable_uart2_pin_mux(); | |
558 | +#elif CONFIG_CONS_INDEX == 4 | |
559 | + enable_uart3_pin_mux(); | |
560 | +#elif CONFIG_CONS_INDEX == 5 | |
561 | + enable_uart4_pin_mux(); | |
562 | +#elif CONFIG_CONS_INDEX == 6 | |
563 | + enable_uart5_pin_mux(); | |
564 | +#endif | |
565 | +} | |
566 | + | |
567 | +void set_mux_conf_regs(void) | |
568 | +{ | |
569 | + enable_board_pin_mux(); | |
570 | +} | |
571 | + | |
572 | +static void enable_vtt_regulator(void) | |
573 | +{ | |
574 | + u32 temp; | |
575 | + | |
576 | + /* enable module */ | |
577 | + writel(GPIO_CTRL_ENABLEMODULE, AM33XX_GPIO5_BASE + OMAP_GPIO_CTRL); | |
578 | + | |
579 | + /* enable output for GPIO5_7 */ | |
580 | + writel(GPIO_SETDATAOUT(7), | |
581 | + AM33XX_GPIO5_BASE + OMAP_GPIO_SETDATAOUT); | |
582 | + temp = readl(AM33XX_GPIO5_BASE + OMAP_GPIO_OE); | |
583 | + temp = temp & ~(GPIO_OE_ENABLE(7)); | |
584 | + writel(temp, AM33XX_GPIO5_BASE + OMAP_GPIO_OE); | |
585 | +} | |
586 | + | |
587 | +enum { | |
588 | + RTC_BOARD_EPOS = 1, | |
589 | + RTC_BOARD_EVM14, | |
590 | + RTC_BOARD_EVM12, | |
591 | + RTC_BOARD_GPEVM, | |
592 | + RTC_BOARD_SK, | |
593 | + RTC_BOARD_SMARC_T437X_800, | |
594 | + RTC_BOARD_SMARC_T437X_01G, | |
595 | +}; | |
596 | + | |
597 | +/* | |
598 | + * In the rtc_only boot path we have the board type info in the rtc scratch pad | |
599 | + * register hence we bypass the costly i2c reads to eeprom and directly program | |
600 | + * the board name string | |
601 | + */ | |
602 | +void rtc_only_update_board_type(u32 btype) | |
603 | +{ | |
604 | + const char *name = ""; | |
605 | + const char *rev = "1.0"; | |
606 | + | |
607 | + switch (btype) { | |
608 | + case RTC_BOARD_EPOS: | |
609 | + name = "AM43EPOS"; | |
610 | + break; | |
611 | + case RTC_BOARD_EVM14: | |
612 | + name = "AM43__GP"; | |
613 | + rev = "1.4"; | |
614 | + break; | |
615 | + case RTC_BOARD_EVM12: | |
616 | + name = "AM43__GP"; | |
617 | + rev = "1.2"; | |
618 | + break; | |
619 | + case RTC_BOARD_GPEVM: | |
620 | + name = "AM43__GP"; | |
621 | + break; | |
622 | + case RTC_BOARD_SK: | |
623 | + name = "AM43__SK"; | |
624 | + break; | |
625 | + case RTC_BOARD_SMARC_T437X_800: | |
626 | + name = "SMCT4X80"; | |
627 | + break; | |
628 | + case RTC_BOARD_SMARC_T437X_01G: | |
629 | + name = "SMCT4X1G"; | |
630 | + break; | |
631 | + } | |
632 | + ti_i2c_eeprom_am_set(name, rev); | |
633 | +} | |
634 | + | |
635 | +u32 rtc_only_get_board_type(void) | |
636 | +{ | |
637 | + if (board_is_eposevm()) | |
638 | + return RTC_BOARD_EPOS; | |
639 | + else if (board_is_evm_14_or_later()) | |
640 | + return RTC_BOARD_EVM14; | |
641 | + else if (board_is_evm_12_or_later()) | |
642 | + return RTC_BOARD_EVM12; | |
643 | + else if (board_is_gpevm()) | |
644 | + return RTC_BOARD_GPEVM; | |
645 | + else if (board_is_sk()) | |
646 | + return RTC_BOARD_SK; | |
647 | + else if (board_is_smarc_t437x_800()) | |
648 | + return RTC_BOARD_SMARC_T437X_800; | |
649 | + else if (board_is_smarc_t437x_01g()) | |
650 | + return RTC_BOARD_SMARC_T437X_01G; | |
651 | + | |
652 | + return 0; | |
653 | +} | |
654 | + | |
655 | +void sdram_init(void) | |
656 | +{ | |
657 | + /* | |
658 | + * EPOS EVM has 1GB LPDDR2 connected to EMIF. | |
659 | + * GP EMV has 1GB DDR3 connected to EMIF | |
660 | + * along with VTT regulator. | |
661 | + */ | |
662 | + if (board_is_eposevm()) { | |
663 | + config_ddr(0, &ioregs_lpddr2, NULL, NULL, &emif_regs_lpddr2, 0); | |
664 | + } else if (board_is_evm_14_or_later()) { | |
665 | + enable_vtt_regulator(); | |
666 | + config_ddr(0, &ioregs_ddr3, NULL, NULL, | |
667 | + &ddr3_emif_regs_400Mhz_production, 0); | |
668 | + } else if (board_is_evm_12_or_later()) { | |
669 | + enable_vtt_regulator(); | |
670 | + config_ddr(0, &ioregs_ddr3, NULL, NULL, | |
671 | + &ddr3_emif_regs_400Mhz_beta, 0); | |
672 | + } else if (board_is_evm()) { | |
673 | + enable_vtt_regulator(); | |
674 | + config_ddr(0, &ioregs_ddr3, NULL, NULL, | |
675 | + &ddr3_emif_regs_400Mhz, 0); | |
676 | + } else if (board_is_sk()) { | |
677 | + config_ddr(400, &ioregs_ddr3, NULL, NULL, | |
678 | + &ddr3_sk_emif_regs_400Mhz, 0); | |
679 | + } else if (board_is_idk()) { | |
680 | + config_ddr(400, &ioregs_ddr3, NULL, NULL, | |
681 | + &ddr3_idk_emif_regs_400Mhz, 0); | |
682 | + } else if (board_is_smarc_t437x_800()) { | |
683 | + config_ddr(400, &ioregs_ddr3, NULL, NULL, | |
684 | + &ddr3_smarc80_emif_regs_400Mhz, 0); | |
685 | + } else if (board_is_smarc_t437x_01g()) { | |
686 | + config_ddr(400, &ioregs_ddr3, NULL, NULL, | |
687 | + &ddr3_smarc1g_emif_regs_400Mhz, 0); | |
688 | + } else { | |
689 | + config_ddr(400, &ioregs_ddr3, NULL, NULL, | |
690 | + &ddr3_smarc80_emif_regs_400Mhz, 0); | |
691 | + } | |
692 | +} | |
693 | +#endif | |
694 | + | |
695 | +/* setup board specific PMIC */ | |
696 | +int power_init_board(void) | |
697 | +{ | |
698 | + struct pmic *p; | |
699 | + | |
700 | + if (board_is_idk()) { | |
701 | + power_tps62362_init(I2C_PMIC); | |
702 | + p = pmic_get("TPS62362"); | |
703 | + if (p && !pmic_probe(p)) | |
704 | + puts("PMIC: TPS62362\n"); | |
705 | + } else { | |
706 | + power_tps65218_init(I2C_PMIC); | |
707 | + p = pmic_get("TPS65218_PMIC"); | |
708 | + if (p && !pmic_probe(p)) | |
709 | + puts("PMIC: TPS65218\n"); | |
710 | + } | |
711 | + | |
712 | + return 0; | |
713 | +} | |
714 | + | |
715 | +int board_init(void) | |
716 | +{ | |
717 | + u32 sys_reboot; | |
718 | + | |
719 | + sys_reboot = readl(PRM_RSTST); | |
720 | + if (sys_reboot & (1 << 9)) | |
721 | + puts("Reset Source: IcePick reset has occurred.\n"); | |
722 | + | |
723 | + if (sys_reboot & (1 << 5)) | |
724 | + puts("Reset Source: Global external warm reset has occurred.\n"); | |
725 | + | |
726 | + if (sys_reboot & (1 << 4)) | |
727 | + puts("Reset Source: watchdog reset has occurred.\n"); | |
728 | + | |
729 | + if (sys_reboot & (1 << 1)) | |
730 | + puts("Reset Source: Global warm SW reset has occurred.\n"); | |
731 | + | |
732 | + if (sys_reboot & (1 << 0)) | |
733 | + puts("Reset Source: Power-on reset has occurred.\n"); | |
734 | + | |
735 | + struct l3f_cfg_bwlimiter *bwlimiter = (struct l3f_cfg_bwlimiter *)L3F_CFG_BWLIMITER; | |
736 | + u32 mreqprio_0, mreqprio_1, modena_init0_bw_fractional, | |
737 | + modena_init0_bw_integer, modena_init0_watermark_0; | |
738 | + | |
739 | + gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; | |
740 | + gpmc_init(); | |
741 | + | |
742 | + /* Clear all important bits for DSS errata that may need to be tweaked*/ | |
743 | + mreqprio_0 = readl(&cdev->mreqprio_0) & MREQPRIO_0_SAB_INIT1_MASK & | |
744 | + MREQPRIO_0_SAB_INIT0_MASK; | |
745 | + | |
746 | + mreqprio_1 = readl(&cdev->mreqprio_1) & MREQPRIO_1_DSS_MASK; | |
747 | + | |
748 | + modena_init0_bw_fractional = readl(&bwlimiter->modena_init0_bw_fractional) & | |
749 | + BW_LIMITER_BW_FRAC_MASK; | |
750 | + | |
751 | + modena_init0_bw_integer = readl(&bwlimiter->modena_init0_bw_integer) & | |
752 | + BW_LIMITER_BW_INT_MASK; | |
753 | + | |
754 | + modena_init0_watermark_0 = readl(&bwlimiter->modena_init0_watermark_0) & | |
755 | + BW_LIMITER_BW_WATERMARK_MASK; | |
756 | + | |
757 | + /* Setting MReq Priority of the DSS*/ | |
758 | + mreqprio_0 |= 0x77; | |
759 | + | |
760 | + /* | |
761 | + * Set L3 Fast Configuration Register | |
762 | + * Limiting bandwith for ARM core to 700 MBPS | |
763 | + */ | |
764 | + modena_init0_bw_fractional |= 0x10; | |
765 | + modena_init0_bw_integer |= 0x3; | |
766 | + | |
767 | + writel(mreqprio_0, &cdev->mreqprio_0); | |
768 | + writel(mreqprio_1, &cdev->mreqprio_1); | |
769 | + | |
770 | + writel(modena_init0_bw_fractional, &bwlimiter->modena_init0_bw_fractional); | |
771 | + writel(modena_init0_bw_integer, &bwlimiter->modena_init0_bw_integer); | |
772 | + writel(modena_init0_watermark_0, &bwlimiter->modena_init0_watermark_0); | |
773 | + | |
774 | + return 0; | |
775 | +} | |
776 | + | |
777 | +#ifdef CONFIG_BOARD_LATE_INIT | |
778 | +int board_late_init(void) | |
779 | +{ | |
780 | + struct ti_am_eeprom data; | |
781 | + | |
782 | + if (board_is_smarc_t437x_800() || board_is_smarc_t437x_01g()) { | |
783 | + | |
784 | + /* Read Board Info from EEPROM */ | |
785 | + puts("-----------------------------------------\n"); | |
786 | + printf("Board ID: %.*s\n", | |
787 | + sizeof(data.name), board_ti_get_name()); | |
788 | + printf("Board Revision: %.*s\n", | |
789 | + sizeof(data.version), board_ti_get_rev()); | |
790 | + printf("Board Serial#: %.*s\n", | |
791 | + sizeof(data.serial), board_ti_get_serial()); | |
792 | + puts("-----------------------------------------\n"); | |
793 | + | |
794 | + } else { | |
795 | + puts("Bad EEPROM or unknown board!\n"); | |
796 | + return 0; | |
797 | + } | |
798 | + | |
799 | + /* LCD and Backlight Enable Pin */ | |
800 | +#define GPIO_LCD_BKLT_EN 68 | |
801 | +#define GPIO_LCD_PWM_EN 138 | |
802 | + /* BOOT_SEL Pin */ | |
803 | +#define GPIO_BOOT_SEL1 168 | |
804 | +#define GPIO_BOOT_SEL2 169 | |
805 | +#define GPIO_BOOT_SEL3 170 | |
806 | + gpio_request(GPIO_LCD_BKLT_EN, "lcd_bklt_en"); | |
807 | + gpio_direction_output(GPIO_LCD_BKLT_EN, 1); | |
808 | + gpio_request(GPIO_LCD_PWM_EN, "lcd_pwm_en"); | |
809 | + gpio_direction_output(GPIO_LCD_PWM_EN, 1); | |
810 | + | |
811 | + gpio_request(GPIO_BOOT_SEL1, "boot_sel1"); | |
812 | + gpio_direction_input(GPIO_BOOT_SEL1); | |
813 | + gpio_request(GPIO_BOOT_SEL2, "boot_sel2"); | |
814 | + gpio_direction_input(GPIO_BOOT_SEL2); | |
815 | + gpio_request(GPIO_BOOT_SEL3, "boot_sel3"); | |
816 | + gpio_direction_input(GPIO_BOOT_SEL3); | |
817 | + | |
818 | + /*Read BOOT_SEL Configuration */ | |
819 | + if ((gpio_get_value(168) == 0)&&(gpio_get_value(169) == 0)&&(gpio_get_value(170) == 0)) { | |
820 | + puts("BOOT_SEL Detected: OFF OFF OFF, SATA Boot Up Not Defined...\n"); | |
821 | + hang(); | |
822 | + } else if ((gpio_get_value(168) == 0)&&(gpio_get_value(169) == 1)&&(gpio_get_value(170) == 0)) { | |
823 | + puts("BOOT_SEL Detected: OFF ON OFF, Load zImage from Carrier SDMMC...\n"); | |
824 | + setenv_ulong("mmcdev", 2); | |
825 | + setenv("bootcmd", "run findfdt; run mmcboot;"); | |
826 | + } else if ((gpio_get_value(168) == 1)&&(gpio_get_value(169) == 0)&&(gpio_get_value(170) == 0)) { | |
827 | + puts("BOOT_SEL Detected: ON OFF OFF, Load zImage from Carrier SD Card...\n"); | |
828 | + setenv_ulong("mmcdev", 0); | |
829 | + setenv("bootcmd", "run findfdt; run mmcboot;"); | |
830 | + } else if ((gpio_get_value(168) == 0)&&(gpio_get_value(169) == 1)&&(gpio_get_value(170) == 1)) { | |
831 | + puts("BOOT_SEL Detected: OFF ON ON, Load zImage from Module eMMC Flash...\n"); | |
832 | + setenv_ulong("mmcdev", 1); | |
833 | + setenv("bootcmd", "mmc rescan; run findfdt; run mmcboot;"); | |
834 | + } else if ((gpio_get_value(168) == 1)&&(gpio_get_value(169) == 0)&&(gpio_get_value(170) == 1)) { | |
835 | + puts("BOOT_SEL Detected: ON OFF ON, Load zImage from GBE...\n"); | |
836 | + setenv("bootcmd", "dhcp;"); | |
837 | + } else if ((gpio_get_value(168) == 1)&&(gpio_get_value(169) == 1)&&(gpio_get_value(170) == 0)) { | |
838 | + puts("BOOT_SEL Detected: ON ON OFF, Carrier SPI Boot Not Supported...\n"); | |
839 | + hang(); | |
840 | + } else if ((gpio_get_value(168) == 0)&&(gpio_get_value(169) == 0)&&(gpio_get_value(170) == 1)) { | |
841 | + puts("BOOT_SEL Detected: OFF OFF ON, Load zImage from USB1...\n"); | |
842 | + setenv_ulong("usbdev", 0); | |
843 | + setenv("bootcmd", "run findfdt; run usbboot;"); | |
844 | + } else if ((gpio_get_value(168) == 1)&&(gpio_get_value(169) == 1)&&(gpio_get_value(170) == 1)) { | |
845 | + puts("BOOT_SEL Detected: ON ON ON, MOdule SPI Boot up is Default, Load zImage from Module eMMC...\n"); | |
846 | + setenv_ulong("mmcdev", 1); | |
847 | + setenv("bootcmd", "run findfdt; run mmcboot;"); | |
848 | + } else { | |
849 | + puts("unsupported boot up devices\n"); | |
850 | + return 0; | |
851 | + } | |
852 | + | |
853 | +#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG | |
854 | + set_board_info_env(NULL); | |
855 | + | |
856 | + /* | |
857 | + * Default FIT boot on HS devices. Non FIT images are not allowed | |
858 | + * on HS devices. | |
859 | + */ | |
860 | + if (get_device_type() == HS_DEVICE) | |
861 | + setenv("boot_fit", "1"); | |
862 | +#endif | |
863 | + return 0; | |
864 | +} | |
865 | +#endif | |
866 | + | |
867 | +#ifdef CONFIG_USB_DWC3 | |
868 | +static struct dwc3_device usb_otg_ss1 = { | |
869 | + .maximum_speed = USB_SPEED_HIGH, | |
870 | + .base = USB_OTG_SS1_BASE, | |
871 | + .tx_fifo_resize = false, | |
872 | + .index = 0, | |
873 | +}; | |
874 | + | |
875 | +static struct dwc3_omap_device usb_otg_ss1_glue = { | |
876 | + .base = (void *)USB_OTG_SS1_GLUE_BASE, | |
877 | + .utmi_mode = DWC3_OMAP_UTMI_MODE_SW, | |
878 | + .index = 0, | |
879 | +}; | |
880 | + | |
881 | +static struct ti_usb_phy_device usb_phy1_device = { | |
882 | + .usb2_phy_power = (void *)USB2_PHY1_POWER, | |
883 | + .index = 0, | |
884 | +}; | |
885 | + | |
886 | +static struct dwc3_device usb_otg_ss2 = { | |
887 | + .maximum_speed = USB_SPEED_HIGH, | |
888 | + .base = USB_OTG_SS2_BASE, | |
889 | + .tx_fifo_resize = false, | |
890 | + .index = 1, | |
891 | +}; | |
892 | + | |
893 | +static struct dwc3_omap_device usb_otg_ss2_glue = { | |
894 | + .base = (void *)USB_OTG_SS2_GLUE_BASE, | |
895 | + .utmi_mode = DWC3_OMAP_UTMI_MODE_SW, | |
896 | + .index = 1, | |
897 | +}; | |
898 | + | |
899 | +static struct ti_usb_phy_device usb_phy2_device = { | |
900 | + .usb2_phy_power = (void *)USB2_PHY2_POWER, | |
901 | + .index = 1, | |
902 | +}; | |
903 | + | |
904 | +int usb_gadget_handle_interrupts(int index) | |
905 | +{ | |
906 | + u32 status; | |
907 | + | |
908 | + status = dwc3_omap_uboot_interrupt_status(index); | |
909 | + if (status) | |
910 | + dwc3_uboot_handle_interrupt(index); | |
911 | + | |
912 | + return 0; | |
913 | +} | |
914 | +#endif /* CONFIG_USB_DWC3 */ | |
915 | + | |
916 | +#if defined(CONFIG_USB_DWC3) || defined(CONFIG_USB_XHCI_OMAP) | |
917 | +int board_usb_init(int index, enum usb_init_type init) | |
918 | +{ | |
919 | + enable_usb_clocks(index); | |
920 | +#ifdef CONFIG_USB_DWC3 | |
921 | + switch (index) { | |
922 | + case 0: | |
923 | + if (init == USB_INIT_DEVICE) { | |
924 | + usb_otg_ss1.dr_mode = USB_DR_MODE_PERIPHERAL; | |
925 | + usb_otg_ss1_glue.vbus_id_status = OMAP_DWC3_VBUS_VALID; | |
926 | + dwc3_omap_uboot_init(&usb_otg_ss1_glue); | |
927 | + ti_usb_phy_uboot_init(&usb_phy1_device); | |
928 | + dwc3_uboot_init(&usb_otg_ss1); | |
929 | + } | |
930 | + break; | |
931 | + case 1: | |
932 | + if (init == USB_INIT_DEVICE) { | |
933 | + usb_otg_ss2.dr_mode = USB_DR_MODE_PERIPHERAL; | |
934 | + usb_otg_ss2_glue.vbus_id_status = OMAP_DWC3_VBUS_VALID; | |
935 | + ti_usb_phy_uboot_init(&usb_phy2_device); | |
936 | + dwc3_omap_uboot_init(&usb_otg_ss2_glue); | |
937 | + dwc3_uboot_init(&usb_otg_ss2); | |
938 | + } | |
939 | + break; | |
940 | + default: | |
941 | + printf("Invalid Controller Index\n"); | |
942 | + } | |
943 | +#endif | |
944 | + | |
945 | + return 0; | |
946 | +} | |
947 | + | |
948 | +int board_usb_cleanup(int index, enum usb_init_type init) | |
949 | +{ | |
950 | +#ifdef CONFIG_USB_DWC3 | |
951 | + switch (index) { | |
952 | + case 0: | |
953 | + case 1: | |
954 | + if (init == USB_INIT_DEVICE) { | |
955 | + ti_usb_phy_uboot_exit(index); | |
956 | + dwc3_uboot_exit(index); | |
957 | + dwc3_omap_uboot_exit(index); | |
958 | + } | |
959 | + break; | |
960 | + default: | |
961 | + printf("Invalid Controller Index\n"); | |
962 | + } | |
963 | +#endif | |
964 | + disable_usb_clocks(index); | |
965 | + | |
966 | + return 0; | |
967 | +} | |
968 | +#endif /* defined(CONFIG_USB_DWC3) || defined(CONFIG_USB_XHCI_OMAP) */ | |
969 | + | |
970 | +#ifndef CONFIG_DM_ETH | |
971 | +#if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) || \ | |
972 | + (defined(CONFIG_SPL_ETH_SUPPORT) && defined(CONFIG_SPL_BUILD)) | |
973 | +static void cpsw_control(int enabled) | |
974 | +{ | |
975 | + /* Additional controls can be added here */ | |
976 | + return; | |
977 | +} | |
978 | + | |
979 | +static struct cpsw_slave_data cpsw_slaves[] = { | |
980 | + { | |
981 | + .slave_reg_ofs = 0x208, | |
982 | + .sliver_reg_ofs = 0xd80, | |
983 | + .phy_addr = 16, | |
984 | + }, | |
985 | + { | |
986 | + .slave_reg_ofs = 0x308, | |
987 | + .sliver_reg_ofs = 0xdc0, | |
988 | + .phy_addr = 1, | |
989 | + }, | |
990 | +}; | |
991 | + | |
992 | +static struct cpsw_platform_data cpsw_data = { | |
993 | + .mdio_base = CPSW_MDIO_BASE, | |
994 | + .cpsw_base = CPSW_BASE, | |
995 | + .mdio_div = 0xff, | |
996 | + .channels = 8, | |
997 | + .cpdma_reg_ofs = 0x800, | |
998 | + .slaves = 1, | |
999 | + .slave_data = cpsw_slaves, | |
1000 | + .ale_reg_ofs = 0xd00, | |
1001 | + .ale_entries = 1024, | |
1002 | + .host_port_reg_ofs = 0x108, | |
1003 | + .hw_stats_reg_ofs = 0x900, | |
1004 | + .bd_ram_ofs = 0x2000, | |
1005 | + .mac_control = (1 << 5), | |
1006 | + .control = cpsw_control, | |
1007 | + .host_port_num = 0, | |
1008 | + .version = CPSW_CTRL_VERSION_2, | |
1009 | +}; | |
1010 | +#endif | |
1011 | + | |
1012 | + | |
1013 | +/* | |
1014 | + * This function will: | |
1015 | + * Read the eFuse for MAC addresses, and set ethaddr/eth1addr/usbnet_devaddr | |
1016 | + * in the environment | |
1017 | + * Perform fixups to the PHY present on certain boards. We only need this | |
1018 | + * function in: | |
1019 | + * - SPL with either CPSW or USB ethernet support | |
1020 | + * - Full U-Boot, with either CPSW or USB ethernet | |
1021 | + * Build in only these cases to avoid warnings about unused variables | |
1022 | + * when we build an SPL that has neither option but full U-Boot will. | |
1023 | + */ | |
1024 | +#if ((defined(CONFIG_SPL_ETH_SUPPORT) || \ | |
1025 | + defined(CONFIG_SPL_USBETH_SUPPORT)) && \ | |
1026 | + defined(CONFIG_SPL_BUILD)) || \ | |
1027 | + ((defined(CONFIG_DRIVER_TI_CPSW) || \ | |
1028 | + defined(CONFIG_USB_ETHER)) && !defined(CONFIG_SPL_BUILD)) | |
1029 | +int board_eth_init(bd_t *bis) | |
1030 | +{ | |
1031 | + int rv; | |
1032 | + uint8_t mac_addr[6]; | |
1033 | + uint32_t mac_hi, mac_lo; | |
1034 | + | |
1035 | + /* try reading mac address from efuse */ | |
1036 | + mac_lo = readl(&cdev->macid0l); | |
1037 | + mac_hi = readl(&cdev->macid0h); | |
1038 | + mac_addr[0] = mac_hi & 0xFF; | |
1039 | + mac_addr[1] = (mac_hi & 0xFF00) >> 8; | |
1040 | + mac_addr[2] = (mac_hi & 0xFF0000) >> 16; | |
1041 | + mac_addr[3] = (mac_hi & 0xFF000000) >> 24; | |
1042 | + mac_addr[4] = mac_lo & 0xFF; | |
1043 | + mac_addr[5] = (mac_lo & 0xFF00) >> 8; | |
1044 | + | |
1045 | +#if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) || \ | |
1046 | + (defined(CONFIG_SPL_ETH_SUPPORT) && defined(CONFIG_SPL_BUILD)) | |
1047 | + if (!getenv("ethaddr")) { | |
1048 | + puts("<ethaddr> not set. Validating first E-fuse MAC\n"); | |
1049 | + if (is_valid_ethaddr(mac_addr)) | |
1050 | + eth_setenv_enetaddr("ethaddr", mac_addr); | |
1051 | + } | |
1052 | + | |
1053 | +#ifndef CONFIG_SPL_BUILD | |
1054 | + mac_lo = readl(&cdev->macid1l); | |
1055 | + mac_hi = readl(&cdev->macid1h); | |
1056 | + mac_addr[0] = mac_hi & 0xFF; | |
1057 | + mac_addr[1] = (mac_hi & 0xFF00) >> 8; | |
1058 | + mac_addr[2] = (mac_hi & 0xFF0000) >> 16; | |
1059 | + mac_addr[3] = (mac_hi & 0xFF000000) >> 24; | |
1060 | + mac_addr[4] = mac_lo & 0xFF; | |
1061 | + mac_addr[5] = (mac_lo & 0xFF00) >> 8; | |
1062 | + | |
1063 | + if (!getenv("eth1addr")) { | |
1064 | + if (is_valid_ethaddr(mac_addr)) | |
1065 | + eth_setenv_enetaddr("eth1addr", mac_addr); | |
1066 | + } | |
1067 | +#endif | |
1068 | + if (board_is_eposevm()) { | |
1069 | + writel(RMII_MODE_ENABLE | RMII_CHIPCKL_ENABLE, &cdev->miisel); | |
1070 | + cpsw_slaves[0].phy_if = PHY_INTERFACE_MODE_RMII; | |
1071 | + cpsw_slaves[0].phy_addr = 16; | |
1072 | + } else if (board_is_sk()) { | |
1073 | + writel(RGMII_MODE_ENABLE, &cdev->miisel); | |
1074 | + cpsw_slaves[0].phy_if = PHY_INTERFACE_MODE_RGMII; | |
1075 | + cpsw_slaves[0].phy_addr = 4; | |
1076 | + cpsw_slaves[1].phy_addr = 5; | |
1077 | + } else if (board_is_idk()) { | |
1078 | + writel(RGMII_MODE_ENABLE, &cdev->miisel); | |
1079 | + cpsw_slaves[0].phy_if = PHY_INTERFACE_MODE_RGMII; | |
1080 | + cpsw_slaves[0].phy_addr = 0; | |
1081 | + } else if (board_is_smarc_t437x_800() || board_is_smarc_t437x_01g()) { | |
1082 | + writel((RGMII_MODE_ENABLE | RGMII_INT_DELAY), &cdev->miisel); | |
1083 | + cpsw_slaves[0].phy_if = PHY_INTERFACE_MODE_RGMII; | |
1084 | + cpsw_slaves[1].phy_if = PHY_INTERFACE_MODE_RGMII; | |
1085 | + cpsw_slaves[0].phy_addr = 6; | |
1086 | + cpsw_slaves[1].phy_addr = 7; | |
1087 | + } else { | |
1088 | + writel((RGMII_MODE_ENABLE | RGMII_INT_DELAY), &cdev->miisel); | |
1089 | + cpsw_slaves[0].phy_if = PHY_INTERFACE_MODE_RGMII; | |
1090 | + cpsw_slaves[1].phy_if = PHY_INTERFACE_MODE_RGMII; | |
1091 | + cpsw_slaves[0].phy_addr = 6; | |
1092 | + cpsw_slaves[1].phy_addr = 7; | |
1093 | + } | |
1094 | + | |
1095 | + rv = cpsw_register(&cpsw_data); | |
1096 | + if (rv < 0) { | |
1097 | + printf("Error %d registering CPSW switch\n", rv); | |
1098 | + return rv; | |
1099 | + } | |
1100 | +#endif | |
1101 | +#if defined(CONFIG_USB_ETHER) && \ | |
1102 | + (!defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_USBETH_SUPPORT)) | |
1103 | + if (is_valid_ethaddr(mac_addr)) | |
1104 | + eth_setenv_enetaddr("usbnet_devaddr", mac_addr); | |
1105 | + | |
1106 | + rv = usb_eth_initialize(bis); | |
1107 | + if (rv < 0) | |
1108 | + printf("Error %d registering USB_ETHER\n", rv); | |
1109 | +#endif | |
1110 | + | |
1111 | + return rv; | |
1112 | +} | |
1113 | +#endif | |
1114 | +#endif | |
1115 | + | |
1116 | +#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) | |
1117 | +int ft_board_setup(void *blob, bd_t *bd) | |
1118 | +{ | |
1119 | + ft_cpu_setup(blob, bd); | |
1120 | + | |
1121 | + return 0; | |
1122 | +} | |
1123 | +#endif | |
1124 | + | |
1125 | +#ifdef CONFIG_SPL_LOAD_FIT | |
1126 | +int board_fit_config_name_match(const char *name) | |
1127 | +{ | |
1128 | + if (board_is_evm() && !strcmp(name, "am437x-gp-evm")) | |
1129 | + return 0; | |
1130 | + else if (board_is_sk() && !strcmp(name, "am437x-sk-evm")) | |
1131 | + return 0; | |
1132 | + else if (board_is_eposevm() && !strcmp(name, "am43x-epos-evm")) | |
1133 | + return 0; | |
1134 | + else if (board_is_idk() && !strcmp(name, "am437x-idk-evm")) | |
1135 | + return 0; | |
1136 | + else if (board_is_smarc_t437x_800() && !strcmp(name, "am437x-smarct437x")) | |
1137 | + return 0; | |
1138 | + else if (board_is_smarc_t437x_01g() && !strcmp(name, "am437x-smarct437xSMCT4X1G")) | |
1139 | + return 0; | |
1140 | + else | |
1141 | + return -1; | |
1142 | +} | |
1143 | +#endif | |
1144 | + | |
1145 | +#ifdef CONFIG_TI_SECURE_DEVICE | |
1146 | +void board_fit_image_post_process(void **p_image, size_t *p_size) | |
1147 | +{ | |
1148 | + secure_boot_verify_image(p_image, p_size); | |
1149 | +} | |
1150 | + | |
1151 | +void board_tee_image_process(ulong tee_image, size_t tee_size) | |
1152 | +{ | |
1153 | + secure_tee_install((u32)tee_image); | |
1154 | +} | |
1155 | + | |
1156 | +U_BOOT_FIT_LOADABLE_HANDLER(IH_TYPE_TEE, board_tee_image_process); | |
1157 | +#endif |
board/embedian/smarct437x/board.h
1 | +/* | |
2 | + * board.h | |
3 | + * | |
4 | + * TI AM437x boards information header | |
5 | + * Derived from AM335x board. | |
6 | + * | |
7 | + * Copyright (C) 2013, Texas Instruments, Incorporated - http://www.ti.com/ | |
8 | + * | |
9 | + * SPDX-License-Identifier: GPL-2.0+ | |
10 | + */ | |
11 | + | |
12 | +#ifndef _BOARD_H_ | |
13 | +#define _BOARD_H_ | |
14 | + | |
15 | +#include <asm/arch/omap.h> | |
16 | + | |
17 | +#define DEV_ATTR_MAX_OFFSET 5 | |
18 | +#define DEV_ATTR_MIN_OFFSET 0 | |
19 | + | |
20 | +static inline int board_is_eposevm(void) | |
21 | +{ | |
22 | + return board_ti_is("AM43EPOS"); | |
23 | +} | |
24 | + | |
25 | +static inline int board_is_gpevm(void) | |
26 | +{ | |
27 | + return board_ti_is("AM43__GP"); | |
28 | +} | |
29 | + | |
30 | +static inline int board_is_sk(void) | |
31 | +{ | |
32 | + return board_ti_is("AM43__SK"); | |
33 | +} | |
34 | + | |
35 | +static inline int board_is_smarc_t437x_800(void) | |
36 | +{ | |
37 | + return board_ti_is("SMCT4X80"); | |
38 | +} | |
39 | + | |
40 | +static inline int board_is_smarc_t437x_01g(void) | |
41 | +{ | |
42 | + return board_ti_is("SMCT4X1G"); | |
43 | +} | |
44 | + | |
45 | +static inline int board_is_idk(void) | |
46 | +{ | |
47 | + return board_ti_is("AM43_IDK"); | |
48 | +} | |
49 | + | |
50 | +static inline int board_is_hsevm(void) | |
51 | +{ | |
52 | + return board_ti_is("AM43XXHS"); | |
53 | +} | |
54 | + | |
55 | +static inline int board_is_evm(void) | |
56 | +{ | |
57 | + return board_is_gpevm() || board_is_hsevm(); | |
58 | +} | |
59 | + | |
60 | +static inline int board_is_evm_14_or_later(void) | |
61 | +{ | |
62 | + return board_is_evm() && strncmp("1.4", board_ti_get_rev(), 3) <= 0; | |
63 | +} | |
64 | + | |
65 | +static inline int board_is_evm_12_or_later(void) | |
66 | +{ | |
67 | + return board_is_evm() && strncmp("1.2", board_ti_get_rev(), 3) <= 0; | |
68 | +} | |
69 | + | |
70 | +void enable_uart0_pin_mux(void); | |
71 | +void enable_uart2_pin_mux(void); | |
72 | +void enable_uart3_pin_mux(void); | |
73 | +void enable_uart4_pin_mux(void); | |
74 | +void enable_board_pin_mux(void); | |
75 | +void enable_i2c1_pin_mux(void); | |
76 | +#endif |
board/embedian/smarct437x/mux.c
1 | +/* | |
2 | + * mux.c | |
3 | + * | |
4 | + * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/ | |
5 | + * | |
6 | + * SPDX-License-Identifier: GPL-2.0+ | |
7 | + */ | |
8 | + | |
9 | +#include <common.h> | |
10 | +#include <asm/arch/sys_proto.h> | |
11 | +#include <asm/arch/mux.h> | |
12 | +#include "../common/board_detect.h" | |
13 | +#include "board.h" | |
14 | + | |
15 | +static struct module_pin_mux rmii1_pin_mux[] = { | |
16 | + {OFFSET(mii1_txen), MODE(1)}, /* RMII1_TXEN */ | |
17 | + {OFFSET(mii1_txd1), MODE(1)}, /* RMII1_TD1 */ | |
18 | + {OFFSET(mii1_txd0), MODE(1)}, /* RMII1_TD0 */ | |
19 | + {OFFSET(mii1_rxd1), MODE(1) | RXACTIVE}, /* RMII1_RD1 */ | |
20 | + {OFFSET(mii1_rxd0), MODE(1) | RXACTIVE}, /* RMII1_RD0 */ | |
21 | + {OFFSET(mii1_rxdv), MODE(1) | RXACTIVE}, /* RMII1_RXDV */ | |
22 | + {OFFSET(mii1_crs), MODE(1) | RXACTIVE}, /* RMII1_CRS_DV */ | |
23 | + {OFFSET(mii1_rxerr), MODE(1) | RXACTIVE}, /* RMII1_RXERR */ | |
24 | + {OFFSET(rmii1_refclk), MODE(0) | RXACTIVE}, /* RMII1_refclk */ | |
25 | + {-1}, | |
26 | +}; | |
27 | + | |
28 | +/* LAN1 */ | |
29 | +static struct module_pin_mux rgmii1_pin_mux[] = { | |
30 | + {OFFSET(mii1_txen), MODE(2)}, /* RGMII1_TCTL */ | |
31 | + {OFFSET(mii1_rxdv), MODE(2) | RXACTIVE}, /* RGMII1_RCTL */ | |
32 | + {OFFSET(mii1_txd3), MODE(2)}, /* RGMII1_TD3 */ | |
33 | + {OFFSET(mii1_txd2), MODE(2)}, /* RGMII1_TD2 */ | |
34 | + {OFFSET(mii1_txd1), MODE(2)}, /* RGMII1_TD1 */ | |
35 | + {OFFSET(mii1_txd0), MODE(2)}, /* RGMII1_TD0 */ | |
36 | + {OFFSET(mii1_txclk), MODE(2)}, /* RGMII1_TCLK */ | |
37 | + {OFFSET(mii1_rxclk), MODE(2) | RXACTIVE}, /* RGMII1_RCLK */ | |
38 | + {OFFSET(mii1_rxd3), MODE(2) | RXACTIVE}, /* RGMII1_RD3 */ | |
39 | + {OFFSET(mii1_rxd2), MODE(2) | RXACTIVE}, /* RGMII1_RD2 */ | |
40 | + {OFFSET(mii1_rxd1), MODE(2) | RXACTIVE}, /* RGMII1_RD1 */ | |
41 | + {OFFSET(mii1_rxd0), MODE(2) | RXACTIVE}, /* RGMII1_RD0 */ | |
42 | + {-1}, | |
43 | +}; | |
44 | + | |
45 | +/* LAN2 */ | |
46 | +static struct module_pin_mux rgmii2_pin_mux[] = { | |
47 | + {OFFSET(gpmc_a0), MODE(2)}, /* RGMII2_TCTL */ | |
48 | + {OFFSET(gpmc_a1), MODE(2) | RXACTIVE}, /* RGMII2_RCTL */ | |
49 | + {OFFSET(gpmc_a2), MODE(2)}, /* RGMII2_TD3 */ | |
50 | + {OFFSET(gpmc_a3), MODE(2)}, /* RGMII2_TD2 */ | |
51 | + {OFFSET(gpmc_a4), MODE(2)}, /* RGMII2_TD1 */ | |
52 | + {OFFSET(gpmc_a5), MODE(2)}, /* RGMII2_TD0 */ | |
53 | + {OFFSET(gpmc_a6), MODE(2)}, /* RGMII2_TCLK */ | |
54 | + {OFFSET(gpmc_a7), MODE(2) | RXACTIVE}, /* RGMII2_RCLK */ | |
55 | + {OFFSET(gpmc_a8), MODE(2) | RXACTIVE}, /* RGMII2_RD3 */ | |
56 | + {OFFSET(gpmc_a9), MODE(2) | RXACTIVE}, /* RGMII2_RD2 */ | |
57 | + {OFFSET(gpmc_a10), MODE(2) | RXACTIVE}, /* RGMII2_RD1 */ | |
58 | + {OFFSET(gpmc_a11), MODE(2) | RXACTIVE}, /* RGMII2_RD0 */ | |
59 | + {-1}, | |
60 | +}; | |
61 | + | |
62 | +static struct module_pin_mux mdio_pin_mux[] = { | |
63 | + {OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA */ | |
64 | + {OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */ | |
65 | + {-1}, | |
66 | +}; | |
67 | + | |
68 | +/* SER0 */ | |
69 | +static struct module_pin_mux uart0_pin_mux[] = { | |
70 | + {OFFSET(uart0_rxd), (MODE(0) | PULLUP_EN | RXACTIVE | SLEWCTRL)}, | |
71 | + {OFFSET(uart0_txd), (MODE(0) | PULLUDDIS | PULLUP_EN | SLEWCTRL)}, | |
72 | + {OFFSET(uart0_ctsn), (MODE(0) | PULLUP_EN | RXACTIVE | SLEWCTRL)}, | |
73 | + {OFFSET(uart0_rtsn), (MODE(0) | PULLUDDIS | PULLUP_EN | SLEWCTRL)}, | |
74 | + {-1}, | |
75 | +}; | |
76 | + | |
77 | +/* SER2 */ | |
78 | +static struct module_pin_mux uart2_pin_mux[] = { | |
79 | + {OFFSET(cam1_data4), (MODE(2) | PULLUP_EN | RXACTIVE | SLEWCTRL)}, | |
80 | + {OFFSET(cam1_data5), (MODE(2) | PULLUDDIS | PULLUP_EN | SLEWCTRL)}, | |
81 | + {OFFSET(cam1_data6), (MODE(2) | PULLUP_EN | RXACTIVE | SLEWCTRL)}, | |
82 | + {OFFSET(cam1_data7), (MODE(2) | PULLUDDIS | PULLUP_EN | SLEWCTRL)}, | |
83 | + {-1}, | |
84 | +}; | |
85 | + | |
86 | +/* SER1 */ | |
87 | +static struct module_pin_mux uart3_pin_mux[] = { | |
88 | + {OFFSET(uart3_rxd), (MODE(0) | PULLUP_EN | RXACTIVE | SLEWCTRL)}, | |
89 | + {OFFSET(uart3_txd), (MODE(0) | PULLUDDIS | PULLUP_EN | SLEWCTRL)}, | |
90 | + {-1}, | |
91 | +}; | |
92 | + | |
93 | +/* SER3 */ | |
94 | +static struct module_pin_mux uart4_pin_mux[] = { | |
95 | + {OFFSET(gpmc_wait0), (MODE(6) | PULLUP_EN | RXACTIVE | SLEWCTRL)}, | |
96 | + {OFFSET(gpmc_wpn), (MODE(6) | PULLUDDIS | PULLUP_EN | SLEWCTRL)}, | |
97 | + {-1}, | |
98 | +}; | |
99 | + | |
100 | +/* SD */ | |
101 | +static struct module_pin_mux mmc0_pin_mux[] = { | |
102 | + {OFFSET(mmc0_clk), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* MMC0_CLK */ | |
103 | + {OFFSET(mmc0_cmd), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* MMC0_CMD */ | |
104 | + {OFFSET(mmc0_dat0), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* MMC0_DAT0 */ | |
105 | + {OFFSET(mmc0_dat1), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* MMC0_DAT1 */ | |
106 | + {OFFSET(mmc0_dat2), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* MMC0_DAT2 */ | |
107 | + {OFFSET(mmc0_dat3), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* MMC0_DAT3 */ | |
108 | + {OFFSET(rmii1_refclk), MODE(5) | PULLUP_EN}, /* SDIO_PWREN */ | |
109 | + {-1}, | |
110 | +}; | |
111 | + | |
112 | +/* EMMC */ | |
113 | +static struct module_pin_mux mmc1_pin_mux[] = { | |
114 | + {OFFSET(gpmc_csn1), (MODE(2) | PULLUDDIS | RXACTIVE)}, /* MMC1_CLK */ | |
115 | + {OFFSET(gpmc_csn2), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* MMC1_CMD */ | |
116 | + {OFFSET(gpmc_ad0), (MODE(1) | PULLUP_EN | RXACTIVE)}, /* MMC1_DAT0 */ | |
117 | + {OFFSET(gpmc_ad1), (MODE(1) | PULLUP_EN | RXACTIVE)}, /* MMC1_DAT1 */ | |
118 | + {OFFSET(gpmc_ad2), (MODE(1) | PULLUP_EN | RXACTIVE)}, /* MMC1_DAT2 */ | |
119 | + {OFFSET(gpmc_ad3), (MODE(1) | PULLUP_EN | RXACTIVE)}, /* MMC1_DAT3 */ | |
120 | + {OFFSET(gpmc_ad4), (MODE(1) | PULLUP_EN | RXACTIVE)}, /* MMC1_DAT4 */ | |
121 | + {OFFSET(gpmc_ad5), (MODE(1) | PULLUP_EN | RXACTIVE)}, /* MMC1_DAT5 */ | |
122 | + {OFFSET(gpmc_ad6), (MODE(1) | PULLUP_EN | RXACTIVE)}, /* MMC1_DAT6 */ | |
123 | + {OFFSET(gpmc_ad7), (MODE(1) | PULLUP_EN | RXACTIVE)}, /* MMC1_DAT7 */ | |
124 | + {-1}, | |
125 | +}; | |
126 | + | |
127 | +/* SDMMC */ | |
128 | +static struct module_pin_mux mmc2_pin_mux[] = { | |
129 | + {OFFSET(gpmc_clk), (MODE(3) | PULLUDDIS | RXACTIVE)}, /* MMC2_CLK */ | |
130 | + {OFFSET(gpmc_csn3), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* MMC2_CMD */ | |
131 | + {OFFSET(gpmc_ad12), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* MMC2_DAT0 */ | |
132 | + {OFFSET(gpmc_ad13), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* MMC2_DAT1 */ | |
133 | + {OFFSET(gpmc_ad14), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* MMC2_DAT2 */ | |
134 | + {OFFSET(gpmc_ad15), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* MMC2_DAT3 */ | |
135 | + {OFFSET(gpmc_ad8), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* MMC2_DAT4 */ | |
136 | + {OFFSET(gpmc_ad9), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* MMC2_DAT5 */ | |
137 | + {OFFSET(gpmc_ad10), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* MMC2_DAT6 */ | |
138 | + {OFFSET(gpmc_ad11), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* MMC2_DAT7 */ | |
139 | + {-1}, | |
140 | +}; | |
141 | + | |
142 | +/* I2C_GP */ | |
143 | +static struct module_pin_mux i2c0_pin_mux[] = { | |
144 | + {OFFSET(i2c0_sda), (MODE(0) | PULLUP_EN | RXACTIVE | SLEWCTRL)}, | |
145 | + {OFFSET(i2c0_scl), (MODE(0) | PULLUP_EN | RXACTIVE | SLEWCTRL)}, | |
146 | + {-1}, | |
147 | +}; | |
148 | + | |
149 | +/* I2C_PM */ | |
150 | +static struct module_pin_mux i2c1_pin_mux[] = { | |
151 | + {OFFSET(mii1_crs), (MODE(3) | PULLUP_EN | RXACTIVE | SLEWCTRL)}, | |
152 | + {OFFSET(mii1_rxerr), (MODE(3) | PULLUP_EN | RXACTIVE | SLEWCTRL)}, | |
153 | + {-1}, | |
154 | +}; | |
155 | + | |
156 | +/* I2C_LCD */ | |
157 | +static struct module_pin_mux i2c2_pin_mux[] = { | |
158 | + {OFFSET(cam1_data0), (MODE(3) | PULLUP_EN | RXACTIVE | SLEWCTRL)}, | |
159 | + {OFFSET(cam1_data1), (MODE(3) | PULLUP_EN | RXACTIVE | SLEWCTRL)}, | |
160 | + {-1}, | |
161 | +}; | |
162 | + | |
163 | +/* GPIO */ | |
164 | +static struct module_pin_mux smarc_gpio_pin_mux[] = { | |
165 | + {OFFSET(mii1_col), (MODE(9) | PULLUP_EN | RXACTIVE)}, /* USB0_OC#, mii1_col.gpio0_0*/ | |
166 | + {OFFSET(gpmc_be1n), (MODE(7) | PULLUP_EN | RXACTIVE)}, /* USB1_OC#, gmpc_be1n.gpio1.28 */ | |
167 | + {OFFSET(rmii1_refclk), (MODE(7) | PULLUP_EN)}, /* SDIO_PWREN, rmii1_refclk.gpio0.29 */ | |
168 | +/* By SMARC Spec. GPIO0-5 is recommended for use as outputs. */ | |
169 | + {OFFSET(spi2_cs0), (MODE(9) | PULLUP_EN)}, /* GPIO0, spi2_cs0.gpio0_23 */ | |
170 | + {OFFSET(spi2_d0), (MODE(9) | PULLUP_EN)}, /* GPIO1, spi2_d0_gpio0_20 */ | |
171 | + {OFFSET(spi2_d1), (MODE(9) | PULLUP_EN)}, /* GPIO2, spi2_d1.gpio0_21 */ | |
172 | + {OFFSET(spi2_sclk), (MODE(9) | PULLUP_EN)}, /* GPIO3, spi2_sclk.gpio0_22*/ | |
173 | + {OFFSET(cam0_data5), (MODE(7) | PULLUP_EN)}, /* GPIO4, cam0_data5.gpio4_7 */ | |
174 | + {OFFSET(cam0_data7), (MODE(7) | PULLUP_EN)}, /* GPIO5, cam0_data7.gpio4_29 */ | |
175 | + | |
176 | +/* By SMARC Spec. GPIO6-11 is recommended for use of inputs */ | |
177 | + {OFFSET(mcasp0_ahclkr), (MODE(7) | RXACTIVE)}, /* GPIO6, mcasp0.ahclkr.gpio3_7 */ | |
178 | + {OFFSET(mcasp0_axr0), (MODE(7) | PULLUP_EN | RXACTIVE)}, /* GPIO7, mcasp0.axr0.gpio3_6 */ | |
179 | + {OFFSET(cam0_data2), (MODE(7) | PULLUP_EN | RXACTIVE)}, /* GPIO8, cam0_data2.gpio4_24 */ | |
180 | + {OFFSET(cam0_data3), (MODE(7) | PULLUP_EN | RXACTIVE)}, /* GPIO9, cam0_data3.gpio4_25 */ | |
181 | + {OFFSET(cam0_data4), (MODE(7) | PULLUP_EN | RXACTIVE)}, /* GPIO10, cam0_data4_gpio4_26 */ | |
182 | + {OFFSET(cam0_data6), (MODE(7) | PULLUP_EN | RXACTIVE)}, /* GPIO11, cam0_data6_gpio4_28 */ | |
183 | + {-1}, | |
184 | +}; | |
185 | + | |
186 | +/* DSS LCD */ | |
187 | +static struct module_pin_mux dss_pin_mux[] = { | |
188 | + {OFFSET(lcd_data0), (MODE(0) | PULLUDDIS)}, | |
189 | + {OFFSET(lcd_data1), (MODE(0) | PULLUDDIS)}, | |
190 | + {OFFSET(lcd_data2), (MODE(0) | PULLUDDIS)}, | |
191 | + {OFFSET(lcd_data3), (MODE(0) | PULLUDDIS)}, | |
192 | + {OFFSET(lcd_data4), (MODE(0) | PULLUDDIS)}, | |
193 | + {OFFSET(lcd_data5), (MODE(0) | PULLUDDIS)}, | |
194 | + {OFFSET(lcd_data6), (MODE(0) | PULLUDDIS)}, | |
195 | + {OFFSET(lcd_data7), (MODE(0) | PULLUDDIS)}, | |
196 | + {OFFSET(lcd_data8), (MODE(0) | PULLUDDIS)}, | |
197 | + {OFFSET(lcd_data9), (MODE(0) | PULLUDDIS)}, | |
198 | + {OFFSET(lcd_data10), (MODE(0) | PULLUDDIS)}, | |
199 | + {OFFSET(lcd_data11), (MODE(0) | PULLUDDIS)}, | |
200 | + {OFFSET(lcd_data12), (MODE(0) | PULLUDDIS)}, | |
201 | + {OFFSET(lcd_data13), (MODE(0) | PULLUDDIS)}, | |
202 | + {OFFSET(lcd_data14), (MODE(0) | PULLUDDIS)}, | |
203 | + {OFFSET(lcd_data15), (MODE(0) | PULLUDDIS)}, | |
204 | + /* DSS DATA16~23 */ | |
205 | + {OFFSET(cam1_data9), (MODE(2) | PULLUDDIS)}, | |
206 | + {OFFSET(cam0_data9), (MODE(2) | PULLUDDIS)}, | |
207 | + {OFFSET(cam0_data8), (MODE(2) | PULLUDDIS)}, | |
208 | + {OFFSET(cam0_pclk), (MODE(2) | PULLUDDIS)}, | |
209 | + {OFFSET(cam0_wen), (MODE(2) | PULLUDDIS)}, | |
210 | + {OFFSET(cam0_field), (MODE(2) | PULLUDDIS)}, | |
211 | + {OFFSET(cam0_vd), (MODE(2) | PULLUDDIS)}, | |
212 | + {OFFSET(cam0_hd), (MODE(2) | PULLUDDIS)}, | |
213 | + {OFFSET(lcd_vsync), (MODE(0) | PULLUDEN)}, | |
214 | + {OFFSET(lcd_hsync), (MODE(0) | PULLUDEN)}, | |
215 | + {OFFSET(lcd_pclk), (MODE(0) | PULLUDEN)}, | |
216 | + {OFFSET(lcd_ac_bias_en), (MODE(0) | PULLUDEN)}, | |
217 | + {-1}, | |
218 | + }; | |
219 | + | |
220 | +static struct module_pin_mux gpio5_7_pin_mux[] = { | |
221 | + {OFFSET(spi0_cs0), (MODE(7) | PULLUP_EN)}, /* GPIO5_7 */ | |
222 | + {-1}, | |
223 | +}; | |
224 | + | |
225 | +#ifdef CONFIG_NAND | |
226 | +static struct module_pin_mux nand_pin_mux[] = { | |
227 | + {OFFSET(gpmc_ad0), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD0 */ | |
228 | + {OFFSET(gpmc_ad1), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD1 */ | |
229 | + {OFFSET(gpmc_ad2), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD2 */ | |
230 | + {OFFSET(gpmc_ad3), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD3 */ | |
231 | + {OFFSET(gpmc_ad4), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD4 */ | |
232 | + {OFFSET(gpmc_ad5), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD5 */ | |
233 | + {OFFSET(gpmc_ad6), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD6 */ | |
234 | + {OFFSET(gpmc_ad7), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD7 */ | |
235 | +#ifdef CONFIG_SYS_NAND_BUSWIDTH_16BIT | |
236 | + {OFFSET(gpmc_ad8), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD8 */ | |
237 | + {OFFSET(gpmc_ad9), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD9 */ | |
238 | + {OFFSET(gpmc_ad10), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD10 */ | |
239 | + {OFFSET(gpmc_ad11), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD11 */ | |
240 | + {OFFSET(gpmc_ad12), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD12 */ | |
241 | + {OFFSET(gpmc_ad13), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD13 */ | |
242 | + {OFFSET(gpmc_ad14), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD14 */ | |
243 | + {OFFSET(gpmc_ad15), (MODE(0) | PULLUDDIS | RXACTIVE)}, /* AD15 */ | |
244 | +#endif | |
245 | + {OFFSET(gpmc_wait0), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* Wait */ | |
246 | + {OFFSET(gpmc_wpn), (MODE(7) | PULLUP_EN)}, /* Write Protect */ | |
247 | + {OFFSET(gpmc_csn0), (MODE(0) | PULLUP_EN)}, /* Chip-Select */ | |
248 | + {OFFSET(gpmc_wen), (MODE(0) | PULLDOWN_EN)}, /* Write Enable */ | |
249 | + {OFFSET(gpmc_oen_ren), (MODE(0) | PULLDOWN_EN)}, /* Read Enable */ | |
250 | + {OFFSET(gpmc_advn_ale), (MODE(0) | PULLDOWN_EN)}, /* Addr Latch Enable*/ | |
251 | + {OFFSET(gpmc_be0n_cle), (MODE(0) | PULLDOWN_EN)}, /* Byte Enable */ | |
252 | + {-1}, | |
253 | +}; | |
254 | +#endif | |
255 | + | |
256 | +static __maybe_unused struct module_pin_mux qspi_pin_mux[] = { | |
257 | + {OFFSET(gpmc_csn0), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* QSPI_CS0 */ | |
258 | + {OFFSET(gpmc_csn3), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* QSPI_CLK */ | |
259 | + {OFFSET(gpmc_advn_ale), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* QSPI_D0 */ | |
260 | + {OFFSET(gpmc_oen_ren), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* QSPI_D1 */ | |
261 | + {OFFSET(gpmc_wen), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* QSPI_D2 */ | |
262 | + {OFFSET(gpmc_be0n_cle), (MODE(3) | PULLUP_EN | RXACTIVE)}, /* QSPI_D3 */ | |
263 | + {-1}, | |
264 | +}; | |
265 | + | |
266 | +/* SPI BOOT */ | |
267 | +static struct module_pin_mux spi0_pin_mux[] = { | |
268 | + {OFFSET(spi0_d0), (MODE(0) | RXACTIVE | PULLUDEN)}, | |
269 | + {OFFSET(spi0_d1), (MODE(0) | PULLUDEN)}, | |
270 | + {OFFSET(spi0_cs0), (MODE(0) | PULLUDEN)}, | |
271 | + {OFFSET(spi0_sclk), (MODE(0) | RXACTIVE | PULLUDEN)}, | |
272 | + {-1}, | |
273 | +}; | |
274 | + | |
275 | +/* SPI0 */ | |
276 | +static struct module_pin_mux spi2_pin_mux[] = { | |
277 | + {OFFSET(cam1_hd), (MODE(4) | PULLUP_EN | RXACTIVE)}, /* SPI0_CS0 */ | |
278 | + {OFFSET(cam1_field), (MODE(4) | PULLUP_EN | RXACTIVE)}, /* SPI0_CS1 */ | |
279 | + {OFFSET(cam1_pclk), (MODE(4) | PULLUP_EN | RXACTIVE)}, /* SPI0_CLK */ | |
280 | + {OFFSET(cam1_data8), (MODE(4) | PULLUP_EN | RXACTIVE)}, /* SPI0_D0 */ | |
281 | + {OFFSET(cam1_wen), (MODE(4) | PULLUP_EN | RXACTIVE)}, /* SPI0_D1 */ | |
282 | + {-1}, | |
283 | +}; | |
284 | + | |
285 | +/* SPI1 */ | |
286 | +static struct module_pin_mux spi4_pin_mux[] = { | |
287 | + {OFFSET(spi4_cs0), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* SPI0_CS0 */ | |
288 | + {OFFSET(uart3_ctsn), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* SPI0_CS1 */ | |
289 | + {OFFSET(spi4_sclk), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* SPI0_CLK */ | |
290 | + {OFFSET(spi4_d0), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* SPI0_D0 */ | |
291 | + {OFFSET(spi4_d1), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* SPI0_D1 */ | |
292 | + {-1}, | |
293 | +}; | |
294 | + | |
295 | +/* BOOT_SEL */ | |
296 | +static struct module_pin_mux boot_sel_pin_mux[] = { | |
297 | + {OFFSET(gpio5_8), (MODE(7) | PULLUP_EN | RXACTIVE)}, /* BOOT_SEL0, mii1_col.gpio0_0*/ | |
298 | + {OFFSET(gpio5_9), (MODE(7) | PULLUP_EN | RXACTIVE)}, /* BOOT_SEL1, gmpc_be1n.gpio1.28 */ | |
299 | + {OFFSET(gpio5_10), (MODE(7) | PULLUP_EN | RXACTIVE)}, /* BOOT_SEL2, spi2_cs0.gpio0_23 */ | |
300 | + {-1}, | |
301 | +}; | |
302 | + | |
303 | +void enable_uart0_pin_mux(void) | |
304 | +{ | |
305 | + configure_module_pin_mux(uart0_pin_mux); | |
306 | +} | |
307 | + | |
308 | +void enable_uart2_pin_mux(void) | |
309 | +{ | |
310 | + configure_module_pin_mux(uart2_pin_mux); | |
311 | +} | |
312 | + | |
313 | +void enable_uart3_pin_mux(void) | |
314 | +{ | |
315 | + configure_module_pin_mux(uart3_pin_mux); | |
316 | +} | |
317 | + | |
318 | +void enable_uart4_pin_mux(void) | |
319 | +{ | |
320 | + configure_module_pin_mux(uart4_pin_mux); | |
321 | +} | |
322 | + | |
323 | +void enable_board_pin_mux(void) | |
324 | +{ | |
325 | + configure_module_pin_mux(i2c1_pin_mux); | |
326 | + configure_module_pin_mux(spi0_pin_mux); | |
327 | + configure_module_pin_mux(mmc0_pin_mux); | |
328 | + if (board_is_gpevm()) { | |
329 | + configure_module_pin_mux(gpio5_7_pin_mux); | |
330 | + configure_module_pin_mux(rgmii1_pin_mux); | |
331 | +#if defined(CONFIG_NAND) | |
332 | + configure_module_pin_mux(nand_pin_mux); | |
333 | +#endif | |
334 | + } else if (board_is_sk() || board_is_idk()) { | |
335 | + configure_module_pin_mux(rgmii1_pin_mux); | |
336 | +#if defined(CONFIG_NAND) | |
337 | + printf("Error: NAND flash not present on this board\n"); | |
338 | +#endif | |
339 | + configure_module_pin_mux(qspi_pin_mux); | |
340 | + } else if (board_is_smarc_t437x_800() || board_is_smarc_t437x_01g()) { | |
341 | + configure_module_pin_mux(mmc1_pin_mux); | |
342 | + configure_module_pin_mux(i2c0_pin_mux); | |
343 | + configure_module_pin_mux(mdio_pin_mux); | |
344 | + configure_module_pin_mux(spi2_pin_mux); | |
345 | + configure_module_pin_mux(spi4_pin_mux); | |
346 | + configure_module_pin_mux(rgmii1_pin_mux); | |
347 | + configure_module_pin_mux(rgmii2_pin_mux); | |
348 | + configure_module_pin_mux(mmc2_pin_mux); | |
349 | + configure_module_pin_mux(i2c2_pin_mux); | |
350 | + configure_module_pin_mux(smarc_gpio_pin_mux); | |
351 | + configure_module_pin_mux(dss_pin_mux); | |
352 | + configure_module_pin_mux(boot_sel_pin_mux); | |
353 | + } else if (board_is_eposevm()) { | |
354 | + configure_module_pin_mux(rmii1_pin_mux); | |
355 | +#if defined(CONFIG_NAND) | |
356 | + configure_module_pin_mux(nand_pin_mux); | |
357 | +#else | |
358 | + configure_module_pin_mux(qspi_pin_mux); | |
359 | +#endif | |
360 | + } else { | |
361 | + configure_module_pin_mux(mmc1_pin_mux); | |
362 | + configure_module_pin_mux(mdio_pin_mux); | |
363 | + configure_module_pin_mux(rgmii1_pin_mux); | |
364 | + configure_module_pin_mux(boot_sel_pin_mux); | |
365 | + /* Unknown board. We might still be able to boot. */ | |
366 | + puts("Bad EEPROM or unknown board, cannot configure pinmux."); | |
367 | + } | |
368 | +} | |
369 | + | |
370 | +void enable_i2c1_pin_mux(void) | |
371 | +{ | |
372 | + configure_module_pin_mux(i2c1_pin_mux); | |
373 | +} |
common/Kconfig
configs/smarct437x_evm_spi_uart0_defconfig
1 | +CONFIG_ARM=y | |
2 | +CONFIG_AM43XX=y | |
3 | +CONFIG_SYS_MALLOC_F_LEN=0x2000 | |
4 | +CONFIG_TARGET_SMARCT437X_EVM=y | |
5 | +CONFIG_SYS_PROMPT="U-Boot# " | |
6 | +CONFIG_SPL_STACK_R_ADDR=0x82000000 | |
7 | +CONFIG_SPL_YMODEM_SUPPORT=y | |
8 | +CONFIG_SPL=y | |
9 | +CONFIG_SPL_STACK_R=y | |
10 | +CONFIG_SPL_SEPARATE_BSS=y | |
11 | +CONFIG_SPL_RTC_ONLY_SUPPORT=y | |
12 | +CONFIG_DEFAULT_DEVICE_TREE="am437x-smarct437x" | |
13 | +CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=1,SPI_BOOT" | |
14 | +#CONFIG_QSPI_BOOT=y | |
15 | +CONFIG_SYS_CONSOLE_INFO_QUIET=y | |
16 | +CONFIG_VERSION_VARIABLE=y | |
17 | +CONFIG_HUSH_PARSER=y | |
18 | +CONFIG_CMD_BOOTZ=y | |
19 | +# CONFIG_CMD_IMLS is not set | |
20 | +CONFIG_CMD_ASKENV=y | |
21 | +# CONFIG_CMD_FLASH is not set | |
22 | +CONFIG_CMD_MMC=y | |
23 | +CONFIG_CMD_SF=y | |
24 | +CONFIG_CMD_SPI=y | |
25 | +CONFIG_CMD_I2C=y | |
26 | +CONFIG_CMD_USB=y | |
27 | +CONFIG_CMD_DFU=y | |
28 | +CONFIG_CMD_GPIO=y | |
29 | +# CONFIG_CMD_SETEXPR is not set | |
30 | +CONFIG_CMD_DHCP=y | |
31 | +CONFIG_CMD_MII=y | |
32 | +CONFIG_CMD_PING=y | |
33 | +CONFIG_CMD_EXT2=y | |
34 | +CONFIG_CMD_EXT4=y | |
35 | +CONFIG_CMD_EXT4_WRITE=y | |
36 | +CONFIG_CMD_FAT=y | |
37 | +CONFIG_CMD_FS_GENERIC=y | |
38 | +CONFIG_OF_CONTROL=y | |
39 | +CONFIG_DM=y | |
40 | +CONFIG_SPL_DM=y | |
41 | +CONFIG_SPL_DM_SEQ_ALIAS=y | |
42 | +CONFIG_SPL_OF_TRANSLATE=y | |
43 | +CONFIG_DFU_MMC=y | |
44 | +CONFIG_DFU_RAM=y | |
45 | +CONFIG_DFU_SF=y | |
46 | +CONFIG_SPI_FLASH=y | |
47 | +CONFIG_SPI_FLASH_BAR=y | |
48 | +CONFIG_SPI_FLASH_MACRONIX=y | |
49 | +CONFIG_SYS_NS16550=y | |
50 | +CONFIG_USB=y | |
51 | +CONFIG_USB_XHCI_HCD=y | |
52 | +CONFIG_USB_XHCI_DWC3=y | |
53 | +CONFIG_USB_DWC3=y | |
54 | +CONFIG_USB_DWC3_GADGET=y | |
55 | +CONFIG_USB_DWC3_OMAP=y | |
56 | +CONFIG_USB_DWC3_PHY_OMAP=y | |
57 | +CONFIG_USB_STORAGE=y | |
58 | +CONFIG_USB_GADGET=y | |
59 | +CONFIG_USB_GADGET_DOWNLOAD=y | |
60 | +CONFIG_G_DNL_MANUFACTURER="Texas Instruments" | |
61 | +CONFIG_G_DNL_VENDOR_NUM=0x0403 | |
62 | +CONFIG_G_DNL_PRODUCT_NUM=0xbd00 | |
63 | +CONFIG_OF_LIBFDT=y | |
64 | +CONFIG_TIMER=y | |
65 | +CONFIG_OMAP_TIMER=y |
configs/smarct437x_evm_spi_uart1_defconfig
1 | +CONFIG_ARM=y | |
2 | +CONFIG_AM43XX=y | |
3 | +CONFIG_SYS_MALLOC_F_LEN=0x2000 | |
4 | +CONFIG_TARGET_SMARCT437X_EVM=y | |
5 | +CONFIG_SYS_PROMPT="U-Boot# " | |
6 | +CONFIG_SPL_STACK_R_ADDR=0x82000000 | |
7 | +CONFIG_SPL_YMODEM_SUPPORT=y | |
8 | +CONFIG_SPL=y | |
9 | +CONFIG_SPL_STACK_R=y | |
10 | +CONFIG_SPL_SEPARATE_BSS=y | |
11 | +CONFIG_SPL_RTC_ONLY_SUPPORT=y | |
12 | +CONFIG_DEFAULT_DEVICE_TREE="am437x-smarct437x" | |
13 | +CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=4,SPI_BOOT" | |
14 | +#CONFIG_QSPI_BOOT=y | |
15 | +CONFIG_SYS_CONSOLE_INFO_QUIET=y | |
16 | +CONFIG_VERSION_VARIABLE=y | |
17 | +CONFIG_HUSH_PARSER=y | |
18 | +CONFIG_CMD_BOOTZ=y | |
19 | +# CONFIG_CMD_IMLS is not set | |
20 | +CONFIG_CMD_ASKENV=y | |
21 | +# CONFIG_CMD_FLASH is not set | |
22 | +CONFIG_CMD_MMC=y | |
23 | +CONFIG_CMD_SF=y | |
24 | +CONFIG_CMD_SPI=y | |
25 | +CONFIG_CMD_I2C=y | |
26 | +CONFIG_CMD_USB=y | |
27 | +CONFIG_CMD_DFU=y | |
28 | +CONFIG_CMD_GPIO=y | |
29 | +# CONFIG_CMD_SETEXPR is not set | |
30 | +CONFIG_CMD_DHCP=y | |
31 | +CONFIG_CMD_MII=y | |
32 | +CONFIG_CMD_PING=y | |
33 | +CONFIG_CMD_EXT2=y | |
34 | +CONFIG_CMD_EXT4=y | |
35 | +CONFIG_CMD_EXT4_WRITE=y | |
36 | +CONFIG_CMD_FAT=y | |
37 | +CONFIG_CMD_FS_GENERIC=y | |
38 | +CONFIG_OF_CONTROL=y | |
39 | +CONFIG_DM=y | |
40 | +CONFIG_SPL_DM=y | |
41 | +CONFIG_SPL_DM_SEQ_ALIAS=y | |
42 | +CONFIG_SPL_OF_TRANSLATE=y | |
43 | +CONFIG_DFU_MMC=y | |
44 | +CONFIG_DFU_RAM=y | |
45 | +CONFIG_DFU_SF=y | |
46 | +CONFIG_SPI_FLASH=y | |
47 | +CONFIG_SPI_FLASH_BAR=y | |
48 | +CONFIG_SPI_FLASH_MACRONIX=y | |
49 | +CONFIG_SYS_NS16550=y | |
50 | +CONFIG_USB=y | |
51 | +CONFIG_USB_XHCI_HCD=y | |
52 | +CONFIG_USB_XHCI_DWC3=y | |
53 | +CONFIG_USB_DWC3=y | |
54 | +CONFIG_USB_DWC3_GADGET=y | |
55 | +CONFIG_USB_DWC3_OMAP=y | |
56 | +CONFIG_USB_DWC3_PHY_OMAP=y | |
57 | +CONFIG_USB_STORAGE=y | |
58 | +CONFIG_USB_GADGET=y | |
59 | +CONFIG_USB_GADGET_DOWNLOAD=y | |
60 | +CONFIG_G_DNL_MANUFACTURER="Texas Instruments" | |
61 | +CONFIG_G_DNL_VENDOR_NUM=0x0403 | |
62 | +CONFIG_G_DNL_PRODUCT_NUM=0xbd00 | |
63 | +CONFIG_OF_LIBFDT=y | |
64 | +CONFIG_TIMER=y | |
65 | +CONFIG_OMAP_TIMER=y |
configs/smarct437x_evm_spi_uart2_defconfig
1 | +CONFIG_ARM=y | |
2 | +CONFIG_AM43XX=y | |
3 | +CONFIG_SYS_MALLOC_F_LEN=0x2000 | |
4 | +CONFIG_TARGET_SMARCT437X_EVM=y | |
5 | +CONFIG_SYS_PROMPT="U-Boot# " | |
6 | +CONFIG_SPL_STACK_R_ADDR=0x82000000 | |
7 | +CONFIG_SPL_YMODEM_SUPPORT=y | |
8 | +CONFIG_SPL=y | |
9 | +CONFIG_SPL_STACK_R=y | |
10 | +CONFIG_SPL_SEPARATE_BSS=y | |
11 | +CONFIG_SPL_RTC_ONLY_SUPPORT=y | |
12 | +CONFIG_DEFAULT_DEVICE_TREE="am437x-smarct437x" | |
13 | +CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=3,SPI_BOOT" | |
14 | +#CONFIG_QSPI_BOOT=y | |
15 | +CONFIG_SYS_CONSOLE_INFO_QUIET=y | |
16 | +CONFIG_VERSION_VARIABLE=y | |
17 | +CONFIG_HUSH_PARSER=y | |
18 | +CONFIG_CMD_BOOTZ=y | |
19 | +# CONFIG_CMD_IMLS is not set | |
20 | +CONFIG_CMD_ASKENV=y | |
21 | +# CONFIG_CMD_FLASH is not set | |
22 | +CONFIG_CMD_MMC=y | |
23 | +CONFIG_CMD_SF=y | |
24 | +CONFIG_CMD_SPI=y | |
25 | +CONFIG_CMD_I2C=y | |
26 | +CONFIG_CMD_USB=y | |
27 | +CONFIG_CMD_DFU=y | |
28 | +CONFIG_CMD_GPIO=y | |
29 | +# CONFIG_CMD_SETEXPR is not set | |
30 | +CONFIG_CMD_DHCP=y | |
31 | +CONFIG_CMD_MII=y | |
32 | +CONFIG_CMD_PING=y | |
33 | +CONFIG_CMD_EXT2=y | |
34 | +CONFIG_CMD_EXT4=y | |
35 | +CONFIG_CMD_EXT4_WRITE=y | |
36 | +CONFIG_CMD_FAT=y | |
37 | +CONFIG_CMD_FS_GENERIC=y | |
38 | +CONFIG_OF_CONTROL=y | |
39 | +CONFIG_DM=y | |
40 | +CONFIG_SPL_DM=y | |
41 | +CONFIG_SPL_DM_SEQ_ALIAS=y | |
42 | +CONFIG_SPL_OF_TRANSLATE=y | |
43 | +CONFIG_DFU_MMC=y | |
44 | +CONFIG_DFU_RAM=y | |
45 | +CONFIG_DFU_SF=y | |
46 | +CONFIG_SPI_FLASH=y | |
47 | +CONFIG_SPI_FLASH_BAR=y | |
48 | +CONFIG_SPI_FLASH_MACRONIX=y | |
49 | +CONFIG_SYS_NS16550=y | |
50 | +CONFIG_USB=y | |
51 | +CONFIG_USB_XHCI_HCD=y | |
52 | +CONFIG_USB_XHCI_DWC3=y | |
53 | +CONFIG_USB_DWC3=y | |
54 | +CONFIG_USB_DWC3_GADGET=y | |
55 | +CONFIG_USB_DWC3_OMAP=y | |
56 | +CONFIG_USB_DWC3_PHY_OMAP=y | |
57 | +CONFIG_USB_STORAGE=y | |
58 | +CONFIG_USB_GADGET=y | |
59 | +CONFIG_USB_GADGET_DOWNLOAD=y | |
60 | +CONFIG_G_DNL_MANUFACTURER="Texas Instruments" | |
61 | +CONFIG_G_DNL_VENDOR_NUM=0x0403 | |
62 | +CONFIG_G_DNL_PRODUCT_NUM=0xbd00 | |
63 | +CONFIG_OF_LIBFDT=y | |
64 | +CONFIG_TIMER=y | |
65 | +CONFIG_OMAP_TIMER=y |
configs/smarct437x_evm_spi_uart3_defconfig
1 | +CONFIG_ARM=y | |
2 | +CONFIG_AM43XX=y | |
3 | +CONFIG_SYS_MALLOC_F_LEN=0x2000 | |
4 | +CONFIG_TARGET_SMARCT437X_EVM=y | |
5 | +CONFIG_SYS_PROMPT="U-Boot# " | |
6 | +CONFIG_SPL_STACK_R_ADDR=0x82000000 | |
7 | +CONFIG_SPL_YMODEM_SUPPORT=y | |
8 | +CONFIG_SPL=y | |
9 | +CONFIG_SPL_STACK_R=y | |
10 | +CONFIG_SPL_SEPARATE_BSS=y | |
11 | +CONFIG_SPL_RTC_ONLY_SUPPORT=y | |
12 | +CONFIG_DEFAULT_DEVICE_TREE="am437x-smarct437x" | |
13 | +CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=5,SPI_BOOT" | |
14 | +#CONFIG_QSPI_BOOT=y | |
15 | +CONFIG_SYS_CONSOLE_INFO_QUIET=y | |
16 | +CONFIG_VERSION_VARIABLE=y | |
17 | +CONFIG_HUSH_PARSER=y | |
18 | +CONFIG_CMD_BOOTZ=y | |
19 | +# CONFIG_CMD_IMLS is not set | |
20 | +CONFIG_CMD_ASKENV=y | |
21 | +# CONFIG_CMD_FLASH is not set | |
22 | +CONFIG_CMD_MMC=y | |
23 | +CONFIG_CMD_SF=y | |
24 | +CONFIG_CMD_SPI=y | |
25 | +CONFIG_CMD_I2C=y | |
26 | +CONFIG_CMD_USB=y | |
27 | +CONFIG_CMD_DFU=y | |
28 | +CONFIG_CMD_GPIO=y | |
29 | +# CONFIG_CMD_SETEXPR is not set | |
30 | +CONFIG_CMD_DHCP=y | |
31 | +CONFIG_CMD_MII=y | |
32 | +CONFIG_CMD_PING=y | |
33 | +CONFIG_CMD_EXT2=y | |
34 | +CONFIG_CMD_EXT4=y | |
35 | +CONFIG_CMD_EXT4_WRITE=y | |
36 | +CONFIG_CMD_FAT=y | |
37 | +CONFIG_CMD_FS_GENERIC=y | |
38 | +CONFIG_OF_CONTROL=y | |
39 | +CONFIG_DM=y | |
40 | +CONFIG_SPL_DM=y | |
41 | +CONFIG_SPL_DM_SEQ_ALIAS=y | |
42 | +CONFIG_SPL_OF_TRANSLATE=y | |
43 | +CONFIG_DFU_MMC=y | |
44 | +CONFIG_DFU_RAM=y | |
45 | +CONFIG_DFU_SF=y | |
46 | +CONFIG_SPI_FLASH=y | |
47 | +CONFIG_SPI_FLASH_BAR=y | |
48 | +CONFIG_SPI_FLASH_MACRONIX=y | |
49 | +CONFIG_SYS_NS16550=y | |
50 | +CONFIG_USB=y | |
51 | +CONFIG_USB_XHCI_HCD=y | |
52 | +CONFIG_USB_XHCI_DWC3=y | |
53 | +CONFIG_USB_DWC3=y | |
54 | +CONFIG_USB_DWC3_GADGET=y | |
55 | +CONFIG_USB_DWC3_OMAP=y | |
56 | +CONFIG_USB_DWC3_PHY_OMAP=y | |
57 | +CONFIG_USB_STORAGE=y | |
58 | +CONFIG_USB_GADGET=y | |
59 | +CONFIG_USB_GADGET_DOWNLOAD=y | |
60 | +CONFIG_G_DNL_MANUFACTURER="Texas Instruments" | |
61 | +CONFIG_G_DNL_VENDOR_NUM=0x0403 | |
62 | +CONFIG_G_DNL_PRODUCT_NUM=0xbd00 | |
63 | +CONFIG_OF_LIBFDT=y | |
64 | +CONFIG_TIMER=y | |
65 | +CONFIG_OMAP_TIMER=y |
configs/smarct437x_evm_uart0_defconfig
1 | +CONFIG_ARM=y | |
2 | +CONFIG_AM43XX=y | |
3 | +CONFIG_SYS_MALLOC_F_LEN=0x2000 | |
4 | +CONFIG_TARGET_SMARCT437X_EVM=y | |
5 | +CONFIG_SYS_PROMPT="U-Boot# " | |
6 | +CONFIG_SPL_STACK_R_ADDR=0x82000000 | |
7 | +CONFIG_SPL_YMODEM_SUPPORT=y | |
8 | +CONFIG_SPL=y | |
9 | +CONFIG_SPL_STACK_R=y | |
10 | +CONFIG_SPL_SEPARATE_BSS=y | |
11 | +CONFIG_SPL_RTC_ONLY_SUPPORT=y | |
12 | +CONFIG_DEFAULT_DEVICE_TREE="am437x-smarct437x" | |
13 | +CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=1,EMMC_BOOT" | |
14 | +#CONFIG_QSPI_BOOT=y | |
15 | +CONFIG_SYS_CONSOLE_INFO_QUIET=y | |
16 | +CONFIG_VERSION_VARIABLE=y | |
17 | +CONFIG_HUSH_PARSER=y | |
18 | +CONFIG_CMD_BOOTZ=y | |
19 | +# CONFIG_CMD_IMLS is not set | |
20 | +CONFIG_CMD_ASKENV=y | |
21 | +# CONFIG_CMD_FLASH is not set | |
22 | +CONFIG_CMD_MMC=y | |
23 | +CONFIG_CMD_SF=y | |
24 | +CONFIG_CMD_SPI=y | |
25 | +CONFIG_CMD_I2C=y | |
26 | +CONFIG_CMD_USB=y | |
27 | +CONFIG_CMD_DFU=y | |
28 | +CONFIG_CMD_GPIO=y | |
29 | +# CONFIG_CMD_SETEXPR is not set | |
30 | +CONFIG_CMD_DHCP=y | |
31 | +CONFIG_CMD_MII=y | |
32 | +CONFIG_CMD_PING=y | |
33 | +CONFIG_CMD_EXT2=y | |
34 | +CONFIG_CMD_EXT4=y | |
35 | +CONFIG_CMD_EXT4_WRITE=y | |
36 | +CONFIG_CMD_FAT=y | |
37 | +CONFIG_CMD_FS_GENERIC=y | |
38 | +CONFIG_OF_CONTROL=y | |
39 | +CONFIG_DM=y | |
40 | +CONFIG_SPL_DM=y | |
41 | +CONFIG_SPL_DM_SEQ_ALIAS=y | |
42 | +CONFIG_SPL_OF_TRANSLATE=y | |
43 | +CONFIG_DFU_MMC=y | |
44 | +CONFIG_DFU_RAM=y | |
45 | +CONFIG_DFU_SF=y | |
46 | +CONFIG_SPI_FLASH=y | |
47 | +CONFIG_SPI_FLASH_BAR=y | |
48 | +CONFIG_SPI_FLASH_MACRONIX=y | |
49 | +CONFIG_SYS_NS16550=y | |
50 | +CONFIG_USB=y | |
51 | +CONFIG_USB_XHCI_HCD=y | |
52 | +CONFIG_USB_XHCI_DWC3=y | |
53 | +CONFIG_USB_DWC3=y | |
54 | +CONFIG_USB_DWC3_GADGET=y | |
55 | +CONFIG_USB_DWC3_OMAP=y | |
56 | +CONFIG_USB_DWC3_PHY_OMAP=y | |
57 | +CONFIG_USB_STORAGE=y | |
58 | +CONFIG_USB_GADGET=y | |
59 | +CONFIG_USB_GADGET_DOWNLOAD=y | |
60 | +CONFIG_G_DNL_MANUFACTURER="Texas Instruments" | |
61 | +CONFIG_G_DNL_VENDOR_NUM=0x0403 | |
62 | +CONFIG_G_DNL_PRODUCT_NUM=0xbd00 | |
63 | +CONFIG_OF_LIBFDT=y | |
64 | +CONFIG_TIMER=y | |
65 | +CONFIG_OMAP_TIMER=y |
configs/smarct437x_evm_uart1_defconfig
1 | +CONFIG_ARM=y | |
2 | +CONFIG_AM43XX=y | |
3 | +CONFIG_SYS_MALLOC_F_LEN=0x2000 | |
4 | +CONFIG_TARGET_SMARCT437X_EVM=y | |
5 | +CONFIG_SYS_PROMPT="U-Boot# " | |
6 | +CONFIG_SPL_STACK_R_ADDR=0x82000000 | |
7 | +CONFIG_SPL_YMODEM_SUPPORT=y | |
8 | +CONFIG_SPL=y | |
9 | +CONFIG_SPL_STACK_R=y | |
10 | +CONFIG_SPL_SEPARATE_BSS=y | |
11 | +CONFIG_SPL_RTC_ONLY_SUPPORT=y | |
12 | +CONFIG_DEFAULT_DEVICE_TREE="am437x-smarct437x" | |
13 | +CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=4,EMMC_BOOT" | |
14 | +#CONFIG_QSPI_BOOT=y | |
15 | +CONFIG_SYS_CONSOLE_INFO_QUIET=y | |
16 | +CONFIG_VERSION_VARIABLE=y | |
17 | +CONFIG_HUSH_PARSER=y | |
18 | +CONFIG_CMD_BOOTZ=y | |
19 | +# CONFIG_CMD_IMLS is not set | |
20 | +CONFIG_CMD_ASKENV=y | |
21 | +# CONFIG_CMD_FLASH is not set | |
22 | +CONFIG_CMD_MMC=y | |
23 | +CONFIG_CMD_SF=y | |
24 | +CONFIG_CMD_SPI=y | |
25 | +CONFIG_CMD_I2C=y | |
26 | +CONFIG_CMD_USB=y | |
27 | +CONFIG_CMD_DFU=y | |
28 | +CONFIG_CMD_GPIO=y | |
29 | +# CONFIG_CMD_SETEXPR is not set | |
30 | +CONFIG_CMD_DHCP=y | |
31 | +CONFIG_CMD_MII=y | |
32 | +CONFIG_CMD_PING=y | |
33 | +CONFIG_CMD_EXT2=y | |
34 | +CONFIG_CMD_EXT4=y | |
35 | +CONFIG_CMD_EXT4_WRITE=y | |
36 | +CONFIG_CMD_FAT=y | |
37 | +CONFIG_CMD_FS_GENERIC=y | |
38 | +CONFIG_OF_CONTROL=y | |
39 | +CONFIG_DM=y | |
40 | +CONFIG_SPL_DM=y | |
41 | +CONFIG_SPL_DM_SEQ_ALIAS=y | |
42 | +CONFIG_SPL_OF_TRANSLATE=y | |
43 | +CONFIG_DFU_MMC=y | |
44 | +CONFIG_DFU_RAM=y | |
45 | +CONFIG_DFU_SF=y | |
46 | +CONFIG_SPI_FLASH=y | |
47 | +CONFIG_SPI_FLASH_BAR=y | |
48 | +CONFIG_SPI_FLASH_MACRONIX=y | |
49 | +CONFIG_SYS_NS16550=y | |
50 | +CONFIG_USB=y | |
51 | +CONFIG_USB_XHCI_HCD=y | |
52 | +CONFIG_USB_XHCI_DWC3=y | |
53 | +CONFIG_USB_DWC3=y | |
54 | +CONFIG_USB_DWC3_GADGET=y | |
55 | +CONFIG_USB_DWC3_OMAP=y | |
56 | +CONFIG_USB_DWC3_PHY_OMAP=y | |
57 | +CONFIG_USB_STORAGE=y | |
58 | +CONFIG_USB_GADGET=y | |
59 | +CONFIG_USB_GADGET_DOWNLOAD=y | |
60 | +CONFIG_G_DNL_MANUFACTURER="Texas Instruments" | |
61 | +CONFIG_G_DNL_VENDOR_NUM=0x0403 | |
62 | +CONFIG_G_DNL_PRODUCT_NUM=0xbd00 | |
63 | +CONFIG_OF_LIBFDT=y | |
64 | +CONFIG_TIMER=y | |
65 | +CONFIG_OMAP_TIMER=y |
configs/smarct437x_evm_uart2_defconfig
1 | +CONFIG_ARM=y | |
2 | +CONFIG_AM43XX=y | |
3 | +CONFIG_SYS_MALLOC_F_LEN=0x2000 | |
4 | +CONFIG_TARGET_SMARCT437X_EVM=y | |
5 | +CONFIG_SYS_PROMPT="U-Boot# " | |
6 | +CONFIG_SPL_STACK_R_ADDR=0x82000000 | |
7 | +CONFIG_SPL_YMODEM_SUPPORT=y | |
8 | +CONFIG_SPL=y | |
9 | +CONFIG_SPL_STACK_R=y | |
10 | +CONFIG_SPL_SEPARATE_BSS=y | |
11 | +CONFIG_SPL_RTC_ONLY_SUPPORT=y | |
12 | +CONFIG_DEFAULT_DEVICE_TREE="am437x-smarct437x" | |
13 | +CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=3,EMMC_BOOT" | |
14 | +#CONFIG_QSPI_BOOT=y | |
15 | +CONFIG_SYS_CONSOLE_INFO_QUIET=y | |
16 | +CONFIG_VERSION_VARIABLE=y | |
17 | +CONFIG_HUSH_PARSER=y | |
18 | +CONFIG_CMD_BOOTZ=y | |
19 | +# CONFIG_CMD_IMLS is not set | |
20 | +CONFIG_CMD_ASKENV=y | |
21 | +# CONFIG_CMD_FLASH is not set | |
22 | +CONFIG_CMD_MMC=y | |
23 | +CONFIG_CMD_SF=y | |
24 | +CONFIG_CMD_SPI=y | |
25 | +CONFIG_CMD_I2C=y | |
26 | +CONFIG_CMD_USB=y | |
27 | +CONFIG_CMD_DFU=y | |
28 | +CONFIG_CMD_GPIO=y | |
29 | +# CONFIG_CMD_SETEXPR is not set | |
30 | +CONFIG_CMD_DHCP=y | |
31 | +CONFIG_CMD_MII=y | |
32 | +CONFIG_CMD_PING=y | |
33 | +CONFIG_CMD_EXT2=y | |
34 | +CONFIG_CMD_EXT4=y | |
35 | +CONFIG_CMD_EXT4_WRITE=y | |
36 | +CONFIG_CMD_FAT=y | |
37 | +CONFIG_CMD_FS_GENERIC=y | |
38 | +CONFIG_OF_CONTROL=y | |
39 | +CONFIG_DM=y | |
40 | +CONFIG_SPL_DM=y | |
41 | +CONFIG_SPL_DM_SEQ_ALIAS=y | |
42 | +CONFIG_SPL_OF_TRANSLATE=y | |
43 | +CONFIG_DFU_MMC=y | |
44 | +CONFIG_DFU_RAM=y | |
45 | +CONFIG_DFU_SF=y | |
46 | +CONFIG_SPI_FLASH=y | |
47 | +CONFIG_SPI_FLASH_BAR=y | |
48 | +CONFIG_SPI_FLASH_MACRONIX=y | |
49 | +CONFIG_SYS_NS16550=y | |
50 | +CONFIG_USB=y | |
51 | +CONFIG_USB_XHCI_HCD=y | |
52 | +CONFIG_USB_XHCI_DWC3=y | |
53 | +CONFIG_USB_DWC3=y | |
54 | +CONFIG_USB_DWC3_GADGET=y | |
55 | +CONFIG_USB_DWC3_OMAP=y | |
56 | +CONFIG_USB_DWC3_PHY_OMAP=y | |
57 | +CONFIG_USB_STORAGE=y | |
58 | +CONFIG_USB_GADGET=y | |
59 | +CONFIG_USB_GADGET_DOWNLOAD=y | |
60 | +CONFIG_G_DNL_MANUFACTURER="Texas Instruments" | |
61 | +CONFIG_G_DNL_VENDOR_NUM=0x0403 | |
62 | +CONFIG_G_DNL_PRODUCT_NUM=0xbd00 | |
63 | +CONFIG_OF_LIBFDT=y | |
64 | +CONFIG_TIMER=y | |
65 | +CONFIG_OMAP_TIMER=y |
configs/smarct437x_evm_uart3_defconfig
1 | +CONFIG_ARM=y | |
2 | +CONFIG_AM43XX=y | |
3 | +CONFIG_SYS_MALLOC_F_LEN=0x2000 | |
4 | +CONFIG_TARGET_SMARCT437X_EVM=y | |
5 | +CONFIG_SYS_PROMPT="U-Boot# " | |
6 | +CONFIG_SPL_STACK_R_ADDR=0x82000000 | |
7 | +CONFIG_SPL_YMODEM_SUPPORT=y | |
8 | +CONFIG_SPL=y | |
9 | +CONFIG_SPL_STACK_R=y | |
10 | +CONFIG_SPL_SEPARATE_BSS=y | |
11 | +CONFIG_SPL_RTC_ONLY_SUPPORT=y | |
12 | +CONFIG_DEFAULT_DEVICE_TREE="am437x-smarct437x" | |
13 | +CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=5,EMMC_BOOT" | |
14 | +#CONFIG_QSPI_BOOT=y | |
15 | +CONFIG_SYS_CONSOLE_INFO_QUIET=y | |
16 | +CONFIG_VERSION_VARIABLE=y | |
17 | +CONFIG_HUSH_PARSER=y | |
18 | +CONFIG_CMD_BOOTZ=y | |
19 | +# CONFIG_CMD_IMLS is not set | |
20 | +CONFIG_CMD_ASKENV=y | |
21 | +# CONFIG_CMD_FLASH is not set | |
22 | +CONFIG_CMD_MMC=y | |
23 | +CONFIG_CMD_SF=y | |
24 | +CONFIG_CMD_SPI=y | |
25 | +CONFIG_CMD_I2C=y | |
26 | +CONFIG_CMD_USB=y | |
27 | +CONFIG_CMD_DFU=y | |
28 | +CONFIG_CMD_GPIO=y | |
29 | +# CONFIG_CMD_SETEXPR is not set | |
30 | +CONFIG_CMD_DHCP=y | |
31 | +CONFIG_CMD_MII=y | |
32 | +CONFIG_CMD_PING=y | |
33 | +CONFIG_CMD_EXT2=y | |
34 | +CONFIG_CMD_EXT4=y | |
35 | +CONFIG_CMD_EXT4_WRITE=y | |
36 | +CONFIG_CMD_FAT=y | |
37 | +CONFIG_CMD_FS_GENERIC=y | |
38 | +CONFIG_OF_CONTROL=y | |
39 | +CONFIG_DM=y | |
40 | +CONFIG_SPL_DM=y | |
41 | +CONFIG_SPL_DM_SEQ_ALIAS=y | |
42 | +CONFIG_SPL_OF_TRANSLATE=y | |
43 | +CONFIG_DFU_MMC=y | |
44 | +CONFIG_DFU_RAM=y | |
45 | +CONFIG_DFU_SF=y | |
46 | +CONFIG_SPI_FLASH=y | |
47 | +CONFIG_SPI_FLASH_BAR=y | |
48 | +CONFIG_SPI_FLASH_MACRONIX=y | |
49 | +CONFIG_SYS_NS16550=y | |
50 | +CONFIG_USB=y | |
51 | +CONFIG_USB_XHCI_HCD=y | |
52 | +CONFIG_USB_XHCI_DWC3=y | |
53 | +CONFIG_USB_DWC3=y | |
54 | +CONFIG_USB_DWC3_GADGET=y | |
55 | +CONFIG_USB_DWC3_OMAP=y | |
56 | +CONFIG_USB_DWC3_PHY_OMAP=y | |
57 | +CONFIG_USB_STORAGE=y | |
58 | +CONFIG_USB_GADGET=y | |
59 | +CONFIG_USB_GADGET_DOWNLOAD=y | |
60 | +CONFIG_G_DNL_MANUFACTURER="Texas Instruments" | |
61 | +CONFIG_G_DNL_VENDOR_NUM=0x0403 | |
62 | +CONFIG_G_DNL_PRODUCT_NUM=0xbd00 | |
63 | +CONFIG_OF_LIBFDT=y | |
64 | +CONFIG_TIMER=y | |
65 | +CONFIG_OMAP_TIMER=y |
drivers/mtd/spi/spi_flash_ids.c
... | ... | @@ -76,6 +76,7 @@ |
76 | 76 | {"mx25l4005", INFO(0xc22013, 0x0, 64 * 1024, 8, 0) }, |
77 | 77 | {"mx25l8005", INFO(0xc22014, 0x0, 64 * 1024, 16, 0) }, |
78 | 78 | {"mx25l1605d", INFO(0xc22015, 0x0, 64 * 1024, 32, 0) }, |
79 | + {"mx25u3235f", INFO(0xc22536, 0x0, 64 * 1024, 64, 0 | SECT_4K) }, | |
79 | 80 | {"mx25l3205d", INFO(0xc22016, 0x0, 64 * 1024, 64, 0) }, |
80 | 81 | {"mx25l6405d", INFO(0xc22017, 0x0, 64 * 1024, 128, 0) }, |
81 | 82 | {"mx25l12805", INFO(0xc22018, 0x0, 64 * 1024, 256, RD_FULL | WR_QPP) }, |
drivers/power/power_i2c.c
include/configs/embedian_armv7_common.h
... | ... | @@ -62,6 +62,36 @@ |
62 | 62 | "fit_bootfile=fitImage\0" \ |
63 | 63 | "update_to_fit=setenv loadaddr ${fit_loadaddr}; setenv bootfile ${fit_bootfile}\0" \ |
64 | 64 | "loadfit=run args_mmc; bootm ${loadaddr}#${fdtfile};\0" \ |
65 | + "mmcdev=0\0" \ | |
66 | + "mmcrootfstype=ext4 rootwait fixrtc\0" \ | |
67 | + "finduuid=part uuid mmc 0:2 uuid\0" \ | |
68 | + "args_mmc=run finduuid;setenv bootargs console=${console} " \ | |
69 | + "${optargs} " \ | |
70 | + "root=PARTUUID=${uuid} rw " \ | |
71 | + "rootfstype=${mmcrootfstype}\0" \ | |
72 | + "loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \ | |
73 | + "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \ | |
74 | + "source ${loadaddr}\0" \ | |
75 | + "bootenvfile=uEnv.txt\0" \ | |
76 | + "importbootenv=echo Importing environment from mmc${mmcdev} ...; " \ | |
77 | + "env import -t ${loadaddr} ${filesize}\0" \ | |
78 | + "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}\0" \ | |
79 | + "envboot=mmc dev ${mmcdev}; " \ | |
80 | + "if mmc rescan; then " \ | |
81 | + "echo SD/MMC found on device ${mmcdev};" \ | |
82 | + "if run loadbootscript; then " \ | |
83 | + "run bootscript;" \ | |
84 | + "else " \ | |
85 | + "if run loadbootenv; then " \ | |
86 | + "echo Loaded env from ${bootenvfile};" \ | |
87 | + "run importbootenv;" \ | |
88 | + "fi;" \ | |
89 | + "if test -n $uenvcmd; then " \ | |
90 | + "echo Running uenvcmd ...;" \ | |
91 | + "run uenvcmd;" \ | |
92 | + "fi;" \ | |
93 | + "fi;" \ | |
94 | + "fi;\0" \ | |
65 | 95 | |
66 | 96 | /* |
67 | 97 | * DDR information. If the CONFIG_NR_DRAM_BANKS is not defined, |
include/configs/embedian_armv7_omap.h
include/configs/smarct437x_evm.h
1 | +/* | |
2 | + * smarct437x_evm.h | |
3 | + * | |
4 | + * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/ | |
5 | + * | |
6 | + * SPDX-License-Identifier: GPL-2.0+ | |
7 | + */ | |
8 | + | |
9 | +#ifndef __CONFIG_SMARCT437X_EVM_H | |
10 | +#define __CONFIG_SMARCT437X_EVM_H | |
11 | + | |
12 | +#define CONFIG_BOARD_LATE_INIT | |
13 | +#define CONFIG_ARCH_CPU_INIT | |
14 | +#define CONFIG_MAX_RAM_BANK_SIZE (1024 << 21) /* 2GB */ | |
15 | +#define CONFIG_SYS_TIMERBASE 0x48040000 /* Use Timer2 */ | |
16 | + | |
17 | +#include <asm/arch/omap.h> | |
18 | +#define CONFIG_ENV_IS_NOWHERE | |
19 | + | |
20 | +/* NS16550 Configuration */ | |
21 | +#define CONFIG_SYS_NS16550_CLK 48000000 | |
22 | +#if !defined(CONFIG_SPL_DM) || !defined(CONFIG_DM_SERIAL) | |
23 | +#define CONFIG_SYS_NS16550_SERIAL | |
24 | +#define CONFIG_SYS_NS16550_REG_SIZE (-4) | |
25 | +#define CONFIG_SYS_NS16550_SERIAL | |
26 | +#endif | |
27 | + | |
28 | +/* I2C Configuration */ | |
29 | +#define CONFIG_CMD_EEPROM | |
30 | +#define CONFIG_ENV_EEPROM_IS_ON_I2C | |
31 | +#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50 /* Main EEPROM */ | |
32 | +#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2 | |
33 | + | |
34 | +/* Power */ | |
35 | +#define CONFIG_POWER | |
36 | +#define CONFIG_POWER_I2C | |
37 | +#define CONFIG_POWER_TPS65218 | |
38 | +#define CONFIG_POWER_TPS62362 | |
39 | + | |
40 | +/* SPL defines. */ | |
41 | +#define CONFIG_SPL_TEXT_BASE CONFIG_ISW_ENTRY_ADDR | |
42 | +#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \ | |
43 | + (128 << 20)) | |
44 | + | |
45 | +/* Enabling L2 Cache */ | |
46 | +#define CONFIG_SYS_L2_PL310 | |
47 | +#define CONFIG_SYS_PL310_BASE 0x48242000 | |
48 | + | |
49 | +/* | |
50 | + * Since SPL did pll and ddr initialization for us, | |
51 | + * we don't need to do it twice. | |
52 | + */ | |
53 | +#if !defined(CONFIG_SPL_BUILD) && !defined(CONFIG_SPI_BOOT) | |
54 | +#define CONFIG_SKIP_LOWLEVEL_INIT | |
55 | +#endif | |
56 | + | |
57 | +/* | |
58 | + * When building U-Boot such that there is no previous loader | |
59 | + * we need to call board_early_init_f. This is taken care of in | |
60 | + * s_init when we have SPL used. | |
61 | + */ | |
62 | +#if !defined(CONFIG_SKIP_LOWLEVEL_INIT) && !defined(CONFIG_SPL) | |
63 | +#define CONFIG_BOARD_EARLY_INIT_F | |
64 | +#endif | |
65 | + | |
66 | +/* Now bring in the rest of the common code. */ | |
67 | +#include <configs/embedian_armv7_omap.h> | |
68 | + | |
69 | +/* Always 64 KiB env size */ | |
70 | +#define CONFIG_ENV_SIZE (64 << 10) | |
71 | + | |
72 | +#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG | |
73 | + | |
74 | +/* Clock Defines */ | |
75 | +#define V_OSCK 24000000 /* Clock output from T2 */ | |
76 | +#define V_SCLK (V_OSCK) | |
77 | + | |
78 | +/* NS16550 Configuration */ | |
79 | +#define CONFIG_SYS_NS16550_COM1 0x44e09000 /* Base EVM has UART0 */ | |
80 | +#define CONFIG_SYS_NS16550_COM2 0x48022000 /* UART1 */ | |
81 | +#define CONFIG_SYS_NS16550_COM3 0x48024000 /* UART2 */ | |
82 | +#define CONFIG_SYS_NS16550_COM4 0x481a6000 /* UART3 */ | |
83 | +#define CONFIG_SYS_NS16550_COM5 0x481a8000 /* UART4 */ | |
84 | +#define CONFIG_SYS_NS16550_COM6 0x481aa000 /* UART5 */ | |
85 | +#define CONFIG_BAUDRATE 115200 | |
86 | + | |
87 | +#if !defined(CONFIG_ENV_IS_NOWHERE) | |
88 | +#define CONFIG_ENV_IS_IN_FAT | |
89 | +#define FAT_ENV_INTERFACE "mmc" | |
90 | +#define FAT_ENV_DEVICE_AND_PART "0:1" | |
91 | +#define FAT_ENV_FILE "uboot.env" | |
92 | +#define CONFIG_FAT_WRITE | |
93 | +#endif | |
94 | + | |
95 | +#define CONFIG_SPL_LDSCRIPT "arch/arm/mach-omap2/u-boot-spl.lds" | |
96 | + | |
97 | +/* SPL USB Support */ | |
98 | + | |
99 | +#if defined(CONFIG_SPL_USB_HOST_SUPPORT) || !defined(CONFIG_SPL_BUILD) | |
100 | +#define CONFIG_SYS_USB_FAT_BOOT_PARTITION 1 | |
101 | +#define CONFIG_USB_XHCI_OMAP | |
102 | +#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2 | |
103 | + | |
104 | +#define CONFIG_OMAP_USB_PHY | |
105 | +#define CONFIG_AM437X_USB2PHY2_HOST | |
106 | +#endif | |
107 | + | |
108 | +#if defined(CONFIG_SPL_BUILD) && !defined(CONFIG_SPL_USBETH_SUPPORT) | |
109 | +#undef CONFIG_USB_DWC3_PHY_OMAP | |
110 | +#undef CONFIG_USB_DWC3_OMAP | |
111 | +#undef CONFIG_USB_DWC3 | |
112 | +#undef CONFIG_USB_DWC3_GADGET | |
113 | + | |
114 | +#undef CONFIG_USB_GADGET_DOWNLOAD | |
115 | +#undef CONFIG_USB_GADGET_VBUS_DRAW | |
116 | +#undef CONFIG_G_DNL_MANUFACTURER | |
117 | +#undef CONFIG_G_DNL_VENDOR_NUM | |
118 | +#undef CONFIG_G_DNL_PRODUCT_NUM | |
119 | +#undef CONFIG_USB_GADGET_DUALSPEED | |
120 | +#endif | |
121 | + | |
122 | +#if !defined(CONFIG_SPL_BUILD) || \ | |
123 | + (defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_USBETH_SUPPORT)) | |
124 | +#define CONFIG_USB_ETHER | |
125 | +#define CONFIG_USB_ETH_RNDIS | |
126 | +#define CONFIG_USBNET_HOST_ADDR "de:ad:be:af:00:00" | |
127 | +#endif | |
128 | + | |
129 | +#define CONFIG_SPL_LOAD_FIT_ADDRESS 0x80800000 | |
130 | + | |
131 | +/* | |
132 | + * Disable MMC DM for SPL build and can be re-enabled after adding | |
133 | + * DM support in SPL | |
134 | + */ | |
135 | +#ifdef CONFIG_SPL_BUILD | |
136 | +#undef CONFIG_TIMER | |
137 | +#undef CONFIG_DM_NAND | |
138 | +#endif | |
139 | + | |
140 | +#ifndef CONFIG_SPL_BUILD | |
141 | +/* USB Device Firmware Update support */ | |
142 | +#define DFUARGS \ | |
143 | + "dfu_bufsiz=0x10000\0" \ | |
144 | + DFU_ALT_INFO_MMC \ | |
145 | + DFU_ALT_INFO_EMMC \ | |
146 | + DFU_ALT_INFO_RAM | |
147 | +#else | |
148 | +#define DFUARGS | |
149 | +#endif | |
150 | + | |
151 | +/* | |
152 | + * Default to using SPI for environment, etc. | |
153 | + * 0x000000 - 0x020000 : SPL (128KiB) | |
154 | + * 0x020000 - 0x0A0000 : U-Boot (512KiB) | |
155 | + * 0x0A0000 - 0x0BFFFF : First copy of U-Boot Environment (128KiB) | |
156 | + * 0x0C0000 - 0x0DFFFF : Second copy of U-Boot Environment (128KiB) | |
157 | + * 0x0E0000 - 0x442000 : Linux Kernel | |
158 | + * 0x442000 - 0x800000 : Userland | |
159 | + */ | |
160 | +#if defined(CONFIG_SPI_BOOT) | |
161 | +/* SPL related */ | |
162 | +#undef CONFIG_SPL_OS_BOOT /* Not supported by existing map */ | |
163 | +#define CONFIG_SPL_SPI_SUPPORT | |
164 | +#define CONFIG_SPL_SPI_FLASH_SUPPORT | |
165 | +#define CONFIG_SPL_SPI_LOAD | |
166 | +/*#define CONFIG_SPL_SPI_BUS 0 | |
167 | +#define CONFIG_SPL_SPI_CS 0*/ | |
168 | +#define CONFIG_SYS_SPI_U_BOOT_OFFS 0x20000 | |
169 | + | |
170 | +#undef CONFIG_ENV_IS_NOWHERE | |
171 | +#undef CONFIG_ENV_IS_IN_FAT | |
172 | +#define CONFIG_ENV_IS_IN_SPI_FLASH | |
173 | +#define CONFIG_SYS_REDUNDAND_ENVIRONMENT | |
174 | +#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED | |
175 | +#define CONFIG_ENV_SECT_SIZE (4 << 10) /* 4 KB sectors */ | |
176 | +#define CONFIG_ENV_OFFSET (768 << 10) /* 768 KiB in */ | |
177 | +#define CONFIG_ENV_OFFSET_REDUND (896 << 10) /* 896 KiB in */ | |
178 | +#define MTDIDS_DEFAULT "nor0=m25p80-flash.0" | |
179 | +#define MTDPARTS_DEFAULT "mtdparts=m25p80-flash.0:128k(SPL)," \ | |
180 | + "512k(u-boot),128k(u-boot-env1)," \ | |
181 | + "128k(u-boot-env2),3464k(kernel)," \ | |
182 | + "-(rootfs)" | |
183 | +#endif | |
184 | + | |
185 | +#ifdef CONFIG_QSPI_BOOT | |
186 | +#ifndef CONFIG_SYS_TEXT_BASE | |
187 | +#define CONFIG_SYS_TEXT_BASE CONFIG_ISW_ENTRY_ADDR | |
188 | +#endif | |
189 | +#undef CONFIG_ENV_IS_IN_FAT | |
190 | +#define CONFIG_ENV_IS_IN_SPI_FLASH | |
191 | +#define CONFIG_SYS_REDUNDAND_ENVIRONMENT | |
192 | +#define CONFIG_ENV_SPI_MAX_HZ CONFIG_SF_DEFAULT_SPEED | |
193 | +#define CONFIG_ENV_SECT_SIZE (64 << 10) /* 64 KB sectors */ | |
194 | +#define CONFIG_ENV_OFFSET 0x110000 | |
195 | +#define CONFIG_ENV_OFFSET_REDUND 0x120000 | |
196 | +#ifdef MTDIDS_DEFAULT | |
197 | +#undef MTDIDS_DEFAULT | |
198 | +#endif | |
199 | +#ifdef MTDPARTS_DEFAULT | |
200 | +#undef MTDPARTS_DEFAULT | |
201 | +#endif | |
202 | +#define MTDPARTS_DEFAULT "mtdparts=qspi.0:512k(QSPI.u-boot)," \ | |
203 | + "512k(QSPI.u-boot.backup)," \ | |
204 | + "512k(QSPI.u-boot-spl-os)," \ | |
205 | + "64k(QSPI.u-boot-env)," \ | |
206 | + "64k(QSPI.u-boot-env.backup)," \ | |
207 | + "8m(QSPI.kernel)," \ | |
208 | + "-(QSPI.file-system)" | |
209 | +#endif | |
210 | + | |
211 | +#if defined(CONFIG_EMMC_BOOT) | |
212 | +#undef CONFIG_SPL_OS_BOOT | |
213 | +#undef CONFIG_ENV_IS_NOWHERE | |
214 | +#define CONFIG_ENV_IS_IN_MMC | |
215 | +#define CONFIG_SYS_MMC_ENV_DEV 0 | |
216 | +#define CONFIG_SYS_MMC_ENV_PART 0 | |
217 | + | |
218 | +#define CONFIG_ENV_OFFSET 0x0 | |
219 | +#define CONFIG_ENV_OFFSET_REDUND (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE) | |
220 | +#define CONFIG_SYS_REDUNDAND_ENVIRONMENT | |
221 | +#endif | |
222 | + | |
223 | +/* SPI */ | |
224 | +#define CONFIG_SF_DEFAULT_BUS 0 | |
225 | +#define CONFIG_SF_DEFAULT_SPEED 24000000 | |
226 | +#define CONFIG_DEFAULT_SPI_MODE SPI_MODE_3 | |
227 | +#define CONFIG_TI_EDMA3 | |
228 | + | |
229 | +/* Enhance our eMMC support / experience. */ | |
230 | +#define CONFIG_CMD_GPT | |
231 | +#define CONFIG_EFI_PARTITION | |
232 | + | |
233 | +#ifndef CONFIG_SPL_BUILD | |
234 | +#include <environment/ti/dfu.h> | |
235 | +#include <environment/ti/mmc.h> | |
236 | + | |
237 | +#define CONFIG_EXTRA_ENV_SETTINGS \ | |
238 | + DEFAULT_LINUX_BOOT_ENV \ | |
239 | + DEFAULT_MMC_TI_ARGS \ | |
240 | + DEFAULT_FIT_TI_ARGS \ | |
241 | + "boot_fdt=try\0" \ | |
242 | + "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \ | |
243 | + "fdtfile=am437x-smarct437x.dtb\0" \ | |
244 | + "bootpart=${mmcdev}:1\0" \ | |
245 | + "bootdir=\0" \ | |
246 | + "fdtdir=/dtbs\0" \ | |
247 | + "bootfile=zImage\0" \ | |
248 | + "console=ttyO0,115200n8\0" \ | |
249 | + "partitions=" \ | |
250 | + "uuid_disk=${uuid_gpt_disk};" \ | |
251 | + "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" \ | |
252 | + "optargs=\0" \ | |
253 | + "cmdline=\0" \ | |
254 | + "mmcpart=1\0" \ | |
255 | + "mmcroot=/dev/mmcblk0p2 ro\0" \ | |
256 | + "usbroot=/dev/sda2 rw\0" \ | |
257 | + "usbrootfstype=ext4 rootwait\0" \ | |
258 | + "usbdev=0\0" \ | |
259 | + "ramroot=/dev/ram0 rw\0" \ | |
260 | + "ramrootfstype=ext2\0" \ | |
261 | + "usbargs=setenv bootargs console=${console} " \ | |
262 | + "${optargs} " \ | |
263 | + "root=${usbroot} " \ | |
264 | + "rootfstype=${usbrootfstype}\0" \ | |
265 | + "bootenv=uEnv.txt\0" \ | |
266 | + "script=boot.scr\0" \ | |
267 | + "scriptfile=${script}\0" \ | |
268 | + "loadbootscript=load mmc ${bootpart} ${loadaddr} ${scriptfile};\0" \ | |
269 | + "bootscript=echo Running bootscript from mmc${bootpart} ...; " \ | |
270 | + "source ${loadaddr}\0" \ | |
271 | + "loadbootenv=load mmc ${bootpart} ${loadaddr} ${bootenv}\0" \ | |
272 | + "loadusbbootenv=load usb ${bootpart} ${loadaddr} ${bootenv}\0" \ | |
273 | + "importbootenv=echo Importing environment from mmc ...; " \ | |
274 | + "env import -t -r $loadaddr $filesize\0" \ | |
275 | + "importusbbootenv=echo Importing environment from usb ...; " \ | |
276 | + "env import -t -r $loadaddr $filesize\0" \ | |
277 | + "ramargs=setenv bootargs console=${console} " \ | |
278 | + "${optargs} " \ | |
279 | + "root=${ramroot} " \ | |
280 | + "rootfstype=${ramrootfstype}\0" \ | |
281 | + "loadramdisk=load ${devtype} ${devnum} ${rdaddr} ramdisk.gz\0" \ | |
282 | + "loadimage=load ${devtype} ${mmcdev}:1 ${loadaddr} ${bootdir}/${bootfile}\0" \ | |
283 | + "loadfdt=echo loading ${fdtdir}/${fdtfile} ...; load ${devtype} ${mmcdev}:1 ${fdtaddr} ${bootdir}/${fdtfile}\0" \ | |
284 | + "mmcboot=mmc dev ${mmcdev}; " \ | |
285 | + "setenv devnum ${mmcdev}; " \ | |
286 | + "setenv bootpart ${mmcdev}:1; "\ | |
287 | + "setenv devtype mmc; " \ | |
288 | + "if mmc rescan; then " \ | |
289 | + "echo SD/MMC found on device ${devnum};" \ | |
290 | + "if run loadbootenv; then " \ | |
291 | + "echo Loaded environment from ${bootenv};" \ | |
292 | + "run importbootenv;" \ | |
293 | + "fi;" \ | |
294 | + "if test -n $uenvcmd; then " \ | |
295 | + "echo Running uenvcmd ...;" \ | |
296 | + "run uenvcmd;" \ | |
297 | + "fi;" \ | |
298 | + "if run loadimage; then " \ | |
299 | + "run loadfdt; " \ | |
300 | + "echo Booting from mmc${mmcdev} ...; " \ | |
301 | + "run args_mmc; " \ | |
302 | + "bootz ${loadaddr} - ${fdtaddr}; " \ | |
303 | + "fi;" \ | |
304 | + "fi;\0" \ | |
305 | + "usbboot=" \ | |
306 | + "setenv devnum ${usbdev}; " \ | |
307 | + "setenv devtype usb; " \ | |
308 | + "usb start ${usbdev}; " \ | |
309 | + "if usb dev ${usbdev}; then " \ | |
310 | + "if run loadusbbootenv; then " \ | |
311 | + "echo Loaded environment from ${bootenv};" \ | |
312 | + "run importusbbootenv;" \ | |
313 | + "fi;" \ | |
314 | + "if test -n $uenvcmd; then " \ | |
315 | + "echo Running uenvcmd ...;" \ | |
316 | + "run uenvcmd;" \ | |
317 | + "fi;" \ | |
318 | + "if run loadimage; then " \ | |
319 | + "run loadfdt; " \ | |
320 | + "echo Booting from usb ${usbdev}...; " \ | |
321 | + "run usbargs;" \ | |
322 | + "bootz ${loadaddr} - ${fdtaddr}; " \ | |
323 | + "fi;" \ | |
324 | + "fi\0" \ | |
325 | + "fi;" \ | |
326 | + "usb stop ${usbdev};\0" \ | |
327 | + "findfdt="\ | |
328 | + "if test $board_name = AM43EPOS; then " \ | |
329 | + "setenv fdtfile am43x-epos-evm.dtb; fi; " \ | |
330 | + "if test $board_name = AM43__GP; then " \ | |
331 | + "setenv fdtfile am437x-gp-evm.dtb; fi; " \ | |
332 | + "if test $board_name = AM43XXHS; then " \ | |
333 | + "setenv fdtfile am437x-gp-evm.dtb; fi; " \ | |
334 | + "if test $board_name = AM43__SK; then " \ | |
335 | + "setenv fdtfile am437x-sk-evm.dtb; fi; " \ | |
336 | + "if test $board_name = AM43_IDK; then " \ | |
337 | + "setenv fdtfile am437x-idk-evm.dtb; fi; " \ | |
338 | + "if test $board_name = SMCT4X80; then " \ | |
339 | + "setenv fdtfile am437x-smarct437x.dtb; fi; " \ | |
340 | + "if test $board_name = SMCT4X1G; then " \ | |
341 | + "setenv fdtfile am437x-smarct437x.dtb; fi; " \ | |
342 | + "if test $fdtfile = undefined; then " \ | |
343 | + "echo WARNING: Could not determine device tree; fi; \0" \ | |
344 | + NANDARGS \ | |
345 | + NETARGS \ | |
346 | + DFUARGS \ | |
347 | + | |
348 | +#define CONFIG_BOOTCOMMAND \ | |
349 | + "if test ${boot_fit} -eq 1; then " \ | |
350 | + "run update_to_fit;" \ | |
351 | + "fi;" \ | |
352 | + "run findfdt; " \ | |
353 | + "run envboot;" \ | |
354 | + "run mmcboot;" \ | |
355 | + "run usbboot;" \ | |
356 | + NANDBOOT \ | |
357 | + | |
358 | +#endif | |
359 | + | |
360 | +#ifndef CONFIG_SPL_BUILD | |
361 | +/* CPSW Ethernet */ | |
362 | +#define CONFIG_MII | |
363 | +#define CONFIG_BOOTP_DEFAULT | |
364 | +#define CONFIG_BOOTP_DNS | |
365 | +#define CONFIG_BOOTP_DNS2 | |
366 | +#define CONFIG_BOOTP_SEND_HOSTNAME | |
367 | +#define CONFIG_BOOTP_GATEWAY | |
368 | +#define CONFIG_BOOTP_SUBNETMASK | |
369 | +#define CONFIG_NET_RETRY_COUNT 10 | |
370 | +#define CONFIG_PHY_GIGE | |
371 | +#endif | |
372 | + | |
373 | +#define CONFIG_DRIVER_TI_CPSW | |
374 | +#define CONFIG_PHYLIB | |
375 | +#define CONFIG_PHY_ATHEROS | |
376 | +#define PHY_ANEG_TIMEOUT 8000 /* PHY needs longer aneg time at 1G */ | |
377 | + | |
378 | +#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_ETH_SUPPORT) | |
379 | +#undef CONFIG_ENV_IS_IN_FAT | |
380 | +#define CONFIG_ENV_IS_NOWHERE | |
381 | +#define CONFIG_SPL_NET_SUPPORT | |
382 | +#endif | |
383 | + | |
384 | +#define CONFIG_SYS_RX_ETH_BUFFER 64 | |
385 | + | |
386 | +/* NAND support */ | |
387 | +#ifdef CONFIG_NAND | |
388 | +/* NAND: device related configs */ | |
389 | +#define CONFIG_SYS_NAND_PAGE_SIZE 4096 | |
390 | +#define CONFIG_SYS_NAND_OOBSIZE 224 | |
391 | +#define CONFIG_SYS_NAND_BLOCK_SIZE (256*1024) | |
392 | +#define CONFIG_SYS_NAND_PAGE_COUNT (CONFIG_SYS_NAND_BLOCK_SIZE / \ | |
393 | + CONFIG_SYS_NAND_PAGE_SIZE) | |
394 | +#define CONFIG_SYS_NAND_5_ADDR_CYCLE | |
395 | +/* NAND: driver related configs */ | |
396 | +#define CONFIG_NAND_OMAP_GPMC | |
397 | +#define CONFIG_NAND_OMAP_ELM | |
398 | +#define CONFIG_SYS_NAND_ONFI_DETECTION | |
399 | +#define CONFIG_NAND_OMAP_ECCSCHEME OMAP_ECC_BCH16_CODE_HW | |
400 | +#define CONFIG_SYS_NAND_BAD_BLOCK_POS NAND_LARGE_BADBLOCK_POS | |
401 | +#define CONFIG_SYS_NAND_ECCPOS { 2, 3, 4, 5, 6, 7, 8, 9, \ | |
402 | + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, \ | |
403 | + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, \ | |
404 | + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, \ | |
405 | + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, \ | |
406 | + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, \ | |
407 | + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, \ | |
408 | + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, \ | |
409 | + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, \ | |
410 | + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, \ | |
411 | + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, \ | |
412 | + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, \ | |
413 | + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, \ | |
414 | + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, \ | |
415 | + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, \ | |
416 | + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, \ | |
417 | + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, \ | |
418 | + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, \ | |
419 | + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, \ | |
420 | + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, \ | |
421 | + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, \ | |
422 | + } | |
423 | +#define CONFIG_SYS_NAND_ECCSIZE 512 | |
424 | +#define CONFIG_SYS_NAND_ECCBYTES 26 | |
425 | +#define MTDIDS_DEFAULT "nand0=nand.0" | |
426 | +#define MTDPARTS_DEFAULT "mtdparts=nand.0:" \ | |
427 | + "256k(NAND.SPL)," \ | |
428 | + "256k(NAND.SPL.backup1)," \ | |
429 | + "256k(NAND.SPL.backup2)," \ | |
430 | + "256k(NAND.SPL.backup3)," \ | |
431 | + "512k(NAND.u-boot-spl-os)," \ | |
432 | + "1m(NAND.u-boot)," \ | |
433 | + "256k(NAND.u-boot-env)," \ | |
434 | + "256k(NAND.u-boot-env.backup1)," \ | |
435 | + "7m(NAND.kernel)," \ | |
436 | + "-(NAND.file-system)" | |
437 | +#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x00180000 | |
438 | +/* NAND: SPL related configs */ | |
439 | +#ifdef CONFIG_SPL_NAND_SUPPORT | |
440 | +#define CONFIG_SPL_NAND_AM33XX_BCH | |
441 | +#endif | |
442 | +/* NAND: SPL falcon mode configs */ | |
443 | +#ifdef CONFIG_SPL_OS_BOOT | |
444 | +#define CONFIG_CMD_SPL_NAND_OFS 0x00100000 /* os parameters */ | |
445 | +#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x00300000 /* kernel offset */ | |
446 | +#define CONFIG_CMD_SPL_WRITE_SIZE CONFIG_SYS_NAND_BLOCK_SIZE | |
447 | +#endif | |
448 | +#define NANDARGS \ | |
449 | + "mtdids=" MTDIDS_DEFAULT "\0" \ | |
450 | + "mtdparts=" MTDPARTS_DEFAULT "\0" \ | |
451 | + "nandargs=setenv bootargs console=${console} " \ | |
452 | + "${optargs} " \ | |
453 | + "root=${nandroot} " \ | |
454 | + "rootfstype=${nandrootfstype}\0" \ | |
455 | + "nandroot=ubi0:rootfs rw ubi.mtd=NAND.file-system,4096\0" \ | |
456 | + "nandrootfstype=ubifs rootwait=1\0" \ | |
457 | + "nandboot=echo Booting from nand ...; " \ | |
458 | + "run nandargs; " \ | |
459 | + "nand read ${fdtaddr} NAND.u-boot-spl-os; " \ | |
460 | + "nand read ${loadaddr} NAND.kernel; " \ | |
461 | + "bootz ${loadaddr} - ${fdtaddr}\0" | |
462 | +#define NANDBOOT "run nandboot; " | |
463 | +#else /* !CONFIG_NAND */ | |
464 | +#define NANDARGS | |
465 | +#define NANDBOOT | |
466 | +#endif /* CONFIG_NAND */ | |
467 | + | |
468 | +#if defined(CONFIG_TI_SECURE_DEVICE) | |
469 | +/* Avoid relocating onto firewalled area at end of DRAM */ | |
470 | +#define CONFIG_PRAM (64 * 1024) | |
471 | +#endif /* CONFIG_TI_SECURE_DEVICE */ | |
472 | + | |
473 | +#endif /* __CONFIG_SMARCT437X_EVM_H */ |
include/dt-bindings/pinctrl/am43xx.h
... | ... | @@ -14,12 +14,14 @@ |
14 | 14 | #define MUX_MODE6 6 |
15 | 15 | #define MUX_MODE7 7 |
16 | 16 | #define MUX_MODE8 8 |
17 | +#define MUX_MODE9 9 | |
17 | 18 | |
18 | 19 | #define PULL_DISABLE (1 << 16) |
19 | 20 | #define PULL_UP (1 << 17) |
20 | 21 | #define INPUT_EN (1 << 18) |
21 | 22 | #define SLEWCTRL_SLOW (1 << 19) |
22 | 23 | #define SLEWCTRL_FAST 0 |
24 | +#define DS0_FORCE_OFF_MODE (1 << 24) | |
23 | 25 | #define DS0_PULL_UP_DOWN_EN (1 << 27) |
24 | 26 | #define WAKEUP_ENABLE (1 << 29) |
25 | 27 |