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.

AM6548: GPIO status not correct after boot into kernel for a while

Part Number: AM6548

Hi Ti,

We are using Linux RT SDK 07.01.00.18 on our customized board.

And we found some gpio status not correct when boot into kernel for a while. 

We configure GPIO1-49~52 as PRG0_PRU1_GPO0~3 and dts setting is as below:

AM65X_IOPAD(0x0244, PIN_OUTPUT, 0) /* (AB28) PRG0_PRU1_GPO0.GPIO1_49 */
AM65X_IOPAD(0x0248, PIN_OUTPUT, 0) /* (AC28) PRG0_PRU1_GPO1.GPIO1_50 */
AM65X_IOPAD(0x024c, PIN_OUTPUT, 0) /* (AC27) PRG0_PRU1_GPO2.GPIO1_51 */
AM65X_IOPAD(0x0250, PIN_OUTPUT, 0) /* (AB26) PRG0_PRU1_GPO3.GPIO1_52 */

However, we found sometimes they are at 3.3V (high) stage after boot into kernel for a while. 

We suppose they should be low when booting.

It happened around when PRU log comes out.

The fail rate is quite low, 3/16.

Attached the kernel log and dts file.

Could you help to look into ?

gpiolog.txt
U-Boot SPL 2020.01 (Sep 06 2021 - 13:47:59 +0800)
SYSFW ABI: 3.1 (firmware rev 0x0015 '21.5.0--v2021.05 (Terrific Llam')
Reading on-board EEPROM at 0x50 failed 1
Trying to boot from MMC2
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.3():07.01.00.004-1-g52c334fc3-dirty
NOTICE:  BL31: Built : 04:16:36, Nov 26 2020

U-Boot SPL 2020.01 (Sep 06 2021 - 13:46:14 +0800)
SYSFW ABI: 3.1 (firmware rev 0x0015 '21.5.0--v2021.05 (Terrific Llam')
Reading on-board EEPROM at 0x50 failed -19
Trying to boot from MMC2


U-Boot 2020.01 (Sep 06 2021 - 13:46:14 +0800)

SoC:   AM65X SR2.0
Model: Texas Instruments AM654 Base Board
Reading on-board EEPROM at 0x50 failed -19
Board: AM6-COMPROCEVM rev E3
DRAM:  1 GiB
MMC:   sdhci@4f80000: 0, sdhci@4fa0000: 1
Loading Environment from MMC... OK
In:    serial
Out:   serial
Err:   serial
Reading on-board EEPROM at 0x50 failed 1
led_gpio_control error led value=1
ax58100_rst_control value=0
ecat2_phy_rst value=0
ax58100_phy_rst value=0
eth0_phy_rst value=0
eth1_phy_rst value=0
i2c0_switch_init value=0
ser_comm_init value=0
can_term_init value=0
SetSerdesReg for usb2.0 ...
Net:   eth0: ethernet@46000000
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc1 is current device
SD/MMC found on device 1
1011 bytes read in 6 ms (164.1 KiB/s)
Loaded env from uEnv.txt
Importing environment from mmc1 ...
Running uenvcmd ...
15392776 bytes read in 650 ms (22.6 MiB/s)
67032 bytes read in 8 ms (8 MiB/s)
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Device Tree to 000000008feec000, end 000000008fffffff ... OK

Starting kernel ...

