This thread has been locked.

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

Linux/EVMK2H: Ethernet link down intermittently

Part Number: EVMK2H


Tool/software: Linux

Hi,

We have recently purchased 60 new EVMK2H REV40 boards and set them up by running the Processor SDK Linux for K2H/K2K v04.03.00.05 setup script.

Our problem is that the Ethernet connection (eth0/eth1) appears to drop intermittently. 

[ 5241.445648] netcp-1.0 2620110.netcp eth0: Link is Down 
[ 5242.245965] netcp-1.0 2620110.netcp eth0: Link is Up - 1Gbps/Full - flow control off 
[ 5242.245965] netcp-1.0 2620110.netcp eth0: Link is Up - 1Gbps/Full - flow control off

[ 5888.244394] netcp-1.0 2620110.netcp eth0: Link is Down

When follow these doc:

http://processors.wiki.ti.com/index.php/Linux_Core_NetCP_User%27s_Guide#K2HK_EVM_Gigabit_MDC.2FMDIO_Signal_Integrity_Issue

https://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/574040/2106374 

However, I'm not success, after update Device Tree linux boot fail .

boot output :

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.9.69-g9ce43c71ae (gtbldadm@ubuntu-16) (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) ) #1 SMP PREEMPT Mo8
[    0.000000] CPU: ARMv7 Processor [412fc0f4] revision 4 (ARMv7), cr=30c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
[    0.000000] OF: fdt:Machine model: Texas Instruments Keystone 2 Kepler/Hawking EVM
[    0.000000] Switching physical address space to 0x800000000
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] Reserved memory: created CMA memory pool at 0x000000081f800000, size 8 MiB
[    0.000000] OF: reserved mem: initialized node dsp_common_cma_pool@81f800000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x0000000820000000, size 256 MiB
[    0.000000] OF: reserved mem: initialized node dsp_common_mpm_pool@820000000, compatible id shared-dma-pool
[    0.000000] cma: Reserved 64 MiB at 0x000000087bc00000
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: Using PSCI v0.1 Function IDs from DT
[    0.000000] percpu: Embedded 13 pages/cpu @de59e000 s22028 r8192 d23028 u53248
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 359296
[    0.000000] Kernel command line: console=ttyS0,115200n8 rootwait=1 rootfstype=nfs root=/dev/nfs rw nfsroot=:/home/xiaobo/ti-processor-sdk-p
[    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Memory: 1339612K/1441792K available (8192K kernel code, 250K rwdata, 2256K rodata, 2048K init, 288K bss, 28452K reserved, 7372)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
[    0.000000]     vmalloc : 0xe0800000 - 0xff800000   ( 496 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc0a00000   (10208 kB)
[    0.000000]       .init : 0xc0e00000 - 0xc1000000   (2048 kB)
[    0.000000]       .data : 0xc1000000 - 0xc103eb08   ( 251 kB)
[    0.000000]        .bss : 0xc1040000 - 0xc1088130   ( 289 kB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Preemptible hierarchical RCU implementation.
[    0.000000]  Build-time adjustment of leaf fanout to 32.
[    0.000000]  RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=32, nr_cpu_ids=4
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] arm_arch_timer: Architected cp15 timer(s) running at 200.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
[    0.000003] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
[    0.000011] Switching to timer-based delay loop, resolution 5ns
[    0.000170] keystone timer clock @200000000 Hz
[    0.000351] Console: colour dummy device 80x30
[    0.000374] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=2000000)
[    0.000384] pid_max: default: 32768 minimum: 301
[    0.000462] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000469] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000969] CPU: Testing write buffer coherency: ok
[    0.001164] /cpus/cpu@0 missing clock-frequency property
[    0.001186] /cpus/cpu@1 missing clock-frequency property
[    0.001207] /cpus/cpu@2 missing clock-frequency property
[    0.001230] /cpus/cpu@3 missing clock-frequency property
[    0.001238] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.001251] Setting up static identity map for 0x80200000 - 0x80200138
[    0.080116] EFI services will not be available.
[    0.174553] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[    0.244636] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[    0.314718] CPU3: thread -1, cpu 3, socket 0, mpidr 80000003
[    0.314821] Brought up 4 CPUs
[    0.314837] SMP: Total of 4 processors activated (1600.00 BogoMIPS).
[    0.314843] CPU: All CPU(s) started in HYP mode.
[    0.314847] CPU: Virtualization extensions available.
[    0.315260] devtmpfs: initialized
[    0.323903] VFP support v0.3: implementor 41 architecture 4 part 30 variant f rev 0
[    0.324087] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.324099] futex hash table entries: 1024 (order: 4, 65536 bytes)
[    0.325084] pinctrl core: initialized pinctrl subsystem
[    0.325642] NET: Registered protocol family 16
[    0.326274] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.350312] cpuidle: using governor ladder
[    0.380332] cpuidle: using governor menu
[    0.380417] No ATAGs?
[    0.380433] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.
[    0.380440] hw-breakpoint: maximum watchpoint size is 8 bytes.
[    0.386615] irq: no irq domain found for /soc/keystone_irq@26202a0 !
[    0.386790] irq: no irq domain found for /soc/keystone_irq@26202a0 !
[    0.386961] irq: no irq domain found for /soc/keystone_irq@26202a0 !
[    0.387136] irq: no irq domain found for /soc/keystone_irq@26202a0 !
[    0.387304] irq: no irq domain found for /soc/keystone_irq@26202a0 !
[    0.387474] irq: no irq domain found for /soc/keystone_irq@26202a0 !
[    0.387646] irq: no irq domain found for /soc/keystone_irq@26202a0 !
[    0.387819] irq: no irq domain found for /soc/keystone_irq@26202a0 !
[    0.422515] vgaarb: loaded
[    0.423653] pps_core: LinuxPPS API ver. 1 registered
[    0.423660] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.423675] PTP clock support registered
[    0.423698] EDAC MC: Ver: 3.0.0
[    0.424815] clocksource: Switched to clocksource arch_sys_counter
[    0.431644] NET: Registered protocol family 2
[    0.432014] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
[    0.432042] TCP bind hash table entries: 4096 (order: 3, 32768 bytes)
[    0.432090] TCP: Hash tables configured (established 4096 bind 4096)
[    0.432122] UDP hash table entries: 256 (order: 1, 8192 bytes)
[    0.432137] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[    0.432231] NET: Registered protocol family 1
[    0.432449] RPC: Registered named UNIX socket transport module.
[    0.432456] RPC: Registered udp transport module.
[    0.432461] RPC: Registered tcp transport module.
[    0.432466] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.432605] Trying to unpack rootfs image as initramfs...
[    0.435210] Freeing initrd memory: 52K
[    0.435366] hw perfevents: enabled with armv7_cortex_a15 PMU driver, 7 counters available
[    0.435893] platform alarmtimer: set dma_pfn_offset00780000
[    0.436696] workingset: timestamp_bits=14 max_order=19 bucket_order=5
[    0.442219] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.442745] NFS: Registering the id_resolver key type
[    0.442760] Key type id_resolver registered
[    0.442765] Key type id_legacy registered
[    0.442795] ntfs: driver 2.1.32 [Flags: R/O].
[    0.443709] bounce: pool size: 64 pages
[    0.443813] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
[    0.443820] io scheduler noop registered
[    0.443826] io scheduler deadline registered
[    0.443927] io scheduler cfq registered (default)
[    0.444066] keystone_irq soc:keystone_irq@26202a0: irqchip registered, nr_irqs 28
[    0.444536] ti,keystone-serdes 232a000.phy: init fw ks2_gbe_serdes.bin: version 3.3.0.2c
[    0.449049] keystone-navigator-qmss soc:qmss@2a40000: qmgr start queue 0, number of queues 8192
[    0.449161] keystone-navigator-qmss soc:qmss@2a40000: added qmgr start queue 0, num of queues 8192, reg_peek e0fa0000, reg_status e096d0000
[    0.449171] keystone-navigator-qmss soc:qmss@2a40000: qmgr start queue 8192, number of queues 8192
[    0.449265] keystone-navigator-qmss soc:qmss@2a40000: added qmgr start queue 8192, num of queues 8192, reg_peek e1060000, reg_status e09730
[    0.449390] keystone-navigator-qmss soc:qmss@2a40000: firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP
[    0.451666] keystone-navigator-dma soc:knav_dmas@0: DMA dma_gbe registered 41 logical channels, flows 32, tx chans: 9, rx chans: 24
[    0.451766] keystone-navigator-dma soc:knav_dmas@0: DMA dma_xgbe registered 48 logical channels, flows 32, tx chans: 16, rx chans: 16
[    0.495050] Serial: 8250/16550 driver, 10 ports, IRQ sharing disabled
[    0.495118] platform serial8250: set dma_pfn_offset00780000
[    0.497383] console [ttyS0] disabled
[    0.497422] 2530c00.serial: ttyS0 at MMIO 0x2530c00 (irq = 26, base_baud = 12500000) is a TI DA8xx/66AK2x
[    1.352602] console [ttyS0] enabled
[    1.356739] 2531000.serial: ttyS1 at MMIO 0x2531000 (irq = 27, base_baud = 12500000) is a TI DA8xx/66AK2x
[    1.378732] [drm] Initialized
[    1.389972] brd: module loaded
[    1.397369] loop: module loaded
[    1.401388] at24 0-0050: 131072 byte 24c1024 EEPROM, writable, 1 bytes/write
[    1.409997] spi_davinci 21000400.spi: DMA is not supported (-19)
[    1.416612] m25p80 spi0.0: n25q128a11 (16384 Kbytes)
[    1.421610] 2 ofpart partitions found on MTD device spi0.0
[    1.427128] Creating 2 MTD partitions on "spi0.0":
[    1.431936] 0x000000000000-0x000000100000 : "u-boot-spl"
[    1.438052] 0x000000100000-0x000001000000 : "misc"
[    1.443620] spi_davinci 21000400.spi: Controller at 0xe0fdb400
[    1.449653] spi_davinci 21000600.spi: DMA is not supported (-19)
[    1.456012] spi_davinci 21000600.spi: Controller at 0xe0fdd600
[    1.462023] spi_davinci 21000800.spi: DMA is not supported (-19)
[    1.468366] spi_davinci 21000800.spi: Controller at 0xe101c800
[    1.474573] platform Fixed MDIO bus.0: set dma_pfn_offset00780000
[    1.480823] libphy: Fixed MDIO Bus: probed
[    1.486353] ti,keystone-serdes 232a000.phy: Requested PHY is disabled
[    2.005516] ti,keystone-serdes 232a000.phy: Requested PHY is disabled
[    2.524532] netcp-1.0 2620110.netcp: device node lookup for pps timer failed
[    2.531635] netcp-1.0 2620110.netcp: cpts: overflow check period 350 (jiffies)
[    2.538898] netcp-1.0 2620110.netcp: CPTS: ref_clk_freq:600000000 calc_mult:3579139413 calc_shift:31 error:-1 nsec/sec
[    2.549644] netcp-1.0 2620110.netcp: initialized cpsw ale version 1.3
[    2.556118] netcp-1.0 2620110.netcp: ALE Table size 1024
[    2.562263] netcp-1.0 2620110.netcp: module(netcp-xgbe) not used for device
[    2.569429] netcp-1.0 2620110.netcp: pa_clk_rate(163840000 HZ),mult(25000),shift(12)
[    2.578727] netcp-1.0 2620110.netcp: Using PA fw version 03.00.02.03:0x03000203 on pdsp 0
[    2.586956] netcp-1.0 2620110.netcp: Using PA fw version 03.00.02.03:0x03000203 on pdsp 1
[    2.595197] netcp-1.0 2620110.netcp: Using PA fw version 03.00.02.03:0x03000203 on pdsp 2
[    2.603404] netcp-1.0 2620110.netcp: Using PA fw version 03.00.02.03:0x03000203 on pdsp 3
[    2.611624] netcp-1.0 2620110.netcp: Using PA fw version 03.00.02.03:0x03000203 on pdsp 4
[    2.619859] netcp-1.0 2620110.netcp: Using PA fw version 03.00.02.03:0x03000203 on pdsp 5
[    2.628507] netcp-1.0 2620110.netcp: module(netcp-pa2) not used for device
[    2.635680] mousedev: PS/2 mouse device common for all mice
[    2.641507] i2c /dev entries driver
[    2.647400] ledtrig-cpu: registered to indicate activity on CPUs
[    2.654605] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xac
[    2.660996] nand: Micron MT29F4G08ABBDAHC
[    2.665030] nand: 512 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
[    2.672918] Bad block table found at page 262080, version 0x01
[    2.679302] Bad block table found at page 262016, version 0x01
[    2.685479] 3 ofpart partitions found on MTD device 30000000.nand
[    2.691592] Creating 3 MTD partitions on "30000000.nand":
[    2.697022] 0x000000000000-0x000000100000 : "u-boot"
[    2.702796] 0x000000100000-0x000000180000 : "params"
[    2.708553] 0x000000180000-0x000020000000 : "ubifs"
[    2.717259] davinci_nand 30000000.nand: controller rev. 2.5
[    2.723495] NET: Registered protocol family 10
[    2.728693] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    2.735073] NET: Registered protocol family 17
[    2.739649] Key type dns_resolver registered
[    2.744024] Registering SWP/SWPB emulation handler
[    2.752605] hctosys: unable to open rtc device (rtc0)
[    2.766845] netcp-1.0 2620110.netcp eth0: Link is Up
[    2.772043] cpts ptp bc clkid 0
[    2.785151] netcp-1.0 2620110.netcp eth1: Link is Up
[    2.814922] Sending DHCP requests ., OK
[    2.894830] IP-Config: Got DHCP answer from 192.168.1.99, my address is 192.168.1.9
[    2.902513] IP-Config: Complete:
[    2.905766]      device=eth0, hwaddr=50:f1:4a:c0:12:f9, ipaddr=192.168.1.9, mask=255.255.255.0, gw=192.168.1.1
[    2.915816]      host=192.168.1.9, domain=internal.example.org, nis-domain=(none)
[    2.923325]      bootserver=192.168.1.99, rootserver=192.168.1.99, rootpath=     nameserver0=192.168.1.99
[    3.064817] (NULL net_device): Link is Down
[    3.069015] (NULL net_device): Link is Down
[    3.574821] netcp-1.0 2620110.netcp eth0: Link is Down
[    6.324893] cpts: unable to obtain a time stamp
[    9.844830] cpts: unable to obtain a time stamp
[   13.364831] cpts: unable to obtain a time stamp
[   16.884830] cpts: unable to obtain a time stamp

