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