This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMDSIDK574 :AM5749 Custom board U-Boot SPL fail

Part Number: TMDSIDK574
Other Parts Discussed in Thread: AM5749, SN65HVS882, PROFIBUS

I have an AM5749 custom board made with reference to TMDSIDK574 REV 1.0C board

TI-SDK SOURCE
software-dl.ti.com/.../ti-processor-sdk-linux-am57xx-evm-06.03.00.106-Linux-x86-Install.bin

Fix differences with reference board TMDSIDK574

no eeprom
pin change


====================================================
board/ti/common/board_detect.c
====================================================
int __maybe_unused ti_i2c_eeprom_am_set(const char *name, const char *rev)
{
return 0;
}
int __maybe_unused ti_i2c_eeprom_am_get(int bus_addr, int dev_addr)
{
struct ti_common_eeprom *ep;
ep = TI_EEPROM_DATA;
#ifndef CONFIG_SPL_BUILD
if (ep->header == TI_EEPROM_HEADER_MAGIC)
return 0; /* EEPROM has already been read */
#endif
/* Initialize with a known bad marker for i2c fails.. */
ep->header = TI_DEAD_EEPROM_MAGIC;
ep->name[0] = 0x0;
ep->version[0] = 0x0;
ep->serial[0] = 0x0;
ep->config[0] = 0x0;
ep->header = TI_EEPROM_HEADER_MAGIC;
strlcpy(ep->name, "AM574IDK", TI_EEPROM_HDR_NAME_LEN + 1);
ti_eeprom_string_cleanup(ep->name);
strlcpy(ep->version, "1.3D", TI_EEPROM_HDR_REV_LEN + 1);
ti_eeprom_string_cleanup(ep->version);
strlcpy(ep->serial, "23204P770087", TI_EEPROM_HDR_SERIAL_LEN + 1);
ti_eeprom_string_cleanup(ep->serial);
return 0;
}

bool __maybe_unused board_ti_is(char *name_tag)
{
return !strcmp("AM574IDK", name_tag);
}