keystone-k2hk-evm.dts 

/*
 * Copyright 2013-2014 Texas Instruments, Inc.
 *
 * Keystone 2 Kepler/Hawking EVM device tree
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
/dts-v1/;

#include "keystone.dtsi"
#include "keystone-k2hk.dtsi"

/ {
	compatible =  "ti,k2hk-evm", "ti,k2hk", "ti,keystone";
	model = "Texas Instruments Keystone 2 Kepler/Hawking EVM";

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

		dsp_common_cma_pool: dsp_common_cma_pool@81f800000 {
			compatible = "shared-dma-pool";
			reg = <0x00000008 0x1f800000 0x00000000 0x800000>;
			reusable;
			status = "okay";
		};

		dsp_common_mpm_pool: dsp_common_mpm_pool@820000000 {
			compatible = "shared-dma-pool";
			reg = <0x00000008 0x20000000 0x00000000 0x10000000>;
			no-map;
			status = "okay";
		};
	};

	soc {
		clocks {
			refclksys: refclksys {
				#clock-cells = <0>;
				compatible = "fixed-clock";
				clock-frequency = <122880000>;
				clock-output-names = "refclk-sys";
			};

			refclkpass: refclkpass {
				#clock-cells = <0>;
				compatible = "fixed-clock";
				clock-frequency = <122880000>;
				clock-output-names = "refclk-pass";
			};

			refclkarm: refclkarm {
				#clock-cells = <0>;
				compatible = "fixed-clock";
				clock-frequency = <125000000>;
				clock-output-names = "refclk-arm";
			};

			refclkddr3a: refclkddr3a {
				#clock-cells = <0>;
				compatible = "fixed-clock";
				clock-frequency = <100000000>;
				clock-output-names = "refclk-ddr3a";
			};

			refclkddr3b: refclkddr3b {
				#clock-cells = <0>;
				compatible = "fixed-clock";
				clock-frequency = <100000000>;
				clock-output-names = "refclk-ddr3b";
			};
		};

		ddr3edac: edac@21010000 {
			status = "ok";
		};

		mpm_mem: dspmem@a0000000 {
			compatible = "ti,keystone-dsp-mem";
			reg = <0xa0000000 0x10000000>;
		};
	};

	leds {
		compatible = "gpio-leds";
		debug1_1 {
			label = "keystone:green:debug1";
			gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; /* 12 */
		};

		debug1_2 {
			label = "keystone:red:debug1";
			gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>; /* 13 */
		};

		debug2 {
			label = "keystone:blue:debug2";
			gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>; /* 14 */
		};

		debug3 {
			label = "keystone:blue:debug3";
			gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>; /* 15 */
		};
	};
};