[    0.000000] 000: printk: bootconsole [ns16550a0] enabled
[    0.000000] 000: Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
[    0.000000] 000: OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
[    0.000000] 000: Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
[    0.000000] 000: OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
[    0.000000] 000: Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
[    0.000000] 000: OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
[    0.000000] 000: Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
[    0.000000] 000: OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
[    0.000000] 000: cma: Reserved 24 MiB at 0x00000000be800000
[    0.000000] 000: On node 0 totalpages: 110080
[    0.000000] 000:   DMA zone: 4096 pages used for memmap
[    0.000000] 000:   DMA zone: 0 pages reserved
[    0.000000] 000:   DMA zone: 247296 pages, LIFO batch:63
[    0.000000] 000:   DMA32 zone: 18446744073709414400 pages, LIFO batch:63
[    0.000000] 000: psci: probing for conduit method from DT.
[    0.000000] 000: psci: PSCIv1.1 detected in firmware.
[    0.000000] 000: psci: Using standard PSCI v0.2 function IDs
[    0.000000] 000: psci: Trusted OS migration not required
[    0.000000] 000: psci: SMC Calling Convention v1.0
[    0.000000] 000: percpu: Embedded 18 pages/cpu s32960 r8192 d32576 u73728
[    0.000000] 000: pcpu-alloc: s32960 r8192 d32576 u73728 alloc=18*4096
[    0.000000] 000:
[    0.000000] 000: pcpu-alloc:
[    0.000000] 000: [0]
[    0.000000] 000: 0
[    0.000000] 000: [0]
[    0.000000] 000: 1
[    0.000000] 000: [0]
[    0.000000] 000: 2
[    0.000000] 000: [0]
[    0.000000] 000: 3
[    0.000000] 000:
[    0.000000] 000: Detected VIPT I-cache on CPU0
[    0.000000] 000: CPU features: detected: ARM erratum 845719
[    0.000000] 000: CPU features: detected: GIC system register CPU interface
[    0.000000] 000: Built 1 zonelists, mobility grouping on.  Total pages: 105984
[    0.000000] 000: Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 isolcpus=1-3 mtdparts=47040000.spi.0:512k(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),128k(ospi.env),128k(ospi.env.backup),1m(ospi.sysfw),57216k@8m(ospi.rootfs),128k(ospi.phypattern) root=PARTUUID=0f516fbd-02 rw rootfstype=ext4 rootwait
[    0.000000] 000: Dentry cache hash table entries: 65536 (order: 8, 1048576 bytes, linear)
[    0.000000] 000: Inode-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.000000] 000: mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] 000: Memory: 928900K/440320K available (9278K kernel code, 632K rwdata, 3592K rodata, 1472K init, 423K bss, 18446744073709038460K reserved, 24576K cma-reserved)
[    0.000000] 000: SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] 000: rcu: Preemptible hierarchical RCU implementation.
[    0.000000] 000: rcu:        RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4.
[    0.000000] 000: rcu:        RCU priority boosting: priority 1 delay 500 ms.
[    0.000000] 000: rcu:        RCU_SOFTIRQ processing moved to rcuc kthreads.
[    0.000000] 000:     No expedited grace period (rcu_normal_after_boot).
[    0.000000] 000:     Tasks RCU enabled.
[    0.000000] 000: rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] 000: rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] 000: NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] 000: GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] 000: GICv3: 960 SPIs implemented
[    0.000000] 000: GICv3: 0 Extended SPIs implemented
[    0.000000] 000: GICv3: Distributor has no Range Selector support
[    0.000000] 000: GICv3: 16 PPIs implemented
[    0.000000] 000: GICv3: no VLPI support, no direct LPI support
[    0.000000] 000: GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
[    0.000000] 000: ITS [mem 0x01820000-0x0182ffff]
[    0.000000] 000: GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
[    0.000000] 000: ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
[    0.000000] 000: ITS@0x0000000001820000: allocated 524288 Devices @bc400000 (flat, esz 8, psz 64K, shr 0)
[    0.000000] 000: ITS: using cache flushing for cmd queue
[    0.000000] 000: GICv3: using LPI property table @0x00000000bcc40000
[    0.000000] 000: GIC: using cache flushing for LPI property table
[    0.000000] 000: GICv3: CPU0: using allocated LPI pending table @0x00000000bcc50000
[    0.000000] 000: random: get_random_bytes called from start_kernel+0x2bc/0x440 with crng_init=0
[    0.000000] 000: arch_timer: cp15 timer(s) running at 200.00MHz (phys).
[    0.000000] 000: clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
[    0.000001] 000: sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
[    0.008984] 000: Console: colour dummy device 80x25
[    0.014020] 000: Calibrating delay loop (skipped), value calculated using timer frequency..
[    0.022655] 000: 400.00 BogoMIPS (lpj=800000)
[    0.027114] 000: pid_max: default: 32768 minimum: 301
[    0.032391] 000: LSM: Security Framework initializing
[    0.037612] 000: Mount-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
[    0.045543] 000: Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
[    0.055515] 000: ASID allocator initialised with 32768 entries
[    0.061601] 000: rcu: Hierarchical SRCU implementation.
[    0.067445] 000: Platform MSI: gic-its@1820000 domain created
[    0.073563] 000: PCI/MSI: /bus@100000/interrupt-controller@1800000/gic-its@1820000 domain created
[    0.083003] 000: smp: Bringing up secondary CPUs ...
[    0.089235] 001: Detected VIPT I-cache on CPU1
[    0.093808] 001: GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
[    0.101296] 001: GICv3: CPU1: using allocated LPI pending table @0x00000000bcc60000
[    0.109160] 001: CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.117601] 002: Detected VIPT I-cache on CPU2
[    0.122194] 002: GICv3: CPU2: found redistributor 100 region 0:0x00000000018c0000
[    0.129869] 002: GICv3: CPU2: using allocated LPI pending table @0x00000000bcc70000
[    0.137754] 002: CPU2: Booted secondary processor 0x0000000100 [0x410fd034]
[    0.146135] 003: Detected VIPT I-cache on CPU3
[    0.150709] 003: GICv3: CPU3: found redistributor 101 region 0:0x00000000018e0000
[    0.158379] 003: GICv3: CPU3: using allocated LPI pending table @0x00000000bcc80000
[    0.166245] 003: CPU3: Booted secondary processor 0x0000000101 [0x410fd034]
[    0.173512] 000: smp: Brought up 1 node, 4 CPUs
[    0.178176] 000: SMP: Total of 4 processors activated.
[    0.183452] 000: CPU features: detected: 32-bit EL0 Support
[    0.189177] 000: CPU features: detected: CRC32 instructions
[    0.204501] 000: CPU: All CPU(s) started at EL2
[    0.209184] 000: alternatives: patching kernel code
[    0.215133] 000: devtmpfs: initialized
[    0.229486] 000: clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.239958] 000: futex hash table entries: 1024 (order: 5, 131072 bytes, linear)
[    0.248622] 000: pinctrl core: initialized pinctrl subsystem
[    0.255357] 000: NET: Registered protocol family 16
[    0.262234] 000: DMA: preallocated 256 KiB pool for atomic allocations
[    0.269698] 000: hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.296799] 000: HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.304154] 000: HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    0.311495] 000: HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.318832] 000: HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    0.327495] 000: cryptd: max_cpu_qlen set to 1000
[    0.337175] 000: iommu: Default domain type: Translated
[    0.343014] 000: SCSI subsystem initialized
[    0.347976] 000: mc: Linux media interface: v0.10
[    0.353182] 000: videodev: Linux video capture interface: v2.00
[    0.359301] 000: pps_core: LinuxPPS API ver. 1 registered
[    0.364844] 000: pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.374675] 000: PTP clock support registered
[    0.379192] 000: EDAC MC: Ver: 3.0.0
[    0.383931] 000: FPGA manager framework
[    0.387986] 000: Advanced Linux Sound Architecture Driver Initialized.
[    0.395510] 000: clocksource: Switched to clocksource arch_sys_counter
[    0.402465] 000: VFS: Disk quotas dquot_6.6.0
[    0.406999] 000: VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.420639] 000: thermal_sys: Registered thermal governor 'step_wise'
[    0.427261] 000: thermal_sys: Registered thermal governor 'power_allocator'
[    0.434897] 000: NET: Registered protocol family 2
[    0.440543] 000: tcp_listen_portaddr_hash hash table entries: 256 (order: 2, 16384 bytes, linear)
[    0.449763] 000: TCP established hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.458195] 000: TCP bind hash table entries: 4096 (order: 5, 229376 bytes, linear)
[    0.466277] 000: TCP: Hash tables configured (established 4096 bind 4096)
[    0.473424] 000: UDP hash table entries: 256 (order: 3, 32768 bytes, linear)
[    0.480726] 000: UDP-Lite hash table entries: 256 (order: 3, 32768 bytes, linear)
[    0.488632] 000: NET: Registered protocol family 1
[    0.494047] 000: RPC: Registered named UNIX socket transport module.
[    0.500595] 000: RPC: Registered udp transport module.
[    0.505874] 000: RPC: Registered tcp transport module.
[    0.511140] 000: RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.518194] 000: PCI: CLS 0 bytes, default 64
[    0.523775] 000: hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available
[    0.537170] 000: Initialise system trusted keyrings
[    0.542398] 000: workingset: timestamp_bits=46 max_order=18 bucket_order=0
[    0.556336] 000: squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.563484] 000: NFS: Registering the id_resolver key type
[    0.569150] 000: Key type id_resolver registered
[    0.573940] 000: Key type id_legacy registered
[    0.578516] 000: nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.586029] 000: 9p: Installing v9fs 9p2000 file system support
[    0.606270] 000: Key type asymmetric registered
[    0.610922] 000: Asymmetric key parser 'x509' registered
[    0.616428] 000: Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
[    0.624486] 000: io scheduler mq-deadline registered
[    0.629596] 000: io scheduler kyber registered
[    0.636596] 000: pinctrl-single 4301c000.pinmux: 70 pins, size 280
[    0.643626] 000: pinctrl-single 11c000.pinmux: 185 pins, size 740
[    0.650187] 000: pinctrl-single 11c2e8.pinmux: 9 pins, size 36
[    0.661752] 000: k3-ringacc 2b800000.ringacc: Failed to get MSI domain
[    0.668599] 000: k3-ringacc 3c000000.ringacc: Failed to get MSI domain
[    0.679233] 000: Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
[    0.701436] 000: brd: module loaded
[    0.714528] 000: loop: module loaded
[    0.722115] 000: libphy: Fixed MDIO Bus: probed
[    0.727375] 000: tun: Universal TUN/TAP device driver, 1.6
[    0.733683] 000: igbvf: Intel(R) Gigabit Virtual Function Network Driver - version 2.4.0-k
[    0.742166] 000: igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[    0.748748] 000: sky2: driver version 1.30
[    0.754138] 000: VFIO - User Level meta-driver version: 0.3
[    0.760742] 000: i2c /dev entries driver
[    0.765928] 000: sdhci: Secure Digital Host Controller Interface driver
[    0.772739] 000: sdhci: Copyright(c) Pierre Ossman
[    0.778184] 000: sdhci-pltfm: SDHCI platform and OF driver helper
[    0.785712] 000: ti-sci bus@100000:bus@28380000:bus@42040000:dmsc: invalid resource
[    0.795013] 000: optee: probing for conduit method from DT.
[    0.800779] 000: optee: revision 3.8 (199fca17)
[    0.805981] 000: optee: initialized driver
[    0.811845] 000: NET: Registered protocol family 17
[    0.817043] 000: 9pnet: Installing 9P2000 support
[    0.821945] 000: Key type dns_resolver registered
[    0.827273] 000: registered taskstats version 1
[    0.831944] 000: Loading compiled-in X.509 certificates
[    0.000000] 000: Booting Linux on physical CPU 0x0000000000 [0x410f[    0.852152] 000: k3-ringacc 2b800000.ringacc: Failed to get MSI domain
d034]
[    0.860152] 000: k3-ringacc 3c000000.ringacc: Failed to get MSI domain
[    0.872163] 000: ti-sci bus@100000:bus@28380000:bus@42040000:dmsc: invalid resource
[    0.880443] 000: ti-sci bus@100000:bus@28380000:bus@42040000:dmsc: ABI: 3.1 (firmware rev 0x0015 '21.5.0--v2021.05 (Terrific Llam')
[    0.941424] 000: random: fast init done
[    0.954024] 000: omap_i2c 42120000.i2c: bus 0 rev0.12 at 100 kHz
[    0.960943] 000: omap_i2c 40b00000.i2c: bus 1 rev0.12 at 100 kHz
[    0.968047] 000: omap_i2c 2000000.i2c: bus 2 rev0.12 at 100 kHz
[    0.974971] 000: omap_i2c 2010000.i2c: bus 3 rev0.12 at 100 kHz
[    0.981718] 000: omap_i2c 2020000.i2c: bus 4 rev0.12 at 100 kHz
[    0.988438] 000: omap_i2c 2030000.i2c: bus 5 rev0.12 at 100 kHz
[    0.995422] 000: ti-sci-intr bus@100000:bus@28380000:bus@42040000:interrupt-controller2: Interrupt Router 156 domain created
[    1.007143] 000: ti-sci-intr bus@100000:interrupt-controller0: Interrupt Router 100 domain created
[    1.016527] 000: ti-sci-intr bus@100000:navss@30800000:interrupt-controller1: Interrupt Router 182 domain created
[    1.027386] 000: ti-sci-inta 33d00000.interrupt-controller: Interrupt Aggregator domain 179 created
[    1.041146] 000: k3-ringacc 2b800000.ringacc: Ring Accelerator probed rings:286, gp-rings[96,32] sci-dev-id:195
[    1.051538] 000: k3-ringacc 2b800000.ringacc: dma-ring-reset-quirk: disabled
[    1.058775] 000: k3-ringacc 2b800000.ringacc: RA Proxy rev. 66348100, num_proxies:64
[    1.069867] 000: k3-ringacc 3c000000.ringacc: Ring Accelerator probed rings:818, gp-rings[304,100] sci-dev-id:187
[    1.080450] 000: k3-ringacc 3c000000.ringacc: dma-ring-reset-quirk: disabled
[    1.087690] 000: k3-ringacc 3c000000.ringacc: RA Proxy rev. 66348100, num_proxies:64
[    1.096416] 000: 40a00000.serial: ttyS1 at MMIO 0x40a00000 (irq = 8, base_baud = 6000000) is a 8250
[    1.106706] 000: 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 19, base_baud = 3000000) is a 8250
[    1.115962] 000: printk: console [ttyS2] enabled
[    1.115962] 000: printk: console [ttyS2] enabled
[    1.125327] 000: printk: bootconsole [ns16550a0] disabled
[    1.125327] 000: printk: bootconsole [ns16550a0] disabled
[    1.137081] 000: omap8250 2810000.serial: unable to register 8250 port
[    1.137094] 000: omap8250 2810000.serial: PM domain pd:147 will not be powered off
[    1.137891] 000: 2820000.serial: ttyS4 at MMIO 0x2820000 (irq = 21, base_baud = 3000000) is a 8250
[    1.211526] 000: davinci_mdio 46000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[    1.211546] 000: libphy: 46000f00.mdio: probed
[    1.212393] 000: davinci_mdio 46000f00.mdio: phy[3]: device 46000f00.mdio:03, driver unknown
[    1.212431] 000: am65-cpsw-nuss 46000000.ethernet: initializing am65 cpsw nuss version 0x6BA00102, cpsw version 0x6BA80102 Ports: 2 quirks:00000000
[    1.212905] 000: am65-cpsw-nuss 46000000.ethernet: Failed to request tx dma channel -517
[    1.215083] 000: am65-cpts 310d0000.cpts: CPTS ver 0x4e8a010b, freq:200000000, add_val:4 pps:0
[    1.219641] 000: thermal thermal_zone1: failed to read out thermal zone (-22)
[    1.219671] 000: thermal thermal_zone2: failed to read out thermal zone (-22)
[    1.220560] 000: mmc0: CQHCI version 5.10
[    1.285897] 000: mmc0: SDHCI controller on 4f80000.sdhci [4f80000.sdhci] using ADMA 64-bit
[    1.286855] 000: mmc1: CQHCI version 5.10
[    1.357443] 000: mmc0: new HS200 MMC card at address 0001
[    1.358117] 000: mmcblk0: mmc0:0001 IS004G 3.64 GiB
[    1.358478] 000: mmcblk0boot0: mmc0:0001 IS004G partition 1 2.00 MiB
[    1.358835] 000: mmcblk0boot1: mmc0:0001 IS004G partition 2 2.00 MiB
[    1.359119] 000: mmcblk0rpmb: mmc0:0001 IS004G partition 3 512 KiB, chardev (240:0)
[    1.378523] 000:  mmcblk0: p1 p2 < p5 p6 > p3
[    2.291236] 000: mmc1: SDHCI controller on 4fa0000.sdhci [4fa0000.sdhci] using ADMA 64-bit
[    2.311971] 000: omap-mailbox 31f80000.mailbox: omap mailbox rev 0x66fc7100
[    2.312423] 000: omap-mailbox 31f81000.mailbox: omap mailbox rev 0x66fc7100
[    2.314151] 000: ti-udma 285c0000.dma-controller: Channels: 28 (tchan: 14, rchan: 14, gp-rflow: 16)
[    2.326973] 000: ti-udma 31150000.dma-controller: Channels: 119 (tchan: 53, rchan: 66, gp-rflow: 64)
[    2.349322] 000: 2810000.serial: ttyS3 at MMIO 0x2810000 (irq = 20, base_baud = 3000000) is a 8250
[    2.377884] 000: spi-nor spi9.0: unrecognized JEDEC id bytes: 00 00 00 00 00 00
[    2.377914] 000: spi-nor: probe of spi9.0 failed with error -2
[    2.415518] 000: davinci_mdio 46000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[    2.415533] 000: libphy: 46000f00.mdio: probed
[    2.433888] 000: davinci_mdio 46000f00.mdio: phy[3]: device 46000f00.mdio:03, driver unknown
[    2.433926] 000: am65-cpsw-nuss 46000000.ethernet: initializing am65 cpsw nuss version 0x6BA00102, cpsw version 0x6BA80102 Ports: 2 quirks:00000000
[    2.435629] 000: am65-cpsw-nuss 46000000.ethernet: set new flow-id-base 48
[    2.436332] 000: am65-cpsw-nuss 46000000.ethernet: initialized cpsw ale version 57.4
[    2.436339] 000: am65-cpsw-nuss 46000000.ethernet: ALE Table size 64
[    2.452174] 000: am65-cpsw-nuss 46000000.ethernet: CPTS ver 0x4e8a010b, freq:200000000, add_val:4 pps:0
[    2.455476] 000: mmc1: new ultra high speed DDR50 SDHC card at address e624
[    2.469179] 000: mmcblk1: mmc1:e624 SU16G 14.8 GiB
[    2.471898] 000:  mmcblk1: p1 p2
[    2.474786] 000: debugfs: Directory 'pd:121' with parent 'pm_genpd' already present!
[    2.474856] 000: debugfs: Directory 'pd:120' with parent 'pm_genpd' already present!
[    2.477113] 000: hctosys: unable to open rtc device (rtc0)
[    2.494669] 000: ALSA device list:
[    2.494675] 000:   No soundcards found.
[    2.946414] 000: EXT4-fs (mmcblk1p2): recovery complete
[    2.952770] 000: EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
[    2.952850] 000: VFS: Mounted root (ext4 filesystem) on device 179:98.
[    2.954364] 000: devtmpfs: mounted
[    2.955446] 000: Freeing unused kernel memory: 1472K
[    2.955613] 000: Run /sbin/init as init process
[    3.182593] 000: systemd[1]: System time before build time, advancing clock.
[    3.253053] 000: NET: Registered protocol family 10
[    3.254091] 000: Segment Routing with IPv6
[    3.280644] 000: systemd[1]: systemd 244.3+ running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR -SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN -PCRE2 default-hierarchy=hybrid)
[    3.281162] 000: systemd[1]: Detected architecture arm64.

Welcome to Arago 2020.09!

[    3.324547] 000: systemd[1]: Set hostname to <am65xx-evm>.
[    3.715335] 000: systemd[1]: /lib/systemd/system/docker.socket:6: ListenStream= references a path below legacy directory /var/run/, updating /var/run/docker.sock → /run/docker.sock; please update the unit file accordingly.
[    3.839483] 000: random: systemd: uninitialized urandom read (16 bytes read)
[    3.846914] 000: systemd[1]: system-getty.slice: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
[[    3.846929] 000: systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
  OK  ] Created slice system-getty.slice[    3.854862] 000: systemd[1]: Created slice system-getty.slice.
.
[  OK  ] Created slice system-serial\x2dgetty[    3.895682] 000: random: systemd: uninitialized urandom read (16 bytes read)
.slice.
[    3.897453] 000: systemd[1]: Created slice system-serial\x2dgetty.slice.
[  OK  ] Created slice User and Session Slice[    3.919640] 000: random: systemd: uninitialized urandom read (16 bytes read)
.
[    3.921155] 000: systemd[1]: Created slice User and Session Slice.
[  OK  ] Started Dispatch Password …ts to C[    3.943931] 000: systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
onsole Directory Watch.
[  OK  ] Started Forward Password R…uests t[    3.967807] 000: systemd[1]: Started Forward Password Requests to Wall Directory Watch.
o Wall Directory Watch.
[  OK  ] Reached target Paths.
[    3.991762] 000: systemd[1]: Reached target Paths.
[  OK  ] Reached target Remote File Systems    4.003640] 000: systemd[1]: Reached target Remote File Systems.
0m.
[  OK  ] Reached target Slices.
[    4.023623] 000: systemd[1]: Reached target Slices.
[  OK  ] Reached target Swap.
[    4.035635] 000: systemd[1]: Reached target Swap.
[  OK  ] Listening on RPCbind Server Activati[    4.049942] 000: systemd[1]: Listening on RPCbind Server Activation Socket.
on Socket.
[    4.071680] 000: systemd[1]: Reached target RPC Port Mapper.

[  OK  ] Listening on Process Core Dump Socke[    4.097126] 000: systemd[1]: Listening on Process Core Dump Socket.
t.
[  OK  ] Listening on initctl Compatibility N[    4.119921] 000: systemd[1]: Listening on initctl Compatibility Named Pipe.
amed Pipe.
[  OK  ] Listening on Journal Socket (/dev/lo[    4.160376] 000: systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
g).
[    4.161113] 000: systemd[1]: Listening on Journal Socket (/dev/log).
[  OK  ] Listening on Journal Socket.
[    4.188178] 000: systemd[1]: Listening on Journal Socket.
[  OK  ] Listening on Network Service Netlink[    4.200260] 000: systemd[1]: Listening on Network Service Netlink Socket.
 Socket.
