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.

AM4376: No gigabit Ethernet

Other Parts Discussed in Thread: AM4376, AM4372

Hi,

We have implemented an AM4376 processor on a custom board. We are using the cpsw in switch mode and we are currently hitting a problem with the Ethernet. The link speed can not get higher than 100Mb/s. Another problem is the link detection, when we un-plugged the Ethernet cable and plugged it back it takes several seconds (more than 30) before the processor sees the link up. 

We have use the same Ethernet PHY as the one used on the am437x-evm-sk (Micrel KSZ9031RNX) and its interconnection with the processor is also the same as for the am437x-evm-sk.

The PHY are correctly detected, but the link speed is 100Mb/s on eth0 even if the board is connected to a gigabit Ethernet switch.

We are using the ti-processor-sdk-linux-am437x-evm-03.00.00.04 patchec to use PRUSS0 core instead of PRUSS1 core. The dmesg and extract of the device tree for ethernet stands under the post. 

Could someone point out some direction of investigation ? 

Thanks in advance

Device tree :

...

/* Ethernet mac gpio */
cpsw_default: cpsw_default {
pinctrl-single,pins = <
/* Slave 1 */
0x12c (PIN_OUTPUT | MUX_MODE2) /* mii1_txclk.rmii1_tclk */
0x114 (PIN_OUTPUT | MUX_MODE2) /* mii1_txen.rgmii1_tctl */
0x128 (PIN_OUTPUT | MUX_MODE2) /* mii1_txd0.rgmii1_td0 */
0x124 (PIN_OUTPUT | MUX_MODE2) /* mii1_txd1.rgmii1_td1 */
0x120 (PIN_OUTPUT | MUX_MODE2) /* mii1_txd0.rgmii1_td2 */
0x11c (PIN_OUTPUT | MUX_MODE2) /* mii1_txd1.rgmii1_td3 */
0x130 (PIN_INPUT | MUX_MODE2) /* mii1_rxclk.rmii1_rclk */
0x118 (PIN_INPUT | MUX_MODE2) /* mii1_rxdv.rgmii1_rctl */
0x140 (PIN_INPUT | MUX_MODE2) /* mii1_rxd0.rgmii1_rd0 */
0x13c (PIN_INPUT | MUX_MODE2) /* mii1_rxd1.rgmii1_rd1 */
0x138 (PIN_INPUT | MUX_MODE2) /* mii1_rxd0.rgmii1_rd2 */
0x134 (PIN_INPUT | MUX_MODE2) /* mii1_rxd1.rgmii1_rd3 */

/* Slave 2 */
0x58 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a6.rgmii2_tclk */
0x40 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a0.rgmii2_tctl */
0x54 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a5.rgmii2_td0 */
0x50 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a4.rgmii2_td1 */
0x4c (PIN_OUTPUT | MUX_MODE2) /* gpmc_a3.rgmii2_td2 */
0x48 (PIN_OUTPUT | MUX_MODE2) /* gpmc_a2.rgmii2_td3 */
0x5c (PIN_INPUT | MUX_MODE2) /* gpmc_a7.rgmii2_rclk */
0x44 (PIN_INPUT | MUX_MODE2) /* gpmc_a1.rgmii2_rtcl */
0x6c (PIN_INPUT | MUX_MODE2) /* gpmc_a11.rgmii2_rd0 */
0x68 (PIN_INPUT | MUX_MODE2) /* gpmc_a10.rgmii2_rd1 */
0x64 (PIN_INPUT | MUX_MODE2) /* gpmc_a9.rgmii2_rd2 */
0x60 (PIN_INPUT | MUX_MODE2) /* gpmc_a8.rgmii2_rd3 */
>;
};