&usb_phy {
	status = "okay";
};

&keystone_usb0 {
	status = "okay";
};

&usb0 {
	dr_mode = "host";
};

&aemif {
	cs0 {
		#address-cells = <2>;
		#size-cells = <1>;
		clock-ranges;
		ranges;

		ti,cs-chipselect = <0>;
		/* all timings in nanoseconds */
		ti,cs-min-turnaround-ns = <12>;
		ti,cs-read-hold-ns = <6>;
		ti,cs-read-strobe-ns = <23>;
		ti,cs-read-setup-ns = <9>;
		ti,cs-write-hold-ns = <8>;
		ti,cs-write-strobe-ns = <23>;
		ti,cs-write-setup-ns = <8>;

		nand@0,0 {
			compatible = "ti,keystone-nand","ti,davinci-nand";
			#address-cells = <1>;
			#size-cells = <1>;
			reg = <0 0 0x4000000
			       1 0 0x0000100>;

			ti,davinci-chipselect = <0>;
			ti,davinci-mask-ale = <0x2000>;
			ti,davinci-mask-cle = <0x4000>;
			ti,davinci-mask-chipsel = <0>;
			nand-ecc-mode = "hw";
			ti,davinci-ecc-bits = <4>;
			nand-on-flash-bbt;

			partition@0 {
				label = "u-boot";
				reg = <0x0 0x100000>;
				read-only;
			};

			partition@100000 {
				label = "params";
				reg = <0x100000 0x80000>;
				read-only;
			};

			partition@180000 {
				label = "ubifs";
				reg = <0x180000 0x1fe80000>;
			};
		};
	};
};