[  OK  ] Listening on udev Control Socket[    4.224050] 000: systemd[1]: Listening on udev Control Socket.
.
[  OK  ] Listening on udev Kernel Socket.[    4.247905] 000: systemd[1]: Listening on udev Kernel Socket.

         Mounting Huge Pages File System...[    4.272949] 000: systemd[1]: Mounting Huge Pages File System...

         Mounting POSIX Message Queue File System...[    4.304649] 000: systemd[1]: Mounting POSIX Message Queue File System...

         Mounting Kernel Debug File System...[    4.340647] 000: systemd[1]: Mounting Kernel Debug File System...

         Mounting Temporary Directory (/tmp)...[    4.373404] 000: systemd[1]: Mounting Temporary Directory (/tmp)...

         Starting Create list of st…odes for the current kerne[    4.408950] 000: systemd[1]: Starting Create list of static device nodes for the current kernel...
l...
         Starting Start psplash boot splash screen...[    4.444402] 000: systemd[1]: Starting Start psplash boot splash screen...

[  OK  [    4.484502] 000: systemd[1]: Started Hardware RNG Entropy Gatherer Daemon.
] Started Hardware RNG Entropy Gatherer Daemon.
         Starting RPC Bind...
[    4.517902] 000: systemd[1]: Starting RPC Bind...
         [    4.531987] 000: systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
Starting Journal Service...[    4.538485] 000: systemd[1]: Starting Journal Service...

         Starting Load Kernel Modules...[    4.593000] 000: systemd[1]: Starting Load Kernel Modules...

         Starting Remount Root and Kernel File Systems...[    4.620668] 000: systemd[1]: Starting Remount Root and Kernel File Systems...

         Starting udev Coldplug all Devices...[    4.648891] 000: systemd[1]: Starting udev Coldplug all Devices...

[  OK  ] Started RPC Bind.
[    4.678260] 000: systemd[1]: Started RPC Bind.
[[    4.691146] 000: systemd[1]: Mounted Huge Pages File System.
  OK  ] Mounted Huge Pages File System.
[  OK  ] Mounted POSIX Message Queue File Sys[    4.716683] 000: systemd[1]: Mounted POSIX Message Queue File System.
tem.
[  OK  ] Mounted Kernel Debug File System[    4.740733] 000: systemd[1]: Mounted Kernel Debug File System.
.
[    4.762952] 000: cryptodev: loading out-of-tree module taints kernel.
[[    4.771393] 000: systemd[1]: Mounted Temporary Directory (/tmp).
  OK  ] Mounted Temporary Directory (/tmp).
[    4.787807] 000: cryptodev: driver 1.10 loaded.
[  OK  ] Started Create list of sta… nodes [    4.799964] 000: systemd[1]: Started Create list of static device nodes for the current kernel.
for the current kernel.
[[    4.824668] 000: systemd[1]: psplash-start.service: Main process exited, code=exited, status=255/EXCEPTION
FAILED] Failed to start Start psplash boot splash screen.[    4.825221] 000: systemd[1]: psplash-start.service: Failed with result 'exit-code'.

See 'systemctl status psplash-start.service' for details.[    4.827823] 000: systemd[1]: Failed to start Start psplash boot splash screen.

[[    4.887716] 000: systemd[1]: Dependency failed for Start psplash-systemd progress communication helper.
DEPEND] Dependency failed for Star…progress communication helper.
[    4.911735] 000: systemd[1]: psplash-systemd.service: Job psplash-systemd.service/start failed with result 'dependency'.
[    4.961767] 000: EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
[  OK  ] Started Remount Root and Kernel File[    5.006869] 000: systemd[1]: Started Remount Root and Kernel File Systems.
 Systems.
         [    5.034200] 000: systemd[1]: Condition check resulted in Rebuild Hardware Database being skipped.
Starting Create Static Device Nodes in /dev...[    5.034349] 000: systemd[1]: Condition check resulted in Create System Users being skipped.

[[    5.038954] 000: systemd[1]: Starting Create Static Device Nodes in /dev...
  OK  ] Started Load Kernel Modules.
[    5.079269] 000: systemd[1]: Started Load Kernel Modules.
         [    5.110279] 000: systemd[1]: Condition check resulted in FUSE Control File System being skipped.
Mounting Kernel Configuration File System...
         [    5.114925] 000: systemd[1]: Mounting Kernel Configuration File System...
Starting Apply Kernel Variables...
[    5.144404] 000: systemd[1]: Starting Apply Kernel Variables...
[[    5.171733] 000: systemd[1]: Mounted Kernel Configuration File System.
  OK  ] Mounted Kernel Configuration File System.
[    5.232663] 000: systemd[1]: Started Apply Kernel Variables.

[    5.259303] 000: systemd[1]: Started Create Static Device Nodes in /dev.
[  OK  ] Started Create Static Device Nodes in /dev.
[  OK  ] Reached target Local File Systems (P[    5.284762] 000: systemd[1]: Reached target Local File Systems (Pre).
re).
         [    5.313536] 000: systemd[1]: Mounting /media/ram...
Mounting /media/ram...
         [    5.341540] 000: systemd[1]: Mounting /var/volatile...
Mounting /var/volatile...
         Starting udev Kernel Device Manager...[    5.368350] 000: systemd[1]: Starting udev Kernel Device Manager...

[  OK  ] Started Journal Service.
[    5.394893] 000: systemd[1]: Started Journal Service.
[  OK  ] Mounted /media/ram.
[  OK  ] Mounted /var/volatile.
         Starting Flush Journal to Persistent Storage...
         Starting Load/Save Random Seed...
[  OK  ] Reached target Local File Systems.
[    5.475960] 000: systemd-journald[202]: Received client request to flush runtime journal.
[  OK  ] Started Flush Journal to Persistent Storage.
         Starting Create Volatile Files and Directories...
[  OK  ] Started Create Volatile Files and Directories.
         Starting Network Time Synchronization...
         Starting Update UTMP about System Boot/Shutdown...
