xref: /OK3568_Linux_fs/buildroot/board/beagleboneai/patches/uboot/0001-BeagleBone-AI-support.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunFrom 989c27c791a453550ff6c1440b41c55c6e70615d Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jason Kridner <jdk@ti.com>
3*4882a593SmuzhiyunDate: Wed, 27 Mar 2019 14:06:24 -0400
4*4882a593SmuzhiyunSubject: [PATCH] BeagleBone AI support
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunPatch from:
7*4882a593Smuzhiyunhttps://github.com/beagleboard/beaglebone-ai/blob/master/SW/buildroot/local/patches/uboot/0001-BeagleBone-AI-support.patch
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunSigned-off-by: Peter Korsgaard <peter@korsgaard.com>
10*4882a593Smuzhiyun---
11*4882a593Smuzhiyun arch/arm/dts/Makefile                |   1 +
12*4882a593Smuzhiyun arch/arm/dts/am5729-beagleboneai.dts | 494 +++++++++++++++++++++++++++
13*4882a593Smuzhiyun arch/arm/mach-omap2/omap5/hw_data.c  |   3 +-
14*4882a593Smuzhiyun board/ti/am57xx/board.c              | 134 +++++++-
15*4882a593Smuzhiyun board/ti/am57xx/mux_data.h           | 390 +++++++++++++++++++++
16*4882a593Smuzhiyun configs/am57xx_evm_defconfig         |  10 +-
17*4882a593Smuzhiyun include/configs/am57xx_evm.h         |   2 +-
18*4882a593Smuzhiyun include/configs/ti_armv7_common.h    | 357 +++++++++++++++++++
19*4882a593Smuzhiyun include/configs/ti_omap5_common.h    |   5 +
20*4882a593Smuzhiyun include/environment/ti/boot.h        |  49 +--
21*4882a593Smuzhiyun include/environment/ti/mmc.h         |  45 ++-
22*4882a593Smuzhiyun 11 files changed, 1447 insertions(+), 43 deletions(-)
23*4882a593Smuzhiyun create mode 100644 arch/arm/dts/am5729-beagleboneai.dts
24*4882a593Smuzhiyun
25*4882a593Smuzhiyundiff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
26*4882a593Smuzhiyunindex 2a040b20a5..6771d457a4 100644
27*4882a593Smuzhiyun--- a/arch/arm/dts/Makefile
28*4882a593Smuzhiyun+++ b/arch/arm/dts/Makefile
29*4882a593Smuzhiyun@@ -232,6 +232,7 @@ dtb-$(CONFIG_TARGET_DRA7XX_EVM) += dra72-evm.dtb dra7-evm.dtb	\
30*4882a593Smuzhiyun dtb-$(CONFIG_TARGET_AM57XX_EVM) += am57xx-beagle-x15.dtb \
31*4882a593Smuzhiyun 	am57xx-beagle-x15-revb1.dtb \
32*4882a593Smuzhiyun 	am57xx-beagle-x15-revc.dtb \
33*4882a593Smuzhiyun+	am5729-beagleboneai.dtb \
34*4882a593Smuzhiyun 	am574x-idk.dtb \
35*4882a593Smuzhiyun 	am572x-idk.dtb	\
36*4882a593Smuzhiyun 	am571x-idk.dtb
37*4882a593Smuzhiyundiff --git a/arch/arm/dts/am5729-beagleboneai.dts b/arch/arm/dts/am5729-beagleboneai.dts
38*4882a593Smuzhiyunnew file mode 100644
39*4882a593Smuzhiyunindex 0000000000..d1afe55751
40*4882a593Smuzhiyun--- /dev/null
41*4882a593Smuzhiyun+++ b/arch/arm/dts/am5729-beagleboneai.dts
42*4882a593Smuzhiyun@@ -0,0 +1,494 @@
43*4882a593Smuzhiyun+/*
44*4882a593Smuzhiyun+ * Copyright (C) 2014-2018 Texas Instruments Incorporated - http://www.ti.com/
45*4882a593Smuzhiyun+ *
46*4882a593Smuzhiyun+ * This program is free software; you can redistribute it and/or modify
47*4882a593Smuzhiyun+ * it under the terms of the GNU General Public License version 2 as
48*4882a593Smuzhiyun+ * published by the Free Software Foundation.
49*4882a593Smuzhiyun+ */
50*4882a593Smuzhiyun+/dts-v1/;
51*4882a593Smuzhiyun+
52*4882a593Smuzhiyun+#include "dra74x.dtsi"
53*4882a593Smuzhiyun+#include "am57xx-commercial-grade.dtsi"
54*4882a593Smuzhiyun+#include "dra74x-mmc-iodelay.dtsi"
55*4882a593Smuzhiyun+#include <dt-bindings/gpio/gpio.h>
56*4882a593Smuzhiyun+#include <dt-bindings/interrupt-controller/irq.h>
57*4882a593Smuzhiyun+#include <dt-bindings/pinctrl/dra.h>
58*4882a593Smuzhiyun+
59*4882a593Smuzhiyun+/ {
60*4882a593Smuzhiyun+	model = "BeagleBoard.org BeagleBone AI";
61*4882a593Smuzhiyun+	compatible = "beagleboard.org,am57xx-beagleboneai", "ti,am5728", "ti,dra742", "ti,dra74", "ti,dra7";
62*4882a593Smuzhiyun+
63*4882a593Smuzhiyun+	chosen {
64*4882a593Smuzhiyun+		stdout-path = &uart1;
65*4882a593Smuzhiyun+	};
66*4882a593Smuzhiyun+
67*4882a593Smuzhiyun+	memory@0 {
68*4882a593Smuzhiyun+		device_type = "memory";
69*4882a593Smuzhiyun+		reg = <0x0 0x80000000 0x0 0x40000000>;
70*4882a593Smuzhiyun+	};
71*4882a593Smuzhiyun+
72*4882a593Smuzhiyun+	vdd_5v: fixedregulator-vdd_5v {
73*4882a593Smuzhiyun+		compatible = "regulator-fixed";
74*4882a593Smuzhiyun+		regulator-name = "vdd_5v";
75*4882a593Smuzhiyun+		regulator-min-microvolt = <5000000>;
76*4882a593Smuzhiyun+		regulator-max-microvolt = <5000000>;
77*4882a593Smuzhiyun+		regulator-always-on;
78*4882a593Smuzhiyun+		regulator-boot-on;
79*4882a593Smuzhiyun+	};
80*4882a593Smuzhiyun+
81*4882a593Smuzhiyun+	vtt_fixed: fixedregulator-vtt {
82*4882a593Smuzhiyun+		/* TPS51200 */
83*4882a593Smuzhiyun+		compatible = "regulator-fixed";
84*4882a593Smuzhiyun+		regulator-name = "vtt_fixed";
85*4882a593Smuzhiyun+		vin-supply = <&vdd_3v3>;
86*4882a593Smuzhiyun+		regulator-min-microvolt = <3300000>;
87*4882a593Smuzhiyun+		regulator-max-microvolt = <3300000>;
88*4882a593Smuzhiyun+		regulator-always-on;
89*4882a593Smuzhiyun+		regulator-boot-on;
90*4882a593Smuzhiyun+	};
91*4882a593Smuzhiyun+
92*4882a593Smuzhiyun+	src_clk_x1: src_clk_x1 {
93*4882a593Smuzhiyun+		#clock-cells = <0>;
94*4882a593Smuzhiyun+		compatible = "fixed-clock";
95*4882a593Smuzhiyun+		clock-frequency = <20000000>;
96*4882a593Smuzhiyun+	};
97*4882a593Smuzhiyun+
98*4882a593Smuzhiyun+	src_clk_osc1: src_clk_osc1 {
99*4882a593Smuzhiyun+		#clock-cells = <0>;
100*4882a593Smuzhiyun+		compatible = "fixed-clock";
101*4882a593Smuzhiyun+		clock-frequency = <24000000>;
102*4882a593Smuzhiyun+	};
103*4882a593Smuzhiyun+
104*4882a593Smuzhiyun+	src_clk_osc4: src_clk_osc4 {
105*4882a593Smuzhiyun+        	#clock-cells = <0>;
106*4882a593Smuzhiyun+        	compatible = "fixed-clock";
107*4882a593Smuzhiyun+        	clock-frequency = <24000000>;
108*4882a593Smuzhiyun+    	};
109*4882a593Smuzhiyun+
110*4882a593Smuzhiyun+	leds {
111*4882a593Smuzhiyun+		compatible = "gpio-leds";
112*4882a593Smuzhiyun+
113*4882a593Smuzhiyun+		led0 {
114*4882a593Smuzhiyun+			label = "beaglebone:green:usr0";
115*4882a593Smuzhiyun+			gpios = <&gpio3 14 GPIO_ACTIVE_HIGH>;
116*4882a593Smuzhiyun+			linux,default-trigger = "heartbeat";
117*4882a593Smuzhiyun+			default-state = "off";
118*4882a593Smuzhiyun+		};
119*4882a593Smuzhiyun+
120*4882a593Smuzhiyun+		led1 {
121*4882a593Smuzhiyun+			label = "beaglebone:green:usr1";
122*4882a593Smuzhiyun+			gpios = <&gpio3 15 GPIO_ACTIVE_HIGH>;
123*4882a593Smuzhiyun+			linux,default-trigger = "mmc0";
124*4882a593Smuzhiyun+			default-state = "off";
125*4882a593Smuzhiyun+		};
126*4882a593Smuzhiyun+
127*4882a593Smuzhiyun+		led2 {
128*4882a593Smuzhiyun+			label = "beaglebone:green:usr2";
129*4882a593Smuzhiyun+			gpios = <&gpio5 5 GPIO_ACTIVE_HIGH>;
130*4882a593Smuzhiyun+			linux,default-trigger = "cpu";
131*4882a593Smuzhiyun+			default-state = "off";
132*4882a593Smuzhiyun+		};
133*4882a593Smuzhiyun+
134*4882a593Smuzhiyun+		led3 {
135*4882a593Smuzhiyun+			label = "beaglebone:green:usr3";
136*4882a593Smuzhiyun+			gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>;
137*4882a593Smuzhiyun+			linux,default-trigger = "mmc1";
138*4882a593Smuzhiyun+			default-state = "off";
139*4882a593Smuzhiyun+		};
140*4882a593Smuzhiyun+	};
141*4882a593Smuzhiyun+};
142*4882a593Smuzhiyun+
143*4882a593Smuzhiyun+&i2c1 {
144*4882a593Smuzhiyun+	status = "okay";
145*4882a593Smuzhiyun+	clock-frequency = <400000>;
146*4882a593Smuzhiyun+
147*4882a593Smuzhiyun+	tps659038: tps659038@58 {
148*4882a593Smuzhiyun+		compatible = "ti,tps659038";
149*4882a593Smuzhiyun+		reg = <0x58>;
150*4882a593Smuzhiyun+		interrupts-extended = <&gpio6 16 IRQ_TYPE_LEVEL_HIGH
151*4882a593Smuzhiyun+			&dra7_pmx_core 0x418>;
152*4882a593Smuzhiyun+
153*4882a593Smuzhiyun+		#interrupt-cells = <2>;
154*4882a593Smuzhiyun+		interrupt-controller;
155*4882a593Smuzhiyun+
156*4882a593Smuzhiyun+		ti,system-power-controller;
157*4882a593Smuzhiyun+		ti,palmas-override-powerhold;
158*4882a593Smuzhiyun+
159*4882a593Smuzhiyun+		tps659038_pmic {
160*4882a593Smuzhiyun+			compatible = "ti,tps659038-pmic";
161*4882a593Smuzhiyun+
162*4882a593Smuzhiyun+			smps12-in-supply = <&vdd_5v>;
163*4882a593Smuzhiyun+			smps3-in-supply = <&vdd_5v>;
164*4882a593Smuzhiyun+			smps45-in-supply = <&vdd_5v>;
165*4882a593Smuzhiyun+			smps6-in-supply = <&vdd_5v>;
166*4882a593Smuzhiyun+			smps7-in-supply = <&vdd_5v>;
167*4882a593Smuzhiyun+			mps3-in-supply = <&vdd_5v>;
168*4882a593Smuzhiyun+			smps8-in-supply = <&vdd_5v>;
169*4882a593Smuzhiyun+			smps9-in-supply = <&vdd_5v>;
170*4882a593Smuzhiyun+			ldo1-in-supply = <&vdd_5v>;
171*4882a593Smuzhiyun+			ldo2-in-supply = <&vdd_5v>;
172*4882a593Smuzhiyun+			ldo3-in-supply = <&vdd_5v>;
173*4882a593Smuzhiyun+			ldo4-in-supply = <&vdd_5v>;
174*4882a593Smuzhiyun+			ldo9-in-supply = <&vdd_5v>;
175*4882a593Smuzhiyun+			ldoln-in-supply = <&vdd_5v>;
176*4882a593Smuzhiyun+			ldousb-in-supply = <&vdd_5v>;
177*4882a593Smuzhiyun+			ldortc-in-supply = <&vdd_5v>;
178*4882a593Smuzhiyun+
179*4882a593Smuzhiyun+			regulators {
180*4882a593Smuzhiyun+				vdd_mpu: smps12 {
181*4882a593Smuzhiyun+					/* VDD_MPU */
182*4882a593Smuzhiyun+					regulator-name = "smps12";
183*4882a593Smuzhiyun+					regulator-min-microvolt = <850000>;
184*4882a593Smuzhiyun+					regulator-max-microvolt = <1250000>;
185*4882a593Smuzhiyun+					regulator-always-on;
186*4882a593Smuzhiyun+					regulator-boot-on;
187*4882a593Smuzhiyun+				};
188*4882a593Smuzhiyun+
189*4882a593Smuzhiyun+				vdd_ddr: smps3 {
190*4882a593Smuzhiyun+					/* VDD_DDR EMIF1 EMIF2 */
191*4882a593Smuzhiyun+					regulator-name = "smps3";
192*4882a593Smuzhiyun+					regulator-min-microvolt = <1350000>;
193*4882a593Smuzhiyun+					regulator-max-microvolt = <1350000>;
194*4882a593Smuzhiyun+					regulator-always-on;
195*4882a593Smuzhiyun+					regulator-boot-on;
196*4882a593Smuzhiyun+				};
197*4882a593Smuzhiyun+
198*4882a593Smuzhiyun+				vdd_dspeve: smps45 {
199*4882a593Smuzhiyun+					/* VDD_DSPEVE on AM572 */
200*4882a593Smuzhiyun+					/* VDD_IVA + VDD_DSP on AM571 */
201*4882a593Smuzhiyun+					regulator-name = "smps45";
202*4882a593Smuzhiyun+					regulator-min-microvolt = <850000>;
203*4882a593Smuzhiyun+					regulator-max-microvolt = <1250000>;
204*4882a593Smuzhiyun+					regulator-always-on;
205*4882a593Smuzhiyun+					regulator-boot-on;
206*4882a593Smuzhiyun+				};
207*4882a593Smuzhiyun+
208*4882a593Smuzhiyun+				vdd_gpu: smps6 {
209*4882a593Smuzhiyun+					/* VDD_GPU */
210*4882a593Smuzhiyun+					regulator-name = "smps6";
211*4882a593Smuzhiyun+					regulator-min-microvolt = <850000>;
212*4882a593Smuzhiyun+					regulator-max-microvolt = <1250000>;
213*4882a593Smuzhiyun+					regulator-always-on;
214*4882a593Smuzhiyun+					regulator-boot-on;
215*4882a593Smuzhiyun+				};
216*4882a593Smuzhiyun+
217*4882a593Smuzhiyun+				vdd_core: smps7 {
218*4882a593Smuzhiyun+					/* VDD_CORE */
219*4882a593Smuzhiyun+					regulator-name = "smps7";
220*4882a593Smuzhiyun+					regulator-min-microvolt = <850000>;	/*** 1.15V */
221*4882a593Smuzhiyun+					regulator-max-microvolt = <1150000>;
222*4882a593Smuzhiyun+					regulator-always-on;
223*4882a593Smuzhiyun+					regulator-boot-on;
224*4882a593Smuzhiyun+				};
225*4882a593Smuzhiyun+
226*4882a593Smuzhiyun+				vdd_iva: smps8 {
227*4882a593Smuzhiyun+					/* 5728 - VDD_IVAHD */			/*** 1.06V */
228*4882a593Smuzhiyun+					/* 5718 - N.C. test point */
229*4882a593Smuzhiyun+					regulator-name = "smps8";
230*4882a593Smuzhiyun+				};
231*4882a593Smuzhiyun+
232*4882a593Smuzhiyun+				vdd_3v3: smps9 {
233*4882a593Smuzhiyun+					/* VDD_3V3 */
234*4882a593Smuzhiyun+					regulator-name = "smps9";
235*4882a593Smuzhiyun+					regulator-min-microvolt = <3300000>;
236*4882a593Smuzhiyun+					regulator-max-microvolt = <3300000>;
237*4882a593Smuzhiyun+					regulator-always-on;
238*4882a593Smuzhiyun+					regulator-boot-on;
239*4882a593Smuzhiyun+				};
240*4882a593Smuzhiyun+
241*4882a593Smuzhiyun+				vdd_sd: ldo1 {
242*4882a593Smuzhiyun+					/* VDDSHV8 - VSDMMC  */
243*4882a593Smuzhiyun+					regulator-name = "ldo1";
244*4882a593Smuzhiyun+					regulator-min-microvolt = <1800000>;
245*4882a593Smuzhiyun+					regulator-max-microvolt = <3300000>;
246*4882a593Smuzhiyun+					regulator-boot-on;
247*4882a593Smuzhiyun+					regulator-always-on;
248*4882a593Smuzhiyun+				};
249*4882a593Smuzhiyun+
250*4882a593Smuzhiyun+				vdd_1v8: ldo2 {
251*4882a593Smuzhiyun+					/* VDDSH18V */
252*4882a593Smuzhiyun+					regulator-name = "ldo2";
253*4882a593Smuzhiyun+					regulator-min-microvolt = <1800000>;
254*4882a593Smuzhiyun+					regulator-max-microvolt = <1800000>;
255*4882a593Smuzhiyun+					regulator-always-on;
256*4882a593Smuzhiyun+					regulator-boot-on;
257*4882a593Smuzhiyun+				};
258*4882a593Smuzhiyun+
259*4882a593Smuzhiyun+				vdd_1v8_phy_ldo3: ldo3 {
260*4882a593Smuzhiyun+					/* R1.3a 572x V1_8PHY_LDO3: USB, SATA */
261*4882a593Smuzhiyun+					regulator-name = "ldo3";
262*4882a593Smuzhiyun+					regulator-min-microvolt = <1800000>;
263*4882a593Smuzhiyun+					regulator-max-microvolt = <1800000>;
264*4882a593Smuzhiyun+					regulator-always-on;
265*4882a593Smuzhiyun+					regulator-boot-on;
266*4882a593Smuzhiyun+				};
267*4882a593Smuzhiyun+
268*4882a593Smuzhiyun+				vdd_1v8_phy_ldo4: ldo4 {
269*4882a593Smuzhiyun+					/* R1.3a 572x V1_8PHY_LDO4: PCIE, HDMI*/
270*4882a593Smuzhiyun+					regulator-name = "ldo4";
271*4882a593Smuzhiyun+					regulator-min-microvolt = <1800000>;
272*4882a593Smuzhiyun+					regulator-max-microvolt = <1800000>;
273*4882a593Smuzhiyun+					regulator-always-on;
274*4882a593Smuzhiyun+					regulator-boot-on;
275*4882a593Smuzhiyun+				};
276*4882a593Smuzhiyun+
277*4882a593Smuzhiyun+				/* LDO5-8 unused */
278*4882a593Smuzhiyun+
279*4882a593Smuzhiyun+				vdd_rtc: ldo9 {
280*4882a593Smuzhiyun+					/* VDD_RTC  */
281*4882a593Smuzhiyun+					regulator-name = "ldo9";
282*4882a593Smuzhiyun+					regulator-min-microvolt = <840000>;
283*4882a593Smuzhiyun+					regulator-max-microvolt = <1160000>;
284*4882a593Smuzhiyun+					regulator-always-on;
285*4882a593Smuzhiyun+					regulator-boot-on;
286*4882a593Smuzhiyun+				};
287*4882a593Smuzhiyun+
288*4882a593Smuzhiyun+				vdd_1v8_pll: ldoln {
289*4882a593Smuzhiyun+					/* VDDA_1V8_PLL */
290*4882a593Smuzhiyun+					regulator-name = "ldoln";
291*4882a593Smuzhiyun+					regulator-min-microvolt = <1800000>;
292*4882a593Smuzhiyun+					regulator-max-microvolt = <1800000>;
293*4882a593Smuzhiyun+					regulator-always-on;
294*4882a593Smuzhiyun+					regulator-boot-on;
295*4882a593Smuzhiyun+				};
296*4882a593Smuzhiyun+
297*4882a593Smuzhiyun+				ldousb_reg: ldousb {
298*4882a593Smuzhiyun+					/* VDDA_3V_USB: VDDA_USBHS33 */
299*4882a593Smuzhiyun+					regulator-name = "ldousb";
300*4882a593Smuzhiyun+					regulator-min-microvolt = <3300000>;
301*4882a593Smuzhiyun+					regulator-max-microvolt = <3300000>;
302*4882a593Smuzhiyun+					regulator-always-on;
303*4882a593Smuzhiyun+					regulator-boot-on;
304*4882a593Smuzhiyun+				};
305*4882a593Smuzhiyun+
306*4882a593Smuzhiyun+				ldortc_reg: ldortc {
307*4882a593Smuzhiyun+					/* VDDA_RTC  */
308*4882a593Smuzhiyun+					regulator-name = "ldortc";
309*4882a593Smuzhiyun+					regulator-min-microvolt = <1800000>;
310*4882a593Smuzhiyun+					regulator-max-microvolt = <1800000>;
311*4882a593Smuzhiyun+					regulator-always-on;
312*4882a593Smuzhiyun+					regulator-boot-on;
313*4882a593Smuzhiyun+				};
314*4882a593Smuzhiyun+
315*4882a593Smuzhiyun+				regen1: regen1 {
316*4882a593Smuzhiyun+					/* VDD_3V3_ON */
317*4882a593Smuzhiyun+					regulator-name = "regen1";
318*4882a593Smuzhiyun+					regulator-boot-on;
319*4882a593Smuzhiyun+					regulator-always-on;
320*4882a593Smuzhiyun+				};
321*4882a593Smuzhiyun+
322*4882a593Smuzhiyun+				regen2: regen2 {
323*4882a593Smuzhiyun+					/* Needed for PMIC internal resource */
324*4882a593Smuzhiyun+					regulator-name = "regen2";
325*4882a593Smuzhiyun+					regulator-boot-on;
326*4882a593Smuzhiyun+					regulator-always-on;
327*4882a593Smuzhiyun+				};
328*4882a593Smuzhiyun+			};
329*4882a593Smuzhiyun+		};
330*4882a593Smuzhiyun+
331*4882a593Smuzhiyun+		tps659038_rtc: tps659038_rtc {
332*4882a593Smuzhiyun+			compatible = "ti,palmas-rtc";
333*4882a593Smuzhiyun+			interrupt-parent = <&tps659038>;
334*4882a593Smuzhiyun+			interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
335*4882a593Smuzhiyun+			wakeup-source;
336*4882a593Smuzhiyun+		};
337*4882a593Smuzhiyun+
338*4882a593Smuzhiyun+		tps659038_pwr_button: tps659038_pwr_button {
339*4882a593Smuzhiyun+			compatible = "ti,palmas-pwrbutton";
340*4882a593Smuzhiyun+			interrupt-parent = <&tps659038>;
341*4882a593Smuzhiyun+			interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
342*4882a593Smuzhiyun+			wakeup-source;
343*4882a593Smuzhiyun+			ti,palmas-long-press-seconds = <12>;
344*4882a593Smuzhiyun+		};
345*4882a593Smuzhiyun+
346*4882a593Smuzhiyun+		tps659038_gpio: tps659038_gpio {
347*4882a593Smuzhiyun+			compatible = "ti,palmas-gpio";
348*4882a593Smuzhiyun+			gpio-controller;
349*4882a593Smuzhiyun+			#gpio-cells = <2>;
350*4882a593Smuzhiyun+		};
351*4882a593Smuzhiyun+
352*4882a593Smuzhiyun+		extcon_usb2: tps659038_usb {
353*4882a593Smuzhiyun+			compatible = "ti,palmas-usb-vid";
354*4882a593Smuzhiyun+		};
355*4882a593Smuzhiyun+
356*4882a593Smuzhiyun+	};
357*4882a593Smuzhiyun+
358*4882a593Smuzhiyun+	eeprom: eeprom@50 {
359*4882a593Smuzhiyun+		compatible = "atmel,24c32";
360*4882a593Smuzhiyun+		reg = <0x50>;
361*4882a593Smuzhiyun+	};
362*4882a593Smuzhiyun+};
363*4882a593Smuzhiyun+
364*4882a593Smuzhiyun+&i2c2 {
365*4882a593Smuzhiyun+	status = "okay";
366*4882a593Smuzhiyun+	clock-frequency = <400000>;
367*4882a593Smuzhiyun+};
368*4882a593Smuzhiyun+
369*4882a593Smuzhiyun+&i2c3 {
370*4882a593Smuzhiyun+	status = "okay";
371*4882a593Smuzhiyun+	clock-frequency = <400000>;
372*4882a593Smuzhiyun+};
373*4882a593Smuzhiyun+
374*4882a593Smuzhiyun+&i2c4 {
375*4882a593Smuzhiyun+	status = "okay";
376*4882a593Smuzhiyun+	clock-frequency = <100000>;
377*4882a593Smuzhiyun+};
378*4882a593Smuzhiyun+
379*4882a593Smuzhiyun+&i2c5 {
380*4882a593Smuzhiyun+	status = "okay";
381*4882a593Smuzhiyun+	clock-frequency = <100000>;
382*4882a593Smuzhiyun+};
383*4882a593Smuzhiyun+
384*4882a593Smuzhiyun+&cpu0 {
385*4882a593Smuzhiyun+	vdd-supply = <&vdd_mpu>;
386*4882a593Smuzhiyun+	voltage-tolerance = <1>;
387*4882a593Smuzhiyun+};
388*4882a593Smuzhiyun+
389*4882a593Smuzhiyun+&uart1 {
390*4882a593Smuzhiyun+	status = "okay";
391*4882a593Smuzhiyun+	interrupts-extended = <&crossbar_mpu GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
392*4882a593Smuzhiyun+			      <&dra7_pmx_core 0x3e0>;
393*4882a593Smuzhiyun+};
394*4882a593Smuzhiyun+
395*4882a593Smuzhiyun+&uart3 {
396*4882a593Smuzhiyun+	status = "okay";
397*4882a593Smuzhiyun+	interrupts-extended = <&crossbar_mpu GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
398*4882a593Smuzhiyun+			      <&dra7_pmx_core 0x3f8>;
399*4882a593Smuzhiyun+};
400*4882a593Smuzhiyun+
401*4882a593Smuzhiyun+&davinci_mdio {
402*4882a593Smuzhiyun+	reset-gpios = <&gpio2 23 GPIO_ACTIVE_LOW>;
403*4882a593Smuzhiyun+	reset-delay-us = <2>;
404*4882a593Smuzhiyun+
405*4882a593Smuzhiyun+	phy0: ethernet-phy@1 {
406*4882a593Smuzhiyun+		reg = <4>;
407*4882a593Smuzhiyun+	};
408*4882a593Smuzhiyun+};
409*4882a593Smuzhiyun+
410*4882a593Smuzhiyun+&mac {
411*4882a593Smuzhiyun+	slaves = <1>;
412*4882a593Smuzhiyun+	status = "okay";
413*4882a593Smuzhiyun+	//dual_emac;
414*4882a593Smuzhiyun+};
415*4882a593Smuzhiyun+
416*4882a593Smuzhiyun+&cpsw_emac0 {
417*4882a593Smuzhiyun+	phy-handle = <&phy0>;
418*4882a593Smuzhiyun+	phy-mode = "rgmii";
419*4882a593Smuzhiyun+	//dual_emac_res_vlan = <1>;
420*4882a593Smuzhiyun+};
421*4882a593Smuzhiyun+
422*4882a593Smuzhiyun+&mmc1 {
423*4882a593Smuzhiyun+	status = "okay";
424*4882a593Smuzhiyun+	vmmc-supply = <&vdd_3v3>;
425*4882a593Smuzhiyun+	vmmc_aux-supply = <&vdd_sd>;
426*4882a593Smuzhiyun+	vqmmc-supply = <&vdd_sd>;  /* IO Line Power */
427*4882a593Smuzhiyun+	bus-width = <4>;
428*4882a593Smuzhiyun+	max-frequency = <24000000>;
429*4882a593Smuzhiyun+	cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>; /* gpio 219 */
430*4882a593Smuzhiyun+
431*4882a593Smuzhiyun+	pinctrl-names = "default", "hs", "sdr12", "sdr25", "sdr50", "ddr50", "sdr104";
432*4882a593Smuzhiyun+	pinctrl-0 = <&mmc1_pins_default>;
433*4882a593Smuzhiyun+	pinctrl-1 = <&mmc1_pins_hs>;
434*4882a593Smuzhiyun+	pinctrl-2 = <&mmc1_pins_sdr12>;
435*4882a593Smuzhiyun+	pinctrl-3 = <&mmc1_pins_sdr25>;
436*4882a593Smuzhiyun+	pinctrl-4 = <&mmc1_pins_sdr50>;
437*4882a593Smuzhiyun+	pinctrl-5 = <&mmc1_pins_ddr50 &mmc1_iodelay_ddr_rev20_conf>;
438*4882a593Smuzhiyun+	pinctrl-6 = <&mmc1_pins_sdr104 &mmc1_iodelay_sdr104_rev20_conf>;
439*4882a593Smuzhiyun+};
440*4882a593Smuzhiyun+
441*4882a593Smuzhiyun+&mmc2 {
442*4882a593Smuzhiyun+	status = "okay";
443*4882a593Smuzhiyun+	vmmc-supply = <&vdd_3v3>;
444*4882a593Smuzhiyun+	//FUTURE: vqmmc-supply = <&vdd_3v3>; /* IO Line Power */
445*4882a593Smuzhiyun+	bus-width = <8>;
446*4882a593Smuzhiyun+	ti,non-removable;
447*4882a593Smuzhiyun+	non-removable;
448*4882a593Smuzhiyun+	max-frequency = <96000000>;
449*4882a593Smuzhiyun+	no-1-8-v;
450*4882a593Smuzhiyun+	/delete-property/ mmc-hs200-1_8v;
451*4882a593Smuzhiyun+
452*4882a593Smuzhiyun+	pinctrl-names = "default", "hs";
453*4882a593Smuzhiyun+	pinctrl-0 = <&mmc2_pins_default>;
454*4882a593Smuzhiyun+	pinctrl-1 = <&mmc2_pins_hs>;
455*4882a593Smuzhiyun+};
456*4882a593Smuzhiyun+
457*4882a593Smuzhiyun+&usb2_phy1 {
458*4882a593Smuzhiyun+	phy-supply = <&ldousb_reg>;
459*4882a593Smuzhiyun+};
460*4882a593Smuzhiyun+
461*4882a593Smuzhiyun+&usb2_phy2 {
462*4882a593Smuzhiyun+	phy-supply = <&ldousb_reg>;
463*4882a593Smuzhiyun+};
464*4882a593Smuzhiyun+
465*4882a593Smuzhiyun+&usb1 {
466*4882a593Smuzhiyun+	dr_mode = "host";
467*4882a593Smuzhiyun+};
468*4882a593Smuzhiyun+
469*4882a593Smuzhiyun+&omap_dwc3_2 {
470*4882a593Smuzhiyun+	extcon = <&extcon_usb2>;
471*4882a593Smuzhiyun+};
472*4882a593Smuzhiyun+
473*4882a593Smuzhiyun+&usb2 {
474*4882a593Smuzhiyun+	dr_mode = "peripheral";
475*4882a593Smuzhiyun+};
476*4882a593Smuzhiyun+
477*4882a593Smuzhiyun+&cpu_trips {
478*4882a593Smuzhiyun+	cpu_alert1: cpu_alert1 {
479*4882a593Smuzhiyun+		temperature = <50000>; /* millicelsius */
480*4882a593Smuzhiyun+		hysteresis = <2000>; /* millicelsius */
481*4882a593Smuzhiyun+		type = "active";
482*4882a593Smuzhiyun+	};
483*4882a593Smuzhiyun+};
484*4882a593Smuzhiyun+
485*4882a593Smuzhiyun+&cpu_cooling_maps {
486*4882a593Smuzhiyun+	map1 {
487*4882a593Smuzhiyun+		trip = <&cpu_alert1>;
488*4882a593Smuzhiyun+	};
489*4882a593Smuzhiyun+};
490*4882a593Smuzhiyun+
491*4882a593Smuzhiyun+&thermal_zones {
492*4882a593Smuzhiyun+	board_thermal: board_thermal {
493*4882a593Smuzhiyun+		polling-delay-passive = <1250>; /* milliseconds */
494*4882a593Smuzhiyun+		polling-delay = <1500>; /* milliseconds */
495*4882a593Smuzhiyun+
496*4882a593Smuzhiyun+		board_trips: trips {
497*4882a593Smuzhiyun+			board_alert0: board_alert {
498*4882a593Smuzhiyun+				temperature = <40000>; /* millicelsius */
499*4882a593Smuzhiyun+				hysteresis = <2000>; /* millicelsius */
500*4882a593Smuzhiyun+				type = "active";
501*4882a593Smuzhiyun+			};
502*4882a593Smuzhiyun+
503*4882a593Smuzhiyun+			board_crit: board_crit {
504*4882a593Smuzhiyun+				temperature = <105000>; /* millicelsius */
505*4882a593Smuzhiyun+				hysteresis = <0>; /* millicelsius */
506*4882a593Smuzhiyun+				type = "critical";
507*4882a593Smuzhiyun+			};
508*4882a593Smuzhiyun+		};
509*4882a593Smuzhiyun+
510*4882a593Smuzhiyun+		board_cooling_maps: cooling-maps {
511*4882a593Smuzhiyun+			map0 {
512*4882a593Smuzhiyun+				trip = <&board_alert0>;
513*4882a593Smuzhiyun+			};
514*4882a593Smuzhiyun+		};
515*4882a593Smuzhiyun+       };
516*4882a593Smuzhiyun+};
517*4882a593Smuzhiyun+
518*4882a593Smuzhiyun+&mailbox5 {
519*4882a593Smuzhiyun+	status = "okay";
520*4882a593Smuzhiyun+	mbox_ipu1_ipc3x: mbox_ipu1_ipc3x {
521*4882a593Smuzhiyun+		status = "okay";
522*4882a593Smuzhiyun+	};
523*4882a593Smuzhiyun+	mbox_dsp1_ipc3x: mbox_dsp1_ipc3x {
524*4882a593Smuzhiyun+		status = "okay";
525*4882a593Smuzhiyun+	};
526*4882a593Smuzhiyun+};
527*4882a593Smuzhiyun+
528*4882a593Smuzhiyun+&mailbox6 {
529*4882a593Smuzhiyun+	status = "okay";
530*4882a593Smuzhiyun+	mbox_ipu2_ipc3x: mbox_ipu2_ipc3x {
531*4882a593Smuzhiyun+		status = "okay";
532*4882a593Smuzhiyun+	};
533*4882a593Smuzhiyun+	mbox_dsp2_ipc3x: mbox_dsp2_ipc3x {
534*4882a593Smuzhiyun+		status = "okay";
535*4882a593Smuzhiyun+	};
536*4882a593Smuzhiyun+};
537*4882a593Smuzhiyundiff --git a/arch/arm/mach-omap2/omap5/hw_data.c b/arch/arm/mach-omap2/omap5/hw_data.c
538*4882a593Smuzhiyunindex c4a41db92a..57b23b93b5 100644
539*4882a593Smuzhiyun--- a/arch/arm/mach-omap2/omap5/hw_data.c
540*4882a593Smuzhiyun+++ b/arch/arm/mach-omap2/omap5/hw_data.c
541*4882a593Smuzhiyun@@ -418,8 +418,10 @@ void enable_basic_clocks(void)
542*4882a593Smuzhiyun 		(*prcm)->cm_l3init_hsmmc2_clkctrl,
543*4882a593Smuzhiyun 		(*prcm)->cm_l4per_gptimer2_clkctrl,
544*4882a593Smuzhiyun 		(*prcm)->cm_wkup_wdtimer2_clkctrl,
545*4882a593Smuzhiyun+		(*prcm)->cm_l4per_uart1_clkctrl,
546*4882a593Smuzhiyun 		(*prcm)->cm_l4per_uart3_clkctrl,
547*4882a593Smuzhiyun 		(*prcm)->cm_l4per_i2c1_clkctrl,
548*4882a593Smuzhiyun+		(*prcm)->cm_l4per_i2c4_clkctrl,
549*4882a593Smuzhiyun #ifdef CONFIG_DRIVER_TI_CPSW
550*4882a593Smuzhiyun 		(*prcm)->cm_gmac_gmac_clkctrl,
551*4882a593Smuzhiyun #endif
552*4882a593Smuzhiyun@@ -493,7 +495,6 @@ void enable_basic_uboot_clocks(void)
553*4882a593Smuzhiyun 		(*prcm)->cm_l4per_mcspi1_clkctrl,
554*4882a593Smuzhiyun 		(*prcm)->cm_l4per_i2c2_clkctrl,
555*4882a593Smuzhiyun 		(*prcm)->cm_l4per_i2c3_clkctrl,
556*4882a593Smuzhiyun-		(*prcm)->cm_l4per_i2c4_clkctrl,
557*4882a593Smuzhiyun #if defined(CONFIG_DRA7XX)
558*4882a593Smuzhiyun 		(*prcm)->cm_ipu_i2c5_clkctrl,
559*4882a593Smuzhiyun #else
560*4882a593Smuzhiyundiff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c
561*4882a593Smuzhiyunindex 7063345dcc..47a8391de8 100644
562*4882a593Smuzhiyun--- a/board/ti/am57xx/board.c
563*4882a593Smuzhiyun+++ b/board/ti/am57xx/board.c
564*4882a593Smuzhiyun@@ -30,6 +30,8 @@
565*4882a593Smuzhiyun #include <dwc3-omap-uboot.h>
566*4882a593Smuzhiyun #include <ti-usb-phy-uboot.h>
567*4882a593Smuzhiyun #include <mmc.h>
568*4882a593Smuzhiyun+#include <dm/uclass.h>
569*4882a593Smuzhiyun+#include <i2c.h>
570*4882a593Smuzhiyun
571*4882a593Smuzhiyun #include "../common/board_detect.h"
572*4882a593Smuzhiyun #include "mux_data.h"
573*4882a593Smuzhiyun@@ -46,6 +48,7 @@
574*4882a593Smuzhiyun #define board_is_am574x_idk()	board_ti_is("AM574IDK")
575*4882a593Smuzhiyun #define board_is_am572x_idk()	board_ti_is("AM572IDK")
576*4882a593Smuzhiyun #define board_is_am571x_idk()	board_ti_is("AM571IDK")
577*4882a593Smuzhiyun+#define board_is_bbai()		board_ti_is("BBBBAI__") //no EEPROM...
578*4882a593Smuzhiyun
579*4882a593Smuzhiyun #ifdef CONFIG_DRIVER_TI_CPSW
580*4882a593Smuzhiyun #include <cpsw.h>
581*4882a593Smuzhiyun@@ -75,6 +78,12 @@ DECLARE_GLOBAL_DATA_PTR;
582*4882a593Smuzhiyun #define TPS65903X_PRIMARY_SECONDARY_PAD2	0xFB
583*4882a593Smuzhiyun #define TPS65903X_PAD2_POWERHOLD_MASK		0x20
584*4882a593Smuzhiyun
585*4882a593Smuzhiyun+#define CAPE_EEPROM_BUS_NUM 3
586*4882a593Smuzhiyun+#define CAPE_EEPROM_ADDR0 0x54
587*4882a593Smuzhiyun+#define CAPE_EEPROM_ADDR3 0x57
588*4882a593Smuzhiyun+
589*4882a593Smuzhiyun+#define CAPE_EEPROM_ADDR_LEN 0x10
590*4882a593Smuzhiyun+
591*4882a593Smuzhiyun const struct omap_sysinfo sysinfo = {
592*4882a593Smuzhiyun 	"Board: UNKNOWN(BeagleBoard X15?) REV UNKNOWN\n"
593*4882a593Smuzhiyun };
594*4882a593Smuzhiyun@@ -84,6 +93,12 @@ static const struct dmm_lisa_map_regs beagle_x15_lisa_regs = {
595*4882a593Smuzhiyun 	.is_ma_present  = 0x1
596*4882a593Smuzhiyun };
597*4882a593Smuzhiyun
598*4882a593Smuzhiyun+static const struct dmm_lisa_map_regs bbai_lisa_regs = {
599*4882a593Smuzhiyun+	///FIXME: Document, where this magic number come from?
600*4882a593Smuzhiyun+	.dmm_lisa_map_3 = 0x80640100,
601*4882a593Smuzhiyun+	.is_ma_present  = 0x1
602*4882a593Smuzhiyun+};
603*4882a593Smuzhiyun+
604*4882a593Smuzhiyun static const struct dmm_lisa_map_regs am571x_idk_lisa_regs = {
605*4882a593Smuzhiyun 	.dmm_lisa_map_3 = 0x80640100,
606*4882a593Smuzhiyun 	.is_ma_present  = 0x1
607*4882a593Smuzhiyun@@ -101,6 +116,8 @@ void emif_get_dmm_regs(const struct dmm_lisa_map_regs **dmm_lisa_regs)
608*4882a593Smuzhiyun 		*dmm_lisa_regs = &am571x_idk_lisa_regs;
609*4882a593Smuzhiyun 	else if (board_is_am574x_idk())
610*4882a593Smuzhiyun 		*dmm_lisa_regs = &am574x_idk_lisa_regs;
611*4882a593Smuzhiyun+	else if (board_is_bbai())
612*4882a593Smuzhiyun+		*dmm_lisa_regs = &bbai_lisa_regs;
613*4882a593Smuzhiyun 	else
614*4882a593Smuzhiyun 		*dmm_lisa_regs = &beagle_x15_lisa_regs;
615*4882a593Smuzhiyun }
616*4882a593Smuzhiyun@@ -502,8 +519,30 @@ void do_board_detect(void)
617*4882a593Smuzhiyun
618*4882a593Smuzhiyun 	rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
619*4882a593Smuzhiyun 				  CONFIG_EEPROM_CHIP_ADDRESS);
620*4882a593Smuzhiyun-	if (rc)
621*4882a593Smuzhiyun+	if (rc)	{
622*4882a593Smuzhiyun 		printf("ti_i2c_eeprom_init failed %d\n", rc);
623*4882a593Smuzhiyun+		ti_i2c_eeprom_am_set("BBBBAI__", "A");
624*4882a593Smuzhiyun+	};
625*4882a593Smuzhiyun+
626*4882a593Smuzhiyun+	puts("in do_board_detect\n");
627*4882a593Smuzhiyun+	printf("do_board_detect\n");
628*4882a593Smuzhiyun+}
629*4882a593Smuzhiyun+
630*4882a593Smuzhiyun+void write_hex (unsigned char i)
631*4882a593Smuzhiyun+{
632*4882a593Smuzhiyun+	char cc;
633*4882a593Smuzhiyun+
634*4882a593Smuzhiyun+	cc = i >> 4;
635*4882a593Smuzhiyun+	cc &= 0xf;
636*4882a593Smuzhiyun+	if (cc > 9)
637*4882a593Smuzhiyun+		serial_putc (cc + 55);
638*4882a593Smuzhiyun+	else
639*4882a593Smuzhiyun+		serial_putc (cc + 48);
640*4882a593Smuzhiyun+	cc = i & 0xf;
641*4882a593Smuzhiyun+	if (cc > 9)
642*4882a593Smuzhiyun+		serial_putc (cc + 55);
643*4882a593Smuzhiyun+	else
644*4882a593Smuzhiyun+		serial_putc (cc + 48);
645*4882a593Smuzhiyun }
646*4882a593Smuzhiyun
647*4882a593Smuzhiyun #else	/* CONFIG_SPL_BUILD */
648*4882a593Smuzhiyun@@ -521,6 +560,8 @@ void do_board_detect(void)
649*4882a593Smuzhiyun
650*4882a593Smuzhiyun 	if (board_is_x15())
651*4882a593Smuzhiyun 		bname = "BeagleBoard X15";
652*4882a593Smuzhiyun+	else if (board_is_bbai())
653*4882a593Smuzhiyun+		bname = "BeagleBone AI";
654*4882a593Smuzhiyun 	else if (board_is_am572x_evm())
655*4882a593Smuzhiyun 		bname = "AM572x EVM";
656*4882a593Smuzhiyun 	else if (board_is_am574x_idk())
657*4882a593Smuzhiyun@@ -535,6 +576,23 @@ void do_board_detect(void)
658*4882a593Smuzhiyun 			 "Board: %s REV %s\n", bname, board_ti_get_rev());
659*4882a593Smuzhiyun }
660*4882a593Smuzhiyun
661*4882a593Smuzhiyun+void write_hex (unsigned char i)
662*4882a593Smuzhiyun+{
663*4882a593Smuzhiyun+	char cc;
664*4882a593Smuzhiyun+
665*4882a593Smuzhiyun+	cc = i >> 4;
666*4882a593Smuzhiyun+	cc &= 0xf;
667*4882a593Smuzhiyun+	if (cc > 9)
668*4882a593Smuzhiyun+		serial_putc (cc + 55);
669*4882a593Smuzhiyun+	else
670*4882a593Smuzhiyun+		serial_putc (cc + 48);
671*4882a593Smuzhiyun+	cc = i & 0xf;
672*4882a593Smuzhiyun+	if (cc > 9)
673*4882a593Smuzhiyun+		serial_putc (cc + 55);
674*4882a593Smuzhiyun+	else
675*4882a593Smuzhiyun+		serial_putc (cc + 48);
676*4882a593Smuzhiyun+}
677*4882a593Smuzhiyun+
678*4882a593Smuzhiyun static void setup_board_eeprom_env(void)
679*4882a593Smuzhiyun {
680*4882a593Smuzhiyun 	char *name = "beagle_x15";
681*4882a593Smuzhiyun@@ -557,6 +615,8 @@ static void setup_board_eeprom_env(void)
682*4882a593Smuzhiyun 			name = "am57xx_evm_reva3";
683*4882a593Smuzhiyun 		else
684*4882a593Smuzhiyun 			name = "am57xx_evm";
685*4882a593Smuzhiyun+	} else if (board_is_bbai()) {
686*4882a593Smuzhiyun+		name = "am5729_beagleboneai";
687*4882a593Smuzhiyun 	} else if (board_is_am574x_idk()) {
688*4882a593Smuzhiyun 		name = "am574x_idk";
689*4882a593Smuzhiyun 	} else if (board_is_am572x_idk()) {
690*4882a593Smuzhiyun@@ -626,7 +686,7 @@ void am57x_idk_lcd_detect(void)
691*4882a593Smuzhiyun 	struct udevice *dev;
692*4882a593Smuzhiyun
693*4882a593Smuzhiyun 	/* Only valid for IDKs */
694*4882a593Smuzhiyun-	if (board_is_x15() || board_is_am572x_evm())
695*4882a593Smuzhiyun+	if (board_is_x15() || board_is_am572x_evm() || board_is_bbai())
696*4882a593Smuzhiyun 		return;
697*4882a593Smuzhiyun
698*4882a593Smuzhiyun 	/* Only AM571x IDK has gpio control detect.. so check that */
699*4882a593Smuzhiyun@@ -720,6 +780,28 @@ int board_late_init(void)
700*4882a593Smuzhiyun
701*4882a593Smuzhiyun 	am57x_idk_lcd_detect();
702*4882a593Smuzhiyun
703*4882a593Smuzhiyun+	///FIXME, too late!! But useful for testing function...
704*4882a593Smuzhiyun+	unsigned char addr;
705*4882a593Smuzhiyun+	struct udevice *dev;
706*4882a593Smuzhiyun+	int rc;
707*4882a593Smuzhiyun+
708*4882a593Smuzhiyun+	for ( addr = CAPE_EEPROM_ADDR0; addr <= CAPE_EEPROM_ADDR3; addr++ ) {
709*4882a593Smuzhiyun+		puts("BeagleBone: cape eeprom: i2c_probe: 0x");  write_hex(addr); puts(":\n");
710*4882a593Smuzhiyun+		rc = i2c_get_chip_for_busnum(CAPE_EEPROM_BUS_NUM, addr, 1, &dev);
711*4882a593Smuzhiyun+		if (rc) {
712*4882a593Smuzhiyun+			printf("failed to get device for EEPROM at address 0x%x\n",
713*4882a593Smuzhiyun+			       addr);
714*4882a593Smuzhiyun+//			goto out;
715*4882a593Smuzhiyun+		}
716*4882a593Smuzhiyun+//		out:
717*4882a593Smuzhiyun+	}
718*4882a593Smuzhiyun+
719*4882a593Smuzhiyun+	if (board_is_bbai()) {
720*4882a593Smuzhiyun+		env_set("console", "ttyS0,115200n8");
721*4882a593Smuzhiyun+	} else {
722*4882a593Smuzhiyun+		env_set("console", "ttyO2,115200n8");
723*4882a593Smuzhiyun+	}
724*4882a593Smuzhiyun+
725*4882a593Smuzhiyun #if !defined(CONFIG_SPL_BUILD)
726*4882a593Smuzhiyun 	board_ti_set_ethaddr(2);
727*4882a593Smuzhiyun #endif
728*4882a593Smuzhiyun@@ -762,6 +844,13 @@ void recalibrate_iodelay(void)
729*4882a593Smuzhiyun 		pconf_sz = ARRAY_SIZE(core_padconf_array_essential_am571x_idk);
730*4882a593Smuzhiyun 		iod = iodelay_cfg_array_am571x_idk;
731*4882a593Smuzhiyun 		iod_sz = ARRAY_SIZE(iodelay_cfg_array_am571x_idk);
732*4882a593Smuzhiyun+	} else if (board_is_bbai()) {
733*4882a593Smuzhiyun+		/* Common for X15/GPEVM */
734*4882a593Smuzhiyun+		pconf = core_padconf_array_essential_bbai;
735*4882a593Smuzhiyun+		pconf_sz = ARRAY_SIZE(core_padconf_array_essential_bbai);
736*4882a593Smuzhiyun+		/* Since full production should switch to SR2.0  */
737*4882a593Smuzhiyun+		iod = iodelay_cfg_array_bbai;
738*4882a593Smuzhiyun+		iod_sz = ARRAY_SIZE(iodelay_cfg_array_bbai);
739*4882a593Smuzhiyun 	} else {
740*4882a593Smuzhiyun 		/* Common for X15/GPEVM */
741*4882a593Smuzhiyun 		pconf = core_padconf_array_essential_x15;
742*4882a593Smuzhiyun@@ -863,12 +952,50 @@ const struct mmc_platform_fixups *platform_fixups_mmc(uint32_t addr)
743*4882a593Smuzhiyun #endif
744*4882a593Smuzhiyun
745*4882a593Smuzhiyun #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_OS_BOOT)
746*4882a593Smuzhiyun+
747*4882a593Smuzhiyun+//static int eeprom_has_been_read;
748*4882a593Smuzhiyun+//static struct id_eeprom eeprom;
749*4882a593Smuzhiyun+
750*4882a593Smuzhiyun+struct am335x_cape_eeprom_id {
751*4882a593Smuzhiyun+	unsigned int header;
752*4882a593Smuzhiyun+	char eeprom_rev[2];
753*4882a593Smuzhiyun+	char board_name[32];
754*4882a593Smuzhiyun+	char version[4];
755*4882a593Smuzhiyun+	char manufacture[16];
756*4882a593Smuzhiyun+	char part_number[16];
757*4882a593Smuzhiyun+	char number_of_pins[2];
758*4882a593Smuzhiyun+	char serial_number[12];
759*4882a593Smuzhiyun+	char pin_usage[140];
760*4882a593Smuzhiyun+	char vdd_3v3exp[ 2];
761*4882a593Smuzhiyun+	char vdd_5v[ 2];
762*4882a593Smuzhiyun+	char sys_5v[2];
763*4882a593Smuzhiyun+	char dc_supplied[2];
764*4882a593Smuzhiyun+};
765*4882a593Smuzhiyun+
766*4882a593Smuzhiyun int spl_start_uboot(void)
767*4882a593Smuzhiyun {
768*4882a593Smuzhiyun 	/* break into full u-boot on 'c' */
769*4882a593Smuzhiyun 	if (serial_tstc() && serial_getc() == 'c')
770*4882a593Smuzhiyun 		return 1;
771*4882a593Smuzhiyun
772*4882a593Smuzhiyun+	//FIXME, i2c doesn't see to be up..
773*4882a593Smuzhiyun+	puts("spl_start_uboot\n");
774*4882a593Smuzhiyun+	unsigned char addr;
775*4882a593Smuzhiyun+	struct udevice *dev;
776*4882a593Smuzhiyun+	int rc;
777*4882a593Smuzhiyun+
778*4882a593Smuzhiyun+	for ( addr = CAPE_EEPROM_ADDR0; addr <= CAPE_EEPROM_ADDR3; addr++ ) {
779*4882a593Smuzhiyun+		puts("BeagleBone: cape eeprom: i2c_probe: 0x");  write_hex(addr); puts(":\n");
780*4882a593Smuzhiyun+		rc = i2c_get_chip_for_busnum(CAPE_EEPROM_BUS_NUM, addr, 1, &dev);
781*4882a593Smuzhiyun+		if (rc) {
782*4882a593Smuzhiyun+			printf("failed to get device for EEPROM at address 0x%x\n",
783*4882a593Smuzhiyun+			       addr);
784*4882a593Smuzhiyun+//			goto out;
785*4882a593Smuzhiyun+		}
786*4882a593Smuzhiyun+//		out:
787*4882a593Smuzhiyun+	}
788*4882a593Smuzhiyun+
789*4882a593Smuzhiyun+
790*4882a593Smuzhiyun #ifdef CONFIG_SPL_ENV_SUPPORT
791*4882a593Smuzhiyun 	env_init();
792*4882a593Smuzhiyun 	env_load();
793*4882a593Smuzhiyun@@ -1084,6 +1211,9 @@ int board_fit_config_name_match(const char *name)
794*4882a593Smuzhiyun 	} else if (board_is_am572x_evm() &&
795*4882a593Smuzhiyun 		   !strcmp(name, "am57xx-beagle-x15")) {
796*4882a593Smuzhiyun 		return 0;
797*4882a593Smuzhiyun+	} else if (board_is_bbai() &&
798*4882a593Smuzhiyun+		   !strcmp(name, "am5729-beagleboneai")) {
799*4882a593Smuzhiyun+		return 0;
800*4882a593Smuzhiyun 	} else if (board_is_am572x_idk() && !strcmp(name, "am572x-idk")) {
801*4882a593Smuzhiyun 		return 0;
802*4882a593Smuzhiyun 	} else if (board_is_am574x_idk() && !strcmp(name, "am574x-idk")) {
803*4882a593Smuzhiyundiff --git a/board/ti/am57xx/mux_data.h b/board/ti/am57xx/mux_data.h
804*4882a593Smuzhiyunindex d4a15ae93d..9b8ee944f8 100644
805*4882a593Smuzhiyun--- a/board/ti/am57xx/mux_data.h
806*4882a593Smuzhiyun+++ b/board/ti/am57xx/mux_data.h
807*4882a593Smuzhiyun@@ -233,6 +233,272 @@ const struct pad_conf_entry core_padconf_array_essential_x15[] = {
808*4882a593Smuzhiyun 	{RSTOUTN, (M0 | PIN_OUTPUT)},	/* rstoutn.rstoutn */
809*4882a593Smuzhiyun };
810*4882a593Smuzhiyun
811*4882a593Smuzhiyun+const struct pad_conf_entry core_padconf_array_essential_bbai[] = {
812*4882a593Smuzhiyun+	{GPMC_AD0, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad0.vin3a_d0 */
813*4882a593Smuzhiyun+	{GPMC_AD1, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad1.vin3a_d1 */
814*4882a593Smuzhiyun+	{GPMC_AD2, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad2.vin3a_d2 */
815*4882a593Smuzhiyun+	{GPMC_AD3, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad3.vin3a_d3 */
816*4882a593Smuzhiyun+	{GPMC_AD4, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad4.vin3a_d4 */
817*4882a593Smuzhiyun+	{GPMC_AD5, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad5.vin3a_d5 */
818*4882a593Smuzhiyun+	{GPMC_AD6, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad6.vin3a_d6 */
819*4882a593Smuzhiyun+	{GPMC_AD7, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad7.vin3a_d7 */
820*4882a593Smuzhiyun+	{GPMC_AD8, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad8.vin3a_d8 */
821*4882a593Smuzhiyun+	{GPMC_AD9, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad9.vin3a_d9 */
822*4882a593Smuzhiyun+	{GPMC_AD10, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad10.vin3a_d10 */
823*4882a593Smuzhiyun+	{GPMC_AD11, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad11.vin3a_d11 */
824*4882a593Smuzhiyun+	{GPMC_AD12, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad12.vin3a_d12 */
825*4882a593Smuzhiyun+	{GPMC_AD13, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad13.vin3a_d13 */
826*4882a593Smuzhiyun+	{GPMC_AD14, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad14.vin3a_d14 */
827*4882a593Smuzhiyun+	{GPMC_AD15, (M2 | PIN_INPUT | MANUAL_MODE)},	/* gpmc_ad15.vin3a_d15 */
828*4882a593Smuzhiyun+
829*4882a593Smuzhiyun+	/* Cape Bus i2c */
830*4882a593Smuzhiyun+	{GPMC_A0, (M7 | PIN_INPUT_PULLUP)},		/* R6_GPIO7_3: gpmc_a0.i2c4_scl (Shared with F4_UART10_RTSN) */
831*4882a593Smuzhiyun+	{GPMC_A1, (M7 | PIN_INPUT_PULLUP)},		/* T9_GPIO7_4: gpmc_a1.i2c4_sda (Shared with D2_UART10_CTSN) */
832*4882a593Smuzhiyun+
833*4882a593Smuzhiyun+	{GPMC_A2, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a2.vin3a_d18 */
834*4882a593Smuzhiyun+	{GPMC_A3, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a3.vin3a_d19 */
835*4882a593Smuzhiyun+	{GPMC_A4, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a4.vin3a_d20 */
836*4882a593Smuzhiyun+	{GPMC_A5, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a5.vin3a_d21 */
837*4882a593Smuzhiyun+	{GPMC_A6, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a6.vin3a_d22 */
838*4882a593Smuzhiyun+	{GPMC_A7, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a7.vin3a_d23 */
839*4882a593Smuzhiyun+	{GPMC_A8, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a8.vin3a_hsync0 */
840*4882a593Smuzhiyun+	{GPMC_A9, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a9.vin3a_vsync0 */
841*4882a593Smuzhiyun+	{GPMC_A10, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a10.vin3a_de0 */
842*4882a593Smuzhiyun+	{GPMC_A11, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_a11.vin3a_fld0 */
843*4882a593Smuzhiyun+	{GPMC_A12, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_a12.gpio2_2 */
844*4882a593Smuzhiyun+	{GPMC_A13, (M14 | PIN_INPUT_PULLDOWN)},	/* gpmc_a13.gpio2_3 */
845*4882a593Smuzhiyun+	{GPMC_A14, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_a14.gpio2_4 */
846*4882a593Smuzhiyun+	{GPMC_A15, (M14 | PIN_INPUT_PULLDOWN)},	/* gpmc_a15.gpio2_5 */
847*4882a593Smuzhiyun+	{GPMC_A16, (M14 | PIN_INPUT_PULLDOWN)},	/* gpmc_a16.gpio2_6 */
848*4882a593Smuzhiyun+	{GPMC_A17, (M14 | PIN_INPUT_PULLDOWN)},	/* gpmc_a17.gpio2_7 */
849*4882a593Smuzhiyun+	{GPMC_A18, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_a18.gpio2_8 */
850*4882a593Smuzhiyun+
851*4882a593Smuzhiyun+	/* eMMC */
852*4882a593Smuzhiyun+	{GPMC_A19, (M1 | PIN_INPUT_PULLUP)},			/*  K7: gpmc_a19.mmc2_dat4 */
853*4882a593Smuzhiyun+	{GPMC_A20, (M1 | PIN_INPUT_PULLUP)},			/*  M7: gpmc_a20.mmc2_dat5 */
854*4882a593Smuzhiyun+	{GPMC_A21, (M1 | PIN_INPUT_PULLUP)},			/*  J5: gpmc_a21.mmc2_dat6 */
855*4882a593Smuzhiyun+	{GPMC_A22, (M1 | PIN_INPUT_PULLUP)},			/*  K6: gpmc_a22.mmc2_dat7 */
856*4882a593Smuzhiyun+	{GPMC_A23, (M1 | PIN_INPUT_PULLUP)},			/*  J7: gpmc_a23.mmc2_clk */
857*4882a593Smuzhiyun+	{GPMC_A24, (M1 | PIN_INPUT_PULLUP)},			/*  J4: gpmc_a24.mmc2_dat0 */
858*4882a593Smuzhiyun+	{GPMC_A25, (M1 | PIN_INPUT_PULLUP)},			/*  J6: gpmc_a25.mmc2_dat1 */
859*4882a593Smuzhiyun+	{GPMC_A26, (M1 | PIN_INPUT_PULLUP)},			/*  H4: gpmc_a26.mmc2_dat2 */
860*4882a593Smuzhiyun+	{GPMC_A27, (M1 | PIN_INPUT_PULLUP)},			/*  H5: gpmc_a27.mmc2_dat3 */
861*4882a593Smuzhiyun+	{GPMC_CS1, (M1 | PIN_INPUT_PULLUP)},			/*  H6: gpmc_cs1.mmc2_cmd */
862*4882a593Smuzhiyun+
863*4882a593Smuzhiyun+	{GPMC_CS0, (M14 | PIN_INPUT_PULLDOWN)},	/* gpmc_cs0.gpio2_19 */
864*4882a593Smuzhiyun+	{GPMC_CS2, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_cs2.gpio2_20 */
865*4882a593Smuzhiyun+	{GPMC_CS3, (M2 | PIN_INPUT_PULLDOWN | MANUAL_MODE)},	/* gpmc_cs3.vin3a_clk0 */
866*4882a593Smuzhiyun+	{GPMC_CLK, (M9 | PIN_INPUT_PULLDOWN)},	/* gpmc_clk.dma_evt1 */
867*4882a593Smuzhiyun+	{GPMC_ADVN_ALE, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_advn_ale.gpio2_23 */
868*4882a593Smuzhiyun+	{GPMC_OEN_REN, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_oen_ren.gpio2_24 */
869*4882a593Smuzhiyun+	{GPMC_WEN, (M14 | PIN_INPUT_PULLUP)},	/* gpmc_wen.gpio2_25 */
870*4882a593Smuzhiyun+	{GPMC_BEN0, (M9 | PIN_INPUT_PULLDOWN)},	/* gpmc_ben0.dma_evt3 */
871*4882a593Smuzhiyun+	{GPMC_BEN1, (M9 | PIN_INPUT_PULLDOWN)},	/* gpmc_ben1.dma_evt4 */
872*4882a593Smuzhiyun+	{GPMC_WAIT0, (M14 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* gpmc_wait0.gpio2_28 */
873*4882a593Smuzhiyun+	{VIN1A_CLK0, (M14 | PIN_INPUT)},	/* vin1a_clk0.gpio2_30 */
874*4882a593Smuzhiyun+	{VIN1B_CLK1, (M14 | PIN_INPUT_SLEW)},	/* vin1b_clk1.gpio2_31 */
875*4882a593Smuzhiyun+	{VIN1A_D2, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d2.gpio3_6 */
876*4882a593Smuzhiyun+	{VIN1A_D3, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d3.gpio3_7 */
877*4882a593Smuzhiyun+	{VIN1A_D4, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d4.gpio3_8 */
878*4882a593Smuzhiyun+	{VIN1A_D5, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d5.gpio3_9 */
879*4882a593Smuzhiyun+	{VIN1A_D6, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d6.gpio3_10 */
880*4882a593Smuzhiyun+	{VIN1A_D7, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d7.gpio3_11 */
881*4882a593Smuzhiyun+	{VIN1A_D8, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d8.gpio3_12 */
882*4882a593Smuzhiyun+	{VIN1A_D10, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d10.gpio3_14 */
883*4882a593Smuzhiyun+	{VIN1A_D11, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d11.gpio3_15 */
884*4882a593Smuzhiyun+	{VIN1A_D12, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d12.gpio3_16 */
885*4882a593Smuzhiyun+	{VIN1A_D14, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d14.gpio3_18 */
886*4882a593Smuzhiyun+	{VIN1A_D16, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d16.gpio3_20 */
887*4882a593Smuzhiyun+	{VIN1A_D19, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d19.gpio3_23 */
888*4882a593Smuzhiyun+	{VIN1A_D20, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d20.gpio3_24 */
889*4882a593Smuzhiyun+	{VIN1A_D22, (M14 | PIN_INPUT_PULLDOWN)},	/* vin1a_d22.gpio3_26 */
890*4882a593Smuzhiyun+	{VIN2A_CLK0, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_clk0.gpio3_28 */
891*4882a593Smuzhiyun+	{VIN2A_DE0, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_de0.gpio3_29 */
892*4882a593Smuzhiyun+	{VIN2A_FLD0, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_fld0.gpio3_30 */
893*4882a593Smuzhiyun+	{VIN2A_HSYNC0, (M11 | PIN_INPUT_PULLUP)},	/* vin2a_hsync0.pr1_uart0_cts_n */
894*4882a593Smuzhiyun+	{VIN2A_VSYNC0, (M11 | PIN_OUTPUT_PULLUP)},	/* vin2a_vsync0.pr1_uart0_rts_n */
895*4882a593Smuzhiyun+	{VIN2A_D0, (M11 | PIN_INPUT_PULLUP)},	/* vin2a_d0.pr1_uart0_rxd */
896*4882a593Smuzhiyun+	{VIN2A_D1, (M11 | PIN_OUTPUT)},	/* vin2a_d1.pr1_uart0_txd */
897*4882a593Smuzhiyun+	{VIN2A_D2, (M8 | PIN_INPUT_PULLUP)},	/* vin2a_d2.uart10_rxd */
898*4882a593Smuzhiyun+	{VIN2A_D3, (M8 | PIN_OUTPUT)},	/* vin2a_d3.uart10_txd */
899*4882a593Smuzhiyun+
900*4882a593Smuzhiyun+	/* Cape Bus i2c (gpio shared) */
901*4882a593Smuzhiyun+	{VIN2A_D4, (M15 | PIN_INPUT)},			/* D2_UART10_CTSN: vin2a_d4.uart10_ctsn (Shared with T9_GPIO7_4) */
902*4882a593Smuzhiyun+	{VIN2A_D5, (M15 | PIN_INPUT)},			/* F4_UART10_RTSN: vin2a_d5.uart10_rtsn (Shared with R6_GPIO7_3) */
903*4882a593Smuzhiyun+
904*4882a593Smuzhiyun+	{VIN2A_D6, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_d6.gpio4_7 */
905*4882a593Smuzhiyun+	{VIN2A_D7, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_d7.gpio4_8 */
906*4882a593Smuzhiyun+	{VIN2A_D8, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_d8.gpio4_9 */
907*4882a593Smuzhiyun+	{VIN2A_D9, (M14 | PIN_INPUT_PULLDOWN)},	/* vin2a_d9.gpio4_10 */
908*4882a593Smuzhiyun+	{VIN2A_D10, (M10 | PIN_OUTPUT_PULLDOWN)},	/* vin2a_d10.ehrpwm2B */
909*4882a593Smuzhiyun+	{VIN2A_D11, (M10 | PIN_INPUT_PULLDOWN)},	/* vin2a_d11.ehrpwm2_tripzone_input */
910*4882a593Smuzhiyun+	{VIN2A_D12, (M3 | PIN_OUTPUT | MANUAL_MODE)},	/* vin2a_d12.rgmii1_txc */
911*4882a593Smuzhiyun+	{VIN2A_D13, (M3 | PIN_OUTPUT | MANUAL_MODE)},	/* vin2a_d13.rgmii1_txctl */
912*4882a593Smuzhiyun+	{VIN2A_D14, (M3 | PIN_OUTPUT | MANUAL_MODE)},	/* vin2a_d14.rgmii1_txd3 */
913*4882a593Smuzhiyun+	{VIN2A_D15, (M3 | PIN_OUTPUT | MANUAL_MODE)},	/* vin2a_d15.rgmii1_txd2 */
914*4882a593Smuzhiyun+	{VIN2A_D16, (M3 | PIN_OUTPUT | MANUAL_MODE)},	/* vin2a_d16.rgmii1_txd1 */
915*4882a593Smuzhiyun+	{VIN2A_D17, (M3 | PIN_OUTPUT | MANUAL_MODE)},	/* vin2a_d17.rgmii1_txd0 */
916*4882a593Smuzhiyun+	{VIN2A_D18, (M3 | PIN_INPUT | MANUAL_MODE)},	/* vin2a_d18.rgmii1_rxc */
917*4882a593Smuzhiyun+	{VIN2A_D19, (M3 | PIN_INPUT | MANUAL_MODE)},	/* vin2a_d19.rgmii1_rxctl */
918*4882a593Smuzhiyun+	{VIN2A_D20, (M3 | PIN_INPUT | MANUAL_MODE)},	/* vin2a_d20.rgmii1_rxd3 */
919*4882a593Smuzhiyun+	{VIN2A_D21, (M3 | PIN_INPUT | MANUAL_MODE)},	/* vin2a_d21.rgmii1_rxd2 */
920*4882a593Smuzhiyun+	{VIN2A_D22, (M3 | PIN_INPUT | MANUAL_MODE)},	/* vin2a_d22.rgmii1_rxd1 */
921*4882a593Smuzhiyun+	{VIN2A_D23, (M3 | PIN_INPUT | MANUAL_MODE)},	/* vin2a_d23.rgmii1_rxd0 */
922*4882a593Smuzhiyun+	{VOUT1_CLK, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_clk.vout1_clk */
923*4882a593Smuzhiyun+	{VOUT1_DE, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_de.vout1_de */
924*4882a593Smuzhiyun+	{VOUT1_FLD, (M14 | PIN_INPUT)},	/* vout1_fld.gpio4_21 */
925*4882a593Smuzhiyun+	{VOUT1_HSYNC, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_hsync.vout1_hsync */
926*4882a593Smuzhiyun+	{VOUT1_VSYNC, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_vsync.vout1_vsync */
927*4882a593Smuzhiyun+	{VOUT1_D0, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d0.vout1_d0 */
928*4882a593Smuzhiyun+	{VOUT1_D1, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d1.vout1_d1 */
929*4882a593Smuzhiyun+	{VOUT1_D2, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d2.vout1_d2 */
930*4882a593Smuzhiyun+	{VOUT1_D3, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d3.vout1_d3 */
931*4882a593Smuzhiyun+	{VOUT1_D4, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d4.vout1_d4 */
932*4882a593Smuzhiyun+	{VOUT1_D5, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d5.vout1_d5 */
933*4882a593Smuzhiyun+	{VOUT1_D6, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d6.vout1_d6 */
934*4882a593Smuzhiyun+	{VOUT1_D7, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d7.vout1_d7 */
935*4882a593Smuzhiyun+	{VOUT1_D8, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d8.vout1_d8 */
936*4882a593Smuzhiyun+	{VOUT1_D9, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d9.vout1_d9 */
937*4882a593Smuzhiyun+	{VOUT1_D10, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d10.vout1_d10 */
938*4882a593Smuzhiyun+	{VOUT1_D11, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d11.vout1_d11 */
939*4882a593Smuzhiyun+	{VOUT1_D12, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d12.vout1_d12 */
940*4882a593Smuzhiyun+	{VOUT1_D13, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d13.vout1_d13 */
941*4882a593Smuzhiyun+	{VOUT1_D14, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d14.vout1_d14 */
942*4882a593Smuzhiyun+	{VOUT1_D15, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d15.vout1_d15 */
943*4882a593Smuzhiyun+	{VOUT1_D16, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d16.vout1_d16 */
944*4882a593Smuzhiyun+	{VOUT1_D17, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d17.vout1_d17 */
945*4882a593Smuzhiyun+	{VOUT1_D18, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d18.vout1_d18 */
946*4882a593Smuzhiyun+	{VOUT1_D19, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d19.vout1_d19 */
947*4882a593Smuzhiyun+	{VOUT1_D20, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d20.vout1_d20 */
948*4882a593Smuzhiyun+	{VOUT1_D21, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d21.vout1_d21 */
949*4882a593Smuzhiyun+	{VOUT1_D22, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d22.vout1_d22 */
950*4882a593Smuzhiyun+	{VOUT1_D23, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)},	/* vout1_d23.vout1_d23 */
951*4882a593Smuzhiyun+	{MDIO_MCLK, (M0 | PIN_OUTPUT | SLEWCONTROL)},	/* mdio_mclk.mdio_mclk */
952*4882a593Smuzhiyun+	{MDIO_D, (M0 | PIN_INPUT | SLEWCONTROL)},	/* mdio_d.mdio_d */
953*4882a593Smuzhiyun+	{RMII_MHZ_50_CLK, (M14 | PIN_INPUT_PULLUP)},	/* RMII_MHZ_50_CLK.gpio5_17 */
954*4882a593Smuzhiyun+	{UART3_RXD, (M14 | PIN_INPUT_SLEW)},	/* uart3_rxd.gpio5_18 */
955*4882a593Smuzhiyun+	{UART3_TXD, (M14 | PIN_INPUT_SLEW)},	/* uart3_txd.gpio5_19 */
956*4882a593Smuzhiyun+	{RGMII0_TXC, (M0 | PIN_OUTPUT | MANUAL_MODE)},	/* rgmii0_txc.rgmii0_txc */
957*4882a593Smuzhiyun+	{RGMII0_TXCTL, (M0 | PIN_OUTPUT | MANUAL_MODE)},	/* rgmii0_txctl.rgmii0_txctl */
958*4882a593Smuzhiyun+	{RGMII0_TXD3, (M0 | PIN_OUTPUT | MANUAL_MODE)},	/* rgmii0_txd3.rgmii0_txd3 */
959*4882a593Smuzhiyun+	{RGMII0_TXD2, (M0 | PIN_OUTPUT | MANUAL_MODE)},	/* rgmii0_txd2.rgmii0_txd2 */
960*4882a593Smuzhiyun+	{RGMII0_TXD1, (M0 | PIN_OUTPUT | MANUAL_MODE)},	/* rgmii0_txd1.rgmii0_txd1 */
961*4882a593Smuzhiyun+	{RGMII0_TXD0, (M0 | PIN_OUTPUT | MANUAL_MODE)},	/* rgmii0_txd0.rgmii0_txd0 */
962*4882a593Smuzhiyun+	{RGMII0_RXC, (M0 | PIN_INPUT | MANUAL_MODE)},	/* rgmii0_rxc.rgmii0_rxc */
963*4882a593Smuzhiyun+	{RGMII0_RXCTL, (M0 | PIN_INPUT | MANUAL_MODE)},	/* rgmii0_rxctl.rgmii0_rxctl */
964*4882a593Smuzhiyun+	{RGMII0_RXD3, (M0 | PIN_INPUT | MANUAL_MODE)},	/* rgmii0_rxd3.rgmii0_rxd3 */
965*4882a593Smuzhiyun+	{RGMII0_RXD2, (M0 | PIN_INPUT | MANUAL_MODE)},	/* rgmii0_rxd2.rgmii0_rxd2 */
966*4882a593Smuzhiyun+	{RGMII0_RXD1, (M0 | PIN_INPUT | MANUAL_MODE)},	/* rgmii0_rxd1.rgmii0_rxd1 */
967*4882a593Smuzhiyun+	{RGMII0_RXD0, (M0 | PIN_INPUT | MANUAL_MODE)},	/* rgmii0_rxd0.rgmii0_rxd0 */
968*4882a593Smuzhiyun+	{USB1_DRVVBUS, (M0 | PIN_OUTPUT | SLEWCONTROL)},	/* usb1_drvvbus.usb1_drvvbus */
969*4882a593Smuzhiyun+	{USB2_DRVVBUS, (M0 | PIN_OUTPUT_PULLDOWN | SLEWCONTROL)},	/* usb2_drvvbus.usb2_drvvbus */
970*4882a593Smuzhiyun+	{GPIO6_14, (M10 | PIN_INPUT_PULLUP)},	/* gpio6_14.timer1 */
971*4882a593Smuzhiyun+	{GPIO6_15, (M10 | PIN_INPUT_PULLUP)},	/* gpio6_15.timer2 */
972*4882a593Smuzhiyun+	{GPIO6_16, (M10 | PIN_INPUT_PULLUP)},	/* gpio6_16.timer3 */
973*4882a593Smuzhiyun+	{XREF_CLK0, (M9 | PIN_OUTPUT_PULLDOWN)},	/* xref_clk0.clkout2 */
974*4882a593Smuzhiyun+	{XREF_CLK1, (M14 | PIN_INPUT_PULLDOWN)},	/* xref_clk1.gpio6_18 */
975*4882a593Smuzhiyun+	{XREF_CLK2, (M14 | PIN_INPUT_PULLDOWN)},	/* xref_clk2.gpio6_19 */
976*4882a593Smuzhiyun+	{XREF_CLK3, (M9 | PIN_OUTPUT_PULLDOWN)},	/* xref_clk3.clkout3 */
977*4882a593Smuzhiyun+	{MCASP1_ACLKX, (M10 | PIN_INPUT_PULLUP)},	/* mcasp1_aclkx.i2c3_sda */
978*4882a593Smuzhiyun+	{MCASP1_FSX, (M10 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* mcasp1_fsx.i2c3_scl */
979*4882a593Smuzhiyun+	{MCASP1_ACLKR, (M10 | PIN_INPUT_PULLUP)},	/* mcasp1_aclkr.i2c4_sda */
980*4882a593Smuzhiyun+	{MCASP1_FSR, (M10 | PIN_INPUT_PULLUP)},	/* mcasp1_fsr.i2c4_scl */
981*4882a593Smuzhiyun+	{MCASP1_AXR0, (M10 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* mcasp1_axr0.i2c5_sda */
982*4882a593Smuzhiyun+	{MCASP1_AXR1, (M10 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* mcasp1_axr1.i2c5_scl */
983*4882a593Smuzhiyun+	{MCASP1_AXR2, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr2.gpio5_4 */
984*4882a593Smuzhiyun+	{MCASP1_AXR3, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr3.gpio5_5 */
985*4882a593Smuzhiyun+	{MCASP1_AXR4, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr4.gpio5_6 */
986*4882a593Smuzhiyun+	{MCASP1_AXR5, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr5.gpio5_7 */
987*4882a593Smuzhiyun+	{MCASP1_AXR6, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr6.gpio5_8 */
988*4882a593Smuzhiyun+	{MCASP1_AXR7, (M14 | PIN_INPUT_PULLDOWN)},	/* mcasp1_axr7.gpio5_9 */
989*4882a593Smuzhiyun+	{MCASP1_AXR8, (M14 | PIN_INPUT | SLEWCONTROL)},	/* mcasp1_axr8.gpio5_10 */
990*4882a593Smuzhiyun+	{MCASP1_AXR9, (M14 | PIN_INPUT | SLEWCONTROL)},	/* mcasp1_axr9.gpio5_11 */
991*4882a593Smuzhiyun+	{MCASP1_AXR10, (M14 | PIN_INPUT | SLEWCONTROL)},	/* mcasp1_axr10.gpio5_12 */
992*4882a593Smuzhiyun+	{MCASP1_AXR11, (M14 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* mcasp1_axr11.gpio4_17 */
993*4882a593Smuzhiyun+	{MCASP1_AXR12, (M1 | PIN_INPUT_SLEW | VIRTUAL_MODE10)},	/* mcasp1_axr12.mcasp7_axr0 */
994*4882a593Smuzhiyun+	{MCASP1_AXR13, (M1 | PIN_INPUT_SLEW | VIRTUAL_MODE10)},	/* mcasp1_axr13.mcasp7_axr1 */
995*4882a593Smuzhiyun+	{MCASP1_AXR14, (M1 | PIN_INPUT_SLEW | VIRTUAL_MODE10)},	/* mcasp1_axr14.mcasp7_aclkx */
996*4882a593Smuzhiyun+	{MCASP1_AXR15, (M1 | PIN_INPUT_SLEW | VIRTUAL_MODE10)},	/* mcasp1_axr15.mcasp7_fsx */
997*4882a593Smuzhiyun+	{MCASP3_ACLKX, (M0 | PIN_INPUT_PULLDOWN)},	/* mcasp3_aclkx.mcasp3_aclkx */
998*4882a593Smuzhiyun+	{MCASP3_FSX, (M0 | PIN_INPUT_SLEW)},	/* mcasp3_fsx.mcasp3_fsx */
999*4882a593Smuzhiyun+	{MCASP3_AXR0, (M0 | PIN_INPUT_SLEW)},	/* mcasp3_axr0.mcasp3_axr0 */
1000*4882a593Smuzhiyun+	{MCASP3_AXR1, (M0 | PIN_INPUT_SLEW)},	/* mcasp3_axr1.mcasp3_axr1 */
1001*4882a593Smuzhiyun+	{MCASP4_ACLKX, (M3 | PIN_INPUT_PULLUP)},	/* mcasp4_aclkx.uart8_rxd */
1002*4882a593Smuzhiyun+	{MCASP4_FSX, (M3 | PIN_OUTPUT)},	/* mcasp4_fsx.uart8_txd */
1003*4882a593Smuzhiyun+	{MCASP4_AXR0, (M3 | PIN_INPUT_PULLUP)},	/* mcasp4_axr0.uart8_ctsn */
1004*4882a593Smuzhiyun+	{MCASP4_AXR1, (M3 | PIN_OUTPUT_PULLUP)},	/* mcasp4_axr1.uart8_rtsn */
1005*4882a593Smuzhiyun+	{MCASP5_ACLKX, (M3 | PIN_INPUT_PULLUP)},	/* mcasp5_aclkx.uart9_rxd */
1006*4882a593Smuzhiyun+	{MCASP5_FSX, (M3 | PIN_OUTPUT)},	/* mcasp5_fsx.uart9_txd */
1007*4882a593Smuzhiyun+	{MCASP5_AXR0, (M3 | PIN_INPUT_PULLUP)},	/* mcasp5_axr0.uart9_ctsn */
1008*4882a593Smuzhiyun+	{MCASP5_AXR1, (M3 | PIN_OUTPUT_PULLUP)},	/* mcasp5_axr1.uart9_rtsn */
1009*4882a593Smuzhiyun+
1010*4882a593Smuzhiyun+	/* microSD Socket */
1011*4882a593Smuzhiyun+	{MMC1_CLK, (M0 | PIN_INPUT_PULLUP)},			/*  W6: mmc1_clk.mmc1_clk */
1012*4882a593Smuzhiyun+	{MMC1_CMD, (M0 | PIN_INPUT_PULLUP)},			/*  Y6: mmc1_cmd.mmc1_cmd */
1013*4882a593Smuzhiyun+	{MMC1_DAT0, (M0 | PIN_INPUT_PULLUP)},			/* AA6: mmc1_dat0.mmc1_dat0 */
1014*4882a593Smuzhiyun+	{MMC1_DAT1, (M0 | PIN_INPUT_PULLUP)},			/*  Y4: mmc1_dat1.mmc1_dat1 */
1015*4882a593Smuzhiyun+	{MMC1_DAT2, (M0 | PIN_INPUT_PULLUP)},			/* AA5: mmc1_dat2.mmc1_dat2 */
1016*4882a593Smuzhiyun+	{MMC1_DAT3, (M0 | PIN_INPUT_PULLUP)},			/*  Y3: mmc1_dat3.mmc1_dat3 */
1017*4882a593Smuzhiyun+	{MMC1_SDCD, (M14 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/*  W7: mmc1_sdcd.gpio6_27 */
1018*4882a593Smuzhiyun+
1019*4882a593Smuzhiyun+	{GPIO6_10, (M10 | PIN_OUTPUT_PULLDOWN)},	/* gpio6_10.ehrpwm2A */
1020*4882a593Smuzhiyun+	{GPIO6_11, (M0 | PIN_INPUT_PULLUP)},	/* gpio6_11.gpio6_11 */
1021*4882a593Smuzhiyun+	{MMC3_CLK, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_clk.mmc3_clk */
1022*4882a593Smuzhiyun+	{MMC3_CMD, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_cmd.mmc3_cmd */
1023*4882a593Smuzhiyun+	{MMC3_DAT0, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat0.mmc3_dat0 */
1024*4882a593Smuzhiyun+	{MMC3_DAT1, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat1.mmc3_dat1 */
1025*4882a593Smuzhiyun+	{MMC3_DAT2, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat2.mmc3_dat2 */
1026*4882a593Smuzhiyun+	{MMC3_DAT3, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat3.mmc3_dat3 */
1027*4882a593Smuzhiyun+	{MMC3_DAT4, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat4.mmc3_dat4 */
1028*4882a593Smuzhiyun+	{MMC3_DAT5, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat5.mmc3_dat5 */
1029*4882a593Smuzhiyun+	{MMC3_DAT6, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat6.mmc3_dat6 */
1030*4882a593Smuzhiyun+	{MMC3_DAT7, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)},	/* mmc3_dat7.mmc3_dat7 */
1031*4882a593Smuzhiyun+	{SPI1_SCLK, (M14 | PIN_INPUT_PULLDOWN)},	/* spi1_sclk.gpio7_7 */
1032*4882a593Smuzhiyun+	{SPI1_D1, (M14 | PIN_INPUT_PULLDOWN)},	/* spi1_d1.gpio7_8 */
1033*4882a593Smuzhiyun+	{SPI1_D0, (M14 | PIN_INPUT_PULLDOWN)},	/* spi1_d0.gpio7_9 */
1034*4882a593Smuzhiyun+	{SPI1_CS0, (M14 | PIN_INPUT)},	/* spi1_cs0.gpio7_10 */
1035*4882a593Smuzhiyun+	{SPI1_CS1, (M14 | PIN_INPUT)},	/* spi1_cs1.gpio7_11 */
1036*4882a593Smuzhiyun+	{SPI1_CS2, (M14 | PIN_INPUT_SLEW)},	/* spi1_cs2.gpio7_12 */
1037*4882a593Smuzhiyun+	{SPI1_CS3, (M6 | PIN_INPUT | SLEWCONTROL)},	/* spi1_cs3.hdmi1_cec */
1038*4882a593Smuzhiyun+	{SPI2_SCLK, (M14 | PIN_INPUT_PULLDOWN)},	/* spi2_sclk.gpio7_14 */
1039*4882a593Smuzhiyun+	{SPI2_D1, (M14 | PIN_INPUT_SLEW)},	/* spi2_d1.gpio7_15 */
1040*4882a593Smuzhiyun+	{SPI2_D0, (M14 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* spi2_d0.gpio7_16 */
1041*4882a593Smuzhiyun+	{SPI2_CS0, (M14 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* spi2_cs0.gpio7_17 */
1042*4882a593Smuzhiyun+	{DCAN1_TX, (M0 | PIN_OUTPUT | SLEWCONTROL)},	/* dcan1_tx.dcan1_tx */
1043*4882a593Smuzhiyun+	{DCAN1_RX, (M0 | PIN_INPUT | SLEWCONTROL)},	/* dcan1_rx.dcan1_rx */
1044*4882a593Smuzhiyun+
1045*4882a593Smuzhiyun+	/* BeagleBone AI: Debug UART */
1046*4882a593Smuzhiyun+	{UART1_RXD, (M0 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* uart1_rxd.uart1_rxd */
1047*4882a593Smuzhiyun+	{UART1_TXD, (M0 | PIN_OUTPUT | SLEWCONTROL)},	/* uart1_txd.uart1_txd */
1048*4882a593Smuzhiyun+
1049*4882a593Smuzhiyun+	{UART1_CTSN, (M14 | PIN_INPUT_PULLDOWN)},	/* uart1_ctsn.gpio7_24 */
1050*4882a593Smuzhiyun+	{UART1_RTSN, (M14 | PIN_INPUT)},	/* uart1_rtsn.gpio7_25 */
1051*4882a593Smuzhiyun+	{UART2_RXD, (M14 | PIN_INPUT_PULLDOWN)},	/* uart2_rxd.gpio7_26 */
1052*4882a593Smuzhiyun+	{UART2_TXD, (M14 | PIN_INPUT_PULLDOWN)},	/* uart2_txd.gpio7_27 */
1053*4882a593Smuzhiyun+	{UART2_CTSN, (M2 | PIN_INPUT_PULLUP)},	/* uart2_ctsn.uart3_rxd */
1054*4882a593Smuzhiyun+	{UART2_RTSN, (M1 | PIN_OUTPUT)},	/* uart2_rtsn.uart3_txd */
1055*4882a593Smuzhiyun+	{I2C1_SDA, (M0 | PIN_INPUT_PULLUP)},	/* i2c1_sda.i2c1_sda */
1056*4882a593Smuzhiyun+	{I2C1_SCL, (M0 | PIN_INPUT_PULLUP)},	/* i2c1_scl.i2c1_scl */
1057*4882a593Smuzhiyun+	{I2C2_SDA, (M1 | PIN_INPUT_PULLUP)},	/* i2c2_sda.hdmi1_ddc_scl */
1058*4882a593Smuzhiyun+	{I2C2_SCL, (M1 | PIN_INPUT_PULLUP)},	/* i2c2_scl.hdmi1_ddc_sda */
1059*4882a593Smuzhiyun+	{WAKEUP0, (M0 | PIN_INPUT)},	/* Wakeup0.Wakeup0 */
1060*4882a593Smuzhiyun+	{WAKEUP1, (M0 | PIN_INPUT)},	/* Wakeup1.Wakeup1 */
1061*4882a593Smuzhiyun+	{WAKEUP2, (M0 | PIN_INPUT)},	/* Wakeup2.Wakeup2 */
1062*4882a593Smuzhiyun+	{WAKEUP3, (M0 | PIN_INPUT)},	/* Wakeup3.Wakeup3 */
1063*4882a593Smuzhiyun+	{ON_OFF, (M0 | PIN_OUTPUT)},	/* on_off.on_off */
1064*4882a593Smuzhiyun+	{RTC_PORZ, (M0 | PIN_INPUT)},	/* rtc_porz.rtc_porz */
1065*4882a593Smuzhiyun+	{TMS, (M0 | PIN_INPUT_PULLUP)},	/* tms.tms */
1066*4882a593Smuzhiyun+	{TDI, (M0 | PIN_INPUT_PULLUP | SLEWCONTROL)},	/* tdi.tdi */
1067*4882a593Smuzhiyun+	{TDO, (M0 | PIN_OUTPUT)},	/* tdo.tdo */
1068*4882a593Smuzhiyun+	{TCLK, (M0 | PIN_INPUT_PULLDOWN)},	/* tclk.tclk */
1069*4882a593Smuzhiyun+	{TRSTN, (M0 | PIN_INPUT)},	/* trstn.trstn */
1070*4882a593Smuzhiyun+	{RTCK, (M0 | PIN_OUTPUT)},	/* rtck.rtck */
1071*4882a593Smuzhiyun+	{EMU0, (M0 | PIN_INPUT)},	/* emu0.emu0 */
1072*4882a593Smuzhiyun+	{EMU1, (M0 | PIN_INPUT)},	/* emu1.emu1 */
1073*4882a593Smuzhiyun+	{NMIN_DSP, (M0 | PIN_INPUT)},	/* nmin_dsp.nmin_dsp */
1074*4882a593Smuzhiyun+	{RSTOUTN, (M0 | PIN_OUTPUT)},	/* rstoutn.rstoutn */
1075*4882a593Smuzhiyun+};
1076*4882a593Smuzhiyun+
1077*4882a593Smuzhiyun const struct pad_conf_entry core_padconf_array_delta_x15_sr1_1[] = {
1078*4882a593Smuzhiyun 	{MMC1_SDWP, (M14 | PIN_INPUT | SLEWCONTROL)},	/* mmc1_sdwp.gpio6_28 */
1079*4882a593Smuzhiyun 	{VOUT1_CLK, (M0 | PIN_OUTPUT | SLEWCONTROL)},	/* vout1_clk.vout1_clk */
1080*4882a593Smuzhiyun@@ -998,6 +1264,17 @@ const struct pad_conf_entry early_padconf[] = {
1081*4882a593Smuzhiyun 	{UART2_RTSN, (M1 | PIN_INPUT_SLEW)},	/* uart2_rtsn.uart3_txd */
1082*4882a593Smuzhiyun 	{I2C1_SDA, (PIN_INPUT_PULLUP | M0)},	/* I2C1_SDA */
1083*4882a593Smuzhiyun 	{I2C1_SCL, (PIN_INPUT_PULLUP | M0)},	/* I2C1_SCL */
1084*4882a593Smuzhiyun+
1085*4882a593Smuzhiyun+	/* BeagleBone AI: Debug UART */
1086*4882a593Smuzhiyun+	{UART1_RXD, (M0 | PIN_INPUT_SLEW)},	/* UART1_RXD */
1087*4882a593Smuzhiyun+	{UART1_TXD, (M0 | PIN_INPUT_SLEW)},	/* UART1_TXD */
1088*4882a593Smuzhiyun+
1089*4882a593Smuzhiyun+	/* Cape Bus i2c */
1090*4882a593Smuzhiyun+	{GPMC_A0, (M7 | PIN_INPUT_PULLUP)},	/* R6_GPIO7_3: gpmc_a0.i2c4_scl (Shared with F4_UART10_RTSN) */
1091*4882a593Smuzhiyun+	{GPMC_A1, (M7 | PIN_INPUT_PULLUP)},	/* T9_GPIO7_4: gpmc_a1.i2c4_sda (Shared with D2_UART10_CTSN) */
1092*4882a593Smuzhiyun+	/* Cape Bus i2c (gpio shared) */
1093*4882a593Smuzhiyun+	{VIN2A_D4, (M14 | PIN_INPUT_PULLUP)},	/* D2_UART10_CTSN: vin2a_d4.uart10_ctsn (Shared with T9_GPIO7_4) */
1094*4882a593Smuzhiyun+	{VIN2A_D5, (M14 | PIN_INPUT_PULLUP)},	/* F4_UART10_RTSN: vin2a_d5.uart10_rtsn (Shared with R6_GPIO7_3) */
1095*4882a593Smuzhiyun };
1096*4882a593Smuzhiyun
1097*4882a593Smuzhiyun #ifdef CONFIG_IODELAY_RECALIBRATION
1098*4882a593Smuzhiyun@@ -1199,6 +1476,119 @@ const struct iodelay_cfg_entry iodelay_cfg_array_x15_sr2_0[] = {
1099*4882a593Smuzhiyun 	{0x0CEC, 2739, 0},	/* CFG_VOUT1_VSYNC_OUT */
1100*4882a593Smuzhiyun };
1101*4882a593Smuzhiyun
1102*4882a593Smuzhiyun+const struct iodelay_cfg_entry iodelay_cfg_array_bbai[] = {
1103*4882a593Smuzhiyun+	{0x0114, 2519, 702},	/* CFG_GPMC_A0_IN */
1104*4882a593Smuzhiyun+	{0x0120, 2435, 411},	/* CFG_GPMC_A10_IN */
1105*4882a593Smuzhiyun+	{0x012C, 2379, 755},	/* CFG_GPMC_A11_IN */
1106*4882a593Smuzhiyun+	{0x0198, 2384, 778},	/* CFG_GPMC_A1_IN */
1107*4882a593Smuzhiyun+	{0x0204, 2499, 1127},	/* CFG_GPMC_A2_IN */
1108*4882a593Smuzhiyun+	{0x0210, 2455, 1181},	/* CFG_GPMC_A3_IN */
1109*4882a593Smuzhiyun+	{0x021C, 2486, 1039},	/* CFG_GPMC_A4_IN */
1110*4882a593Smuzhiyun+	{0x0228, 2456, 938},	/* CFG_GPMC_A5_IN */
1111*4882a593Smuzhiyun+	{0x0234, 2463, 573},	/* CFG_GPMC_A6_IN */
1112*4882a593Smuzhiyun+	{0x0240, 2608, 783},	/* CFG_GPMC_A7_IN */
1113*4882a593Smuzhiyun+	{0x024C, 2430, 656},	/* CFG_GPMC_A8_IN */
1114*4882a593Smuzhiyun+	{0x0258, 2465, 850},	/* CFG_GPMC_A9_IN */
1115*4882a593Smuzhiyun+	{0x0264, 2316, 301},	/* CFG_GPMC_AD0_IN */
1116*4882a593Smuzhiyun+	{0x0270, 2324, 406},	/* CFG_GPMC_AD10_IN */
1117*4882a593Smuzhiyun+	{0x027C, 2278, 352},	/* CFG_GPMC_AD11_IN */
1118*4882a593Smuzhiyun+	{0x0288, 2297, 160},	/* CFG_GPMC_AD12_IN */
1119*4882a593Smuzhiyun+	{0x0294, 2278, 108},	/* CFG_GPMC_AD13_IN */
1120*4882a593Smuzhiyun+	{0x02A0, 2035, 0},	/* CFG_GPMC_AD14_IN */
1121*4882a593Smuzhiyun+	{0x02AC, 2279, 378},	/* CFG_GPMC_AD15_IN */
1122*4882a593Smuzhiyun+	{0x02B8, 2440, 70},	/* CFG_GPMC_AD1_IN */
1123*4882a593Smuzhiyun+	{0x02C4, 2404, 446},	/* CFG_GPMC_AD2_IN */
1124*4882a593Smuzhiyun+	{0x02D0, 2343, 212},	/* CFG_GPMC_AD3_IN */
1125*4882a593Smuzhiyun+	{0x02DC, 2355, 322},	/* CFG_GPMC_AD4_IN */
1126*4882a593Smuzhiyun+	{0x02E8, 2337, 192},	/* CFG_GPMC_AD5_IN */
1127*4882a593Smuzhiyun+	{0x02F4, 2270, 314},	/* CFG_GPMC_AD6_IN */
1128*4882a593Smuzhiyun+	{0x0300, 2339, 259},	/* CFG_GPMC_AD7_IN */
1129*4882a593Smuzhiyun+	{0x030C, 2308, 577},	/* CFG_GPMC_AD8_IN */
1130*4882a593Smuzhiyun+	{0x0318, 2334, 166},	/* CFG_GPMC_AD9_IN */
1131*4882a593Smuzhiyun+	{0x0378, 0, 0},	/* CFG_GPMC_CS3_IN */
1132*4882a593Smuzhiyun+	{0x0678, 0, 386},	/* CFG_MMC3_CLK_IN */
1133*4882a593Smuzhiyun+	{0x0680, 605, 0},	/* CFG_MMC3_CLK_OUT */
1134*4882a593Smuzhiyun+	{0x0684, 0, 0},	/* CFG_MMC3_CMD_IN */
1135*4882a593Smuzhiyun+	{0x0688, 0, 0},	/* CFG_MMC3_CMD_OEN */
1136*4882a593Smuzhiyun+	{0x068C, 0, 0},	/* CFG_MMC3_CMD_OUT */
1137*4882a593Smuzhiyun+	{0x0690, 171, 0},	/* CFG_MMC3_DAT0_IN */
1138*4882a593Smuzhiyun+	{0x0694, 0, 0},	/* CFG_MMC3_DAT0_OEN */
1139*4882a593Smuzhiyun+	{0x0698, 0, 0},	/* CFG_MMC3_DAT0_OUT */
1140*4882a593Smuzhiyun+	{0x069C, 221, 0},	/* CFG_MMC3_DAT1_IN */
1141*4882a593Smuzhiyun+	{0x06A0, 0, 0},	/* CFG_MMC3_DAT1_OEN */
1142*4882a593Smuzhiyun+	{0x06A4, 0, 0},	/* CFG_MMC3_DAT1_OUT */
1143*4882a593Smuzhiyun+	{0x06A8, 0, 0},	/* CFG_MMC3_DAT2_IN */
1144*4882a593Smuzhiyun+	{0x06AC, 0, 0},	/* CFG_MMC3_DAT2_OEN */
1145*4882a593Smuzhiyun+	{0x06B0, 0, 0},	/* CFG_MMC3_DAT2_OUT */
1146*4882a593Smuzhiyun+	{0x06B4, 474, 0},	/* CFG_MMC3_DAT3_IN */
1147*4882a593Smuzhiyun+	{0x06B8, 0, 0},	/* CFG_MMC3_DAT3_OEN */
1148*4882a593Smuzhiyun+	{0x06BC, 0, 0},	/* CFG_MMC3_DAT3_OUT */
1149*4882a593Smuzhiyun+	{0x06C0, 792, 0},	/* CFG_MMC3_DAT4_IN */
1150*4882a593Smuzhiyun+	{0x06C4, 0, 0},	/* CFG_MMC3_DAT4_OEN */
1151*4882a593Smuzhiyun+	{0x06C8, 0, 0},	/* CFG_MMC3_DAT4_OUT */
1152*4882a593Smuzhiyun+	{0x06CC, 782, 0},	/* CFG_MMC3_DAT5_IN */
1153*4882a593Smuzhiyun+	{0x06D0, 0, 0},	/* CFG_MMC3_DAT5_OEN */
1154*4882a593Smuzhiyun+	{0x06D4, 0, 0},	/* CFG_MMC3_DAT5_OUT */
1155*4882a593Smuzhiyun+	{0x06D8, 942, 0},	/* CFG_MMC3_DAT6_IN */
1156*4882a593Smuzhiyun+	{0x06DC, 0, 0},	/* CFG_MMC3_DAT6_OEN */
1157*4882a593Smuzhiyun+	{0x06E0, 0, 0},	/* CFG_MMC3_DAT6_OUT */
1158*4882a593Smuzhiyun+	{0x06E4, 636, 0},	/* CFG_MMC3_DAT7_IN */
1159*4882a593Smuzhiyun+	{0x06E8, 0, 0},	/* CFG_MMC3_DAT7_OEN */
1160*4882a593Smuzhiyun+	{0x06EC, 0, 0},	/* CFG_MMC3_DAT7_OUT */
1161*4882a593Smuzhiyun+	{0x06F0, 260, 0},	/* CFG_RGMII0_RXC_IN */
1162*4882a593Smuzhiyun+	{0x06FC, 0, 1412},	/* CFG_RGMII0_RXCTL_IN */
1163*4882a593Smuzhiyun+	{0x0708, 123, 1047},	/* CFG_RGMII0_RXD0_IN */
1164*4882a593Smuzhiyun+	{0x0714, 139, 1081},	/* CFG_RGMII0_RXD1_IN */
1165*4882a593Smuzhiyun+	{0x0720, 195, 1100},	/* CFG_RGMII0_RXD2_IN */
1166*4882a593Smuzhiyun+	{0x072C, 239, 1216},	/* CFG_RGMII0_RXD3_IN */
1167*4882a593Smuzhiyun+	{0x0740, 89, 0},	/* CFG_RGMII0_TXC_OUT */
1168*4882a593Smuzhiyun+	{0x074C, 15, 125},	/* CFG_RGMII0_TXCTL_OUT */
1169*4882a593Smuzhiyun+	{0x0758, 339, 162},	/* CFG_RGMII0_TXD0_OUT */
1170*4882a593Smuzhiyun+	{0x0764, 146, 94},	/* CFG_RGMII0_TXD1_OUT */
1171*4882a593Smuzhiyun+	{0x0770, 0, 27},	/* CFG_RGMII0_TXD2_OUT */
1172*4882a593Smuzhiyun+	{0x077C, 291, 205},	/* CFG_RGMII0_TXD3_OUT */
1173*4882a593Smuzhiyun+	{0x0A70, 0, 0},	/* CFG_VIN2A_D12_OUT */
1174*4882a593Smuzhiyun+	{0x0A7C, 219, 101},	/* CFG_VIN2A_D13_OUT */
1175*4882a593Smuzhiyun+	{0x0A88, 92, 58},	/* CFG_VIN2A_D14_OUT */
1176*4882a593Smuzhiyun+	{0x0A94, 135, 100},	/* CFG_VIN2A_D15_OUT */
1177*4882a593Smuzhiyun+	{0x0AA0, 154, 101},	/* CFG_VIN2A_D16_OUT */
1178*4882a593Smuzhiyun+	{0x0AAC, 78, 27},	/* CFG_VIN2A_D17_OUT */
1179*4882a593Smuzhiyun+	{0x0AB0, 411, 0},	/* CFG_VIN2A_D18_IN */
1180*4882a593Smuzhiyun+	{0x0ABC, 0, 382},	/* CFG_VIN2A_D19_IN */
1181*4882a593Smuzhiyun+	{0x0AD4, 320, 750},	/* CFG_VIN2A_D20_IN */
1182*4882a593Smuzhiyun+	{0x0AE0, 192, 836},	/* CFG_VIN2A_D21_IN */
1183*4882a593Smuzhiyun+	{0x0AEC, 294, 669},	/* CFG_VIN2A_D22_IN */
1184*4882a593Smuzhiyun+	{0x0AF8, 50, 700},	/* CFG_VIN2A_D23_IN */
1185*4882a593Smuzhiyun+	{0x0B9C, 0, 706},	/* CFG_VOUT1_CLK_OUT */
1186*4882a593Smuzhiyun+	{0x0BA8, 2313, 0},	/* CFG_VOUT1_D0_OUT */
1187*4882a593Smuzhiyun+	{0x0BB4, 2199, 0},	/* CFG_VOUT1_D10_OUT */
1188*4882a593Smuzhiyun+	{0x0BC0, 2266, 0},	/* CFG_VOUT1_D11_OUT */
1189*4882a593Smuzhiyun+	{0x0BCC, 3159, 0},	/* CFG_VOUT1_D12_OUT */
1190*4882a593Smuzhiyun+	{0x0BD8, 2100, 0},	/* CFG_VOUT1_D13_OUT */
1191*4882a593Smuzhiyun+	{0x0BE4, 2229, 0},	/* CFG_VOUT1_D14_OUT */
1192*4882a593Smuzhiyun+	{0x0BF0, 2202, 0},	/* CFG_VOUT1_D15_OUT */
1193*4882a593Smuzhiyun+	{0x0BFC, 2084, 0},	/* CFG_VOUT1_D16_OUT */
1194*4882a593Smuzhiyun+	{0x0C08, 2195, 0},	/* CFG_VOUT1_D17_OUT */
1195*4882a593Smuzhiyun+	{0x0C14, 2342, 0},	/* CFG_VOUT1_D18_OUT */
1196*4882a593Smuzhiyun+	{0x0C20, 2463, 0},	/* CFG_VOUT1_D19_OUT */
1197*4882a593Smuzhiyun+	{0x0C2C, 2439, 0},	/* CFG_VOUT1_D1_OUT */
1198*4882a593Smuzhiyun+	{0x0C38, 2304, 0},	/* CFG_VOUT1_D20_OUT */
1199*4882a593Smuzhiyun+	{0x0C44, 2103, 0},	/* CFG_VOUT1_D21_OUT */
1200*4882a593Smuzhiyun+	{0x0C50, 2145, 0},	/* CFG_VOUT1_D22_OUT */
1201*4882a593Smuzhiyun+	{0x0C5C, 1932, 0},	/* CFG_VOUT1_D23_OUT */
1202*4882a593Smuzhiyun+	{0x0C68, 2200, 0},	/* CFG_VOUT1_D2_OUT */
1203*4882a593Smuzhiyun+	{0x0C74, 2355, 0},	/* CFG_VOUT1_D3_OUT */
1204*4882a593Smuzhiyun+	{0x0C80, 3215, 0},	/* CFG_VOUT1_D4_OUT */
1205*4882a593Smuzhiyun+	{0x0C8C, 2314, 0},	/* CFG_VOUT1_D5_OUT */
1206*4882a593Smuzhiyun+	{0x0C98, 2238, 0},	/* CFG_VOUT1_D6_OUT */
1207*4882a593Smuzhiyun+	{0x0CA4, 2381, 0},	/* CFG_VOUT1_D7_OUT */
1208*4882a593Smuzhiyun+	{0x0CB0, 2138, 0},	/* CFG_VOUT1_D8_OUT */
1209*4882a593Smuzhiyun+	{0x0CBC, 2383, 0},	/* CFG_VOUT1_D9_OUT */
1210*4882a593Smuzhiyun+	{0x0CC8, 1984, 0},	/* CFG_VOUT1_DE_OUT */
1211*4882a593Smuzhiyun+	{0x0CE0, 1947, 0},	/* CFG_VOUT1_HSYNC_OUT */
1212*4882a593Smuzhiyun+	{0x0CEC, 2739, 0},	/* CFG_VOUT1_VSYNC_OUT */
1213*4882a593Smuzhiyun+};
1214*4882a593Smuzhiyun+
1215*4882a593Smuzhiyun const struct iodelay_cfg_entry iodelay_cfg_array_am574x_idk[] = {
1216*4882a593Smuzhiyun 	{0x0114, 2199, 621},	/* CFG_GPMC_A0_IN */
1217*4882a593Smuzhiyun 	{0x0120, 0, 0},	/* CFG_GPMC_A10_IN */
1218*4882a593Smuzhiyundiff --git a/configs/am57xx_evm_defconfig b/configs/am57xx_evm_defconfig
1219*4882a593Smuzhiyunindex 3e2c166e0d..b1e2960a9f 100644
1220*4882a593Smuzhiyun--- a/configs/am57xx_evm_defconfig
1221*4882a593Smuzhiyun+++ b/configs/am57xx_evm_defconfig
1222*4882a593Smuzhiyun@@ -27,14 +27,20 @@ CONFIG_SPL_DMA_SUPPORT=y
1223*4882a593Smuzhiyun CONFIG_SPL_OS_BOOT=y
1224*4882a593Smuzhiyun CONFIG_SPL_SPI_LOAD=y
1225*4882a593Smuzhiyun CONFIG_SPL_YMODEM_SUPPORT=y
1226*4882a593Smuzhiyun+CONFIG_AUTOBOOT_KEYED=y
1227*4882a593Smuzhiyun+CONFIG_AUTOBOOT_PROMPT="Press SPACE to abort autoboot in %d seconds\n"
1228*4882a593Smuzhiyun+CONFIG_AUTOBOOT_DELAY_STR="d"
1229*4882a593Smuzhiyun+CONFIG_AUTOBOOT_STOP_STR=" "
1230*4882a593Smuzhiyun CONFIG_CMD_SPL=y
1231*4882a593Smuzhiyun # CONFIG_CMD_FLASH is not set
1232*4882a593Smuzhiyun # CONFIG_CMD_SETEXPR is not set
1233*4882a593Smuzhiyun # CONFIG_CMD_PMIC is not set
1234*4882a593Smuzhiyun+CONFIG_CMD_BTRFS=y
1235*4882a593Smuzhiyun CONFIG_OF_CONTROL=y
1236*4882a593Smuzhiyun CONFIG_SPL_OF_CONTROL=y
1237*4882a593Smuzhiyun-CONFIG_DEFAULT_DEVICE_TREE="am572x-idk"
1238*4882a593Smuzhiyun-CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc am572x-idk am571x-idk am574x-idk"
1239*4882a593Smuzhiyun+CONFIG_DEFAULT_DEVICE_TREE="am5729-beagleboneai"
1240*4882a593Smuzhiyun+CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc am5729-beagleboneai am572x-idk am571x-idk am574x-idk"
1241*4882a593Smuzhiyun+# CONFIG_ENV_IS_IN_FAT is not set
1242*4882a593Smuzhiyun CONFIG_ENV_IS_IN_MMC=y
1243*4882a593Smuzhiyun CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
1244*4882a593Smuzhiyun CONFIG_DM=y
1245*4882a593Smuzhiyundiff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h
1246*4882a593Smuzhiyunindex 70aa425060..fcc6ac7f8f 100644
1247*4882a593Smuzhiyun--- a/include/configs/am57xx_evm.h
1248*4882a593Smuzhiyun+++ b/include/configs/am57xx_evm.h
1249*4882a593Smuzhiyun@@ -24,7 +24,7 @@
1250*4882a593Smuzhiyun #define CONFIG_ENV_OFFSET_REDUND	(CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
1251*4882a593Smuzhiyun #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
1252*4882a593Smuzhiyun
1253*4882a593Smuzhiyun-#define CONSOLEDEV			"ttyO2"
1254*4882a593Smuzhiyun+//#define CONSOLEDEV			"ttyO2"
1255*4882a593Smuzhiyun #define CONFIG_SYS_NS16550_COM1		UART1_BASE	/* Base EVM has UART0 */
1256*4882a593Smuzhiyun #define CONFIG_SYS_NS16550_COM2		UART2_BASE	/* UART2 */
1257*4882a593Smuzhiyun #define CONFIG_SYS_NS16550_COM3		UART3_BASE	/* UART3 */
1258*4882a593Smuzhiyundiff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h
1259*4882a593Smuzhiyunindex 1e2a62dd6f..47f641165d 100644
1260*4882a593Smuzhiyun--- a/include/configs/ti_armv7_common.h
1261*4882a593Smuzhiyun+++ b/include/configs/ti_armv7_common.h
1262*4882a593Smuzhiyun@@ -80,6 +80,363 @@
1263*4882a593Smuzhiyun #define CONFIG_SYS_I2C
1264*4882a593Smuzhiyun #endif
1265*4882a593Smuzhiyun
1266*4882a593Smuzhiyun+#define EEPROM_PROGRAMMING \
1267*4882a593Smuzhiyun+	"eeprom_dump=i2c dev 0; " \
1268*4882a593Smuzhiyun+		"i2c md 0x50 0x00.2 20; " \
1269*4882a593Smuzhiyun+		"\0" \
1270*4882a593Smuzhiyun+	"eeprom_blank=i2c dev 0; " \
1271*4882a593Smuzhiyun+		"i2c mw 0x50 0x00.2 ff; " \
1272*4882a593Smuzhiyun+		"i2c mw 0x50 0x01.2 ff; " \
1273*4882a593Smuzhiyun+		"i2c mw 0x50 0x02.2 ff; " \
1274*4882a593Smuzhiyun+		"i2c mw 0x50 0x03.2 ff; " \
1275*4882a593Smuzhiyun+		"i2c mw 0x50 0x04.2 ff; " \
1276*4882a593Smuzhiyun+		"i2c mw 0x50 0x05.2 ff; " \
1277*4882a593Smuzhiyun+		"i2c mw 0x50 0x06.2 ff; " \
1278*4882a593Smuzhiyun+		"i2c mw 0x50 0x07.2 ff; " \
1279*4882a593Smuzhiyun+		"i2c mw 0x50 0x08.2 ff; " \
1280*4882a593Smuzhiyun+		"i2c mw 0x50 0x09.2 ff; " \
1281*4882a593Smuzhiyun+		"i2c mw 0x50 0x0a.2 ff; " \
1282*4882a593Smuzhiyun+		"i2c mw 0x50 0x0b.2 ff; " \
1283*4882a593Smuzhiyun+		"i2c mw 0x50 0x0c.2 ff; " \
1284*4882a593Smuzhiyun+		"i2c mw 0x50 0x0d.2 ff; " \
1285*4882a593Smuzhiyun+		"i2c mw 0x50 0x0e.2 ff; " \
1286*4882a593Smuzhiyun+		"i2c mw 0x50 0x0f.2 ff; " \
1287*4882a593Smuzhiyun+		"i2c mw 0x50 0x10.2 ff; " \
1288*4882a593Smuzhiyun+		"i2c mw 0x50 0x11.2 ff; " \
1289*4882a593Smuzhiyun+		"i2c mw 0x50 0x12.2 ff; " \
1290*4882a593Smuzhiyun+		"i2c mw 0x50 0x13.2 ff; " \
1291*4882a593Smuzhiyun+		"i2c mw 0x50 0x14.2 ff; " \
1292*4882a593Smuzhiyun+		"i2c mw 0x50 0x15.2 ff; " \
1293*4882a593Smuzhiyun+		"i2c mw 0x50 0x16.2 ff; " \
1294*4882a593Smuzhiyun+		"i2c mw 0x50 0x17.2 ff; " \
1295*4882a593Smuzhiyun+		"i2c mw 0x50 0x18.2 ff; " \
1296*4882a593Smuzhiyun+		"i2c mw 0x50 0x19.2 ff; " \
1297*4882a593Smuzhiyun+		"i2c mw 0x50 0x1a.2 ff; " \
1298*4882a593Smuzhiyun+		"i2c mw 0x50 0x1b.2 ff; " \
1299*4882a593Smuzhiyun+		"i2c mw 0x50 0x1c.2 ff; " \
1300*4882a593Smuzhiyun+		"i2c mw 0x50 0x1d.2 ff; " \
1301*4882a593Smuzhiyun+		"i2c mw 0x50 0x1e.2 ff; " \
1302*4882a593Smuzhiyun+		"i2c mw 0x50 0x1f.2 ff; " \
1303*4882a593Smuzhiyun+		"i2c md 0x50 0x00.2 20; " \
1304*4882a593Smuzhiyun+		"\0" \
1305*4882a593Smuzhiyun+	"eeprom_x15_b1=i2c dev 0; " \
1306*4882a593Smuzhiyun+		"i2c mw 0x50 0x00.2 aa; " \
1307*4882a593Smuzhiyun+		"i2c mw 0x50 0x01.2 55; " \
1308*4882a593Smuzhiyun+		"i2c mw 0x50 0x02.2 33; " \
1309*4882a593Smuzhiyun+		"i2c mw 0x50 0x03.2 ee; " \
1310*4882a593Smuzhiyun+		"i2c mw 0x50 0x04.2 42; " \
1311*4882a593Smuzhiyun+		"i2c mw 0x50 0x05.2 42; " \
1312*4882a593Smuzhiyun+		"i2c mw 0x50 0x06.2 52; " \
1313*4882a593Smuzhiyun+		"i2c mw 0x50 0x07.2 44; " \
1314*4882a593Smuzhiyun+		"i2c mw 0x50 0x08.2 58; " \
1315*4882a593Smuzhiyun+		"i2c mw 0x50 0x09.2 31; " \
1316*4882a593Smuzhiyun+		"i2c mw 0x50 0x0a.2 35; " \
1317*4882a593Smuzhiyun+		"i2c mw 0x50 0x0b.2 5f; " \
1318*4882a593Smuzhiyun+		"i2c mw 0x50 0x0c.2 42; " \
1319*4882a593Smuzhiyun+		"i2c mw 0x50 0x0d.2 2e; " \
1320*4882a593Smuzhiyun+		"i2c mw 0x50 0x0e.2 31; " \
1321*4882a593Smuzhiyun+		"i2c mw 0x50 0x0f.2 30; " \
1322*4882a593Smuzhiyun+		"i2c mw 0x50 0x10.2 57; " \
1323*4882a593Smuzhiyun+		"i2c mw 0x50 0x11.2 57; " \
1324*4882a593Smuzhiyun+		"i2c mw 0x50 0x12.2 59; " \
1325*4882a593Smuzhiyun+		"i2c mw 0x50 0x13.2 59; " \
1326*4882a593Smuzhiyun+		"i2c mw 0x50 0x14.2 34; " \
1327*4882a593Smuzhiyun+		"i2c mw 0x50 0x15.2 50; " \
1328*4882a593Smuzhiyun+		"i2c mw 0x50 0x16.2 35; " \
1329*4882a593Smuzhiyun+		"i2c mw 0x50 0x17.2 35; " \
1330*4882a593Smuzhiyun+		"i2c mw 0x50 0x18.2 30; " \
1331*4882a593Smuzhiyun+		"i2c mw 0x50 0x19.2 30; " \
1332*4882a593Smuzhiyun+		"i2c mw 0x50 0x1a.2 30; " \
1333*4882a593Smuzhiyun+		"i2c mw 0x50 0x1b.2 30; " \
1334*4882a593Smuzhiyun+		"i2c mw 0x50 0x1c.2 ff; " \
1335*4882a593Smuzhiyun+		"i2c mw 0x50 0x1d.2 ff; " \
1336*4882a593Smuzhiyun+		"i2c mw 0x50 0x1e.2 ff; " \
1337*4882a593Smuzhiyun+		"i2c mw 0x50 0x1f.2 ff; " \
1338*4882a593Smuzhiyun+		"i2c md 0x50 0x00.2 20; " \
1339*4882a593Smuzhiyun+		"\0" \
1340*4882a593Smuzhiyun+	"eeprom_x15_c=i2c dev 0; " \
1341*4882a593Smuzhiyun+		"i2c mw 0x50 0x00.2 aa; " \
1342*4882a593Smuzhiyun+		"i2c mw 0x50 0x01.2 55; " \
1343*4882a593Smuzhiyun+		"i2c mw 0x50 0x02.2 33; " \
1344*4882a593Smuzhiyun+		"i2c mw 0x50 0x03.2 ee; " \
1345*4882a593Smuzhiyun+		"i2c mw 0x50 0x04.2 42; " \
1346*4882a593Smuzhiyun+		"i2c mw 0x50 0x05.2 42; " \
1347*4882a593Smuzhiyun+		"i2c mw 0x50 0x06.2 52; " \
1348*4882a593Smuzhiyun+		"i2c mw 0x50 0x07.2 44; " \
1349*4882a593Smuzhiyun+		"i2c mw 0x50 0x08.2 58; " \
1350*4882a593Smuzhiyun+		"i2c mw 0x50 0x09.2 31; " \
1351*4882a593Smuzhiyun+		"i2c mw 0x50 0x0a.2 35; " \
1352*4882a593Smuzhiyun+		"i2c mw 0x50 0x0b.2 5f; " \
1353*4882a593Smuzhiyun+		"i2c mw 0x50 0x0c.2 43; " \
1354*4882a593Smuzhiyun+		"i2c mw 0x50 0x0d.2 2e; " \
1355*4882a593Smuzhiyun+		"i2c mw 0x50 0x0e.2 30; " \
1356*4882a593Smuzhiyun+		"i2c mw 0x50 0x0f.2 30; " \
1357*4882a593Smuzhiyun+		"i2c mw 0x50 0x10.2 79; " \
1358*4882a593Smuzhiyun+		"i2c mw 0x50 0x11.2 79; " \
1359*4882a593Smuzhiyun+		"i2c mw 0x50 0x12.2 77; " \
1360*4882a593Smuzhiyun+		"i2c mw 0x50 0x13.2 77; " \
1361*4882a593Smuzhiyun+		"i2c mw 0x50 0x14.2 50; " \
1362*4882a593Smuzhiyun+		"i2c mw 0x50 0x15.2 58; " \
1363*4882a593Smuzhiyun+		"i2c mw 0x50 0x16.2 31; " \
1364*4882a593Smuzhiyun+		"i2c mw 0x50 0x17.2 35; " \
1365*4882a593Smuzhiyun+		"i2c mw 0x50 0x18.2 6e; " \
1366*4882a593Smuzhiyun+		"i2c mw 0x50 0x19.2 6e; " \
1367*4882a593Smuzhiyun+		"i2c mw 0x50 0x1a.2 6e; " \
1368*4882a593Smuzhiyun+		"i2c mw 0x50 0x1b.2 6e; " \
1369*4882a593Smuzhiyun+		"i2c mw 0x50 0x1c.2 ff; " \
1370*4882a593Smuzhiyun+		"i2c mw 0x50 0x1d.2 ff; " \
1371*4882a593Smuzhiyun+		"i2c mw 0x50 0x1e.2 ff; " \
1372*4882a593Smuzhiyun+		"i2c mw 0x50 0x1f.2 ff; " \
1373*4882a593Smuzhiyun+		"i2c md 0x50 0x00.2 20; " \
1374*4882a593Smuzhiyun+		"\0" \
1375*4882a593Smuzhiyun+
1376*4882a593Smuzhiyun+#define EEWIKI_MMC_BOOT \
1377*4882a593Smuzhiyun+	"mmc_boot=${devtype} dev ${mmcdev}; ${devtype} part; " \
1378*4882a593Smuzhiyun+		"if ${devtype} rescan; then " \
1379*4882a593Smuzhiyun+			"echo Scanning ${devtype} device ${mmcdev};" \
1380*4882a593Smuzhiyun+			"setenv bootpart ${mmcdev}:1; " \
1381*4882a593Smuzhiyun+			"echo Checking for: /uEnv.txt ...;" \
1382*4882a593Smuzhiyun+			"if test -e ${devtype} ${bootpart} /uEnv.txt; then " \
1383*4882a593Smuzhiyun+				"load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \
1384*4882a593Smuzhiyun+				"env import -t ${loadaddr} ${filesize};" \
1385*4882a593Smuzhiyun+				"echo Loaded environment from /uEnv.txt;" \
1386*4882a593Smuzhiyun+				"echo Checking if uenvcmd is set ...;" \
1387*4882a593Smuzhiyun+				"if test -n ${uenvcmd}; then " \
1388*4882a593Smuzhiyun+					"echo Running uenvcmd ...;" \
1389*4882a593Smuzhiyun+					"run uenvcmd;" \
1390*4882a593Smuzhiyun+				"fi;" \
1391*4882a593Smuzhiyun+			"fi; " \
1392*4882a593Smuzhiyun+			"echo Checking for: /boot/uEnv.txt ...;" \
1393*4882a593Smuzhiyun+			"for i in 1 2 3 4 5 6 7 ; do " \
1394*4882a593Smuzhiyun+				"setenv mmcpart ${i};" \
1395*4882a593Smuzhiyun+				"setenv bootpart ${mmcdev}:${mmcpart};" \
1396*4882a593Smuzhiyun+				"if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \
1397*4882a593Smuzhiyun+					"load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \
1398*4882a593Smuzhiyun+					"env import -t ${loadaddr} ${filesize};" \
1399*4882a593Smuzhiyun+					"echo Loaded environment from /boot/uEnv.txt;" \
1400*4882a593Smuzhiyun+					"if test -n ${dtb}; then " \
1401*4882a593Smuzhiyun+						"setenv fdtfile ${dtb};" \
1402*4882a593Smuzhiyun+						"echo debug: [dtb=${fdtfile}] ...;" \
1403*4882a593Smuzhiyun+					"fi;" \
1404*4882a593Smuzhiyun+					"echo Checking if uname_r is set in /boot/uEnv.txt ...;" \
1405*4882a593Smuzhiyun+					"if test -n ${uname_r}; then " \
1406*4882a593Smuzhiyun+						"echo debug: [uname_r=${uname_r}] ...;" \
1407*4882a593Smuzhiyun+						"setenv oldroot /dev/mmcblk${mmcdev}p${mmcpart};" \
1408*4882a593Smuzhiyun+						"run uname_boot;" \
1409*4882a593Smuzhiyun+					"fi;" \
1410*4882a593Smuzhiyun+				"fi;" \
1411*4882a593Smuzhiyun+			"done;" \
1412*4882a593Smuzhiyun+		"fi;\0" \
1413*4882a593Smuzhiyun+
1414*4882a593Smuzhiyun+#define EEWIKI_SCSI_BOOT \
1415*4882a593Smuzhiyun+	"scsi_boot=${devtype} reset ; " \
1416*4882a593Smuzhiyun+		"if ${devtype} dev ${mmcdev}; then " \
1417*4882a593Smuzhiyun+			"echo Scanning ${devtype} device ${mmcdev};" \
1418*4882a593Smuzhiyun+			"setenv bootpart ${mmcdev}:1; " \
1419*4882a593Smuzhiyun+			"echo Checking for: /uEnv.txt ...;" \
1420*4882a593Smuzhiyun+			"if test -e ${devtype} ${bootpart} /uEnv.txt; then " \
1421*4882a593Smuzhiyun+				"load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \
1422*4882a593Smuzhiyun+				"env import -t ${loadaddr} ${filesize};" \
1423*4882a593Smuzhiyun+				"echo Loaded environment from /uEnv.txt;" \
1424*4882a593Smuzhiyun+				"echo Checking if uenvcmd is set ...;" \
1425*4882a593Smuzhiyun+				"if test -n ${uenvcmd}; then " \
1426*4882a593Smuzhiyun+					"echo Running uenvcmd ...;" \
1427*4882a593Smuzhiyun+					"run uenvcmd;" \
1428*4882a593Smuzhiyun+				"fi;" \
1429*4882a593Smuzhiyun+			"fi; " \
1430*4882a593Smuzhiyun+			"echo Checking for: /boot/uEnv.txt ...;" \
1431*4882a593Smuzhiyun+			"for i in 1 2 3 4 ; do " \
1432*4882a593Smuzhiyun+				"setenv mmcpart ${i};" \
1433*4882a593Smuzhiyun+				"setenv bootpart ${mmcdev}:${mmcpart};" \
1434*4882a593Smuzhiyun+				"if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \
1435*4882a593Smuzhiyun+					"load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \
1436*4882a593Smuzhiyun+					"env import -t ${loadaddr} ${filesize};" \
1437*4882a593Smuzhiyun+					"echo Loaded environment from /boot/uEnv.txt;" \
1438*4882a593Smuzhiyun+					"if test -n ${dtb}; then " \
1439*4882a593Smuzhiyun+						"setenv fdtfile ${dtb};" \
1440*4882a593Smuzhiyun+						"echo debug: [dtb=${fdtfile}] ...;" \
1441*4882a593Smuzhiyun+					"fi;" \
1442*4882a593Smuzhiyun+					"echo Checking if uname_r is set in /boot/uEnv.txt ...;" \
1443*4882a593Smuzhiyun+					"if test -n ${uname_r}; then " \
1444*4882a593Smuzhiyun+						"echo debug: [uname_r=${uname_r}] ...;" \
1445*4882a593Smuzhiyun+						"setenv oldroot /dev/sda${mmcpart};" \
1446*4882a593Smuzhiyun+						"run uname_boot;" \
1447*4882a593Smuzhiyun+					"fi;" \
1448*4882a593Smuzhiyun+				"fi;" \
1449*4882a593Smuzhiyun+			"done;" \
1450*4882a593Smuzhiyun+		"fi;\0" \
1451*4882a593Smuzhiyun+
1452*4882a593Smuzhiyun+#define EEWIKI_USB_BOOT \
1453*4882a593Smuzhiyun+	"usb_boot=${devtype} reset ; " \
1454*4882a593Smuzhiyun+		"if ${devtype} dev ${mmcdev}; then " \
1455*4882a593Smuzhiyun+			"echo Scanning ${devtype} device ${mmcdev};" \
1456*4882a593Smuzhiyun+			"setenv bootpart ${mmcdev}:1; " \
1457*4882a593Smuzhiyun+			"echo Checking for: /uEnv.txt ...;" \
1458*4882a593Smuzhiyun+			"if test -e ${devtype} ${bootpart} /uEnv.txt; then " \
1459*4882a593Smuzhiyun+				"load ${devtype} ${bootpart} ${loadaddr} /uEnv.txt;" \
1460*4882a593Smuzhiyun+				"env import -t ${loadaddr} ${filesize};" \
1461*4882a593Smuzhiyun+				"echo Loaded environment from /uEnv.txt;" \
1462*4882a593Smuzhiyun+				"echo Checking if uenvcmd is set in /uEnv.txt ...;" \
1463*4882a593Smuzhiyun+				"if test -n ${uenvcmd}; then " \
1464*4882a593Smuzhiyun+					"echo Running uenvcmd ...;" \
1465*4882a593Smuzhiyun+					"run uenvcmd;" \
1466*4882a593Smuzhiyun+				"fi;" \
1467*4882a593Smuzhiyun+			"fi; " \
1468*4882a593Smuzhiyun+			"echo Checking for: /boot/uEnv.txt ...;" \
1469*4882a593Smuzhiyun+			"for i in 1 2 3 4 ; do " \
1470*4882a593Smuzhiyun+				"setenv mmcpart ${i};" \
1471*4882a593Smuzhiyun+				"setenv bootpart ${mmcdev}:${mmcpart};" \
1472*4882a593Smuzhiyun+				"if test -e ${devtype} ${bootpart} /boot/uEnv.txt; then " \
1473*4882a593Smuzhiyun+					"load ${devtype} ${bootpart} ${loadaddr} /boot/uEnv.txt;" \
1474*4882a593Smuzhiyun+					"env import -t ${loadaddr} ${filesize};" \
1475*4882a593Smuzhiyun+					"echo Loaded environment from /boot/uEnv.txt;" \
1476*4882a593Smuzhiyun+					"if test -n ${dtb}; then " \
1477*4882a593Smuzhiyun+						"setenv fdtfile ${dtb};" \
1478*4882a593Smuzhiyun+						"echo debug: [dtb=${fdtfile}] ...;" \
1479*4882a593Smuzhiyun+					"fi;" \
1480*4882a593Smuzhiyun+					"echo Checking if uname_r is set in /boot/uEnv.txt ...;" \
1481*4882a593Smuzhiyun+					"if test -n ${uname_r}; then " \
1482*4882a593Smuzhiyun+						"echo debug: [uname_r=${uname_r}] ...;" \
1483*4882a593Smuzhiyun+						"setenv oldroot /dev/sda${mmcpart};" \
1484*4882a593Smuzhiyun+						"run uname_boot;" \
1485*4882a593Smuzhiyun+					"fi;" \
1486*4882a593Smuzhiyun+				"fi;" \
1487*4882a593Smuzhiyun+			"done;" \
1488*4882a593Smuzhiyun+		"fi;\0" \
1489*4882a593Smuzhiyun+
1490*4882a593Smuzhiyun+#define EEWIKI_UNAME_BOOT \
1491*4882a593Smuzhiyun+	"uname_boot="\
1492*4882a593Smuzhiyun+		"setenv bootdir /boot; " \
1493*4882a593Smuzhiyun+		"setenv bootfile vmlinuz-${uname_r}; " \
1494*4882a593Smuzhiyun+		"if test -e ${devtype} ${bootpart} ${bootdir}/${bootfile}; then " \
1495*4882a593Smuzhiyun+			"echo loading ${bootdir}/${bootfile} ...; "\
1496*4882a593Smuzhiyun+			"run loadimage;" \
1497*4882a593Smuzhiyun+			"setenv fdtdir /boot/dtbs/${uname_r}; " \
1498*4882a593Smuzhiyun+			"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
1499*4882a593Smuzhiyun+				"run loadfdt;" \
1500*4882a593Smuzhiyun+			"else " \
1501*4882a593Smuzhiyun+				"setenv fdtdir /usr/lib/linux-image-${uname_r}; " \
1502*4882a593Smuzhiyun+				"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
1503*4882a593Smuzhiyun+					"run loadfdt;" \
1504*4882a593Smuzhiyun+				"else " \
1505*4882a593Smuzhiyun+					"setenv fdtdir /lib/firmware/${uname_r}/device-tree; " \
1506*4882a593Smuzhiyun+					"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
1507*4882a593Smuzhiyun+						"run loadfdt;" \
1508*4882a593Smuzhiyun+					"else " \
1509*4882a593Smuzhiyun+						"setenv fdtdir /boot/dtb-${uname_r}; " \
1510*4882a593Smuzhiyun+						"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
1511*4882a593Smuzhiyun+							"run loadfdt;" \
1512*4882a593Smuzhiyun+						"else " \
1513*4882a593Smuzhiyun+							"setenv fdtdir /boot/dtbs; " \
1514*4882a593Smuzhiyun+							"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
1515*4882a593Smuzhiyun+								"run loadfdt;" \
1516*4882a593Smuzhiyun+							"else " \
1517*4882a593Smuzhiyun+								"setenv fdtdir /boot/dtb; " \
1518*4882a593Smuzhiyun+								"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
1519*4882a593Smuzhiyun+									"run loadfdt;" \
1520*4882a593Smuzhiyun+								"else " \
1521*4882a593Smuzhiyun+									"setenv fdtdir /boot; " \
1522*4882a593Smuzhiyun+									"if test -e ${devtype} ${bootpart} ${fdtdir}/${fdtfile}; then " \
1523*4882a593Smuzhiyun+										"run loadfdt;" \
1524*4882a593Smuzhiyun+									"else " \
1525*4882a593Smuzhiyun+										"echo; echo unable to find ${fdtfile} ...; echo booting legacy ...;"\
1526*4882a593Smuzhiyun+										"run args_mmc;" \
1527*4882a593Smuzhiyun+										"echo debug: [${bootargs}] ... ;" \
1528*4882a593Smuzhiyun+										"echo debug: [bootz ${loadaddr}] ... ;" \
1529*4882a593Smuzhiyun+										"bootz ${loadaddr}; " \
1530*4882a593Smuzhiyun+									"fi;" \
1531*4882a593Smuzhiyun+								"fi;" \
1532*4882a593Smuzhiyun+							"fi;" \
1533*4882a593Smuzhiyun+						"fi;" \
1534*4882a593Smuzhiyun+					"fi;" \
1535*4882a593Smuzhiyun+				"fi;" \
1536*4882a593Smuzhiyun+			"fi; " \
1537*4882a593Smuzhiyun+			"if test -n ${enable_uboot_overlays}; then " \
1538*4882a593Smuzhiyun+				"setenv fdt_buffer 0x60000;" \
1539*4882a593Smuzhiyun+				"if test -n ${uboot_fdt_buffer}; then " \
1540*4882a593Smuzhiyun+					"setenv fdt_buffer ${uboot_fdt_buffer};" \
1541*4882a593Smuzhiyun+				"fi;" \
1542*4882a593Smuzhiyun+				"echo uboot_overlays: [fdt_buffer=${fdt_buffer}] ... ;" \
1543*4882a593Smuzhiyun+				"if test -n ${uboot_overlay_addr0}; then " \
1544*4882a593Smuzhiyun+					"setenv uboot_overlay ${uboot_overlay_addr0}; " \
1545*4882a593Smuzhiyun+					"run capeloadoverlay;" \
1546*4882a593Smuzhiyun+				"fi;" \
1547*4882a593Smuzhiyun+				"if test -n ${uboot_overlay_addr1}; then " \
1548*4882a593Smuzhiyun+					"setenv uboot_overlay ${uboot_overlay_addr1}; " \
1549*4882a593Smuzhiyun+					"run capeloadoverlay;" \
1550*4882a593Smuzhiyun+				"fi;" \
1551*4882a593Smuzhiyun+				"if test -n ${uboot_overlay_addr2}; then " \
1552*4882a593Smuzhiyun+					"setenv uboot_overlay ${uboot_overlay_addr2}; " \
1553*4882a593Smuzhiyun+					"run capeloadoverlay;" \
1554*4882a593Smuzhiyun+				"fi;" \
1555*4882a593Smuzhiyun+				"if test -n ${uboot_overlay_addr3}; then " \
1556*4882a593Smuzhiyun+					"setenv uboot_overlay ${uboot_overlay_addr3}; " \
1557*4882a593Smuzhiyun+					"run capeloadoverlay;" \
1558*4882a593Smuzhiyun+				"fi;" \
1559*4882a593Smuzhiyun+				"if test -n ${uboot_overlay_addr4}; then " \
1560*4882a593Smuzhiyun+					"setenv uboot_overlay ${uboot_overlay_addr4}; " \
1561*4882a593Smuzhiyun+					"run capeloadoverlay;" \
1562*4882a593Smuzhiyun+				"fi;" \
1563*4882a593Smuzhiyun+				"if test -n ${uboot_overlay_addr5}; then " \
1564*4882a593Smuzhiyun+					"setenv uboot_overlay ${uboot_overlay_addr5}; " \
1565*4882a593Smuzhiyun+					"run capeloadoverlay;" \
1566*4882a593Smuzhiyun+				"fi;" \
1567*4882a593Smuzhiyun+				"if test -n ${uboot_overlay_addr6}; then " \
1568*4882a593Smuzhiyun+					"setenv uboot_overlay ${uboot_overlay_addr6}; " \
1569*4882a593Smuzhiyun+					"run capeloadoverlay;" \
1570*4882a593Smuzhiyun+				"fi;" \
1571*4882a593Smuzhiyun+				"if test -n ${uboot_overlay_addr7}; then " \
1572*4882a593Smuzhiyun+					"setenv uboot_overlay ${uboot_overlay_addr7}; " \
1573*4882a593Smuzhiyun+					"run capeloadoverlay;" \
1574*4882a593Smuzhiyun+				"fi;" \
1575*4882a593Smuzhiyun+				"if test -n ${uboot_overlay_pru}; then " \
1576*4882a593Smuzhiyun+					"setenv uboot_overlay ${uboot_overlay_pru}; " \
1577*4882a593Smuzhiyun+					"run virtualloadoverlay;" \
1578*4882a593Smuzhiyun+				"fi;" \
1579*4882a593Smuzhiyun+			"else " \
1580*4882a593Smuzhiyun+				"echo uboot_overlays: add [enable_uboot_overlays=1] to /boot/uEnv.txt to enable...;" \
1581*4882a593Smuzhiyun+			"fi;" \
1582*4882a593Smuzhiyun+			"setenv rdfile initrd.img-${uname_r}; " \
1583*4882a593Smuzhiyun+			"if test -e ${devtype} ${bootpart} ${bootdir}/${rdfile}; then " \
1584*4882a593Smuzhiyun+				"echo loading ${bootdir}/${rdfile} ...; "\
1585*4882a593Smuzhiyun+				"run loadrd;" \
1586*4882a593Smuzhiyun+				"if test -n ${netinstall_enable}; then " \
1587*4882a593Smuzhiyun+					"run args_netinstall; run message;" \
1588*4882a593Smuzhiyun+					"echo debug: [${bootargs}] ... ;" \
1589*4882a593Smuzhiyun+					"echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
1590*4882a593Smuzhiyun+					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
1591*4882a593Smuzhiyun+				"fi;" \
1592*4882a593Smuzhiyun+				"if test -n ${uenv_root}; then " \
1593*4882a593Smuzhiyun+					"run args_uenv_root;" \
1594*4882a593Smuzhiyun+					"echo debug: [${bootargs}] ... ;" \
1595*4882a593Smuzhiyun+					"echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
1596*4882a593Smuzhiyun+					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
1597*4882a593Smuzhiyun+				"fi;" \
1598*4882a593Smuzhiyun+				"if test -n ${uuid}; then " \
1599*4882a593Smuzhiyun+					"run args_mmc_uuid;" \
1600*4882a593Smuzhiyun+					"echo debug: [${bootargs}] ... ;" \
1601*4882a593Smuzhiyun+					"echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
1602*4882a593Smuzhiyun+					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
1603*4882a593Smuzhiyun+				"else " \
1604*4882a593Smuzhiyun+					"run args_mmc_old;" \
1605*4882a593Smuzhiyun+					"echo debug: [${bootargs}] ... ;" \
1606*4882a593Smuzhiyun+					"echo debug: [bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}] ... ;" \
1607*4882a593Smuzhiyun+					"bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \
1608*4882a593Smuzhiyun+				"fi;" \
1609*4882a593Smuzhiyun+			"else " \
1610*4882a593Smuzhiyun+				"if test -n ${uenv_root}; then " \
1611*4882a593Smuzhiyun+					"run args_uenv_root;" \
1612*4882a593Smuzhiyun+					"echo debug: [${bootargs}] ... ;" \
1613*4882a593Smuzhiyun+					"echo debug: [bootz ${loadaddr} - ${fdtaddr}] ... ;" \
1614*4882a593Smuzhiyun+					"bootz ${loadaddr} - ${fdtaddr}; " \
1615*4882a593Smuzhiyun+				"fi;" \
1616*4882a593Smuzhiyun+				"run args_mmc_old;" \
1617*4882a593Smuzhiyun+				"echo debug: [${bootargs}] ... ;" \
1618*4882a593Smuzhiyun+				"echo debug: [bootz ${loadaddr} - ${fdtaddr}] ... ;" \
1619*4882a593Smuzhiyun+				"bootz ${loadaddr} - ${fdtaddr}; " \
1620*4882a593Smuzhiyun+			"fi;" \
1621*4882a593Smuzhiyun+		"fi;\0" \
1622*4882a593Smuzhiyun+
1623*4882a593Smuzhiyun /*
1624*4882a593Smuzhiyun  * The following are general good-enough settings for U-Boot.  We set a
1625*4882a593Smuzhiyun  * large malloc pool as we generally have a lot of DDR, and we opt for
1626*4882a593Smuzhiyundiff --git a/include/configs/ti_omap5_common.h b/include/configs/ti_omap5_common.h
1627*4882a593Smuzhiyunindex ba57c40182..93368cdc51 100644
1628*4882a593Smuzhiyun--- a/include/configs/ti_omap5_common.h
1629*4882a593Smuzhiyun+++ b/include/configs/ti_omap5_common.h
1630*4882a593Smuzhiyun@@ -63,6 +63,11 @@
1631*4882a593Smuzhiyun 	DEFAULT_FIT_TI_ARGS \
1632*4882a593Smuzhiyun 	DEFAULT_COMMON_BOOT_TI_ARGS \
1633*4882a593Smuzhiyun 	DEFAULT_FDT_TI_ARGS \
1634*4882a593Smuzhiyun+	EEWIKI_USB_BOOT \
1635*4882a593Smuzhiyun+	EEWIKI_SCSI_BOOT \
1636*4882a593Smuzhiyun+	EEWIKI_MMC_BOOT \
1637*4882a593Smuzhiyun+	EEWIKI_UNAME_BOOT \
1638*4882a593Smuzhiyun+	EEPROM_PROGRAMMING \
1639*4882a593Smuzhiyun 	DFUARGS \
1640*4882a593Smuzhiyun 	NETARGS \
1641*4882a593Smuzhiyun
1642*4882a593Smuzhiyundiff --git a/include/environment/ti/boot.h b/include/environment/ti/boot.h
1643*4882a593Smuzhiyunindex 05bdbbc23e..b0254b064a 100644
1644*4882a593Smuzhiyun--- a/include/environment/ti/boot.h
1645*4882a593Smuzhiyun+++ b/include/environment/ti/boot.h
1646*4882a593Smuzhiyun@@ -64,32 +64,18 @@
1647*4882a593Smuzhiyun 	"bootpart=0:2\0" \
1648*4882a593Smuzhiyun 	"bootdir=/boot\0" \
1649*4882a593Smuzhiyun 	"bootfile=zImage\0" \
1650*4882a593Smuzhiyun+	"board_eeprom_header=undefined\0" \
1651*4882a593Smuzhiyun 	"usbtty=cdc_acm\0" \
1652*4882a593Smuzhiyun 	"vram=16M\0" \
1653*4882a593Smuzhiyun 	AVB_VERIFY_CMD \
1654*4882a593Smuzhiyun 	"partitions=" PARTS_DEFAULT "\0" \
1655*4882a593Smuzhiyun 	"optargs=\0" \
1656*4882a593Smuzhiyun 	"dofastboot=0\0" \
1657*4882a593Smuzhiyun-	"emmc_linux_boot=" \
1658*4882a593Smuzhiyun-		"echo Trying to boot Linux from eMMC ...; " \
1659*4882a593Smuzhiyun-		"setenv mmcdev 1; " \
1660*4882a593Smuzhiyun-		"setenv bootpart 1:2; " \
1661*4882a593Smuzhiyun-		"setenv mmcroot /dev/mmcblk0p2 rw; " \
1662*4882a593Smuzhiyun-		"run mmcboot;\0" \
1663*4882a593Smuzhiyun-	"emmc_android_boot=" \
1664*4882a593Smuzhiyun-		"echo Trying to boot Android from eMMC ...; " \
1665*4882a593Smuzhiyun-		"run update_to_fit; " \
1666*4882a593Smuzhiyun-		"setenv eval_bootargs setenv bootargs $bootargs; " \
1667*4882a593Smuzhiyun-		"run eval_bootargs; " \
1668*4882a593Smuzhiyun-		"setenv mmcdev 1; " \
1669*4882a593Smuzhiyun-		"setenv machid fe6; " \
1670*4882a593Smuzhiyun-		"mmc dev $mmcdev; " \
1671*4882a593Smuzhiyun-		"mmc rescan; " \
1672*4882a593Smuzhiyun-		AVB_VERIFY_CHECK \
1673*4882a593Smuzhiyun-		"part start mmc ${mmcdev} boot boot_start; " \
1674*4882a593Smuzhiyun-		"part size mmc ${mmcdev} boot boot_size; " \
1675*4882a593Smuzhiyun-		"mmc read ${loadaddr} ${boot_start} ${boot_size}; " \
1676*4882a593Smuzhiyun-		"bootm ${loadaddr}#${fdtfile};\0 "
1677*4882a593Smuzhiyun+	"read_board_eeprom="\
1678*4882a593Smuzhiyun+		"if test $board_eeprom_header = beagle_x15_revb1_blank; then " \
1679*4882a593Smuzhiyun+			"run eeprom_dump; run eeprom_x15_b1; reset; fi; " \
1680*4882a593Smuzhiyun+		"if test $board_eeprom_header = beagle_x15_revc_blank; then " \
1681*4882a593Smuzhiyun+			"run eeprom_dump; run eeprom_x15_c; reset; fi;  \0 "
1682*4882a593Smuzhiyun
1683*4882a593Smuzhiyun #ifdef CONFIG_OMAP54XX
1684*4882a593Smuzhiyun
1685*4882a593Smuzhiyun@@ -127,20 +113,17 @@
1686*4882a593Smuzhiyun 			"echo WARNING: Could not determine device tree to use; fi; \0"
1687*4882a593Smuzhiyun
1688*4882a593Smuzhiyun #define CONFIG_BOOTCOMMAND \
1689*4882a593Smuzhiyun-	"if test ${dofastboot} -eq 1; then " \
1690*4882a593Smuzhiyun-		"echo Boot fastboot requested, resetting dofastboot ...;" \
1691*4882a593Smuzhiyun-		"setenv dofastboot 0; saveenv;" \
1692*4882a593Smuzhiyun-		"echo Booting into fastboot ...; " \
1693*4882a593Smuzhiyun-		"fastboot " __stringify(CONFIG_FASTBOOT_USB_DEV) "; " \
1694*4882a593Smuzhiyun-	"fi;" \
1695*4882a593Smuzhiyun-	"if test ${boot_fit} -eq 1; then "	\
1696*4882a593Smuzhiyun-		"run update_to_fit;"	\
1697*4882a593Smuzhiyun-	"fi;"	\
1698*4882a593Smuzhiyun+	"run read_board_eeprom; " \
1699*4882a593Smuzhiyun 	"run findfdt; " \
1700*4882a593Smuzhiyun-	"run envboot; " \
1701*4882a593Smuzhiyun-	"run mmcboot;" \
1702*4882a593Smuzhiyun-	"run emmc_linux_boot; " \
1703*4882a593Smuzhiyun-	"run emmc_android_boot; " \
1704*4882a593Smuzhiyun+	"setenv mmcdev 0; " \
1705*4882a593Smuzhiyun+	"setenv devtype usb; " \
1706*4882a593Smuzhiyun+	"echo usb_boot is currently disabled;" \
1707*4882a593Smuzhiyun+	"setenv devtype scsi; " \
1708*4882a593Smuzhiyun+	"echo scsi_boot is currently disabled;" \
1709*4882a593Smuzhiyun+	"setenv devtype mmc; " \
1710*4882a593Smuzhiyun+	"run mmc_boot;" \
1711*4882a593Smuzhiyun+	"setenv mmcdev 1; " \
1712*4882a593Smuzhiyun+	"run mmc_boot;" \
1713*4882a593Smuzhiyun 	""
1714*4882a593Smuzhiyun
1715*4882a593Smuzhiyun #endif /* CONFIG_OMAP54XX */
1716*4882a593Smuzhiyundiff --git a/include/environment/ti/mmc.h b/include/environment/ti/mmc.h
1717*4882a593Smuzhiyunindex 785fc15345..6481682fc7 100644
1718*4882a593Smuzhiyun--- a/include/environment/ti/mmc.h
1719*4882a593Smuzhiyun+++ b/include/environment/ti/mmc.h
1720*4882a593Smuzhiyun@@ -11,11 +11,33 @@
1721*4882a593Smuzhiyun #define DEFAULT_MMC_TI_ARGS \
1722*4882a593Smuzhiyun 	"mmcdev=0\0" \
1723*4882a593Smuzhiyun 	"mmcrootfstype=ext4 rootwait\0" \
1724*4882a593Smuzhiyun-	"finduuid=part uuid mmc ${bootpart} uuid\0" \
1725*4882a593Smuzhiyun+	"finduuid=part uuid ${devtype} ${bootpart} uuid\0" \
1726*4882a593Smuzhiyun 	"args_mmc=run finduuid;setenv bootargs console=${console} " \
1727*4882a593Smuzhiyun 		"${optargs} " \
1728*4882a593Smuzhiyun-		"root=PARTUUID=${uuid} rw " \
1729*4882a593Smuzhiyun-		"rootfstype=${mmcrootfstype}\0" \
1730*4882a593Smuzhiyun+		"root=PARTUUID=${uuid} ro " \
1731*4882a593Smuzhiyun+		"rootfstype=${mmcrootfstype} " \
1732*4882a593Smuzhiyun+		"${cmdline}\0" \
1733*4882a593Smuzhiyun+	"args_mmc_old=setenv bootargs console=${console} " \
1734*4882a593Smuzhiyun+		"${optargs} " \
1735*4882a593Smuzhiyun+		"root=${oldroot} ro " \
1736*4882a593Smuzhiyun+		"rootfstype=${mmcrootfstype} " \
1737*4882a593Smuzhiyun+		"${cmdline}\0" \
1738*4882a593Smuzhiyun+	"args_mmc_uuid=setenv bootargs console=${console} " \
1739*4882a593Smuzhiyun+		"${optargs} " \
1740*4882a593Smuzhiyun+		"root=UUID=${uuid} ro " \
1741*4882a593Smuzhiyun+		"rootfstype=${mmcrootfstype} " \
1742*4882a593Smuzhiyun+		"${cmdline}\0" \
1743*4882a593Smuzhiyun+	"args_uenv_root=setenv bootargs console=${console} " \
1744*4882a593Smuzhiyun+		"${optargs} " \
1745*4882a593Smuzhiyun+		"root=${uenv_root} ro " \
1746*4882a593Smuzhiyun+		"rootfstype=${mmcrootfstype} " \
1747*4882a593Smuzhiyun+		"${musb} ${cmdline}\0" \
1748*4882a593Smuzhiyun+	"args_netinstall=setenv bootargs ${netinstall_bootargs} " \
1749*4882a593Smuzhiyun+		"${optargs} " \
1750*4882a593Smuzhiyun+		"${cape_disable} " \
1751*4882a593Smuzhiyun+		"${cape_enable} " \
1752*4882a593Smuzhiyun+		"root=/dev/ram rw " \
1753*4882a593Smuzhiyun+		"${cmdline}\0" \
1754*4882a593Smuzhiyun 	"loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
1755*4882a593Smuzhiyun 	"bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
1756*4882a593Smuzhiyun 		"source ${loadaddr}\0" \
1757*4882a593Smuzhiyun@@ -24,7 +46,22 @@
1758*4882a593Smuzhiyun 		"env import -t ${loadaddr} ${filesize}\0" \
1759*4882a593Smuzhiyun 	"loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}\0" \
1760*4882a593Smuzhiyun 	"loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
1761*4882a593Smuzhiyun-	"loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
1762*4882a593Smuzhiyun+	"loadrd=load ${devtype} ${bootpart} ${rdaddr} ${bootdir}/${rdfile}; setenv rdsize ${filesize}\0" \
1763*4882a593Smuzhiyun+	"loadfdt=echo loading ${fdtdir}/${fdtfile} ...; load ${devtype} ${bootpart} ${fdtaddr} ${fdtdir}/${fdtfile}\0" \
1764*4882a593Smuzhiyun+	"loadoverlay=echo uboot_overlays: loading ${uboot_overlay} ...; " \
1765*4882a593Smuzhiyun+		"load ${devtype} ${bootpart} ${rdaddr} ${uboot_overlay}; " \
1766*4882a593Smuzhiyun+		"fdt addr ${fdtaddr}; fdt resize ${fdt_buffer}; " \
1767*4882a593Smuzhiyun+		"fdt apply ${rdaddr}; fdt resize ${fdt_buffer};\0" \
1768*4882a593Smuzhiyun+	"virtualloadoverlay=if test -e ${devtype} ${bootpart} ${uboot_overlay}; then " \
1769*4882a593Smuzhiyun+				"run loadoverlay;" \
1770*4882a593Smuzhiyun+			"else " \
1771*4882a593Smuzhiyun+				"echo uboot_overlays: unable to find [${devtype} ${bootpart} ${uboot_overlay}]...;" \
1772*4882a593Smuzhiyun+			"fi;\0" \
1773*4882a593Smuzhiyun+	"capeloadoverlay=if test -e ${devtype} ${bootpart} ${uboot_overlay}; then " \
1774*4882a593Smuzhiyun+				"run loadoverlay;" \
1775*4882a593Smuzhiyun+			"else " \
1776*4882a593Smuzhiyun+				"echo uboot_overlays: unable to find [${devtype} ${bootpart} ${uboot_overlay}]...;" \
1777*4882a593Smuzhiyun+			"fi;\0" \
1778*4882a593Smuzhiyun 	"envboot=mmc dev ${mmcdev}; " \
1779*4882a593Smuzhiyun 		"if mmc rescan; then " \
1780*4882a593Smuzhiyun 			"echo SD/MMC found on device ${mmcdev};" \
1781*4882a593Smuzhiyun--
1782*4882a593Smuzhiyun2.17.1
1783*4882a593Smuzhiyun
1784