&i2c0 {
	dtt@50 {
		compatible = "at,24c1024";
		reg = <0x50>;
	};
};

&spi0 {
	nor_flash: n25q128a11@0 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "Micron,n25q128a11";
		spi-max-frequency = <54000000>;
		m25p,fast-read;
		reg = <0>;

		partition@0 {
			label = "u-boot-spl";
			reg = <0x0 0x100000>;
			read-only;
		};

		partition@1 {
			label = "misc";
			reg = <0x100000 0xf00000>;
		};
	};
};

&mdio {
	status = "ok";
	ethphy0: ethernet-phy@0 {
		compatible = "marvell,88E1111", "ethernet-phy-ieee802.3-c22";
		reg = <0>;
	};

	ethphy1: ethernet-phy@1 {
		compatible = "marvell,88E1111", "ethernet-phy-ieee802.3-c22";
		reg = <1>;
	};
};

&gbe_serdes {
	status = "okay";
};

&dsp0 {
	memory-region = <&dsp_common_cma_pool>;
};

&dsp1 {
	memory-region = <&dsp_common_cma_pool>;
};

&dsp2 {
	memory-region = <&dsp_common_cma_pool>;
};

&dsp3 {
	memory-region = <&dsp_common_cma_pool>;
};

&dsp4 {
	memory-region = <&dsp_common_cma_pool>;
};