[  OK  ] Started Update UTMP about System Boot/Shutdown.
[  OK  ] Started udev Kernel Device Manager.
[  OK  ] Started Network Time Synchronization.
[  OK  ] Reached target System Time Set.
[  OK  ] Reached target System Time Synchronized.
[  OK  ] Started udev Coldplug all Devices.
[  OK  ] Reached target System Initialization.
[  OK  ] Started Daily rotation of log files.
[  OK  ] Started Daily Cleanup of Temporary Directories.
[  OK  ] Reached target Timers.
[  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
[  OK  ] Listening on D-Bus System Message Bus Socket.
         Starting Docker Socket for the API.
[  OK  ] Listening on dropbear.socket.
         Starting Reboot and dump vmcore via kexec...
[  OK  ] Listening on Docker Socket for the API.
[  OK  ] Reached target Sockets.
[  OK  ] Reached target Basic System.
[  OK  ] Started Job spooling tools.
[  OK  ] Started Periodic Command Scheduler.
[  OK  ] Started D-Bus System Message Bus.
         Starting Print notice about GPLv3 packages...
         Starting IPv6 Packet Filtering Framework...
         Starting IPv4 Packet Filtering Framework...
[  OK  ] Started irqbalance daemon.
         Starting rc.pvr.service...
         Starting Login Service...
[  OK  ] Started Reboot and dump vmcore via kexec.
[  OK  ] Started IPv6 Packet Filtering Framework.
[  OK  ] Started IPv4 Packet Filtering Framework.
[  OK  ] Reached target Network (Pre).
         Starting Network Service...
[    7.537199] 000: [drm] Initialized pvr 1.17.4948957 20110701 for 7000000.gpu on minor 0
[    7.608186] 000: PVR_K: UM DDK-(4948957) and KM DDK-(4948957) match. [ OK ]
[  OK  ] Started rc.pvr.service.
         Starting weston.service...
[    8.031582] 000: random: crng init done
[    8.031596] 000: random: 7 urandom warning(s) missed due to ratelimiting
[  OK  ] Started Network Service.
         Starting Wait for Network to be Configured...
         Starting Network Name Resolution...
[  OK  ] Started Load/Save Random Seed.
[  OK  ] Started Login Service.
[  OK  ] Started Network Name Resolution.
[  OK  ] Reached target Network.
[  OK  ] Reached target Host and Network Name Lookups.
         Starting Avahi mDNS/DNS-SD Stack...
[  OK  ] Started NFS status monitor for NFSv2/3 locking..
         Starting Simple Network Ma…ent Protocol (SNMP) Daemon....
         Starting Permit User Sessions...
[  OK  ] Started Permit User Sessions.
[  OK  ] Started Getty on tty1.
[  OK  ] Started Serial Getty on ttyS1.
[  OK  ] Started Serial Getty on ttyS2.
[  OK  ] Reached target Login Prompts.
         Starting Synchronize System and HW clocks...
[FAILED] Failed to start Synchronize System and HW clocks.
See 'systemctl status sync-clocks.service' for details.
[  OK  ] Started Avahi mDNS/DNS-SD Stack.
[  OK  ] Started Simple Network Man…ement Protocol (SNMP) Daemon..
[   10.615402] 000: at24 2-0050: 2048 byte 24c16 EEPROM, writable, 16 bytes/write
[  OK  ] Started weston.service.
         Starting Matrix GUI...
         Starting telnetd.service...
[  OK  ] Started Matrix GUI.
[  OK  ] Started telnetd.service.
[  OK  ] Created slice system-systemd\x2dcoredump.slice.
[  OK  ] Started Process Core Dump (PID 482/UID 0).
***************************************************************
***************************************************************
NOTICE: This file system contains the following GPLv3 packages:
        autoconf
        bash-dev
        bash
        bc
        binutils
        cifs-utils
        coreutils-stdbuf
        coreutils
        cpio
        cpp-symlinks
        cpp
        dosfstools
        elfutils
        g++-symlinks
        g++
        gawk
        gcc-symlinks
        gcc
        gdb
        gdbserver
        gettext
        glmark2
        gstreamer1.0-libav
        gzip
        less
        libasm1
        libbfd
        libdw1
        libelf1
        libgdbm-compat4
        libgdbm-dev
        libgdbm6
        libgettextlib
        libgettextsrc
        libgmp10
        libidn2-0
        libmpc3
        libmpfr6
        libreadline-dev
        libreadline8
        libunistring2
        m4-dev
        m4
        make
        nettle
        parted
        pdm-anomaly-detection
        tar
        which

If you do not wish to distribute GPLv3 components please remove
the above packages prior to distribution.  This can be done using
the opkg remove command.  i.e.:
    opkg remove <package>
Where <package> is the name printed in the list above

NOTE: If the package is a dependency of another package you
      will be notified of the dependent packages.  You should
      use the --force-removal-of-dependent-packages option to
      also remove the dependent packages as well
***************************************************************
***************************************************************
[  OK  ] Started Print notice about GPLv3 packages.
[   13.324516] 000: cal: Neither port is configured, no point in staying up
[   13.701905] 000: davinci_mdio b132400.mdio: davinci mdio revision 1.7, bus freq 1000000
[   13.701931] 000: libphy: b132400.mdio: probed
[   13.760340] 000: davinci_mdio b132400.mdio: phy[1]: device b132400.mdio:01, driver TI DP83867
[   14.103683] 000: davinci_mdio b232400.mdio: davinci mdio revision 1.7, bus freq 1000000
[   14.103708] 000: libphy: b232400.mdio: probed
[   14.134820] 000: davinci_mdio b232400.mdio: phy[2]: device b232400.mdio:02, driver TI DP83867
[   14.799346] 000: CAN device driver interface
[   15.046903] 000: m_can_platform 40528000.mcan: m_can device registered (irq=15, version=32)

 _____                    _____           _         _
|  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_
|     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
|__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|
              |___|                    |___|

Arago Project http://arago-project.org am65xx-evm ttyS2

Arago 2020.09 am65xx-evm ttyS2

am65xx-evm login: [   16.727681] 000: platform 41000000.r5f: configured R5F for remoteproc mode
[   16.730223] 000: platform 41000000.r5f: assigned reserved memory node r5f-dma-memory@a0000000
[   16.730554] 000: remoteproc remoteproc0: 41000000.r5f is available
[   16.739304] 000: remoteproc remoteproc0: powering up 41000000.r5f
[   16.739321] 000: remoteproc remoteproc0: Booting fw image am65x-mcu-r5f0_0-fw, size 85036
[   16.753402] 000: platform 41000000.r5f: booting R5F core using boot addr = 0x0
[   16.753774] 000:  remoteproc0#vdev0buffer: assigned reserved memory node r5f-dma-memory@a0000000
[   16.754437] 000: virtio_rpmsg_bus virtio0: rpmsg host is online
[   16.754498] 000:  remoteproc0#vdev0buffer: registered virtio0 (type 7)
[   16.754506] 000: remoteproc remoteproc0: remote processor 41000000.r5f is now up
[   16.767955] 000: virtio_rpmsg_bus virtio0: creating channel ti.ipc4.ping-pong addr 0xd
[   16.768218] 000: virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xe
[   17.565885] 000: Generic PHY 46000f00.mdio:03: attached PHY driver [Generic PHY] (mii_bus:phy_addr=46000f00.mdio:03, irq=POLL)
[   17.579728] 000: am65-cpsw-nuss 46000000.ethernet eth0: Link is Down
[   26.442330] 000: remoteproc remoteproc1: b034000.pru is available
[   26.442434] 000: pru-rproc b034000.pru: PRU rproc node /bus@100000/icssg@b000000/pru@34000 probed successfully
[   26.551402] 000: remoteproc remoteproc2: b004000.rtu is available
[   26.575399] 000: pru-rproc b004000.rtu: PRU rproc node /bus@100000/icssg@b000000/rtu@4000 probed successfully
[   26.596007] 000: pru-rproc b00a000.txpru: IRQ vring not found
[   26.596022] 000: pru-rproc b00a000.txpru: IRQ kick not found
[   26.596125] 000: remoteproc remoteproc3: b00a000.txpru is available
[   26.596213] 000: pru-rproc b00a000.txpru: PRU rproc node /bus@100000/icssg@b000000/txpru@a000 probed successfully
[   26.721445] 000: remoteproc remoteproc4: b038000.pru is available
[   26.721548] 000: pru-rproc b038000.pru: PRU rproc node /bus@100000/icssg@b000000/pru@38000 probed successfully
[   26.780727] 000: remoteproc remoteproc5: b006000.rtu is available
[   26.780874] 000: pru-rproc b006000.rtu: PRU rproc node /bus@100000/icssg@b000000/rtu@6000 probed successfully
[   26.809546] 000: pru-rproc b00c000.txpru: IRQ vring not found
[   26.809562] 000: pru-rproc b00c000.txpru: IRQ kick not found
[   26.809666] 000: remoteproc remoteproc6: b00c000.txpru is available
[   26.809753] 000: pru-rproc b00c000.txpru: PRU rproc node /bus@100000/icssg@b000000/txpru@c000 probed successfully
[   26.856757] 000: remoteproc remoteproc7: b134000.pru is available
[   26.856861] 000: pru-rproc b134000.pru: PRU rproc node /bus@100000/icssg@b100000/pru@34000 probed successfully
[   26.862206] 000: remoteproc remoteproc8: b104000.rtu is available
[   26.917970] 000: pru-rproc b104000.rtu: PRU rproc node /bus@100000/icssg@b100000/rtu@4000 probed successfully
[   26.918409] 000: pru-rproc b10a000.txpru: IRQ vring not found
[   26.918417] 000: pru-rproc b10a000.txpru: IRQ kick not found
[   26.918512] 000: remoteproc remoteproc9: b10a000.txpru is available
[   26.918583] 000: pru-rproc b10a000.txpru: PRU rproc node /bus@100000/icssg@b100000/txpru@a000 probed successfully
[   26.992332] 000: remoteproc remoteproc10: b138000.pru is available
[   26.992445] 000: pru-rproc b138000.pru: PRU rproc node /bus@100000/icssg@b100000/pru@38000 probed successfully
[   27.170361] 000: remoteproc remoteproc11: b106000.rtu is available
[   27.170496] 000: pru-rproc b106000.rtu: PRU rproc node /bus@100000/icssg@b100000/rtu@6000 probed successfully
[   27.242374] 000: pru-rproc b10c000.txpru: IRQ vring not found
[   27.242391] 000: pru-rproc b10c000.txpru: IRQ kick not found
[   27.242492] 000: remoteproc remoteproc12: b10c000.txpru is available
[   27.242578] 000: pru-rproc b10c000.txpru: PRU rproc node /bus@100000/icssg@b100000/txpru@c000 probed successfully
[   27.284736] 000: remoteproc remoteproc13: b234000.pru is available
[   27.284843] 000: pru-rproc b234000.pru: PRU rproc node /bus@100000/icssg@b200000/pru@34000 probed successfully
[   27.289827] 000: remoteproc remoteproc14: b204000.rtu is available
[   27.289946] 000: pru-rproc b204000.rtu: PRU rproc node /bus@100000/icssg@b200000/rtu@4000 probed successfully
[   27.304123] 000: pru-rproc b20a000.txpru: IRQ vring not found
[   27.304137] 000: pru-rproc b20a000.txpru: IRQ kick not found
[   27.304236] 000: remoteproc remoteproc15: b20a000.txpru is available
[   27.304325] 000: pru-rproc b20a000.txpru: PRU rproc node /bus@100000/icssg@b200000/txpru@a000 probed successfully
[   27.393153] 000: remoteproc remoteproc16: b238000.pru is available
[   27.393257] 000: pru-rproc b238000.pru: PRU rproc node /bus@100000/icssg@b200000/pru@38000 probed successfully
[   27.531279] 000: remoteproc remoteproc17: b206000.rtu is available
[   27.531411] 000: pru-rproc b206000.rtu: PRU rproc node /bus@100000/icssg@b200000/rtu@6000 probed successfully
[   27.549608] 000: pru-rproc b20c000.txpru: IRQ vring not found
[   27.549619] 000: pru-rproc b20c000.txpru: IRQ kick not found
[   27.549715] 000: remoteproc remoteproc18: b20c000.txpru is available
[   27.549790] 000: pru-rproc b20c000.txpru: PRU rproc node /bus@100000/icssg@b200000/txpru@c000 probed successfully
[   27.724120] 000: icssg-prueth pruss1_eth: port 1: using random MAC addr: 82:2c:84:eb:f9:59
[   27.738296] 000: icssg-prueth pruss1_eth: TI PRU ethernet driver initialized: single EMAC mode
[   27.837030] 000: icssg-prueth pruss2_eth: port 1: using random MAC addr: d6:c5:fc:a2:fd:1d
[   27.853101] 000: icssg-prueth pruss2_eth: TI PRU ethernet driver initialized: single EMAC mode
[   28.410324] 000: EXT4-fs (mmcblk0p3): mounted filesystem with ordered data mode. Opts: (null)
[   28.505142] 000: EXT4-fs (mmcblk0p5): mounted filesystem with ordered data mode. Opts: (null)
[   28.505188] 000: ext4 filesystem being mounted at /run/media/mmcblk0p5 supports timestamps until 2038 (0x7fffffff)
[   28.692709] 000: EXT4-fs (mmcblk0p6): mounted filesystem with ordered data mode. Opts: (null)
[   35.141302] 000: dwc3 4010000.usb: Failed to get clk 'ref': -2
[   35.317522] 000: dwc3 4030000.usb: Failed to get clk 'ref': -2
[   39.969098] 000: usbcore: registered new interface driver usbfs
[   39.969158] 000: usbcore: registered new interface driver hub
[   40.024562] 000: usbcore: registered new device driver usb
[   40.223174] 000: xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[   40.223234] 000: xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 1
[   40.223362] 000: xhci-hcd xhci-hcd.2.auto: hcc params 0x0298fe6d hci version 0x110 quirks 0x0000000000010010
[   40.247977] 000: xhci-hcd xhci-hcd.2.auto: irq 582, io mem 0x04030000
[   40.248948] 000: usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.04
[   40.248958] 000: usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   40.248964] 000: usb usb1: Product: xHCI Host Controller
[   40.248969] 000: usb usb1: Manufacturer: Linux 5.4.74-rt42-g9002faf1c0 xhci-hcd
[   40.248973] 000: usb usb1: SerialNumber: xhci-hcd.2.auto
[   40.261862] 000: hub 1-0:1.0: USB hub found
[   40.271545] 000: hub 1-0:1.0: 1 port detected
[   40.273514] 000: xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[   40.273537] 000: xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 2
[   40.273553] 000: xhci-hcd xhci-hcd.2.auto: Host supports USB 3.0 SuperSpeed
[   40.287051] 000: usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[   40.287377] 000: usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.04
[   40.287385] 000: usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   40.287391] 000: usb usb2: Product: xHCI Host Controller
[   40.287395] 000: usb usb2: Manufacturer: Linux 5.4.74-rt42-g9002faf1c0 xhci-hcd
[   40.287400] 000: usb usb2: SerialNumber: xhci-hcd.2.auto
[   40.329467] 000: hub 2-0:1.0: USB hub found
[   40.329631] 000: hub 2-0:1.0: 1 port detected
[   40.644195] 000: remoteproc remoteproc13: powering up b234000.pru
[   40.654695] 000: remoteproc remoteproc13: Booting fw image ti-pruss/am65x-sr2-pru0-prueth-fw.elf, size 35548
[   40.654876] 000: pru-rproc b234000.pru: configured system_events[159-0] = 00000000,00000000,00000000,00000000,01000000
[   40.654885] 000: pru-rproc b234000.pru: configured intr_channels = 0x00000001 host_intr = 0x00000004
[   40.654893] 000: remoteproc remoteproc13: remote processor b234000.pru is now up
[   40.654924] 000: remoteproc remoteproc14: powering up b204000.rtu
[   40.665444] 000: remoteproc remoteproc14: Booting fw image ti-pruss/am65x-sr2-rtu0-prueth-fw.elf, size 28664
[   40.665469] 000: remoteproc remoteproc14: remote processor b204000.rtu is now up
[   40.665493] 000: remoteproc remoteproc15: powering up b20a000.txpru
[   40.666988] 000: remoteproc remoteproc15: Booting fw image ti-pruss/am65x-sr2-txpru0-prueth-fw.elf, size 31620
[   40.667017] 000: remoteproc remoteproc15: remote processor b20a000.txpru is now up
[   40.684474] 000: TI DP83867 b232400.mdio:02: attached PHY driver [TI DP83867] (mii_bus:phy_addr=b232400.mdio:02, irq=POLL)
[   40.684676] 000: net eth2: started
[   40.897287] 000: remoteproc remoteproc7: powering up b134000.pru
[   40.897469] 000: remoteproc remoteproc7: Booting fw image ti-pruss/am65x-sr2-pru0-prueth-fw.elf, size 35548
[   40.897635] 000: pru-rproc b134000.pru: configured system_events[159-0] = 00000000,00000000,00000000,00000000,01000000
[   40.897644] 000: pru-rproc b134000.pru: configured intr_channels = 0x00000001 host_intr = 0x00000004
[   40.897654] 000: remoteproc remoteproc7: remote processor b134000.pru is now up
[   40.897679] 000: remoteproc remoteproc8: powering up b104000.rtu
[   40.897796] 000: remoteproc remoteproc8: Booting fw image ti-pruss/am65x-sr2-rtu0-prueth-fw.elf, size 28664
[   40.897815] 000: remoteproc remoteproc8: remote processor b104000.rtu is now up
[   40.897830] 000: remoteproc remoteproc9: powering up b10a000.txpru
[   40.897922] 000: remoteproc remoteproc9: Booting fw image ti-pruss/am65x-sr2-txpru0-prueth-fw.elf, size 31620
[   40.897942] 000: remoteproc remoteproc9: remote processor b10a000.txpru is now up
[   40.922404] 000: TI DP83867 b132400.mdio:01: attached PHY driver [TI DP83867] (mii_bus:phy_addr=b132400.mdio:01, irq=POLL)
[   40.923638] 000: net eth1: started
[   43.980302] 000: icssg-prueth pruss1_eth eth1: Link is Up - 1Gbps/Full - flow control off
[   43.980369] 000: IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[   44.780281] 000: icssg-prueth pruss2_eth eth2: Link is Up - 1Gbps/Full - flow control off
[   44.780347] 000: IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready
[  129.833205] 000: Initializing XFRM netlink socket
[  132.165960] 000: bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[  132.185156] 000: Bridge firewalling registered
k3-am654-base-board_AX564.txt
// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2016-2018 Texas Instruments Incorporated - http://www.ti.com/
 */

/dts-v1/;

#include "k3-am654.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/net/ti-dp83867.h>

