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.

Phy not detected on GEM1 with ZYNQ

Part Number: DP83867IR

Hi ,

We are trying to bring up dp83867IR on a ZYNQ MPSOC platform, But i am getting PHY is not detected message.

So I tried dumping the registers on the PHY with PHY addr as 0x03 using mii dump.

Here is Uboot logs:

Xilinx Zynq MP First Stage Boot Loader 
Release 2018.1   Dec  7 2023  -  12:02:07
NOTICE:  ATF running on XCZU4EG/silicon v4/RTL5.1 at 0xfffea000
NOTICE:  BL31: Secure code at 0x0
NOTICE:  BL31: Non secure code at 0x8000000
NOTICE:  BL31: v1.4(release):xilinx-v2017.4-1351-gdf4a7e97
NOTICE:  BL31: Built : 06:29:20, Dec  7 2023
PMUFW:	v1.0


U-Boot 2018.01 (Dec 07 2023 - 12:00:02 +0530) Xilinx ZynqMP ZCU102 rev1.0

I2C:   ready
DRAM:  2 GiB
EL Level:	EL2
Chip ID:	zu4eg
MMC:   sdhci_transfer_data: Error detected in status(0x408000)!
sdhci@ff160000: 0 (eMMC)
SF: Detected n25q512a with page size 512 Bytes, erase size 128 KiB, total 128 MiB
*** Warning - bad CRC, using default environment

In:    serial@ff000000
Out:   serial@ff000000
Err:   serial@ff000000
Board: Xilinx ZynqMP
Bootmode: EMMC_MODE
Net:   ZYNQ GEM: ff0c0000, phyaddr 3, interface rgmii-id
ccc
GEM PHY init failed
No ethernet found.
U-BOOT for path1v1_7v1

ZYNQ GEM: ff0c0000, phyaddr 3, interface rgmii-id
mdio_register: non unique device name 'eth0'
ZYNQ GEM: ff0c0000, phyaddr 3, interface rgmii-id
mdio_register: non unique device name 'eth0'
ZYNQ GEM: ff0c0000, phyaddr 3, interface rgmii-id
mdio_register: non unique device name 'eth0'
ZYNQ GEM: ff0c0000, phyaddr 3, interface rgmii-id
mdio_register: non unique device name 'eth0'
No ethernet found.
ZYNQ GEM: ff0c0000, phyaddr 3, interface rgmii-id
mdio_register: non unique device name 'eth0'
Hit any key to stop autoboot:  0 
ZynqMP> 
ZynqMP> 
ZynqMP> mii info
PHY 0x00: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x01: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x02: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x03: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x04: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x05: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x06: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x07: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x08: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x09: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x0A: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x0B: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x0C: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x0D: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x0E: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x0F: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x10: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x11: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x12: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x13: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x14: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x15: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x16: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x17: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x18: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x19: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x1A: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x1B: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x1C: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x1D: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x1E: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x1F: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
ZynqMP> mii dump 0x3 0-5
0.     (0000)                 -- PHY control register --
  (8000:0000) 0.15    =     0    reset
  (4000:0000) 0.14    =     0    loopback
  (2040:0000) 0. 6,13 =   b00    speed selection = 10 Mbps
  (1000:0000) 0.12    =     0    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:0000) 0. 8    =     0    duplex = half
  (0080:0000) 0. 7    =     0    collision test enable
  (003f:0000) 0. 5- 0 =     0    (reserved)

1.     (0000)                 -- PHY status register --
  (8000:0000) 1.15    =     0    100BASE-T4 able
  (4000:0000) 1.14    =     0    100BASE-X  full duplex able
  (2000:0000) 1.13    =     0    100BASE-X  half duplex able
  (1000:0000) 1.12    =     0    10 Mbps    full duplex able
  (0800:0000) 1.11    =     0    10 Mbps    half duplex able
  (0400:0000) 1.10    =     0    100BASE-T2 full duplex able
  (0200:0000) 1. 9    =     0    100BASE-T2 half duplex able
  (0100:0000) 1. 8    =     0    extended status
  (0080:0000) 1. 7    =     0    (reserved)
  (0040:0000) 1. 6    =     0    MF preamble suppression
  (0020:0000) 1. 5    =     0    A/N complete
  (0010:0000) 1. 4    =     0    remote fault
  (0008:0000) 1. 3    =     0    A/N able
  (0004:0000) 1. 2    =     0    link status
  (0002:0000) 1. 1    =     0    jabber detect
  (0001:0000) 1. 0    =     0    extended capabilities

2.     (0000)                 -- PHY ID 1 register --
  (ffff:0000) 2.15- 0 =     0    OUI portion

3.     (0000)                 -- PHY ID 2 register --
  (fc00:0000) 3.15-10 =     0    OUI portion
  (03f0:0000) 3. 9- 4 =     0    manufacturer part number
  (000f:0000) 3. 3- 0 =     0    manufacturer rev. number

4.     (0000)                 -- Autonegotiation advertisement register --
  (8000:0000) 4.15    =     0    next page able
  (4000:0000) 4.14    =     0    (reserved)
  (2000:0000) 4.13    =     0    remote fault
  (1000:0000) 4.12    =     0    (reserved)
  (0800:0000) 4.11    =     0    asymmetric pause
  (0400:0000) 4.10    =     0    pause enable
  (0200:0000) 4. 9    =     0    100BASE-T4 able
  (0100:0000) 4. 8    =     0    100BASE-TX full duplex able
  (0080:0000) 4. 7    =     0    100BASE-TX able
  (0040:0000) 4. 6    =     0    10BASE-T   full duplex able
  (0020:0000) 4. 5    =     0    10BASE-T   able
  (001f:0000) 4. 4- 0 =     0    selector = ???

5.     (0000)                 -- Autonegotiation partner abilities register --
  (8000:0000) 5.15    =     0    next page able
  (4000:0000) 5.14    =     0    acknowledge
  (2000:0000) 5.13    =     0    remote fault
  (1000:0000) 5.12    =     0    (reserved)
  (0800:0000) 5.11    =     0    asymmetric pause able
  (0400:0000) 5.10    =     0    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:0000) 5. 6    =     0    10BASE-T full duplex able
  (0020:0000) 5. 5    =     0    10BASE-T able
  (001f:0000) 5. 4- 0 =     0    selector = ???


ZynqMP>  mdio list
eth0:
ZynqMP> 


And in dmesg, it shows that driver is being probed :

dmesg | grep phy
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] arch_timer: cp15 timer(s) running at 33.33MHz (phys).
[    1.661134] libphy: Fixed MDIO Bus: probed
[    1.663285] libphy: MACB_mii_bus: probed
[    1.666790] TI DP83867 ff0c0000.ethernet-ffffffff:03: attached PHY driver [TI DP83867] (mii_bus:phy_addr=ff0c0000.ethernet-ffffffff:03, irq=POLL)
[    1.667496] libphy: MACB_mii_bus: probed
[    1.707281] Generic PHY ff0e0000.ethernet-ffffffff:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ff0e0000.ethernet-ffffffff:00, irq=POLL)
[    3.912653] dwc3-of-simple ff9d0000.usb0: dwc3_simple_set_phydata: Can't find usb3-phy
root@path1v1_7v1:~# 