&dsp5 {
	memory-region = <&dsp_common_cma_pool>;
};

&dsp6 {
	memory-region = <&dsp_common_cma_pool>;
};

&dsp7 {
	memory-region = <&dsp_common_cma_pool>;
};

keystone-k2hk-netcp.dtsi

/*
 * Device Tree Source for Keystone 2 Hawking Netcp driver
 *
 * Copyright 2015 Texas Instruments, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

qmss: qmss@2a40000 {
	compatible = "ti,keystone-navigator-qmss";
	dma-coherent;
	#address-cells = <1>;
	#size-cells = <1>;
	clocks = <&chipclk13>;
	ranges;
	queue-range	= <0 0x4000>;
	linkram0	= <0x100000 0x8000>;
	linkram1	= <0x0 0x10000>;

	qmgrs {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;
		qmgr0 {
			managed-queues = <0 0x2000>;
			reg = <0x2a40000 0x20000>,
			      <0x2a06000 0x400>,
			      <0x2a02000 0x1000>,
			      <0x2a03000 0x1000>,
			      <0x23a80000 0x20000>,
			      <0x2a80000 0x20000>;
			reg-names = "peek", "status", "config",
				    "region", "push", "pop";
		};

		qmgr1 {
			managed-queues = <0x2000 0x2000>;
			reg = <0x2a60000 0x20000>,
			      <0x2a06400 0x400>,
			      <0x2a04000 0x1000>,
			      <0x2a05000 0x1000>,
			      <0x23aa0000 0x20000>,
			      <0x2aa0000 0x20000>;
			reg-names = "peek", "status", "config",
				    "region", "push", "pop";
		};
	};

	queue-pools {
		qpend {
			qpend-0 {
				qrange = <658 8>;
				interrupts =<0 40 0xf04 0 41 0xf04 0 42 0xf04
					     0 43 0xf04 0 44 0xf04 0 45 0xf04
					     0 46 0xf04 0 47 0xf04>;
			};
			qpend-1 {
				qrange = <8704 16>;
				interrupts = <0 48 0xf04 0 49 0xf04 0 50 0xf04
					      0 51 0xf04 0 52 0x104 0 53 0x204
					      0 54 0xf04 0 55 0xf04 0 56 0xf04
					      0 57 0xf04 0 58 0xf04 0 59 0xf04
					      0 60 0xf04 0 61 0xf04 0 62 0xf04
					      0 63 0xf04>;
				qalloc-by-id;
			};
			qpend-2 {
				qrange = <8720 16>;
				interrupts = <0 64 0xf04 0 65 0xf04 0 66 0xf04
					      0 59 0xf04 0 68 0xf04 0 69 0xf04
					      0 70 0xf04 0 71 0xf04 0 72 0xf04
					      0 73 0xf04 0 74 0xf04 0 75 0xf04
					      0 76 0xf04 0 77 0xf04 0 78 0xf04
					      0 79 0xf04>;
			};
		};
		general-purpose {
			gp-0 {
				qrange = <4000 64>;
			};
			netcp-tx {
				qrange = <640 9>;
				qalloc-by-id;
			};
			netcpx-tx {
				qrange = <8752 8>;
				qalloc-by-id;
			};
		};
		accumulator {
			acc-low-0 {
				qrange = <480 32>;
				accumulator = <0 47 16 2 50>;
				interrupts = <0 226 0xf01>;
				multi-queue;
				qalloc-by-id;
			};
		};
	};

	descriptor-regions {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;
		region-12 {
			id = <12>;
			region-spec = <11264 128>;
			link-index = <0x4000>;
		};
	};

	pdsps {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;
		pdsp0@0x2a10000 {
			reg = <0x2a10000 0x1000    /*iram */
			       0x2a0f000 0x100     /*reg*/
			       0x2a0c000 0x3c8	   /*intd */
			       0x2a20000 0x4000>;  /*cmd*/
			id = <0>;
		};
	};
}; /* qmss */