/ {
	compatible =  "ti,am654-evm", "ti,am654";
	model = "Texas Instruments AM654 Base Board";

	aliases {
		ethernet1 = &pruss1_emac0; //Ethernet port 0
		//ethernet2 = &pruss1_emac1; //EtherCAT port 1
		ethernet2 = &pruss2_emac0; //Ethernet port 1
	};

	chosen {
		stdout-path = "serial2:115200n8";
		bootargs = "earlycon=ns16550a,mmio32,0x02800000";
	};

	memory@80000000 {
		device_type = "memory";
#if 0
			/* 4G RAM */
			reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
				<0x00000008 0x80000000 0x00000000 0x80000000>;
#endif
			/* 1G RAM */
			reg = <0x00000000 0x80000000 0x00000000 0x40000000>;
        };

	reserved_memory: reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		secure_ddr: secure_ddr@9e800000 {
			reg = <0 0x9e800000 0 0x01800000>; /* for OP-TEE */
			alignment = <0x1000>;
			no-map;
		};

		mcu_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
			compatible = "shared-dma-pool";
			reg = <0 0xa0000000 0 0x100000>;
			no-map;
		};

		mcu_r5fss0_core0_memory_region: r5f-memory@a0100000 {
			compatible = "shared-dma-pool";
			reg = <0 0xa0100000 0 0xf00000>;
			no-map;
		};

		mcu_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 {
			compatible = "shared-dma-pool";
			reg = <0 0xa1000000 0 0x100000>;
			no-map;
		};

		mcu_r5fss0_core1_memory_region: r5f-memory@a1100000 {
			compatible = "shared-dma-pool";
			reg = <0 0xa1100000 0 0xf00000>;
			no-map;
		};

		rtos_ipc_memory_region: ipc-memories@a2000000 {
			reg = <0x00 0xa2000000 0x00 0x00200000>;
			alignment = <0x1000>;
			no-map;
		};
	};

	eeprom_gpio: eeprom_gpio {
		compatible = "eeprom-gpio";
		eeprom-gpio = <&wkup_gpio0 7 GPIO_ACTIVE_HIGH>;
	};

	clk_ov5640_fixed: fixed-clock-ov5640 {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <24000000>;
	};

	leds {
		pinctrl-names = "default";
		pinctrl-0 = <&ledgpio0_pins_default &ledgpio1_pins_default &ledgpio2_pins_default>;

		compatible = "gpio-leds";

		led1 {
			label = "LED-RUN";
			gpios = <&main_gpio0 27 GPIO_ACTIVE_LOW>;
		};

		led2 {
			label = "LED-ERR";
			gpios = <&main_gpio1 70 GPIO_ACTIVE_HIGH>;
		};

		led3 {
			label = "LED-BUS";
			gpios = <&main_gpio1 48 GPIO_ACTIVE_HIGH>;
		};

		led4 {
			label = "LED-232TX";
			gpios = <&main_gpio1 21 GPIO_ACTIVE_HIGH>;
		};

		led5 {
			label = "LED-232RX";
			gpios = <&main_gpio1 45 GPIO_ACTIVE_HIGH>;
		};

		led6 {
			label = "LED-485TX";
			gpios = <&main_gpio1 87 GPIO_ACTIVE_HIGH>;
		};

		led7 {
			label = "LED-485RX";
			gpios = <&main_gpio1 46 GPIO_ACTIVE_HIGH>;
		};

		led8 {
			label = "LED-SD";
			gpios = <&main_gpio1 47 GPIO_ACTIVE_HIGH>;
		};
	};

	//Eric+{
		/* Dual Ethernet application node on PRU-ICSSG1 */
	pruss1_eth: pruss1_eth {
		compatible = "ti,am654-icssg-prueth";
		pinctrl-names = "default";
		pinctrl-0 = <&ethernet0_pins_default>;
		sram = <&msmc_ram>;
		prus = <&pru1_0>, <&rtu1_0>, <&tx_pru1_0>,
				<&pru1_1>, <&rtu1_1>, <&tx_pru1_1>;
		firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf",
				"ti-pruss/am65x-sr2-rtu0-prueth-fw.elf",
				"ti-pruss/am65x-sr2-txpru0-prueth-fw.elf",
				"ti-pruss/am65x-sr2-pru1-prueth-fw.elf",
				"ti-pruss/am65x-sr2-rtu1-prueth-fw.elf",
				"ti-pruss/am65x-sr2-txpru1-prueth-fw.elf";

		ti,pruss-gp-mux-sel = <2>,      /* MII mode */
						<2>,
						<2>,
						<2>,      /* MII mode */
						<2>,
						<2>;
		mii-g-rt = <&icssg1_mii_g_rt>;
		mii-rt = <&icssg1_mii_rt>;
		dma-coherent;
		dmas = <&main_udmap 0xc200>, /* egress slice 0 */
			   <&main_udmap 0xc201>, /* egress slice 0 */
			   <&main_udmap 0xc202>, /* egress slice 0 */
			   <&main_udmap 0xc203>, /* egress slice 0 */
			   <&main_udmap 0xc204>, /* egress slice 1 */
			   <&main_udmap 0xc205>, /* egress slice 1 */
			   <&main_udmap 0xc206>, /* egress slice 1 */
			   <&main_udmap 0xc207>, /* egress slice 1 */

			   <&main_udmap 0x4200>, /* ingress slice 0 */
			   <&main_udmap 0x4201>, /* ingress slice 1 */
			   <&main_udmap 0x4202>, /* mgmnt rsp slice 0 */
			   <&main_udmap 0x4203>; /* mgmnt rsp slice 1 */
		dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3",
					"tx1-0", "tx1-1", "tx1-2", "tx1-3",
					"rx0", "rx1",
					"rxmgm0", "rxmgm1";

        pruss1_emac0: ethernet-mii0 {
                phy-handle = <&pruss1_eth0_phy>;
                phy-mode = "rgmii-rxid";
                interrupts-extended = <&icssg1_intc 24>;
                syscon-rgmii-delay = <&scm_conf 0x4110>;
                iep = <&icssg1_iep0>;
                /* Filled in by bootloader */
                local-mac-address = [00 00 00 00 00 00];
        };
#if 0
        pruss1_emac1: ethernet-mii1 {
                phy-handle = <&pruss1_eth1_phy>;
                phy-mode = "rgmii-rxid";
                interrupts-extended = <&icssg1_intc 25>;
                syscon-rgmii-delay = <&scm_conf 0x4114>;
                /* Filled in by bootloader */
                local-mac-address = [00 00 00 00 00 00];
        };
#endif
	};
	//Eric+}

	/* Single Ethernet application node on PRU-ICSSG2 */ 
	pruss2_eth: pruss2_eth {
		compatible = "ti,am654-icssg-prueth";
		pinctrl-names = "default";
		pinctrl-0 = <&ethernet1_pins_default>;
		sram = <&msmc_ram>;
		prus = <&pru2_0>, <&rtu2_0>, <&tx_pru2_0>,
			<&pru2_1>, <&rtu2_1>, <&tx_pru2_1>;
		firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf",
				"ti-pruss/am65x-sr2-rtu0-prueth-fw.elf",
				"ti-pruss/am65x-sr2-txpru0-prueth-fw.elf",
				"ti-pruss/am65x-sr2-pru1-prueth-fw.elf",
				"ti-pruss/am65x-sr2-rtu1-prueth-fw.elf",
				"ti-pruss/am65x-sr2-txpru1-prueth-fw.elf";

		ti,pruss-gp-mux-sel = <2>,      /* MII mode */
				      <2>,
				      <2>,
				      <2>,	/* MII mode */
				      <2>,
				      <2>;
		mii-g-rt = <&icssg2_mii_g_rt>;
		mii-rt = <&icssg2_mii_rt>;
		dma-coherent;
		dmas = <&main_udmap 0xc300>, /* egress slice 0 */
		       <&main_udmap 0xc301>, /* egress slice 0 */
		       <&main_udmap 0xc302>, /* egress slice 0 */
		       <&main_udmap 0xc303>, /* egress slice 0 */
		       <&main_udmap 0xc304>, /* egress slice 1 */
		       <&main_udmap 0xc305>, /* egress slice 1 */
		       <&main_udmap 0xc306>, /* egress slice 1 */
		       <&main_udmap 0xc307>, /* egress slice 1 */

		       <&main_udmap 0x4300>, /* ingress slice 0 */
		       <&main_udmap 0x4301>, /* ingress slice 1 */
		       <&main_udmap 0x4302>, /* mgmnt rsp slice 0 */
		       <&main_udmap 0x4303>; /* mgmnt rsp slice 1 */
		dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3",
			    "tx1-0", "tx1-1", "tx1-2", "tx1-3",
			    "rx0", "rx1",
			    "rxmgm0", "rxmgm1";

		pruss2_emac0: ethernet-mii0 {
			phy-handle = <&pruss2_eth0_phy>;
			phy-mode = "rgmii-rxid";
			interrupts-extended = <&icssg2_intc 24>;
			syscon-rgmii-delay = <&scm_conf 0x4120>;
			iep = <&icssg2_iep0>;
			/* Filled in by bootloader */
			local-mac-address = [00 00 00 00 00 00];
		};
	};
};

&wkup_pmx0 {
	pinctrl-names = "default";
	pinctrl-0 = <&eepromgpio_pins_default &iovolctrl_pins_default &i2c0switch_pins_default>;

	phy2ax58100_pins_default: phy2ax58100_pins_default {
		pinctrl-single,pins = <
			AM65X_WKUP_IOPAD(0x0058, PIN_INPUT, 1) /* (N4) MCU_RGMII1_TX_CTL.MCU_RMII1_CRS_DV */
			AM65X_WKUP_IOPAD(0x005c, PIN_INPUT, 1) /* (N5) MCU_RGMII1_RX_CTL.MCU_RMII1_RX_ER */
			AM65X_WKUP_IOPAD(0x0068, PIN_OUTPUT, 1) /* (M4) MCU_RGMII1_TD1.MCU_RMII1_TXD1 */
			AM65X_WKUP_IOPAD(0x006c, PIN_OUTPUT, 1) /* (M5) MCU_RGMII1_TD0.MCU_RMII1_TXD0 */
			AM65X_WKUP_IOPAD(0x0080, PIN_INPUT, 1) /* (M6) MCU_RGMII1_RD1.MCU_RMII1_RXD1 */
			AM65X_WKUP_IOPAD(0x0084, PIN_INPUT, 1) /* (L6) MCU_RGMII1_RD0.MCU_RMII1_RXD0 */
			AM65X_WKUP_IOPAD(0x0070, PIN_OUTPUT, 1) /* (N1) MCU_RGMII1_TXC.MCU_RMII1_TX_EN */
			AM65X_WKUP_IOPAD(0x0074, PIN_INPUT, 1) /* (M1) MCU_RGMII1_RXC.MCU_RMII1_REF_CLK */
		>;
	};

	mcan0_pins_default: mcan0_pins_default {
		pinctrl-single,pins = <
			AM65X_WKUP_IOPAD(0x00ac, PIN_INPUT, 0) /* (W2) MCU_MCAN0_RX */
			AM65X_WKUP_IOPAD(0x00a8, PIN_OUTPUT, 0) /* (W1) MCU_MCAN0_TX */
		>;
	};

	phy2ax58100_mdio2_pins_default: phy2ax58100_mdio2_pins_default {
		pinctrl-single,pins = <
			AM65X_WKUP_IOPAD(0x008c, PIN_OUTPUT, 0) /* (L1) MCU_MDIO0_MDC */
			AM65X_WKUP_IOPAD(0x0088, PIN_INPUT, 0) /* (L4) MCU_MDIO0_MDIO */
		>;
	};

	eepromgpio_pins_default: eepromgpio_pins_default {
		pinctrl-single,pins = <
			AM65X_WKUP_IOPAD(0x00cc, PIN_INPUT, 7) /* (AC1) WKUP_GPIO0_7 */
		>;
	};

	iovolctrl_pins_default: iovolctrl_pins_default {
		pinctrl-single,pins = <
			AM65X_WKUP_IOPAD(0x00c8, PIN_OUTPUT, 7) /* (AC2) WKUP_GPIO0_6 */
		>;
	};

	i2c0switch_pins_default: i2c0switch_pins_default {
		pinctrl-single,pins = <
			AM65X_WKUP_IOPAD(0x00D8, PIN_OUTPUT, 7) /* (AB3) WKUP_GPIO0_10 */
		>;
	};
};