root@path1v1_7v1:~# dmesg
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.14.0-xilinx-v2018.1 (oe-user@oe-host) (gcc version 7.2.0 (GCC)) #1 SMP Thu Dec 7 12:00:40 IST 2023
[    0.000000] Boot CPU: AArch64 Processor [410fd034]
[    0.000000] Machine model: xlnx,zynqmp
[    0.000000] earlycon: cdns0 at MMIO 0x00000000ff000000 (options '115200n8')
[    0.000000] bootconsole [cdns0] enabled
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] cma: Reserved 256 MiB at 0x000000006fc00000
[    0.000000] On node 0 totalpages: 524032
[    0.000000]   DMA zone: 7165 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 524032 pages, LIFO batch:31
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] percpu: Embedded 21 pages/cpu @ffffffc07fe72000 s46488 r8192 d31336 u86016
[    0.000000] pcpu-alloc: s46488 r8192 d31336 u86016 alloc=21*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: enabling workaround for ARM erratum 845719
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516867
[    0.000000] Kernel command line: earlycon clk_ignore_unused
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.000000] Memory: 1778856K/2096128K available (10044K kernel code, 642K rwdata, 3032K rodata, 512K init, 2166K bss, 55128K reserved, 262144K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     modules : 0xffffff8000000000 - 0xffffff8008000000   (   128 MB)
[    0.000000]     vmalloc : 0xffffff8008000000 - 0xffffffbebfff0000   (   250 GB)
[    0.000000]       .text : 0xffffff8008080000 - 0xffffff8008a50000   ( 10048 KB)
[    0.000000]     .rodata : 0xffffff8008a50000 - 0xffffff8008d50000   (  3072 KB)
[    0.000000]       .init : 0xffffff8008d50000 - 0xffffff8008dd0000   (   512 KB)
[    0.000000]       .data : 0xffffff8008dd0000 - 0xffffff8008e70a00   (   643 KB)
[    0.000000]        .bss : 0xffffff8008e70a00 - 0xffffff800908e330   (  2167 KB)
[    0.000000]     fixed   : 0xffffffbefe7fd000 - 0xffffffbefec00000   (  4108 KB)
[    0.000000]     PCI I/O : 0xffffffbefee00000 - 0xffffffbeffe00000   (    16 MB)
[    0.000000]     vmemmap : 0xffffffbf00000000 - 0xffffffc000000000   (     4 GB maximum)
[    0.000000]               0xffffffbf00000000 - 0xffffffbf01bfc800   (    27 MB actual)
[    0.000000]     memory  : 0xffffffc000000000 - 0xffffffc07ff00000   (  2047 MB)
[    0.000000] Hierarchical RCU implementation.
[    0.000000] 	RCU event tracing is enabled.
[    0.000000] 	RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GIC: Adjusting CPU interface base to 0x00000000f902f000
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] arch_timer: cp15 timer(s) running at 33.33MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x7b0074340, max_idle_ns: 440795202884 ns
[    0.000003] sched_clock: 56 bits at 33MHz, resolution 30ns, wraps every 2199023255543ns
[    0.008250] Console: colour dummy device 80x25
[    0.012507] console [tty0] enabled
[    0.015873] bootconsole [cdns0] disabled
[    0.019781] Calibrating delay loop (skipped), value calculated using timer frequency.. 66.66 BogoMIPS (lpj=133332)
[    0.019795] pid_max: default: 32768 minimum: 301
[    0.019893] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.019906] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.020482] ASID allocator initialised with 65536 entries
[    0.020536] Hierarchical SRCU implementation.
[    0.020815] EFI services will not be available.
[    0.020839] zynqmp_plat_init Platform Management API v1.0
[    0.020848] zynqmp_plat_init Trustzone version v1.0
[    0.020949] smp: Bringing up secondary CPUs ...
[    0.021194] Detected VIPT I-cache on CPU1
[    0.021222] CPU1: Booted secondary processor [410fd034]
[    0.021492] Detected VIPT I-cache on CPU2
[    0.021510] CPU2: Booted secondary processor [410fd034]
[    0.021770] Detected VIPT I-cache on CPU3
[    0.021787] CPU3: Booted secondary processor [410fd034]
[    0.021828] smp: Brought up 1 node, 4 CPUs
[    0.021861] SMP: Total of 4 processors activated.
[    0.021870] CPU features: detected feature: 32-bit EL0 Support
[    0.021880] CPU: All CPU(s) started at EL2
[    0.021896] alternatives: patching kernel code
[    0.022555] devtmpfs: initialized
[    0.026199] random: get_random_u32 called from bucket_table_alloc+0x108/0x260 with crng_init=0
[    0.026351] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.026372] futex hash table entries: 1024 (order: 5, 131072 bytes)
[    0.031171] xor: measuring software checksum speed
[    0.067857]    8regs     :  2303.000 MB/sec
[    0.107886]    8regs_prefetch:  2053.000 MB/sec
[    0.147919]    32regs    :  2830.000 MB/sec
[    0.187947]    32regs_prefetch:  2379.000 MB/sec
[    0.187955] xor: using function: 32regs (2830.000 MB/sec)
[    0.188021] pinctrl core: initialized pinctrl subsystem
[    0.188183] random: fast init done
[    0.188524] NET: Registered protocol family 16
[    0.188992] i2c-core: driver [dummy] registered
[    0.189251] cpuidle: using governor menu
[    0.189599] vdso: 2 pages (1 code @ ffffff8008a56000, 1 data @ ffffff8008dd4000)
[    0.189615] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.190134] DMA: preallocated 256 KiB pool for atomic allocations
[    0.219620] reset_zynqmp reset-controller: Xilinx zynqmp reset driver probed
[    0.220084] ARM CCI_400_r1 PMU driver probed
[    0.224679] zynqmp-pinctrl ff180000.pinctrl: zynqmp pinctrl initialized
[    0.232781] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.300161] raid6: int64x1  gen()   403 MB/s
[    0.368191] raid6: int64x1  xor()   446 MB/s
[    0.436229] raid6: int64x2  gen()   688 MB/s
[    0.504289] raid6: int64x2  xor()   603 MB/s
[    0.572295] raid6: int64x4  gen()  1042 MB/s
[    0.640367] raid6: int64x4  xor()   742 MB/s
[    0.708442] raid6: int64x8  gen()   980 MB/s
[    0.776457] raid6: int64x8  xor()   745 MB/s
[    0.844570] raid6: neonx1   gen()   727 MB/s
[    0.912557] raid6: neonx1   xor()   853 MB/s
[    0.980639] raid6: neonx2   gen()  1169 MB/s
[    1.048674] raid6: neonx2   xor()  1208 MB/s
[    1.116736] raid6: neonx4   gen()  1505 MB/s
[    1.184779] raid6: neonx4   xor()  1442 MB/s
[    1.252835] raid6: neonx8   gen()  1652 MB/s
[    1.320889] raid6: neonx8   xor()  1533 MB/s
[    1.320898] raid6: using algorithm neonx8 gen() 1652 MB/s
[    1.320905] raid6: .... xor() 1533 MB/s, rmw enabled
[    1.320913] raid6: using neon recovery algorithm
[    1.320949] i2c-core: driver [pca953x] registered
[    1.321836] XGpio: /amba_pl@0/gpio@a0003000: registered, base is 480
[    1.322435] XGpio: /amba_pl@0/gpio@a0003000: dual channel registered, base is 448
[    1.323097] XGpio: /amba_pl@0/gpio@a0004000: registered, base is 416
[    1.323678] XGpio: /amba_pl@0/gpio@a0004000: dual channel registered, base is 384
[    1.324321] XGpio: /amba_pl@0/gpio@a0005000: registered, base is 352
[    1.324905] XGpio: /amba_pl@0/gpio@a0005000: dual channel registered, base is 320
[    1.325569] XGpio: /amba_pl@0/gpio@a0006000: registered, base is 288
[    1.326207] XGpio: /amba_pl@0/gpio@a0007000: registered, base is 256
[    1.326899] XGpio: /amba_pl@0/gpio@a0008000: registered, base is 224
[    1.327536] XGpio: /amba_pl@0/gpio@a0009000: registered, base is 192
[    1.328183] XGpio: /amba_pl@0/gpio@a000a000: registered, base is 160
[    1.328965] SCSI subsystem initialized
[    1.329007] libata version 3.00 loaded.
[    1.329135] usbcore: registered new interface driver usbfs
[    1.329171] usbcore: registered new interface driver hub
[    1.329209] usbcore: registered new device driver usb
[    1.329292] media: Linux media interface: v0.10
[    1.329319] Linux video capture interface: v2.00
[    1.329360] pps_core: LinuxPPS API ver. 1 registered
[    1.329368] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    1.329388] PTP clock support registered
[    1.329414] EDAC MC: Ver: 3.0.0
[    1.329713] zynqmp-ipi ff9905c0.mailbox: Probed ZynqMP IPI Mailbox driver.
[    1.329854] FPGA manager framework
[    1.329959] fpga-region fpga-full: FPGA Region probed
[    1.330054] Advanced Linux Sound Architecture Driver Initialized.
[    1.330294] Bluetooth: Core ver 2.22
[    1.330323] NET: Registered protocol family 31
[    1.330331] Bluetooth: HCI device and connection manager initialized
[    1.330342] Bluetooth: HCI socket layer initialized
[    1.330354] Bluetooth: L2CAP socket layer initialized
[    1.330372] Bluetooth: SCO socket layer initialized
[    1.330897] clocksource: Switched to clocksource arch_sys_counter
[    1.330973] VFS: Disk quotas dquot_6.6.0
[    1.331018] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    1.334967] NET: Registered protocol family 2
[    1.335257] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[    1.335370] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
[    1.335564] TCP: Hash tables configured (established 16384 bind 16384)
[    1.335630] UDP hash table entries: 1024 (order: 3, 32768 bytes)
[    1.335673] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes)
[    1.335785] NET: Registered protocol family 1
[    1.335984] RPC: Registered named UNIX socket transport module.
[    1.335993] RPC: Registered udp transport module.
[    1.336001] RPC: Registered tcp transport module.
[    1.336008] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.336020] PCI: CLS 0 bytes, default 128
[    1.336104] Trying to unpack rootfs image as initramfs...
[    1.587728] Freeing initrd memory: 6284K
[    1.588113] hw perfevents: no interrupt-affinity property for /pmu, guessing.
[    1.588277] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available
[    1.588969] audit: initializing netlink subsys (disabled)
[    1.589053] audit: type=2000 audit(1.575:1): state=initialized audit_enabled=0 res=1
[    1.589393] workingset: timestamp_bits=62 max_order=19 bucket_order=0
[    1.590054] NFS: Registering the id_resolver key type
[    1.590074] Key type id_resolver registered
[    1.590082] Key type id_legacy registered
[    1.590094] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    1.590116] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
[    1.616616] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
[    1.616636] io scheduler noop registered
[    1.616645] io scheduler deadline registered
[    1.616665] io scheduler cfq registered (default)
[    1.616673] io scheduler mq-deadline registered
[    1.616681] io scheduler kyber registered
[    1.617459] i2c-core: driver [si570] registered
[    1.617853] xilinx-vdma a0000000.dma: Xilinx AXI DMA Engine Driver Probed!!
[    1.618170] xilinx-zynqmp-dma fd500000.dma: ZynqMP DMA driver Probe success
[    1.618320] xilinx-zynqmp-dma fd510000.dma: ZynqMP DMA driver Probe success
[    1.618467] xilinx-zynqmp-dma fd520000.dma: ZynqMP DMA driver Probe success
[    1.618610] xilinx-zynqmp-dma fd530000.dma: ZynqMP DMA driver Probe success
[    1.618756] xilinx-zynqmp-dma fd540000.dma: ZynqMP DMA driver Probe success
[    1.618980] xilinx-zynqmp-dma fd550000.dma: ZynqMP DMA driver Probe success
[    1.619124] xilinx-zynqmp-dma fd560000.dma: ZynqMP DMA driver Probe success
[    1.619271] xilinx-zynqmp-dma fd570000.dma: ZynqMP DMA driver Probe success
[    1.619480] xilinx-zynqmp-dma ffa80000.dma: ZynqMP DMA driver Probe success
[    1.619624] xilinx-zynqmp-dma ffa90000.dma: ZynqMP DMA driver Probe success
[    1.619768] xilinx-zynqmp-dma ffaa0000.dma: ZynqMP DMA driver Probe success
[    1.619915] xilinx-zynqmp-dma ffab0000.dma: ZynqMP DMA driver Probe success
[    1.620055] xilinx-zynqmp-dma ffac0000.dma: ZynqMP DMA driver Probe success
[    1.620200] xilinx-zynqmp-dma ffad0000.dma: ZynqMP DMA driver Probe success
[    1.620345] xilinx-zynqmp-dma ffae0000.dma: ZynqMP DMA driver Probe success
[    1.620491] xilinx-zynqmp-dma ffaf0000.dma: ZynqMP DMA driver Probe success
[    1.645466] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    1.648390] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    1.652507] brd: module loaded
[    1.655799] loop: module loaded
[    1.655836] i2c-core: driver [at24] registered
[    1.656143] i2c-core: driver [tps65086] registered
[    1.656471] mtdoops: mtd device (mtddev=name/number) must be supplied
[    1.656963] cdns-spi ff050000.spi: registered master spi1
[    1.657049] spi spi1.0: setup mode 0, 8 bits/w, 1000000 Hz max --> 0
[    1.657167] spidev spi1.0: buggy DT: spidev listed directly in DT
[    1.657210] ------------[ cut here ]------------
[    1.657226] WARNING: CPU: 0 PID: 1 at /kernel-source//drivers/spi/spidev.c:730 spidev_probe+0x1d0/0x200
[    1.657237] Modules linked in:
[    1.657249] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.14.0-xilinx-v2018.1 #1
[    1.657259] Hardware name: xlnx,zynqmp (DT)
[    1.657266] task: ffffffc06d858d00 task.stack: ffffff8008038000
[    1.657275] PC is at spidev_probe+0x1d0/0x200
[    1.657283] LR is at spidev_probe+0x1cc/0x200
[    1.657291] pc : [<ffffff800860d1b8>] lr : [<ffffff800860d1b4>] pstate: 60000045
[    1.657300] sp : ffffff800803b960
[    1.657307] x29: ffffff800803b960 x28: ffffff8008db95a0 
[    1.657317] x27: 0000000000000007 x26: 0000000000000000 
[    1.657327] x25: 0000000000000000 x24: 0000000000000000 
[    1.657337] x23: 0000000000000000 x22: ffffff8008e14068 
[    1.657347] x21: 0000000000000000 x20: ffffffc06c11d000 
[    1.657357] x19: ffffff8008b0f230 x18: 0000000000000010 
[    1.657367] x17: 0000000000000001 x16: 0000000000000019 
[    1.657377] x15: ffffffffffffffff x14: 0720072007200720 
[    1.657387] x13: 0720072007200720 x12: 0000000000000010 
[    1.657397] x11: 0101010101010101 x10: 7f7f7f7f7f7f7f7f 
[    1.657407] x9 : 01fefefefeff7564 x8 : 7f7f7f7fffffffff 
[    1.657417] x7 : 63686f72fefefefe x6 : 0000808080808000 
[    1.657427] x5 : 0000000000000000 x4 : 0000000000000000 
[    1.657436] x3 : ffffff8008b0f550 x2 : 0000000000002bb5 
[    1.657446] x1 : 0000000000000040 x0 : 0000000000000000 
[    1.657456] Call trace:
[    1.657464] Exception stack(0xffffff800803b820 to 0xffffff800803b960)
[    1.657475] b820: 0000000000000000 0000000000000040 0000000000002bb5 ffffff8008b0f550
[    1.657486] b840: 0000000000000000 0000000000000000 0000808080808000 63686f72fefefefe
[    1.657498] b860: 7f7f7f7fffffffff 01fefefefeff7564 7f7f7f7f7f7f7f7f 0101010101010101
[    1.657510] b880: 0000000000000010 0720072007200720 0720072007200720 ffffffffffffffff
[    1.657522] b8a0: 0000000000000019 0000000000000001 0000000000000010 ffffff8008b0f230
[    1.657534] b8c0: ffffffc06c11d000 0000000000000000 ffffff8008e14068 0000000000000000
[    1.657545] b8e0: 0000000000000000 0000000000000000 0000000000000000 0000000000000007
[    1.657557] b900: ffffff8008db95a0 ffffff800803b960 ffffff800860d1b4 ffffff800803b960
[    1.657569] b920: ffffff800860d1b8 0000000060000045 ffffff8008b0f230 ffffffc06c11d000
[    1.657581] b940: ffffffffffffffff ffffff8008e14068 ffffff800803b960 ffffff800860d1b8
[    1.657593] [<ffffff800860d1b8>] spidev_probe+0x1d0/0x200
[    1.657604] [<ffffff8008609bd8>] spi_drv_probe+0x78/0xc8
[    1.657616] [<ffffff800857fce4>] driver_probe_device+0x22c/0x2d8
[    1.657627] [<ffffff800857feec>] __device_attach_driver+0x9c/0xf8
[    1.657637] [<ffffff800857dee4>] bus_for_each_drv+0x4c/0x98
[    1.657647] [<ffffff800857f988>] __device_attach+0xc0/0x138
[    1.657657] [<ffffff800857ffa8>] device_initial_probe+0x10/0x18
[    1.657667] [<ffffff800857ee44>] bus_probe_device+0x94/0xa0
[    1.657678] [<ffffff800857ce30>] device_add+0x390/0x598
[    1.657688] [<ffffff800860a738>] spi_add_device+0xf8/0x198
[    1.657698] [<ffffff800860c5a4>] spi_register_controller+0x43c/0x940
[    1.657708] [<ffffff800860f148>] cdns_spi_probe+0x370/0x3b8
[    1.657718] [<ffffff80085818f8>] platform_drv_probe+0x58/0xb8
[    1.657729] [<ffffff800857fce4>] driver_probe_device+0x22c/0x2d8
[    1.657739] [<ffffff800857fe4c>] __driver_attach+0xbc/0xc0
[    1.657748] [<ffffff800857de24>] bus_for_each_dev+0x4c/0x98
[    1.657758] [<ffffff800857f5e0>] driver_attach+0x20/0x28
[    1.657768] [<ffffff800857f130>] bus_add_driver+0x1b8/0x228
[    1.657778] [<ffffff80085807f8>] driver_register+0x60/0xf8
[    1.657789] [<ffffff8008581848>] __platform_driver_register+0x40/0x48
[    1.657800] [<ffffff8008d76460>] cdns_spi_driver_init+0x18/0x20
[    1.657811] [<ffffff8008083980>] do_one_initcall+0x38/0x128
[    1.657822] [<ffffff8008d50cc4>] kernel_init_freeable+0x138/0x1d8
[    1.657833] [<ffffff8008a39860>] kernel_init+0x10/0x100
[    1.657843] [<ffffff8008084a90>] ret_from_fork+0x10/0x18
[    1.657854] ---[ end trace 2af8a0824043bc5e ]---
[    1.657941] cdns-spi ff050000.spi: registered child spi1.0
[    1.658367] zynqmp-qspi ff0f0000.spi: registered master spi0
[    1.658453] spi spi0.0: setup mode 0, 8 bits/w, 108000000 Hz max --> 0
[    1.659062] m25p80 spi0.0: n25q512a (131072 Kbytes)
[    1.659086] 3 ofpart partitions found on MTD device spi0.0
[    1.659095] Creating 3 MTD partitions on "spi0.0":
[    1.659107] 0x000000000000-0x000000100000 : "boot"
[    1.659562] 0x000000100000-0x000000140000 : "bootenv"
[    1.659941] 0x000000140000-0x000001740000 : "kernel"
[    1.660327] zynqmp-qspi ff0f0000.spi: registered child spi0.0
[    1.661134] libphy: Fixed MDIO Bus: probed
[    1.662068] tun: Universal TUN/TAP device driver, 1.6
[    1.662203] CAN device driver interface
[    1.662823] macb ff0c0000.ethernet: Not enabling partial store and forward
[    1.663285] libphy: MACB_mii_bus: probed
[    1.666773] macb ff0c0000.ethernet eth0: Cadence GEM rev 0x50070106 at 0xff0c0000 irq 30 (00:0a:35:00:22:01)
[    1.666790] TI DP83867 ff0c0000.ethernet-ffffffff:03: attached PHY driver [TI DP83867] (mii_bus:phy_addr=ff0c0000.ethernet-ffffffff:03, irq=POLL)
[    1.667098] macb ff0e0000.ethernet: Not enabling partial store and forward
[    1.667496] libphy: MACB_mii_bus: probed
[    1.707258] macb ff0e0000.ethernet eth1: Cadence GEM rev 0x50070106 at 0xff0e0000 irq 31 (00:0a:35:00:22:01)
[    1.707281] Generic PHY ff0e0000.ethernet-ffffffff:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=ff0e0000.ethernet-ffffffff:00, irq=POLL)
[    1.707479] tlan: ThunderLAN driver v1.17
[    1.707533] tlan: 0 devices installed, PCI: 0  EISA: 0
[    1.708036] usbcore: registered new interface driver asix
[    1.708073] usbcore: registered new interface driver ax88179_178a
[    1.708107] usbcore: registered new interface driver cdc_ether
[    1.708136] usbcore: registered new interface driver net1080
[    1.708166] usbcore: registered new interface driver cdc_subset
[    1.708196] usbcore: registered new interface driver zaurus
[    1.708233] usbcore: registered new interface driver cdc_ncm
[    1.708536] xilinx-axipmon ffa00000.perf-monitor: Probed Xilinx APM
[    1.709116] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    1.709126] ehci-pci: EHCI PCI platform driver
[    1.709388] usbcore: registered new interface driver uas
[    1.709426] usbcore: registered new interface driver usb-storage
[    1.709898] rtc_zynqmp ffa60000.rtc: rtc core: registered ffa60000.rtc as rtc0
[    1.709955] i2c /dev entries driver
[    1.710258] i2c-dev: adapter [Cadence I2C at ff020000] registered as minor 0
[    1.710283] i2c i2c-0: adapter [Cadence I2C at ff020000] registered
[    1.710299] i2c i2c-0: of_i2c: walking child nodes
[    1.710308] cdns-i2c ff020000.i2c: 90 kHz mmio ff020000 irq 33
[    1.710610] i2c-dev: adapter [Cadence I2C at ff030000] registered as minor 1
[    1.710631] i2c i2c-1: adapter [Cadence I2C at ff030000] registered
[    1.710645] i2c i2c-1: of_i2c: walking child nodes
[    1.710651] i2c i2c-1: of_i2c: register /amba/i2c@ff030000/i2c@0
[    1.710657] i2c i2c-1: of_i2c: modalias failure on /amba/i2c@ff030000/i2c@0
[    1.710669] i2c i2c-1: Failed to create I2C device for /amba/i2c@ff030000/i2c@0
[    1.710682] i2c i2c-1: of_i2c: register /amba/i2c@ff030000/i2c@1
[    1.710686] i2c i2c-1: of_i2c: modalias failure on /amba/i2c@ff030000/i2c@1
[    1.710697] i2c i2c-1: Failed to create I2C device for /amba/i2c@ff030000/i2c@1
[    1.710711] cdns-i2c ff030000.i2c: 90 kHz mmio ff030000 irq 34
[    1.710858] i2c-core: driver [pca9541] registered
[    1.710875] i2c-core: driver [pca954x] registered
[    1.710908] i2c-core: driver [ir-kbd-i2c] registered
[    1.710943] IR NEC protocol handler initialized
[    1.710952] IR RC5(x/sz) protocol handler initialized
[    1.710959] IR RC6 protocol handler initialized
[    1.710966] IR JVC protocol handler initialized
[    1.710973] IR Sony protocol handler initialized
[    1.710981] IR SANYO protocol handler initialized
[    1.710988] IR Sharp protocol handler initialized
[    1.710995] IR MCE Keyboard/mouse protocol handler initialized
[    1.711003] IR XMP protocol handler initialized
[    1.711749] usbcore: registered new interface driver uvcvideo
[    1.711758] USB Video Class driver (1.1.1)
[    1.711898] i2c-core: driver [ina2xx] registered
[    1.711921] i2c-core: driver [pmbus] registered
[    1.711938] i2c-core: driver [max20751] registered
[    1.712202] Bluetooth: HCI UART driver ver 2.3
[    1.712213] Bluetooth: HCI UART protocol H4 registered
[    1.712221] Bluetooth: HCI UART protocol BCSP registered
[    1.712247] Bluetooth: HCI UART protocol LL registered
[    1.712256] Bluetooth: HCI UART protocol ATH3K registered
[    1.712264] Bluetooth: HCI UART protocol Three-wire (H5) registered
[    1.712308] Bluetooth: HCI UART protocol Intel registered
[    1.712317] Bluetooth: HCI UART protocol QCA registered
[    1.712351] usbcore: registered new interface driver bcm203x
[    1.712385] usbcore: registered new interface driver bpa10x
[    1.712419] usbcore: registered new interface driver bfusb
[    1.712455] usbcore: registered new interface driver btusb
[    1.712464] Bluetooth: Generic Bluetooth SDIO driver ver 0.1
[    1.712515] usbcore: registered new interface driver ath3k
[    1.712645] EDAC MC: ECC not enabled
[    1.712850] EDAC DEVICE0: Giving out device to module zynqmp-ocm-edac controller zynqmp_ocm: DEV ff960000.memory-controller (INTERRUPT)
[    1.713678] sdhci: Secure Digital Host Controller Interface driver
[    1.713687] sdhci: Copyright(c) Pierre Ossman
[    1.713694] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.758899] mmc0: SDHCI controller on ff160000.sdhci [ff160000.sdhci] using ADMA 64-bit
[    1.759192] ledtrig-cpu: registered to indicate activity on CPUs
[    1.759327] usbcore: registered new interface driver usbhid
[    1.759336] usbhid: USB HID core driver
[    1.761242] fpga_manager fpga0: Xilinx ZynqMP FPGA Manager registered
[    1.762971] pktgen: Packet Generator for packet performance testing. Version: 2.75
[    1.765182] Netfilter messages via NETLINK v0.30.
[    1.765294] ip_tables: (C) 2000-2006 Netfilter Core Team
[    1.765468] Initializing XFRM netlink socket
[    1.765527] NET: Registered protocol family 10
[    1.766033] Segment Routing with IPv6
[    1.766080] ip6_tables: (C) 2000-2006 Netfilter Core Team
[    1.766243] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    1.766603] NET: Registered protocol family 17
[    1.766619] NET: Registered protocol family 15
[    1.766637] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[    1.766651] Ebtables v2.0 registered
[    1.766739] can: controller area network core (rev 20170425 abi 9)
[    1.766772] NET: Registered protocol family 29
[    1.766781] can: raw protocol (rev 20170425)
[    1.766789] can: broadcast manager protocol (rev 20170425 t)
[    1.766800] can: netlink gateway (rev 20170425) max_hops=1
[    1.767164] Bluetooth: RFCOMM TTY layer initialized
[    1.767177] Bluetooth: RFCOMM socket layer initialized
[    1.767192] Bluetooth: RFCOMM ver 1.11
[    1.767203] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    1.767211] Bluetooth: BNEP filters: protocol multicast
[    1.767221] Bluetooth: BNEP socket layer initialized
[    1.767229] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    1.767239] Bluetooth: HIDP socket layer initialized
[    1.767405] 9pnet: Installing 9P2000 support
[    1.767424] Key type dns_resolver registered
[    1.767748] registered taskstats version 1
[    1.768111] Btrfs loaded, crc32c=crc32c-generic
[    1.773102] ff000000.serial: ttyPS0 at MMIO 0xff000000 (irq = 42, base_baud = 6249999) is a xuartps
[    2.188741] mmc0: new HS200 MMC card at address 0001
[    2.192312] mmcblk0: mmc0:0001 DG4008 7.28 GiB 
[    2.200912] mmcblk0boot0: mmc0:0001 DG4008 partition 1 4.00 MiB
[    2.210632] mmcblk0boot1: mmc0:0001 DG4008 partition 2 4.00 MiB
[    2.216889] mmcblk0rpmb: mmc0:0001 DG4008 partition 3 4.00 MiB
[    2.226051]  mmcblk0: p1 p2
[    3.874624] console [ttyPS0] enabled
[    3.878609] ff010000.serial: ttyPS1 at MMIO 0xff010000 (irq = 43, base_baud = 6249999) is a xuartps
[    3.887903] gpiochip_find_base: cannot find free range
[    3.892960] gpiochip_add_data: GPIOs 0..173 (zynqmp_gpio) failed to register
[    3.899990] zynq-gpio ff0a0000.gpio: Failed to add gpio chip
[    3.905662] zynq-gpio: probe of ff0a0000.gpio failed with error -28
[    3.912653] dwc3-of-simple ff9d0000.usb0: dwc3_simple_set_phydata: Can't find usb3-phy
[    3.921090] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
[    3.926513] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
[    3.934335] xhci-hcd xhci-hcd.0.auto: hcc params 0x0238f625 hci version 0x100 quirks 0x22010010
[    3.942986] xhci-hcd xhci-hcd.0.auto: irq 399, io mem 0xfe200000
[    3.949051] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    3.955762] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.962963] usb usb1: Product: xHCI Host Controller
[    3.967821] usb usb1: Manufacturer: Linux 4.14.0-xilinx-v2018.1 xhci-hcd
[    3.974505] usb usb1: SerialNumber: xhci-hcd.0.auto
[    3.979632] hub 1-0:1.0: USB hub found
[    3.983319] hub 1-0:1.0: 1 port detected
[    3.987380] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
[    3.992793] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2
[    4.000472] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    4.008577] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[    4.015288] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    4.022491] usb usb2: Product: xHCI Host Controller
[    4.027349] usb usb2: Manufacturer: Linux 4.14.0-xilinx-v2018.1 xhci-hcd
[    4.034033] usb usb2: SerialNumber: xhci-hcd.0.auto
[    4.039117] hub 2-0:1.0: USB hub found
[    4.042792] hub 2-0:1.0: 1 port detected
[    4.047594] rtc_zynqmp ffa60000.rtc: setting system clock to 1970-01-01 00:00:09 UTC (9)
[    4.055711] clk: Not disabling unused clocks
[    4.059933] ALSA device list:
[    4.062842]   No soundcards found.
[    4.066779] Freeing unused kernel memory: 512K
[    4.171850] udevd[1798]: starting version 3.2.2
[    4.180882] udevd[1799]: starting eudev-3.2.2
[    4.259224] asmip: loading out-of-tree module taints kernel.
[    4.265137] ASMIP.
[    4.267221] asm_init: Registers mapped to mmio = 0x9245000  
[    4.272846] Registeration is a success the major device number is 0.
[    4.279140] If you want to talk to the device driver,
[    4.284167] create a device file by following command. 
[    4.284167]  
[    4.290938] mknod ASM c 0 0
[    4.290938] 
[    4.295424] asm a0001000.ASM_IP_v3: Device Tree Probing
[    4.300632] asm a0001000.ASM_IP_v3: no IRQ found
[    4.305194] asm a0001000.ASM_IP_v3: asm at 0xa0001000 mapped to 0x0924d000
[    4.586924] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[    4.743676] usb 1-1: New USB device found, idVendor=0781, idProduct=558a
[    4.750330] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    4.757438] usb 1-1: Product: Ultra
[    4.760899] usb 1-1: Manufacturer: SanDisk
[    4.764974] usb 1-1: SerialNumber: 04010a68dc594b346ba446d43f720771d74295c42f90d1891398f98d49fdeb8f412b00000000000000000000eea67d39001665188a5581072c2c9749
[    4.779783] usb-storage 1-1:1.0: USB Mass Storage device detected
[    4.786256] scsi host0: usb-storage 1-1:1.0
[    4.923455] pps pps0: new PPS source ptp0
[    4.927415] macb ff0c0000.ethernet: gem-ptp-timer ptp clock registered.
[    4.934048] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    5.803662] scsi 0:0:0:0: Direct-Access     SanDisk  Ultra            1.00 PQ: 0 ANSI: 6
[    5.812677] sd 0:0:0:0: [sda] 60088320 512-byte logical blocks: (30.8 GB/28.7 GiB)
[    5.820554] sd 0:0:0:0: [sda] Write Protect is off
[    5.825273] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[    5.825571] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[    5.841795]  sda: sda1
[    5.848222] sd 0:0:0:0: [sda] Attached SCSI removable disk
[    5.931194] macb ff0c0000.ethernet eth0: link up (1000/Full)
[    5.936814] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    6.024795] FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
root@path1v1_7v1:~# 