knav_dmas: knav_dmas@0 {
	compatible = "ti,keystone-navigator-dma";
	clocks = <&papllclk>;
	#address-cells = <1>;
	#size-cells = <1>;
	ranges;
	ti,navigator-cloud-address = <0x23a80000 0x23a90000
				   0x23aa0000 0x23ab0000>;

	dma_gbe: dma_gbe@0 {
		reg = <0x2004000 0x100>,
			  <0x2004400 0x120>,
			  <0x2004800 0x300>,
			  <0x2004c00 0x120>,
			  <0x2005000 0x400>;
		reg-names = "global", "txchan", "rxchan",
				"txsched", "rxflow";
		ti,enable-all;
	};

	dma_xgbe: dma_xgbe@0 {
		reg = <0x2fa1000 0x100>,
			<0x2fa1400 0x200>,
			<0x2fa1800 0x200>,
			<0x2fa1c00 0x200>,
			<0x2fa2000 0x400>;
		reg-names = "global", "txchan", "rxchan",
				"txsched", "rxflow";
	};
};

gbe_subsys: subsys@2090000 {
	compatible = "syscon";
	reg = <0x02090000 0x100>;
};

gbe_serdes: phy@232a000 {
	compatible		= "ti,keystone-serdes-gbe";
	reg			= <0x0232a000 0x2000>;
	status			= "disabled";
	link-rate-kbps		= <1250000>;
	num-lanes		= <4>;
	#address-cells	= <1>;
	#size-cells	= <0>;

	serdes_lane0: lane@0 {
		#phy-cells	= <0>;
		reg		= <0>;
		status		= "ok";
		control-rate	= <2>;
		rx-start	= <7 5>;
		rx-force	= <1 1>;
		tx-coeff	= <0 0 0 12 4>;
	};
	serdes_lane1: lane@1 {
		#phy-cells	= <0>;
		reg		= <1>;
		status		= "ok";
		control-rate	= <2>;
		rx-start	= <7 5>;
		rx-force	= <1 1>;
		tx-coeff	= <0 0 0 12 4>;
	};
	serdes_lane2: lane@2 {
		#phy-cells	= <0>;
		reg		= <2>;
		status		= "disabled";
		control-rate	= <2>;
		rx-start	= <7 5>;
		rx-force	= <1 1>;
		tx-coeff	= <0 0 0 12 4>;
	};
	serdes_lane3: lane@3 {
		#phy-cells	= <0>;
		reg		= <3>;
		status		= "disabled";
		control-rate	= <2>;
		rx-start	= <7 5>;
		rx-force	= <1 1>;
		tx-coeff	= <0 0 0 12 4>;
	};
};