&main_pmx0 {
	pinctrl-names = "default";
	pinctrl-0 = <&gpio0_pins_default &gpio1_pins_default &mygpmc3_pins_default>;

	gpio1_pins_default: gpio1_pins_default {
		pinctrl-single,pins = <
			//AM65X_IOPAD(0x01d4, PIN_OUTPUT, 7) /* (AG12) SPI1_CS1.GPIO1_21 */	/* RS232-TX-LED */
			AM65X_IOPAD(0x01ec, PIN_OUTPUT, 7) /* (AG11) UART0_CTSn.GPIO1_27 */
			AM65X_IOPAD(0x01f0, PIN_INPUT, 7) /* (AD11) UART0_RTSn.GPIO1_28 */
			AM65X_IOPAD(0x01f4, PIN_INPUT, 1) /* (V24) PRG0_PRU0_GPO0.GPIO1_29 */
			AM65X_IOPAD(0x01f8, PIN_INPUT, 1) /* (W25) PRG0_PRU0_GPO1.GPIO1_30 */
			AM65X_IOPAD(0x01fc, PIN_INPUT, 1) /* (W24) PRG0_PRU0_GPO2.GPIO1_31 */
			AM65X_IOPAD(0x0200, PIN_INPUT, 1) /* (AA27) PRG0_PRU0_GPO3.GPIO1_32 */
			AM65X_IOPAD(0x0204, PIN_INPUT, 1) /* (Y24) PRG0_PRU0_GPO4.GPIO1_33 */
			AM65X_IOPAD(0x0208, PIN_INPUT, 1) /* (V28) PRG0_PRU0_GPO5.GPIO1_34 */
			AM65X_IOPAD(0x020c, PIN_INPUT, 1) /* (Y25) PRG0_PRU0_GPO6.GPIO1_35 */
			AM65X_IOPAD(0x0210, PIN_INPUT, 1) /* (U27) PRG0_PRU0_GPO7.GPIO1_36 */
			AM65X_IOPAD(0x0214, PIN_INPUT, 7) /* (V27) PRG0_PRU0_GPO8.GPIO1_37 */
			AM65X_IOPAD(0x0218, PIN_INPUT, 7) /* (V26) PRG0_PRU0_GPO9.GPIO1_38 */
			AM65X_IOPAD(0x021c, PIN_INPUT, 7) /* (U25) PRG0_PRU0_GPO10.GPIO1_39 */
			AM65X_IOPAD(0x0220, PIN_INPUT, 7) /* (AB25) PRG0_PRU0_GPO11.GPIO1_40 */
			AM65X_IOPAD(0x0224, PIN_INPUT, 7) /* (AD27) PRG0_PRU0_GPO12.GPIO1_41 */
			AM65X_IOPAD(0x0228, PIN_INPUT, 7) /* (AC26) PRG0_PRU0_GPO13.GPIO1_42 */
			AM65X_IOPAD(0x022c, PIN_INPUT, 7) /* (AD26) PRG0_PRU0_GPO14.GPIO1_43 */
			AM65X_IOPAD(0x0230, PIN_INPUT, 7) /* (AA24) PRG0_PRU0_GPO15.GPIO1_44 */
			//AM65X_IOPAD(0x0234, PIN_OUTPUT, 7) /* (AD28) PRG0_PRU0_GPO16.GPIO1_45 */ /* RS232-RX-LED */
			//AM65X_IOPAD(0x0238, PIN_OUTPUT, 7) /* (U26) PRG0_PRU0_GPO17.GPIO1_46 */	/* RS485-RX-LED */
			//AM65X_IOPAD(0x023c, PIN_OUTPUT, 7) /* (V25) PRG0_PRU0_GPO18.GPIO1_47 */	/* SD-CARD-READY-LED */
			//AM65X_IOPAD(0x0240, PIN_OUTPUT, 7) /* (U24) PRG0_PRU0_GPO19.GPIO1_48 */	/* BUSFAULT-LED */
			AM65X_IOPAD(0x0244, PIN_OUTPUT, 0) /* (AB28) PRG0_PRU1_GPO0.GPIO1_49 */
			AM65X_IOPAD(0x0248, PIN_OUTPUT, 0) /* (AC28) PRG0_PRU1_GPO1.GPIO1_50 */
			AM65X_IOPAD(0x024c, PIN_OUTPUT, 0) /* (AC27) PRG0_PRU1_GPO2.GPIO1_51 */
			AM65X_IOPAD(0x0250, PIN_OUTPUT, 0) /* (AB26) PRG0_PRU1_GPO3.GPIO1_52 */
			AM65X_IOPAD(0x0284, PIN_INPUT, 7) /* (AC24) PRG0_PRU1_GPO16.GPIO1_65 */
			AM65X_IOPAD(0x028c, PIN_INPUT, 7) /* (Y26) PRG0_PRU1_GPO18.GPIO1_67 */
			AM65X_IOPAD(0x0290, PIN_INPUT, 7) /* (W26) PRG0_PRU1_GPO19.GPIO1_68 */
			AM65X_IOPAD(0x0294, PIN_INPUT, 7) /* (AE26) PRG0_MDIO0_MDIO.GPIO1_69 */
			//AM65X_IOPAD(0x0298, PIN_OUTPUT, 7) /* (AE28) PRG0_MDIO0_MDC.GPIO1_70 */	/* ERROR-LED */
                        AM65X_IOPAD(0x01d0, PIN_OUTPUT_PULLDOWN, 7) /* (AD12) SPI1_CS0.GPIO1_20 */
		>;
	};

	ledgpio1_pins_default: ledgpio1_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x01d4, PIN_OUTPUT, 7) /* (AG12) GPIO1_21 */	/* RS232-TX-LED */
			AM65X_IOPAD(0x0234, PIN_OUTPUT, 7) /* (AD28) GPIO1_45 */ /* RS232-RX-LED */
			AM65X_IOPAD(0x0238, PIN_OUTPUT, 7) /* (U26) GPIO1_46 */	/* RS485-RX-LED */
			AM65X_IOPAD(0x023c, PIN_OUTPUT, 7) /* (V25) GPIO1_47 */	/* SD-CARD-READY-LED */
			AM65X_IOPAD(0x0240, PIN_OUTPUT, 7) /* (U24) GPIO1_48 */	/* BUSFAULT-LED */
			AM65X_IOPAD(0x0298, PIN_OUTPUT, 7) /* (AE28) GPIO1_70 */	/* ERROR-LED */
		>;
	};

	gpio0_pins_default: gpio0_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x0040, PIN_OUTPUT, 7) /* (R28) GPMC0_CLK.GPIO0_16 */ /*ETH1-PHY-RESET*/
			AM65X_IOPAD(0x0058, PIN_INPUT, 7) /* (R26) GPMC0_WAIT0.GPIO0_22 */
			AM65X_IOPAD(0x0060, PIN_OUTPUT, 7) /* (T25) GPMC0_WPn.GPIO0_24 */
			AM65X_IOPAD(0x0064, PIN_OUTPUT, 7) /* (T24) GPMC0_DIR.GPIO0_25 */
			AM65X_IOPAD(0x0068, PIN_INPUT, 7) /* (R24) GPMC0_CSn0.GPIO0_26 */
			//AM65X_IOPAD(0x006c, PIN_OUTPUT | PIN_INPUT, 7) /* (T23) GPMC0_CSn1.GPIO0_27 */ /* RUN-LED */
			AM65X_IOPAD(0x0070, PIN_INPUT, 7) /* (R25) GPMC0_CSn2.GPIO0_28 */
			AM65X_IOPAD(0x0074, PIN_INPUT, 7) /* (T27) GPMC0_CSn3.GPIO0_29 */
			AM65X_IOPAD(0x00ac, PIN_INPUT, 1) /* (AH15) PRG2_PRU1_GPO0.GPIO0_43 */
			AM65X_IOPAD(0x00b0, PIN_INPUT, 1) /* (AC16) PRG2_PRU1_GPO1.GPIO0_44 */
			AM65X_IOPAD(0x00b4, PIN_INPUT, 1) /* (AD17) PRG2_PRU1_GPO2.GPIO0_45 */
			AM65X_IOPAD(0x00b8, PIN_INPUT, 1) /* (AH14) PRG2_PRU1_GPO3.GPIO0_46 */
			AM65X_IOPAD(0x0108, PIN_OUTPUT, 7) /* (AH25) PRG1_PRU0_GPO10.GPIO0_66 */ /*ETH0-PHY-RESET*/
			AM65X_IOPAD(0x0124, PIN_OUTPUT, 7) /* (AH26) PRG1_PRU0_GPO17.GPIO0_73 */ /*ECAT2-PHY-RST*/
		>;
	};

	ledgpio0_pins_default: ledgpio0_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x006c, PIN_OUTPUT | PIN_INPUT, 7) /* (T23) GPIO0_27 */ /* RUN-LED */
		>;
	};

	mygpmc3_pins_default: mygpmc3_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x00bc, PIN_OUTPUT, 3) /* (AG14) PRG2_PRU1_GPO4.GPMC0_A8 */
			AM65X_IOPAD(0x00c0, PIN_OUTPUT, 3) /* (AG15) PRG2_PRU1_GPO5.GPMC0_A7 */
			AM65X_IOPAD(0x00c4, PIN_OUTPUT, 3) /* (AC17) PRG2_PRU1_GPO6.GPMC0_A6 */
			AM65X_IOPAD(0x00cc, PIN_OUTPUT, 3) /* (AD15) PRG2_PRU1_GPO8.GPMC0_A4 */
			AM65X_IOPAD(0x00d0, PIN_OUTPUT, 3) /* (AF14) PRG2_PRU1_GPO9.GPMC0_A3 */
			AM65X_IOPAD(0x00d4, PIN_OUTPUT, 3) /* (AC15) PRG2_PRU1_GPO10.GPMC0_A2 */
			AM65X_IOPAD(0x00d8, PIN_OUTPUT, 3) /* (AD14) PRG2_PRU1_GPO11.GPMC0_A1 */
			AM65X_IOPAD(0x003c, PIN_INPUT, 0) /* (R27) GPMC0_AD15 */
			AM65X_IOPAD(0x0038, PIN_INPUT, 0) /* (P24) GPMC0_AD14 */
			AM65X_IOPAD(0x0034, PIN_INPUT, 0) /* (N25) GPMC0_AD13 */
			AM65X_IOPAD(0x0030, PIN_INPUT, 0) /* (N26) GPMC0_AD12 */
			AM65X_IOPAD(0x002c, PIN_INPUT, 0) /* (P27) GPMC0_AD11 */
			AM65X_IOPAD(0x0028, PIN_INPUT, 0) /* (P28) GPMC0_AD10 */
			AM65X_IOPAD(0x0024, PIN_INPUT, 0) /* (M26) GPMC0_AD9 */
			AM65X_IOPAD(0x0020, PIN_INPUT, 0) /* (N23) GPMC0_AD8 */
			AM65X_IOPAD(0x001c, PIN_INPUT, 0) /* (M25) GPMC0_AD7 */
			AM65X_IOPAD(0x0018, PIN_INPUT, 0) /* (N28) GPMC0_AD6 */
			AM65X_IOPAD(0x0014, PIN_INPUT, 0) /* (N27) GPMC0_AD5 */
			AM65X_IOPAD(0x0010, PIN_INPUT, 0) /* (N24) GPMC0_AD4 */
			AM65X_IOPAD(0x000c, PIN_INPUT, 0) /* (M24) GPMC0_AD3 */
			AM65X_IOPAD(0x0008, PIN_INPUT, 0) /* (M28) GPMC0_AD2 */
			AM65X_IOPAD(0x0004, PIN_INPUT, 0) /* (M23) GPMC0_AD1 */
			AM65X_IOPAD(0x0000, PIN_INPUT, 0) /* (M27) GPMC0_AD0 */
			AM65X_IOPAD(0x0054, PIN_OUTPUT, 0) /* (P23) GPMC0_BE1n */
			AM65X_IOPAD(0x0048, PIN_OUTPUT, 0) /* (P26) GPMC0_OEn_REn */
			AM65X_IOPAD(0x004c, PIN_OUTPUT, 0) /* (U28) GPMC0_WEn */
		>;
	};

	main_mmc0_pins_default: main-mmc0-pins-default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x01a8, PIN_INPUT_PULLDOWN, 0) /* (B25) MMC0_CLK */
			AM65X_IOPAD(0x01ac, PIN_INPUT_PULLUP, 0) /* (B27) MMC0_CMD */
			AM65X_IOPAD(0x01a4, PIN_INPUT_PULLUP, 0) /* (A26) MMC0_DAT0 */
			AM65X_IOPAD(0x01a0, PIN_INPUT_PULLUP, 0) /* (E25) MMC0_DAT1 */
			AM65X_IOPAD(0x019c, PIN_INPUT_PULLUP, 0) /* (C26) MMC0_DAT2 */
			AM65X_IOPAD(0x0198, PIN_INPUT_PULLUP, 0) /* (A25) MMC0_DAT3 */
			AM65X_IOPAD(0x0194, PIN_INPUT_PULLUP, 0) /* (E24) MMC0_DAT4 */
			AM65X_IOPAD(0x0190, PIN_INPUT_PULLUP, 0) /* (A24) MMC0_DAT5 */
			AM65X_IOPAD(0x018c, PIN_INPUT_PULLUP, 0) /* (B26) MMC0_DAT6 */
			AM65X_IOPAD(0x0188, PIN_INPUT_PULLUP, 0) /* (D25) MMC0_DAT7 */
			AM65X_IOPAD(0x01b0, PIN_INPUT, 0) /* (C25) MMC0_DS */
		>;
	};

	main_mmc1_pins_default: main-mmc1-pins-default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x02d4, PIN_INPUT_PULLDOWN, 0) /* (C27) MMC1_CLK */
			AM65X_IOPAD(0x02d8, PIN_INPUT_PULLUP, 0) /* (C28) MMC1_CMD */
			AM65X_IOPAD(0x02d0, PIN_INPUT_PULLUP, 0) /* (D28) MMC1_DAT0 */
			AM65X_IOPAD(0x02cc, PIN_INPUT_PULLUP, 0) /* (E27) MMC1_DAT1 */
			AM65X_IOPAD(0x02c8, PIN_INPUT_PULLUP, 0) /* (D26) MMC1_DAT2 */
			AM65X_IOPAD(0x02c4, PIN_INPUT_PULLUP, 0) /* (D27) MMC1_DAT3 */
			AM65X_IOPAD(0x02dc, PIN_INPUT_PULLUP, 0) /* (B24) MMC1_SDCD */
			AM65X_IOPAD(0x02e0, PIN_INPUT, 0) /* (C24) MMC1_SDWP */
		>;
	};

	icssg1_mdio_pins_default: icssg1_mdio_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x0180, PIN_INPUT, 0) /* (AD18) PRG1_MDIO0_MDIO */
			AM65X_IOPAD(0x0184, PIN_OUTPUT, 0) /* (AH18) PRG1_MDIO0_MDC */
		>;
	};

	ethernet0_pins_default: ethernet0_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x00e0, PIN_INPUT, 2) /* (AE22) PRG1_PRU0_GPO0.PRG1_RGMII1_RD0 */
			AM65X_IOPAD(0x00e4, PIN_INPUT, 2) /* (AG24) PRG1_PRU0_GPO1.PRG1_RGMII1_RD1 */
			AM65X_IOPAD(0x00e8, PIN_INPUT, 2) /* (AF23) PRG1_PRU0_GPO2.PRG1_RGMII1_RD2 */
			AM65X_IOPAD(0x00ec, PIN_INPUT, 2) /* (AD21) PRG1_PRU0_GPO3.PRG1_RGMII1_RD3 */
			AM65X_IOPAD(0x0110, PIN_OUTPUT, 2) /* (AH20) PRG1_PRU0_GPO12.PRG1_RGMII1_TD0 */
			AM65X_IOPAD(0x0114, PIN_OUTPUT, 2) /* (AH21) PRG1_PRU0_GPO13.PRG1_RGMII1_TD1 */
			AM65X_IOPAD(0x0118, PIN_OUTPUT, 2) /* (AG20) PRG1_PRU0_GPO14.PRG1_RGMII1_TD2 */
			AM65X_IOPAD(0x011c, PIN_OUTPUT, 2) /* (AD19) PRG1_PRU0_GPO15.PRG1_RGMII1_TD3 */
			AM65X_IOPAD(0x0120, PIN_INPUT, 2) /* (AD20) PRG1_PRU0_GPO16.PRG1_RGMII1_TXC */
			AM65X_IOPAD(0x010c, PIN_OUTPUT, 2) /* (AF21) PRG1_PRU0_GPO11.PRG1_RGMII1_TX_CTL */
			AM65X_IOPAD(0x00f8, PIN_INPUT, 2) /* (AF22) PRG1_PRU0_GPO6.PRG1_RGMII1_RXC */
			AM65X_IOPAD(0x00f0, PIN_INPUT, 2) /* (AG23) PRG1_PRU0_GPO4.PRG1_RGMII1_RX_CTL */

			//ethercat1_pins_default
			AM65X_IOPAD(0x0130, PIN_INPUT, 2) /* (AH24) PRG1_PRU1_GPO0.PRG1_RGMII2_RD0 */
			AM65X_IOPAD(0x0134, PIN_INPUT, 2) /* (AH23) PRG1_PRU1_GPO1.PRG1_RGMII2_RD1 */
			AM65X_IOPAD(0x0138, PIN_INPUT, 2) /* (AG21) PRG1_PRU1_GPO2.PRG1_RGMII2_RD2 */
			AM65X_IOPAD(0x013c, PIN_INPUT, 2) /* (AH22) PRG1_PRU1_GPO3.PRG1_RGMII2_RD3 */
			AM65X_IOPAD(0x0160, PIN_OUTPUT, 2) /* (AE20) PRG1_PRU1_GPO12.PRG1_RGMII2_TD0 */
			AM65X_IOPAD(0x0164, PIN_OUTPUT, 2) /* (AF19) PRG1_PRU1_GPO13.PRG1_RGMII2_TD1 */
			AM65X_IOPAD(0x0168, PIN_OUTPUT, 2) /* (AH19) PRG1_PRU1_GPO14.PRG1_RGMII2_TD2 */
			AM65X_IOPAD(0x016c, PIN_OUTPUT, 2) /* (AG19) PRG1_PRU1_GPO15.PRG1_RGMII2_TD3 */
			AM65X_IOPAD(0x0170, PIN_INPUT, 2) /* (AE19) PRG1_PRU1_GPO16.PRG1_RGMII2_TXC */
			AM65X_IOPAD(0x015c, PIN_OUTPUT, 2) /* (AC20) PRG1_PRU1_GPO11.PRG1_RGMII2_TX_CTL */
			AM65X_IOPAD(0x0148, PIN_INPUT, 2) /* (AG22) PRG1_PRU1_GPO6.PRG1_RGMII2_RXC */
			AM65X_IOPAD(0x0140, PIN_INPUT, 2) /* (AE21) PRG1_PRU1_GPO4.PRG1_RGMII2_RX_CTL */
		>;
	};

	icssg2_mdio_pins_default: icssg2_mdio_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x0094, PIN_INPUT, 2) /* (AC19) PRG2_PRU0_GPO7.PRG2_MDIO0_MDIO */
			AM65X_IOPAD(0x00c8, PIN_OUTPUT, 2) /* (AE15) PRG2_PRU1_GPO7.PRG2_MDIO0_MDC */
		>;
	};

	ethernet1_pins_default: ethernet1_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x0078, PIN_INPUT, 2) /* (AF18) PRG2_PRU0_GPO0.PRG2_RGMII1_RD0 */
			AM65X_IOPAD(0x007c, PIN_INPUT, 2) /* (AE18) PRG2_PRU0_GPO1.PRG2_RGMII1_RD1 */
			AM65X_IOPAD(0x0080, PIN_INPUT, 2) /* (AH17) PRG2_PRU0_GPO2.PRG2_RGMII1_RD2 */
			AM65X_IOPAD(0x0084, PIN_INPUT, 2) /* (AG18) PRG2_PRU0_GPO3.PRG2_RGMII1_RD3 */
			AM65X_IOPAD(0x0098, PIN_OUTPUT, 2) /* (AH16) PRG2_PRU0_GPO8.PRG2_RGMII1_TD0 */
			AM65X_IOPAD(0x009c, PIN_OUTPUT, 2) /* (AG16) PRG2_PRU0_GPO9.PRG2_RGMII1_TD1 */
			AM65X_IOPAD(0x00a0, PIN_OUTPUT, 2) /* (AF16) PRG2_PRU0_GPO10.PRG2_RGMII1_TD2 */
			AM65X_IOPAD(0x00a4, PIN_OUTPUT, 2) /* (AE16) PRG2_PRU0_GPO11.PRG2_RGMII1_TD3 */
			AM65X_IOPAD(0x00a8, PIN_INPUT, 2) /* (AD16) PRG2_PRU0_GPO16.PRG2_RGMII1_TXC */
			AM65X_IOPAD(0x0090, PIN_OUTPUT, 2) /* (AE17) PRG2_PRU0_GPO6.PRG2_RGMII1_TX_CTL */
			AM65X_IOPAD(0x008c, PIN_INPUT, 2) /* (AF17) PRG2_PRU0_GPO5.PRG2_RGMII1_RXC */
			AM65X_IOPAD(0x0088, PIN_INPUT, 2) /* (AG17) PRG2_PRU0_GPO4.PRG2_RGMII1_RX_CTL */
		>;
	};

	main_spi0_pins_default: main-spi0-pins-default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x01c4, PIN_INPUT, 0) /* (AH13) SPI0_CLK */
			AM65X_IOPAD(0x01c8, PIN_INPUT, 0) /* (AE13) SPI0_D0 */
			AM65X_IOPAD(0x01cc, PIN_INPUT, 0) /* (AD13) SPI0_D1 */
			AM65X_IOPAD(0x01bc, PIN_OUTPUT, 0) /* (AG13) SPI0_CS0 */
			AM65X_IOPAD(0x01c0, PIN_OUTPUT, 0) /* (AF13) SPI0_CS1 */
		>;
	};

	myspi2_pins_default: myspi2_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x01d8, PIN_INPUT, 0) /* (AH12) SPI1_CLK */
			AM65X_IOPAD(0x01dc, PIN_INPUT, 0) /* (AE12) SPI1_D0 */
			AM65X_IOPAD(0x01e0, PIN_INPUT, 0) /* (AF12) SPI1_D1 */
			//AM65X_IOPAD(0x01d0, PIN_OUTPUT, 0) /* (AD12) SPI1_CS0 */
		>;
	};

	main_uart0_pins_default: main-uart0-pins-default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x01e4, PIN_INPUT, 0) /* (AF11) GPIO1_25 UART0_RXD */
			AM65X_IOPAD(0x01e8, PIN_OUTPUT, 0) /* (AE11) GPIO1_26 UART0_TXD */
		>;
	};

	rs232_pins_default: rs232_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x0288, PIN_INPUT, 6) /* (Y27) GPIO1_66 RS232-RXD */
			AM65X_IOPAD(0x0260, PIN_OUTPUT, 6) /* (W28) GPIO1_56 RS232-TXD */
		>;
	};

	rs485_pins_default: rs485_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x0174, PIN_INPUT, 6) /* (AE23) GPIO0_93 RS485-RXD */
			AM65X_IOPAD(0x014c, PIN_OUTPUT, 6) /* (AD23) GPIO0_83 RS485-TXD */
			AM65X_IOPAD(0x017c, PIN_OUTPUT_PULLDOWN, 7) /* (AC21) GPIO0_95 RS485-DIR */
		>;
	};

	usb0_pins_default: usb0_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x02bc, PIN_OUTPUT, 0) /* (AD9) USB0_DRVVBUS */
		>;
	};

	usb20_host_pins_default: usb20_host_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x02c0, PIN_OUTPUT, 0) /* (AC8) USB1_DRVVBUS */
		>;
	};
};