Here is my device tree:

&gem1 {
        phy-handle = <&phy1>;
        local-mac-address = [00 01 02 03 04 05];
        phy-mode = "rgmii-id";
        status = "okay";
        mdio:mdio {
                #address-cells = <1>;
                #size-cells = <0>;
                //clock-frequency = <2350000>;
                status = "okay";
                phy1: ethernet-phy@3{
                status = "okay";
                compatible = "ethernet-phy-id2000.a231";
                reg = <3>;
                ti,rx-internal-delay = <DP83867_RGMIIDCTL_3_00_NS>;
                ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_75_NS>;
                ti,fifo-depth = <1>;
                ti,dp83867-rxctrl-strap-quirk;
                };
        };
};

Any Suggestions ?

Regards,
Sujan

  • Hi Sujan,

    Thank you for sharing the information.  May I ask what is your setup looks like? A block diagram would be helpful.

    If my understanding is correct, you are not able to see communication between ZYNQ and DP83867PHY through MII interface. 

    I also take a look on your register dump on the PHY, it seems like all the output value are 0000. I am not sure if my reading is correct. If possible, could you send me the register information again in the following form:

    register 0x0000 value 3100

    --

    Thank you,

    Hillman Lin

  • Hi Hillman,

    Thanks for responding.

    1) PFA, The block diagram related to PS Ethernet.

    2) Yes, You are right we are not getting any response from the PHY through MII interface.
    We have probed and checked that MAC is trying to communicate with PHY, but the PHY doesn't respond back. (Also attached the screenshot i.e. blue - mdc, purple - mdio).

    3) We also checked the PHY's CLK_OUT and it is indeed producing a clock meaning it's alive, if I'm not wrong. (Also attached the screenshot)

    4) Our GEM1 PHY addr is set to 0x3.

    Registers Read :

    root@path1v1_7v1:~# 
    root@path1v1_7v1:~# ifconfig eth0 down
    [ 2433.333118] macb ff0c0000.ethernet: gem-ptp-timer ptp clock unregistered.
    root@path1v1_7v1:~# 
    root@path1v1_7v1:~# 
    root@path1v1_7v1:~# devmem 0xff0c0000 32 0x00000010
    root@path1v1_7v1:~# devmem 0xff0c0034 32 0x61820000
    root@path1v1_7v1:~# devmem 0xff0c0034              
    0x61800000
    root@path1v1_7v1:~# devmem 0xff0c0034 32 0x61840000
    root@path1v1_7v1:~# devmem 0xff0c0034
    0x61840000
    root@path1v1_7v1:~# devmem 0xff0c0034 32 0x61880000
    root@path1v1_7v1:~# devmem 0xff0c0034
    0x61880000
    root@path1v1_7v1:~# devmem 0xff0c0034 32 0x618d0000
    root@path1v1_7v1:~# devmem 0xff0c0034
    0x618C0000
    

    Regards,
    Sujan

  • Hi Sujan,

    Thank you for sharing the block diagram, I think I have better understanding on your setup.

    When you probing the TX_CLK, are you able to see clock signal going into the PHY? This should be the output from the MAC to the PHY. If possible, could you also probe TX_CLK, TX_D0, RX_CLK, and RX_D0 on the waveform.

    If you are using RGMII interface, could you also write 0x0032 bit[0] to 1 to see if that solve the issue?

    Sorry, I still cannot understand the register value you are giving me. Could you provide value of register 0x0000 to 0x001F?

    --

    Thank you,

    Hillman Lin

  • Hi Hillman, 

    1. I will try to probe those pins you asked tomorrow, as my timezone is different.
    2. How do I access 0x0032 reg ? 
    3.  I followed this guide to read those registers values - https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/145031176/Reading+PHY+registers+over+MDIO+via+the+PHY+Management+GEM+Register 

    I have changed the address to GEM3 address i.e. 0xff0c0000 and phy addr to 0x3.

    So the registers I have read are from 0x00 to 0x03.

    Format of the register value read is 0x6180_0000, where last 4 hex is the value from reg 0x00

    Similarly, 0x6184_0000 - last 4 hex is the value read from reg 0x01 as explained in the wiki article.

    Am I doing it wrong or is there any tool u want me to use ?

    Thanks & Regards,

    Sujan 

  • Hi Hillman,

    PFA, the probed signals.

    With respect to MAC , the TX_CLK was 125Mhz & RX_CLK was 2.5Mhz.
    Pls note the 3rd signal (purple) is cntrl pin.

    You want me to write 0th bit of 0x0032 to high, Is that correct ?
    I actually read that reg, it was 0x0000, Should I still continue with writing it?

    Thanks,
    Sujan

    TX

    TX

    RX

    RX

  • Hi Sujan,

    Thank you for sharing the waveform. it seems like the waveform TX_CLK signal is not too ideal which is the output from the MAC side. 

    Sorry, I am not an expert on the Linux driver. From my understanding, you are not able to have an register access through Linux. Are you able to access the register using the our Linux sample driver?

    Here is the link for the sample linux sample driver: 

    https://www.ti.com/tool/ETHERNET-SW

    --

    Regards,

    Hillman Lin

  • Hi Hillman,

    Lets break it down,
    1) Mac is transmitting data to PHY, but PHY is not responding.
    2) PHY is producing clk from CLK_OUT pin meaning it's alive.

    ALSO NOTE: My mdc frequency is 2.08MHz for some reason even though i have not configured the clock-frequency, shouldn't it have been 2.5MHz by default? & How can I change this ?

    Can you also give me list of reasons, why PHY may not respond back ?

    Also I tried to build with sample linux driver you mentioned & got these errors.

    ERROR: linux-xlnx-4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0 do_bundle_initramfs: oe_runmake failed
    ERROR: linux-xlnx-4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0 do_bundle_initramfs: Function failed: do_bundle_initramfs (log file is located at /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/temp/log.do_bundle_initramfs.38547)
    ERROR: Logfile of failure stored in: /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/temp/log.do_bundle_initramfs.38547
    Log data follows:
    | DEBUG: Executing shell function do_bundle_initramfs
    | Creating a kernel image with a bundled initramfs...
    | Copying initramfs into ./usr ...
    | gzip decompressing image
    | Finished copy of initramfs into ./usr
    | NOTE: make HOSTCC=gcc  -isystem/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/recipe-sysroot-native/usr/include -O2 -pipe -L/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/recipe-sysroot-native/usr/lib -L/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/recipe-sysroot-native/lib -Wl,-rpath-link,/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/recipe-sysroot-native/usr/lib -Wl,-rpath-link,/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/recipe-sysroot-native/lib -Wl,-rpath,/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/recipe-sysroot-native/usr/lib -Wl,-rpath,/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/recipe-sysroot-native/lib -Wl,-O1 HOSTCPP=gcc  -E Image CC=aarch64-xilinx-linux-gcc   -fuse-ld=bfd  --sysroot=/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/recipe-sysroot -ffile-prefix-map=/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source=/kernel-source/  LD=aarch64-xilinx-linux-ld.bfd    --sysroot=/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/recipe-sysroot CONFIG_INITRAMFS_SOURCE=/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/linux-plnx_zynqmp-standard-build/usr/petalinux-user-image-plnx-zynqmp.cpio
    |   CHK     include/config/kernel.release
    |   Using /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source as source for kernel
    |   GEN     ./Makefile
    |   CHK     include/generated/uapi/linux/version.h
    |   CHK     include/generated/utsrelease.h
    |   CHK     include/generated/bounds.h
    |   CHK     include/generated/timeconst.h
    |   CHK     include/generated/asm-offsets.h
    |   CALL    /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/scripts/checksyscalls.sh
    |   CHK     scripts/mod/devicetable-offsets.h
    |   CHK     include/generated/compile.h
    |   GEN     usr/initramfs_data.cpio
    |   AS      usr/initramfs_data.o
    |   AR      usr/built-in.o
    |   CHK     kernel/config_data.h
    |   CC      drivers/net/phy/dp83867.o
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:351:8: error: unknown type name 'irqreturn_t'
    |  static irqreturn_t dp83867_handle_interrupt(struct phy_device *phydev)
    |         ^~~~~~~~~~~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c: In function 'dp83867_handle_interrupt':
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:357:3: error: implicit declaration of function 'phy_error'; did you mean 'phy_stop'? [-Werror=implicit-function-declaration]
    |    phy_error(phydev);
    |    ^~~~~~~~~
    |    phy_stop
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:358:10: error: 'IRQ_NONE' undeclared (first use in this function); did you mean 'DMI_NONE'?
    |    return IRQ_NONE;
    |           ^~~~~~~~
    |           DMI_NONE
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:358:10: note: each undeclared identifier is reported only once for each function it appears in
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:370:2: error: too few arguments to function 'phy_trigger_machine'
    |   phy_trigger_machine(phydev);
    |   ^~~~~~~~~~~~~~~~~~~
    | In file included from /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:12:0:
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/phy.h:902:6: note: declared here
    |  void phy_trigger_machine(struct phy_device *phydev, bool sync);
    |       ^~~~~~~~~~~~~~~~~~~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:372:9: error: 'IRQ_HANDLED' undeclared (first use in this function); did you mean 'IRQ_NONE'?
    |   return IRQ_HANDLED;
    |          ^~~~~~~~~~~
    |          IRQ_NONE
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c: In function 'dp83867_set_downshift':
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:443:10: error: implicit declaration of function 'phy_clear_bits'; did you mean '__clear_bit'? [-Werror=implicit-function-declaration]
    |    return phy_clear_bits(phydev, DP83867_CFG2,
    |           ^~~~~~~~~~~~~~
    |           __clear_bit
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:468:9: error: implicit declaration of function 'phy_modify'; did you mean 'pmd_modify'? [-Werror=implicit-function-declaration]
    |   return phy_modify(phydev, DP83867_CFG2,
    |          ^~~~~~~~~~
    |          pmd_modify
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c: In function 'dp83867_config_port_mirroring':
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:500:3: error: implicit declaration of function 'phy_set_bits_mmd'; did you mean 'phy_write_mmd'? [-Werror=implicit-function-declaration]
    |    phy_set_bits_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4,
    |    ^~~~~~~~~~~~~~~~
    |    phy_write_mmd
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:503:3: error: implicit declaration of function 'phy_clear_bits_mmd'; did you mean 'phy_write_mmd'? [-Werror=implicit-function-declaration]
    |    phy_clear_bits_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4,
    |    ^~~~~~~~~~~~~~~~~~
    |    phy_write_mmd
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c: In function 'dp83867_verify_rgmii_cfg':
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:525:4: error: implicit declaration of function 'phydev_warn'; did you mean 'netdev_warn'? [-Werror=implicit-function-declaration]
    |     phydev_warn(phydev,
    |     ^~~~~~~~~~~
    |     netdev_warn
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c: In function 'dp83867_of_init_io_impedance':
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:564:11: error: implicit declaration of function 'phydev_err_probe'; did you mean 'phydev_err'? [-Werror=implicit-function-declaration]
    |     return phydev_err_probe(phydev, ret,
    |            ^~~~~~~~~~~~~~~~
    |            phydev_err
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c: In function 'dp83867_of_init':
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:615:33: error: 'DP83867_CLK_O_SEL_REF_CLK' undeclared (first use in this function); did you mean 'DP83867_LED_FN_RX_TX'?
    |    if (dp83867->clk_output_sel > DP83867_CLK_O_SEL_REF_CLK &&
    |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~
    |                                  DP83867_LED_FN_RX_TX
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:616:34: error: 'DP83867_CLK_O_SEL_OFF' undeclared (first use in this function); did you mean 'DP83867_CLK_O_SEL_REF_CLK'?
    |        dp83867->clk_output_sel != DP83867_CLK_O_SEL_OFF) {
    |                                   ^~~~~~~~~~~~~~~~~~~~~
    |                                   DP83867_CLK_O_SEL_REF_CLK
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c: In function 'dp83867_config_init':
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:786:9: error: implicit declaration of function 'phy_modify_mmd'; did you mean 'phy_write_mmd'? [-Werror=implicit-function-declaration]
    |    ret = phy_modify_mmd(phydev, DP83867_DEVADDR,
    |          ^~~~~~~~~~~~~~
    |          phy_write_mmd
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:937:34: error: 'DP83867_CLK_O_SEL_OFF' undeclared (first use in this function); did you mean 'DP83867_CFG3_INT_OE'?
    |    if (dp83867->clk_output_sel == DP83867_CLK_O_SEL_OFF) {
    |                                   ^~~~~~~~~~~~~~~~~~~~~
    |                                   DP83867_CFG3_INT_OE
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c: In function 'dp83867_link_change_notify':
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1006:3: error: implicit declaration of function 'phy_set_bits'; did you mean '__set_bit'? [-Werror=implicit-function-declaration]
    |    phy_set_bits(phydev, DP83867_CFG2,
    |    ^~~~~~~~~~~~
    |    __set_bit
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c: At top level:
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1019:22: warning: 'enum led_brightness' declared inside parameter list will not be visible outside of this definition or declaration
    |        u8 index, enum led_brightness brightness)
    |                       ^~~~~~~~~~~~~~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1019:37: error: parameter 3 ('brightness') has incomplete type
    |        u8 index, enum led_brightness brightness)
    |                                      ^~~~~~~~~~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1018:1: error: function declaration isn't a prototype [-Werror=strict-prototypes]
    |  dp83867_led_brightness_set(struct phy_device *phydev,
    |  ^~~~~~~~~~~~~~~~~~~~~~~~~~
    | In file included from /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitmap.h:8:0,
    |                  from /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/ethtool.h:16,
    |                  from /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:7:
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c: In function 'dp83867_led_mode':
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1044:11: error: 'TRIGGER_NETDEV_LINK' undeclared (first use in this function); did you mean 'KEY_NEED_LINK'?
    |   case BIT(TRIGGER_NETDEV_LINK):
    |            ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1046:11: error: 'TRIGGER_NETDEV_LINK_10' undeclared (first use in this function); did you mean 'TRIGGER_NETDEV_LINK'?
    |   case BIT(TRIGGER_NETDEV_LINK_10):
    |            ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1048:11: error: 'TRIGGER_NETDEV_LINK_100' undeclared (first use in this function); did you mean 'TRIGGER_NETDEV_LINK_10'?
    |   case BIT(TRIGGER_NETDEV_LINK_100):
    |            ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1050:11: error: 'TRIGGER_NETDEV_FULL_DUPLEX' undeclared (first use in this function); did you mean 'TRIGGER_NETDEV_LINK_100'?
    |   case BIT(TRIGGER_NETDEV_FULL_DUPLEX):
    |            ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1052:11: error: 'TRIGGER_NETDEV_TX' undeclared (first use in this function); did you mean 'TRIGGER_NETDEV_LINK'?
    |   case BIT(TRIGGER_NETDEV_TX):
    |            ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1054:11: error: 'TRIGGER_NETDEV_RX' undeclared (first use in this function); did you mean 'TRIGGER_NETDEV_TX'?
    |   case BIT(TRIGGER_NETDEV_RX):
    |            ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1056:11: error: 'TRIGGER_NETDEV_LINK_1000' undeclared (first use in this function); did you mean 'TRIGGER_NETDEV_LINK_100'?
    |   case BIT(TRIGGER_NETDEV_LINK_1000):
    |            ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c: In function 'dp83867_led_hw_control_get':
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1114:16: error: 'TRIGGER_NETDEV_LINK' undeclared (first use in this function); did you mean 'KEY_NEED_LINK'?
    |    *rules = BIT(TRIGGER_NETDEV_LINK);
    |                 ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1117:16: error: 'TRIGGER_NETDEV_LINK_10' undeclared (first use in this function); did you mean 'TRIGGER_NETDEV_LINK'?
    |    *rules = BIT(TRIGGER_NETDEV_LINK_10);
    |                 ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1120:16: error: 'TRIGGER_NETDEV_LINK_100' undeclared (first use in this function); did you mean 'TRIGGER_NETDEV_LINK_10'?
    |    *rules = BIT(TRIGGER_NETDEV_LINK_100);
    |                 ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1123:16: error: 'TRIGGER_NETDEV_FULL_DUPLEX' undeclared (first use in this function); did you mean 'TRIGGER_NETDEV_LINK_100'?
    |    *rules = BIT(TRIGGER_NETDEV_FULL_DUPLEX);
    |                 ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1126:16: error: 'TRIGGER_NETDEV_TX' undeclared (first use in this function); did you mean 'TRIGGER_NETDEV_LINK'?
    |    *rules = BIT(TRIGGER_NETDEV_TX);
    |                 ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1129:16: error: 'TRIGGER_NETDEV_RX' undeclared (first use in this function); did you mean 'TRIGGER_NETDEV_TX'?
    |    *rules = BIT(TRIGGER_NETDEV_RX);
    |                 ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1132:16: error: 'TRIGGER_NETDEV_LINK_1000' undeclared (first use in this function); did you mean 'TRIGGER_NETDEV_LINK_100'?
    |    *rules = BIT(TRIGGER_NETDEV_LINK_1000);
    |                 ^
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/include/linux/bitops.h:7:28: note: in definition of macro 'BIT'
    |  #define BIT(nr)   (1UL << (nr))
    |                             ^~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c: At top level:
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1175:4: error: 'struct phy_driver' has no member named 'handle_interrupt'; did you mean 'ack_interrupt'?
    |    .handle_interrupt = dp83867_handle_interrupt,
    |     ^~~~~~~~~~~~~~~~
    |     ack_interrupt
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1183:4: error: 'struct phy_driver' has no member named 'led_brightness_set'
    |    .led_brightness_set = dp83867_led_brightness_set,
    |     ^~~~~~~~~~~~~~~~~~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1183:25: warning: excess elements in struct initializer
    |    .led_brightness_set = dp83867_led_brightness_set,
    |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1183:25: note: (near initialization for 'dp83867_driver[0]')
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1184:4: error: 'struct phy_driver' has no member named 'led_hw_is_supported'
    |    .led_hw_is_supported = dp83867_led_hw_is_supported,
    |     ^~~~~~~~~~~~~~~~~~~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1184:26: warning: excess elements in struct initializer
    |    .led_hw_is_supported = dp83867_led_hw_is_supported,
    |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1184:26: note: (near initialization for 'dp83867_driver[0]')
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1185:4: error: 'struct phy_driver' has no member named 'led_hw_control_set'
    |    .led_hw_control_set = dp83867_led_hw_control_set,
    |     ^~~~~~~~~~~~~~~~~~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1185:25: warning: excess elements in struct initializer
    |    .led_hw_control_set = dp83867_led_hw_control_set,
    |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1185:25: note: (near initialization for 'dp83867_driver[0]')
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1186:4: error: 'struct phy_driver' has no member named 'led_hw_control_get'
    |    .led_hw_control_get = dp83867_led_hw_control_get,
    |     ^~~~~~~~~~~~~~~~~~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1186:25: warning: excess elements in struct initializer
    |    .led_hw_control_get = dp83867_led_hw_control_get,
    |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:1186:25: note: (near initialization for 'dp83867_driver[0]')
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c: In function 'dp83867_handle_interrupt':
    | /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/drivers/net/phy/dp83867.c:373:1: warning: control reaches end of non-void function [-Wreturn-type]
    |  }
    |  ^
    | cc1: some warnings being treated as errors
    | make[5]: *** [/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/scripts/Makefile.build:315: drivers/net/phy/dp83867.o] Error 1
    | make[4]: *** [/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/scripts/Makefile.build:573: drivers/net/phy] Error 2
    | make[3]: *** [/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/scripts/Makefile.build:573: drivers/net] Error 2
    | make[2]: *** [/home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work-shared/plnx-zynqmp/kernel-source/Makefile:1024: drivers] Error 2
    | make[1]: *** [Makefile:146: sub-make] Error 2
    | make: *** [Makefile:24: __sub-make] Error 2
    | ERROR: oe_runmake failed
    | WARNING: /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/temp/run.do_bundle_initramfs.38547:1 exit 1 from 'exit 1'
    | ERROR: Function failed: do_bundle_initramfs (log file is located at /home/qunu/sujan/pcie_qrng/PCIe_QRNG_v1_7v1/path1v1_7v1/build/tmp/work/plnx_zynqmp-xilinx-linux/linux-xlnx/4.14-xilinx-v2018.1+gitAUTOINC+4ac76ffacb-r0/temp/log.do_bundle_initramfs.38547)
    ERROR: Task (/home/ranjan/PCIE_QRNG/petalinux_tool/components/yocto/source/aarch64/layers/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx_2018.1.bb:do_bundle_initramfs) failed with exit code '1'
    NOTE: Tasks Summary: Attempted 3137 tasks of which 3079 didn't need to be rerun and 1 failed.
    
    Summary: 1 task failed:
      /home/ranjan/PCIE_QRNG/petalinux_tool/components/yocto/source/aarch64/layers/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx_2018.1.bb:do_bundle_initramfs
    Summary: There were 4 WARNING messages shown.
    Summary: There were 2 ERROR messages shown, returning a non-zero exit code.
    ERROR: Failed to build project

    Thanks,
    Sujan

  • Hi Sujan,

    Let move back and check the health condition of the PHY. If possible, could you connect two of DP83867PHY together through RJ45 connector and read LED_0. 

    --
    Regards,

    Hillman Lin

  • Hi Hillman,

    We connected two DP83867 PHYs using RJ45 connector and both the PHY's LED_0 are lit.
    Does this mean PHY is healthy?

    If So, what should we after this ?

    Regards,
    Sujan

  • Hello,

    Hillman is OoO today, and will look to respond on Monday when he returns.

    Sincerely,

    Gerome

  • Ok, Thanks for informing Gerome.

  • Hi Hillman, 

    Any updates ?

  • Hi Sujan,

    Here is my hypothesis, the PHY is in wealthy condition and you are able to get a link up. The problem should be MAC interface.

    TX_CLK is not too ideal on the MAC side which might result in DP83867PHY not able to recognize the TX_CLK signal coming from the MAC. One thing I would focus on is the schematic (no resisitor on the TX_CLK and TX_Data) and layout such as trace length and impedance matching on the TX_CLK and TX_Data traces.

    --

    Regards,

    Hillman Lin

  • Hi Hillman, 

    Thnx for your input, I will check it out with our hardware guy.

    Btw is MDC Freq being 2.08 MHz fine ?

    Regards, 

    Sujan

  • Hi Sujan,

    This is a good point, we prefer MDC with 2.5MHz.

    MDC is output by SoC. Are you able to tune the frequency of the SoC?

    --

    Regards,

    Hillman Lin

  • We can make it 1.5MHz 2.08MHz or 3MHz, because the clock divider has 8 possible options as defined here https://docs.xilinx.com/r/en-US/ug1087-zynq-ultrascale-registers/network_config-GEM-Register

  • Hi Hillman,

    Response from our hardware guy -
    ---
    The TX_CLK & TX_Data are provided a 22E series resistors at near to the source.
    The TX_CLK is signal matched with TX_Data with 100mils tolerance on the layout. The total trace lengths are about 4.9inch. The traces are routed as 50E signals on board.
    Please let us know if there is anything that looks suspicious.

    Thanks,
    Sujan

  • Hi Sujan,

    Does removing 22 ohms series resistor help with the performance on TX_CLK and TX_DATA? In our layout recommendation, we recommend within 50 mils termination. This might result in Data and clock mismatch.

    If removing the series resistor on the TX_CLK lines does not help with the performance, we need to access the register of the PHY for further debug. Did you have an external launch pad to see if you can access the register through USB2MDIO GUI. 

    https://www.ti.com/tool/USB-2-MDIO

    --

    Regards,

    Hillman Lin

  • Hi Hillman,

    We tried removing the 22ohms resistors from TX_CLK & TX_DATA but it did not solve the issue, the PHY still doesn't respond back. But here is the TX waveform, is it ideal now & should we keep it that way going forward.

    No, Unfortunately we don't have an launchpad to use USB2MDIO utility.

    But we can only test PHY using launchpad right & not our MAC ? which you suspected earlier.

    Thanks,
    Sujan

  • Hi Sujan,

    There are two hypothesis that I am seeing why the PHY is not responding in MAC interface:

    • PHY is not configure into the correct mode or RGMII mode that is why PHY is not responding. These require register access to confirm
    • TX_CLK we are expecting a square wave instead of triangular wave. This will mess up the rising edge reading time. DP83867 do have an MII loopback on register signal that can automatically loopback the signal passing from SoC back to SoC itself. This feature won't go through the PHY internally. However, this would also require register write.

    Unfortunately, I am not the expert in Linux driver so I cannot help you much on debugging linux driver. Are you able to read register internally within the PHY by any other way? Or is there improvement on Linux driver that could help you read the register internally?

    --

    Regards,

    Hillman Lin

  • Hi Hillman,

    1) We are using DP83867IRRGZ, which does not have option for selecting RGMII mode. it is by default RGMII.

    2) TX clock we probed once again &  I have attached.

    3) We can provide signals to the PHY's mdio & mdc though I2C to check, but we require some resource to generate appropriate signals ?

    4) Also, Can you clarify which kernel version the sample driver which you provided earlier supports, so we can upgrade to that & possibly test the driver ?

    5) We also made the PL Ethernet GMII2RGMII on the same board with the same PHY & with same mdc frequency as PS (i.e., 2.08MHz) and were able to get a proper response from PHY, So we can probably rule out the possibility of mdc being the issue.(Probe capture attached).


    TX_CLK

    PL_ETHERNET response with mdc - 2.08MHz

    --

    Thanks,
    Sujan

  • Hello,

    Hillman is OoO and will be returning on Wednesday 12/27.

    Sincerely,

    Gerome

  • Hi Sujan,

    Thank you for your patience. We need register information to further debug with you current issue.

    May I ask what is the voltage level on MDIO lines? I see two different voltage level. Did you pull up voltage level of MDIO into VDDIO properly?

    --

    Regards,

    Hillman Lin

  • Hi Hillman,

    We have a MSP432 P401R launch pad, can we use that ?
    If Yes, There is mention of flashing USB2MDIO software to the MSP430 launchpad, can you provide the dependencies for MSP432 ?

    MDIO line is about 1.1v currently.

    I'm not sure about pulling up MDIO to VDDIO, can you please elaborate ? 

    I have also attached schematic checklist, please let us know if you suspect anything.1541.DP83867_Schematic_Design_Review_Checklist_Qnu.xlsx

    Thanks,
    Sujan

  • Hi Sujan,

    Sorry for the confusion. I am just asking did you have a pull up resistor on MDIO pin to VDDIO? It seems like you have a pull up resistor on MDIO line so that should be good. However, I see a different voltage level on the MDIO lines. Did you have different VDDIO between SoC and PHY?

    Yes MSP430 launch pad could definitely help. Could you try it out using USB2MDIO GUI and let me know if you are able to access register?

    From the schematic checklist, it seems like you schematic is fine.

    --

    Regards,

    Hillman Lin

  • Hi Hillman, 

    I am not sure about different vddio, I will ask and let you know.

    Btw, there has been some progress, we tried configuring the phy connected to pl, and mapped it's MDIO pins i.e emio to PS side.

    And when the driver was up we were able to get a response back from that PHY same as the ones I had attached earlier, meaning the driver is probably fine.

    But the write signal from PS is at a higher voltage level than the response we are receiving from PHY, same as earlier attached picture.

    Could this be caused, if vddio is different for SOC  and PHY ? Or is there any other reason for it ?

    Currently we are in process of swapping the two PHYs.

    Regards,

    Sujan

  • Hi Sujan,

    Good news to hear that the driver is working fine.

    Yes, different VDDIO might drive the MDIO lines in different voltage level. I will wait for your answer on that.

    --

    Regards,

    Hillman Lin

  • Hi Hillman,

    Since we are using a SOM, the power source for SOC is independent to that of board, BUT Note that the VDDIO being supplied to the PHY is 1.8V & measured correctly too, i.e., before PHY is supplied with clock. .

    We also tried reading the PHY address from USB2MDIO using MSP430 launchpad, but the PHY didn't respond back.

    Any ideas ?

    Thanks,
    Sujan

  • Hi Sujan,

    Sorry for the confusion. I believe the launch pad have VDDIO 3.3V. Therefore it should be the same issue that we are encountering in the current system.

    Launch pad could not read the register if the PHY's VDDIO is 1.8V.

    I could not think of any other issue other than the different VDDIO voltage level. I do think this is the root cause that is making your MDIO communication not functioning properly. May I ask what is the voltage level of MDC lines?

    --

    Regards,

    Hillman Lin