netcp: netcp@2000000 {
	reg = <0x2620110 0x8>;
	reg-names = "efuse";
	compatible = "ti,netcp-1.0";
	#address-cells = <1>;
	#size-cells = <1>;

	/* NetCP address range */
	ranges  = <0 0x2000000 0x100000>;

	clocks = <&clkpa>, <&clkcpgmac>, <&chipclk12>;
	clock-names = "pa_clk", "ethss_clk", "cpts";
	dma-coherent;

	ti,navigator-dmas =	<&dma_gbe 22>,	/* rx flow for CPSW port 0 */
				<&dma_gbe 23>,	/* rx flow for CPSW port 1 */
				<&dma_gbe 8>,	/* CPSW tx channel */
				<&dma_gbe 24>,	/* rx flow for CPSW port 2 */
				<&dma_gbe 25>,	/* rx flow for CPSW port 3 */
				<&dma_gbe 0>,	/* PA cluster 0 channel */
				<&dma_gbe 1>,	/* PA cluster 1 channel */
				<&dma_gbe 2>,	/* PA cluster 2 channel */
				<&dma_gbe 3>,	/* PA cluster 3 channel */
				<&dma_gbe 4>,	/* PA cluster 4 channel */
				<&dma_gbe 5>,	/* PA cluster 5 channel */
				<&dma_gbe 31>,	/* PA rx flow for cmd rsp */
				<&dma_gbe 6>;	/* SA tx channel */
	ti,navigator-dma-names = "netrx0",
				 "netrx1",
				 "nettx",
				 "netrx2",
				 "netrx3",
				 "pa-cl0",
				 "pa-cl1",
				 "pa-cl2",
				 "pa-cl3",
				 "pa-cl4",
				 "pa-cl5",
				 "pa-cmd-rsp",
				 "sa-tx0";

	netcp-devices {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;
		gbe@90000 { /* ETHSS */
			label = "netcp-gbe";
			compatible = "ti,netcp-gbe";
			syscon-subsys = <&gbe_subsys>;
			reg = <0x90100 0x200>, <0x90400 0x200>, <0x90800 0x700>;
			tx-queue = <648>;
			tx-channel = "nettx";

			interfaces {
				gbe0: interface-0 {
					phys = <&serdes_lane0>;
					slave-port = <0>;
					link-interface = <1>;
					phy-handle = <&ethphy0>;
				};
				gbe1: interface-1 {
					phys = <&serdes_lane1>;
					slave-port = <1>;
					link-interface = <1>;
					phy-handle = <&ethphy1>;
				};
			};

			secondary-slave-ports {
				port-2 {
					phys = <&serdes_lane2>;
					slave-port = <2>;
					link-interface	= <2>;
				};
				port-3 {
					phys = <&serdes_lane3>;
					slave-port = <3>;
					link-interface	= <2>;
				};
			};
		};

		pa@0 {
			#address-cells = <1>;
			#size-cells = <1>;
			label = "netcp-pa";
			compatible = "ti,netcp-pa";

			reg = <0 0x60>,
				<0x400 0x10>,
				<0x500 0x40>,
				<0x604 0x4>,
				<0x1000 0x600>,
				<0x3000 0x600>,
				<0x6000 0x100>,
				<0x10000 0x30000>,
				<0x40000 0x8000>;

			mac-lut-ranges		= <0 43 56 63>;
			ip-lut-ranges		= <61 63>;
			rx-route		= <8704 22>;
			tx-cmd-pool		= <256 12>;
			rx-cmd-rsp-pool		= <256 12>;
			rx-cmd-rsp-chan		= "pa-cmd-rsp";
			rx-cmd-rsp-queue-depth	= <128 32 0 0>;
			rx-cmd-rsp-buffer-size	= <128 512 0 0>;

			interfaces {
				pa0: interface-0 {
					slave-port	= <0>;
				};

				pa1: interface-1 {
					slave-port	= <1>;
				};
			};

			clusters {
				#address-cells = <1>;
				#size-cells = <0>;
				cluster@0 {
					reg = <0>;
					tx-queue = <640>;
					tx-channel = "pa-cl0";
				};

				cluster@1 {
					reg = <1>;
					tx-queue = <641>;
					tx-channel = "pa-cl1";
				};

				cluster@5 {
					reg = <5>;
					tx-queue = <645>;
					tx-channel = "pa-cl5";
				};
			};
		};

		sa@c0000 {
			label = "netcp-sa";
			multi-interface;
			/* Optional: Specify NATT port for fragmentation detection */
			natt-port = <0>;
			tx-submit-queue = <646>;

			interfaces {
				sa0: interface-0 {
					slave-port	= <0>;
					ti,tx-channel = "sa-tx0";
				};

				sa1: interface-1 {
					slave-port	= <1>;
					ti,tx-channel = "sa-tx0";
				};
			};
		};
	};

	netcp-interfaces {
		interface-0 {
			rx-channel = "netrx0";
			rx-pool = <1024 12>;
			tx-pool = <1024 12>;
			rx-queue-depth = <128 128 0 0>;
			rx-buffer-size = <1518 4096 0 0>;
			rx-queue = <8704>;
			tx-completion-queue = <8706>;
			efuse-mac = <1>;
			netcp-gbe = <&gbe0>;
			netcp-pa = <&pa0>;
			netcp-sa = <&sa0>;
		};
		interface-1 {
			rx-channel = "netrx1";
			rx-pool = <1024 12>;
			tx-pool = <1024 12>;
			rx-queue-depth = <128 128 0 0>;
			rx-buffer-size = <1518 4096 0 0>;
			rx-queue = <8705>;
			tx-completion-queue = <8707>;
			efuse-mac = <0>;
			local-mac-address = [02 18 31 7e 3e 6f];
			netcp-gbe = <&gbe1>;
			netcp-pa = <&pa1>;
			netcp-sa = <&sa1>;
		};
	};
};

xgbe_subsys: subsys@2f00000 {
	status		= "disabled";
	compatible	= "syscon";
	reg		= <0x02f00000 0x100>;
};