&main_pmx1 {
	pinctrl-names = "default";
        pinctrl-0 = <&gpio2_pins_default>;

	main_i2c0_pins_default: main-i2c0-pins-default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x0000, PIN_INPUT, 0) /* (D20) I2C0_SCL */
			AM65X_IOPAD(0x0004, PIN_INPUT, 0) /* (C21) I2C0_SDA */
		>;
	};

	main_i2c1_pins_default: main-i2c1-pins-default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x0008, PIN_INPUT, 0) /* (B21) I2C1_SCL */
			AM65X_IOPAD(0x000c, PIN_INPUT, 0) /* (E21) I2C1_SDA */
		>;
	};

	gpio2_pins_default: gpio2_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x0010, PIN_INPUT, 7) /* (D21) ECAP0_IN_APWM_OUT.GPIO1_86 */
			//AM65X_IOPAD(0x0014, PIN_OUTPUT, 7) /* (A22) EXT_REFCLK1.GPIO1_87 */	/* RS485-TX-LED */
			AM65X_IOPAD(0x0018, PIN_INPUT, 7) /* (B22) TIMER_IO0.GPIO1_88 */
			AM65X_IOPAD(0x001c, PIN_INPUT, 7) /* (C23) TIMER_IO1.GPIO1_89 */
		>;
	};

	ledgpio2_pins_default: ledgpio2_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x0014, PIN_OUTPUT, 7) /* (A22) GPIO1_87 */	/* RS485-TX-LED */
		>;
	};
};

&wkup_uart0 {
	/* Wakeup UART is used by System firmware */
	status = "disabled";
};

&main_uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_uart0_pins_default>;
	power-domains = <&k3_pds 146 TI_SCI_PD_SHARED>;
};

//Eric+{
&main_uart2 {
	pinctrl-names = "default";
	power-domains = <&k3_pds 148 TI_SCI_PD_SHARED>;
	pinctrl-0 = <&rs232_pins_default>;
	status = "okay";
};

&main_uart1 {
	pinctrl-names = "default";
	pinctrl-0 = <&rs485_pins_default>;
	power-domains = <&k3_pds 147 TI_SCI_PD_SHARED>;
	rts-gpios = <&main_gpio0 95 GPIO_ACTIVE_HIGH>;
	rs485-rts-active-high;
	rs485-rts-delay = <0 0>;
	linux,rs485-enabled-at-boot-time;
	status = "okay";
};
//Eric+}

&main_i2c0 {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&main_i2c0_pins_default>;
	clock-frequency = <100000>;

#if 0
	rx8130:rtc@32{
		compatible = "epson,rx8130-legacy";
		reg = <0x32>;
	};
#endif

	eeprom: eeprom@50 {
		compatible = "atmel,24c16";
		reg = <0x50>;
		pagesize = <16>;
	};
};

&main_i2c1 {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&main_i2c1_pins_default>;
	clock-frequency = <100000>;

	s35390a:rtc@30{
		compatible = "sii,s35390a";
		reg = <0x30>;
	};
};

&main_spi0 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_spi0_pins_default>;
	#address-cells = <1>;
	#size-cells= <0>;
	ti,pindir-d0-out-d1-in = <1>;

	flash@0{
		compatible = "jedec,spi-nor";
		reg = <0x0>;
		spi-tx-bus-width = <1>;
		spi-rx-bus-width = <1>;
		spi-max-frequency = <48000000>;
		#address-cells = <1>;
		#size-cells= <1>;
	};
};

&main_spi1 {
    status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&myspi2_pins_default>;
	#address-cells = <1>;
	#size-cells= <0>;
	ti,pindir-d0-out-d1-in = <1>;

    spidev@0 {
        status = "okay";
        //compatible = "fairchild,74hc595";
        compatible = "linux,spidev";
        gpio-controller;
        #gpio-cells = <2>;
        reg = <0>;
        registers-number = <2>;
        registers-default = /bits/ 8 <0xb7>;
        spi-max-frequency = <100000>;
    };
};

&sdhci0 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_mmc0_pins_default>;
	bus-width = <8>;
	non-removable;
	ti,driver-strength-ohm = <50>;
	disable-wp;
};

&sdhci1 {
	pinctrl-names = "default";
	pinctrl-0 = <&main_mmc1_pins_default>;
	ti,driver-strength-ohm = <50>;
	disable-wp;
};

&dwc3_1 {
	status = "okay";
};

&usb1_phy {
	status = "okay";
};

&usb1 {
	pinctrl-names = "default";
	pinctrl-0 = <&usb20_host_pins_default>;
	dr_mode = "host";
};

&dwc3_0 {
	status = "okay";
};

&usb0_phy {
	status = "okay";
};

//Eric+{

&m_can0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&mcan0_pins_default>;
	//stb-gpios = <&main_gpio1 47 GPIO_ACTIVE_HIGH>;
	can-transceiver {
		max-bitrate = <5000000>;
	};
};

