Tool/software:
Hello TI E2E forum,
I am attempting to run the LwIP ICSSG example alongside Linux on AM64x.
I followed the FAQ [FAQ] AM64X: How to combine R5F PRU_ICSSG Ethernet with Linux A53 cores step by step, using the provided example files (including device trees, linker.cmd, and rm-cfg.yaml) to configure and build the ENET LwIP ICSSG example, U-Boot and the Linux kernel device tree. I only modified example.syscfg to enable CCS debug logs.
When running the cat command to check the example's output I get the following output:
root@am64xx-evm:~# cat /sys/kernel/debug/remoteproc/remoteproc0/trace0 [r5f0-0] 0.003477s : ========================== [r5f0-0] 0.003789s : ENET LWIP App [r5f0-0] 0.005458s : ========================== [r5f0-0] 0.008095s : Enabling clocks! [r5f0-0] 0.010373s : EnetAppUtils_reduceCoreMacAllocation: Reduced Mac Address Allocation for CoreId:1 From 4 To 1 [r5f0-0] 0.017674s : [r5f0-0] 0.020526s : EnetUdma_openRxCh: [Enet UDMA] UDMA RX Channel open failed: 0xfffffffb EnetUdma_openRxCh: [Enet UDMA] UDMA RX Channel open failed: 0xfffffffb EnetHostPortDma_open: Failed to open Enet DMA RX channel: -1 Icssg_openDma: icssg1: failed to open ICSSG Host Port RX Icssg_open: icssg1: failed to open DMA: -1 EnetPer_open: icssg1: Failed to open: -1 Enet_open: icssg1: Failed to open: -1 Enet_open failed51558s : [r5f0-0] 0.053227s : Assertion @ Line: 328 in syscfg/ti_enet_open_close.c: hEnet != NULL_PTR : failed !!!
The log suggests a resource conflict between the R5 and A53. The ethernet ports are not visible anymore on Linux when running the ifconfig command. U-Boot also fails to probe the ethernet ports as you can see from the logs:
U-Boot 2025.01-gd2a72467939e-dirty (Sep 03 2025 - 14:39:52 +0200) SoC: AM64X SR2.0 HS-FS Model: Texas Instruments AM642 EVM Board: AM64-EVM rev D DRAM: 2 GiB Core: 102 devices, 33 uclasses, devicetree: separate MMC: mmc@fa10000: 0, mmc@fa00000: 1 Loading Environment from nowhere... OK In: serial@2800000 Out: serial@2800000 Err: serial@2800000 Failed to probe am65_cpsw_nuss driver Failed to probe prueth driver Net: No ethernet found.
The ICSSG example runs correctly as a standalone R5F application.
Environment:
- MCU-PLUS-SDK-AM64X: Version 11.01.00.17
- PROCESSOR-SDK-LINUX-RT-AM64X: Version 11.01.05.03
- Image: tisdk-default-image-rt-am64xx-evm-11.01.05.03
You can find the mentioned files below. Could you please confirm if my setup is correct or point out where the conflict may be?
Best regards
Luca
rm-cfg.yaml:
# SPDX-License-Identifier: GPL-2.0+ # Copyright (C) 2022-2023 Texas Instruments Incorporated - https://www.ti.com/ # # Resource management configuration for AM64X # --- rm-cfg: rm_boardcfg: rev: boardcfg_abi_maj: 0x0 boardcfg_abi_min: 0x1 host_cfg: subhdr: magic: 0x4C41 size: 356 host_cfg_entries: - # 1 host_id: 12 allowed_atype: 0x2A allowed_qos: 0xAAAA allowed_orderid: 0xAAAAAAAA allowed_priority: 0xAAAA allowed_sched_priority: 0xAA - # 2 host_id: 30 allowed_atype: 0x2A allowed_qos: 0xAAAA allowed_orderid: 0xAAAAAAAA allowed_priority: 0xAAAA allowed_sched_priority: 0xAA - # 3 host_id: 36 allowed_atype: 0x2A allowed_qos: 0xAAAA allowed_orderid: 0xAAAAAAAA allowed_priority: 0xAAAA allowed_sched_priority: 0xAA - # 4 host_id: 38 allowed_atype: 0x2A allowed_qos: 0xAAAA allowed_orderid: 0xAAAAAAAA allowed_priority: 0xAAAA allowed_sched_priority: 0xAA - # 5 host_id: 41 allowed_atype: 0x2A allowed_qos: 0xAAAA allowed_orderid: 0xAAAAAAAA allowed_priority: 0xAAAA allowed_sched_priority: 0xAA - # 6 host_id: 43 allowed_atype: 0x2A allowed_qos: 0xAAAA allowed_orderid: 0xAAAAAAAA allowed_priority: 0xAAAA allowed_sched_priority: 0xAA - # 7 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 8 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 9 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 10 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 11 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 12 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 13 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 14 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 15 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 16 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 17 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 18 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 19 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 20 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 21 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 22 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 23 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 24 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 25 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 26 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 27 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 28 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 29 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 30 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 31 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 - # 32 host_id: 0 allowed_atype: 0 allowed_qos: 0 allowed_orderid: 0 allowed_priority: 0 allowed_sched_priority: 0 resasg: subhdr: magic: 0x7B25 size: 8 resasg_entries_size: 1328 reserved: 0 resasg_entries: - start_resource: 0 num_resource: 16 type: 64 host_id: 12 reserved: 0 - start_resource: 16 num_resource: 4 type: 64 host_id: 35 reserved: 0 - start_resource: 16 num_resource: 4 type: 64 host_id: 36 reserved: 0 - start_resource: 20 num_resource: 4 type: 64 host_id: 38 reserved: 0 - start_resource: 24 num_resource: 4 type: 64 host_id: 41 reserved: 0 - start_resource: 28 num_resource: 4 type: 64 host_id: 43 reserved: 0 - start_resource: 32 num_resource: 8 type: 64 host_id: 128 reserved: 0 - start_resource: 0 num_resource: 12 type: 192 host_id: 12 reserved: 0 - start_resource: 12 num_resource: 2 type: 192 host_id: 41 reserved: 0 - start_resource: 14 num_resource: 2 type: 192 host_id: 43 reserved: 0 - start_resource: 0 num_resource: 4 type: 320 host_id: 12 reserved: 0 - start_resource: 4 num_resource: 4 type: 320 host_id: 30 reserved: 0 - start_resource: 0 num_resource: 41 type: 384 host_id: 128 reserved: 0 - start_resource: 50176 num_resource: 136 type: 1666 host_id: 128 reserved: 0 - start_resource: 0 num_resource: 1 type: 1667 host_id: 128 reserved: 0 - start_resource: 0 num_resource: 12 type: 1677 host_id: 12 reserved: 0 - start_resource: 12 num_resource: 6 type: 1677 host_id: 35 reserved: 0 - start_resource: 12 num_resource: 6 type: 1677 host_id: 36 reserved: 0 - start_resource: 18 num_resource: 2 type: 1677 host_id: 38 reserved: 0 - start_resource: 20 num_resource: 4 type: 1677 host_id: 41 reserved: 0 - start_resource: 24 num_resource: 2 type: 1677 host_id: 43 reserved: 0 - start_resource: 26 num_resource: 1 type: 1677 host_id: 30 reserved: 0 - start_resource: 27 num_resource: 1 type: 1677 host_id: 128 reserved: 0 - start_resource: 48 num_resource: 6 type: 1678 host_id: 12 reserved: 0 - start_resource: 54 num_resource: 6 type: 1678 host_id: 35 reserved: 0 - start_resource: 54 num_resource: 6 type: 1678 host_id: 36 reserved: 0 - start_resource: 60 num_resource: 2 type: 1678 host_id: 38 reserved: 0 - start_resource: 62 num_resource: 4 type: 1678 host_id: 41 reserved: 0 - start_resource: 66 num_resource: 2 type: 1678 host_id: 43 reserved: 0 - start_resource: 28 num_resource: 6 type: 1679 host_id: 12 reserved: 0 - start_resource: 34 num_resource: 6 type: 1679 host_id: 35 reserved: 0 - start_resource: 34 num_resource: 6 type: 1679 host_id: 36 reserved: 0 - start_resource: 40 num_resource: 2 type: 1679 host_id: 38 reserved: 0 - start_resource: 42 num_resource: 4 type: 1679 host_id: 41 reserved: 0 - start_resource: 46 num_resource: 2 type: 1679 host_id: 43 reserved: 0 - start_resource: 0 num_resource: 12 type: 1696 host_id: 12 reserved: 0 - start_resource: 12 num_resource: 6 type: 1696 host_id: 35 reserved: 0 - start_resource: 12 num_resource: 6 type: 1696 host_id: 36 reserved: 0 - start_resource: 18 num_resource: 2 type: 1696 host_id: 38 reserved: 0 - start_resource: 20 num_resource: 4 type: 1696 host_id: 41 reserved: 0 - start_resource: 24 num_resource: 2 type: 1696 host_id: 43 reserved: 0 - start_resource: 26 num_resource: 1 type: 1696 host_id: 30 reserved: 0 - start_resource: 27 num_resource: 1 type: 1696 host_id: 128 reserved: 0 - start_resource: 0 num_resource: 6 type: 1697 host_id: 12 reserved: 0 - start_resource: 6 num_resource: 6 type: 1697 host_id: 35 reserved: 0 - start_resource: 6 num_resource: 6 type: 1697 host_id: 36 reserved: 0 - start_resource: 12 num_resource: 2 type: 1697 host_id: 38 reserved: 0 - start_resource: 14 num_resource: 4 type: 1697 host_id: 41 reserved: 0 - start_resource: 18 num_resource: 2 type: 1697 host_id: 43 reserved: 0 - start_resource: 0 num_resource: 6 type: 1698 host_id: 12 reserved: 0 - start_resource: 6 num_resource: 6 type: 1698 host_id: 35 reserved: 0 - start_resource: 6 num_resource: 6 type: 1698 host_id: 36 reserved: 0 - start_resource: 12 num_resource: 2 type: 1698 host_id: 38 reserved: 0 - start_resource: 14 num_resource: 4 type: 1698 host_id: 41 reserved: 0 - start_resource: 18 num_resource: 2 type: 1698 host_id: 43 reserved: 0 - start_resource: 5 num_resource: 35 type: 1802 host_id: 12 reserved: 0 - start_resource: 44 num_resource: 14 type: 1802 host_id: 35 reserved: 0 - start_resource: 44 num_resource: 14 type: 1802 host_id: 36 reserved: 0 - start_resource: 58 num_resource: 14 type: 1802 host_id: 38 reserved: 0 - start_resource: 92 num_resource: 14 type: 1802 host_id: 41 reserved: 0 - start_resource: 106 num_resource: 14 type: 1802 host_id: 43 reserved: 0 - start_resource: 168 num_resource: 16 type: 1802 host_id: 30 reserved: 0 - start_resource: 16 num_resource: 512 type: 1805 host_id: 12 reserved: 0 - start_resource: 528 num_resource: 256 type: 1805 host_id: 35 reserved: 0 - start_resource: 528 num_resource: 256 type: 1805 host_id: 36 reserved: 0 - start_resource: 784 num_resource: 192 type: 1805 host_id: 38 reserved: 0 - start_resource: 976 num_resource: 256 type: 1805 host_id: 41 reserved: 0 - start_resource: 1232 num_resource: 192 type: 1805 host_id: 43 reserved: 0 - start_resource: 1424 num_resource: 96 type: 1805 host_id: 30 reserved: 0 - start_resource: 1520 num_resource: 16 type: 1805 host_id: 128 reserved: 0 - start_resource: 0 num_resource: 1024 type: 1807 host_id: 128 reserved: 0 - start_resource: 4096 num_resource: 42 type: 1808 host_id: 128 reserved: 0 - start_resource: 4608 num_resource: 112 type: 1809 host_id: 128 reserved: 0 - start_resource: 5120 num_resource: 29 type: 1810 host_id: 128 reserved: 0 - start_resource: 5632 num_resource: 176 type: 1811 host_id: 128 reserved: 0 - start_resource: 6144 num_resource: 176 type: 1812 host_id: 128 reserved: 0 - start_resource: 6656 num_resource: 176 type: 1813 host_id: 128 reserved: 0 - start_resource: 8192 num_resource: 28 type: 1814 host_id: 128 reserved: 0 - start_resource: 8704 num_resource: 28 type: 1815 host_id: 128 reserved: 0 - start_resource: 9216 num_resource: 28 type: 1816 host_id: 128 reserved: 0 - start_resource: 9728 num_resource: 20 type: 1817 host_id: 128 reserved: 0 - start_resource: 10240 num_resource: 20 type: 1818 host_id: 128 reserved: 0 - start_resource: 10752 num_resource: 20 type: 1819 host_id: 128 reserved: 0 - start_resource: 11264 num_resource: 20 type: 1820 host_id: 128 reserved: 0 - start_resource: 11776 num_resource: 20 type: 1821 host_id: 128 reserved: 0 - start_resource: 12288 num_resource: 20 type: 1822 host_id: 128 reserved: 0 - start_resource: 0 num_resource: 1 type: 1923 host_id: 128 reserved: 0 - start_resource: 0 num_resource: 4 type: 1936 host_id: 12 reserved: 0 - start_resource: 4 num_resource: 3 type: 1936 host_id: 35 reserved: 0 - start_resource: 4 num_resource: 3 type: 1936 host_id: 36 reserved: 0 - start_resource: 7 num_resource: 2 type: 1936 host_id: 38 reserved: 0 - start_resource: 9 num_resource: 4 type: 1936 host_id: 41 reserved: 0 - start_resource: 13 num_resource: 2 type: 1936 host_id: 43 reserved: 0 - start_resource: 15 num_resource: 1 type: 1936 host_id: 30 reserved: 0 - start_resource: 16 num_resource: 64 type: 1937 host_id: 12 reserved: 0 - start_resource: 16 num_resource: 64 type: 1937 host_id: 35 reserved: 0 - start_resource: 88 num_resource: 8 type: 1939 host_id: 12 reserved: 0 - start_resource: 96 num_resource: 8 type: 1940 host_id: 12 reserved: 0 - start_resource: 104 num_resource: 8 type: 1941 host_id: 35 reserved: 0 - start_resource: 104 num_resource: 8 type: 1941 host_id: 36 reserved: 0 - start_resource: 112 num_resource: 4 type: 1942 host_id: 12 reserved: 0 - start_resource: 116 num_resource: 3 type: 1942 host_id: 35 reserved: 0 - start_resource: 116 num_resource: 3 type: 1942 host_id: 36 reserved: 0 - start_resource: 119 num_resource: 2 type: 1942 host_id: 38 reserved: 0 - start_resource: 121 num_resource: 4 type: 1942 host_id: 41 reserved: 0 - start_resource: 125 num_resource: 2 type: 1942 host_id: 43 reserved: 0 - start_resource: 127 num_resource: 1 type: 1942 host_id: 30 reserved: 0 - start_resource: 128 num_resource: 16 type: 1943 host_id: 12 reserved: 0 - start_resource: 128 num_resource: 16 type: 1943 host_id: 35 reserved: 0 - start_resource: 144 num_resource: 8 type: 1945 host_id: 128 reserved: 0 - start_resource: 152 num_resource: 8 type: 1946 host_id: 12 reserved: 0 - start_resource: 152 num_resource: 8 type: 1947 host_id: 12 reserved: 0 - start_resource: 160 num_resource: 64 type: 1948 host_id: 12 reserved: 0 - start_resource: 224 num_resource: 64 type: 1949 host_id: 35 reserved: 0 - start_resource: 224 num_resource: 64 type: 1949 host_id: 36 reserved: 0 - start_resource: 0 num_resource: 4 type: 1955 host_id: 12 reserved: 0 - start_resource: 4 num_resource: 3 type: 1955 host_id: 35 reserved: 0 - start_resource: 4 num_resource: 3 type: 1955 host_id: 36 reserved: 0 - start_resource: 7 num_resource: 2 type: 1955 host_id: 38 reserved: 0 - start_resource: 9 num_resource: 4 type: 1955 host_id: 41 reserved: 0 - start_resource: 13 num_resource: 2 type: 1955 host_id: 43 reserved: 0 - start_resource: 15 num_resource: 1 type: 1955 host_id: 30 reserved: 0 - start_resource: 16 num_resource: 8 type: 1956 host_id: 12 reserved: 0 - start_resource: 16 num_resource: 8 type: 1956 host_id: 35 reserved: 0 - start_resource: 25 num_resource: 1 type: 1958 host_id: 12 reserved: 0 - start_resource: 26 num_resource: 8 type: 1959 host_id: 12 reserved: 0 - start_resource: 34 num_resource: 8 type: 1960 host_id: 35 reserved: 0 - start_resource: 34 num_resource: 8 type: 1960 host_id: 36 reserved: 0 - start_resource: 0 num_resource: 4 type: 1961 host_id: 12 reserved: 0 - start_resource: 4 num_resource: 3 type: 1961 host_id: 35 reserved: 0 - start_resource: 4 num_resource: 3 type: 1961 host_id: 36 reserved: 0 - start_resource: 7 num_resource: 2 type: 1961 host_id: 38 reserved: 0 - start_resource: 9 num_resource: 4 type: 1961 host_id: 41 reserved: 0 - start_resource: 13 num_resource: 2 type: 1961 host_id: 43 reserved: 0 - start_resource: 15 num_resource: 1 type: 1961 host_id: 30 reserved: 0 - start_resource: 0 num_resource: 4 type: 1962 host_id: 12 reserved: 0 - start_resource: 4 num_resource: 3 type: 1962 host_id: 35 reserved: 0 - start_resource: 4 num_resource: 3 type: 1962 host_id: 36 reserved: 0 - start_resource: 7 num_resource: 2 type: 1962 host_id: 38 reserved: 0 - start_resource: 9 num_resource: 4 type: 1962 host_id: 41 reserved: 0 - start_resource: 13 num_resource: 2 type: 1962 host_id: 43 reserved: 0 - start_resource: 15 num_resource: 1 type: 1962 host_id: 30 reserved: 0 - start_resource: 16 num_resource: 1 type: 1963 host_id: 12 reserved: 0 - start_resource: 16 num_resource: 1 type: 1963 host_id: 35 reserved: 0 - start_resource: 16 num_resource: 16 type: 1964 host_id: 12 reserved: 0 - start_resource: 16 num_resource: 16 type: 1964 host_id: 35 reserved: 0 - start_resource: 32 num_resource: 8 type: 1966 host_id: 128 reserved: 0 - start_resource: 32 num_resource: 8 type: 1968 host_id: 128 reserved: 0 - start_resource: 19 num_resource: 1 type: 1969 host_id: 12 reserved: 0 - start_resource: 40 num_resource: 8 type: 1970 host_id: 12 reserved: 0 - start_resource: 20 num_resource: 1 type: 1971 host_id: 12 reserved: 0 - start_resource: 40 num_resource: 8 type: 1972 host_id: 12 reserved: 0 - start_resource: 21 num_resource: 4 type: 1973 host_id: 12 reserved: 0 - start_resource: 48 num_resource: 64 type: 1974 host_id: 12 reserved: 0 - start_resource: 25 num_resource: 4 type: 1975 host_id: 35 reserved: 0 - start_resource: 25 num_resource: 4 type: 1975 host_id: 36 reserved: 0 - start_resource: 112 num_resource: 64 type: 1976 host_id: 35 reserved: 0 - start_resource: 112 num_resource: 64 type: 1976 host_id: 36 reserved: 0 - start_resource: 0 num_resource: 1 type: 2112 host_id: 128 reserved: 0 - start_resource: 2 num_resource: 2 type: 2122 host_id: 12 reserved: 0 - start_resource: 20 num_resource: 2 type: 2124 host_id: 35 reserved: 0 - start_resource: 20 num_resource: 2 type: 2124 host_id: 36 reserved: 0 - start_resource: 22 num_resource: 2 type: 2124 host_id: 38 reserved: 0 - start_resource: 24 num_resource: 2 type: 2124 host_id: 41 reserved: 0 - start_resource: 26 num_resource: 2 type: 2124 host_id: 43 reserved: 0 - start_resource: 28 num_resource: 4 type: 2124 host_id: 128 reserved: 0
k3-am642-evm.dts (u-boot):
// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/ */ /dts-v1/; #include <dt-bindings/phy/phy.h> #include <dt-bindings/leds/common.h> #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/net/ti-dp83867.h> #include "k3-am642.dtsi" #include "k3-serdes.h" / { compatible = "ti,am642-evm", "ti,am642"; model = "Texas Instruments AM642 EVM"; chosen { stdout-path = &main_uart0; }; aliases { serial0 = &mcu_uart0; serial1 = &main_uart1; serial2 = &main_uart0; serial3 = &main_uart3; i2c0 = &main_i2c0; i2c1 = &main_i2c1; mmc0 = &sdhci0; mmc1 = &sdhci1; ethernet0 = &cpsw_port1; ethernet1 = &cpsw_port2; }; memory@80000000 { bootph-all; device_type = "memory"; /* 2G RAM */ reg = <0x00000000 0x80000000 0x00000000 0x80000000>; }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; secure_ddr: optee@9e800000 { reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */ alignment = <0x1000>; no-map; }; main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 { compatible = "shared-dma-pool"; reg = <0x00 0xa0000000 0x00 0x100000>; no-map; }; main_r5fss0_core0_memory_region: r5f-memory@a0100000 { compatible = "shared-dma-pool"; reg = <0x00 0xa0100000 0x00 0xf00000>; no-map; }; main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 { compatible = "shared-dma-pool"; reg = <0x00 0xa1000000 0x00 0x100000>; no-map; }; main_r5fss0_core1_memory_region: r5f-memory@a1100000 { compatible = "shared-dma-pool"; reg = <0x00 0xa1100000 0x00 0xf00000>; no-map; }; main_r5fss1_core0_dma_memory_region: r5f-dma-memory@a2000000 { compatible = "shared-dma-pool"; reg = <0x00 0xa2000000 0x00 0x100000>; no-map; }; main_r5fss1_core0_memory_region: r5f-memory@a2100000 { compatible = "shared-dma-pool"; reg = <0x00 0xa2100000 0x00 0xf00000>; no-map; }; main_r5fss1_core1_dma_memory_region: r5f-dma-memory@a3000000 { compatible = "shared-dma-pool"; reg = <0x00 0xa3000000 0x00 0x100000>; no-map; }; main_r5fss1_core1_memory_region: r5f-memory@a3100000 { compatible = "shared-dma-pool"; reg = <0x00 0xa3100000 0x00 0xf00000>; no-map; }; mcu_m4fss_dma_memory_region: m4f-dma-memory@a4000000 { compatible = "shared-dma-pool"; reg = <0x00 0xa4000000 0x00 0x100000>; no-map; }; mcu_m4fss_memory_region: m4f-memory@a4100000 { compatible = "shared-dma-pool"; reg = <0x00 0xa4100000 0x00 0xf00000>; no-map; }; rtos_ipc_memory_region: ipc-memories@a5000000 { reg = <0x00 0xa5000000 0x00 0x00800000>; alignment = <0x1000>; no-map; }; }; evm_12v0: regulator-0 { /* main DC jack */ bootph-all; compatible = "regulator-fixed"; regulator-name = "evm_12v0"; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; regulator-always-on; regulator-boot-on; }; vsys_5v0: regulator-1 { /* output of LM5140 */ compatible = "regulator-fixed"; regulator-name = "vsys_5v0"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; vin-supply = <&evm_12v0>; regulator-always-on; regulator-boot-on; }; vsys_3v3: regulator-2 { /* output of LM5140 */ bootph-all; compatible = "regulator-fixed"; regulator-name = "vsys_3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; vin-supply = <&evm_12v0>; regulator-always-on; regulator-boot-on; }; vdd_mmc1: regulator-3 { /* TPS2051BD */ bootph-all; compatible = "regulator-fixed"; regulator-name = "vdd_mmc1"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-boot-on; enable-active-high; vin-supply = <&vsys_3v3>; gpio = <&exp1 6 GPIO_ACTIVE_HIGH>; }; vddb: regulator-4 { compatible = "regulator-fixed"; regulator-name = "vddb_3v3_display"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; vin-supply = <&vsys_3v3>; regulator-always-on; regulator-boot-on; }; vtt_supply: regulator-5 { bootph-all; compatible = "regulator-fixed"; regulator-name = "vtt"; pinctrl-names = "default"; pinctrl-0 = <&ddr_vtt_pins_default>; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&main_gpio0 12 GPIO_ACTIVE_HIGH>; vin-supply = <&vsys_3v3>; enable-active-high; regulator-always-on; regulator-boot-on; }; leds { compatible = "gpio-leds"; led-0 { label = "am64-evm:red:heartbeat"; gpios = <&exp1 16 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat"; function = LED_FUNCTION_HEARTBEAT; default-state = "off"; }; }; mdio_mux: mux-controller { compatible = "gpio-mux"; #mux-control-cells = <0>; mux-gpios = <&exp1 12 GPIO_ACTIVE_HIGH>; }; mdio_mux_1: mdio-mux-1 { compatible = "mdio-mux-multiplexer"; mux-controls = <&mdio_mux>; mdio-parent-bus = <&cpsw3g_mdio>; #address-cells = <1>; #size-cells = <0>; mdio@1 { reg = <0x1>; #address-cells = <1>; #size-cells = <0>; cpsw3g_phy3: ethernet-phy@3 { reg = <3>; }; }; }; transceiver1: can-phy0 { compatible = "ti,tcan1042"; #phy-cells = <0>; max-bitrate = <5000000>; standby-gpios = <&exp1 8 GPIO_ACTIVE_HIGH>; }; transceiver2: can-phy1 { compatible = "ti,tcan1042"; #phy-cells = <0>; max-bitrate = <5000000>; standby-gpios = <&exp1 9 GPIO_ACTIVE_HIGH>; }; }; &main_pmx0 { main_mmc1_pins_default: main-mmc1-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0294, PIN_INPUT_PULLUP, 0) /* (J19) MMC1_CMD */ AM64X_IOPAD(0x028c, PIN_INPUT_PULLDOWN, 0) /* (L20) MMC1_CLK */ AM64X_IOPAD(0x0288, PIN_INPUT_PULLUP, 0) /* (K21) MMC1_DAT0 */ AM64X_IOPAD(0x0284, PIN_INPUT_PULLUP, 0) /* (L21) MMC1_DAT1 */ AM64X_IOPAD(0x0280, PIN_INPUT_PULLUP, 0) /* (K19) MMC1_DAT2 */ AM64X_IOPAD(0x027c, PIN_INPUT_PULLUP, 0) /* (K18) MMC1_DAT3 */ AM64X_IOPAD(0x0298, PIN_INPUT_PULLUP, 0) /* (D19) MMC1_SDCD */ AM64X_IOPAD(0x029c, PIN_INPUT, 0) /* (C20) MMC1_SDWP */ AM64X_IOPAD(0x0290, PIN_INPUT, 0) /* MMC1_CLKLB */ >; }; main_uart1_pins_default: main-uart1-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0248, PIN_INPUT, 0) /* (D16) UART1_CTSn */ AM64X_IOPAD(0x024c, PIN_OUTPUT, 0) /* (E16) UART1_RTSn */ AM64X_IOPAD(0x0240, PIN_INPUT, 0) /* (E15) UART1_RXD */ AM64X_IOPAD(0x0244, PIN_OUTPUT, 0) /* (E14) UART1_TXD */ >; }; main_uart0_pins_default: main-uart0-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x0238, PIN_INPUT, 0) /* (B16) UART0_CTSn */ AM64X_IOPAD(0x023c, PIN_OUTPUT, 0) /* (A16) UART0_RTSn */ AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */ AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */ >; }; main_spi0_pins_default: main-spi0-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0210, PIN_INPUT, 0) /* (D13) SPI0_CLK */ AM64X_IOPAD(0x0208, PIN_OUTPUT, 0) /* (D12) SPI0_CS0 */ AM64X_IOPAD(0x0214, PIN_OUTPUT, 0) /* (A13) SPI0_D0 */ AM64X_IOPAD(0x0218, PIN_INPUT, 0) /* (A14) SPI0_D1 */ >; }; main_i2c0_pins_default: main-i2c0-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x0260, PIN_INPUT_PULLUP, 0) /* (A18) I2C0_SCL */ AM64X_IOPAD(0x0264, PIN_INPUT_PULLUP, 0) /* (B18) I2C0_SDA */ >; }; main_i2c1_pins_default: main-i2c1-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x0268, PIN_INPUT_PULLUP, 0) /* (C18) I2C1_SCL */ AM64X_IOPAD(0x026c, PIN_INPUT_PULLUP, 0) /* (B19) I2C1_SDA */ >; }; mdio1_pins_default: mdio1-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x01fc, PIN_OUTPUT, 4) /* (R2) PRG0_PRU1_GPO19.MDIO0_MDC */ AM64X_IOPAD(0x01f8, PIN_INPUT, 4) /* (P5) PRG0_PRU1_GPO18.MDIO0_MDIO */ >; }; rgmii1_pins_default: rgmii1-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x01cc, PIN_INPUT, 4) /* (W5) PRG0_PRU1_GPO7.RGMII1_RD0 */ AM64X_IOPAD(0x01d4, PIN_INPUT, 4) /* (Y5) PRG0_PRU1_GPO9.RGMII1_RD1 */ AM64X_IOPAD(0x01d8, PIN_INPUT, 4) /* (V6) PRG0_PRU1_GPO10.RGMII1_RD2 */ AM64X_IOPAD(0x01f4, PIN_INPUT, 4) /* (V5) PRG0_PRU1_GPO17.RGMII1_RD3 */ AM64X_IOPAD(0x0188, PIN_INPUT, 4) /* (AA5) PRG0_PRU0_GPO10.RGMII1_RXC */ AM64X_IOPAD(0x0184, PIN_INPUT, 4) /* (W6) PRG0_PRU0_GPO9.RGMII1_RX_CTL */ AM64X_IOPAD(0x0124, PIN_OUTPUT, 4) /* (V15) PRG1_PRU1_GPO7.RGMII1_TD0 */ AM64X_IOPAD(0x012c, PIN_OUTPUT, 4) /* (V14) PRG1_PRU1_GPO9.RGMII1_TD1 */ AM64X_IOPAD(0x0130, PIN_OUTPUT, 4) /* (W14) PRG1_PRU1_GPO10.RGMII1_TD2 */ AM64X_IOPAD(0x014c, PIN_OUTPUT, 4) /* (AA14) PRG1_PRU1_GPO17.RGMII1_TD3 */ AM64X_IOPAD(0x00e0, PIN_OUTPUT, 4) /* (U14) PRG1_PRU0_GPO10.RGMII1_TXC */ AM64X_IOPAD(0x00dc, PIN_OUTPUT, 4) /* (U15) PRG1_PRU0_GPO9.RGMII1_TX_CTL */ >; }; rgmii2_pins_default: rgmii2-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x0108, PIN_INPUT, 4) /* (W11) PRG1_PRU1_GPO0.RGMII2_RD0 */ AM64X_IOPAD(0x010c, PIN_INPUT, 4) /* (V11) PRG1_PRU1_GPO1.RGMII2_RD1 */ AM64X_IOPAD(0x0110, PIN_INPUT, 4) /* (AA12) PRG1_PRU1_GPO2.RGMII2_RD2 */ AM64X_IOPAD(0x0114, PIN_INPUT, 4) /* (Y12) PRG1_PRU1_GPO3.RGMII2_RD3 */ AM64X_IOPAD(0x0120, PIN_INPUT, 4) /* (U11) PRG1_PRU1_GPO6.RGMII2_RXC */ AM64X_IOPAD(0x0118, PIN_INPUT, 4) /* (W12) PRG1_PRU1_GPO4.RGMII2_RX_CTL */ AM64X_IOPAD(0x0134, PIN_OUTPUT, 4) /* (AA10) PRG1_PRU1_GPO11.RGMII2_TD0 */ AM64X_IOPAD(0x0138, PIN_OUTPUT, 4) /* (V10) PRG1_PRU1_GPO12.RGMII2_TD1 */ AM64X_IOPAD(0x013c, PIN_OUTPUT, 4) /* (U10) PRG1_PRU1_GPO13.RGMII2_TD2 */ AM64X_IOPAD(0x0140, PIN_OUTPUT, 4) /* (AA11) PRG1_PRU1_GPO14.RGMII2_TD3 */ AM64X_IOPAD(0x0148, PIN_OUTPUT, 4) /* (Y10) PRG1_PRU1_GPO16.RGMII2_TXC */ AM64X_IOPAD(0x0144, PIN_OUTPUT, 4) /* (Y11) PRG1_PRU1_GPO15.RGMII2_TX_CTL */ >; }; main_usb0_pins_default: main-usb0-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */ >; }; ospi0_pins_default: ospi0-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0000, PIN_OUTPUT, 0) /* (N20) OSPI0_CLK */ AM64X_IOPAD(0x002c, PIN_OUTPUT, 0) /* (L19) OSPI0_CSn0 */ AM64X_IOPAD(0x000c, PIN_INPUT, 0) /* (M19) OSPI0_D0 */ AM64X_IOPAD(0x0010, PIN_INPUT, 0) /* (M18) OSPI0_D1 */ AM64X_IOPAD(0x0014, PIN_INPUT, 0) /* (M20) OSPI0_D2 */ AM64X_IOPAD(0x0018, PIN_INPUT, 0) /* (M21) OSPI0_D3 */ AM64X_IOPAD(0x001c, PIN_INPUT, 0) /* (P21) OSPI0_D4 */ AM64X_IOPAD(0x0020, PIN_INPUT, 0) /* (P20) OSPI0_D5 */ AM64X_IOPAD(0x0024, PIN_INPUT, 0) /* (N18) OSPI0_D6 */ AM64X_IOPAD(0x0028, PIN_INPUT, 0) /* (M17) OSPI0_D7 */ AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */ >; bootph-all; }; main_ecap0_pins_default: main-ecap0-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0270, PIN_INPUT, 0) /* (D18) ECAP0_IN_APWM_OUT */ >; }; main_mcan0_pins_default: main-mcan0-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0254, PIN_INPUT, 0) /* (B17) MCAN0_RX */ AM64X_IOPAD(0x0250, PIN_OUTPUT, 0) /* (A17) MCAN0_TX */ >; }; main_mcan1_pins_default: main-mcan1-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x025c, PIN_INPUT, 0) /* (D17) MCAN1_RX */ AM64X_IOPAD(0x0258, PIN_OUTPUT, 0) /* (C17) MCAN1_TX */ >; }; ddr_vtt_pins_default: ddr-vtt-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x0030, PIN_OUTPUT_PULLUP, 7) /* (L18) OSPI0_CSN1.GPIO0_12 */ >; }; }; &main_uart0 { bootph-all; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_uart0_pins_default>; current-speed = <115200>; }; /* main_uart1 is reserved for firmware usage */ &main_uart1 { status = "reserved"; pinctrl-names = "default"; pinctrl-0 = <&main_uart1_pins_default>; }; &main_i2c0 { bootph-all; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_i2c0_pins_default>; clock-frequency = <400000>; gpio@38 { /* TCA9554 */ bootph-all; compatible = "nxp,pca9554"; reg = <0x38>; gpio-controller; #gpio-cells = <2>; gpio-line-names = "HSE_DETECT"; }; eeprom@50 { /* AT24CM01 */ compatible = "atmel,24c1024"; reg = <0x50>; }; }; &main_i2c1 { bootph-all; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_i2c1_pins_default>; clock-frequency = <400000>; exp1: gpio@22 { bootph-all; compatible = "ti,tca6424"; reg = <0x22>; gpio-controller; #gpio-cells = <2>; gpio-line-names = "GPIO_eMMC_RSTn", "CAN_MUX_SEL", "GPIO_CPSW1_RST", "GPIO_RGMII1_RST", "GPIO_RGMII2_RST", "GPIO_PCIe_RST_OUT", "MMC1_SD_EN", "FSI_FET_SEL", "MCAN0_STB_3V3", "MCAN1_STB_3V3", "CPSW_FET_SEL", "CPSW_FET2_SEL", "PRG1_RGMII2_FET_SEL", "TEST_GPIO2", "GPIO_OLED_RESETn", "VPP_LDO_EN", "TEST_LED1", "TP92", "TP90", "TP88", "TP87", "TP86", "TP89", "TP91"; }; /* osd9616p0899-10 */ display@3c { compatible = "solomon,ssd1306fb-i2c"; reg = <0x3c>; reset-gpios = <&exp1 14 GPIO_ACTIVE_LOW>; vbat-supply = <&vddb>; solomon,height = <16>; solomon,width = <96>; solomon,com-seq; solomon,com-invdir; solomon,page-offset = <0>; solomon,prechargep1 = <2>; solomon,prechargep2 = <13>; }; }; &main_gpio0 { bootph-all; }; /* mcu_gpio0 and mcu_gpio_intr are reserved for mcu firmware usage */ &mcu_gpio0 { status = "reserved"; }; &mcu_gpio_intr { status = "reserved"; }; &main_spi0 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_spi0_pins_default>; ti,pindir-d0-out-d1-in; eeprom@0 { compatible = "microchip,93lc46b"; reg = <0>; spi-max-frequency = <1000000>; spi-cs-high; data-size = <16>; }; }; /* eMMC */ &sdhci0 { status = "okay"; non-removable; ti,driver-strength-ohm = <50>; disable-wp; bootph-all; }; /* SD/MMC */ &sdhci1 { bootph-all; status = "okay"; vmmc-supply = <&vdd_mmc1>; pinctrl-names = "default"; pinctrl-0 = <&main_mmc1_pins_default>; disable-wp; }; &usbss0 { bootph-all; ti,vbus-divider; ti,usb2-only; }; &usb0 { bootph-all; dr_mode = "otg"; maximum-speed = "high-speed"; pinctrl-names = "default"; pinctrl-0 = <&main_usb0_pins_default>; }; &cpsw3g { bootph-all; pinctrl-names = "default"; pinctrl-0 = <&rgmii1_pins_default>, <&rgmii2_pins_default>; /* Map HW8_TS_PUSH to GENF1 */ cpts@3d000 { ti,pps = <7 1>; }; }; &cpsw_port1 { bootph-all; phy-mode = "rgmii-rxid"; phy-handle = <&cpsw3g_phy0>; }; &cpsw_port2 { phy-mode = "rgmii-rxid"; phy-handle = <&cpsw3g_phy3>; }; &cpsw3g_mdio { bootph-all; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&mdio1_pins_default>; cpsw3g_phy0: ethernet-phy@0 { bootph-all; reg = <0>; ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; }; }; &tscadc0 { /* ADC is reserved for R5 usage */ status = "reserved"; }; &fss { bootph-all; }; &ospi0 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&ospi0_pins_default>; bootph-all; flash@0 { compatible = "jedec,spi-nor"; reg = <0x0>; spi-tx-bus-width = <8>; spi-rx-bus-width = <8>; spi-max-frequency = <25000000>; cdns,tshsl-ns = <60>; cdns,tsd2d-ns = <60>; cdns,tchsh-ns = <60>; cdns,tslch-ns = <60>; cdns,read-delay = <4>; cdns,phy-mode; #address-cells = <1>; #size-cells = <1>; bootph-all; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; bootph-all; partition@0 { label = "ospi.tiboot3"; reg = <0x0 0x100000>; }; partition@100000 { label = "ospi.tispl"; reg = <0x100000 0x200000>; }; partition@300000 { label = "ospi.u-boot"; reg = <0x300000 0x400000>; }; partition@700000 { label = "ospi.env"; reg = <0x700000 0x40000>; }; partition@740000 { label = "ospi.env.backup"; reg = <0x740000 0x40000>; }; partition@800000 { label = "ospi.rootfs"; reg = <0x800000 0x37c0000>; }; partition@3fc0000 { label = "ospi.phypattern"; reg = <0x3fc0000 0x40000>; bootph-all; }; }; }; }; &mailbox0_cluster2 { status = "okay"; mbox_main_r5fss0_core0: mbox-main-r5fss0-core0 { ti,mbox-rx = <0 0 2>; ti,mbox-tx = <1 0 2>; }; mbox_main_r5fss0_core1: mbox-main-r5fss0-core1 { ti,mbox-rx = <2 0 2>; ti,mbox-tx = <3 0 2>; }; }; &mailbox0_cluster4 { status = "okay"; mbox_main_r5fss1_core0: mbox-main-r5fss1-core0 { ti,mbox-rx = <0 0 2>; ti,mbox-tx = <1 0 2>; }; mbox_main_r5fss1_core1: mbox-main-r5fss1-core1 { ti,mbox-rx = <2 0 2>; ti,mbox-tx = <3 0 2>; }; }; &mailbox0_cluster6 { status = "okay"; mbox_m4_0: mbox-m4-0 { ti,mbox-rx = <0 0 2>; ti,mbox-tx = <1 0 2>; }; }; &main_r5fss0_core0 { mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>; memory-region = <&main_r5fss0_core0_dma_memory_region>, <&main_r5fss0_core0_memory_region>; }; &main_r5fss0_core1 { mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core1>; memory-region = <&main_r5fss0_core1_dma_memory_region>, <&main_r5fss0_core1_memory_region>; }; &main_r5fss1_core0 { mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core0>; memory-region = <&main_r5fss1_core0_dma_memory_region>, <&main_r5fss1_core0_memory_region>; }; &main_r5fss1_core1 { mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core1>; memory-region = <&main_r5fss1_core1_dma_memory_region>, <&main_r5fss1_core1_memory_region>; }; &mcu_m4fss { mboxes = <&mailbox0_cluster6 &mbox_m4_0>; memory-region = <&mcu_m4fss_dma_memory_region>, <&mcu_m4fss_memory_region>; status = "okay"; }; &serdes_ln_ctrl { idle-states = <AM64_SERDES0_LANE0_PCIE0>; }; &serdes0 { serdes0_pcie_link: phy@0 { reg = <0>; cdns,num-lanes = <1>; #phy-cells = <0>; cdns,phy-type = <PHY_TYPE_PCIE>; resets = <&serdes_wiz0 1>; }; }; &pcie0_rc { status = "okay"; reset-gpios = <&exp1 5 GPIO_ACTIVE_HIGH>; phys = <&serdes0_pcie_link>; phy-names = "pcie-phy"; num-lanes = <1>; }; &ecap0 { status = "okay"; /* PWM is available on Pin 1 of header J12 */ pinctrl-names = "default"; pinctrl-0 = <&main_ecap0_pins_default>; }; &main_mcan0 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_mcan0_pins_default>; phys = <&transceiver1>; }; &main_mcan1 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_mcan1_pins_default>; phys = <&transceiver2>; }; #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) ×ync_router { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&cpsw_cpts_pps>; /* * Use Time Sync Router to map GENF1 input to HW8_TS_PUSH output as well * as the PRU ICSSG0 SYNC1 output. */ cpsw_cpts_pps: cpsw-cpts-pps { pinctrl-single,pins = < /* pps [cpts genf1] in22 -> out37 [cpts hw8_push] */ TS_OFFSET(37, 22) /* pps [cpts genf1] in22 -> out26 [SYNC1_OUT pin] */ TS_OFFSET(26, 22) >; }; }; &cpsw3g { status = "disabled"; };
k3-am642-evm.dts (Linux):
// SPDX-License-Identifier: GPL-2.0-only OR MIT /* * Copyright (C) 2020-2024 Texas Instruments Incorporated - https://www.ti.com/ */ /dts-v1/; #include <dt-bindings/phy/phy.h> #include <dt-bindings/leds/common.h> #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/net/ti-dp83867.h> #include "k3-am642.dtsi" #include "k3-serdes.h" / { compatible = "ti,am642-evm", "ti,am642"; model = "Texas Instruments AM642 EVM"; chosen { stdout-path = &main_uart0; }; aliases { serial0 = &mcu_uart0; serial1 = &main_uart1; serial2 = &main_uart0; serial3 = &main_uart3; i2c0 = &main_i2c0; i2c1 = &main_i2c1; mmc0 = &sdhci0; mmc1 = &sdhci1; ethernet0 = &cpsw_port1; ethernet1 = &cpsw_port2; }; memory@80000000 { bootph-all; device_type = "memory"; /* 2G RAM */ reg = <0x00000000 0x80000000 0x00000000 0x80000000>; }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; secure_ddr: optee@9e800000 { reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */ alignment = <0x1000>; no-map; }; main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 { compatible = "shared-dma-pool"; reg = <0x00 0xa0000000 0x00 0x100000>; no-map; }; main_r5fss0_core0_memory_region: r5f-memory@a0100000 { compatible = "shared-dma-pool"; reg = <0x00 0xa0100000 0x00 0xf00000>; no-map; }; main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 { compatible = "shared-dma-pool"; reg = <0x00 0xa1000000 0x00 0x100000>; no-map; }; main_r5fss0_core1_memory_region: r5f-memory@a1100000 { compatible = "shared-dma-pool"; reg = <0x00 0xa1100000 0x00 0xf00000>; no-map; }; main_r5fss1_core0_dma_memory_region: r5f-dma-memory@a2000000 { compatible = "shared-dma-pool"; reg = <0x00 0xa2000000 0x00 0x100000>; no-map; }; main_r5fss1_core0_memory_region: r5f-memory@a2100000 { compatible = "shared-dma-pool"; reg = <0x00 0xa2100000 0x00 0xf00000>; no-map; }; main_r5fss1_core1_dma_memory_region: r5f-dma-memory@a3000000 { compatible = "shared-dma-pool"; reg = <0x00 0xa3000000 0x00 0x100000>; no-map; }; main_r5fss1_core1_memory_region: r5f-memory@a3100000 { compatible = "shared-dma-pool"; reg = <0x00 0xa3100000 0x00 0xf00000>; no-map; }; mcu_m4fss_dma_memory_region: m4f-dma-memory@a4000000 { compatible = "shared-dma-pool"; reg = <0x00 0xa4000000 0x00 0x100000>; no-map; }; mcu_m4fss_memory_region: m4f-memory@a4100000 { compatible = "shared-dma-pool"; reg = <0x00 0xa4100000 0x00 0xf00000>; no-map; }; rtos_ipc_memory_region: ipc-memories@a5000000 { reg = <0x00 0xa5000000 0x00 0x00800000>; alignment = <0x1000>; no-map; }; }; evm_12v0: regulator-0 { /* main DC jack */ bootph-all; compatible = "regulator-fixed"; regulator-name = "evm_12v0"; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; regulator-always-on; regulator-boot-on; }; vsys_5v0: regulator-1 { /* output of LM5140 */ compatible = "regulator-fixed"; regulator-name = "vsys_5v0"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; vin-supply = <&evm_12v0>; regulator-always-on; regulator-boot-on; }; vsys_3v3: regulator-2 { /* output of LM5140 */ bootph-all; compatible = "regulator-fixed"; regulator-name = "vsys_3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; vin-supply = <&evm_12v0>; regulator-always-on; regulator-boot-on; }; vdd_mmc1: regulator-3 { /* TPS2051BD */ bootph-all; compatible = "regulator-fixed"; regulator-name = "vdd_mmc1"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-boot-on; enable-active-high; vin-supply = <&vsys_3v3>; gpio = <&exp1 6 GPIO_ACTIVE_HIGH>; }; vddb: regulator-4 { compatible = "regulator-fixed"; regulator-name = "vddb_3v3_display"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; vin-supply = <&vsys_3v3>; regulator-always-on; regulator-boot-on; }; vtt_supply: regulator-5 { bootph-all; compatible = "regulator-fixed"; regulator-name = "vtt"; pinctrl-names = "default"; pinctrl-0 = <&ddr_vtt_pins_default>; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&main_gpio0 12 GPIO_ACTIVE_HIGH>; vin-supply = <&vsys_3v3>; enable-active-high; regulator-always-on; regulator-boot-on; }; leds { compatible = "gpio-leds"; led-0 { label = "am64-evm:red:heartbeat"; gpios = <&exp1 16 GPIO_ACTIVE_HIGH>; linux,default-trigger = "heartbeat"; function = LED_FUNCTION_HEARTBEAT; default-state = "off"; }; }; mdio_mux: mux-controller { compatible = "gpio-mux"; #mux-control-cells = <0>; mux-gpios = <&exp1 12 GPIO_ACTIVE_HIGH>; }; mdio_mux_1: mdio-mux-1 { compatible = "mdio-mux-multiplexer"; mux-controls = <&mdio_mux>; mdio-parent-bus = <&cpsw3g_mdio>; #address-cells = <1>; #size-cells = <0>; mdio@1 { reg = <0x1>; #address-cells = <1>; #size-cells = <0>; cpsw3g_phy3: ethernet-phy@3 { reg = <3>; }; }; }; transceiver1: can-phy0 { compatible = "ti,tcan1042"; #phy-cells = <0>; max-bitrate = <5000000>; standby-gpios = <&exp1 8 GPIO_ACTIVE_HIGH>; }; transceiver2: can-phy1 { compatible = "ti,tcan1042"; #phy-cells = <0>; max-bitrate = <5000000>; standby-gpios = <&exp1 9 GPIO_ACTIVE_HIGH>; }; }; &main_pmx0 { main_mmc1_pins_default: main-mmc1-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0294, PIN_INPUT_PULLUP, 0) /* (J19) MMC1_CMD */ AM64X_IOPAD(0x028c, PIN_INPUT_PULLDOWN, 0) /* (L20) MMC1_CLK */ AM64X_IOPAD(0x0288, PIN_INPUT_PULLUP, 0) /* (K21) MMC1_DAT0 */ AM64X_IOPAD(0x0284, PIN_INPUT_PULLUP, 0) /* (L21) MMC1_DAT1 */ AM64X_IOPAD(0x0280, PIN_INPUT_PULLUP, 0) /* (K19) MMC1_DAT2 */ AM64X_IOPAD(0x027c, PIN_INPUT_PULLUP, 0) /* (K18) MMC1_DAT3 */ AM64X_IOPAD(0x0298, PIN_INPUT_PULLUP, 0) /* (D19) MMC1_SDCD */ AM64X_IOPAD(0x029c, PIN_INPUT, 0) /* (C20) MMC1_SDWP */ AM64X_IOPAD(0x0290, PIN_INPUT, 0) /* MMC1_CLKLB */ >; }; main_uart1_pins_default: main-uart1-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0248, PIN_INPUT, 0) /* (D16) UART1_CTSn */ AM64X_IOPAD(0x024c, PIN_OUTPUT, 0) /* (E16) UART1_RTSn */ AM64X_IOPAD(0x0240, PIN_INPUT, 0) /* (E15) UART1_RXD */ AM64X_IOPAD(0x0244, PIN_OUTPUT, 0) /* (E14) UART1_TXD */ >; }; main_uart0_pins_default: main-uart0-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x0238, PIN_INPUT, 0) /* (B16) UART0_CTSn */ AM64X_IOPAD(0x023c, PIN_OUTPUT, 0) /* (A16) UART0_RTSn */ AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */ AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */ >; }; main_spi0_pins_default: main-spi0-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0210, PIN_INPUT, 0) /* (D13) SPI0_CLK */ AM64X_IOPAD(0x0208, PIN_OUTPUT, 0) /* (D12) SPI0_CS0 */ AM64X_IOPAD(0x0214, PIN_OUTPUT, 0) /* (A13) SPI0_D0 */ AM64X_IOPAD(0x0218, PIN_INPUT, 0) /* (A14) SPI0_D1 */ >; }; main_i2c0_pins_default: main-i2c0-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x0260, PIN_INPUT_PULLUP, 0) /* (A18) I2C0_SCL */ AM64X_IOPAD(0x0264, PIN_INPUT_PULLUP, 0) /* (B18) I2C0_SDA */ >; }; main_i2c1_pins_default: main-i2c1-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x0268, PIN_INPUT_PULLUP, 0) /* (C18) I2C1_SCL */ AM64X_IOPAD(0x026c, PIN_INPUT_PULLUP, 0) /* (B19) I2C1_SDA */ >; }; mdio1_pins_default: mdio1-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x01fc, PIN_OUTPUT, 4) /* (R2) PRG0_PRU1_GPO19.MDIO0_MDC */ AM64X_IOPAD(0x01f8, PIN_INPUT, 4) /* (P5) PRG0_PRU1_GPO18.MDIO0_MDIO */ >; }; rgmii1_pins_default: rgmii1-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x01cc, PIN_INPUT, 4) /* (W5) PRG0_PRU1_GPO7.RGMII1_RD0 */ AM64X_IOPAD(0x01d4, PIN_INPUT, 4) /* (Y5) PRG0_PRU1_GPO9.RGMII1_RD1 */ AM64X_IOPAD(0x01d8, PIN_INPUT, 4) /* (V6) PRG0_PRU1_GPO10.RGMII1_RD2 */ AM64X_IOPAD(0x01f4, PIN_INPUT, 4) /* (V5) PRG0_PRU1_GPO17.RGMII1_RD3 */ AM64X_IOPAD(0x0188, PIN_INPUT, 4) /* (AA5) PRG0_PRU0_GPO10.RGMII1_RXC */ AM64X_IOPAD(0x0184, PIN_INPUT, 4) /* (W6) PRG0_PRU0_GPO9.RGMII1_RX_CTL */ AM64X_IOPAD(0x0124, PIN_OUTPUT, 4) /* (V15) PRG1_PRU1_GPO7.RGMII1_TD0 */ AM64X_IOPAD(0x012c, PIN_OUTPUT, 4) /* (V14) PRG1_PRU1_GPO9.RGMII1_TD1 */ AM64X_IOPAD(0x0130, PIN_OUTPUT, 4) /* (W14) PRG1_PRU1_GPO10.RGMII1_TD2 */ AM64X_IOPAD(0x014c, PIN_OUTPUT, 4) /* (AA14) PRG1_PRU1_GPO17.RGMII1_TD3 */ AM64X_IOPAD(0x00e0, PIN_OUTPUT, 4) /* (U14) PRG1_PRU0_GPO10.RGMII1_TXC */ AM64X_IOPAD(0x00dc, PIN_OUTPUT, 4) /* (U15) PRG1_PRU0_GPO9.RGMII1_TX_CTL */ >; }; rgmii2_pins_default: rgmii2-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x0108, PIN_INPUT, 4) /* (W11) PRG1_PRU1_GPO0.RGMII2_RD0 */ AM64X_IOPAD(0x010c, PIN_INPUT, 4) /* (V11) PRG1_PRU1_GPO1.RGMII2_RD1 */ AM64X_IOPAD(0x0110, PIN_INPUT, 4) /* (AA12) PRG1_PRU1_GPO2.RGMII2_RD2 */ AM64X_IOPAD(0x0114, PIN_INPUT, 4) /* (Y12) PRG1_PRU1_GPO3.RGMII2_RD3 */ AM64X_IOPAD(0x0120, PIN_INPUT, 4) /* (U11) PRG1_PRU1_GPO6.RGMII2_RXC */ AM64X_IOPAD(0x0118, PIN_INPUT, 4) /* (W12) PRG1_PRU1_GPO4.RGMII2_RX_CTL */ AM64X_IOPAD(0x0134, PIN_OUTPUT, 4) /* (AA10) PRG1_PRU1_GPO11.RGMII2_TD0 */ AM64X_IOPAD(0x0138, PIN_OUTPUT, 4) /* (V10) PRG1_PRU1_GPO12.RGMII2_TD1 */ AM64X_IOPAD(0x013c, PIN_OUTPUT, 4) /* (U10) PRG1_PRU1_GPO13.RGMII2_TD2 */ AM64X_IOPAD(0x0140, PIN_OUTPUT, 4) /* (AA11) PRG1_PRU1_GPO14.RGMII2_TD3 */ AM64X_IOPAD(0x0148, PIN_OUTPUT, 4) /* (Y10) PRG1_PRU1_GPO16.RGMII2_TXC */ AM64X_IOPAD(0x0144, PIN_OUTPUT, 4) /* (Y11) PRG1_PRU1_GPO15.RGMII2_TX_CTL */ >; }; main_usb0_pins_default: main-usb0-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */ >; }; ospi0_pins_default: ospi0-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0000, PIN_OUTPUT, 0) /* (N20) OSPI0_CLK */ AM64X_IOPAD(0x002c, PIN_OUTPUT, 0) /* (L19) OSPI0_CSn0 */ AM64X_IOPAD(0x000c, PIN_INPUT, 0) /* (M19) OSPI0_D0 */ AM64X_IOPAD(0x0010, PIN_INPUT, 0) /* (M18) OSPI0_D1 */ AM64X_IOPAD(0x0014, PIN_INPUT, 0) /* (M20) OSPI0_D2 */ AM64X_IOPAD(0x0018, PIN_INPUT, 0) /* (M21) OSPI0_D3 */ AM64X_IOPAD(0x001c, PIN_INPUT, 0) /* (P21) OSPI0_D4 */ AM64X_IOPAD(0x0020, PIN_INPUT, 0) /* (P20) OSPI0_D5 */ AM64X_IOPAD(0x0024, PIN_INPUT, 0) /* (N18) OSPI0_D6 */ AM64X_IOPAD(0x0028, PIN_INPUT, 0) /* (M17) OSPI0_D7 */ AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */ >; }; main_ecap0_pins_default: main-ecap0-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0270, PIN_INPUT, 0) /* (D18) ECAP0_IN_APWM_OUT */ >; }; main_mcan0_pins_default: main-mcan0-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x0254, PIN_INPUT, 0) /* (B17) MCAN0_RX */ AM64X_IOPAD(0x0250, PIN_OUTPUT, 0) /* (A17) MCAN0_TX */ >; }; main_mcan1_pins_default: main-mcan1-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x025c, PIN_INPUT, 0) /* (D17) MCAN1_RX */ AM64X_IOPAD(0x0258, PIN_OUTPUT, 0) /* (C17) MCAN1_TX */ >; }; ddr_vtt_pins_default: ddr-vtt-default-pins { bootph-all; pinctrl-single,pins = < AM64X_IOPAD(0x0030, PIN_OUTPUT_PULLUP, 7) /* (L18) OSPI0_CSN1.GPIO0_12 */ >; }; }; &main_uart0 { bootph-all; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_uart0_pins_default>; current-speed = <115200>; }; /* main_uart1 is reserved for firmware usage */ &main_uart1 { status = "reserved"; pinctrl-names = "default"; pinctrl-0 = <&main_uart1_pins_default>; }; &main_i2c0 { bootph-all; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_i2c0_pins_default>; clock-frequency = <400000>; gpio@38 { /* TCA9554 */ compatible = "nxp,pca9554"; reg = <0x38>; gpio-controller; #gpio-cells = <2>; gpio-line-names = "HSE_DETECT"; }; eeprom@50 { /* AT24CM01 */ compatible = "atmel,24c1024"; reg = <0x50>; }; }; &main_i2c1 { bootph-all; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_i2c1_pins_default>; clock-frequency = <400000>; exp1: gpio@22 { bootph-all; compatible = "ti,tca6424"; reg = <0x22>; gpio-controller; #gpio-cells = <2>; gpio-line-names = "GPIO_eMMC_RSTn", "CAN_MUX_SEL", "GPIO_CPSW1_RST", "GPIO_RGMII1_RST", "GPIO_RGMII2_RST", "GPIO_PCIe_RST_OUT", "MMC1_SD_EN", "FSI_FET_SEL", "MCAN0_STB_3V3", "MCAN1_STB_3V3", "CPSW_FET_SEL", "CPSW_FET2_SEL", "PRG1_RGMII2_FET_SEL", "TEST_GPIO2", "GPIO_OLED_RESETn", "VPP_LDO_EN", "TEST_LED1", "TP92", "TP90", "TP88", "TP87", "TP86", "TP89", "TP91"; }; /* osd9616p0899-10 */ display@3c { compatible = "solomon,ssd1306fb-i2c"; reg = <0x3c>; reset-gpios = <&exp1 14 GPIO_ACTIVE_LOW>; vbat-supply = <&vddb>; solomon,height = <16>; solomon,width = <96>; solomon,com-seq; solomon,com-invdir; solomon,page-offset = <0>; solomon,prechargep1 = <2>; solomon,prechargep2 = <13>; }; }; &main_gpio0 { bootph-all; }; /* mcu_gpio0 and mcu_gpio_intr are reserved for mcu firmware usage */ &mcu_gpio0 { status = "reserved"; }; &mcu_gpio_intr { status = "reserved"; }; &main_spi0 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_spi0_pins_default>; ti,pindir-d0-out-d1-in; eeprom@0 { compatible = "microchip,93lc46b"; reg = <0>; spi-max-frequency = <1000000>; spi-cs-high; data-size = <16>; }; }; /* eMMC */ &sdhci0 { status = "okay"; non-removable; ti,driver-strength-ohm = <50>; disable-wp; bootph-all; }; /* SD/MMC */ &sdhci1 { bootph-all; status = "okay"; vmmc-supply = <&vdd_mmc1>; pinctrl-names = "default"; pinctrl-0 = <&main_mmc1_pins_default>; disable-wp; }; &usbss0 { bootph-all; ti,vbus-divider; ti,usb2-only; }; &usb0 { bootph-all; dr_mode = "otg"; maximum-speed = "high-speed"; pinctrl-names = "default"; pinctrl-0 = <&main_usb0_pins_default>; }; &cpsw3g { bootph-all; pinctrl-names = "default"; pinctrl-0 = <&rgmii1_pins_default>, <&rgmii2_pins_default>; /* Map HW8_TS_PUSH to GENF1 */ cpts@3d000 { ti,pps = <7 1>; }; }; &cpsw_port1 { bootph-all; phy-mode = "rgmii-rxid"; phy-handle = <&cpsw3g_phy0>; }; &cpsw_port2 { phy-mode = "rgmii-rxid"; phy-handle = <&cpsw3g_phy3>; }; &cpsw3g_mdio { bootph-all; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&mdio1_pins_default>; cpsw3g_phy0: ethernet-phy@0 { bootph-all; reg = <0>; ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; }; }; &tscadc0 { /* ADC is reserved for R5 usage */ status = "reserved"; }; &ospi0 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&ospi0_pins_default>; flash@0 { compatible = "jedec,spi-nor"; reg = <0x0>; spi-tx-bus-width = <8>; spi-rx-bus-width = <8>; spi-max-frequency = <25000000>; cdns,tshsl-ns = <60>; cdns,tsd2d-ns = <60>; cdns,tchsh-ns = <60>; cdns,tslch-ns = <60>; cdns,read-delay = <4>; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; partition@0 { label = "ospi.tiboot3"; reg = <0x0 0x100000>; }; partition@100000 { label = "ospi.tispl"; reg = <0x100000 0x200000>; }; partition@300000 { label = "ospi.u-boot"; reg = <0x300000 0x400000>; }; partition@700000 { label = "ospi.env"; reg = <0x700000 0x40000>; }; partition@740000 { label = "ospi.env.backup"; reg = <0x740000 0x40000>; }; partition@800000 { label = "ospi.rootfs"; reg = <0x800000 0x37c0000>; }; partition@3fc0000 { label = "ospi.phypattern"; reg = <0x3fc0000 0x40000>; }; }; }; }; &mailbox0_cluster2 { status = "okay"; mbox_main_r5fss0_core0: mbox-main-r5fss0-core0 { ti,mbox-rx = <0 0 2>; ti,mbox-tx = <1 0 2>; }; mbox_main_r5fss0_core1: mbox-main-r5fss0-core1 { ti,mbox-rx = <2 0 2>; ti,mbox-tx = <3 0 2>; }; }; &mailbox0_cluster4 { status = "okay"; mbox_main_r5fss1_core0: mbox-main-r5fss1-core0 { ti,mbox-rx = <0 0 2>; ti,mbox-tx = <1 0 2>; }; mbox_main_r5fss1_core1: mbox-main-r5fss1-core1 { ti,mbox-rx = <2 0 2>; ti,mbox-tx = <3 0 2>; }; }; &mailbox0_cluster6 { status = "okay"; mbox_m4_0: mbox-m4-0 { ti,mbox-rx = <0 0 2>; ti,mbox-tx = <1 0 2>; }; }; &main_r5fss0_core0 { mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>; memory-region = <&main_r5fss0_core0_dma_memory_region>, <&main_r5fss0_core0_memory_region>; sram = <&r5f0_0_sram>; }; &main_r5fss0_core1 { mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core1>; memory-region = <&main_r5fss0_core1_dma_memory_region>, <&main_r5fss0_core1_memory_region>; }; &main_r5fss1_core0 { mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core0>; memory-region = <&main_r5fss1_core0_dma_memory_region>, <&main_r5fss1_core0_memory_region>; }; &main_r5fss1_core1 { mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core1>; memory-region = <&main_r5fss1_core1_dma_memory_region>, <&main_r5fss1_core1_memory_region>; }; &mcu_m4fss { mboxes = <&mailbox0_cluster6 &mbox_m4_0>; memory-region = <&mcu_m4fss_dma_memory_region>, <&mcu_m4fss_memory_region>; status = "okay"; }; /* main domain timers 8 to 11 are used by TI MCU FW */ &main_timer8 { status = "reserved"; }; &main_timer9 { status = "reserved"; }; &main_timer10 { status = "reserved"; }; &main_timer11 { status = "reserved"; }; &serdes_ln_ctrl { idle-states = <AM64_SERDES0_LANE0_PCIE0>; }; &serdes0 { serdes0_pcie_link: phy@0 { reg = <0>; cdns,num-lanes = <1>; #phy-cells = <0>; cdns,phy-type = <PHY_TYPE_PCIE>; resets = <&serdes_wiz0 1>; }; }; &pcie0_rc { status = "okay"; reset-gpios = <&exp1 5 GPIO_ACTIVE_HIGH>; phys = <&serdes0_pcie_link>; phy-names = "pcie-phy"; num-lanes = <1>; }; &ecap0 { status = "okay"; /* PWM is available on Pin 1 of header J12 */ pinctrl-names = "default"; pinctrl-0 = <&main_ecap0_pins_default>; }; &main_mcan0 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_mcan0_pins_default>; phys = <&transceiver1>; }; &main_mcan1 { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&main_mcan1_pins_default>; phys = <&transceiver2>; }; #define TS_OFFSET(pa, val) (0x4+(pa)*4) (0x10000 | val) ×ync_router { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&cpsw_cpts_pps>; /* Use Time Sync Router to map GENF1 input to HW8_TS_PUSH output. */ cpsw_cpts_pps: cpsw-cpts-pps { pinctrl-single,pins = < /* pps [cpts genf1] in22 -> out37 [cpts hw8_push] */ TS_OFFSET(37, 22) >; }; }; &cpsw_port2 { status = "disabled"; }; &mdio_mux_1 { status = "disabled"; }; &icssg0 { status = "disabled"; }; &ospi0 { status = "disabled"; };
k3-am64-main.dtsi:
// SPDX-License-Identifier: GPL-2.0-only OR MIT /* * Device Tree Source for AM642 SoC Family Main Domain peripherals * * Copyright (C) 2020-2024 Texas Instruments Incorporated - https://www.ti.com/ */ #include <dt-bindings/phy/phy-cadence.h> #include <dt-bindings/phy/phy-ti.h> / { serdes_refclk: clock-cmnrefclk { #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <0>; }; }; &cbass_main { oc_sram: sram@70000000 { compatible = "mmio-sram"; reg = <0x00 0x70000000 0x00 0x200000>; #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x00 0x70000000 0x200000>; r5f0_0_sram: r5f0_0_sram@0 { reg = <0x0 0x180000>; }; tfa-sram@1c0000 { reg = <0x1c0000 0x20000>; }; dmsc-sram@1e0000 { reg = <0x1e0000 0x1c000>; }; sproxy-sram@1fc000 { reg = <0x1fc000 0x4000>; }; }; main_conf: syscon@43000000 { bootph-all; compatible = "ti,j721e-system-controller", "syscon", "simple-mfd"; reg = <0x0 0x43000000 0x0 0x20000>; #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x0 0x43000000 0x20000>; chipid@14 { bootph-all; compatible = "ti,am654-chipid"; reg = <0x00000014 0x4>; }; serdes_ln_ctrl: mux-controller@4080 { compatible = "reg-mux"; reg = <0x4080 0x4>; #mux-control-cells = <1>; mux-reg-masks = <0x0 0x3>; /* SERDES0 lane0 select */ }; phy_gmii_sel: phy@4044 { compatible = "ti,am654-phy-gmii-sel"; reg = <0x4044 0x8>; #phy-cells = <1>; }; epwm_tbclk: clock-controller@4130 { compatible = "ti,am64-epwm-tbclk"; reg = <0x4130 0x4>; #clock-cells = <1>; }; }; gic500: interrupt-controller@1800000 { compatible = "arm,gic-v3"; #address-cells = <2>; #size-cells = <2>; ranges; #interrupt-cells = <3>; interrupt-controller; reg = <0x00 0x01800000 0x00 0x10000>, /* GICD */ <0x00 0x01840000 0x00 0xC0000>, /* GICR */ <0x01 0x00000000 0x00 0x2000>, /* GICC */ <0x01 0x00010000 0x00 0x1000>, /* GICH */ <0x01 0x00020000 0x00 0x2000>; /* GICV */ /* * vcpumntirq: * virtual CPU interface maintenance interrupt */ interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>; gic_its: msi-controller@1820000 { compatible = "arm,gic-v3-its"; reg = <0x00 0x01820000 0x00 0x10000>; socionext,synquacer-pre-its = <0x1000000 0x400000>; msi-controller; #msi-cells = <1>; }; }; dmss: bus@48000000 { bootph-all; compatible = "simple-bus"; #address-cells = <2>; #size-cells = <2>; dma-ranges; ranges = <0x00 0x48000000 0x00 0x48000000 0x00 0x06400000>; ti,sci-dev-id = <25>; secure_proxy_main: mailbox@4d000000 { bootph-all; compatible = "ti,am654-secure-proxy"; #mbox-cells = <1>; reg-names = "target_data", "rt", "scfg"; reg = <0x00 0x4d000000 0x00 0x80000>, <0x00 0x4a600000 0x00 0x80000>, <0x00 0x4a400000 0x00 0x80000>; interrupt-names = "rx_012"; interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>; }; inta_main_dmss: interrupt-controller@48000000 { compatible = "ti,sci-inta"; reg = <0x00 0x48000000 0x00 0x100000>; #interrupt-cells = <0>; interrupt-controller; interrupt-parent = <&gic500>; msi-controller; ti,sci = <&dmsc>; ti,sci-dev-id = <28>; ti,interrupt-ranges = <4 68 36>; ti,unmapped-event-sources = <&main_bcdma>, <&main_pktdma>; }; main_bcdma: dma-controller@485c0100 { compatible = "ti,am64-dmss-bcdma"; reg = <0x00 0x485c0100 0x00 0x100>, <0x00 0x4c000000 0x00 0x20000>, <0x00 0x4a820000 0x00 0x20000>, <0x00 0x4aa40000 0x00 0x20000>, <0x00 0x4bc00000 0x00 0x100000>, <0x00 0x48600000 0x00 0x8000>, <0x00 0x484a4000 0x00 0x2000>, <0x00 0x484c2000 0x00 0x2000>, <0x00 0x48420000 0x00 0x2000>; reg-names = "gcfg", "bchanrt", "rchanrt", "tchanrt", "ringrt", "ring", "tchan", "rchan", "bchan"; msi-parent = <&inta_main_dmss>; #dma-cells = <3>; ti,sci = <&dmsc>; ti,sci-dev-id = <26>; ti,sci-rm-range-bchan = <0x20>; /* BLOCK_COPY_CHAN */ ti,sci-rm-range-rchan = <0x21>; /* SPLIT_TR_RX_CHAN */ ti,sci-rm-range-tchan = <0x22>; /* SPLIT_TR_TX_CHAN */ }; main_pktdma: dma-controller@485c0000 { compatible = "ti,am64-dmss-pktdma"; reg = <0x00 0x485c0000 0x00 0x100>, <0x00 0x4a800000 0x00 0x20000>, <0x00 0x4aa00000 0x00 0x40000>, <0x00 0x4b800000 0x00 0x400000>, <0x00 0x485e0000 0x00 0x20000>, <0x00 0x484a0000 0x00 0x4000>, <0x00 0x484c0000 0x00 0x2000>, <0x00 0x48430000 0x00 0x4000>; reg-names = "gcfg", "rchanrt", "tchanrt", "ringrt", "ring", "tchan", "rchan", "rflow"; msi-parent = <&inta_main_dmss>; #dma-cells = <2>; ti,sci = <&dmsc>; ti,sci-dev-id = <30>; ti,sci-rm-range-tchan = <0x23>, /* UNMAPPED_TX_CHAN */ <0x24>, /* CPSW_TX_CHAN */ <0x25>, /* SAUL_TX_0_CHAN */ <0x26>, /* SAUL_TX_1_CHAN */ <0x27>, /* ICSSG_0_TX_CHAN */ <0x28>; /* ICSSG_1_TX_CHAN */ ti,sci-rm-range-tflow = <0x10>, /* RING_UNMAPPED_TX_CHAN */ <0x11>, /* RING_CPSW_TX_CHAN */ <0x12>, /* RING_SAUL_TX_0_CHAN */ <0x13>, /* RING_SAUL_TX_1_CHAN */ <0x14>, /* RING_ICSSG_0_TX_CHAN */ <0x15>; /* RING_ICSSG_1_TX_CHAN */ ti,sci-rm-range-rchan = <0x29>, /* UNMAPPED_RX_CHAN */ <0x2b>, /* CPSW_RX_CHAN */ <0x2d>, /* SAUL_RX_0_CHAN */ <0x2f>, /* SAUL_RX_1_CHAN */ <0x31>, /* SAUL_RX_2_CHAN */ <0x33>, /* SAUL_RX_3_CHAN */ <0x35>, /* ICSSG_0_RX_CHAN */ <0x37>; /* ICSSG_1_RX_CHAN */ ti,sci-rm-range-rflow = <0x2a>, /* FLOW_UNMAPPED_RX_CHAN */ <0x2c>, /* FLOW_CPSW_RX_CHAN */ <0x2e>, /* FLOW_SAUL_RX_0/1_CHAN */ <0x32>, /* FLOW_SAUL_RX_2/3_CHAN */ <0x36>, /* FLOW_ICSSG_0_RX_CHAN */ <0x38>; /* FLOW_ICSSG_1_RX_CHAN */ }; }; dmsc: system-controller@44043000 { bootph-all; compatible = "ti,k2g-sci"; ti,host-id = <12>; mbox-names = "rx", "tx"; mboxes = <&secure_proxy_main 12>, <&secure_proxy_main 13>; reg-names = "debug_messages"; reg = <0x00 0x44043000 0x00 0xfe0>; k3_pds: power-controller { bootph-all; compatible = "ti,sci-pm-domain"; #power-domain-cells = <2>; }; k3_clks: clock-controller { bootph-all; compatible = "ti,k2g-sci-clk"; #clock-cells = <2>; }; k3_reset: reset-controller { bootph-all; compatible = "ti,sci-reset"; #reset-cells = <2>; }; }; main_pmx0: pinctrl@f4000 { bootph-all; compatible = "pinctrl-single"; reg = <0x00 0xf4000 0x00 0x2d0>; #pinctrl-cells = <1>; pinctrl-single,register-width = <32>; pinctrl-single,function-mask = <0xffffffff>; }; main_timer0: timer@2400000 { bootph-all; compatible = "ti,am654-timer"; reg = <0x00 0x2400000 0x00 0x400>; interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; clocks = <&k3_clks 36 1>; clock-names = "fck"; assigned-clocks = <&k3_clks 36 1>; assigned-clock-parents = <&k3_clks 36 2>; power-domains = <&k3_pds 36 TI_SCI_PD_EXCLUSIVE>; ti,timer-pwm; }; main_timer1: timer@2410000 { compatible = "ti,am654-timer"; reg = <0x00 0x2410000 0x00 0x400>; interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>; clocks = <&k3_clks 37 1>; clock-names = "fck"; assigned-clocks = <&k3_clks 37 1>; assigned-clock-parents = <&k3_clks 37 2>; power-domains = <&k3_pds 37 TI_SCI_PD_EXCLUSIVE>; ti,timer-pwm; }; main_timer2: timer@2420000 { compatible = "ti,am654-timer"; reg = <0x00 0x2420000 0x00 0x400>; interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>; clocks = <&k3_clks 38 1>; clock-names = "fck"; assigned-clocks = <&k3_clks 38 1>; assigned-clock-parents = <&k3_clks 38 2>; power-domains = <&k3_pds 38 TI_SCI_PD_EXCLUSIVE>; ti,timer-pwm; }; main_timer3: timer@2430000 { compatible = "ti,am654-timer"; reg = <0x00 0x2430000 0x00 0x400>; interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>; clocks = <&k3_clks 39 1>; clock-names = "fck"; assigned-clocks = <&k3_clks 39 1>; assigned-clock-parents = <&k3_clks 39 2>; power-domains = <&k3_pds 39 TI_SCI_PD_EXCLUSIVE>; ti,timer-pwm; }; main_timer4: timer@2440000 { compatible = "ti,am654-timer"; reg = <0x00 0x2440000 0x00 0x400>; interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>; clocks = <&k3_clks 40 1>; clock-names = "fck"; assigned-clocks = <&k3_clks 40 1>; assigned-clock-parents = <&k3_clks 40 2>; power-domains = <&k3_pds 40 TI_SCI_PD_EXCLUSIVE>; ti,timer-pwm; }; main_timer5: timer@2450000 { compatible = "ti,am654-timer"; reg = <0x00 0x2450000 0x00 0x400>; interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>; clocks = <&k3_clks 41 1>; clock-names = "fck"; assigned-clocks = <&k3_clks 41 1>; assigned-clock-parents = <&k3_clks 41 2>; power-domains = <&k3_pds 41 TI_SCI_PD_EXCLUSIVE>; ti,timer-pwm; }; main_timer6: timer@2460000 { compatible = "ti,am654-timer"; reg = <0x00 0x2460000 0x00 0x400>; interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>; clocks = <&k3_clks 42 1>; clock-names = "fck"; assigned-clocks = <&k3_clks 42 1>; assigned-clock-parents = <&k3_clks 42 2>; power-domains = <&k3_pds 42 TI_SCI_PD_EXCLUSIVE>; ti,timer-pwm; }; main_timer7: timer@2470000 { compatible = "ti,am654-timer"; reg = <0x00 0x2470000 0x00 0x400>; interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>; clocks = <&k3_clks 43 1>; clock-names = "fck"; assigned-clocks = <&k3_clks 43 1>; assigned-clock-parents = <&k3_clks 43 2>; power-domains = <&k3_pds 43 TI_SCI_PD_EXCLUSIVE>; ti,timer-pwm; }; main_timer8: timer@2480000 { compatible = "ti,am654-timer"; reg = <0x00 0x2480000 0x00 0x400>; interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>; clocks = <&k3_clks 44 1>; clock-names = "fck"; assigned-clocks = <&k3_clks 44 1>; assigned-clock-parents = <&k3_clks 44 2>; power-domains = <&k3_pds 44 TI_SCI_PD_EXCLUSIVE>; ti,timer-pwm; }; main_timer9: timer@2490000 { compatible = "ti,am654-timer"; reg = <0x00 0x2490000 0x00 0x400>; interrupts = <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>; clocks = <&k3_clks 45 1>; clock-names = "fck"; assigned-clocks = <&k3_clks 45 1>; assigned-clock-parents = <&k3_clks 45 2>; power-domains = <&k3_pds 45 TI_SCI_PD_EXCLUSIVE>; ti,timer-pwm; }; main_timer10: timer@24a0000 { compatible = "ti,am654-timer"; reg = <0x00 0x24a0000 0x00 0x400>; interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>; clocks = <&k3_clks 46 1>; clock-names = "fck"; assigned-clocks = <&k3_clks 46 1>; assigned-clock-parents = <&k3_clks 46 2>; power-domains = <&k3_pds 46 TI_SCI_PD_EXCLUSIVE>; ti,timer-pwm; }; main_timer11: timer@24b0000 { compatible = "ti,am654-timer"; reg = <0x00 0x24b0000 0x00 0x400>; interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>; clocks = <&k3_clks 47 1>; clock-names = "fck"; assigned-clocks = <&k3_clks 47 1>; assigned-clock-parents = <&k3_clks 47 2>; power-domains = <&k3_pds 47 TI_SCI_PD_EXCLUSIVE>; ti,timer-pwm; }; main_esm: esm@420000 { bootph-pre-ram; compatible = "ti,j721e-esm"; reg = <0x00 0x420000 0x00 0x1000>; /* Interrupt sources: rti0, rti1, rti8, rti9, rti10, rti11 */ ti,esm-pins = <160>, <161>, <162>, <163>, <164>, <165>; }; main_uart0: serial@2800000 { compatible = "ti,am64-uart", "ti,am654-uart"; reg = <0x00 0x02800000 0x00 0x100>; interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>; clock-frequency = <48000000>; power-domains = <&k3_pds 146 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 146 0>; clock-names = "fclk"; status = "disabled"; }; main_uart1: serial@2810000 { compatible = "ti,am64-uart", "ti,am654-uart"; reg = <0x00 0x02810000 0x00 0x100>; interrupts = <GIC_SPI 179 IRQ_TYPE_LEVEL_HIGH>; clock-frequency = <48000000>; power-domains = <&k3_pds 152 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 152 0>; clock-names = "fclk"; status = "disabled"; }; main_uart2: serial@2820000 { compatible = "ti,am64-uart", "ti,am654-uart"; reg = <0x00 0x02820000 0x00 0x100>; interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>; clock-frequency = <48000000>; power-domains = <&k3_pds 153 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 153 0>; clock-names = "fclk"; status = "disabled"; }; main_uart3: serial@2830000 { compatible = "ti,am64-uart", "ti,am654-uart"; reg = <0x00 0x02830000 0x00 0x100>; interrupts = <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>; clock-frequency = <48000000>; power-domains = <&k3_pds 154 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 154 0>; clock-names = "fclk"; status = "disabled"; }; main_uart4: serial@2840000 { compatible = "ti,am64-uart", "ti,am654-uart"; reg = <0x00 0x02840000 0x00 0x100>; interrupts = <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>; clock-frequency = <48000000>; power-domains = <&k3_pds 155 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 155 0>; clock-names = "fclk"; status = "disabled"; }; main_uart5: serial@2850000 { compatible = "ti,am64-uart", "ti,am654-uart"; reg = <0x00 0x02850000 0x00 0x100>; interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>; clock-frequency = <48000000>; power-domains = <&k3_pds 156 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 156 0>; clock-names = "fclk"; status = "disabled"; }; main_uart6: serial@2860000 { compatible = "ti,am64-uart", "ti,am654-uart"; reg = <0x00 0x02860000 0x00 0x100>; interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>; clock-frequency = <48000000>; power-domains = <&k3_pds 158 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 158 0>; clock-names = "fclk"; status = "disabled"; }; main_i2c0: i2c@20000000 { compatible = "ti,am64-i2c", "ti,omap4-i2c"; reg = <0x00 0x20000000 0x00 0x100>; interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; power-domains = <&k3_pds 102 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 102 2>; clock-names = "fck"; status = "disabled"; }; main_i2c1: i2c@20010000 { compatible = "ti,am64-i2c", "ti,omap4-i2c"; reg = <0x00 0x20010000 0x00 0x100>; interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; power-domains = <&k3_pds 103 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 103 2>; clock-names = "fck"; status = "disabled"; }; main_i2c2: i2c@20020000 { compatible = "ti,am64-i2c", "ti,omap4-i2c"; reg = <0x00 0x20020000 0x00 0x100>; interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; power-domains = <&k3_pds 104 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 104 2>; clock-names = "fck"; status = "disabled"; }; main_i2c3: i2c@20030000 { compatible = "ti,am64-i2c", "ti,omap4-i2c"; reg = <0x00 0x20030000 0x00 0x100>; interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; power-domains = <&k3_pds 105 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 105 2>; clock-names = "fck"; status = "disabled"; }; main_spi0: spi@20100000 { compatible = "ti,am654-mcspi", "ti,omap4-mcspi"; reg = <0x00 0x20100000 0x00 0x400>; interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; power-domains = <&k3_pds 141 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 141 0>; dmas = <&main_pktdma 0xc300 0>, <&main_pktdma 0x4300 0>; dma-names = "tx0", "rx0"; status = "disabled"; }; main_spi1: spi@20110000 { compatible = "ti,am654-mcspi","ti,omap4-mcspi"; reg = <0x00 0x20110000 0x00 0x400>; interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; power-domains = <&k3_pds 142 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 142 0>; status = "disabled"; }; main_spi2: spi@20120000 { compatible = "ti,am654-mcspi","ti,omap4-mcspi"; reg = <0x00 0x20120000 0x00 0x400>; interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; power-domains = <&k3_pds 143 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 143 0>; status = "disabled"; }; main_spi3: spi@20130000 { compatible = "ti,am654-mcspi","ti,omap4-mcspi"; reg = <0x00 0x20130000 0x00 0x400>; interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; power-domains = <&k3_pds 144 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 144 0>; status = "disabled"; }; main_spi4: spi@20140000 { compatible = "ti,am654-mcspi","ti,omap4-mcspi"; reg = <0x00 0x20140000 0x00 0x400>; interrupts = <GIC_SPI 175 IRQ_TYPE_LEVEL_HIGH>; #address-cells = <1>; #size-cells = <0>; power-domains = <&k3_pds 145 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 145 0>; status = "disabled"; }; main_gpio_intr: interrupt-controller@a00000 { compatible = "ti,sci-intr"; reg = <0x00 0x00a00000 0x00 0x800>; ti,intr-trigger-type = <1>; interrupt-controller; interrupt-parent = <&gic500>; #interrupt-cells = <1>; ti,sci = <&dmsc>; ti,sci-dev-id = <3>; ti,interrupt-ranges = <0 32 16>; }; main_gpio0: gpio@600000 { compatible = "ti,am64-gpio", "ti,keystone-gpio"; reg = <0x0 0x00600000 0x0 0x100>; gpio-controller; #gpio-cells = <2>; interrupt-parent = <&main_gpio_intr>; interrupts = <190>, <191>, <192>, <193>, <194>, <195>; interrupt-controller; #interrupt-cells = <2>; ti,ngpio = <87>; ti,davinci-gpio-unbanked = <0>; power-domains = <&k3_pds 77 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 77 0>; clock-names = "gpio"; }; main_gpio1: gpio@601000 { compatible = "ti,am64-gpio", "ti,keystone-gpio"; reg = <0x0 0x00601000 0x0 0x100>; gpio-controller; #gpio-cells = <2>; interrupt-parent = <&main_gpio_intr>; interrupts = <180>, <181>, <182>, <183>, <184>, <185>; interrupt-controller; #interrupt-cells = <2>; ti,ngpio = <88>; ti,davinci-gpio-unbanked = <0>; power-domains = <&k3_pds 78 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 78 0>; clock-names = "gpio"; }; sdhci0: mmc@fa10000 { compatible = "ti,am64-sdhci-8bit"; reg = <0x00 0xfa10000 0x00 0x260>, <0x00 0xfa18000 0x00 0x134>; interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>; power-domains = <&k3_pds 57 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 57 0>, <&k3_clks 57 1>; clock-names = "clk_ahb", "clk_xin"; bus-width = <8>; mmc-ddr-1_8v; mmc-hs200-1_8v; ti,clkbuf-sel = <0x7>; ti,trm-icp = <0x2>; ti,otap-del-sel-legacy = <0x0>; ti,otap-del-sel-mmc-hs = <0x0>; ti,otap-del-sel-ddr52 = <0x6>; ti,otap-del-sel-hs200 = <0x7>; ti,itap-del-sel-legacy = <0x10>; ti,itap-del-sel-mmc-hs = <0xa>; ti,itap-del-sel-ddr52 = <0x3>; status = "disabled"; }; sdhci1: mmc@fa00000 { compatible = "ti,am64-sdhci-4bit"; reg = <0x00 0xfa00000 0x00 0x260>, <0x00 0xfa08000 0x00 0x134>; interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>; power-domains = <&k3_pds 58 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 58 3>, <&k3_clks 58 4>; clock-names = "clk_ahb", "clk_xin"; bus-width = <4>; ti,clkbuf-sel = <0x7>; ti,otap-del-sel-legacy = <0x0>; ti,otap-del-sel-sd-hs = <0x0>; ti,otap-del-sel-sdr12 = <0xf>; ti,otap-del-sel-sdr25 = <0xf>; ti,otap-del-sel-sdr50 = <0xc>; ti,otap-del-sel-sdr104 = <0x6>; ti,otap-del-sel-ddr50 = <0x9>; ti,itap-del-sel-legacy = <0x0>; ti,itap-del-sel-sd-hs = <0x0>; ti,itap-del-sel-sdr12 = <0x0>; ti,itap-del-sel-sdr25 = <0x0>; status = "disabled"; }; cpsw3g: ethernet@8000000 { compatible = "ti,am642-cpsw-nuss"; #address-cells = <2>; #size-cells = <2>; reg = <0x0 0x8000000 0x0 0x200000>; reg-names = "cpsw_nuss"; ranges = <0x0 0x0 0x0 0x8000000 0x0 0x200000>; clocks = <&k3_clks 13 0>; assigned-clocks = <&k3_clks 13 1>; assigned-clock-parents = <&k3_clks 13 9>; clock-names = "fck"; power-domains = <&k3_pds 13 TI_SCI_PD_EXCLUSIVE>; dmas = <&main_pktdma 0xC500 15>, <&main_pktdma 0xC501 15>, <&main_pktdma 0xC502 15>, <&main_pktdma 0xC503 15>, <&main_pktdma 0xC504 15>, <&main_pktdma 0xC505 15>, <&main_pktdma 0xC506 15>, <&main_pktdma 0xC507 15>, <&main_pktdma 0x4500 15>; dma-names = "tx0", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "rx"; ethernet-ports { #address-cells = <1>; #size-cells = <0>; cpsw_port1: port@1 { reg = <1>; ti,mac-only; label = "port1"; phys = <&phy_gmii_sel 1>; mac-address = [00 00 00 00 00 00]; ti,syscon-efuse = <&main_conf 0x200>; }; cpsw_port2: port@2 { reg = <2>; ti,mac-only; label = "port2"; phys = <&phy_gmii_sel 2>; mac-address = [00 00 00 00 00 00]; }; }; cpsw3g_mdio: mdio@f00 { compatible = "ti,cpsw-mdio","ti,davinci_mdio"; reg = <0x0 0xf00 0x0 0x100>; #address-cells = <1>; #size-cells = <0>; clocks = <&k3_clks 13 0>; clock-names = "fck"; bus_freq = <1000000>; status = "disabled"; }; cpts@3d000 { compatible = "ti,j721e-cpts"; reg = <0x0 0x3d000 0x0 0x400>; clocks = <&k3_clks 13 1>; clock-names = "cpts"; interrupts-extended = <&gic500 GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "cpts"; ti,cpts-ext-ts-inputs = <4>; ti,cpts-periodic-outputs = <2>; }; }; main_cpts0: cpts@39000000 { compatible = "ti,j721e-cpts"; reg = <0x0 0x39000000 0x0 0x400>; reg-names = "cpts"; power-domains = <&k3_pds 84 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 84 0>; clock-names = "cpts"; assigned-clocks = <&k3_clks 84 0>; assigned-clock-parents = <&k3_clks 84 8>; interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "cpts"; ti,cpts-periodic-outputs = <6>; ti,cpts-ext-ts-inputs = <8>; }; timesync_router: pinctrl@a40000 { compatible = "pinctrl-single"; reg = <0x0 0xa40000 0x0 0x800>; #pinctrl-cells = <1>; pinctrl-single,register-width = <32>; pinctrl-single,function-mask = <0x000107ff>; }; usbss0: cdns-usb@f900000 { compatible = "ti,am64-usb"; reg = <0x00 0xf900000 0x00 0x100>; power-domains = <&k3_pds 161 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 161 9>, <&k3_clks 161 1>; clock-names = "ref", "lpm"; assigned-clocks = <&k3_clks 161 9>; /* USB2_REFCLK */ assigned-clock-parents = <&k3_clks 161 10>; /* HF0SC0 */ #address-cells = <2>; #size-cells = <2>; ranges; usb0: usb@f400000 { compatible = "cdns,usb3"; reg = <0x00 0xf400000 0x00 0x10000>, <0x00 0xf410000 0x00 0x10000>, <0x00 0xf420000 0x00 0x10000>; reg-names = "otg", "xhci", "dev"; interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>, /* irq.0 */ <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>, /* irq.6 */ <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>; /* otgirq */ interrupt-names = "host", "peripheral", "otg"; maximum-speed = "super-speed"; dr_mode = "otg"; }; }; tscadc0: tscadc@28001000 { compatible = "ti,am654-tscadc", "ti,am3359-tscadc"; reg = <0x00 0x28001000 0x00 0x1000>; interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; power-domains = <&k3_pds 0 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 0 0>; assigned-clocks = <&k3_clks 0 0>; assigned-clock-parents = <&k3_clks 0 3>; assigned-clock-rates = <60000000>; clock-names = "fck"; status = "disabled"; adc { #io-channel-cells = <1>; compatible = "ti,am654-adc", "ti,am3359-adc"; }; }; fss: bus@fc00000 { compatible = "simple-bus"; reg = <0x00 0x0fc00000 0x00 0x70000>; #address-cells = <2>; #size-cells = <2>; ranges; ospi0: spi@fc40000 { compatible = "ti,am654-ospi", "cdns,qspi-nor"; reg = <0x00 0x0fc40000 0x00 0x100>, <0x05 0x00000000 0x01 0x00000000>; interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>; cdns,fifo-depth = <256>; cdns,fifo-width = <4>; cdns,trigger-address = <0x0>; cdns,phase-detect-selector = <2>; #address-cells = <0x1>; #size-cells = <0x0>; clocks = <&k3_clks 75 6>; assigned-clocks = <&k3_clks 75 6>; assigned-clock-parents = <&k3_clks 75 7>; assigned-clock-rates = <166666666>; power-domains = <&k3_pds 75 TI_SCI_PD_EXCLUSIVE>; status = "disabled"; }; }; hwspinlock: spinlock@2a000000 { compatible = "ti,am64-hwspinlock"; reg = <0x00 0x2a000000 0x00 0x1000>; #hwlock-cells = <1>; }; mailbox0_cluster2: mailbox@29020000 { compatible = "ti,am64-mailbox"; reg = <0x00 0x29020000 0x00 0x200>; interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>; #mbox-cells = <1>; ti,mbox-num-users = <4>; ti,mbox-num-fifos = <16>; status = "disabled"; }; mailbox0_cluster3: mailbox@29030000 { compatible = "ti,am64-mailbox"; reg = <0x00 0x29030000 0x00 0x200>; interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; #mbox-cells = <1>; ti,mbox-num-users = <4>; ti,mbox-num-fifos = <16>; status = "disabled"; }; mailbox0_cluster4: mailbox@29040000 { compatible = "ti,am64-mailbox"; reg = <0x00 0x29040000 0x00 0x200>; interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; #mbox-cells = <1>; ti,mbox-num-users = <4>; ti,mbox-num-fifos = <16>; status = "disabled"; }; mailbox0_cluster5: mailbox@29050000 { compatible = "ti,am64-mailbox"; reg = <0x00 0x29050000 0x00 0x200>; interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>; #mbox-cells = <1>; ti,mbox-num-users = <4>; ti,mbox-num-fifos = <16>; status = "disabled"; }; mailbox0_cluster6: mailbox@29060000 { compatible = "ti,am64-mailbox"; reg = <0x00 0x29060000 0x00 0x200>; interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; #mbox-cells = <1>; ti,mbox-num-users = <4>; ti,mbox-num-fifos = <16>; status = "disabled"; }; mailbox0_cluster7: mailbox@29070000 { compatible = "ti,am64-mailbox"; reg = <0x00 0x29070000 0x00 0x200>; interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; #mbox-cells = <1>; ti,mbox-num-users = <4>; ti,mbox-num-fifos = <16>; status = "disabled"; }; main_r5fss0: r5fss@78000000 { compatible = "ti,am64-r5fss"; ti,cluster-mode = <0>; #address-cells = <1>; #size-cells = <1>; ranges = <0x78000000 0x00 0x78000000 0x10000>, <0x78100000 0x00 0x78100000 0x10000>, <0x78200000 0x00 0x78200000 0x08000>, <0x78300000 0x00 0x78300000 0x08000>; power-domains = <&k3_pds 119 TI_SCI_PD_EXCLUSIVE>; main_r5fss0_core0: r5f@78000000 { compatible = "ti,am64-r5f"; reg = <0x78000000 0x00010000>, <0x78100000 0x00010000>; reg-names = "atcm", "btcm"; ti,sci = <&dmsc>; ti,sci-dev-id = <121>; ti,sci-proc-ids = <0x01 0xff>; resets = <&k3_reset 121 1>; firmware-name = "am64-main-r5f0_0-fw"; ti,atcm-enable = <1>; ti,btcm-enable = <1>; ti,loczrama = <1>; }; main_r5fss0_core1: r5f@78200000 { compatible = "ti,am64-r5f"; reg = <0x78200000 0x00008000>, <0x78300000 0x00008000>; reg-names = "atcm", "btcm"; ti,sci = <&dmsc>; ti,sci-dev-id = <122>; ti,sci-proc-ids = <0x02 0xff>; resets = <&k3_reset 122 1>; firmware-name = "am64-main-r5f0_1-fw"; ti,atcm-enable = <1>; ti,btcm-enable = <1>; ti,loczrama = <1>; }; }; main_r5fss1: r5fss@78400000 { compatible = "ti,am64-r5fss"; ti,cluster-mode = <0>; #address-cells = <1>; #size-cells = <1>; ranges = <0x78400000 0x00 0x78400000 0x10000>, <0x78500000 0x00 0x78500000 0x10000>, <0x78600000 0x00 0x78600000 0x08000>, <0x78700000 0x00 0x78700000 0x08000>; power-domains = <&k3_pds 120 TI_SCI_PD_EXCLUSIVE>; main_r5fss1_core0: r5f@78400000 { compatible = "ti,am64-r5f"; reg = <0x78400000 0x00010000>, <0x78500000 0x00010000>; reg-names = "atcm", "btcm"; ti,sci = <&dmsc>; ti,sci-dev-id = <123>; ti,sci-proc-ids = <0x06 0xff>; resets = <&k3_reset 123 1>; firmware-name = "am64-main-r5f1_0-fw"; ti,atcm-enable = <1>; ti,btcm-enable = <1>; ti,loczrama = <1>; }; main_r5fss1_core1: r5f@78600000 { compatible = "ti,am64-r5f"; reg = <0x78600000 0x00008000>, <0x78700000 0x00008000>; reg-names = "atcm", "btcm"; ti,sci = <&dmsc>; ti,sci-dev-id = <124>; ti,sci-proc-ids = <0x07 0xff>; resets = <&k3_reset 124 1>; firmware-name = "am64-main-r5f1_1-fw"; ti,atcm-enable = <1>; ti,btcm-enable = <1>; ti,loczrama = <1>; }; }; serdes_wiz0: wiz@f000000 { compatible = "ti,am64-wiz-10g"; #address-cells = <1>; #size-cells = <1>; power-domains = <&k3_pds 162 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 162 0>, <&k3_clks 162 1>, <&serdes_refclk>; clock-names = "fck", "core_ref_clk", "ext_ref_clk"; num-lanes = <1>; #reset-cells = <1>; #clock-cells = <1>; ranges = <0x0f000000 0x0 0x0f000000 0x00010000>; assigned-clocks = <&k3_clks 162 1>; assigned-clock-parents = <&k3_clks 162 5>; serdes0: serdes@f000000 { compatible = "ti,j721e-serdes-10g"; reg = <0x0f000000 0x00010000>; reg-names = "torrent_phy"; resets = <&serdes_wiz0 0>; reset-names = "torrent_reset"; clocks = <&serdes_wiz0 TI_WIZ_PLL0_REFCLK>, <&serdes_wiz0 TI_WIZ_PHY_EN_REFCLK>; clock-names = "refclk", "phy_en_refclk"; assigned-clocks = <&serdes_wiz0 TI_WIZ_PLL0_REFCLK>, <&serdes_wiz0 TI_WIZ_PLL1_REFCLK>, <&serdes_wiz0 TI_WIZ_REFCLK_DIG>; assigned-clock-parents = <&k3_clks 162 1>, <&k3_clks 162 1>, <&k3_clks 162 1>; #address-cells = <1>; #size-cells = <0>; #clock-cells = <1>; }; }; pcie0_rc: pcie@f102000 { compatible = "ti,am64-pcie-host", "ti,j721e-pcie-host"; reg = <0x00 0x0f102000 0x00 0x1000>, <0x00 0x0f100000 0x00 0x400>, <0x00 0x0d000000 0x00 0x00800000>, <0x00 0x68000000 0x00 0x00001000>; reg-names = "intd_cfg", "user_cfg", "reg", "cfg"; interrupt-names = "link_state"; interrupts = <GIC_SPI 203 IRQ_TYPE_EDGE_RISING>; device_type = "pci"; ti,syscon-pcie-ctrl = <&main_conf 0x4070>; max-link-speed = <2>; num-lanes = <1>; power-domains = <&k3_pds 114 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 114 0>, <&serdes0 CDNS_TORRENT_REFCLK_DRIVER>; clock-names = "fck", "pcie_refclk"; #address-cells = <3>; #size-cells = <2>; bus-range = <0x0 0xff>; cdns,no-bar-match-nbits = <64>; vendor-id = <0x104c>; device-id = <0xb010>; msi-map = <0x0 &gic_its 0x0 0x10000>; ranges = <0x01000000 0x00 0x68001000 0x00 0x68001000 0x00 0x0010000>, <0x02000000 0x00 0x68011000 0x00 0x68011000 0x00 0x7fef000>; dma-ranges = <0x02000000 0x0 0x0 0x0 0x0 0x00000010 0x0>; status = "disabled"; }; epwm0: pwm@23000000 { compatible = "ti,am64-epwm", "ti,am3352-ehrpwm"; #pwm-cells = <3>; reg = <0x0 0x23000000 0x0 0x100>; power-domains = <&k3_pds 86 TI_SCI_PD_EXCLUSIVE>; clocks = <&epwm_tbclk 0>, <&k3_clks 86 0>; clock-names = "tbclk", "fck"; status = "disabled"; }; epwm1: pwm@23010000 { compatible = "ti,am64-epwm", "ti,am3352-ehrpwm"; #pwm-cells = <3>; reg = <0x0 0x23010000 0x0 0x100>; power-domains = <&k3_pds 87 TI_SCI_PD_EXCLUSIVE>; clocks = <&epwm_tbclk 1>, <&k3_clks 87 0>; clock-names = "tbclk", "fck"; status = "disabled"; }; epwm2: pwm@23020000 { compatible = "ti,am64-epwm", "ti,am3352-ehrpwm"; #pwm-cells = <3>; reg = <0x0 0x23020000 0x0 0x100>; power-domains = <&k3_pds 88 TI_SCI_PD_EXCLUSIVE>; clocks = <&epwm_tbclk 2>, <&k3_clks 88 0>; clock-names = "tbclk", "fck"; status = "disabled"; }; epwm3: pwm@23030000 { compatible = "ti,am64-epwm", "ti,am3352-ehrpwm"; #pwm-cells = <3>; reg = <0x0 0x23030000 0x0 0x100>; power-domains = <&k3_pds 89 TI_SCI_PD_EXCLUSIVE>; clocks = <&epwm_tbclk 3>, <&k3_clks 89 0>; clock-names = "tbclk", "fck"; status = "disabled"; }; epwm4: pwm@23040000 { compatible = "ti,am64-epwm", "ti,am3352-ehrpwm"; #pwm-cells = <3>; reg = <0x0 0x23040000 0x0 0x100>; power-domains = <&k3_pds 90 TI_SCI_PD_EXCLUSIVE>; clocks = <&epwm_tbclk 4>, <&k3_clks 90 0>; clock-names = "tbclk", "fck"; status = "disabled"; }; epwm5: pwm@23050000 { compatible = "ti,am64-epwm", "ti,am3352-ehrpwm"; #pwm-cells = <3>; reg = <0x0 0x23050000 0x0 0x100>; power-domains = <&k3_pds 91 TI_SCI_PD_EXCLUSIVE>; clocks = <&epwm_tbclk 5>, <&k3_clks 91 0>; clock-names = "tbclk", "fck"; status = "disabled"; }; epwm6: pwm@23060000 { compatible = "ti,am64-epwm", "ti,am3352-ehrpwm"; #pwm-cells = <3>; reg = <0x0 0x23060000 0x0 0x100>; power-domains = <&k3_pds 92 TI_SCI_PD_EXCLUSIVE>; clocks = <&epwm_tbclk 6>, <&k3_clks 92 0>; clock-names = "tbclk", "fck"; status = "disabled"; }; epwm7: pwm@23070000 { compatible = "ti,am64-epwm", "ti,am3352-ehrpwm"; #pwm-cells = <3>; reg = <0x0 0x23070000 0x0 0x100>; power-domains = <&k3_pds 93 TI_SCI_PD_EXCLUSIVE>; clocks = <&epwm_tbclk 7>, <&k3_clks 93 0>; clock-names = "tbclk", "fck"; status = "disabled"; }; epwm8: pwm@23080000 { compatible = "ti,am64-epwm", "ti,am3352-ehrpwm"; #pwm-cells = <3>; reg = <0x0 0x23080000 0x0 0x100>; power-domains = <&k3_pds 94 TI_SCI_PD_EXCLUSIVE>; clocks = <&epwm_tbclk 8>, <&k3_clks 94 0>; clock-names = "tbclk", "fck"; status = "disabled"; }; ecap0: pwm@23100000 { compatible = "ti,am64-ecap", "ti,am3352-ecap"; #pwm-cells = <3>; reg = <0x0 0x23100000 0x0 0x60>; power-domains = <&k3_pds 51 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 51 0>; clock-names = "fck"; status = "disabled"; }; ecap1: pwm@23110000 { compatible = "ti,am64-ecap", "ti,am3352-ecap"; #pwm-cells = <3>; reg = <0x0 0x23110000 0x0 0x60>; power-domains = <&k3_pds 52 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 52 0>; clock-names = "fck"; status = "disabled"; }; ecap2: pwm@23120000 { compatible = "ti,am64-ecap", "ti,am3352-ecap"; #pwm-cells = <3>; reg = <0x0 0x23120000 0x0 0x60>; power-domains = <&k3_pds 53 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 53 0>; clock-names = "fck"; status = "disabled"; }; eqep0: counter@23200000 { compatible = "ti,am62-eqep"; reg = <0x00 0x23200000 0x00 0x100>; power-domains = <&k3_pds 59 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 59 0>; interrupts = <GIC_SPI 116 IRQ_TYPE_EDGE_RISING>; status = "disabled"; }; eqep1: counter@23210000 { compatible = "ti,am62-eqep"; reg = <0x00 0x23210000 0x00 0x100>; power-domains = <&k3_pds 60 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 60 0>; interrupts = <GIC_SPI 117 IRQ_TYPE_EDGE_RISING>; status = "disabled"; }; eqep2: counter@23220000 { compatible = "ti,am62-eqep"; reg = <0x00 0x23220000 0x00 0x100>; power-domains = <&k3_pds 62 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 62 0>; interrupts = <GIC_SPI 118 IRQ_TYPE_EDGE_RISING>; status = "disabled"; }; main_rti0: watchdog@e000000 { compatible = "ti,j7-rti-wdt"; reg = <0x00 0xe000000 0x00 0x100>; clocks = <&k3_clks 125 0>; power-domains = <&k3_pds 125 TI_SCI_PD_EXCLUSIVE>; assigned-clocks = <&k3_clks 125 0>; assigned-clock-parents = <&k3_clks 125 2>; }; main_rti1: watchdog@e010000 { compatible = "ti,j7-rti-wdt"; reg = <0x00 0xe010000 0x00 0x100>; clocks = <&k3_clks 126 0>; power-domains = <&k3_pds 126 TI_SCI_PD_EXCLUSIVE>; assigned-clocks = <&k3_clks 126 0>; assigned-clock-parents = <&k3_clks 126 2>; }; icssg0: icssg@30000000 { compatible = "ti,am642-icssg"; reg = <0x00 0x30000000 0x00 0x80000>; power-domains = <&k3_pds 81 TI_SCI_PD_EXCLUSIVE>; #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x00 0x30000000 0x80000>; clocks = <&k3_clks 81 0>, /* icssg0_core_clk */ <&k3_clks 81 3>, /* icssg0_iep_clk */ <&k3_clks 81 16>, /* icssg0_rgmii_mhz_250_clk */ <&k3_clks 81 17>, /* icssg0_rgmii_mhz_50_clk */ <&k3_clks 81 18>, /* icssg0_rgmii_mhz_5_clk */ <&k3_clks 81 19>, /* icssg0_uart_clk */ <&k3_clks 81 20>; /* icssg0_iclk */ assigned-clocks = <&k3_clks 81 0>; assigned-clock-parents = <&k3_clks 81 2>; icssg0_mem: memories@0 { reg = <0x0 0x2000>, <0x2000 0x2000>, <0x10000 0x10000>; reg-names = "dram0", "dram1", "shrdram2"; }; icssg0_cfg: cfg@26000 { compatible = "ti,pruss-cfg", "syscon"; reg = <0x26000 0x200>; #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x26000 0x2000>; clocks { #address-cells = <1>; #size-cells = <0>; icssg0_coreclk_mux: coreclk-mux@3c { reg = <0x3c>; #clock-cells = <0>; clocks = <&k3_clks 81 0>, /* icssg0_core_clk */ <&k3_clks 81 20>; /* icssg0_iclk */ assigned-clocks = <&icssg0_coreclk_mux>; assigned-clock-parents = <&k3_clks 81 0>; }; icssg0_iepclk_mux: iepclk-mux@30 { reg = <0x30>; #clock-cells = <0>; clocks = <&k3_clks 81 3>, /* icssg0_iep_clk */ <&icssg0_coreclk_mux>; /* icssg0_coreclk_mux */ assigned-clocks = <&icssg0_iepclk_mux>; assigned-clock-parents = <&icssg0_coreclk_mux>; }; }; }; icssg0_iep0: iep@2e000 { compatible = "ti,am654-icss-iep"; reg = <0x2e000 0x1000>; clocks = <&icssg0_iepclk_mux>; }; icssg0_iep1: iep@2f000 { compatible = "ti,am654-icss-iep"; reg = <0x2f000 0x1000>; clocks = <&icssg0_iepclk_mux>; }; icssg0_mii_rt: mii-rt@32000 { compatible = "ti,pruss-mii", "syscon"; reg = <0x32000 0x100>; }; icssg0_mii_g_rt: mii-g-rt@33000 { compatible = "ti,pruss-mii-g", "syscon"; reg = <0x33000 0x1000>; }; icssg0_pa_stats: pa-stats@2c000 { compatible = "ti,pruss-pa-st", "syscon"; reg = <0x2c000 0x1000>; }; icssg0_intc: interrupt-controller@20000 { compatible = "ti,icssg-intc"; reg = <0x20000 0x2000>; interrupt-controller; #interrupt-cells = <3>; interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "host_intr0", "host_intr1", "host_intr2", "host_intr3", "host_intr4", "host_intr5", "host_intr6", "host_intr7"; }; pru0_0: pru@34000 { compatible = "ti,am642-pru"; reg = <0x34000 0x3000>, <0x22000 0x100>, <0x22400 0x100>; reg-names = "iram", "control", "debug"; firmware-name = "am64x-pru0_0-fw"; interrupt-parent = <&icssg0_intc>; interrupts = <16 2 2>; interrupt-names = "vring"; }; rtu0_0: rtu@4000 { compatible = "ti,am642-rtu"; reg = <0x4000 0x2000>, <0x23000 0x100>, <0x23400 0x100>; reg-names = "iram", "control", "debug"; firmware-name = "am64x-rtu0_0-fw"; interrupt-parent = <&icssg0_intc>; interrupts = <20 4 4>; interrupt-names = "vring"; }; tx_pru0_0: txpru@a000 { compatible = "ti,am642-tx-pru"; reg = <0xa000 0x1800>, <0x25000 0x100>, <0x25400 0x100>; reg-names = "iram", "control", "debug"; firmware-name = "am64x-txpru0_0-fw"; }; pru0_1: pru@38000 { compatible = "ti,am642-pru"; reg = <0x38000 0x3000>, <0x24000 0x100>, <0x24400 0x100>; reg-names = "iram", "control", "debug"; firmware-name = "am64x-pru0_1-fw"; interrupt-parent = <&icssg0_intc>; interrupts = <18 3 3>; interrupt-names = "vring"; }; rtu0_1: rtu@6000 { compatible = "ti,am642-rtu"; reg = <0x6000 0x2000>, <0x23800 0x100>, <0x23c00 0x100>; reg-names = "iram", "control", "debug"; firmware-name = "am64x-rtu0_1-fw"; interrupt-parent = <&icssg0_intc>; interrupts = <22 5 5>; interrupt-names = "vring"; }; tx_pru0_1: txpru@c000 { compatible = "ti,am642-tx-pru"; reg = <0xc000 0x1800>, <0x25800 0x100>, <0x25c00 0x100>; reg-names = "iram", "control", "debug"; firmware-name = "am64x-txpru0_1-fw"; }; icssg0_mdio: mdio@32400 { compatible = "ti,davinci_mdio"; reg = <0x32400 0x100>; clocks = <&k3_clks 62 3>; clock-names = "fck"; #address-cells = <1>; #size-cells = <0>; bus_freq = <1000000>; status = "disabled"; }; }; main_mcan0: can@20701000 { compatible = "bosch,m_can"; reg = <0x00 0x20701000 0x00 0x200>, <0x00 0x20708000 0x00 0x8000>; reg-names = "m_can", "message_ram"; power-domains = <&k3_pds 98 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 98 5>, <&k3_clks 98 0>; clock-names = "hclk", "cclk"; interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "int0", "int1"; bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>; status = "disabled"; }; main_mcan1: can@20711000 { compatible = "bosch,m_can"; reg = <0x00 0x20711000 0x00 0x200>, <0x00 0x20718000 0x00 0x8000>; reg-names = "m_can", "message_ram"; power-domains = <&k3_pds 99 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 99 5>, <&k3_clks 99 0>; clock-names = "hclk", "cclk"; interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "int0", "int1"; bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>; status = "disabled"; }; crypto: crypto@40900000 { compatible = "ti,am64-sa2ul"; reg = <0x00 0x40900000 0x00 0x1200>; power-domains = <&k3_pds 133 TI_SCI_PD_SHARED>; #address-cells = <2>; #size-cells = <2>; ranges = <0x00 0x40900000 0x00 0x40900000 0x00 0x30000>; dmas = <&main_pktdma 0xc001 0>, <&main_pktdma 0x4002 0>, <&main_pktdma 0x4003 0>; dma-names = "tx", "rx1", "rx2"; rng: rng@40910000 { compatible = "inside-secure,safexcel-eip76"; reg = <0x00 0x40910000 0x00 0x7d>; interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>; status = "disabled"; /* Used by OP-TEE */ }; }; gpmc0: memory-controller@3b000000 { compatible = "ti,am64-gpmc"; power-domains = <&k3_pds 80 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 80 0>; clock-names = "fck"; reg = <0x00 0x3b000000 0x00 0x400>, <0x00 0x50000000 0x00 0x8000000>; reg-names = "cfg", "data"; interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>; gpmc,num-cs = <3>; gpmc,num-waitpins = <2>; #address-cells = <2>; #size-cells = <1>; interrupt-controller; #interrupt-cells = <2>; gpio-controller; #gpio-cells = <2>; status = "disabled"; }; elm0: ecc@25010000 { compatible = "ti,am64-elm"; reg = <0x00 0x25010000 0x00 0x2000>; interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>; power-domains = <&k3_pds 54 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 54 0>; clock-names = "fck"; status = "disabled"; }; main_vtm0: temperature-sensor@b00000 { compatible = "ti,j7200-vtm"; reg = <0x00 0xb00000 0x00 0x400>, <0x00 0xb01000 0x00 0x400>; power-domains = <&k3_pds 95 TI_SCI_PD_EXCLUSIVE>; #thermal-sensor-cells = <1>; }; };
example.syscfg:
/** * These arguments were used when this file was generated. They will be automatically applied on subsequent loads * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments. * @cliArgs --device "AM64x" --part "Default" --package "ALV" --context "r5fss0-0" --product "MCU_PLUS_SDK_AM64x@11.01.00" * @v2CliArgs --device "AM6442" --package "FCBGA (ALV)" --variant "AM6442-D" --context "r5fss0-0" --product "MCU_PLUS_SDK_AM64x@11.01.00" * @versions {"tool":"1.23.0+4000"} */ /** * Import the modules used in this configuration. */ const eeprom = scripting.addModule("/board/eeprom/eeprom", {}, false); const eeprom1 = eeprom.addInstance(); const gpio = scripting.addModule("/drivers/gpio/gpio", {}, false); const gpio1 = gpio.addInstance(); const i2c = scripting.addModule("/drivers/i2c/i2c", {}, false); const i2c1 = i2c.addInstance(); const ipc = scripting.addModule("/drivers/ipc/ipc"); const pruicss = scripting.addModule("/drivers/pruicss/pruicss", {}, false); const pruicss1 = pruicss.addInstance(); const debug_log = scripting.addModule("/kernel/dpl/debug_log"); const dpl_cfg = scripting.addModule("/kernel/dpl/dpl_cfg"); const mpu_armv7 = scripting.addModule("/kernel/dpl/mpu_armv7", {}, false); const mpu_armv71 = mpu_armv7.addInstance(); const mpu_armv72 = mpu_armv7.addInstance(); const mpu_armv73 = mpu_armv7.addInstance(); const mpu_armv74 = mpu_armv7.addInstance(); const mpu_armv75 = mpu_armv7.addInstance(); const mpu_armv76 = mpu_armv7.addInstance(); const mpu_armv77 = mpu_armv7.addInstance(); const enet_icss = scripting.addModule("/networking/enet_icss/enet_icss", {}, false); const enet_icss1 = enet_icss.addInstance(); /** * Write custom configuration values to the imported modules. */ eeprom1.$name = "CONFIG_EEPROM0"; gpio1.$name = "CONFIG_GPIO0"; gpio1.pinDir = "OUTPUT"; gpio1.useMcuDomainPeripherals = true; gpio1.MCU_GPIO.$assign = "MCU_GPIO0"; gpio1.MCU_GPIO.gpioPin.$assign = "MCU_SPI1_CS0"; i2c1.$name = "CONFIG_I2C0"; eeprom1.peripheralDriver = i2c1; i2c1.I2C.$assign = "I2C0"; i2c1.I2C.SCL.$assign = "I2C0_SCL"; i2c1.I2C.SDA.$assign = "I2C0_SDA"; i2c1.I2C_child.$name = "drivers_i2c_v0_i2c_v0_template1"; ipc.enableLinuxIpc = true; ipc.m4fss0_0 = "NONE"; ipc.r5fss1_1 = "NONE"; ipc.r5fss1_0 = "NONE"; ipc.r5fss0_1 = "NONE"; debug_log.enableMemLog = true; debug_log.enableUartLog = true; debug_log.uartLog.$name = "CONFIG_UART0"; debug_log.uartLog.UART.$assign = "USART1"; const uart_v0_template = scripting.addModule("/drivers/uart/v0/uart_v0_template", {}, false); const uart_v0_template1 = uart_v0_template.addInstance({}, false); uart_v0_template1.$name = "drivers_uart_v0_uart_v0_template0"; debug_log.uartLog.child = uart_v0_template1; mpu_armv71.$name = "CONFIG_MPU_REGION0"; mpu_armv71.size = 31; mpu_armv71.attributes = "Device"; mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD"; mpu_armv71.allowExecute = false; mpu_armv72.$name = "CONFIG_MPU_REGION1"; mpu_armv72.size = 15; mpu_armv72.accessPermissions = "Supervisor RD+WR, User RD"; mpu_armv73.$name = "CONFIG_MPU_REGION2"; mpu_armv73.baseAddr = 0x41010000; mpu_armv73.size = 15; mpu_armv73.accessPermissions = "Supervisor RD+WR, User RD"; mpu_armv74.$name = "CONFIG_MPU_REGION3"; mpu_armv74.accessPermissions = "Supervisor RD+WR, User RD"; mpu_armv74.baseAddr = 0x70000000; mpu_armv74.size = 23; mpu_armv75.$name = "CONFIG_MPU_REGION4"; mpu_armv75.accessPermissions = "Supervisor RD+WR, User RD"; mpu_armv75.baseAddr = 0x80000000; mpu_armv75.size = 31; mpu_armv76.$name = "CONFIG_MPU_REGION5"; mpu_armv76.accessPermissions = "Supervisor RD+WR, User RD"; mpu_armv76.baseAddr = 0xA5000000; mpu_armv76.size = 23; mpu_armv76.attributes = "NonCached"; mpu_armv77.$name = "CONFIG_MPU_REGION6"; mpu_armv77.size = 27; mpu_armv77.baseAddr = 0x60000000; enet_icss1.$name = "CONFIG_ENET_ICSS0"; enet_icss1.phyToMacInterfaceMode = "RGMII"; enet_icss1.mdioMode = "MDIO_MODE_MANUAL"; enet_icss1.PktInfoOnlyEnable = true; enet_icss1.LargePoolPktCount = 32; enet_icss1.QoS = 3; enet_icss1.txDmaChannel[0].$name = "ENET_DMA_TX_CH0"; enet_icss1.rxDmaChannel[0].$name = "ENET_DMA_RX_CH0"; enet_icss1.rxDmaChannel[0].PacketsCount = 16; enet_icss1.rxDmaChannel[1].$name = "ENET_DMA_RX_CH1"; enet_icss1.rxDmaChannel[1].PacketsCount = 16; enet_icss1.rxDmaChannel[1].chIdx = 1; enet_icss1.rxDmaChannel[1].macAddrCount = 0; enet_icss1.netifInstance.create(1); enet_icss1.netifInstance[0].$name = "NETIF_INST_ID0"; enet_icss1.netifInstance[0].rxDmaChNum = ["0","1"]; enet_icss1.PRU_ICSSG1_RGMII1.$assign = "PRU_ICSSG1_RGMII1"; const ethphy_cpsw_icssg = scripting.addModule("/board/ethphy_cpsw_icssg/ethphy_cpsw_icssg", {}, false); const ethphy_cpsw_icssg1 = ethphy_cpsw_icssg.addInstance({}, false); ethphy_cpsw_icssg1.$name = "CONFIG_ENET_ETHPHY0"; enet_icss1.ethphy2 = ethphy_cpsw_icssg1; const ethphy_cpsw_icssg2 = ethphy_cpsw_icssg.addInstance({}, false); ethphy_cpsw_icssg2.$name = "CONFIG_ENET_ETHPHY1"; enet_icss1.ethphy3 = ethphy_cpsw_icssg2; enet_icss1.icss = pruicss1; pruicss1.$name = "CONFIG_PRU_ICSS1"; pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; pruicss1.intcMapping.create(2); pruicss1.intcMapping[0].$name = "CONFIG_ICSS1_INTC_MAPPING0"; pruicss1.intcMapping[0].event = "41"; pruicss1.intcMapping[0].channel = "7"; pruicss1.intcMapping[0].host = "8"; pruicss1.intcMapping[1].$name = "CONFIG_ICSS1_INTC_MAPPING1"; pruicss1.intcMapping[1].channel = "7"; pruicss1.intcMapping[1].host = "8"; pruicss1.intcMapping[1].event = "53"; const udma = scripting.addModule("/drivers/udma/udma", {}, false); const udma1 = udma.addInstance({}, false); enet_icss1.udmaDrv = udma1; /** * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future * version of the tool will not impact the pinmux you originally saw. These lines can be completely deleted in order to * re-solve from scratch. */ debug_log.uartLog.UART.RXD.$suggestSolution = "UART1_RXD"; debug_log.uartLog.UART.TXD.$suggestSolution = "UART1_TXD"; enet_icss1.PRU_ICSSG1_MDIO.$suggestSolution = "PRU_ICSSG1_MDIO0"; enet_icss1.PRU_ICSSG1_MDIO.MDC.$suggestSolution = "PRG1_MDIO0_MDC"; enet_icss1.PRU_ICSSG1_MDIO.MDIO.$suggestSolution = "PRG1_MDIO0_MDIO"; enet_icss1.PRU_ICSSG1_IEP.$suggestSolution = "PRU_ICSSG1_IEP0"; enet_icss1.PRU_ICSSG1_IEP.EDC_LATCH_IN0.$suggestSolution = "PRG1_PRU0_GPO18"; enet_icss1.PRU_ICSSG1_IEP.EDC_SYNC_OUT0.$suggestSolution = "PRG1_PRU0_GPO19"; enet_icss1.PRU_ICSSG1_RGMII1.RD0.$suggestSolution = "PRG1_PRU0_GPO0"; enet_icss1.PRU_ICSSG1_RGMII1.RD1.$suggestSolution = "PRG1_PRU0_GPO1"; enet_icss1.PRU_ICSSG1_RGMII1.RD2.$suggestSolution = "PRG1_PRU0_GPO2"; enet_icss1.PRU_ICSSG1_RGMII1.RD3.$suggestSolution = "PRG1_PRU0_GPO3"; enet_icss1.PRU_ICSSG1_RGMII1.RXC.$suggestSolution = "PRG1_PRU0_GPO6"; enet_icss1.PRU_ICSSG1_RGMII1.RX_CTL.$suggestSolution = "PRG1_PRU0_GPO4"; enet_icss1.PRU_ICSSG1_RGMII1.TD0.$suggestSolution = "PRG1_PRU0_GPO11"; enet_icss1.PRU_ICSSG1_RGMII1.TD1.$suggestSolution = "PRG1_PRU0_GPO12"; enet_icss1.PRU_ICSSG1_RGMII1.TD2.$suggestSolution = "PRG1_PRU0_GPO13"; enet_icss1.PRU_ICSSG1_RGMII1.TD3.$suggestSolution = "PRG1_PRU0_GPO14"; enet_icss1.PRU_ICSSG1_RGMII1.TXC.$suggestSolution = "PRG1_PRU0_GPO16"; enet_icss1.PRU_ICSSG1_RGMII1.TX_CTL.$suggestSolution = "PRG1_PRU0_GPO15"; enet_icss1.PRU_ICSSG1_RGMII2.$suggestSolution = "PRU_ICSSG1_RGMII2"; enet_icss1.PRU_ICSSG1_RGMII2.RD0.$suggestSolution = "PRG1_PRU1_GPO0"; enet_icss1.PRU_ICSSG1_RGMII2.RD1.$suggestSolution = "PRG1_PRU1_GPO1"; enet_icss1.PRU_ICSSG1_RGMII2.RD2.$suggestSolution = "PRG1_PRU1_GPO2"; enet_icss1.PRU_ICSSG1_RGMII2.RD3.$suggestSolution = "PRG1_PRU1_GPO3"; enet_icss1.PRU_ICSSG1_RGMII2.RXC.$suggestSolution = "PRG1_PRU1_GPO6"; enet_icss1.PRU_ICSSG1_RGMII2.RX_CTL.$suggestSolution = "PRG1_PRU1_GPO4"; enet_icss1.PRU_ICSSG1_RGMII2.TD0.$suggestSolution = "PRG1_PRU1_GPO11"; enet_icss1.PRU_ICSSG1_RGMII2.TD1.$suggestSolution = "PRG1_PRU1_GPO12"; enet_icss1.PRU_ICSSG1_RGMII2.TD2.$suggestSolution = "PRG1_PRU1_GPO13"; enet_icss1.PRU_ICSSG1_RGMII2.TD3.$suggestSolution = "PRG1_PRU1_GPO14"; enet_icss1.PRU_ICSSG1_RGMII2.TXC.$suggestSolution = "PRG1_PRU1_GPO16"; enet_icss1.PRU_ICSSG1_RGMII2.TX_CTL.$suggestSolution = "PRG1_PRU1_GPO15";
linker.cmd:
#include "ti_enet_config.h" /* This is the stack that is used by code running within main() * In case of NORTOS, * - This means all the code outside of ISR uses this stack * In case of FreeRTOS * - This means all the code until vTaskStartScheduler() is called in main() * uses this stack. * - After vTaskStartScheduler() each task created in FreeRTOS has its own stack */ --stack_size=8192 /* This is the heap size for malloc() API in NORTOS and FreeRTOS * This is also the heap used by pvPortMalloc in FreeRTOS */ --heap_size=34816 -e_vectors /* This is the entry of the application, _vector MUST be plabed starting address 0x0 */ /* This is the size of stack when R5 is in IRQ mode * In NORTOS, * - Here interrupt nesting is disabled as of now * - This is the stack used by ISRs registered as type IRQ * In FreeRTOS, * - Here interrupt nesting is enabled * - This is stack that is used initally when a IRQ is received * - But then the mode is switched to SVC mode and SVC stack is used for all user ISR callbacks * - Hence in FreeRTOS, IRQ stack size is less and SVC stack size is more */ __IRQ_STACK_SIZE = 256; /* This is the size of stack when R5 is in IRQ mode * - In both NORTOS and FreeRTOS nesting is disabled for FIQ */ __FIQ_STACK_SIZE = 256; __SVC_STACK_SIZE = 4096; /* This is the size of stack when R5 is in SVC mode */ __ABORT_STACK_SIZE = 256; /* This is the size of stack when R5 is in ABORT mode */ __UNDEFINED_STACK_SIZE = 256; /* This is the size of stack when R5 is in UNDEF mode */ SECTIONS { /* This has the R5F entry point and vector table, this MUST be at 0x0 */ .vectors:{} palign(8) > R5F_VECS /* This has the R5F boot code until MPU is enabled, this MUST be at a address < 0x80000000 * i.e this cannot be placed in DDR */ GROUP { .text.hwi: palign(8) .text.cache: palign(8) .text.mpu: palign(8) .text.boot: palign(8) .text:abort: palign(8) /* this helps in loading symbols when using XIP mode */ } > MSRAM UNION: { .icssfw: palign(128) .icss_mem: type = NOLOAD { #if (ENET_SYSCFG_ICSSG0_ENABLED == 1) #if(ENET_SYSCFG_DUAL_MAC == 1) #if(ENET_SYSCFG_DUALMAC_PORT1_ENABLED == 1) *(*gEnetSoc_icssg0HostPoolMem_0) *(*gEnetSoc_icssg0HostQueueMem_0) *(*gEnetSoc_icssg0ScratchMem_0) #if (ENET_SYSCFG_PREMPTION_ENABLE == 1) *(*gEnetSoc_icssg0HostPreQueueMem_0) #endif #else *(*gEnetSoc_icssg0HostPoolMem_1) *(*gEnetSoc_icssg0HostQueueMem_1) *(*gEnetSoc_icssg0ScratchMem_1) #if (ENET_SYSCFG_PREMPTION_ENABLE == 1) *(*gEnetSoc_icssg0HostPreQueueMem_1) #endif #endif #endif #endif #if (ENET_SYSCFG_ICSSG1_ENABLED == 1) #if(ENET_SYSCFG_DUAL_MAC == 1) #if(ENET_SYSCFG_DUALMAC_PORT1_ENABLED == 1) *(*gEnetSoc_icssg1HostPoolMem_0) *(*gEnetSoc_icssg1HostQueueMem_0) *(*gEnetSoc_icssg1ScratchMem_0) #if (ENET_SYSCFG_PREMPTION_ENABLE == 1) *(*gEnetSoc_icssg1HostPreQueueMem_0) #endif #else *(*gEnetSoc_icssg1HostPoolMem_1) *(*gEnetSoc_icssg1HostQueueMem_1) *(*gEnetSoc_icssg1ScratchMem_1) #if (ENET_SYSCFG_PREMPTION_ENABLE == 1) *(*gEnetSoc_icssg1HostPreQueueMem_1) #endif #endif #endif #endif #if (ENET_SYSCFG_ICSSG0_ENABLED == 1) #if(ENET_SYSCFG_DUAL_MAC == 0) *(*gEnetSoc_icssg0PortPoolMem_0) *(*gEnetSoc_icssg0PortPoolMem_1) *(*gEnetSoc_icssg0HostPoolMem_0) *(*gEnetSoc_icssg0HostPoolMem_1) *(*gEnetSoc_icssg0HostQueueMem_0) *(*gEnetSoc_icssg0HostQueueMem_1) *(*gEnetSoc_icssg0ScratchMem_0) *(*gEnetSoc_icssg0ScratchMem_1) #if (ENET_SYSCFG_PREMPTION_ENABLE == 1) *(*gEnetSoc_icssg0HostPreQueueMem_0) *(*gEnetSoc_icssg0HostPreQueueMem_1) #endif #endif #endif #if (ENET_SYSCFG_ICSSG1_ENABLED == 1) #if(ENET_SYSCFG_DUAL_MAC == 0) *(*gEnetSoc_icssg1PortPoolMem_0) *(*gEnetSoc_icssg1PortPoolMem_1) *(*gEnetSoc_icssg1HostPoolMem_0) *(*gEnetSoc_icssg1HostPoolMem_1) *(*gEnetSoc_icssg1HostQueueMem_0) *(*gEnetSoc_icssg1HostQueueMem_1) *(*gEnetSoc_icssg1ScratchMem_0) *(*gEnetSoc_icssg1ScratchMem_1) #if (ENET_SYSCFG_PREMPTION_ENABLE == 1) *(*gEnetSoc_icssg1HostPreQueueMem_0) *(*gEnetSoc_icssg1HostPreQueueMem_1) #endif #endif #endif } } > MSRAM /* This is rest of code. This can be placed in DDR if DDR is available and needed */ GROUP { .text: {} palign(8) /* This is where code resides */ .rodata: {} palign(8) /* This is where const's go */ } > DDR /* This is rest of initialized data. This can be placed in DDR if DDR is available and needed */ GROUP { .data: {} palign(8) /* This is where initialized globals and static go */ } > DDR /* This is rest of uninitialized data. This can be placed in DDR if DDR is available and needed */ GROUP { .sysmem: {} palign(8) /* This is where the malloc heap goes */ .stack: {} palign(8) /* This is where the main() stack goes */ } > DDR .enet_dma_mem { *(*ENET_DMA_DESC_MEMPOOL) *(*ENET_DMA_RING_MEMPOOL) #if (ENET_SYSCFG_PKT_POOL_ENABLE == 1) *(*ENET_DMA_PKT_MEMPOOL) #endif } (NOLOAD) > MSRAM GROUP { .bss: {} palign(8) /* This is where uninitialized globals go */ RUN_START(__BSS_START) RUN_END(__BSS_END) } > DDR /* This is where the stacks for different R5F modes go */ GROUP { .irqstack: {. = . + __IRQ_STACK_SIZE;} align(8) RUN_START(__IRQ_STACK_START) RUN_END(__IRQ_STACK_END) .fiqstack: {. = . + __FIQ_STACK_SIZE;} align(8) RUN_START(__FIQ_STACK_START) RUN_END(__FIQ_STACK_END) .svcstack: {. = . + __SVC_STACK_SIZE;} align(8) RUN_START(__SVC_STACK_START) RUN_END(__SVC_STACK_END) .abortstack: {. = . + __ABORT_STACK_SIZE;} align(8) RUN_START(__ABORT_STACK_START) RUN_END(__ABORT_STACK_END) .undefinedstack: {. = . + __UNDEFINED_STACK_SIZE;} align(8) RUN_START(__UNDEFINED_STACK_START) RUN_END(__UNDEFINED_STACK_END) } > DDR GROUP : { .resource_table : { } palign(4096) } > DDR_0 } /* NOTE: Below memory is reserved for DMSC usage - During Boot till security handoff is complete 0x701E0000 - 0x701FFFFF (128KB) - After "Security Handoff" is complete (i.e at run time) 0x701FC000 - 0x701FFFFF (16KB) Security handoff is complete when this message is sent to the DMSC, TISCI_MSG_SEC_HANDOVER This should be sent once all cores are loaded and all application specific firewall calls are setup. */ MEMORY { R5F_VECS : ORIGIN = 0x00000000 , LENGTH = 0x00000040 R5F_TCMA : ORIGIN = 0x00000040 , LENGTH = 0x00007FC0 R5F_TCMB0 : ORIGIN = 0x41010000 , LENGTH = 0x00008000 /* when using multi-core application's i.e more than one R5F/M4F active, make sure * this memory does not overlap with other R5F's */ MSRAM : ORIGIN = 0x70082F00 , LENGTH = 0xB9700 /* This section can be used to put XIP section of the application in flash, make sure this does not overlap with * other CPUs. Also make sure to add a MPU entry for this section and mark it as cached and code executable */ FLASH : ORIGIN = 0x60200000 , LENGTH = 0x100000 /* when using multi-core application's i.e more than one R5F/M4F active, make sure * this memory does not overlap with other R5F's */ DDR_0 : ORIGIN = 0xA0100000 , LENGTH = 0x10000 DDR : ORIGIN = 0xA0200000 , LENGTH = 0x1F0000 }