xgbe_pcsr: pcsr@2f00600 {
	status		= "disabled";
	compatible	= "syscon";
	reg		= <0x02f00600 0x100>;
};

xgbe_serdes: phy@231e000 {
	compatible		= "ti,keystone-serdes-xgbe";
	reg			= <0x0231e000 0x2000>;
	status			= "disabled";
	link-rate-kbps		= <10312500>;
	num-lanes		= <2>;
	syscon-peripheral	= <&xgbe_subsys>;
	syscon-link		= <&xgbe_pcsr>;
	#address-cells	= <1>;
	#size-cells	= <0>;

	xserdes_lane0: lane@0 {
		#phy-cells	= <0>;
		reg		= <0>;
		status		= "ok";
		control-rate	= <0>;
		rx-start	= <7 5>;
		rx-force	= <1 1>;
		tx-coeff	= <2 0 0 12 4>;
	};
	xserdes_lane1: lane@1 {
		#phy-cells	= <0>;
		reg		= <1>;
		status		= "ok";
		control-rate	= <0>;
		rx-start	= <7 5>;
		rx-force	= <1 1>;
		tx-coeff	= <2 0 0 12 4>;
	};
};

netcpx: netcp@2f00000 {
	status		= "disabled";
	compatible	= "ti,netcp-1.0";
	#address-cells	= <1>;
	#size-cells	= <1>;
	ranges;

	clocks		= <&clkxge>, <&chipclk12>;
	clock-names	= "xge_clk", "cpts";
	dma-coherent;

	ti,navigator-dmas = <&dma_xgbe 0>,
			<&dma_xgbe 8>,
			<&dma_xgbe 0>;
	ti,navigator-dma-names = "xnetrx0", "xnetrx1", "xnettx";

	netcp-devices {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;
		xgbe@0x2f00000 {
			label = "netcp-xgbe";
			compatible = "ti,netcp-xgbe";
			syscon-subsys = <&xgbe_subsys>;
			syscon-pcsr = <&xgbe_pcsr>;
			reg = <0x02f00100 0x200>, <0x02f01000 0xb00>;
			tx-queue = <8752>;
			tx-channel = "xnettx";

			interfaces {
				xgbe0: interface-0 {
					phys = <&xserdes_lane0>;
					slave-port = <0>;
					link-interface	= <11>;
				};
				xgbe1: interface-1 {
					phys = <&xserdes_lane1>;
					slave-port = <1>;
					link-interface	= <11>;
				};
			};
		};
	};

	netcp-interfaces {
		interface-0 {
			rx-channel = "xnetrx0";
			rx-pool = <2048 12>;
			tx-pool = <1024 12>;
			rx-queue-depth = <1024 1024 64 0 0>;
			rx-buffer-size = <1536 4096 0 0>;
			rx-queue = <8708>;
			tx-completion-queue = <8710>;
			efuse-mac = <0>;
			netcp-xgbe = <&xgbe0>;

		};
		interface-1 {
			rx-channel = "xnetrx1";
			rx-pool = <2048 12>;
			tx-pool = <1024 12>;
			rx-queue-depth = <1024 1024 0 0>;
			rx-buffer-size = <1536 4096 0 0>;
			rx-queue = <8709>;
			tx-completion-queue = <8711>;
			efuse-mac = <0>;
			netcp-xgbe = <&xgbe1>;
		};
	};
};

sa_subsys: subsys@20c0000 {
	compatible = "simple-bus";
	#address-cells = <1>;
	#size-cells = <1>;
	ranges = <0 0x20c0000 0x40000>;
	dma-coherent;
	dma-ranges;

	sa_config: subsys@0 {
		compatible = "syscon";
		reg = <0x0 0x100>;
	};

	hwrng@24000 {
		compatible = "ti,keystone-rng";
		reg = <0x24000 0x1000>;
		ti,syscon-sa-cfg = <&sa_config>;
		clocks = <&clksa>;
		clock-names = "fck";
	};

	crypto@0 {
		compatible = "ti,netcp-sa-crypto";
		syscon-subsys = <&sa_config>;
		clocks = <&clksa>;
		clock-names = "fck";

		ti,navigator-dmas = <&dma_gbe 26>, <&dma_gbe 6>;
		ti,navigator-dma-names = "crypto-rx", "crypto-tx";

		ti,rx-channel = "crypto-rx";
		ti,rx-queue-depth = <256 64 0 0>;
		ti,rx-compl-queue = <8712>;
		ti,rx-pool	= <512 12>;

		ti,tx-channel = "crypto-tx";
		ti,tx-queue-depth = <256>;
		ti,tx-completion-queue = <8713>;
		ti,tx-pool = <512 12>;
		ti,tx-submit-queue = <646>;

		ti,sc-id = <0x7000 0x71ff>;
	};
};