&usb0 {
	pinctrl-names = "default";
	//pinctrl-0 = <&usb0_pins_default>;
	dr_mode = "peripheral";
};
//Eric+}

&tscadc0 {
	adc {
		ti,adc-channels = <0 1 2 3 4 5 6 7>;
	};
};

&tscadc1 {
	adc {
		ti,adc-channels = <0 1 2 3 4 5 6 7>;
	};
};

&serdes0 {
	status = "disabled";
};

&serdes1 {
	status = "disabled";
};

&pcie0_rc {
	status = "disabled";
};

&pcie0_ep {
	status = "disabled";
};

&pcie1_rc {
	status = "disabled";
};

&pcie1_ep {
	status = "disabled";
};

&mailbox0_cluster0 {
	interrupts = <436>;

	mbox_mcu_r5fss0_core0: mbox-mcu-r5fss0-core0 {
		ti,mbox-tx = <1 0 0>;
		ti,mbox-rx = <0 0 0>;
	};
};

&mailbox0_cluster1 {
	interrupts = <432>;

	mbox_mcu_r5fss0_core1: mbox-mcu-r5fss0-core1 {
		ti,mbox-tx = <1 0 0>;
		ti,mbox-rx = <0 0 0>;
	};
};

&mailbox0_cluster2 {
	status = "disabled";
};

&mailbox0_cluster3 {
	status = "disabled";
};

&mailbox0_cluster4 {
	status = "disabled";
};

&mailbox0_cluster5 {
	status = "disabled";
};

&mailbox0_cluster6 {
	status = "disabled";
};

&mailbox0_cluster7 {
	status = "disabled";
};

&mailbox0_cluster8 {
	status = "disabled";
};

&mailbox0_cluster9 {
	status = "disabled";
};

&mailbox0_cluster10 {
	status = "disabled";
};

&mailbox0_cluster11 {
	status = "disabled";
};

&mcu_r5fss0_core0 {
	memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
			<&mcu_r5fss0_core0_memory_region>;
	mboxes = <&mailbox0_cluster0 &mbox_mcu_r5fss0_core0>;
};

&mcu_r5fss0_core1 {
	memory-region = <&mcu_r5fss0_core1_dma_memory_region>,
			<&mcu_r5fss0_core1_memory_region>;
	mboxes = <&mailbox0_cluster1 &mbox_mcu_r5fss0_core1>;
};

&mcu_cpsw {
	pinctrl-names = "default";
	//Eric- pinctrl-0 = <&mcu_cpsw_pins_default &mcu_mdio_pins_default>;
	pinctrl-0 = <&phy2ax58100_pins_default &phy2ax58100_mdio2_pins_default>;
};

&davinci_mdio {
	reset = <&main_gpio0 25 GPIO_ACTIVE_LOW>;
	reset-delay-us = <2>;   /* PHY datasheet states 1us min */

	phy0: ethernet-phy@0 {
		reg = <3>;
	};
};

&cpsw_port1 {
	phy-mode = "rmii";
	phy-handle = <&phy0>;
};

//Eric+{
&icssg1_mdio {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&icssg1_mdio_pins_default>;

	reset = <&main_gpio0 66 GPIO_ACTIVE_LOW>; /*83867*/
	//reset = <&main_gpio0 73 GPIO_ACTIVE_LOW>; /*83822*/
	reset-delay-us = <2>;

	/*83867*/
	pruss1_eth0_phy: ethernet-phy@1 {
		reg = <1>;
		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
	};
#if 0
	/*83822*/
	pruss1_eth1_phy: ethernet-phy@7 {
		reg = <7>;
	};
#endif
};
//Eric+}

&icssg2_mdio {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&icssg2_mdio_pins_default>;

	reset = <&main_gpio0 16 GPIO_ACTIVE_LOW>;
	reset-delay-us = <2>;

	/*83867*/
	pruss2_eth0_phy: ethernet-phy@2 {
		reg = <2>;
		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
	};
};

Thanks.

Eric

  • Hi Ti,

    I tried to move to SDK 08_00_00_02, and this still happened.

    However, if we remove the setting of icssg0, icssg1 and icssg2 in K3-am65-main.dtsi, this will not happened.

    Please help to see this.

    Eric

  • Hi Eric,

    Sorry for my late response.

    What PRU firmware are you running? I suspect the PRU firmware uses these pins and doesn't respect your GPIO mode settings?

  • Hi Bin,

    I use default PRU firmware inside Ti SDK.

    Eric

  • Hi Eric,

    I am routing your query to our PRU expert for comments.

  • Hello Eric,

    Please note that the value output by PRU GPO pins is non-deterministic before the PRU is enabled and actually writes a value to the output. See my response in this thread: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/855359/tmdx654idkevm-device-tree-overlays/3167900#3167900

    If you are writing a general purpose PRU firmware and you need a deterministic value before the PRU is able to write to the GPO, let me know and we can discuss options.

    I am trying to understand what you are doing in your design. It sounds like you are trying to program a general purpose PRU application on ICSSG0, while you are running single Ethernet applications on ICSSG1 and ICSSG2?

    Regards,

    Nick

  • Hi ,

    What we are tryin to do is running Ethernet application on PRU1_0 and PRU2_0. we have 2 ethernet ports on our device.

    And we are running our PRU program on other PRUs, such as PRU0_0, RTU0_0, TX_PRU0_0, PRU0_1, PRU2_1 and etc.

    In our PRU firmware, we will control GPO/GPI for general IO used. and 

    we do initialize the GPO/GPI value at initial stage.

    __R30 = 0;
    __R31 = 0;

    And we need GPO LOW when device boot before PRU firmware loaded.

    For example, if user connect GPO with a motor, motor should not work before application start.

    But if the GPO goes to high before that, it's not a safe action.

    That's why we need this thread.

    Thanks.

    Eric 

  • Hello Eric,

    Got it. Several things to discuss here:

    1) why are you spreading the PRU Ethernet applications across two PRU_ICSSGs? 

    Each PRU_ICSSG can support 2 PRU Ethernet interfaces, one PRU Ethernet port per ICSSG slice (e.g., PRU0, RTU0, TX_PRU0 and their peripherals make up slice 0). Is there a particular reason you are using one slice of PRU_ICSSG1 for a PRU Ethernet port, and once slice of PRU_ICSSG2 for another PRU Ethernet port?

    Theoretically you could use the other PRU_ICSSG slice for general purpose programs, but this is not a usecase that TI has tested. For single Ethernet usecases, we just assume that the other PRU_ICSSG slice is unused.

    2) How to set PRU GPO values before PRU firmware is loaded

    This thread gives background: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/677952/linux-processor-sdk-am437x-gpo-pin-undefined-until-pru-starts

    To summarize, PRU GPO signal values are nondeterministic. So if you set the pinmux to route the PRU GPO signal to the pin before R30 is initialized, then the value on the pin cannot be known.

    One potential option is to initialize the associated PRU cores in uboot, before the pinmux settings are applied. I would expect the RemoteProc driver to be able to initialize PRU cores as well as the cores documented at https://software-dl.ti.com/processor-sdk-linux/esd/AM65X/08_02_00_02/exports/docs/linux/Foundational_Components/U-Boot/UG-RemoteProc.html . Does that work for you?

    Regards,

    Nick

  • Hi ,

    Let me answer your questions here.

    1) Our product is for industrial used. We have measured the performance of ethernet port and due to we need 2 eth ports, this is the best performance result we got.

    2) I tried your suggestion to initialize PRUs in uboot. But I got below result, is that because I didn't put the firmware in uboot?

    And I also notice that you mentioned a possible solution that modify kernel driver to initialize R30 and then change pinmuxing after Linux is up and running in this thread.https://e2e.ti.com/support/processors-group/processors/f/processors-forum/677952/linux-processor-sdk-am437x-gpo-pin-undefined-until-pru-starts

    Is this workable for AM654? And this link cannot be access.https://e2e.ti.com/support/arm/sitara_arm/f/791/p/426120/1523819 

    If yes, could you provide some sample code for us to reference?

    Thanks.

    Eric

  • Hello Eric,

    1) why are you spreading the PRU Ethernet applications across two PRU_ICSSGs? 

    Interesting. What kind of a performance difference did you see when using one ICSSG slice per ICSSG instead of two ICSSG slices on a single ICSSG? Are you able to post the test code? (just my personal curiosity here, as I have not looked at performance differences with regards to these different setups)

    2) How to set PRU GPO values before PRU firmware is loaded

    Thanks for posting the screenshot. That verifies that Uboot supports loading the PRU cores.

    I do not have time to run tests on my side today, but when I look at the Uboot documentation, I see that the "load mmc" command example is not actually loading the firmware into the R5F address. Instead, it is loading the firmware to a location in DDR:

    => load mmc 1:2 0x90000000 /lib/firmware/j7-main-r5f0_0-fw

    Then from there, they use the number from "rproc list" to load the firmware stored to DDR into rproc #2:

    => rproc list
    ...
    2 - Name:'r5f@5c00000' type:'internal memory mapped' supports: load start stop reset
    ...
    => rproc load 2 0x90000000 0x${filesize}
    Load Remote Processor 2 with data@addr=0x90000000 2536540 bytes: Success!

    Try doing something something similar, where you load to a DDR location, and then load the firmware into whichever PRU core you are targeting (in this case, also rproc #2).

    Regards,

    Nick

  • Hi ,

    1) For performance, we use an instrument to test not by any test code. I post the screen shot for you to reference. You can see the RX result, the result of separate RPU is better.

    2) It seems the test to load the pru fw in uboot successfully. Please let me know if anything wrong.

    And I need to load all of PRU fw and the environment to see the GPIO status. Will response to you in few days. 

    Thanks.

    Eric

  • Hello Eric,

    Glad that you are able to load the PRU firmware in Uboot!

    Several notes here:

    1) I would expect that you ONLY need to load the firmware for the cores that need the deterministic PRU GPO values. e.g., no need to load the PRU Ethernet firmware in uboot.

    2) Don't worry about the Linux RemoteProc driver getting confused with a remote core that is already running during Linux boot time. In my limited experiments, if a remote core is already running when the RemoteProc driver tries to initialize the core, then the RemoteProc driver just skips over that core. (i.e., the Linux RemoteProc driver will not shut down and restart a remote core that was started in uboot).

    Regards,

    Nick

  • Hello Eric,

    I was concerned about the PRU Ethernet firmware you are using, so I double checked with some of our other team members.

    Just to confirm, you are using AM65x silicon revision (SR) 2.0, right?

    In general, we do not suggest using the ICSSG EMAC firmware from Linux SDK 7.1. It was a stopgap solution, and might have weirdness or performance issues. The early version of PRU Ethernet firmware may have impacted your observed Ethernet performance.

    We suggest using later versions (i.e., Linux SDK 8.x or later for future readers) on AM65x if using the PRU Ethernet.

    Regards,

    Nick

  • Hi ,

    Yes, we are using SR2.0. We use this one: XAM6548AACDXEAF.

    And if you don't suggest using EMAC firmware from SDK 7.1, is it possible porting SDK8.x back to SDK7.1?

     

    Eric

  • Hello Eric,

    How to ensure deterministic PRU GPO pin values during boot

    For future readers, I realized that my previous discussion of how to order the PRU GPO initialization might not have been super clear.

    To restate:

     * Using a pullup or pulldown resistor will ensure that the PRU GPO pin has a known value BEFORE the PRU R30 starts driving the pin value. However,

     * Once the pinmux settings route the PRU GPO signal from the R30 register to the pin, the PRU R30 is now driving the pin value.

     * The values in R30 are nondeterministic before the PRU has been initialized. Thus, the PRU should be initialized, and a known value should be written into the R30 register in firmware, before the PRU GPO signal is routed to the pin.

    For Eric's usecase, I am assuming that the PRU GPO pin is pinmuxed during Linux boot time according to the Linux device tree (instead of getting pinmuxed during uboot according to the uboot device tree). If that is the case, I was assuming a timeline like this:

    1) Hardware pullup / pulldown resistor ensures signal is high or low before pinmuxing

    2) Uboot loads PRU core. PRU firmware writes known value to R30

    3) PRU GPO pin pinmuxing occurs during Linux boot. Since R30 already has a known value in it, the pin value remains the same

    Porting Linux PRU Ethernet from SDK 8.x to SDK 7.1 

    At this point in time, TI has not backported the PRU Ethernet changes from SDK 8.x back to SDK 7.1. In general, we suggest migrating to an SDK 8.x release.

    Regards,

    Nick

  • ,

    I workaround this by setting PRU GPO as OUTPUT_PULLDOWN with mode 7 in dts file. That means I config them as general GPIO first.

    Then, after PRU firmware loaded, I change the pins to GPO for PRU use.

    It seems no issue found anymore.

    Thanks.

    Eric

  • Hello Eric,

    Thank you for responding back with your solution! That is absolutely another valid approach.

    I should probably turn this subject into an FAQ. Could you give me more details around the method you used to update the pinmux registers during runtime?

    Thanks,

    Nick

  • Hi ,

    Sorry I forgot to response this due to so busy.

    As I told, I set the GPO with mode 7 in dts file, and after I load the pru firmware, I use devmem2 to update the pinmux for PRU used.

    Eric