SK-AM64B: AM64x CPSW3G split ownership: Linux port1 + R5 port2 EtherCAT, shared RX channel / RX flow issue

Part Number: SK-AM64B

Hi TI team,
We are working on an AM64x SK-AM64B based design and trying to split CPSW3G usage between Linux A53 and an R5 core.
Target architecture:
  • Linux A53 owns CPSW port1 / eth0 for normal TCP/IP.
  • R5 owns CPSW port2 for EtherCAT.
  • Since AM64x CPSW3G appears to have a single host RX DMA channel, Linux initializes and owns the shared RX channel.
  • R5 is intended to use a dedicated RX flow, currently flow 19, with RX ring 130 / FDQ ring 130.
  • ALE / rxnfc rules on Linux steer port2 / broadcast traffic to thread 3, corresponding to flow 19.
Resource ownership setup:
  • Linux host: host_id 12.
  • R5 host: host_id 36.
  • In rm-cfg.yaml embedded into tiboot3, we tried sharing these resources:
    • type 1963, start_resource 16, num_resource 1, host_id 12
    • type 1963, start_resource 16, num_resource 1, host_id 36
    • type 1964, start_resource 16, num_resource 4, host_id 12
    • type 1964, start_resource 19, num_resource 1, host_id 36
    • type 1943, start_resource 128, num_resource 4, host_id 12
    • type 1943, start_resource 130, num_resource 2, host_id 36
Linux DTS is trimmed to only tx0 + rx for CPSW:
  • dma-names = "tx0", "rx"
Observed behavior:
  • Linux CPSW driver probes successfully.
  • eth0 exists and works as the Linux-side CPSW netdev.
  • eth1 is intentionally absent; port2 is reserved for R5.
  • Linux logs show:
    • ch_flowid_cnt = 4
    • flow-id-base = 16
    • port2 ALE policer points to thread 3 / flow 19
    • remote flow bind for flow19 / ring130 returns OK
  • However, the runtime register readback remains zero:
    • rchan16 RFLOW_RNG at 0x4a8100f0 = 0x00000000
    • flow19 RFE/RFG/RFH remain 0
    • R5 RX ring occupancy remains 0
    • R5 EtherCAT RX packet counter remains 0
  • This is reproducible after a cold power cycle with the updated tiboot3.
R5 side observations:
  • R5 can initialize TX and transmit EtherCAT frames.
  • R5 TISCI requests for RX ring, RX flow, and RX channel return NACKs, which we currently treat as expected because Linux owns the shared RX channel.
  • R5 reports:
    • rx_ready = 1
    • rx_flow = 19
    • ring_rx = 130
    • occ_rx = 0
    • rflow_rng = 0x00000000
    • rfe = 0x00000000
Questions:
  1. Does AM64x SYSFW/RM support sharing the CPSW RX channel resource, type 1963, between A53 host 12 and R5 host 36?
  2. If yes, what is the correct rm-cfg.yaml / boardcfg representation for primary/secondary ownership on AM64x?
  3. Is duplicate resasg entry sharing valid for AM64x, or is the primary/secondary sharing model only supported through SysConfig-generated metadata not visible as simple duplicate ranges?
  4. Can Linux own and initialize the single CPSW RX channel while an R5 core owns a remote RX flow and RX rings?
  5. For AM64x CPSW3G, is steering traffic from Linux CPSW ALE/rxnfc to an R5-owned RX flow supported, or must all RX flows belong to the Linux host if Linux owns the RX channel?
  6. Are resource types 1963, 1964, and 1943 the complete set required for this shared RX-channel design, or are additional resources required?
  7. Is there any TI reference design or SDK example for AM64x where A53 Linux uses CPSW port1 and R5 independently receives CPSW port2 traffic through a dedicated RX flow?
Our main goal is network isolation:
  • J5 / port1 remains Linux TCP/IP.
  • J6 / port2 is dedicated to R5 EtherCAT.
  • Both ports should coexist without Linux owning a netdev for port2.
Could you confirm whether this architecture is supported on AM64x, and if so, what exact RM boardcfg and driver ownership model should be used?