cpsw_sleep: cpsw_sleep {
pinctrl-single,pins = <
/* Slave 1 reset value */
0x12c (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x120 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x11c (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x130 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x138 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x134 (PIN_INPUT_PULLDOWN | MUX_MODE7)

/* Slave 2 reset value */
0x58 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x40 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x54 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x50 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x4c (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x48 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x5c (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x44 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x6c (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x68 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x64 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x60 (PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};

/* mdio gpio (for ethernet) */
davinci_mdio_default: davinci_mdio_default {
pinctrl-single,pins = <
/* MDIO */
0x148 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE0) /* mdio_data.mdio_data */
0x14c (PIN_OUTPUT | MUX_MODE0) /* mdio_clk.mdio_clk */
>;
};

davinci_mdio_sleep: davinci_mdio_sleep {
pinctrl-single,pins = <
/* MDIO reset value */
0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};

...

&mac {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&cpsw_default>;
pinctrl-1 = <&cpsw_sleep>;
status = "okay";
};

&davinci_mdio {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&davinci_mdio_default>;
pinctrl-1 = <&davinci_mdio_sleep>;
status = "okay";
};

&cpsw_emac0 {
phy_id = <&davinci_mdio>, <4>;
phy-mode = "rgmii";
};

&cpsw_emac1 {
phy_id = <&davinci_mdio>, <5>;
phy-mode = "rgmii";
};

...

dmesg output

[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 4.4.12-g3639bea54a (renaud@LINUXPC02) (gcc version 5.3.1 20160113 (Linaro GCC 5.3-2016.02) ) #1 PREEMPT Tue Sep 13 07:45:03 CEST 2016
[ 0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c5387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] Machine model: ArKaos Klingforce
[ 0.000000] cma: Reserved 24 MiB at 0x8d000000
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] On node 0 totalpages: 65536
[ 0.000000] free_area_init_node: node 0, pgdat c09f4aac, node_mem_map cfdad000
[ 0.000000] Normal zone: 576 pages used for memmap
[ 0.000000] Normal zone: 0 pages reserved
[ 0.000000] Normal zone: 65536 pages, LIFO batch:15
[ 0.000000] CPU: All CPU(s) started in SVC mode.
[ 0.000000] AM437x ES1.2 (neon )
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 64960
[ 0.000000] Kernel command line: root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait console=ttyO0,115200n8
[ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.000000] Memory: 224316K/262144K available (7115K kernel code, 299K rwdata, 2456K rodata, 296K init, 264K bss, 13252K reserved, 24576K cma-reserved, 0K highmem)
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB)
[ 0.000000] vmalloc : 0xd0800000 - 0xff800000 ( 752 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)
[ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)
[ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB)
[ 0.000000] .text : 0xc0008000 - 0xc0961034 (9573 kB)
[ 0.000000] .init : 0xc0962000 - 0xc09ac000 ( 296 kB)
[ 0.000000] .data : 0xc09ac000 - 0xc09f6ef0 ( 300 kB)
[ 0.000000] .bss : 0xc09f8000 - 0xc0a3a358 ( 265 kB)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] Preemptible hierarchical RCU implementation.
[ 0.000000] Build-time adjustment of leaf fanout to 32.
[ 0.000000] NR_IRQS:16 nr_irqs:16 16
[ 0.000000] L2C: platform modifies aux control register: 0x0e030000 -> 0x3e430000
[ 0.000000] L2C: DT/platform modifies aux control register: 0x0e030000 -> 0x3e430000
[ 0.000000] L2C-310 erratum 769419 enabled
[ 0.000000] L2C-310 enabling early BRESP for Cortex-A9
[ 0.000000] OMAP L2C310: ROM does not support power control setting
[ 0.000000] L2C-310 dynamic clock gating disabled, standby mode disabled
[ 0.000000] L2C-310 cache controller enabled, 16 ways, 256 kB
[ 0.000000] L2C-310: CACHE_ID 0x410000c9, AUX_CTRL 0x4e430000
[ 0.000000] OMAP clockevent source: timer2 at 25000000 Hz
[ 0.000011] sched_clock: 32 bits at 25MHz, resolution 40ns, wraps every 85899345900ns
[ 0.000030] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 76450417870 ns
[ 0.000040] OMAP clocksource: timer1 at 25000000 Hz
[ 0.000584] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
[ 0.000594] OMAP clocksource: 32k_counter at 32768 Hz
[ 0.000991] Console: colour dummy device 80x30
[ 0.001018] WARNING: Your 'console=ttyO0' has been replaced by 'ttyS0'
[ 0.001025] This ensures that you still see kernel messages. Please
[ 0.001030] update your kernel commandline.
[ 0.001044] Calibrating delay loop... 1594.16 BogoMIPS (lpj=7970816)
[ 0.090199] pid_max: default: 32768 minimum: 301
[ 0.090314] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.090326] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.091026] Initializing cgroup subsys io
[ 0.091056] Initializing cgroup subsys memory
[ 0.091095] Initializing cgroup subsys devices
[ 0.091110] Initializing cgroup subsys freezer
[ 0.091125] Initializing cgroup subsys perf_event
[ 0.091137] Initializing cgroup subsys pids
[ 0.091168] CPU: Testing write buffer coherency: ok
[ 0.091544] Setting up static identity map for 0x80008200 - 0x80008258
[ 0.093040] devtmpfs: initialized
[ 0.103063] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[ 0.179018] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.181448] pinctrl core: initialized pinctrl subsystem
[ 0.182697] NET: Registered protocol family 16
[ 0.184955] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.210209] cpuidle: using governor ladder
[ 0.240196] cpuidle: using governor menu
[ 0.242318] omap_l3_noc 44000000.ocp: L3 debug error: target 8 mod:0 (unclearable)
[ 0.242384] omap_l3_noc 44000000.ocp: L3 application error: target 8 mod:0 (unclearable)
[ 0.246429] OMAP GPIO hardware version 0.1
[ 0.254683] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[ 0.254702] hw-breakpoint: maximum watchpoint size is 4 bytes.
[ 0.297601] edma 49000000.edma: TI EDMA DMA engine driver
[ 0.300500] vgaarb: loaded
[ 0.301084] SCSI subsystem initialized
[ 0.301395] usbcore: registered new interface driver usbfs
[ 0.301459] usbcore: registered new interface driver hub
[ 0.301557] usbcore: registered new device driver usb
[ 0.302113] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/i2c0_pins, deferring probe
[ 0.302221] media: Linux media interface: v0.10
[ 0.302293] Linux video capture interface: v2.00
[ 0.302347] pps_core: LinuxPPS API ver. 1 registered
[ 0.302355] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.302385] PTP clock support registered
[ 0.302599] EDAC MC: Ver: 3.0.0
[ 0.303601] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
[ 0.303912] Advanced Linux Sound Architecture Driver Initialized.
[ 0.305011] clocksource: Switched to clocksource timer1
[ 0.314882] NET: Registered protocol family 2
[ 0.315663] TCP established hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.315698] TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.315728] TCP: Hash tables configured (established 2048 bind 2048)
[ 0.315824] UDP hash table entries: 256 (order: 0, 4096 bytes)
[ 0.315842] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[ 0.316013] NET: Registered protocol family 1
[ 0.316368] RPC: Registered named UNIX socket transport module.
[ 0.316381] RPC: Registered udp transport module.
[ 0.316388] RPC: Registered tcp transport module.
[ 0.316395] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.316430] PCI: CLS 0 bytes, default 64
[ 0.318462] futex hash table entries: 256 (order: -1, 3072 bytes)
[ 0.324914] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.325786] NFS: Registering the id_resolver key type
[ 0.325836] Key type id_resolver registered
[ 0.325845] Key type id_legacy registered
[ 0.325916] ntfs: driver 2.1.32 [Flags: R/O].
[ 0.327787] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 248)
[ 0.327816] io scheduler noop registered
[ 0.327830] io scheduler deadline registered
[ 0.327980] io scheduler cfq registered (default)
[ 0.329681] pinctrl-single 44e10800.pinmux: 199 pins at pa f9e10800 size 796
[ 0.384178] Serial: 8250/16550 driver, 10 ports, IRQ sharing disabled
[ 0.387136] omap8250 44e09000.serial: No clock speed specified: using default: 48000000
[ 0.387891] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 30, base_baud = 3000000) is a 8250
[ 1.071496] console [ttyS0] enabled
[ 1.075961] [drm] Initialized drm 1.1.0 20060810
[ 1.088534] loop: module loaded
[ 1.094153] libphy: Fixed MDIO Bus: probed
[ 1.155072] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
[ 1.161209] davinci_mdio 4a101000.mdio: detected phy mask ffffffcf
[ 1.168757] libphy: 4a101000.mdio: probed
[ 1.172806] davinci_mdio 4a101000.mdio: phy[4]: device 4a101000.mdio:04, driver Micrel KSZ9031 Gigabit PHY
[ 1.182588] davinci_mdio 4a101000.mdio: phy[5]: device 4a101000.mdio:05, driver Micrel KSZ9031 Gigabit PHY
[ 1.193037] cpsw 4a100000.ethernet: Detected MACID = c4:be:84:cc:6f:7f
[ 1.200648] pegasus: v0.9.3 (2013/04/25), Pegasus/Pegasus II USB Ethernet driver
[ 1.208267] usbcore: registered new interface driver pegasus
[ 1.214028] usbcore: registered new interface driver asix
[ 1.219553] usbcore: registered new interface driver ax88179_178a
[ 1.225745] usbcore: registered new interface driver cdc_ether
[ 1.231689] usbcore: registered new interface driver smsc75xx
[ 1.237550] usbcore: registered new interface driver smsc95xx
[ 1.243370] usbcore: registered new interface driver net1080
[ 1.249120] usbcore: registered new interface driver cdc_subset
[ 1.255127] usbcore: registered new interface driver zaurus
[ 1.260814] usbcore: registered new interface driver cdc_ncm
[ 1.267243] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 1.273811] ehci-pci: EHCI PCI platform driver
[ 1.278366] ehci-platform: EHCI generic platform driver
[ 1.283778] ehci-omap: OMAP-EHCI Host Controller driver
[ 1.289154] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 1.295413] ohci-pci: OHCI PCI platform driver
[ 1.299939] ohci-platform: OHCI generic platform driver
[ 1.305661] usbcore: registered new interface driver usb-storage
[ 1.312093] mousedev: PS/2 mouse device common for all mice
[ 1.318588] i2c /dev entries driver
[ 1.323560] cpuidle: enable-method property 'ti,am4372' found operations
[ 1.330570] sdhci: Secure Digital Host Controller Interface driver
[ 1.336820] sdhci: Copyright(c) Pierre Ossman
[ 1.341822] omap_hsmmc 48060000.mmc: Got CD GPIO
[ 1.375337] Synopsys Designware Multimedia Card Interface Driver
[ 1.381811] sdhci-pltfm: SDHCI platform and OF driver helper
[ 1.388542] ledtrig-cpu: registered to indicate activity on CPUs
[ 1.394836] usbcore: registered new interface driver usbhid
[ 1.400514] usbhid: USB HID core driver
[ 1.406666] NET: Registered protocol family 10
[ 1.412376] sit: IPv6 over IPv4 tunneling driver
[ 1.417838] NET: Registered protocol family 17
[ 1.422621] Key type dns_resolver registered
[ 1.427222] omap_voltage_late_init: Voltage driver support not added
[ 1.434669] ThumbEE CPU extension supported.
[ 1.439041] Registering SWP/SWPB emulation handler
[ 1.485870] omap_i2c 44e0b000.i2c: bus 0 rev0.12 at 100 kHz
[ 1.492222] omap_hsmmc 48060000.mmc: Got CD GPIO
[ 1.537107] hctosys: unable to open rtc device (rtc0)
[ 1.550014] ALSA device list:
[ 1.553019] No soundcards found.
[ 1.557483] Waiting for root device /dev/mmcblk0p2...
[ 1.592261] mmc0: host does not support reading read-only switch, assuming write-enable
[ 1.602477] mmc0: new high speed SD card at address 0260
[ 1.608477] mmcblk0: mmc0:0260 SD 1.89 GiB
[ 1.614355] mmcblk0: p1 p2
[ 1.840949] EXT4-fs (mmcblk0p2): recovery complete
[ 1.849253] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
[ 1.857464] VFS: Mounted root (ext4 filesystem) on device 179:2.
[ 1.864887] devtmpfs: mounted
[ 1.868428] Freeing unused kernel memory: 296K (c0962000 - c09ac000)
[ 1.874811] This architecture does not have kernel memory protection.
[ 2.101381] systemd[1]: System time before build time, advancing clock.
[ 2.176857] random: systemd urandom read with 12 bits of entropy available
[ 2.203617] systemd[1]: systemd 229 running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN)
[ 2.223094] systemd[1]: Detected architecture arm.
[ 2.247093] systemd[1]: Set hostname to <am437x-evm>.
[ 2.766803] systemd[1]: Reached target Remote File Systems.
[ 2.785961] systemd[1]: Listening on Network Service Netlink Socket.
[ 2.815657] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[ 2.845731] systemd[1]: Listening on Journal Socket.
[ 2.865659] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe.
[ 2.895491] systemd[1]: Listening on udev Kernel Socket.
[ 2.915566] systemd[1]: Listening on udev Control Socket.
[ 2.959379] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[ 2.985412] systemd[1]: Reached target Paths.
[ 3.007676] systemd[1]: Created slice User and Session Slice.
[ 3.026607] systemd[1]: Created slice System Slice.
[ 3.050360] systemd[1]: Starting Create list of required static device nodes for the current kernel...
[ 3.080423] systemd[1]: Reached target Slices.
[ 3.110096] systemd[1]: Mounting POSIX Message Queue File System...
[ 3.146990] systemd[1]: Created slice system-getty.slice.
[ 3.181014] systemd[1]: Mounting Temporary Directory...
[ 3.224006] systemd[1]: Starting Apply Kernel Variables...
[ 3.254484] systemd[1]: Starting Setup Virtual Console...
[ 3.315437] systemd[1]: Reached target Swap.
[ 3.350017] systemd[1]: Starting Remount Root and Kernel File Systems...
[ 3.375828] systemd[1]: Listening on Journal Socket (/dev/log).
[ 3.424474] systemd[1]: Listening on Syslog Socket.
[ 3.433838] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[ 3.459872] systemd[1]: Starting Journal Service...
[ 3.501489] systemd[1]: Mounting Debug File System...
[ 3.556818] systemd[1]: Created slice system-serial\x2dgetty.slice.
[ 3.608309] systemd[1]: Mounted POSIX Message Queue File System.
[ 3.635512] systemd[1]: Mounted Debug File System.
[ 3.655475] systemd[1]: Mounted Temporary Directory.
[ 3.676003] systemd[1]: Started Journal Service.
[ 4.890934] systemd-journald[94]: Received request to flush runtime journal from PID 1
[ 6.588702] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[ 6.724654] remoteproc0: wkup_m3 is available
[ 6.827286] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
[ 6.835186] remoteproc0: Note: remoteproc is still under development and considered experimental.
[ 6.844199] remoteproc0: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
[ 7.039239] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
[ 7.085289] remoteproc0: powering up wkup_m3
[ 7.175836] remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217124
[ 7.256645] remoteproc0: remote processor wkup_m3 is now up
[ 7.262373] wkup_m3_ipc 44e11324.wkup_m3_ipc: CM3 Firmware Version = 0x191
[ 7.497670] omap-sham 53100000.sham: hw accel on OMAP rev 0.0
[ 7.684864] omap-aes 53501000.aes: OMAP AES hw accel rev: 0.1
[ 7.737459] omap-des 53701000.des: OMAP DES hw accel rev: 0.33
[ 7.825945] ti-pruss 54440000.pruss: creating PRU cores and other child platform devices
[ 7.958637] PM: no-rtc available, rtc-only mode disabled.
[ 8.009844] remoteproc1: 54474000.pru0 is available
[ 8.071997] remoteproc1: Note: remoteproc is still under development and considered experimental.
[ 8.193650] remoteproc1: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
[ 8.345164] remoteproc1: registered virtio0 (type 7)
[ 8.350339] pru-rproc 54474000.pru0: PRU rproc node /ocp/pruss@54440000/pru0@54474000 probed successfully
[ 8.431305] remoteproc2: 54478000.pru1 is available
[ 8.532886] remoteproc2: Note: remoteproc is still under development and considered experimental.
[ 8.676443] remoteproc2: THE BINARY FORMAT IS NOT YET FINALIZED, and backward compatibility isn't yet guaranteed.
[ 8.821871] remoteproc2: registered virtio1 (type 7)
[ 8.876441] pru-rproc 54478000.pru1: PRU rproc node /ocp/pruss@54440000/pru1@54478000 probed successfully
[ 9.606959] FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[ 11.382842] remoteproc1: powering up 54474000.pru0
[ 11.396249] remoteproc1: Booting fw image am437x-pru0_0-fw, size 75692
[ 11.402993] remoteproc1: remote processor 54474000.pru0 is now up
[ 11.425479] virtio_rpmsg_bus virtio0: creating channel rpmsg-pru addr 0x1e
[ 11.433294] virtio_rpmsg_bus virtio0: rpmsg host is online
[ 11.445718] remoteproc2: powering up 54478000.pru1
[ 11.451077] remoteproc2: Booting fw image am437x-pru0_1-fw, size 75692
[ 11.475302] remoteproc2: remote processor 54478000.pru1 is now up
[ 11.481817] virtio_rpmsg_bus virtio1: creating channel rpmsg-pru addr 0x1f
[ 11.490386] virtio_rpmsg_bus virtio1: rpmsg host is online
[ 11.555313] rpmsg_pru rpmsg0: new rpmsg_pru device: /dev/rpmsg_pru30
[ 11.576398] rpmsg_pru rpmsg1: new rpmsg_pru device: /dev/rpmsg_pru31
[ 12.660523] net eth0: initializing cpsw version 1.15 (0)
[ 12.678677] net eth0: initialized cpsw ale version 1.4
[ 12.766670] net eth0: phy found : id is : 0x221622
[ 12.846681] net eth0: phy found : id is : 0x221622
[ 12.869115] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 14.766028] cpsw 4a100000.ethernet eth0: Link is Up - Unsupported (update phy.c)/Half - flow control off
[ 14.775686] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 14.846043] cpsw 4a100000.ethernet eth0: Link is Down
[ 31.777772] cpsw 4a100000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[ 65.576046] random: nonblocking pool is initialized

  • Hi,

    I will ask the Ethernet experts to look at this. They will respond directly here.
  • Hi Renaud,

    Please verify that your Micrel PHY is correctly configured to advertise 1G support and that autonegotiation is enabled.

  • Hi DK,

    I have check the Micrel PHY configuration and it is the same as on the am437x-evm-sk. RXD0, RXD1, RXD2, RXD3 (MODE0, MODE1, MODE2, MODE3) are pulled up to 3V3. Following the datasheet the mode should be  RGMII mode - advertise all capabilities.

    I don't know if there is a Linux tool to read the registers.

    Best regards,

  • Use 'MII dump n' (where n = your ETH port) from UBoot and post the results here please.
  • Hi DK,
    Here is the output of the mii command. We have two Micrel PHY on our board which are respectively at address 4 and address 5.

    => mii dump 4
    0. (1140) -- PHY control register --
    (8000:0000) 0.15 = 0 reset
    (4000:0000) 0.14 = 0 loopback
    (2040:0040) 0. 6,13 = b10 speed selection = 1000 Mbps
    (1000:1000) 0.12 = 1 A/N enable
    (0800:0000) 0.11 = 0 power-down
    (0400:0000) 0.10 = 0 isolate
    (0200:0000) 0. 9 = 0 restart A/N
    (0100:0100) 0. 8 = 1 duplex = full
    (0080:0000) 0. 7 = 0 collision test enable
    (003f:0000) 0. 5- 0 = 0 (reserved)

    => mii dump 5
    0. (1140) -- PHY control register --
    (8000:0000) 0.15 = 0 reset
    (4000:0000) 0.14 = 0 loopback
    (2040:0040) 0. 6,13 = b10 speed selection = 1000 Mbps
    (1000:1000) 0.12 = 1 A/N enable
    (0800:0000) 0.11 = 0 power-down
    (0400:0000) 0.10 = 0 isolate
    (0200:0000) 0. 9 = 0 restart A/N
    (0100:0100) 0. 8 = 1 duplex = full
    (0080:0000) 0. 7 = 0 collision test enable
    (003f:0000) 0. 5- 0 = 0 (reserved)

    Best regards,
  • Hi,

    I have made a comparison of the standard register (0 --> 5) from u-boot between our board and the AM437x-evm-sk.

    Register from 0 to 4 are the same but I have a difference for register 5 "Autonegotiation partner abilities register"

    On the AM437x-evm-sk board the bits 7 (100BASE-TX able) and bits 8 (100BASE-X full duplex able) are set and on our board they are not.

    Here under the result of the commant mii dump 4 5 for both board.

    AM437x-evm-sk

    => mii dump 4 5

    5.     (cde1)                 -- Autonegotiation partner abilities register --

     (8000:8000) 5.15    =     1    next page able

     (4000:4000) 5.14    =     1    acknowledge

     (2000:0000) 5.13    =     0    remote fault

     (1000:0000) 5.12    =     0    (reserved)

     (0800:0800) 5.11    =     1    asymmetric pause able

     (0400:0400) 5.10    =     1    pause able

     (0200:0000) 5. 9    =     0    100BASE-T4 able

     (0100:0100) 5. 8    =     1    100BASE-X full duplex able

     (0080:0080) 5. 7    =     1    100BASE-TX able

     (0040:0040) 5. 6    =     1    10BASE-T full duplex able

     (0020:0020) 5. 5    =     1    10BASE-T able

     (001f:0001) 5. 4- 0 =     1    selector = IEEE 802.3

    Our board

    => mii dump 4 5

    5.     (cc61)                 -- Autonegotiation partner abilities register --

     (8000:8000) 5.15    =     1    next page able

     (4000:4000) 5.14    =     1    acknowledge

     (2000:0000) 5.13    =     0    remote fault

     (1000:0000) 5.12    =     0    (reserved)

     (0800:0800) 5.11    =     1    asymmetric pause able

     (0400:0400) 5.10    =     1    pause able

     (0200:0000) 5. 9    =     0    100BASE-T4 able

     (0100:0000) 5. 8    =     0    100BASE-X full duplex able

     (0080:0000) 5. 7    =     0    100BASE-TX able

     (0040:0040) 5. 6    =     1    10BASE-T full duplex able

     (0020:0020) 5. 5    =     1    10BASE-T able

     (001f:0001) 5. 4- 0 =     1    selector = IEEE 802.3

    Does u-boot initialize register which the Linux driver does not ?

    Another info that I got from the hardware engineer is that the first Micrel phy is about 150 mm away from the AM4376 and the second Micrel phy is about 120 mm away from the AM4376.

    Could there be timing issue between the AM4376 and the two PHYs ? 

  • Hi Renaud,

    I would like to add one more assumption about the unsuccessful Gigabit connection but success with 100Mbps. Could you verify cable connection on wires 4, 5, 7 and 8 of RJ-45 connector. (blue pair and brown pair if using 568-B colour coding).
    See the linked pictures for details:
    allpinouts.org/.../rj45plug-8p8c.png
    www.winlab.rutgers.edu/.../img_utp.GIF

    BR
    Tsvetolin Shulev
  • Hi Tsvetolin,

    I have check the cable and it is ok, pin 4,5,7 and 8 are connected.
    When using the cable with the am437x-evm-sk I get gigabit connection.
    The cable is Cat 5e patch cable.

    Best regards,

    Renaud
  • Renaud De Koninck said:
    Another info that I got from the hardware engineer is that the first Micrel phy is about 150 mm away from the AM4376 and the second Micrel phy is about 120 mm away from the AM4376. Could there be timing issue between the AM4376 and the two PHYs ? 

    Please check the timing requirements for RGMII mode in the AM437x Datasheet Rev. C, section 5.13.7.1.4. You may have serious problems at these distances.

  • Hi DK, Biser and Tsvetolin,

    We have found the issue, we are using the on chip LDO of the Micrel phy and we have mounted a non adequate MOSFET.
    Replacing the MOSFET by one that is compliant for the Micrel phy has solved the issue and now we got a gigabit connection.

    Thanks for your support,

    Best regards
    Renaud