====================================================
board/ti/am57xx/mux_data.h
====================================================
core_padconf_array_essential_am574x_idk[] = {
/* eMMC_RSTn */
{MCASP1_AXR2, (M14 | PIN_OUTPUT)}, /* vout1_fld.gpio4_21 -> mcasp1_axr2.gpio5_4 */
/* GPIO_AM572X_USB2_ID */
{MCASP1_AXR5, (M14 | PIN_INPUT)}, /* vin1a_d12.gpio3_16 -> mcasp1_axr5.gpio5_7 */

/* GPIO_PCIE_SWRSTn */
{VIN2A_D0, (M14 | PIN_OUTPUT_PULLUP)}, /* vin1a_d19.gpio3_23 -> vin2a_d0.gpio4_1 */
/* GPIO_PCIE_RSTDRVn */
{VIN2A_D1, (M14 | PIN_OUTPUT_PULLDOWN)}, /* vin1a_d18.gpio3_22 -> vin2a_d1.gpio4_2 */
/* PCIE_CRDPRESENT */
{VOUT1_FLD, (M14 | PIN_INPUT)}, /* mcasp1_axr2.gpio5_4 G13 -> vout1_fld.gpio4_21 B11 */
/* PCIE_WAKEn */
{VIN2A_FLD0, (M14 | PIN_INPUT)}, /* mcasp1_axr3.gpio5_5 J11 -> vin2a_fld0.gpio3_30 H7 */

/* SPI3 */
{VOUT1_VSYNC, (M3 | PIN_INPUT )}, /* mcasp4_aclkx.spi3_sclk -> vout1_vsync.spi3_sclk */
{VOUT1_HSYNC, (M14 | PIN_OUTPUT )}, /* vin1a_d15.gpio3_19 -> vout1_hsync.gpio4_22 */
{VOUT1_DE , (M8 | PIN_INPUT )}, /* mcasp4_fsx.spi3_d1 -> vout1_de.spi3_d1 */
{VOUT1_CLK , (M8 | PIN_INPUT_PULLUP)}, /* mcasp4_axr1.spi3_cs0 ->vout1_clk.spi3_cs0 */

/* UART3 */
{MCASP5_AXR1, (M4 | PIN_OUTPUT)}, /* uart2_rtsn.uart3_txd -> mcasp5_axr1.uart3_txd */
{MCASP5_AXR0, (M4 | PIN_INPUT )}, /* uart2_ctsn.uart3_rxd -> mcasp5_axr0.uart3_rxd */

/* GPIO_VPP_PWR_EN */
{VIN1B_CLK1, (M14 | PIN_OUTPUT)}, /* vin1a_d17.gpio3_21 -> vin1b_clk1.gpio2_31 */

/* STATUS LED */
{VOUT1_D4, (M14 | PIN_INPUT )}, /* vin2a_vsync0.gpio4_0 AM57XX_STATUSLED0_RED -> vout1_d4.gpio8_4 */
{VOUT1_D7, (M14 | PIN_OUTPUT)}, /* vin1a_d8.gpio3_12 AM57XX_STATUSLED0_YEL -> vout1_d7.gpio8_7 */
{VOUT1_D5, (M14 | PIN_OUTPUT)}, /* vin1a_d7.gpio3_11 AM57XX_STATUSLED0_GRN -> vout1_d5.gpio8_5 */
{VOUT1_D6, (M14 | PIN_OUTPUT)}, /* vin1a_d6.gpio3_10 AM57XX_STATUSLED1_RED -> vout1_d6.gpio8_6 */
{UART1_RXD, (M14 | PIN_OUTPUT | SLEWCONTROL)}, /* uart1_rxd.gpio7_22 AM57XX_STATUSLED1_YEL */
{UART1_TXD, (M14 | PIN_OUTPUT | SLEWCONTROL)}, /* uart1_txd.gpio7_23 AM57XX_STATUSLED1_GRN */

/* HAPTICS_TRIG */
{SPI1_SCLK, (M14 | PIN_OUTPUT)}, /* spi1_sclk.gpio7_7 AM572X_HAPTICS_TRIG A25 */

/* INDETHER_LED */
{GPMC_CLK , (M14 | PIN_INPUT )}, /* mcasp2_axr4.gpio1_4 AM57XX_INDETHER_LED0_YEL D15 -> gpmc_clk.gpio2_22 */
{GPMC_ADVN_ALE, (M14 | PIN_OUTPUT)}, /* vin1a_d5.gpio3_9 AM57XX_INDETHER_LED0_GRN -> gpmc_advn_ale.gpio2_23 */
{GPMC_OEN_REN , (M14 | PIN_OUTPUT)}, /* xref_clk2.gpio6_19 AM57XX_INDETHER_LED0_RED -> gpmc_oen_ren.gpio2_24 */
{GPMC_WEN , (M14 | PIN_OUTPUT)}, /* vin1a_d13.gpio3_17 AM57XX_INDETHER_LED3_GRN -> gpmc_wen.gpio2_25 */
{GPMC_BEN0 , (M14 | PIN_OUTPUT)}, /* vin1a_d14.gpio3_18 AM57XX_INDETHER_LED3_YEL -> gpmc_ben0.gpio2_26 */
{GPMC_BEN1 , (M14 | PIN_OUTPUT)}, /* spi1_cs1.gpio7_11 AM57XX_INDETHER_LED3_RED A22 -> gpmc_ben1.gpio2_27 */
{GPMC_WAIT0 , (M14 | PIN_OUTPUT)}, /* spi1_d1.gpio7_8 AM57XX_INDETHER_LED2_GRN F16 -> gpmc_wait0.gpio2_28 */
// {SPI1_D0, (M14 | PIN_OUTPUT)}, /* spi1_d0.gpio7_9 AM57XX_INDETHER_LED2_RED B25 */
// {SPI1_CS0, (M14 | PIN_OUTPUT)}, /* spi1_cs0.gpio7_10 AM57XX_INDETHER_LED2_YEL A24 */
// {MCASP2_AXR5, (M14 | PIN_OUTPUT)}, /* mcasp2_axr5.gpio6_7 AM57XX_INDETHER_LED1_RED B16 */
// {MCASP2_AXR6, (M14 | PIN_OUTPUT)}, /* mcasp2_axr6.gpio2_29 AM57XX_INDETHER_LED1_GRN B17 */
// {MCASP2_AXR7, (M14 | PIN_INPUT)}, /* mcasp2_axr7.gpio1_5 AM57XX_INDETHER_LED1_YEL A17 */

/* GPIO_USB2_VBUS_DET */
{UART3_RXD, (M14 | PIN_INPUT)}, /* vin1a_d22.gpio3_26 -> uart3_rxd.gpio5_18 */

/* PMIC_INT */
{UART3_TXD, (M14 | PIN_INPUT_PULLUP)}, /* gpio6_16.gpio6_16 F21 -> uart3_txd.gpio5_19 */

==================================================
arch/arm/dts/am572x-idk-common.dtsi
==================================================
&extcon_usb2 {
id-gpio = <&gpio5 7 GPIO_ACTIVE_HIGH>;
vbus-gpio = <&gpio5 18 GPIO_ACTIVE_HIGH>;
};

&sn65hvs882 {
load-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
};

&pcie1_rc {
status = "okay";
gpios = <&gpio4 1 GPIO_ACTIVE_HIGH>;
};

&pcie1_ep {
gpios = <&gpio4 1 GPIO_ACTIVE_HIGH>;
};

==================================================
arch/arm/dts/am572x-idk-common.dtsi
==================================================
status-leds {
compatible = "gpio-leds";
cpu0-led {
label = "status0:red:cpu0";
gpios = <&gpio8 4 GPIO_ACTIVE_HIGH>;
default-state = "off";
linux,default-trigger = "cpu0";
};

usr0-led {
label = "status0:green:usr";
gpios = <&gpio8 5 GPIO_ACTIVE_HIGH>;
default-state = "off";
};

heartbeat-led {
label = "status0:blue:heartbeat";
gpios = <&gpio8 7 GPIO_ACTIVE_HIGH>;
default-state = "off";
linux,default-trigger = "heartbeat";
};

cpu1-led {
label = "status1:red:cpu1";
gpios = <&gpio8 6 GPIO_ACTIVE_HIGH>;
default-state = "off";
linux,default-trigger = "cpu1";
};

&extcon_usb2 {
id-gpio = <&gpio5 7 GPIO_ACTIVE_HIGH>;
vbus-gpio = <&gpio5 18 GPIO_ACTIVE_HIGH>;
};

&sn65hvs882 {
load-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
};

&pcie1_rc {
status = "okay";
gpios = <&gpio4 1 GPIO_ACTIVE_HIGH>;
};

&pcie1_ep {
gpios = <&gpio4 1 GPIO_ACTIVE_HIGH>;
};

==================================================
arch/arm/dts/am57xx-idk-common.dtsi
==================================================
&i2c1 {
status = "okay";
clock-frequency = <400000>;

tps659038: tps659038@58 {
compatible = "ti,tps659038";
reg = <0x58>;
interrupts-extended = <&gpio5 19 IRQ_TYPE_LEVEL_HIGH
&dra7_pmx_core 0x418>;
#interrupt-cells = <2>;
interrupt-controller;
ti,system-power-controller;
ti,palmas-override-powerhold;

==================================================
arch/arm/dts/omap5-u-boot.dtsi
==================================================
&gpio7 {
u-boot,dm-spl;
};

&gpio8 {
u-boot,dm-spl;
};

&i2c1 {
u-boot,dm-spl;
};


==================================================
terminal boot message
==================================================

U-Boot SPL 2019.01-g80b6c2b052-dirty (Jul 04 2021 - 22:20:40 +0900)
DRA762-GP ES1.0 ABZ package
uclass_find_device_by_seq: 0 0
- 0 -1 'ipu@58820000'
- not found
uclass_find_device_by_seq: 1 0
- 0 -1 'ipu@58820000'
- found
uclass_find_device_by_seq: 0 0
- 0 -1 'ipu@58820000'
- not found
rproc_pre_probe: 'ipu@58820000': using fdt
fdtdec_get_bool: remoteproc-internal-memory-mapped
fdtdec_get_addr_size_auto_noparent: fdtdec_get_addr_size_auto_parent: na=1, ns=1, fdtdec_get_addr_size_fixed: reg: addr=58820000, size=10000
OF: ** translation for device ipu@58820000 **
OF: bus is default (na=1, ns=1) on ocp
OF: translating address: 00008258
OF: parent bus is default (na=2, ns=2) on
OF: walking ranges...
OF: default map, cp=0, s=c0000000, da=58820000
OF: parent translation for: 00000000 00000000
OF: with offset: 1484914688
OF: one level translation: 00000000 00008258
OF: reached root node
reset_get_by_index(dev=4037ee2c, index=2, reset_ctl=81fffe64)
fdtdec_get_int: #reset-cells: 0x1 (1)
fdtdec_get_int: #reset-cells: 0x1 (1)
fdtdec_get_int: #reset-cells: 0x1 (1)
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 0 'ocp'
- found
uclass_find_device_by_seq: 0 1
- -1 0 'ocp'
- -1 -1 'l4@4a000000'
- -1 -1 'scm@2000'
- -1 -1 'l4@4ae00000'
- -1 -1 'prm@6000'
- -1 -1 'ocp2scp@4a080000'
- not found
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 0 'ocp'
- found
uclass_find_device_by_seq: 0 1
- -1 0 'ocp'
- -1 -1 'l4@4a000000'
- -1 -1 'scm@2000'
- -1 1 'l4@4ae00000'
- found
uclass_find_device_by_seq: 0 2
- -1 0 'ocp'
- -1 -1 'l4@4a000000'
- -1 -1 'scm@2000'
- -1 1 'l4@4ae00000'
- -1 -1 'prm@6000'
- -1 -1 'ocp2scp@4a080000'
- not found
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'ipu1_rst@510'
- not found
OF: ** translation for device ipu1_rst@510 **
OF: bus is default (na=1, ns=1) on prm@6000
OF: translating address: 10050000
OF: parent bus is default (na=1, ns=1) on l4@4ae00000
OF: walking ranges...
OF: default map, cp=0, s=3000, da=510
OF: parent translation for: 00600000
OF: with offset: 1296
OF: one level translation: 10650000
OF: parent bus is default (na=1, ns=1) on ocp
OF: walking ranges...
OF: default map, cp=0, s=3f000, da=6510
OF: parent translation for: 0000e04a
OF: with offset: 25872
OF: one level translation: 1065e04a
OF: parent bus is default (na=2, ns=2) on
OF: walking ranges...
OF: default map, cp=0, s=c0000000, da=4ae06510
OF: parent translation for: 00000000 00000000
OF: with offset: 1256219920
OF: one level translation: 00000000 1065e04a
OF: reached root node
ofnode_read_u32: ti,nresets: 0x3 (3)
reset_of_xlate_default(reset_ctl=81fffe64)
reset_deassert(reset_ctl=81fffe64)
OF: ** translation for device ipu@58820000 **
OF: bus is default (na=1, ns=1) on ocp
OF: translating address: 00008258
OF: parent bus is default (na=2, ns=2) on
OF: walking ranges...
OF: default map, cp=0, s=c0000000, da=58820000
OF: parent translation for: 00000000 00000000
OF: with offset: 1484914688
OF: one level translation: 00000000 00008258
OF: reached root node
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'fs_loader@0'
- not found
ofnode_read_string: firmware-loader: /fs_loader@0
ofnode_read_u32_array: phandlepart: fdtdec_get_int_array: phandlepart
get_prop_check_min_len: phandlepart
ofnode_read_string: mtdpart: <not found>
ofnode_read_string: ubivol: <not found>
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'mmc@4809c000'
- -1 -1 'mmc@480b4000'
- not found
OF: ** translation for device mmc@4809c000 **
OF: bus is default (na=1, ns=1) on ocp
OF: translating address: 00c00948
OF: parent bus is default (na=2, ns=2) on
OF: walking ranges...
OF: default map, cp=0, s=c0000000, da=4809c000
OF: parent translation for: 00000000 00000000
OF: with offset: 1208598528
OF: one level translation: 00000000 00c00948
OF: reached root node
ofnode_read_u32: bus-width: 0x4 (4)
ofnode_read_u32: max-frequency: 0xb71b000 (192000000)
ofnode_read_bool: cap-sd-highspeed: false
ofnode_read_bool: cap-mmc-highspeed: false
ofnode_read_bool: sd-uhs-sdr12: true
ofnode_read_bool: sd-uhs-sdr25: true
ofnode_read_bool: sd-uhs-sdr50: true
ofnode_read_bool: sd-uhs-sdr104: true
ofnode_read_bool: sd-uhs-ddr50: true
ofnode_read_bool: mmc-ddr-1_8v: false
ofnode_read_bool: mmc-ddr-1_2v: false
ofnode_read_bool: mmc-hs200-1_8v: false
ofnode_read_bool: mmc-hs200-1_2v: false
ofnode_read_bool: mmc-hs400-1_8v: false
ofnode_read_bool: mmc-hs400-1_2v: false
fdtdec_get_bool: ti,dual-volt
fdtdec_get_bool: no-1-8-v
OF: ** translation for device mmc@4809c000 **
OF: bus is default (na=1, ns=1) on ocp
OF: translating address: 00c00948
OF: parent bus is default (na=2, ns=2) on
OF: walking ranges...
OF: default map, cp=0, s=c0000000, da=4809c000
OF: parent translation for: 00000000 00000000
OF: with offset: 1208598528
OF: one level translation: 00000000 00c00948
OF: reached root node
fail to find default mode FDT_ERR_NOTFOUND
no pinctrl state for default mode
uclass_find_device_by_seq: 0 0
- 0 0 'i2c@48070000'
- found
i2c_get_chip_for_busnum: bus='i2c@48070000', address 58, ret=0
i2c_get_chip: Searching bus 'i2c@48070000' for address 58: found, ret=0
i2c_xfer: 1 messages
i2c_xfer: chip=0x58, len=0x2
uclass_find_device_by_seq: 0 0
- 0 0 'i2c@48070000'
- found
i2c_get_chip_for_busnum: bus='i2c@48070000', address 58, ret=0
i2c_get_chip: Searching bus 'i2c@48070000' for address 58: found, ret=0
i2c_xfer: 1 messages
i2c_xfer: chip=0x58, len=0x2
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'mmc@4809c000.blk'
- -1 -1 'mmc@480b4000.blk'
- not found
clock is disabled (0Hz)
clock is enabled (400000Hz)
sd card: widths [4, 1, MMC legacy, SD High Speed (50MHz)]
host: widths [4, 1, MMC legacy, MMC High Speed (26MHz), SD High Speed (50MHz), MMC High Speed (52MHz)]
clock is enabled (50000000Hz)
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
part_init: try 'EFI': ret=-1
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
part_init: try 'DOS': ret=0
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
FAT32, fat_sect: 32, fatlength: 1103
Rootdir begins at cluster: 2, sector: 2238, offset: 117c00
Data begins at: 2236
Sector size: 512, cluster size: 1
FAT read(sect=2238), clust_size=1, DIRENTSPERBLOCK=16
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
FAT32: entry: 0x00000002 = 2, offset: 0x0002 = 2
debug: evicting -1, dirty: 0
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
FAT32: ret: 0x0ffffff8, entry: 0x00000002, offset: 0x0002
nextclust: 0xffffff8
** Unable to read file dra7-ipu1-fw.xem4 **
Error: -2 Failed to read dra7-ipu1-fw.xem4 from flash 4625416243971090396 != 0.
Firmware loading failed
rproc_dev_init: Unknown remote processor id '0' requested(-22)
spl_boot_ipu: IPU1 failed to initialize on rproc (-22)
Trying to boot from MMC1
uclass_find_device_by_seq: 0 0
- -1 0 'mmc@4809c000'
- found
uclass_find_device_by_seq: 0 1
- -1 0 'mmc@4809c000'
- -1 -1 'mmc@480b4000'
- not found
uclass_find_device_by_seq: 1 1
- -1 0 'mmc@4809c000'
- -1 -1 'mmc@480b4000'
- not found
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 0 'mmc@4809c000'
- found
uclass_find_device_by_seq: 0 1
- -1 0 'mmc@4809c000'
- -1 -1 'mmc@480b4000'
- not found
OF: ** translation for device mmc@480b4000 **
OF: bus is default (na=1, ns=1) on ocp
OF: translating address: 00400b48
OF: parent bus is default (na=2, ns=2) on
OF: walking ranges...
OF: default map, cp=0, s=c0000000, da=480b4000
OF: parent translation for: 00000000 00000000
OF: with offset: 1208696832
OF: one level translation: 00000000 00400b48
OF: reached root node
ofnode_read_u32: bus-width: 0x8 (8)
ofnode_read_u32: max-frequency: 0x5b8d800 (96000000)
ofnode_read_bool: cap-sd-highspeed: false
ofnode_read_bool: cap-mmc-highspeed: false
ofnode_read_bool: sd-uhs-sdr12: true
ofnode_read_bool: sd-uhs-sdr25: true
ofnode_read_bool: sd-uhs-sdr50: false
ofnode_read_bool: sd-uhs-sdr104: false
ofnode_read_bool: sd-uhs-ddr50: false
ofnode_read_bool: mmc-ddr-1_8v: true
ofnode_read_bool: mmc-ddr-1_2v: false
ofnode_read_bool: mmc-hs200-1_8v: false
ofnode_read_bool: mmc-hs200-1_2v: false
ofnode_read_bool: mmc-hs400-1_8v: false
ofnode_read_bool: mmc-hs400-1_2v: false
fdtdec_get_bool: ti,dual-volt
fdtdec_get_bool: no-1-8-v
OF: ** translation for device mmc@480b4000 **
OF: bus is default (na=1, ns=1) on ocp
OF: translating address: 00400b48
OF: parent bus is default (na=2, ns=2) on
OF: walking ranges...
OF: default map, cp=0, s=c0000000, da=480b4000
OF: parent translation for: 00000000 00000000
OF: with offset: 1208696832
OF: one level translation: 00000000 00400b48
OF: reached root node
fail to find default mode FDT_ERR_NOTFOUND
no pinctrl state for default mode
==>>> boot mode(2) device(5) [spl_mmc_load : 353 : common/spl/spl_mmc.c]
spl: mmc boot mode: fs
env_init: Environment FAT init done (ret=-2)
env_init: Environment MMC init done (ret=-2)
Loading Environment from FAT... blk_get_devnum_by_typename: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
blk_get_devnum_by_typename: Device desc 4037e9d4
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
** Can't read partition table on 0:0 **
** Invalid partition 1 **
==>>> device part str mmc -1... [env_fat_load : 97 : env/fat.c]
Using default environment
Destroy Hash Table: 403289ec table = 00000000
Create Hash Table: N=512
INSERT: table 403289ec, filled 1/521 rv 81f157d4 ==> name="bootargs" value="androidboot.serialno=${serial#} console=ttyS2,115200 androidboot.console=ttyS2 androidboot.hardware=beagle_x15board"
INSERT: table 403289ec, filled 2/521 rv 81f14064 ==> name="bootcmd" value="if test ${dofastboot} -eq 1; then echo Boot fastboot requested, resetting dofastboot ...;setenv dofastboot 0; saveenv;echo Booting into fastboot ...; fastboot 1; fi;if test ${boot_fit} -eq 1; then run update_to_fit;fi;run findfdt; run envboot; run mmcboot;run emmc_linux_boot; run emmc_android_boot; run setconsole;"
INSERT: table 403289ec, filled 3/521 rv 81f148c0 ==> name="bootdelay" value="2"
INSERT: table 403289ec, filled 4/521 rv 81f13c40 ==> name="baudrate" value="115200"
INSERT: table 403289ec, filled 5/521 rv 81f1345c ==> name="arch" value="arm"
INSERT: table 403289ec, filled 6/521 rv 81f14c58 ==> name="cpu" value="armv7"
INSERT: table 403289ec, filled 7/521 rv 81f14410 ==> name="board" value="am57xx"
INSERT: table 403289ec, filled 8/521 rv 81f13718 ==> name="board_name" value="am57xx"
INSERT: table 403289ec, filled 9/521 rv 81f14ce4 ==> name="vendor" value="ti"
INSERT: table 403289ec, filled 10/521 rv 81f152ac ==> name="soc" value="omap5"
INSERT: table 403289ec, filled 11/521 rv 81f14744 ==> name="loadaddr" value="0x82000000"
INSERT: table 403289ec, filled 12/521 rv 81f140c8 ==> name="kernel_addr_r" value="0x82000000"
INSERT: table 403289ec, filled 13/521 rv 81f14a64 ==> name="fdtaddr" value="0x88000000"
INSERT: table 403289ec, filled 14/521 rv 81f13a24 ==> name="fdt_addr_r" value="0x88000000"
INSERT: table 403289ec, filled 15/521 rv 81f148ac ==> name="rdaddr" value="0x88080000"
INSERT: table 403289ec, filled 16/521 rv 81f14de8 ==> name="ramdisk_addr_r" value="0x88080000"
INSERT: table 403289ec, filled 17/521 rv 81f138bc ==> name="scriptaddr" value="0x80000000"
INSERT: table 403289ec, filled 18/521 rv 81f1372c ==> name="pxefile_addr_r" value="0x80100000"
INSERT: table 403289ec, filled 19/521 rv 81f1309c ==> name="bootm_size" value="0x10000000"
INSERT: table 403289ec, filled 20/521 rv 81f13bc8 ==> name="boot_fdt" value="try"
INSERT: table 403289ec, filled 21/521 rv 81f13560 ==> name="mmcdev" value="0"
INSERT: table 403289ec, filled 22/521 rv 81f1426c ==> name="mmcrootfstype" value="ext4 rootwait"

Terminal Boot Message Stopped..
Reset


U-Boot SPL 2019.01-gfb289ff185-dirty (Jul 05 2021 - 05:25:13 +0900)
DRA762-GP ES1.0 ABZ package
uclass_find_device_by_seq: 0 0
- 0 -1 'ipu@58820000'
- not found
uclass_find_device_by_seq: 1 0
- 0 -1 'ipu@58820000'
- found
uclass_find_device_by_seq: 0 0
- 0 -1 'ipu@58820000'
- not found
rproc_pre_probe: 'ipu@58820000': using fdt
fdtdec_get_bool: remoteproc-internal-memory-mapped
fdtdec_get_addr_size_auto_noparent: fdtdec_get_addr_size_auto_parent: na=1, ns=1, fdtdec_get_addr_size_fixed: reg: addr=58820000, size=10000
OF: ** translation for device ipu@58820000 **
OF: bus is default (na=1, ns=1) on ocp
OF: translating address: 00008258
OF: parent bus is default (na=2, ns=2) on
OF: walking ranges...
OF: default map, cp=0, s=c0000000, da=58820000
OF: parent translation for: 00000000 00000000
OF: with offset: 1484914688
OF: one level translation: 00000000 00008258
OF: reached root node
reset_get_by_index(dev=4037ee2c, index=2, reset_ctl=81fffe64)
fdtdec_get_int: #reset-cells: 0x1 (1)
fdtdec_get_int: #reset-cells: 0x1 (1)
fdtdec_get_int: #reset-cells: 0x1 (1)
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 0 'ocp'
- found
uclass_find_device_by_seq: 0 1
- -1 0 'ocp'
- -1 -1 'l4@4a000000'
- -1 -1 'scm@2000'
- -1 -1 'l4@4ae00000'
- -1 -1 'prm@6000'
- -1 -1 'ocp2scp@4a080000'
- not found
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 0 'ocp'
- found
uclass_find_device_by_seq: 0 1
- -1 0 'ocp'
- -1 -1 'l4@4a000000'
- -1 -1 'scm@2000'
- -1 1 'l4@4ae00000'
- found
uclass_find_device_by_seq: 0 2
- -1 0 'ocp'
- -1 -1 'l4@4a000000'
- -1 -1 'scm@2000'
- -1 1 'l4@4ae00000'
- -1 -1 'prm@6000'
- -1 -1 'ocp2scp@4a080000'
- not found
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'ipu1_rst@510'
- not found
OF: ** translation for device ipu1_rst@510 **
OF: bus is default (na=1, ns=1) on prm@6000
OF: translating address: 10050000
OF: parent bus is default (na=1, ns=1) on l4@4ae00000
OF: walking ranges...
OF: default map, cp=0, s=3000, da=510
OF: parent translation for: 00600000
OF: with offset: 1296
OF: one level translation: 10650000
OF: parent bus is default (na=1, ns=1) on ocp
OF: walking ranges...
OF: default map, cp=0, s=3f000, da=6510
OF: parent translation for: 0000e04a
OF: with offset: 25872
OF: one level translation: 1065e04a
OF: parent bus is default (na=2, ns=2) on
OF: walking ranges...
OF: default map, cp=0, s=c0000000, da=4ae06510
OF: parent translation for: 00000000 00000000
OF: with offset: 1256219920
OF: one level translation: 00000000 1065e04a
OF: reached root node
ofnode_read_u32: ti,nresets: 0x3 (3)
reset_of_xlate_default(reset_ctl=81fffe64)
reset_deassert(reset_ctl=81fffe64)
OF: ** translation for device ipu@58820000 **
OF: bus is default (na=1, ns=1) on ocp
OF: translating address: 00008258
OF: parent bus is default (na=2, ns=2) on
OF: walking ranges...
OF: default map, cp=0, s=c0000000, da=58820000
OF: parent translation for: 00000000 00000000
OF: with offset: 1484914688
OF: one level translation: 00000000 00008258
OF: reached root node
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'fs_loader@0'
- not found
ofnode_read_string: firmware-loader: /fs_loader@0
ofnode_read_u32_array: phandlepart: fdtdec_get_int_array: phandlepart
get_prop_check_min_len: phandlepart
ofnode_read_string: mtdpart: <not found>
ofnode_read_string: ubivol: <not found>
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'mmc@4809c000'
- -1 -1 'mmc@480b4000'
- not found
OF: ** translation for device mmc@4809c000 **
OF: bus is default (na=1, ns=1) on ocp
OF: translating address: 00c00948
OF: parent bus is default (na=2, ns=2) on
OF: walking ranges...
OF: default map, cp=0, s=c0000000, da=4809c000
OF: parent translation for: 00000000 00000000
OF: with offset: 1208598528
OF: one level translation: 00000000 00c00948
OF: reached root node
ofnode_read_u32: bus-width: 0x4 (4)
ofnode_read_u32: max-frequency: 0xb71b000 (192000000)
ofnode_read_bool: cap-sd-highspeed: false
ofnode_read_bool: cap-mmc-highspeed: false
ofnode_read_bool: sd-uhs-sdr12: true
ofnode_read_bool: sd-uhs-sdr25: true
ofnode_read_bool: sd-uhs-sdr50: true
ofnode_read_bool: sd-uhs-sdr104: true
ofnode_read_bool: sd-uhs-ddr50: true
ofnode_read_bool: mmc-ddr-1_8v: false
ofnode_read_bool: mmc-ddr-1_2v: false
ofnode_read_bool: mmc-hs200-1_8v: false
ofnode_read_bool: mmc-hs200-1_2v: false
ofnode_read_bool: mmc-hs400-1_8v: false
ofnode_read_bool: mmc-hs400-1_2v: false
fdtdec_get_bool: ti,dual-volt
fdtdec_get_bool: no-1-8-v
OF: ** translation for device mmc@4809c000 **
OF: bus is default (na=1, ns=1) on ocp
OF: translating address: 00c00948
OF: parent bus is default (na=2, ns=2) on
OF: walking ranges...
OF: default map, cp=0, s=c0000000, da=4809c000
OF: parent translation for: 00000000 00000000
OF: with offset: 1208598528
OF: one level translation: 00000000 00c00948
OF: reached root node
fail to find default mode FDT_ERR_NOTFOUND
no pinctrl state for default mode
uclass_find_device_by_seq: 0 0
- 0 0 'i2c@48070000'
- found
i2c_get_chip_for_busnum: bus='i2c@48070000', address 58, ret=0
i2c_get_chip: Searching bus 'i2c@48070000' for address 58: found, ret=0
i2c_xfer: 1 messages
i2c_xfer: chip=0x58, len=0x2
uclass_find_device_by_seq: 0 0
- 0 0 'i2c@48070000'
- found
i2c_get_chip_for_busnum: bus='i2c@48070000', address 58, ret=0
i2c_get_chip: Searching bus 'i2c@48070000' for address 58: found, ret=0
i2c_xfer: 1 messages
i2c_xfer: chip=0x58, len=0x2
uclass_find_device_by_seq: 0 -1
uclass_find_device_by_seq: 0 0
- -1 -1 'mmc@4809c000.blk'
- -1 -1 'mmc@480b4000.blk'
- not found
clock is disabled (0Hz)
clock is enabled (400000Hz)
sd card: widths [4, 1, MMC legacy, SD High Speed (50MHz)]
host: widths [4, 1, MMC legacy, MMC High Speed (26MHz), SD High Speed (50MHz), MMC High Speed (52MHz)]
clock is enabled (50000000Hz)
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
part_init: try 'EFI': ret=-1
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
part_init: try 'DOS': ret=0
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
FAT32, fat_sect: 32, fatlength: 1103
Rootdir begins at cluster: 2, sector: 2238, offset: 117c00
Data begins at: 2236
Sector size: 512, cluster size: 1
FAT read(sect=2238), clust_size=1, DIRENTSPERBLOCK=16
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
FAT32: entry: 0x00000002 = 2, offset: 0x0002 = 2
debug: evicting -1, dirty: 0
blk_find_device: if_type=6, devnum=0: mmc@4809c000.blk, 6, 0
FAT32: ret: 0x0ffffff8, entry: 0x00000002, offset: 0x0002
nextclust: 0xffffff8

Terminal Boot Message Stopped..

Please let me know if I am missing anything when setting up a custom board.

I'm using the latest PROCESSOR-SDK-LINUX-AM57X Version: 06.03.00.106.
Same symptoms when testing using a different SD card.

It was confirmed that the SD card is the default MLO / U-boot.img and booted normally on the TMDSIDK574 board.
The boot issue is an AM5749 custom board built on the TMDSIDK574.
There are changes to the pinmap, and it has been changed from a micro SD slot to a regular SD slot.

This is a schematic related to SD CARD.

  • Hi,

    I believe you are using 6.03 Latest SDK. Can you try with a different SD card? Also have you tried the default MLO/U-boot.img?

    Is there any change w.r.t SD cage when compared with IDK schematics?

    - Keerthy

  • I'm using the latest PROCESSOR-SDK-LINUX-AM57X Version: 06.03.00.106.
    Same symptoms when testing using a different SD card.

    It was confirmed that the SD card is the default MLO / U-boot.img and booted normally on the TMDSIDK574 board.
    The boot issue is an AM5749 custom board built on the TMDSIDK574.
    There are changes to the pinmap, and it has been changed from a micro SD slot to a regular SD slot.

    This is a schematic related to SD CARD.

  • Hi,

    Since the MLO is coming up basic MMC seems to okay.

    Can you share the changes you have done for your custom board as a patch on top of 6.03 u-boot directory,
    It will be easier for me to review.

    - Keerthy

  • Hi.

    Attaches a patch with the changes made to the custom board.

    Please review.


    --- arch/arm/dts/am572x-idk-common.dtsi Mon Apr 20 13:14:38 2020
    +++ arch/arm/dts/am572x-idk-common.dtsi Sun Jul 4 22:27:54 2021
    @@ -17,27 +17,27 @@
    compatible = "gpio-leds";
    cpu0-led {
    label = "status0:red:cpu0";
    - gpios = <&gpio4 0 GPIO_ACTIVE_HIGH>;
    + gpios = <&gpio8 4 GPIO_ACTIVE_HIGH>;
    default-state = "off";
    linux,default-trigger = "cpu0";
    };

    usr0-led {
    label = "status0:green:usr";
    - gpios = <&gpio3 11 GPIO_ACTIVE_HIGH>;
    + gpios = <&gpio8 5 GPIO_ACTIVE_HIGH>;
    default-state = "off";
    };

    heartbeat-led {
    label = "status0:blue:heartbeat";
    - gpios = <&gpio3 12 GPIO_ACTIVE_HIGH>;
    + gpios = <&gpio8 7 GPIO_ACTIVE_HIGH>;
    default-state = "off";
    linux,default-trigger = "heartbeat";
    };

    cpu1-led {
    label = "status1:red:cpu1";
    - gpios = <&gpio3 10 GPIO_ACTIVE_HIGH>;
    + gpios = <&gpio8 6 GPIO_ACTIVE_HIGH>;
    default-state = "off";
    linux,default-trigger = "cpu1";
    };
    @@ -62,21 +62,21 @@
    };

    &extcon_usb2 {
    - id-gpio = <&gpio3 16 GPIO_ACTIVE_HIGH>;
    - vbus-gpio = <&gpio3 26 GPIO_ACTIVE_HIGH>;
    + id-gpio = <&gpio5 7 GPIO_ACTIVE_HIGH>;
    + vbus-gpio = <&gpio5 18 GPIO_ACTIVE_HIGH>;
    };

    &sn65hvs882 {
    - load-gpios = <&gpio3 19 GPIO_ACTIVE_LOW>;
    + load-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
    };

    &pcie1_rc {
    status = "okay";
    - gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
    + gpios = <&gpio4 1 GPIO_ACTIVE_HIGH>;
    };

    &pcie1_ep {
    - gpios = <&gpio3 23 GPIO_ACTIVE_HIGH>;
    + gpios = <&gpio4 1 GPIO_ACTIVE_HIGH>;
    };

    &mailbox5 {
    --- arch/arm/dts/am57xx-idk-common.dtsi Mon Apr 20 13:14:38 2020
    +++ arch/arm/dts/am57xx-idk-common.dtsi Sun Jul 4 22:27:54 2021
    @@ -124,7 +124,7 @@
    tps659038: tps659038@58 {
    compatible = "ti,tps659038";
    reg = <0x58>;
    - interrupts-extended = <&gpio6 16 IRQ_TYPE_LEVEL_HIGH
    + interrupts-extended = <&gpio5 19 IRQ_TYPE_LEVEL_HIGH
    &dra7_pmx_core 0x418>;
    #interrupt-cells = <2>;
    interrupt-controller;
    @@ -403,7 +403,7 @@
    status = "okay";
    vmmc-supply = <&v3_3d>;
    vqmmc-supply = <&ldo1_reg>;
    - bus-width = <4>;
    + bus-width = <4>; /* wj@dev210601 4 -> 1 */
    cd-gpios = <&gpio6 27 GPIO_ACTIVE_LOW>; /* gpio 219 */
    no-1-8-v;
    };
    --- arch/arm/dts/omap5-u-boot.dtsi Mon Apr 20 13:14:38 2020
    +++ arch/arm/dts/omap5-u-boot.dtsi Sun Jul 4 22:27:54 2021
    @@ -102,6 +102,10 @@
    u-boot,dm-spl;
    };

    +&gpio8 {
    + u-boot,dm-spl;
    +};
    +
    &i2c1 {
    u-boot,dm-spl;
    };
    --- arch/arm/mach-omap2/emif-common.c Mon Apr 20 13:14:38 2020
    +++ arch/arm/mach-omap2/emif-common.c Sun Jul 4 22:27:54 2021
    @@ -1338,8 +1338,11 @@
    sys_addr = CONFIG_SYS_SDRAM_BASE;
    emif1_size = get_emif_mem_size(EMIF1_BASE);
    emif2_size = get_emif_mem_size(EMIF2_BASE);
    +#ifdef DEBUG
    debug("emif1_size 0x%x emif2_size 0x%x\n", emif1_size, emif2_size);
    -
    +#else
    + printf("==>>> emif1_size 0x%x emif2_size 0x%x [%s : %d : %s] \n", emif1_size, emif2_size, __func__, __LINE__, __FILE__);
    +#endif
    if (!emif1_size && !emif2_size)
    return;

    --- board/ti/am57xx/mux_data.h Mon Apr 20 13:14:38 2020
    +++ board/ti/am57xx/mux_data.h Sun Jul 4 22:27:54 2021
    @@ -495,163 +495,155 @@
    };

    const struct pad_conf_entry core_padconf_array_essential_am574x_idk[] = {
    - {GPMC_A0, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a0.vin4b_d0 */
    - {GPMC_A1, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a1.vin4b_d1 */
    - {GPMC_A2, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a2.vin4b_d2 */
    - {GPMC_A3, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a3.vin4b_d3 */
    - {GPMC_A4, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a4.vin4b_d4 */
    - {GPMC_A5, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a5.vin4b_d5 */
    - {GPMC_A6, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a6.vin4b_d6 */
    - {GPMC_A7, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a7.vin4b_d7 */
    - {GPMC_A8, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a8.vin4b_hsync1 */
    - {GPMC_A9, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a9.vin4b_vsync1 */
    - {GPMC_A10, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a10.vin4b_clk1 */
    - {GPMC_A11, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a11.vin4b_de1 */
    - {GPMC_A12, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a12.vin4b_fld1 */
    - {GPMC_A13, (M1 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a13.qspi1_rtclk */
    - {GPMC_A14, (M1 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a14.qspi1_d3 */
    - {GPMC_A15, (M1 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a15.qspi1_d2 */
    - {GPMC_A16, (M1 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a16.qspi1_d0 */
    - {GPMC_A17, (M1 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a17.qspi1_d1 */
    + /* CAMERA */
    +// {GPMC_A10,(M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a10.vin4b_clk1 */
    +// {GPMC_A9, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a9.vin4b_vsync1 */
    +// {GPMC_A8, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a8.vin4b_hsync1 */
    +// {GPMC_A11,(M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a11.vin4b_de1 */
    +// {GPMC_A12,(M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a12.vin4b_fld1 */
    +// {GPMC_A0, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a0.vin4b_d0 */
    +// {GPMC_A1, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a1.vin4b_d1 */
    +// {GPMC_A2, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a2.vin4b_d2 */
    +// {GPMC_A3, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a3.vin4b_d3 */
    +// {GPMC_A4, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a4.vin4b_d4 */
    +// {GPMC_A5, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a5.vin4b_d5 */
    +// {GPMC_A6, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a6.vin4b_d6 */
    +// {GPMC_A7, (M6 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a7.vin4b_d7 */
    +// {XREF_CLK3, (M9 | PIN_OUTPUT_PULLDOWN)}, /* xref_clk3.clkout3 */
    +// /* CAM_ENn */
    +// {GPIO6_14, (M0 | PIN_OUTPUT)}, /* gpio6_14.gpio6_14 E21 */
    +
    +
    + /* QSPI */
    {GPMC_A18, (M1 | PIN_OUTPUT | MANUAL_MODE)}, /* gpmc_a18.qspi1_sclk */
    - {GPMC_A19, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_a19.mmc2_dat4 */
    - {GPMC_A20, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_a20.mmc2_dat5 */
    - {GPMC_A21, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_a21.mmc2_dat6 */
    - {GPMC_A22, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_a22.mmc2_dat7 */
    + {GPMC_A13, (M1 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a13.qspi1_rtclk */
    + {GPMC_CS2, (M1 | PIN_OUTPUT | MANUAL_MODE)}, /* gpmc_cs2.qspi1_cs0 */
    + {GPMC_A16, (M1 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a16.qspi1_d0 */
    + {GPMC_A17, (M1 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a17.qspi1_d1 */
    + {GPMC_A15, (M1 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a15.qspi1_d2 */
    + {GPMC_A14, (M1 | PIN_INPUT | MANUAL_MODE)}, /* gpmc_a14.qspi1_d3 */
    +
    + /* eMMC */
    {GPMC_A23, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_a23.mmc2_clk */
    + {GPMC_CS1, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_cs1.mmc2_cmd */
    {GPMC_A24, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_a24.mmc2_dat0 */
    {GPMC_A25, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_a25.mmc2_dat1 */
    {GPMC_A26, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_a26.mmc2_dat2 */
    {GPMC_A27, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_a27.mmc2_dat3 */
    - {GPMC_CS1, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_cs1.mmc2_cmd */
    - {GPMC_CS2, (M1 | PIN_OUTPUT | MANUAL_MODE)}, /* gpmc_cs2.qspi1_cs0 */
    - {VIN1A_D5, (M14 | PIN_OUTPUT)}, /* vin1a_d5.gpio3_9 */
    - {VIN1A_D6, (M14 | PIN_OUTPUT)}, /* vin1a_d6.gpio3_10 */
    - {VIN1A_D7, (M14 | PIN_OUTPUT)}, /* vin1a_d7.gpio3_11 */
    - {VIN1A_D8, (M14 | PIN_OUTPUT)}, /* vin1a_d8.gpio3_12 */
    - {VIN1A_D10, (M14 | PIN_INPUT_PULLDOWN)}, /* vin1a_d10.gpio3_14 */
    - {VIN1A_D12, (M14 | PIN_INPUT)}, /* vin1a_d12.gpio3_16 */
    - {VIN1A_D13, (M14 | PIN_OUTPUT)}, /* vin1a_d13.gpio3_17 */
    - {VIN1A_D14, (M14 | PIN_OUTPUT)}, /* vin1a_d14.gpio3_18 */
    - {VIN1A_D15, (M14 | PIN_OUTPUT)}, /* vin1a_d15.gpio3_19 */
    - {VIN1A_D17, (M14 | PIN_OUTPUT)}, /* vin1a_d17.gpio3_21 */
    - {VIN1A_D18, (M14 | PIN_OUTPUT_PULLDOWN)}, /* vin1a_d18.gpio3_22 */
    - {VIN1A_D19, (M14 | PIN_OUTPUT_PULLUP)}, /* vin1a_d19.gpio3_23 */
    - {VIN1A_D22, (M14 | PIN_INPUT)}, /* vin1a_d22.gpio3_26 */
    - {VIN2A_CLK0, (M14 | PIN_INPUT_PULLUP)}, /* vin2a_clk0.gpio3_28 */
    - {VIN2A_DE0, (M14 | PIN_INPUT_PULLUP)}, /* vin2a_de0.gpio3_29 */
    - {VIN2A_FLD0, (M14 | PIN_INPUT_PULLUP)}, /* vin2a_fld0.gpio3_30 */
    - {VIN2A_HSYNC0, (M14 | PIN_INPUT_PULLUP)}, /* vin2a_hsync0.gpio3_31 */
    - {VIN2A_VSYNC0, (M14 | PIN_INPUT)}, /* vin2a_vsync0.gpio4_0 */
    - {VIN2A_D0, (M11 | PIN_INPUT)}, /* vin2a_d0.pr1_uart0_rxd */
    - {VIN2A_D1, (M11 | PIN_OUTPUT)}, /* vin2a_d1.pr1_uart0_txd */
    - {VIN2A_D2, (M10 | PIN_OUTPUT)}, /* vin2a_d2.eCAP1_in_PWM1_out */
    - {VIN2A_D3, (M11 | PIN_INPUT_PULLDOWN)}, /* vin2a_d3.pr1_edc_latch0_in */
    - {VIN2A_D4, (M11 | PIN_OUTPUT)}, /* vin2a_d4.pr1_edc_sync0_out */
    - {VIN2A_D5, (M13 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d5.pr1_pru1_gpo2 */
    - {VIN2A_D10, (M11 | PIN_OUTPUT_PULLDOWN)}, /* vin2a_d10.pr1_mdio_mdclk */
    - {VIN2A_D11, (M11 | PIN_INPUT)}, /* vin2a_d11.pr1_mdio_data */
    - {VIN2A_D12, (M3 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d12.rgmii1_txc */
    - {VIN2A_D13, (M3 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d13.rgmii1_txctl */
    - {VIN2A_D14, (M3 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d14.rgmii1_txd3 */
    - {VIN2A_D15, (M3 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d15.rgmii1_txd2 */
    - {VIN2A_D16, (M3 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d16.rgmii1_txd1 */
    - {VIN2A_D17, (M3 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d17.rgmii1_txd0 */
    - {VIN2A_D18, (M3 | PIN_INPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d18.rgmii1_rxc */
    - {VIN2A_D19, (M3 | PIN_INPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d19.rgmii1_rxctl */
    - {VIN2A_D20, (M3 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* vin2a_d20.rgmii1_rxd3 */
    - {VIN2A_D21, (M3 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* vin2a_d21.rgmii1_rxd2 */
    - {VIN2A_D22, (M3 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* vin2a_d22.rgmii1_rxd1 */
    - {VIN2A_D23, (M3 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* vin2a_d23.rgmii1_rxd0 */
    - {VOUT1_CLK, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_clk.vout1_clk */
    - {VOUT1_DE, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_de.vout1_de */
    - {VOUT1_FLD, (M14 | PIN_OUTPUT)}, /* vout1_fld.gpio4_21 */
    - {VOUT1_HSYNC, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_hsync.vout1_hsync */
    - {VOUT1_VSYNC, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_vsync.vout1_vsync */
    - {VOUT1_D0, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d0.vout1_d0 */
    - {VOUT1_D1, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d1.vout1_d1 */
    - {VOUT1_D2, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d2.vout1_d2 */
    - {VOUT1_D3, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d3.vout1_d3 */
    - {VOUT1_D4, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d4.vout1_d4 */
    - {VOUT1_D5, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d5.vout1_d5 */
    - {VOUT1_D6, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d6.vout1_d6 */
    - {VOUT1_D7, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d7.vout1_d7 */
    - {VOUT1_D8, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d8.vout1_d8 */
    - {VOUT1_D9, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d9.vout1_d9 */
    - {VOUT1_D10, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d10.vout1_d10 */
    - {VOUT1_D11, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d11.vout1_d11 */
    - {VOUT1_D12, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d12.vout1_d12 */
    - {VOUT1_D13, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d13.vout1_d13 */
    - {VOUT1_D14, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d14.vout1_d14 */
    - {VOUT1_D15, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d15.vout1_d15 */
    - {VOUT1_D16, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d16.vout1_d16 */
    - {VOUT1_D17, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d17.vout1_d17 */
    - {VOUT1_D18, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d18.vout1_d18 */
    - {VOUT1_D19, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d19.vout1_d19 */
    - {VOUT1_D20, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d20.vout1_d20 */
    - {VOUT1_D21, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d21.vout1_d21 */
    - {VOUT1_D22, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d22.vout1_d22 */
    - {VOUT1_D23, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d23.vout1_d23 */
    - {MDIO_MCLK, (M0 | PIN_INPUT_SLEW)}, /* mdio_mclk.mdio_mclk */
    - {MDIO_D, (M0 | PIN_INPUT | SLEWCONTROL)}, /* mdio_d.mdio_d */
    - {RGMII0_TXC, (M0 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_txc.rgmii0_txc */
    - {RGMII0_TXCTL, (M0 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_txctl.rgmii0_txctl */
    - {RGMII0_TXD3, (M0 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_txd3.rgmii0_txd3 */
    - {RGMII0_TXD2, (M0 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_txd2.rgmii0_txd2 */
    - {RGMII0_TXD1, (M0 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_txd1.rgmii0_txd1 */
    - {RGMII0_TXD0, (M0 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_txd0.rgmii0_txd0 */
    - {RGMII0_RXC, (M0 | PIN_INPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_rxc.rgmii0_rxc */
    - {RGMII0_RXCTL, (M0 | PIN_INPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_rxctl.rgmii0_rxctl */
    - {RGMII0_RXD3, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* rgmii0_rxd3.rgmii0_rxd3 */
    - {RGMII0_RXD2, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* rgmii0_rxd2.rgmii0_rxd2 */
    - {RGMII0_RXD1, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* rgmii0_rxd1.rgmii0_rxd1 */
    - {RGMII0_RXD0, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* rgmii0_rxd0.rgmii0_rxd0 */
    + {GPMC_A19, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_a19.mmc2_dat4 */
    + {GPMC_A20, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_a20.mmc2_dat5 */
    + {GPMC_A21, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_a21.mmc2_dat6 */
    + {GPMC_A22, (M1 | PIN_INPUT_PULLUP)}, /* gpmc_a22.mmc2_dat7 */
    + /* eMMC_RSTn */
    + {MCASP1_AXR2, (M14 | PIN_OUTPUT)}, /* vout1_fld.gpio4_21 -> mcasp1_axr2.gpio5_4 */
    +
    +
    + /* USB1[3.0] */
    {USB1_DRVVBUS, (M0 | PIN_OUTPUT | SLEWCONTROL)}, /* usb1_drvvbus.usb1_drvvbus */
    +
    + /* USB2[2.0] */
    {USB2_DRVVBUS, (M0 | PIN_OUTPUT | SLEWCONTROL)}, /* usb2_drvvbus.usb2_drvvbus */
    - {GPIO6_14, (M0 | PIN_OUTPUT)}, /* gpio6_14.gpio6_14 */
    - {GPIO6_15, (M0 | PIN_OUTPUT)}, /* gpio6_15.gpio6_15 */
    - {GPIO6_16, (M0 | PIN_INPUT_PULLUP)}, /* gpio6_16.gpio6_16 */
    - {XREF_CLK0, (M11 | PIN_INPUT_PULLDOWN)}, /* xref_clk0.pr2_mii1_col */
    - {XREF_CLK1, (M11 | PIN_INPUT_PULLDOWN)}, /* xref_clk1.pr2_mii1_crs */
    - {XREF_CLK2, (M14 | PIN_OUTPUT)}, /* xref_clk2.gpio6_19 */
    - {XREF_CLK3, (M9 | PIN_OUTPUT_PULLDOWN)}, /* xref_clk3.clkout3 */
    - {MCASP1_ACLKX, (M11 | PIN_OUTPUT_PULLDOWN)}, /* mcasp1_aclkx.pr2_mdio_mdclk */
    - {MCASP1_FSX, (M11 | PIN_INPUT | SLEWCONTROL)}, /* mcasp1_fsx.pr2_mdio_data */
    - {MCASP1_ACLKR, (M14 | PIN_INPUT)}, /* mcasp1_aclkr.gpio5_0 */
    - {MCASP1_FSR, (M14 | PIN_INPUT)}, /* mcasp1_fsr.gpio5_1 */
    - {MCASP1_AXR0, (M11 | PIN_INPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr0.pr2_mii0_rxer */
    - {MCASP1_AXR1, (M11 | PIN_INPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr1.pr2_mii_mt0_clk */
    - {MCASP1_AXR2, (M14 | PIN_INPUT)}, /* mcasp1_axr2.gpio5_4 */
    - {MCASP1_AXR3, (M14 | PIN_INPUT)}, /* mcasp1_axr3.gpio5_5 */
    - {MCASP1_AXR4, (M14 | PIN_OUTPUT)}, /* mcasp1_axr4.gpio5_6 */
    - {MCASP1_AXR5, (M14 | PIN_OUTPUT)}, /* mcasp1_axr5.gpio5_7 */
    - {MCASP1_AXR6, (M14 | PIN_OUTPUT)}, /* mcasp1_axr6.gpio5_8 */
    - {MCASP1_AXR7, (M14 | PIN_OUTPUT)}, /* mcasp1_axr7.gpio5_9 */
    - {MCASP1_AXR8, (M11 | PIN_OUTPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr8.pr2_mii0_txen */
    - {MCASP1_AXR9, (M11 | PIN_OUTPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr9.pr2_mii0_txd3 */
    - {MCASP1_AXR10, (M11 | PIN_OUTPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr10.pr2_mii0_txd2 */
    - {MCASP1_AXR11, (M11 | PIN_OUTPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr11.pr2_mii0_txd1 */
    - {MCASP1_AXR12, (M11 | PIN_OUTPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr12.pr2_mii0_txd0 */
    - {MCASP1_AXR13, (M11 | PIN_INPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr13.pr2_mii_mr0_clk */
    - {MCASP1_AXR14, (M11 | PIN_INPUT_SLEW)}, /* mcasp1_axr14.pr2_mii0_rxdv */
    - {MCASP1_AXR15, (M11 | PIN_INPUT_SLEW)}, /* mcasp1_axr15.pr2_mii0_rxd3 */
    - {MCASP2_ACLKX, (M11 | PIN_INPUT_PULLDOWN)}, /* mcasp2_aclkx.pr2_mii0_rxd2 */
    - {MCASP2_FSX, (M11 | PIN_INPUT_SLEW)}, /* mcasp2_fsx.pr2_mii0_rxd1 */
    - {MCASP2_AXR2, (M11 | PIN_INPUT_SLEW)}, /* mcasp2_axr2.pr2_mii0_rxd0 */
    - {MCASP2_AXR3, (M11 | PIN_INPUT_SLEW)}, /* mcasp2_axr3.pr2_mii0_rxlink */
    - {MCASP2_AXR4, (M14 | PIN_INPUT)}, /* mcasp2_axr4.gpio1_4 */
    - {MCASP2_AXR5, (M14 | PIN_OUTPUT)}, /* mcasp2_axr5.gpio6_7 */
    - {MCASP2_AXR6, (M14 | PIN_OUTPUT)}, /* mcasp2_axr6.gpio2_29 */
    - {MCASP2_AXR7, (M14 | PIN_INPUT)}, /* mcasp2_axr7.gpio1_5 */
    - {MCASP3_ACLKX, (M11 | PIN_INPUT_PULLDOWN)}, /* mcasp3_aclkx.pr2_mii0_crs */
    - {MCASP3_FSX, (M11 | PIN_INPUT_SLEW)}, /* mcasp3_fsx.pr2_mii0_col */
    - {MCASP3_AXR0, (M11 | PIN_INPUT_PULLUP | SLEWCONTROL)}, /* mcasp3_axr0.pr2_mii1_rxer */
    - {MCASP3_AXR1, (M11 | PIN_INPUT_PULLUP | SLEWCONTROL)}, /* mcasp3_axr1.pr2_mii1_rxlink */
    - {MCASP4_ACLKX, (M2 | PIN_INPUT)}, /* mcasp4_aclkx.spi3_sclk */
    - {MCASP4_FSX, (M2 | PIN_INPUT)}, /* mcasp4_fsx.spi3_d1 */
    - {MCASP4_AXR1, (M2 | PIN_INPUT_PULLUP)}, /* mcasp4_axr1.spi3_cs0 */
    - {MCASP5_ACLKX, (M13 | PIN_OUTPUT | MANUAL_MODE)}, /* mcasp5_aclkx.pr2_pru1_gpo1 */
    - {MCASP5_FSX, (M12 | PIN_INPUT | MANUAL_MODE)}, /* mcasp5_fsx.pr2_pru1_gpi2 */
    + /* GPIO_AM572X_USB2_ID */
    + {MCASP1_AXR5, (M14 | PIN_INPUT)}, /* vin1a_d12.gpio3_16 -> mcasp1_axr5.gpio5_7 */
    +
    +
    + /* RGMII0 Gigabit Ethernet 0 */
    +// {RGMII0_TXC, (M0 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_txc.rgmii0_txc */
    +// {RGMII0_TXCTL, (M0 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_txctl.rgmii0_txctl */
    +// {RGMII0_TXD0, (M0 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_txd0.rgmii0_txd0 */
    +// {RGMII0_TXD1, (M0 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_txd1.rgmii0_txd1 */
    +// {RGMII0_TXD2, (M0 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_txd2.rgmii0_txd2 */
    +// {RGMII0_TXD3, (M0 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_txd3.rgmii0_txd3 */
    +// {RGMII0_RXC, (M0 | PIN_INPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_rxc.rgmii0_rxc */
    +// {RGMII0_RXCTL, (M0 | PIN_INPUT_PULLDOWN | MANUAL_MODE)}, /* rgmii0_rxctl.rgmii0_rxctl */
    +// {RGMII0_RXD0, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* rgmii0_rxd0.rgmii0_rxd0 */
    +// {RGMII0_RXD1, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* rgmii0_rxd1.rgmii0_rxd1 */
    +// {RGMII0_RXD2, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* rgmii0_rxd2.rgmii0_rxd2 */
    +// {RGMII0_RXD3, (M0 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* rgmii0_rxd3.rgmii0_rxd3 */
    +// {MDIO_MCLK, (M0 | PIN_INPUT_SLEW)}, /* mdio_mclk.mdio_mclk */
    +// {MDIO_D, (M0 | PIN_INPUT | SLEWCONTROL)}, /* mdio_d.mdio_d */
    +// /* GB_ETH0_INTn */
    +// {MCASP1_ACLKR, (M14 | PIN_INPUT)}, /* mcasp1_aclkr.gpio5_0 */
    +// /* GPIO_PRU1_ETH0_RESETn */
    +// {MCASP1_AXR4, (M14 | PIN_OUTPUT)}, /* mcasp1_axr4.gpio5_6 E12 */
    +//
    +// /* RGMII1 GB Ethernet 1 */
    +// {VIN2A_D12, (M3 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d12.rgmii1_txc */
    +// {VIN2A_D13, (M3 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d13.rgmii1_txctl */
    +// {VIN2A_D17, (M3 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d17.rgmii1_txd0 */
    +// {VIN2A_D16, (M3 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d16.rgmii1_txd1 */
    +// {VIN2A_D15, (M3 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d15.rgmii1_txd2 */
    +// {VIN2A_D14, (M3 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d14.rgmii1_txd3 */
    +// {VIN2A_D18, (M3 | PIN_INPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d18.rgmii1_rxc */
    +// {VIN2A_D19, (M3 | PIN_INPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d19.rgmii1_rxctl */
    +// {VIN2A_D23, (M3 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* vin2a_d23.rgmii1_rxd0 */
    +// {VIN2A_D22, (M3 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* vin2a_d22.rgmii1_rxd1 */
    +// {VIN2A_D21, (M3 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* vin2a_d21.rgmii1_rxd2 */
    +// {VIN2A_D20, (M3 | PIN_INPUT_PULLUP | MANUAL_MODE)}, /* vin2a_d20.rgmii1_rxd3 */
    +// /* GB_ETH1_INTn */
    +// {MCASP1_FSR, (M14 | PIN_INPUT)}, /* mcasp1_fsr.gpio5_1 */
    +// /* GPIO_PRU1_ETH1_RESETn */
    +// {MCASP1_AXR5, (M14 | PIN_OUTPUT)}, /* mcasp1_axr5.gpio5_7 F13 */
    +
    +
    + /* PRU2_MII0 Ethernet 1 */
    +// {MCASP1_AXR1, (M11 | PIN_INPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr1.pr2_mii_mt0_clk */
    +// {MCASP1_AXR8, (M11 | PIN_OUTPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr8.pr2_mii0_txen */
    +// {MCASP1_AXR12, (M11 | PIN_OUTPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr12.pr2_mii0_txd0 */
    +// {MCASP1_AXR11, (M11 | PIN_OUTPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr11.pr2_mii0_txd1 */
    +// {MCASP1_AXR10, (M11 | PIN_OUTPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr10.pr2_mii0_txd2 */
    +// {MCASP1_AXR9, (M11 | PIN_OUTPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr9.pr2_mii0_txd3 */
    +// {MCASP1_AXR13, (M11 | PIN_INPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr13.pr2_mii_mr0_clk */
    +// {MCASP1_AXR14, (M11 | PIN_INPUT_SLEW)}, /* mcasp1_axr14.pr2_mii0_rxdv */
    +// {MCASP1_AXR0, (M11 | PIN_INPUT_PULLUP | SLEWCONTROL)}, /* mcasp1_axr0.pr2_mii0_rxer */
    +// {MCASP2_AXR2, (M11 | PIN_INPUT_SLEW)}, /* mcasp2_axr2.pr2_mii0_rxd0 */
    +// {MCASP2_FSX, (M11 | PIN_INPUT_SLEW)}, /* mcasp2_fsx.pr2_mii0_rxd1 */
    +// {MCASP2_ACLKX, (M11 | PIN_INPUT_PULLDOWN)}, /* mcasp2_aclkx.pr2_mii0_rxd2 */
    +// {MCASP1_AXR15, (M11 | PIN_INPUT_SLEW)}, /* mcasp1_axr15.pr2_mii0_rxd3 */
    +// {MCASP3_ACLKX, (M11 | PIN_INPUT_PULLDOWN)}, /* mcasp3_aclkx.pr2_mii0_crs */
    +// {MCASP3_FSX, (M11 | PIN_INPUT_SLEW)}, /* mcasp3_fsx.pr2_mii0_col */
    +// {MCASP2_AXR3, (M11 | PIN_INPUT_SLEW)}, /* mcasp2_axr3.pr2_mii0_rxlink */
    +// {MCASP1_ACLKX, (M11 | PIN_OUTPUT_PULLDOWN)}, /* mcasp1_aclkx.pr2_mdio_mdclk */
    +// {MCASP1_FSX, (M11 | PIN_INPUT | SLEWCONTROL)}, /* mcasp1_fsx.pr2_mdio_data */
    +// /* GPIO_PRU2_ETH0_RESETn */
    +// {MCASP1_AXR6, (M14 | PIN_OUTPUT)}, /* mcasp1_axr6.gpio5_8 C12 */
    +// /* PRU2ETH0_INTn */
    +// {VIN2A_FLD0, (M14 | PIN_INPUT_PULLUP)}, /* vin2a_fld0.gpio3_30 */
    +//
    +//
    +// /* PRU2_MII1 Ethernet 2 */
    +// {GPIO6_10, (M11 | PIN_INPUT_PULLUP)}, /* gpio6_10.pr2_mii_mt1_clk */
    +// {GPIO6_11, (M11 | PIN_OUTPUT_PULLUP)}, /* gpio6_11.pr2_mii1_txen */
    +// {MMC3_DAT0, (M11 | PIN_OUTPUT_PULLUP)}, /* mmc3_dat0.pr2_mii1_txd1 */
    +// {MMC3_DAT1, (M11 | PIN_OUTPUT_PULLUP)}, /* mmc3_dat1.pr2_mii1_txd0 */
    +// {MMC3_CMD, (M11 | PIN_OUTPUT_PULLUP)}, /* mmc3_cmd.pr2_mii1_txd2 */
    +// {MMC3_CLK, (M11 | PIN_OUTPUT_PULLUP)}, /* mmc3_clk.pr2_mii1_txd3 */
    +// {MMC3_DAT2, (M11 | PIN_INPUT_PULLUP)}, /* mmc3_dat2.pr2_mii_mr1_clk */
    +// {MMC3_DAT3, (M11 | PIN_INPUT_PULLDOWN)}, /* mmc3_dat3.pr2_mii1_rxdv */
    +// {MCASP3_AXR0, (M11 | PIN_INPUT_PULLUP | SLEWCONTROL)}, /* mcasp3_axr0.pr2_mii1_rxer */
    +// {MMC3_DAT7, (M11 | PIN_INPUT_PULLDOWN)}, /* mmc3_dat7.pr2_mii1_rxd0 */
    +// {MMC3_DAT6, (M11 | PIN_INPUT_PULLDOWN)}, /* mmc3_dat6.pr2_mii1_rxd1 */
    +// {MMC3_DAT5, (M11 | PIN_INPUT_PULLDOWN)}, /* mmc3_dat5.pr2_mii1_rxd2 */
    +// {MMC3_DAT4, (M11 | PIN_INPUT_PULLDOWN)}, /* mmc3_dat4.pr2_mii1_rxd3 */
    +// {XREF_CLK1, (M11 | PIN_INPUT_PULLDOWN)}, /* xref_clk1.pr2_mii1_crs */
    +// {XREF_CLK0, (M11 | PIN_INPUT_PULLDOWN)}, /* xref_clk0.pr2_mii1_col */
    +// {MCASP3_AXR1, (M11 | PIN_INPUT_PULLUP | SLEWCONTROL)}, /* mcasp3_axr1.pr2_mii1_rxlink */
    +// /* GPIO_PRU2_ETH1_RESETn */
    +// {MCASP1_AXR7, (M14 | PIN_OUTPUT)}, /* mcasp1_axr7.gpio5_9 D12 */
    +// /* PRU2ETH1_INTn */
    +// {VIN2A_HSYNC0, (M14 | PIN_INPUT_PULLUP)}, /* vin2a_hsync0.gpio3_31 */
    +//
    +//
    +// /* PRU1ETH0_INTn */
    +// {VIN2A_CLK0, (M14 | PIN_INPUT_PULLUP)}, /* vin2a_clk0.gpio3_28 */
    +// /* PRU1_MII1 */
    +// {VIN2A_D10, (M11 | PIN_OUTPUT_PULLDOWN)}, /* vin2a_d10.pr1_mdio_mdclk */
    +// {VIN2A_D11, (M11 | PIN_INPUT)}, /* vin2a_d11.pr1_mdio_data */
    +// /* PRU1ETH1_INTn */
    +// {VIN2A_DE0, (M14 | PIN_INPUT_PULLUP)}, /* vin2a_de0.gpio3_29 */
    +
    +
    + /* SD/MMC1 */
    {MMC1_CLK, (M0 | PIN_INPUT_PULLUP)}, /* mmc1_clk.mmc1_clk */
    {MMC1_CMD, (M0 | PIN_INPUT_PULLUP)}, /* mmc1_cmd.mmc1_cmd */
    {MMC1_DAT0, (M0 | PIN_INPUT_PULLUP)}, /* mmc1_dat0.mmc1_dat0 */
    @@ -660,58 +652,172 @@
    {MMC1_DAT3, (M0 | PIN_INPUT_PULLUP)}, /* mmc1_dat3.mmc1_dat3 */
    {MMC1_SDCD, (M14 | PIN_INPUT | SLEWCONTROL)}, /* mmc1_sdcd.gpio6_27 */
    {MMC1_SDWP, (M14 | PIN_INPUT | SLEWCONTROL)}, /* mmc1_sdwp.gpio6_28 */
    - {GPIO6_10, (M11 | PIN_INPUT_PULLUP)}, /* gpio6_10.pr2_mii_mt1_clk */
    - {GPIO6_11, (M11 | PIN_OUTPUT_PULLUP)}, /* gpio6_11.pr2_mii1_txen */
    - {MMC3_CLK, (M11 | PIN_OUTPUT_PULLUP)}, /* mmc3_clk.pr2_mii1_txd3 */
    - {MMC3_CMD, (M11 | PIN_OUTPUT_PULLUP)}, /* mmc3_cmd.pr2_mii1_txd2 */
    - {MMC3_DAT0, (M11 | PIN_OUTPUT_PULLUP)}, /* mmc3_dat0.pr2_mii1_txd1 */
    - {MMC3_DAT1, (M11 | PIN_OUTPUT_PULLUP)}, /* mmc3_dat1.pr2_mii1_txd0 */
    - {MMC3_DAT2, (M11 | PIN_INPUT_PULLUP)}, /* mmc3_dat2.pr2_mii_mr1_clk */
    - {MMC3_DAT3, (M11 | PIN_INPUT_PULLDOWN)}, /* mmc3_dat3.pr2_mii1_rxdv */
    - {MMC3_DAT4, (M11 | PIN_INPUT_PULLDOWN)}, /* mmc3_dat4.pr2_mii1_rxd3 */
    - {MMC3_DAT5, (M11 | PIN_INPUT_PULLDOWN)}, /* mmc3_dat5.pr2_mii1_rxd2 */
    - {MMC3_DAT6, (M11 | PIN_INPUT_PULLDOWN)}, /* mmc3_dat6.pr2_mii1_rxd1 */
    - {MMC3_DAT7, (M11 | PIN_INPUT_PULLDOWN)}, /* mmc3_dat7.pr2_mii1_rxd0 */
    - {SPI1_SCLK, (M14 | PIN_OUTPUT)}, /* spi1_sclk.gpio7_7 */
    - {SPI1_D1, (M14 | PIN_OUTPUT)}, /* spi1_d1.gpio7_8 */
    - {SPI1_D0, (M14 | PIN_OUTPUT)}, /* spi1_d0.gpio7_9 */
    - {SPI1_CS0, (M14 | PIN_OUTPUT)}, /* spi1_cs0.gpio7_10 */
    - {SPI1_CS1, (M14 | PIN_OUTPUT)}, /* spi1_cs1.gpio7_11 */
    +
    + /* PCIe */
    + /* GPIO_PCIE_SWRSTn */
    + {VIN2A_D0, (M14 | PIN_OUTPUT_PULLUP)}, /* vin1a_d19.gpio3_23 -> vin2a_d0.gpio4_1 */
    + /* GPIO_PCIE_RSTDRVn */
    + {VIN2A_D1, (M14 | PIN_OUTPUT_PULLDOWN)}, /* vin1a_d18.gpio3_22 -> vin2a_d1.gpio4_2 */
    + /* PCIE_CRDPRESENT */
    + {VOUT1_FLD, (M14 | PIN_INPUT)}, /* mcasp1_axr2.gpio5_4 G13 -> vout1_fld.gpio4_21 B11 */
    + /* PCIE_WAKEn */
    + {VIN2A_FLD0, (M14 | PIN_INPUT)}, /* mcasp1_axr3.gpio5_5 J11 -> vin2a_fld0.gpio3_30 H7 */
    +
    +
    + /* LCD LVDS */
    +// {VOUT1_CLK, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_clk.vout1_clk */
    +// {VOUT1_VSYNC, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_vsync.vout1_vsync */
    +// {VOUT1_HSYNC, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_hsync.vout1_hsync */
    +// {VOUT1_DE, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_de.vout1_de */
    +// {VOUT1_D0, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d0.vout1_d0 */
    +// {VOUT1_D1, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d1.vout1_d1 */
    +// {VOUT1_D2, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d2.vout1_d2 */
    +// {VOUT1_D3, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d3.vout1_d3 */
    +// {VOUT1_D4, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d4.vout1_d4 */
    +// {VOUT1_D5, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d5.vout1_d5 */
    +// {VOUT1_D6, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d6.vout1_d6 */
    +// {VOUT1_D7, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d7.vout1_d7 */
    +// {VOUT1_D8, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d8.vout1_d8 */
    +// {VOUT1_D9, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d9.vout1_d9 */
    +// {VOUT1_D10, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d10.vout1_d10 */
    +// {VOUT1_D11, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d11.vout1_d11 */
    +// {VOUT1_D12, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d12.vout1_d12 */
    +// {VOUT1_D13, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d13.vout1_d13 */
    +// {VOUT1_D14, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d14.vout1_d14 */
    +// {VOUT1_D15, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d15.vout1_d15 */
    +// {VOUT1_D16, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d16.vout1_d16 */
    +// {VOUT1_D17, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d17.vout1_d17 */
    +// {VOUT1_D18, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d18.vout1_d18 */
    +// {VOUT1_D19, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d19.vout1_d19 */
    +// {VOUT1_D20, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d20.vout1_d20 */
    +// {VOUT1_D21, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d21.vout1_d21 */
    +// {VOUT1_D22, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d22.vout1_d22 */
    +// {VOUT1_D23, (M0 | PIN_OUTPUT | SLEWCONTROL | MANUAL_MODE)}, /* vout1_d23.vout1_d23 */
    +// /* LCD_BACKLIGHT D1 */
    +// {VIN2A_D2, (M10 | PIN_OUTPUT)}, /* vin2a_d2.eCAP1_in_PWM1_out */
    +
    + /* HDMI */
    + //{HDMI1_CLOCKX, (M0 | )}, /* hdmi1_clockx.hdmi1_clockx */
    + //{HDMI1_CLOCKY, (M0 | )}, /* hdmi1_clocky.hdmi1_clocky */
    + //{HDMI1_DATA0X, (M0 | )}, /* hdmi1_data0x.hdmi1_data0x */
    + //{HDMI1_DATA0Y, (M0 | )}, /* hdmi1_data0y.hdmi1_data0y */
    + //{HDMI1_DATA1X, (M0 | )}, /* hdmi1_data1x.hdmi1_data1x */
    + //{HDMI1_DATA1Y, (M0 | )}, /* hdmi1_data1y.hdmi1_data1y */
    + //{HDMI1_DATA2X, (M0 | )}, /* hdmi1_data2x.hdmi1_data2x */
    + //{HDMI1_DATA2Y, (M0 | )}, /* hdmi1_data2y.hdmi1_data2y */
    + {I2C2_SDA, (M1 | PIN_INPUT)}, /* i2c2_sda.hdmi1_ddc_scl */
    + {I2C2_SCL, (M1 | PIN_INPUT)}, /* i2c2_scl.hdmi1_ddc_sda */
    {SPI1_CS2, (M14 | PIN_INPUT_SLEW)}, /* spi1_cs2.gpio7_12 */
    {SPI1_CS3, (M6 | PIN_INPUT | SLEWCONTROL)}, /* spi1_cs3.hdmi1_cec */
    +
    + /* SPI2 */
    {SPI2_SCLK, (M0 | PIN_INPUT)}, /* spi2_sclk.spi2_sclk */
    - {SPI2_D1, (M0 | PIN_INPUT | SLEWCONTROL)}, /* spi2_d1.spi2_d1 */
    {SPI2_D0, (M0 | PIN_INPUT | SLEWCONTROL)}, /* spi2_d0.spi2_d0 */
    + {SPI2_D1, (M0 | PIN_INPUT | SLEWCONTROL)}, /* spi2_d1.spi2_d1 */
    {SPI2_CS0, (M0 | PIN_INPUT | SLEWCONTROL)}, /* spi2_cs0.spi2_cs0 */
    +
    + /* SPI3 */
    + {VOUT1_VSYNC, (M3 | PIN_INPUT )}, /* mcasp4_aclkx.spi3_sclk -> vout1_vsync.spi3_sclk */
    + {VOUT1_HSYNC, (M14 | PIN_OUTPUT )}, /* vin1a_d15.gpio3_19 -> vout1_hsync.gpio4_22 */
    + {VOUT1_DE , (M8 | PIN_INPUT )}, /* mcasp4_fsx.spi3_d1 -> vout1_de.spi3_d1 */
    + {VOUT1_CLK , (M8 | PIN_INPUT_PULLUP)}, /* mcasp4_axr1.spi3_cs0 ->vout1_clk.spi3_cs0 */
    +
    +
    + /* DCAN 1 */
    {DCAN1_TX, (M15 | PULL_UP)}, /* dcan1_tx.safe for dcan1_tx */
    {DCAN1_RX, (M15 | PULL_UP)}, /* dcan1_rx.safe for dcan1_rx */
    - {UART1_RXD, (M14 | PIN_OUTPUT | SLEWCONTROL)}, /* uart1_rxd.gpio7_22 */
    - {UART1_TXD, (M14 | PIN_OUTPUT | SLEWCONTROL)}, /* uart1_txd.gpio7_23 */
    - {UART2_RXD, (M4 | PIN_INPUT)}, /* uart2_rxd.uart2_rxd */
    - {UART2_TXD, (M0 | PIN_OUTPUT)}, /* uart2_txd.uart2_txd */
    - {UART2_CTSN, (M2 | PIN_INPUT)}, /* uart2_ctsn.uart3_rxd */
    - {UART2_RTSN, (M1 | PIN_OUTPUT)}, /* uart2_rtsn.uart3_txd */
    - {I2C1_SDA, (M0 | PIN_INPUT)}, /* i2c1_sda.i2c1_sda */
    +
    +
    + /* PR1_UART0 ProfiBus 1 */
    +// {VIN2A_D1, (M11 | PIN_OUTPUT)}, /* vin2a_d1.pr1_uart0_txd */
    +// {VIN2A_D0, (M11 | PIN_INPUT)}, /* vin2a_d0.pr1_uart0_rxd */
    +// {VIN2A_D5, (M13 | PIN_OUTPUT_PULLDOWN | MANUAL_MODE)}, /* vin2a_d5.pr1_pru1_gpo2 */
    +// // RMII50MHZCLK/PR2_GPIO U3 AM57XX_PR2_PROFI_TXEN
    +//
    +// /* PR1_EDC_LATCH0 */
    +// {VIN2A_D3, (M11 | PIN_INPUT_PULLDOWN)}, /* vin2a_d3.pr1_edc_latch0_in */
    +// /* PR1_EDC_SYNC0 */
    +// {VIN2A_D4, (M11 | PIN_OUTPUT)}, /* vin2a_d4.pr1_edc_sync0_out */
    +
    + /* UART2 */
    + /* RS-485 */
    +// {UART2_TXD, (M0 | PIN_OUTPUT)}, /* uart2_txd.uart2_txd */
    +// {UART2_RXD, (M4 | PIN_INPUT)}, /* uart2_rxd.uart2_rxd */
    +// {MCASP5_ACLKX, (M13 | PIN_OUTPUT | MANUAL_MODE)}, /* mcasp5_aclkx.pr2_pru1_gpo1 */
    +// {MCASP5_FSX, (M12 | PIN_INPUT | MANUAL_MODE)}, /* mcasp5_fsx.pr2_pru1_gpi2 */
    + /* UART3 */
    + {MCASP5_AXR1, (M4 | PIN_OUTPUT)}, /* uart2_rtsn.uart3_txd -> mcasp5_axr1.uart3_txd */
    + {MCASP5_AXR0, (M4 | PIN_INPUT )}, /* uart2_ctsn.uart3_rxd -> mcasp5_axr0.uart3_rxd */
    +
    + /* I2C1 */
    {I2C1_SCL, (M0 | PIN_INPUT)}, /* i2c1_scl.i2c1_scl */
    - {I2C2_SDA, (M1 | PIN_INPUT)}, /* i2c2_sda.hdmi1_ddc_scl */
    - {I2C2_SCL, (M1 | PIN_INPUT)}, /* i2c2_scl.hdmi1_ddc_sda */
    - {WAKEUP0, (M0 | PIN_INPUT)}, /* Wakeup0.Wakeup0 */
    - {WAKEUP1, (M0 | PIN_INPUT)}, /* Wakeup1.Wakeup1 */
    - {WAKEUP2, (M0 | PIN_INPUT)}, /* Wakeup2.Wakeup2 */
    - {WAKEUP3, (M0 | PIN_INPUT)}, /* Wakeup3.Wakeup3 */
    - {ON_OFF, (M0 | PIN_OUTPUT)}, /* on_off.on_off */
    - {RTC_PORZ, (M0 | PIN_INPUT)}, /* rtc_porz.rtc_porz */
    + {I2C1_SDA, (M0 | PIN_INPUT)}, /* i2c1_sda.i2c1_sda */
    +
    + /* JTAG */
    + {RTCK, (M0 | PIN_OUTPUT_PULLUP)}, /* rtck.rtck */
    {TMS, (M0 | PIN_INPUT_PULLUP)}, /* tms.tms */
    {TDI, (M0 | PIN_INPUT_PULLUP | SLEWCONTROL)}, /* tdi.tdi */
    {TDO, (M0 | PIN_OUTPUT_PULLUP)}, /* tdo.tdo */
    - {TCLK, (M0 | PIN_INPUT_PULLUP)}, /* tclk.tclk */
    {TRSTN, (M0 | PIN_INPUT_PULLDOWN)}, /* trstn.trstn */
    - {RTCK, (M0 | PIN_OUTPUT_PULLUP)}, /* rtck.rtck */
    {EMU0, (M0 | PIN_INPUT_PULLUP)}, /* emu0.emu0 */
    {EMU1, (M0 | PIN_INPUT_PULLUP)}, /* emu1.emu1 */
    - {RESETN, (M0 | PIN_INPUT)}, /* resetn.resetn */
    - {NMIN_DSP, (M0 | PIN_INPUT)}, /* nmin_dsp.nmin_dsp */
    - {RSTOUTN, (M0 | PIN_OUTPUT)}, /* rstoutn.rstoutn */
    + {TCLK, (M0 | PIN_INPUT_PULLUP)}, /* tclk.tclk */
    +
    + /* GPIO_VPP_PWR_EN */
    + {VIN1B_CLK1, (M14 | PIN_OUTPUT)}, /* vin1a_d17.gpio3_21 -> vin1b_clk1.gpio2_31 */
    +
    +
    + /* STATUS LED */
    + {VOUT1_D4, (M14 | PIN_INPUT )}, /* vin2a_vsync0.gpio4_0 AM57XX_STATUSLED0_RED -> vout1_d4.gpio8_4 */
    + {VOUT1_D7, (M14 | PIN_OUTPUT)}, /* vin1a_d8.gpio3_12 AM57XX_STATUSLED0_YEL -> vout1_d7.gpio8_7 */
    + {VOUT1_D5, (M14 | PIN_OUTPUT)}, /* vin1a_d7.gpio3_11 AM57XX_STATUSLED0_GRN -> vout1_d5.gpio8_5 */
    + {VOUT1_D6, (M14 | PIN_OUTPUT)}, /* vin1a_d6.gpio3_10 AM57XX_STATUSLED1_RED -> vout1_d6.gpio8_6 */
    + {UART1_RXD, (M14 | PIN_OUTPUT | SLEWCONTROL)}, /* uart1_rxd.gpio7_22 AM57XX_STATUSLED1_YEL */
    + {UART1_TXD, (M14 | PIN_OUTPUT | SLEWCONTROL)}, /* uart1_txd.gpio7_23 AM57XX_STATUSLED1_GRN */
    +
    + /* HAPTICS_TRIG */
    + {SPI1_SCLK, (M14 | PIN_OUTPUT)}, /* spi1_sclk.gpio7_7 AM572X_HAPTICS_TRIG A25 */
    +
    + /* INDETHER_LED */
    + {GPMC_CLK , (M14 | PIN_INPUT )}, /* mcasp2_axr4.gpio1_4 AM57XX_INDETHER_LED0_YEL D15 -> gpmc_clk.gpio2_22 */
    + {GPMC_ADVN_ALE, (M14 | PIN_OUTPUT)}, /* vin1a_d5.gpio3_9 AM57XX_INDETHER_LED0_GRN -> gpmc_advn_ale.gpio2_23 */
    + {GPMC_OEN_REN , (M14 | PIN_OUTPUT)}, /* xref_clk2.gpio6_19 AM57XX_INDETHER_LED0_RED -> gpmc_oen_ren.gpio2_24 */
    + {GPMC_WEN , (M14 | PIN_OUTPUT)}, /* vin1a_d13.gpio3_17 AM57XX_INDETHER_LED3_GRN -> gpmc_wen.gpio2_25 */
    + {GPMC_BEN0 , (M14 | PIN_OUTPUT)}, /* vin1a_d14.gpio3_18 AM57XX_INDETHER_LED3_YEL -> gpmc_ben0.gpio2_26 */
    + {GPMC_BEN1 , (M14 | PIN_OUTPUT)}, /* spi1_cs1.gpio7_11 AM57XX_INDETHER_LED3_RED A22 -> gpmc_ben1.gpio2_27 */
    + {GPMC_WAIT0 , (M14 | PIN_OUTPUT)}, /* spi1_d1.gpio7_8 AM57XX_INDETHER_LED2_GRN F16 -> gpmc_wait0.gpio2_28 */
    +// {SPI1_D0, (M14 | PIN_OUTPUT)}, /* spi1_d0.gpio7_9 AM57XX_INDETHER_LED2_RED B25 */
    +// {SPI1_CS0, (M14 | PIN_OUTPUT)}, /* spi1_cs0.gpio7_10 AM57XX_INDETHER_LED2_YEL A24 */
    +// {MCASP2_AXR5, (M14 | PIN_OUTPUT)}, /* mcasp2_axr5.gpio6_7 AM57XX_INDETHER_LED1_RED B16 */
    +// {MCASP2_AXR6, (M14 | PIN_OUTPUT)}, /* mcasp2_axr6.gpio2_29 AM57XX_INDETHER_LED1_GRN B17 */
    +// {MCASP2_AXR7, (M14 | PIN_INPUT)}, /* mcasp2_axr7.gpio1_5 AM57XX_INDETHER_LED1_YEL A17 */
    +
    + /* TOUCH_INT */
    +// {VIN1A_D10, (M14 | PIN_INPUT_PULLDOWN)}, /* vin1a_d10.gpio3_14 */
    + /* GPIO_TOUCH_RESETn F20 */
    +// {GPIO6_15, (M0 | PIN_OUTPUT)}, /* gpio6_15.gpio6_15 */
    +
    +
    + /* GPIO_USB2_VBUS_DET */
    + {UART3_RXD, (M14 | PIN_INPUT)}, /* vin1a_d22.gpio3_26 -> uart3_rxd.gpio5_18 */
    +
    +
    + /* PMIC_INT */
    + {UART3_TXD, (M14 | PIN_INPUT_PULLUP)}, /* gpio6_16.gpio6_16 F21 -> uart3_txd.gpio5_19 */
    +
    +
    + /* RTC Osc */
    + {RTC_PORZ, (M0 | PIN_INPUT )}, /* rtc_porz.rtc_porz */
    + {ON_OFF , (M0 | PIN_OUTPUT)}, /* on_off.on_off */
    + {WAKEUP0 , (M0 | PIN_INPUT )}, /* Wakeup0.Wakeup0 */
    + {WAKEUP1 , (M0 | PIN_INPUT )}, /* Wakeup1.Wakeup1 */
    + {WAKEUP2 , (M0 | PIN_INPUT )}, /* Wakeup2.Wakeup2 */
    + {WAKEUP3 , (M0 | PIN_INPUT )}, /* Wakeup3.Wakeup3 */
    +
    + /* MAIN OSC/Ctrl */
    + {RESETN , (M0 | PIN_INPUT )}, /* resetn.resetn */
    + {RSTOUTN , (M0 | PIN_OUTPUT)}, /* rstoutn.rstoutn */
    + {NMIN_DSP, (M0 | PIN_INPUT )}, /* nmin_dsp.nmin_dsp */
    };

    const struct pad_conf_entry core_padconf_array_essential_am572x_idk[] = {
    @@ -1191,8 +1297,8 @@
    };

    const struct pad_conf_entry early_padconf[] = {
    - {UART2_CTSN, (M2 | PIN_INPUT_SLEW)}, /* uart2_ctsn.uart3_rxd */
    - {UART2_RTSN, (M1 | PIN_INPUT_SLEW)}, /* uart2_rtsn.uart3_txd */
    + {MCASP5_AXR1, (M4 | PIN_INPUT_SLEW)}, /* uart2_ctsn.uart3_rxd -> mcasp5_axr1.uart3_txd */
    + {MCASP5_AXR0, (M4 | PIN_INPUT_SLEW)}, /* uart2_rtsn.uart3_txd -> mcasp5_axr0.uart3_rxd */
    {I2C1_SDA, (PIN_INPUT_PULLUP | M0)}, /* I2C1_SDA */
    {I2C1_SCL, (PIN_INPUT_PULLUP | M0)}, /* I2C1_SCL */

    @@ -1213,7 +1319,7 @@
    {GPMC_A26, (M1 | PIN_INPUT_PULLUP)}, /* H4: gpmc_a26.mmc2_dat2 */
    {GPMC_A27, (M1 | PIN_INPUT_PULLUP)}, /* H5: gpmc_a27.mmc2_dat3 */
    {GPMC_CS1, (M1 | PIN_INPUT_PULLUP)}, /* H6: gpmc_cs1.mmc2_cmd */
    - {MCASP1_AXR5, (M14 | PIN_OUTPUT_PULLUP)}, /* F13: eMMC_RSTn (missing on schematic): mcasp1_axr5.gpio5_7 */
    + {MCASP1_AXR2, (M14 | PIN_OUTPUT_PULLUP)}, /* F13: eMMC_RSTn (missing on schematic): mcasp1_axr5.gpio5_7 -> G13: mcasp1_axr2.gpio5_4 */
    };
    #endif

    @@ -1480,82 +1586,84 @@
    };

    const struct iodelay_cfg_entry iodelay_cfg_array_am574x_idk[] = {
    - {0x0114, 2199, 621}, /* CFG_GPMC_A0_IN */
    - {0x0120, 0, 0}, /* CFG_GPMC_A10_IN */
    - {0x012C, 2133, 859}, /* CFG_GPMC_A11_IN */
    - {0x0138, 2258, 562}, /* CFG_GPMC_A12_IN */
    - {0x0144, 0, 0}, /* CFG_GPMC_A13_IN */
    +// {0x0114, 2199, 621}, /* CFG_GPMC_A0_IN */
    +// {0x0120, 0, 0}, /* CFG_GPMC_A10_IN */
    +// {0x012C, 2133, 859}, /* CFG_GPMC_A11_IN */
    +// {0x0138, 2258, 562}, /* CFG_GPMC_A12_IN */
    + {0x0144, 0, 0}, /* CFG_GPMC_A13_IN */
    {0x0150, 2149, 1052}, /* CFG_GPMC_A14_IN */
    {0x015C, 2121, 997}, /* CFG_GPMC_A15_IN */
    {0x0168, 2159, 1134}, /* CFG_GPMC_A16_IN */
    - {0x0170, 0, 0}, /* CFG_GPMC_A16_OUT */
    + {0x0170, 0, 0}, /* CFG_GPMC_A16_OUT */
    {0x0174, 2135, 1085}, /* CFG_GPMC_A17_IN */
    - {0x0188, 0, 0}, /* CFG_GPMC_A18_OUT */
    - {0x0198, 1989, 612}, /* CFG_GPMC_A1_IN */
    - {0x0204, 2218, 912}, /* CFG_GPMC_A2_IN */
    - {0x0210, 2168, 963}, /* CFG_GPMC_A3_IN */
    - {0x021C, 2196, 813}, /* CFG_GPMC_A4_IN */
    - {0x0228, 2082, 782}, /* CFG_GPMC_A5_IN */
    - {0x0234, 2098, 407}, /* CFG_GPMC_A6_IN */
    - {0x0240, 2343, 585}, /* CFG_GPMC_A7_IN */
    - {0x024C, 2030, 685}, /* CFG_GPMC_A8_IN */
    - {0x0258, 2116, 832}, /* CFG_GPMC_A9_IN */
    - {0x0374, 0, 0}, /* CFG_GPMC_CS2_OUT */
    + {0x0188, 0, 0}, /* CFG_GPMC_A18_OUT */
    +// {0x0198, 1989, 612}, /* CFG_GPMC_A1_IN */
    +// {0x0204, 2218, 912}, /* CFG_GPMC_A2_IN */
    +// {0x0210, 2168, 963}, /* CFG_GPMC_A3_IN */
    +// {0x021C, 2196, 813}, /* CFG_GPMC_A4_IN */
    +// {0x0228, 2082, 782}, /* CFG_GPMC_A5_IN */
    +// {0x0234, 2098, 407}, /* CFG_GPMC_A6_IN */
    +// {0x0240, 2343, 585}, /* CFG_GPMC_A7_IN */
    +// {0x024C, 2030, 685}, /* CFG_GPMC_A8_IN */
    +// {0x0258, 2116, 832}, /* CFG_GPMC_A9_IN */
    + {0x0374, 0, 0}, /* CFG_GPMC_CS2_OUT */
    {0x0590, 1000, 3900}, /* CFG_MCASP5_ACLKX_OUT */
    {0x05AC, 1000, 3800}, /* CFG_MCASP5_FSX_IN */
    - {0x06F0, 451, 0}, /* CFG_RGMII0_RXC_IN */
    - {0x06FC, 127, 1571}, /* CFG_RGMII0_RXCTL_IN */
    - {0x0708, 165, 1178}, /* CFG_RGMII0_RXD0_IN */
    - {0x0714, 136, 1302}, /* CFG_RGMII0_RXD1_IN */
    - {0x0720, 0, 1520}, /* CFG_RGMII0_RXD2_IN */
    - {0x072C, 28, 1690}, /* CFG_RGMII0_RXD3_IN */
    - {0x0740, 121, 0}, /* CFG_RGMII0_TXC_OUT */
    - {0x074C, 60, 0}, /* CFG_RGMII0_TXCTL_OUT */
    - {0x0758, 153, 0}, /* CFG_RGMII0_TXD0_OUT */
    - {0x0764, 35, 0}, /* CFG_RGMII0_TXD1_OUT */
    - {0x0770, 0, 0}, /* CFG_RGMII0_TXD2_OUT */
    - {0x077C, 172, 0}, /* CFG_RGMII0_TXD3_OUT */
    - {0x0A70, 147, 0}, /* CFG_VIN2A_D12_OUT */
    - {0x0A7C, 110, 0}, /* CFG_VIN2A_D13_OUT */
    - {0x0A88, 18, 0}, /* CFG_VIN2A_D14_OUT */
    - {0x0A94, 82, 0}, /* CFG_VIN2A_D15_OUT */
    - {0x0AA0, 33, 0}, /* CFG_VIN2A_D16_OUT */
    - {0x0AAC, 0, 0}, /* CFG_VIN2A_D17_OUT */
    - {0x0AB0, 417, 0}, /* CFG_VIN2A_D18_IN */
    - {0x0ABC, 156, 843}, /* CFG_VIN2A_D19_IN */
    - {0x0AD4, 223, 1413}, /* CFG_VIN2A_D20_IN */
    - {0x0AE0, 169, 1415}, /* CFG_VIN2A_D21_IN */
    - {0x0AEC, 43, 1150}, /* CFG_VIN2A_D22_IN */
    - {0x0AF8, 0, 1210}, /* CFG_VIN2A_D23_IN */
    - {0x0B30, 0, 200}, /* CFG_VIN2A_D5_OUT */
    - {0x0B9C, 1281, 497}, /* CFG_VOUT1_CLK_OUT */
    - {0x0BA8, 379, 0}, /* CFG_VOUT1_D0_OUT */
    - {0x0BB4, 441, 0}, /* CFG_VOUT1_D10_OUT */
    - {0x0BC0, 461, 0}, /* CFG_VOUT1_D11_OUT */
    - {0x0BCC, 1189, 0}, /* CFG_VOUT1_D12_OUT */
    - {0x0BD8, 312, 0}, /* CFG_VOUT1_D13_OUT */
    - {0x0BE4, 298, 0}, /* CFG_VOUT1_D14_OUT */
    - {0x0BF0, 284, 0}, /* CFG_VOUT1_D15_OUT */
    - {0x0BFC, 152, 0}, /* CFG_VOUT1_D16_OUT */
    - {0x0C08, 216, 0}, /* CFG_VOUT1_D17_OUT */
    - {0x0C14, 408, 0}, /* CFG_VOUT1_D18_OUT */
    - {0x0C20, 519, 0}, /* CFG_VOUT1_D19_OUT */
    - {0x0C2C, 475, 0}, /* CFG_VOUT1_D1_OUT */
    - {0x0C38, 316, 0}, /* CFG_VOUT1_D20_OUT */
    - {0x0C44, 59, 0}, /* CFG_VOUT1_D21_OUT */
    - {0x0C50, 221, 0}, /* CFG_VOUT1_D22_OUT */
    - {0x0C5C, 96, 0}, /* CFG_VOUT1_D23_OUT */
    - {0x0C68, 264, 0}, /* CFG_VOUT1_D2_OUT */
    - {0x0C74, 421, 0}, /* CFG_VOUT1_D3_OUT */
    - {0x0C80, 1257, 0}, /* CFG_VOUT1_D4_OUT */
    - {0x0C8C, 432, 0}, /* CFG_VOUT1_D5_OUT */
    - {0x0C98, 436, 0}, /* CFG_VOUT1_D6_OUT */
    - {0x0CA4, 440, 0}, /* CFG_VOUT1_D7_OUT */
    - {0x0CB0, 81, 100}, /* CFG_VOUT1_D8_OUT */
    - {0x0CBC, 471, 0}, /* CFG_VOUT1_D9_OUT */
    - {0x0CC8, 0, 0}, /* CFG_VOUT1_DE_OUT */
    - {0x0CE0, 0, 0}, /* CFG_VOUT1_HSYNC_OUT */
    - {0x0CEC, 815, 0}, /* CFG_VOUT1_VSYNC_OUT */
    +// {0x0740, 121, 0}, /* CFG_RGMII0_TXC_OUT */
    +// {0x074C, 60, 0}, /* CFG_RGMII0_TXCTL_OUT */
    +// {0x0758, 153, 0}, /* CFG_RGMII0_TXD0_OUT */
    +// {0x0764, 35, 0}, /* CFG_RGMII0_TXD1_OUT */
    +// {0x0770, 0, 0}, /* CFG_RGMII0_TXD2_OUT */
    +// {0x077C, 172, 0}, /* CFG_RGMII0_TXD3_OUT */
    +// {0x06F0, 451, 0}, /* CFG_RGMII0_RXC_IN */
    +// {0x06FC, 127, 1571}, /* CFG_RGMII0_RXCTL_IN */
    +// {0x0708, 165, 1178}, /* CFG_RGMII0_RXD0_IN */
    +// {0x0714, 136, 1302}, /* CFG_RGMII0_RXD1_IN */
    +// {0x0720, 0, 1520}, /* CFG_RGMII0_RXD2_IN */
    +// {0x072C, 28, 1690}, /* CFG_RGMII0_RXD3_IN */
    +// {0x0A70, 147, 0}, /* CFG_VIN2A_D12_OUT */
    +// {0x0A7C, 110, 0}, /* CFG_VIN2A_D13_OUT */
    +// {0x0AAC, 0, 0}, /* CFG_VIN2A_D17_OUT */
    +// {0x0AA0, 33, 0}, /* CFG_VIN2A_D16_OUT */
    +// {0x0A94, 82, 0}, /* CFG_VIN2A_D15_OUT */
    +// {0x0A88, 18, 0}, /* CFG_VIN2A_D14_OUT */
    +// {0x0AB0, 417, 0}, /* CFG_VIN2A_D18_IN */
    +// {0x0ABC, 156, 843}, /* CFG_VIN2A_D19_IN */
    +// {0x0AF8, 0, 1210}, /* CFG_VIN2A_D23_IN */
    +// {0x0AEC, 43, 1150}, /* CFG_VIN2A_D22_IN */
    +// {0x0AE0, 169, 1415}, /* CFG_VIN2A_D21_IN */
    +// {0x0AD4, 223, 1413}, /* CFG_VIN2A_D20_IN */
    +
    +// {0x0B30, 0, 200}, /* CFG_VIN2A_D5_OUT */
    +
    +// {0x0B9C, 1281, 497}, /* CFG_VOUT1_CLK_OUT */
    +// {0x0CE0, 0, 0}, /* CFG_VOUT1_HSYNC_OUT */
    +// {0x0CEC, 815, 0}, /* CFG_VOUT1_VSYNC_OUT */
    +// {0x0CC8, 0, 0}, /* CFG_VOUT1_DE_OUT */
    +// {0x0BA8, 379, 0}, /* CFG_VOUT1_D0_OUT */
    +// {0x0BB4, 441, 0}, /* CFG_VOUT1_D10_OUT */
    +// {0x0BC0, 461, 0}, /* CFG_VOUT1_D11_OUT */
    +// {0x0BCC, 1189, 0}, /* CFG_VOUT1_D12_OUT */
    +// {0x0BD8, 312, 0}, /* CFG_VOUT1_D13_OUT */
    +// {0x0BE4, 298, 0}, /* CFG_VOUT1_D14_OUT */
    +// {0x0BF0, 284, 0}, /* CFG_VOUT1_D15_OUT */
    +// {0x0BFC, 152, 0}, /* CFG_VOUT1_D16_OUT */
    +// {0x0C08, 216, 0}, /* CFG_VOUT1_D17_OUT */
    +// {0x0C14, 408, 0}, /* CFG_VOUT1_D18_OUT */
    +// {0x0C20, 519, 0}, /* CFG_VOUT1_D19_OUT */
    +// {0x0C2C, 475, 0}, /* CFG_VOUT1_D1_OUT */
    +// {0x0C38, 316, 0}, /* CFG_VOUT1_D20_OUT */
    +// {0x0C44, 59, 0}, /* CFG_VOUT1_D21_OUT */
    +// {0x0C50, 221, 0}, /* CFG_VOUT1_D22_OUT */
    +// {0x0C5C, 96, 0}, /* CFG_VOUT1_D23_OUT */
    +// {0x0C68, 264, 0}, /* CFG_VOUT1_D2_OUT */
    +// {0x0C74, 421, 0}, /* CFG_VOUT1_D3_OUT */
    +// {0x0C80, 1257, 0}, /* CFG_VOUT1_D4_OUT */
    +// {0x0C8C, 432, 0}, /* CFG_VOUT1_D5_OUT */
    +// {0x0C98, 436, 0}, /* CFG_VOUT1_D6_OUT */
    +// {0x0CA4, 440, 0}, /* CFG_VOUT1_D7_OUT */
    +// {0x0CB0, 81, 100}, /* CFG_VOUT1_D8_OUT */
    +// {0x0CBC, 471, 0}, /* CFG_VOUT1_D9_OUT */
    };

    const struct iodelay_cfg_entry iodelay_cfg_array_am572x_idk[] = {
    --- board/ti/common/board_detect.c Mon Apr 20 13:14:38 2020
    +++ board/ti/common/board_detect.c Sun Jul 4 22:27:54 2021
    @@ -174,6 +174,9 @@

    int __maybe_unused ti_i2c_eeprom_am_set(const char *name, const char *rev)
    {
    +#if 1 // wj@dev210506 - eeprom board info setting
    + return 0;
    +#else
    struct ti_common_eeprom *ep;

    if (!name || !rev)
    @@ -194,10 +197,36 @@

    already_set:
    return 0;
    +#endif
    }

    int __maybe_unused ti_i2c_eeprom_am_get(int bus_addr, int dev_addr)
    {
    +#if 1 // wj@dev210506 - eeprom board info setting
    + struct ti_common_eeprom *ep;
    +
    + ep = TI_EEPROM_DATA;
    +#ifndef CONFIG_SPL_BUILD
    + if (ep->header == TI_EEPROM_HEADER_MAGIC)
    + return 0; /* EEPROM has already been read */
    +#endif
    +
    + /* Initialize with a known bad marker for i2c fails.. */
    + ep->header = TI_DEAD_EEPROM_MAGIC;
    + ep->name[0] = 0x0;
    + ep->version[0] = 0x0;
    + ep->serial[0] = 0x0;
    + ep->config[0] = 0x0;
    +
    + ep->header = TI_EEPROM_HEADER_MAGIC;
    + strlcpy(ep->name, "AM574IDK", TI_EEPROM_HDR_NAME_LEN + 1);
    + ti_eeprom_string_cleanup(ep->name);
    + strlcpy(ep->version, "1.3D", TI_EEPROM_HDR_REV_LEN + 1);
    + ti_eeprom_string_cleanup(ep->version);
    + strlcpy(ep->serial, "23204P770087", TI_EEPROM_HDR_SERIAL_LEN + 1);
    + ti_eeprom_string_cleanup(ep->serial);
    + return 0;
    +#else
    int rc;
    struct ti_am_eeprom am_ep;
    struct ti_common_eeprom *ep;
    @@ -240,6 +269,7 @@
    TI_EEPROM_HDR_NO_OF_MAC_ADDR * TI_EEPROM_HDR_ETH_ALEN);

    return 0;
    +#endif
    }

    int __maybe_unused ti_emmc_boardid_get(void)
    @@ -557,11 +587,15 @@

    bool __maybe_unused board_ti_is(char *name_tag)
    {
    +#if 1 // wj@dev210506 - eeprom board info setting
    + return !strcmp("AM574IDK", name_tag);
    +#else
    struct ti_common_eeprom *ep = TI_EEPROM_DATA;

    if (ep->header == TI_DEAD_EEPROM_MAGIC)
    return false;
    return !strncmp(ep->name, name_tag, TI_EEPROM_HDR_NAME_LEN);
    +#endif
    }

    bool __maybe_unused board_ti_rev_is(char *rev_tag, int cmp_len)
    --- board/ti/common/Kconfig Mon Apr 20 13:14:38 2020
    +++ board/ti/common/Kconfig Sun Jul 4 22:27:54 2021
    @@ -12,7 +12,7 @@
    config EEPROM_CHIP_ADDRESS
    hex "Board EEPROM's I2C chip address"
    range 0 0xff
    - default 0x50
    + default 0x5011

    config TI_COMMON_CMD_OPTIONS
    bool "Enable cmd options on TI platforms"
    --- common/spl/spl_mmc.c Mon Apr 20 13:14:38 2020
    +++ common/spl/spl_mmc.c Sun Jul 4 22:27:54 2021
    @@ -350,6 +350,7 @@
    }

    boot_mode = spl_boot_mode(bootdev->boot_device);
    + printf("==>>> boot mode(%d) device(%d) [%s : %d : %s]\n", boot_mode, bootdev->boot_device, __func__, __LINE__, __FILE__);
    err = -EINVAL;
    switch (boot_mode) {
    case MMCSD_MODE_EMMCBOOT:
    --- configs/am57xx_evm_defconfig Mon Apr 20 13:14:38 2020
    +++ configs/am57xx_evm_defconfig Sun Jul 4 22:27:54 2021
    @@ -39,7 +39,7 @@
    # CONFIG_CMD_PMIC is not set
    CONFIG_OF_CONTROL=y
    CONFIG_SPL_OF_CONTROL=y
    -CONFIG_DEFAULT_DEVICE_TREE="am572x-idk"
    +CONFIG_DEFAULT_DEVICE_TREE="am574x-idk"
    CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc am5729-beagleboneai am572x-idk am571x-idk am574x-idk"
    CONFIG_ENV_IS_IN_MMC=y
    CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
    --- configs/am57xx_hs_evm_defconfig Mon Apr 20 13:14:38 2020
    +++ configs/am57xx_hs_evm_defconfig Sun Jul 4 22:27:54 2021
    @@ -42,7 +42,7 @@
    # CONFIG_CMD_PMIC is not set
    CONFIG_OF_CONTROL=y
    CONFIG_SPL_OF_CONTROL=y
    -CONFIG_DEFAULT_DEVICE_TREE="am572x-idk"
    +CONFIG_DEFAULT_DEVICE_TREE="am574x-idk"
    CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc am572x-idk am571x-idk am574x-idk"
    CONFIG_ENV_IS_IN_MMC=y
    CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
    --- configs/am57xx_hs_evm_usb_defconfig Mon Apr 20 13:14:38 2020
    +++ configs/am57xx_hs_evm_usb_defconfig Sun Jul 4 22:27:54 2021
    @@ -47,7 +47,7 @@
    # CONFIG_CMD_PMIC is not set
    CONFIG_OF_CONTROL=y
    CONFIG_SPL_OF_CONTROL=y
    -CONFIG_DEFAULT_DEVICE_TREE="am572x-idk"
    +CONFIG_DEFAULT_DEVICE_TREE="am574x-idk"
    CONFIG_OF_LIST="am57xx-beagle-x15 am57xx-beagle-x15-revb1 am57xx-beagle-x15-revc am572x-idk am571x-idk am574x-idk"
    CONFIG_ENV_IS_IN_MMC=y
    CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
    --- drivers/mmc/mmc.c Mon Apr 20 13:14:38 2020
    +++ drivers/mmc/mmc.c Sun Jul 4 22:27:54 2021
    @@ -131,7 +131,8 @@
    }
    #endif

    -#if CONFIG_IS_ENABLED(MMC_VERBOSE) || defined(DEBUG)
    +// wj@dev-210603
    +//#if CONFIG_IS_ENABLED(MMC_VERBOSE) || defined(DEBUG)
    const char *mmc_mode_name(enum bus_mode mode)
    {
    static const char *const names[] = {
    @@ -154,7 +155,7 @@
    else
    return names[mode];
    }
    -#endif
    +//#endif

    static uint mmc_mode2freq(struct mmc *mmc, enum bus_mode mode)
    {
    @@ -186,8 +187,15 @@
    mmc->selected_mode = mode;
    mmc->tran_speed = mmc_mode2freq(mmc, mode);
    mmc->ddr_mode = mmc_is_mode_ddr(mode);
    +#ifdef DEBUG
    pr_debug("selecting mode %s (freq : %d MHz)\n", mmc_mode_name(mode),
    mmc->tran_speed / 1000000);
    +#else
    + printf("==>>> selecting mode (%s : %d) (freq : %d MHz)(ddr : %d) [%s : %d : %s]\n",
    + mmc_mode_name(mode), mmc->selected_mode,
    + mmc->tran_speed / 1000000, mmc->ddr_mode,
    + __func__, __LINE__, __FILE__);
    +#endif
    return 0;
    }

    @@ -1281,8 +1289,11 @@
    }

    if (mmc->scr[0] & SD_DATA_4BIT)
    +#if 0 // wj@dev210610 width 4 -> 1
    + mmc->card_caps |= MMC_MODE_1BIT;
    +#else
    mmc->card_caps |= MMC_MODE_4BIT;
    -
    +#endif
    /* Version 1.0 doesn't support switching */
    if (mmc->version == SD_VERSION_1_0)
    return 0;
    @@ -1556,7 +1567,8 @@
    return mmc_set_ios(mmc);
    }

    -#if CONFIG_IS_ENABLED(MMC_VERBOSE) || defined(DEBUG)
    +// wj@dev-210603
    +//#if CONFIG_IS_ENABLED(MMC_VERBOSE) || defined(DEBUG)
    /*
    * helper function to display the capabilities in a human
    * friendly manner. The capabilities include bus width and
    @@ -1566,20 +1578,20 @@
    {
    enum bus_mode mode;

    - pr_debug("%s: widths [", text);
    + printf("%s: widths [", text);
    if (caps & MMC_MODE_8BIT)
    - pr_debug("8, ");
    + printf("8, ");
    if (caps & MMC_MODE_4BIT)
    - pr_debug("4, ");
    + printf("4, ");
    if (caps & MMC_MODE_1BIT)
    - pr_debug("1, ");
    + printf("1, ");
    pr_debug("\b\b] modes [");
    for (mode = MMC_LEGACY; mode < MMC_MODES_END; mode++)
    if (MMC_CAP(mode) & caps)
    - pr_debug("%s, ", mmc_mode_name(mode));
    - pr_debug("\b\b]\n");
    + printf("%s, ", mmc_mode_name(mode));
    + printf("\b\b]\n");
    }
    -#endif
    +//#endif

    struct mode_width_tuning {
    enum bus_mode mode;
    @@ -1679,7 +1691,10 @@
    #endif
    uint caps;

    -#ifdef DEBUG
    +#ifdef DEBUG // wj@dev210601
    + mmc_dump_capabilities("sd card", card_caps);
    + mmc_dump_capabilities("host", mmc->host_caps);
    +#else
    mmc_dump_capabilities("sd card", card_caps);
    mmc_dump_capabilities("host", mmc->host_caps);
    #endif
    @@ -1695,11 +1710,18 @@

    for (w = widths; w < widths + ARRAY_SIZE(widths); w++) {
    if (*w & caps & mwt->widths) {
    +#ifdef DEBUG
    pr_debug("trying mode %s width %d (at %d MHz)\n",
    mmc_mode_name(mwt->mode),
    bus_width(*w),
    mmc_mode2freq(mmc, mwt->mode) / 1000000);
    -
    +#else
    + printf("==>>> trying mode %s width %d (at %d MHz) [%s : %d : %s]\n",
    + mmc_mode_name(mwt->mode),
    + bus_width(*w),
    + mmc_mode2freq(mmc, mwt->mode) / 1000000,
    + __func__, __LINE__, __FILE__);
    +#endif
    /* configure the bus width (card + host) */
    err = sd_select_bus_width(mmc, bus_width(*w));
    if (err)
    @@ -1945,6 +1967,9 @@
    #ifdef DEBUG
    mmc_dump_capabilities("mmc", card_caps);
    mmc_dump_capabilities("host", mmc->host_caps);
    +#else
    + mmc_dump_capabilities("mmc", card_caps);
    + mmc_dump_capabilities("host", mmc->host_caps);
    #endif

    /* Restrict card's capabilities by what the host can do */
    @@ -1977,10 +2002,18 @@
    for_each_supported_width(card_caps & mwt->widths,
    mmc_is_mode_ddr(mwt->mode), ecbw) {
    enum mmc_voltage old_voltage;
    +#ifdef DEBUG
    pr_debug("trying mode %s width %d (at %d MHz)\n",
    mmc_mode_name(mwt->mode),
    bus_width(ecbw->cap),
    mmc_mode2freq(mmc, mwt->mode) / 1000000);
    +#else
    + printf("==>>> trying mode %s width %d (at %d MHz) [%s : %d : %s]\n",
    + mmc_mode_name(mwt->mode),
    + bus_width(ecbw->cap),
    + mmc_mode2freq(mmc, mwt->mode) / 1000000,
    + __func__, __LINE__, __FILE__);
    +#endif
    old_voltage = mmc->signal_voltage;
    err = mmc_set_lowest_voltage(mmc, mwt->mode,
    MMC_ALL_SIGNAL_VOLTAGE);
    --- drivers/mmc/omap_hsmmc.c Mon Apr 20 13:14:38 2020
    +++ drivers/mmc/omap_hsmmc.c Sun Jul 4 22:27:54 2021
    @@ -1541,8 +1541,11 @@
    if (priv == NULL)
    return -1;

    +#if 0 /* wj@dev210610 dataline error 4bit -> 1bit */
    + host_caps_val = MMC_MODE_1BIT | MMC_MODE_HS_52MHz | MMC_MODE_HS;
    +#else
    host_caps_val = MMC_MODE_4BIT | MMC_MODE_HS_52MHz | MMC_MODE_HS;
    -
    +#endif
    switch (dev_index) {
    case 0:
    priv->base_addr = (struct hsmmc *)OMAP_HSMMC1_BASE;
    --- env/fat.c Mon Apr 20 13:14:38 2020
    +++ env/fat.c Sun Jul 4 22:27:54 2021
    @@ -94,10 +94,12 @@
    part = blk_get_device_part_str(CONFIG_ENV_FAT_INTERFACE,
    CONFIG_ENV_FAT_DEVICE_AND_PART,
    &dev_desc, &info, 1);
    - if (part < 0)
    + printf("==>>> device part str %s %d... [%s : %d : %s]\n", CONFIG_ENV_FAT_INTERFACE, part, __func__, __LINE__, __FILE__);
    + if (part < 0) {
    goto err_env_relocate;
    -
    + }
    dev = dev_desc->devnum;
    + printf("==>>> Unable to use %s %d:%d... [%s : %d : %s]\n", CONFIG_ENV_FAT_INTERFACE, dev, part, __func__, __LINE__, __FILE__);
    if (fat_set_blk_dev(dev_desc, &info) != 0) {
    /*
    * This printf is embedded in the messages from env_save that
    @@ -109,6 +111,7 @@
    }

    err = file_fat_read(CONFIG_ENV_FAT_FILE, buf, CONFIG_ENV_SIZE);
    + printf("==>>> Unable to read \"%s\" from %s%d:%d... [%s : %d : %s]\n", CONFIG_ENV_FAT_FILE, CONFIG_ENV_FAT_INTERFACE, dev, part, __func__, __LINE__, __FILE__);
    if (err == -1) {
    /*
    * This printf is embedded in the messages from env_save that
    --- include/configs/am57xx_evm.h Mon Apr 20 13:14:38 2020
    +++ include/configs/am57xx_evm.h Sun Jul 4 22:27:54 2021
    @@ -14,6 +14,9 @@
    #include <environment/ti/dfu.h>
    #include <linux/sizes.h>

    +#define DEBUG //wj@dev210506 full debug message
    +//#define CONFIG_MMC_TRACE
    +
    #define CONFIG_IODELAY_RECALIBRATION

    /* MMC ENV related defines */
    @@ -29,7 +32,7 @@
    #define CONFIG_SYS_NS16550_COM3 UART3_BASE /* UART3 */

    #define CONFIG_ENV_EEPROM_IS_ON_I2C
    -#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50 /* Main EEPROM */
    +#define CONFIG_SYS_I2C_EEPROM_ADDR 0x5011 /* Main EEPROM */
    #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2

    #define CONFIG_SYS_OMAP_ABE_SYSCK