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.

AM4378: Adding support for Microsemi VSC8502 ethernet PHY - update

Part Number: AM4378

Posting on behalf of customer

Related to the previous post we were able to get the second PHY working by changing the Ti CPSW driver (cpsw.c) in u-boot. Although this workaround is not ideal it did allow them to get things working. It also raised more questions.

 

We noticed that the “active_slave” parameter in the “mac” object of the device tree file controlled which PHY was initialized. It defaults to 0, allowing the first PHY to work. Changing it to 1 allows the second PHY to work but stops the first PHY from working. Based on this observation they went into the CPSW driver and changed places which initialized only the active slave to initialize all slaves. This changed allowed us to see both PHYs in u-boot and allowed both PHYs to work once the Linux Kernel had booted.

 

But, we were unable to get the Linux Kernel to initialize the slaves/PHYs properly and they were only able to do this in u-boot.

 

So, this work around has generated several questions:

  • Why do we have to have u-boot call init on each PHY?
  • Why doesn’t the Linux driver initialize the PHY correctly?
  • Are we missing DTS entries that would cause the Linux driver to initialize the PHYs?

Can TI provide any additional pointers on above 

  • Here is part of our dts file related to the PHYs. This is in the "/ti-processor-sdk-linux-am437x-evm-08.02.00.24/board-support/linux-5.10.100+gitAUTOINC+7a7a3af903-g7a7a3af903/arch/arm/boot/dts/am437x-gp-evm.dts" file.

    &mac_sw {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default1>, <&cpsw_default2>;
        pinctrl-1 = <&cpsw_sleep1>, <&cpsw_sleep2>;
        dual_emac = <1>;
        status = "okay";
    };

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

        ethphy0: ethernet-phy@0 {
            reg = <0>;
            compatible = "ethernet-phy-id0007.0631";
        };

        ethphy1: ethernet-phy@14 {
            reg = <0x14>;
            compatible = "ethernet-phy-id0007.0631";
        };
    };

    &cpsw_port1 {
        phy-handle = <&ethphy0>;
        phy-mode = "rgmii-id";
        ti,dual-emac-pvid = <1>;
    };

    &cpsw_port2 {
        phy-handle = <&ethphy1>;
        phy-mode = "rgmii-id";
        ti,dual-emac-pvid = <2>;
    };

    Thanks,

    Tim

  • Hi Tim

    I have assigned this to our EMAC expert to see if they have any additional guidance to provide on this. Responses may take some time as they are tied up on other escalations. Thank you for your patience. 

  • Hi,

    Please attach the boot log by using the insert file option below. There should be a scan done by the MDIO driver that lists the found PHYs on the bus. This should align with your DTS.  

    • Why do we have to have u-boot call init on each PHY? The kernel does not rely on u-boot to initialize network, Linux drivers should do any init required.
    • Why doesn’t the Linux driver initialize the PHY correctly? It should, there should indications as the kernel boots.
    • Are we missing DTS entries that would cause the Linux driver to initialize the PHYs? Possibly, but let's review the boot log.

    Best Regards,

    Schuyler

  • Hi,

    Here is the output of dmesg (boot log). It will have some additional debugging prints where I was trying to get some insight into what is happening at boot. Please let me know if you need something else.

    Thanks,

    Tim

    2234.boot.log
    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 5.10.100-g7a7a3af903 (adb@1e2a390332f1) (arm-none-linux-gnueabihf-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025, GNU ld (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 2.33.1.20191209) #23 PREEMPT Wed Feb 1 23:51:57 UTC 2023
    [    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [    0.000000] OF: fdt: Machine model: TI AM437x GP EVM
    [    0.000000] Memory policy: Data cache writeback
    [    0.000000] efi: UEFI not found.
    [    0.000000] cma: Reserved 48 MiB at 0xfcc00000
    [    0.000000] Zone ranges:
    [    0.000000]   Normal   [mem 0x0000000080000000-0x00000000afffffff]
    [    0.000000]   HighMem  [mem 0x00000000b0000000-0x00000000ffffefff]
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x00000000ffffefff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffefff]
    [    0.000000] On node 0 totalpages: 524287
    [    0.000000]   Normal zone: 1728 pages used for memmap
    [    0.000000]   Normal zone: 0 pages reserved
    [    0.000000]   Normal zone: 196608 pages, LIFO batch:63
    [    0.000000]   HighMem zone: 327679 pages, LIFO batch:63
    [    0.000000] CPU: All CPU(s) started in SVC mode.
    [    0.000000] AM437x ES1.2 (sgx neon)
    [    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
    [    0.000000] pcpu-alloc: [0] 0 
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 522559
    [    0.000000] Kernel command line: console=ttyS0,115200n8 root=PARTUUID=ace75fa9-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] Memory: 2012004K/2097148K available (10240K kernel code, 794K rwdata, 3720K rodata, 1024K init, 282K bss, 35992K reserved, 49152K cma-reserved, 1261564K highmem)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu: 	RCU event tracing is enabled.
    [    0.000000] 	Trampoline variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
    [    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 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 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] random: get_random_bytes called from start_kernel+0x30c/0x4c8 with crng_init=0
    [    0.000000] TI gptimer clocksource: always-on /ocp@44000000/interconnect@44c00000/segment@200000/target-module@31000
    [    0.000009] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    [    0.000024] clocksource: dmtimer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
    [    0.000145] OMAP clocksource: 32k_counter at 32768 Hz
    [    0.000159] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
    [    0.000451] TI gptimer clockevent: 24000000 Hz at /ocp@44000000/interconnect@48000000/segment@0/target-module@40000
    [    0.001534] Console: colour dummy device 80x30
    [    0.001603] Calibrating delay loop... 1987.37 BogoMIPS (lpj=9936896)
    [    0.057991] pid_max: default: 32768 minimum: 301
    [    0.058186] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.058211] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
    [    0.059098] CPU: Testing write buffer coherency: ok
    [    0.059166] CPU0: Spectre v2: using BPIALL workaround
    [    0.060016] Setting up static identity map for 0x80100000 - 0x80100060
    [    0.060159] rcu: Hierarchical SRCU implementation.
    [    0.060917] EFI services will not be available.
    [    0.061668] devtmpfs: initialized
    [    0.073130] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
    [    0.073398] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.073423] futex hash table entries: 256 (order: -1, 3072 bytes, linear)
    [    0.076504] pinctrl core: initialized pinctrl subsystem
    [    0.077426] DMI not present or invalid.
    [    0.077880] NET: Registered protocol family 16
    [    0.079637] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.087088] thermal_sys: Registered thermal governor 'fair_share'
    [    0.087100] thermal_sys: Registered thermal governor 'bang_bang'
    [    0.087115] thermal_sys: Registered thermal governor 'step_wise'
    [    0.087121] thermal_sys: Registered thermal governor 'user_space'
    [    0.087560] cpuidle: using governor ladder
    [    0.087596] cpuidle: using governor menu
    [    0.096495] omap_l3_noc 44000000.ocp: L3 debug error: target 8 mod:0 (unclearable)
    [    0.096573] omap_l3_noc 44000000.ocp: L3 application error: target 8 mod:0 (unclearable)
    [    0.930161] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
    [    0.930185] hw-breakpoint: maximum watchpoint size is 4 bytes.
    [    0.955082] reg-fixed-voltage fixedregulator-v3_3d: GPIO lookup for consumer (null)
    [    0.955094] reg-fixed-voltage fixedregulator-v3_3d: using device tree for GPIO lookup
    [    0.955126] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-v3_3d[0]'
    [    0.955142] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator-v3_3d[0]'
    [    0.955153] reg-fixed-voltage fixedregulator-v3_3d: using lookup tables for GPIO lookup
    [    0.955162] reg-fixed-voltage fixedregulator-v3_3d: No GPIO consumer (null) found
    [    0.955448] reg-fixed-voltage fixedregulator-vtt: GPIO lookup for consumer (null)
    [    0.955458] reg-fixed-voltage fixedregulator-vtt: using device tree for GPIO lookup
    [    0.955476] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-vtt[0]'
    [    0.955497] reg-fixed-voltage fixedregulator-vtt: No GPIO consumer (null) found
    [    0.955576] reg-fixed-voltage fixedregulator-mmcwl: GPIO lookup for consumer (null)
    [    0.955583] reg-fixed-voltage fixedregulator-mmcwl: using device tree for GPIO lookup
    [    0.955600] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-mmcwl[0]'
    [    0.955620] reg-fixed-voltage fixedregulator-mmcwl: No GPIO consumer (null) found
    [    0.956602] iommu: Default domain type: Translated 
    [    0.958950] SCSI subsystem initialized
    [    0.959515] mc: Linux media interface: v0.10
    [    0.959559] videodev: Linux video capture interface: v2.00
    [    0.959656] pps_core: LinuxPPS API ver. 1 registered
    [    0.959666] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.959688] PTP clock support registered
    [    0.959743] EDAC MC: Ver: 3.0.0
    [    0.960926] Advanced Linux Sound Architecture Driver Initialized.
    [    0.962215] clocksource: Switched to clocksource dmtimer
    [    0.969660] NET: Registered protocol family 2
    [    0.969998] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.971143] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
    [    0.971181] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
    [    0.971242] TCP bind hash table entries: 8192 (order: 3, 32768 bytes, linear)
    [    0.971317] TCP: Hash tables configured (established 8192 bind 8192)
    [    0.971492] UDP hash table entries: 512 (order: 1, 8192 bytes, linear)
    [    0.971518] UDP-Lite hash table entries: 512 (order: 1, 8192 bytes, linear)
    [    0.971638] NET: Registered protocol family 1
    [    0.972190] RPC: Registered named UNIX socket transport module.
    [    0.972267] RPC: Registered udp transport module.
    [    0.972275] RPC: Registered tcp transport module.
    [    0.972282] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.972297] PCI: CLS 0 bytes, default 64
    [    0.974129] Initialise system trusted keyrings
    [    0.974443] workingset: timestamp_bits=14 max_order=19 bucket_order=5
    [    0.977847] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.978558] NFS: Registering the id_resolver key type
    [    0.978601] Key type id_resolver registered
    [    0.978609] Key type id_legacy registered
    [    0.978685] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.978695] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.978734] ntfs: driver 2.1.32 [Flags: R/O].
    [    0.979342] Key type asymmetric registered
    [    0.979360] Asymmetric key parser 'x509' registered
    [    0.979420] bounce: pool size: 64 pages
    [    0.979474] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
    [    0.979485] io scheduler mq-deadline registered
    [    0.979492] io scheduler kyber registered
    [    1.333911] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
    [    1.546583] debugfs: Directory '49000000.dma' with parent 'dmaengine' already present!
    [    1.546619] edma 49000000.dma: TI EDMA DMA engine driver
    [    1.556626] pinctrl-single 44e10800.pinmux: 199 pins, size 796
    [    1.560895] pwm-backlight backlight: GPIO lookup for consumer enable
    [    1.560910] pwm-backlight backlight: using device tree for GPIO lookup
    [    1.560942] of_get_named_gpiod_flags: can't parse 'enable-gpios' property of node '/backlight[0]'
    [    1.560958] of_get_named_gpiod_flags: can't parse 'enable-gpio' property of node '/backlight[0]'
    [    1.560969] pwm-backlight backlight: using lookup tables for GPIO lookup
    [    1.560978] pwm-backlight backlight: No GPIO consumer enable found
    [    1.560999] pwm-backlight backlight: supply power not found, using dummy regulator
    [    1.603938] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    1.607635] omap8250 44e09000.serial: No clock speed specified: using default: 48000000
    [    1.608535] printk: console [ttyS0] disabled
    [    1.608572] omap8250 44e09000.serial: GPIO lookup for consumer rs485-term
    [    1.608578] omap8250 44e09000.serial: using device tree for GPIO lookup
    [    1.608616] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp@44000000/interconnect@44c00000/segment@200000/target-module@9000/serial@0[0]'
    [    1.608637] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp@44000000/interconnect@44c00000/segment@200000/target-module@9000/serial@0[0]'
    [    1.608650] omap8250 44e09000.serial: using lookup tables for GPIO lookup
    [    1.608658] omap8250 44e09000.serial: No GPIO consumer rs485-term found
    [    1.608695] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 56, base_baud = 3000000) is a 8250
    [    2.354073] printk: console [ttyS0] enabled
    [    2.359291] omap8250 48022000.serial: No clock speed specified: using default: 48000000
    [    2.368253] omap8250 48022000.serial: GPIO lookup for consumer rs485-term
    [    2.368265] omap8250 48022000.serial: using device tree for GPIO lookup
    [    2.368302] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@22000/serial@0[0]'
    [    2.368323] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@22000/serial@0[0]'
    [    2.368335] omap8250 48022000.serial: using lookup tables for GPIO lookup
    [    2.368343] omap8250 48022000.serial: No GPIO consumer rs485-term found
    [    2.368379] 48022000.serial: ttyS1 at MMIO 0x48022000 (irq = 63, base_baud = 3000000) is a 8250
    [    2.378074] omap8250 48024000.serial: No clock speed specified: using default: 48000000
    [    2.386988] omap8250 48024000.serial: GPIO lookup for consumer rs485-term
    [    2.386999] omap8250 48024000.serial: using device tree for GPIO lookup
    [    2.387036] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@24000/serial@0[0]'
    [    2.387059] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@24000/serial@0[0]'
    [    2.387073] omap8250 48024000.serial: using lookup tables for GPIO lookup
    [    2.387081] omap8250 48024000.serial: No GPIO consumer rs485-term found
    [    2.387114] 48024000.serial: ttyS2 at MMIO 0x48024000 (irq = 64, base_baud = 3000000) is a 8250
    [    2.396848] omap8250 481a6000.serial: No clock speed specified: using default: 48000000
    [    2.405756] omap8250 481a6000.serial: GPIO lookup for consumer rs485-term
    [    2.405768] omap8250 481a6000.serial: using device tree for GPIO lookup
    [    2.405803] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp@44000000/interconnect@48000000/segment@100000/target-module@a6000/serial@0[0]'
    [    2.405824] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp@44000000/interconnect@48000000/segment@100000/target-module@a6000/serial@0[0]'
    [    2.405837] omap8250 481a6000.serial: using lookup tables for GPIO lookup
    [    2.405844] omap8250 481a6000.serial: No GPIO consumer rs485-term found
    [    2.405879] 481a6000.serial: ttyS3 at MMIO 0x481a6000 (irq = 71, base_baud = 3000000) is a 8250
    [    2.415552] omap8250 481aa000.serial: No clock speed specified: using default: 48000000
    [    2.424456] omap8250 481aa000.serial: GPIO lookup for consumer rs485-term
    [    2.424468] omap8250 481aa000.serial: using device tree for GPIO lookup
    [    2.424504] of_get_named_gpiod_flags: can't parse 'rs485-term-gpios' property of node '/ocp@44000000/interconnect@48000000/segment@100000/target-module@aa000/serial@0[0]'
    [    2.424525] of_get_named_gpiod_flags: can't parse 'rs485-term-gpio' property of node '/ocp@44000000/interconnect@48000000/segment@100000/target-module@aa000/serial@0[0]'
    [    2.424538] omap8250 481aa000.serial: using lookup tables for GPIO lookup
    [    2.424545] omap8250 481aa000.serial: No GPIO consumer rs485-term found
    [    2.424581] 481aa000.serial: ttyS5 at MMIO 0x481aa000 (irq = 72, base_baud = 3000000) is a 8250
    [    2.436444] omap_rng 48310000.rng: Random Number Generator ver. 20
    [    2.442886] random: fast init done
    [    2.446507] random: crng init done
    [    2.452147] omapdss_dss 4832a000.dss: supply vdda_video not found, using dummy regulator
    [    2.466720] panel-simple display: GPIO lookup for consumer hpd
    [    2.466732] panel-simple display: using device tree for GPIO lookup
    [    2.466765] of_get_named_gpiod_flags: can't parse 'hpd-gpios' property of node '/display[0]'
    [    2.466779] of_get_named_gpiod_flags: can't parse 'hpd-gpio' property of node '/display[0]'
    [    2.466791] panel-simple display: using lookup tables for GPIO lookup
    [    2.466799] panel-simple display: No GPIO consumer hpd found
    [    2.466827] panel-simple display: supply power not found, using dummy regulator
    [    2.474410] panel-simple display: GPIO lookup for consumer enable
    [    2.474418] panel-simple display: using device tree for GPIO lookup
    [    2.474447] of_get_named_gpiod_flags: can't parse 'enable-gpios' property of node '/display[0]'
    [    2.474462] of_get_named_gpiod_flags: can't parse 'enable-gpio' property of node '/display[0]'
    [    2.474473] panel-simple display: using lookup tables for GPIO lookup
    [    2.474479] panel-simple display: No GPIO consumer enable found
    [    2.474511] panel-simple display: Specify missing connector_type
    [    2.495065] brd: module loaded
    [    2.507102] loop: module loaded
    [    2.517382] mdio_bus fixed-0: GPIO lookup for consumer reset
    [    2.517399] mdio_bus fixed-0: using lookup tables for GPIO lookup
    [    2.517407] mdio_bus fixed-0: No GPIO consumer reset found
    [    2.522949] mdio_bus 4a101000.mdio: GPIO lookup for consumer reset
    [    2.522964] mdio_bus 4a101000.mdio: using device tree for GPIO lookup
    [    2.522997] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp@44000000/interconnect@4a000000/segment@0/target-module@100000/switch@0/mdio@1000[0]'
    [    2.523020] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp@44000000/interconnect@4a000000/segment@0/target-module@100000/switch@0/mdio@1000[0]'
    [    2.523033] mdio_bus 4a101000.mdio: using lookup tables for GPIO lookup
    [    2.523040] mdio_bus 4a101000.mdio: No GPIO consumer reset found
    [    2.582268] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6, bus freq 1000000
    [    2.590635] mdio_bus 4a101000.mdio:00: GPIO lookup for consumer reset
    [    2.590647] mdio_bus 4a101000.mdio:00: using device tree for GPIO lookup
    [    2.590686] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp@44000000/interconnect@4a000000/segment@0/target-module@100000/switch@0/mdio@1000/ethernet-phy@0[0]'
    [    2.590709] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp@44000000/interconnect@4a000000/segment@0/target-module@100000/switch@0/mdio@1000/ethernet-phy@0[0]'
    [    2.590722] mdio_bus 4a101000.mdio:00: using lookup tables for GPIO lookup
    [    2.590729] mdio_bus 4a101000.mdio:00: No GPIO consumer reset found
    [    2.592009] mdio_bus 4a101000.mdio:14: GPIO lookup for consumer reset
    [    2.592021] mdio_bus 4a101000.mdio:14: using device tree for GPIO lookup
    [    2.592057] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp@44000000/interconnect@4a000000/segment@0/target-module@100000/switch@0/mdio@1000/ethernet-phy@14[0]'
    [    2.592080] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp@44000000/interconnect@4a000000/segment@0/target-module@100000/switch@0/mdio@1000/ethernet-phy@14[0]'
    [    2.592092] mdio_bus 4a101000.mdio:14: using lookup tables for GPIO lookup
    [    2.592099] mdio_bus 4a101000.mdio:14: No GPIO consumer reset found
    [    2.592922] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver Microsemi GE VSC8502 SyncE
    [    2.602706] davinci_mdio 4a101000.mdio: phy[20]: device 4a101000.mdio:14, driver Microsemi GE VSC8502 SyncE
    [    2.613489] cpsw-switch 4a100000.switch: initialized cpsw ale version 1.4
    [    2.620319] cpsw-switch 4a100000.switch: ALE Table size 1024
    [    2.626171] cpsw-switch 4a100000.switch: cpts: overflow check period 500 (jiffies)
    [    2.633841] cpsw-switch 4a100000.switch: CPTS: ref_clk_freq:250000000 calc_mult:2147483648 calc_shift:29 error:0 nsec/sec
    [    2.644946] cpsw-switch 4a100000.switch: Detected MACID = 14:42:fc:b4:ee:a3
    [    2.651962] cpsw-switch 4a100000.switch: Detected MACID = 14:42:fc:b4:ee:a5
    [    2.660303] cpsw-switch 4a100000.switch: initialized (regs 0x4a100000, pool size 256) hw_ver:0019010F 1.15 (0)
    [    2.671580] i2c /dev entries driver
    [    2.678204] cpuidle: enable-method property 'ti,am4372' found operations
    [    2.685762] sdhci: Secure Digital Host Controller Interface driver
    [    2.691975] sdhci: Copyright(c) Pierre Ossman
    [    2.697655] sdhci-pltfm: SDHCI platform and OF driver helper
    [    2.705034] sdhci-omap 48060000.mmc: GPIO lookup for consumer cd
    [    2.705046] sdhci-omap 48060000.mmc: using device tree for GPIO lookup
    [    2.705087] sdhci-omap 48060000.mmc: No GPIO consumer cd found
    [    2.705692] sdhci-omap 481d8000.mmc: GPIO lookup for consumer cd
    [    2.705701] sdhci-omap 481d8000.mmc: using device tree for GPIO lookup
    [    2.705736] of_get_named_gpiod_flags: can't parse 'cd-gpios' property of node '/ocp@44000000/interconnect@48000000/segment@100000/target-module@d8000/mmc@0[0]'
    [    2.705756] of_get_named_gpiod_flags: can't parse 'cd-gpio' property of node '/ocp@44000000/interconnect@48000000/segment@100000/target-module@d8000/mmc@0[0]'
    [    2.705767] sdhci-omap 481d8000.mmc: using lookup tables for GPIO lookup
    [    2.705775] sdhci-omap 481d8000.mmc: No GPIO consumer cd found
    [    2.705782] sdhci-omap 481d8000.mmc: GPIO lookup for consumer wp
    [    2.705787] sdhci-omap 481d8000.mmc: using device tree for GPIO lookup
    [    2.705806] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp@44000000/interconnect@48000000/segment@100000/target-module@d8000/mmc@0[0]'
    [    2.705825] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp@44000000/interconnect@48000000/segment@100000/target-module@d8000/mmc@0[0]'
    [    2.705832] sdhci-omap 481d8000.mmc: using lookup tables for GPIO lookup
    [    2.705838] sdhci-omap 481d8000.mmc: No GPIO consumer wp found
    [    2.705977] sdhci-omap 481d8000.mmc: supply vqmmc not found, using dummy regulator
    [    2.714622] ledtrig-cpu: registered to indicate activity on CPUs
    [    2.734874] NET: Registered protocol family 10
    [    2.742874] Segment Routing with IPv6
    [    2.746636] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    2.762896] NET: Registered protocol family 17
    [    2.767431] lib80211: common routines for IEEE802.11 drivers
    [    2.777428] lib80211_crypt: registered algorithm 'NULL'
    [    2.777441] lib80211_crypt: registered algorithm 'WEP'
    [    2.777446] lib80211_crypt: registered algorithm 'CCMP'
    [    2.777451] lib80211_crypt: registered algorithm 'TKIP'
    [    2.777809] Key type dns_resolver registered
    [    2.782975] omap_voltage_late_init: Voltage driver support not added
    [    2.790157] Loading compiled-in X.509 certificates
    [    2.802378] mmc0: SDHCI controller on 481d8000.mmc [481d8000.mmc] using External DMA
    [    2.821578] reg-fixed-voltage fixedregulator-vtt: GPIO lookup for consumer (null)
    [    2.821595] reg-fixed-voltage fixedregulator-vtt: using device tree for GPIO lookup
    [    2.821631] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-vtt[0]'
    [    2.821657] reg-fixed-voltage fixedregulator-vtt: No GPIO consumer (null) found
    [    2.822389] reg-fixed-voltage fixedregulator-mmcwl: GPIO lookup for consumer (null)
    [    2.822401] reg-fixed-voltage fixedregulator-mmcwl: using device tree for GPIO lookup
    [    2.822428] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-mmcwl[0]'
    [    2.822449] reg-fixed-voltage fixedregulator-mmcwl: No GPIO consumer (null) found
    [    2.823539] gpio gpiochip0: (gpio-0-31): added GPIO chardev (254:0)
    [    2.823696] gpio gpiochip0: registered GPIOs 0 to 31 on gpio-0-31
    [    2.823744] OMAP GPIO hardware version 0.1
    [    2.829513] i2c i2c-0: GPIO lookup for consumer scl
    [    2.829527] i2c i2c-0: using device tree for GPIO lookup
    [    2.829562] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp@44000000/interconnect@44c00000/segment@200000/target-module@b000/i2c@0[0]'
    [    2.829583] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp@44000000/interconnect@44c00000/segment@200000/target-module@b000/i2c@0[0]'
    [    2.829596] i2c i2c-0: using lookup tables for GPIO lookup
    [    2.829603] i2c i2c-0: No GPIO consumer scl found
    [    2.829621] i2c i2c-0: GPIO lookup for consumer sda
    [    2.829625] i2c i2c-0: using device tree for GPIO lookup
    [    2.829645] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp@44000000/interconnect@44c00000/segment@200000/target-module@b000/i2c@0[0]'
    [    2.829663] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp@44000000/interconnect@44c00000/segment@200000/target-module@b000/i2c@0[0]'
    [    2.829671] i2c i2c-0: using lookup tables for GPIO lookup
    [    2.829676] i2c i2c-0: No GPIO consumer sda found
    [    2.829727] omap_i2c 44e0b000.i2c: bus 0 rev0.12 at 100 kHz
    [    2.836859] i2c i2c-1: GPIO lookup for consumer scl
    [    2.836871] i2c i2c-1: using device tree for GPIO lookup
    [    2.836905] of_get_named_gpiod_flags: can't parse 'scl-gpios' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@2a000/i2c@0[0]'
    [    2.836927] of_get_named_gpiod_flags: can't parse 'scl-gpio' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@2a000/i2c@0[0]'
    [    2.836939] i2c i2c-1: using lookup tables for GPIO lookup
    [    2.836947] i2c i2c-1: No GPIO consumer scl found
    [    2.836963] i2c i2c-1: GPIO lookup for consumer sda
    [    2.836968] i2c i2c-1: using device tree for GPIO lookup
    [    2.836986] of_get_named_gpiod_flags: can't parse 'sda-gpios' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@2a000/i2c@0[0]'
    [    2.837004] of_get_named_gpiod_flags: can't parse 'sda-gpio' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@2a000/i2c@0[0]'
    [    2.837011] i2c i2c-1: using lookup tables for GPIO lookup
    [    2.837017] i2c i2c-1: No GPIO consumer sda found
    [    2.847734] mmc0: new high speed SDIO card at address 0001
    [    2.864564] tps65218-pwrbutton: Failed to locate of_node [id: -2]
    [    2.871007] tps65218-gpio: Failed to locate of_node [id: -2]
    [    2.890690] lm75 1-0048: supply vs not found, using dummy regulator
    [    2.898334] lm75 1-0048: hwmon0: sensor 'lm75'
    [    2.902976] omap_i2c 4802a000.i2c: bus 1 rev0.12 at 100 kHz
    [    2.909457] gpio gpiochip1: (gpio-32-63): added GPIO chardev (254:1)
    [    2.909543] gpio gpiochip1: registered GPIOs 32 to 63 on gpio-32-63
    [    2.910294] gpio gpiochip2: (gpio-64-95): added GPIO chardev (254:2)
    [    2.910373] gpio gpiochip2: registered GPIOs 64 to 95 on gpio-64-95
    [    2.911179] gpio gpiochip3: (gpio-96-127): added GPIO chardev (254:3)
    [    2.911271] gpio gpiochip3: registered GPIOs 96 to 127 on gpio-96-127
    [    2.912029] gpio gpiochip4: (gpio-128-159): added GPIO chardev (254:4)
    [    2.912104] gpio gpiochip4: registered GPIOs 128 to 159 on gpio-128-159
    [    2.912880] gpio gpiochip5: (gpio-160-191): added GPIO chardev (254:5)
    [    2.912960] gpio gpiochip5: registered GPIOs 160 to 191 on gpio-160-191
    [    2.917170] omapdss_dss 4832a000.dss: supply vdda_video not found, using dummy regulator
    [    2.925635] DSS: OMAP DSS rev 2.0
    [    2.931173] omapdss_dss 4832a000.dss: bound 4832a400.dispc (ops dispc_component_ops)
    [    2.939546] omapdrm omapdrm.0: DMM not available, disable DMM support
    [    3.010215] Console: switching to colour frame buffer device 100x30
    [    3.033339] omapdrm omapdrm.0: [drm] fb0: omapdrmdrmfb frame buffer device
    [    3.040987] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0
    [    3.050878] sdhci-omap 48060000.mmc: GPIO lookup for consumer cd
    [    3.050892] sdhci-omap 48060000.mmc: using device tree for GPIO lookup
    [    3.050948] of_get_named_gpiod_flags: parsed 'cd-gpios' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@60000/mmc@0[0]' - status (0)
    [    3.051020] gpio gpiochip0: Persistence not supported for GPIO 6
    [    3.051038] omap_gpio 44e07000.gpio: Could not set line 6 debounce to 200000 microseconds (-22)
    [    3.060095] reg-fixed-voltage fixedregulator-vtt: GPIO lookup for consumer (null)
    [    3.060104] reg-fixed-voltage fixedregulator-vtt: using device tree for GPIO lookup
    [    3.060126] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-vtt[0]'
    [    3.060158] of_get_named_gpiod_flags: parsed 'gpio' property of node '/fixedregulator-vtt[0]' - status (0)
    [    3.060216] gpio gpiochip5: Persistence not supported for GPIO 7
    [    3.060630] reg-fixed-voltage fixedregulator-mmcwl: GPIO lookup for consumer (null)
    [    3.060639] reg-fixed-voltage fixedregulator-mmcwl: using device tree for GPIO lookup
    [    3.060660] of_get_named_gpiod_flags: can't parse 'gpios' property of node '/fixedregulator-mmcwl[0]'
    [    3.060688] of_get_named_gpiod_flags: parsed 'gpio' property of node '/fixedregulator-mmcwl[0]' - status (0)
    [    3.060744] gpio gpiochip1: Persistence not supported for GPIO 20
    [    3.063041] ALSA device list:
    [    3.066042]   No soundcards found.
    [    3.070294] sdhci-omap 48060000.mmc: Got CD GPIO
    [    3.075082] sdhci-omap 48060000.mmc: GPIO lookup for consumer wp
    [    3.075090] sdhci-omap 48060000.mmc: using device tree for GPIO lookup
    [    3.075135] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@60000/mmc@0[0]'
    [    3.075155] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@60000/mmc@0[0]'
    [    3.075169] sdhci-omap 48060000.mmc: using lookup tables for GPIO lookup
    [    3.075177] sdhci-omap 48060000.mmc: No GPIO consumer wp found
    [    3.075346] sdhci-omap 48060000.mmc: supply vqmmc not found, using dummy regulator
    [    3.132593] mmc1: SDHCI controller on 48060000.mmc [48060000.mmc] using External DMA
    [    3.141461] Waiting for root device PARTUUID=ace75fa9-02...
    [    3.183303] mmc1: new high speed SDHC card at address 0007
    [    3.190175] mmcblk1: mmc1:0007 SDCIT 7.29 GiB 
    [    3.197564]  mmcblk1: p1 p2 p3
    [    3.879493] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
    [    3.887939] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    3.904164] devtmpfs: mounted
    [    3.909281] Freeing unused kernel memory: 1024K
    [    3.914129] Run /sbin/init as init process
    [    3.918250]   with arguments:
    [    3.918257]     /sbin/init
    [    3.918262]   with environment:
    [    3.918268]     HOME=/
    [    3.918273]     TERM=linux
    [    4.262885] systemd[1]: System time before build time, advancing clock.
    [    4.307504] systemd[1]: systemd 244 running in system mode. (+PAM -AUDIT -SELINUX +IMA -APPARMOR -SMACK +SYSVINIT +UTMP -LIBCRYPTSETUP -GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN2 -IDN -PCRE2 default-hierarchy=hybrid)
    [    4.329921] systemd[1]: Detected architecture arm.
    [    4.373641] systemd[1]: Set hostname to <am437x-evm>.
    [    5.081636] systemd[1]: system-serial\x2dgetty.slice: unit configures an IP firewall, but the local system does not support BPF/cgroup firewalling.
    [    5.095157] systemd[1]: (This warning is only shown for the first unit using IP firewalling.)
    [    5.107814] systemd[1]: Created slice system-serial\x2dgetty.slice.
    [    5.144437] systemd[1]: Created slice User and Session Slice.
    [    5.183485] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [    5.223472] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [    5.264466] systemd[1]: Reached target Paths.
    [    5.302667] systemd[1]: Reached target Remote File Systems.
    [    5.342864] systemd[1]: Reached target Slices.
    [    5.382982] systemd[1]: Reached target Swap.
    [    5.429482] systemd[1]: Listening on RPCbind Server Activation Socket.
    [    5.472909] systemd[1]: Reached target RPC Port Mapper.
    [    5.525309] systemd[1]: Listening on Process Core Dump Socket.
    [    5.563207] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [    5.651689] systemd[1]: Condition check resulted in Journal Audit Socket being skipped.
    [    5.661312] systemd[1]: Listening on Journal Socket (/dev/log).
    [    5.705360] systemd[1]: Listening on Journal Socket.
    [    5.743932] systemd[1]: Listening on Network Service Netlink Socket.
    [    5.784286] systemd[1]: Listening on udev Control Socket.
    [    5.823371] systemd[1]: Listening on udev Kernel Socket.
    [    5.864193] systemd[1]: Condition check resulted in Huge Pages File System being skipped.
    [    5.881628] systemd[1]: Mounting POSIX Message Queue File System...
    [    5.928483] systemd[1]: Mounting Kernel Debug File System...
    [    5.980870] systemd[1]: Mounting Temporary Directory (/tmp)...
    [    6.028897] systemd[1]: Starting Create list of static device nodes for the current kernel...
    [    6.090299] systemd[1]: Starting RPC Bind...
    [    6.133313] systemd[1]: Condition check resulted in File System Check on Root Device being skipped.
    [    6.157656] systemd[1]: Starting Journal Service...
    [    6.191512] systemd[1]: Starting Load Kernel Modules...
    [    6.240250] cryptodev: loading out-of-tree module taints kernel.
    [    6.268263] systemd[1]: Starting Remount Root and Kernel File Systems...
    [    6.282757] cryptodev: driver 1.10 loaded.
    [    6.328485] systemd[1]: Starting udev Coldplug all Devices...
    [    6.391042] systemd[1]: Started RPC Bind.
    [    6.443554] systemd[1]: Mounted POSIX Message Queue File System.
    [    6.463492] systemd[1]: Mounted Kernel Debug File System.
    [    6.503386] systemd[1]: Mounted Temporary Directory (/tmp).
    [    6.525713] systemd[1]: Started Create list of static device nodes for the current kernel.
    [    6.575915] systemd[1]: Started Load Kernel Modules.
    [    6.590424] systemd[1]: Started Journal Service.
    [    8.298335] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
    [    8.491221] systemd-journald[94]: Received client request to flush runtime journal.
    [   11.445440] remoteproc remoteproc0: wkup_m3 is available
    [   12.376154] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [   12.443888] omap_rtc 44e3e000.rtc: char device (252:0)
    [   12.443921] omap_rtc 44e3e000.rtc: registered as rtc0
    [   12.572387] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01T00:00:00 UTC (946684800)
    [   12.581078] omap_rtc 44e3e000.rtc: GPIO lookup for consumer wp
    [   12.581085] omap_rtc 44e3e000.rtc: using device tree for GPIO lookup
    [   12.581139] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp@44000000/interconnect@44c00000/segment@200000/target-module@3e000/rtc@0[0]'
    [   12.581161] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp@44000000/interconnect@44c00000/segment@200000/target-module@3e000/rtc@0[0]'
    [   12.581175] omap_rtc 44e3e000.rtc: using lookup tables for GPIO lookup
    [   12.581183] omap_rtc 44e3e000.rtc: No GPIO consumer wp found
    [   12.970699] remoteproc remoteproc0: powering up wkup_m3
    [   13.115271] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 243276
    [   13.129068] edt_ft5x06 1-0038: supply vcc not found, using dummy regulator
    [   13.241726] edt_ft5x06 1-0038: GPIO lookup for consumer reset
    [   13.241743] edt_ft5x06 1-0038: using device tree for GPIO lookup
    [   13.241798] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@2a000/i2c@0/ft5426_ts@38[0]'
    [   13.241821] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@2a000/i2c@0/ft5426_ts@38[0]'
    [   13.241836] edt_ft5x06 1-0038: using lookup tables for GPIO lookup
    [   13.241844] edt_ft5x06 1-0038: No GPIO consumer reset found
    [   13.241850] edt_ft5x06 1-0038: GPIO lookup for consumer wake
    [   13.241855] edt_ft5x06 1-0038: using device tree for GPIO lookup
    [   13.241876] of_get_named_gpiod_flags: can't parse 'wake-gpios' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@2a000/i2c@0/ft5426_ts@38[0]'
    [   13.241897] of_get_named_gpiod_flags: can't parse 'wake-gpio' property of node '/ocp@44000000/interconnect@48000000/segment@0/target-module@2a000/i2c@0/ft5426_ts@38[0]'
    [   13.241905] edt_ft5x06 1-0038: using lookup tables for GPIO lookup
    [   13.241911] edt_ft5x06 1-0038: No GPIO consumer wake found
    [   13.293834] input: generic ft5x06 (79) as /devices/platform/44000000.ocp/48000000.interconnect/48000000.interconnect:segment@0/4802a000.target-module/4802a000.i2c/i2c-1/1-0038/input/input0
    [   13.322901] remoteproc remoteproc0: remote processor wkup_m3 is now up
    [   13.329487] wkup_m3_ipc 44e11324.wkup_m3_ipc: CM3 Firmware Version = 0x192
    [   15.601063] [AESYS] UniFi SDIO Driver: 5.2.2-19c80a9 Feb  1 2023 23:52:42
    [   15.822370] CSR SME with WEXT support
    [   15.826066] Split patch support
    [   15.829219] Kernel 5.10.100
    [   15.832118] UniFi: Using native Linux MMC driver for SDIO.
    [   16.154937] sdio bus_id:      mmc0:0001:1 - UniFi card 0x0 inserted
    [   16.630435] SDIO: Skip power on; card is already powered.
    [   16.778702] unifi0: Initialising UniFi, attempt 1
    [   16.892539] unifi0: Chip ID 0x07  Function 1  Block Size 512  Name UniFi-4(UF60xx)
    [   17.173027] unifi0: Chip Version 0x3A22
    [   17.176900] unifi0: Calling CsrSdioHardReset
    [   17.181185] unifi0: Falling back to software hard reset
    [   17.245174] omap-sham 53100000.sham: hw accel on OMAP rev 0.0
    [   17.302206] omap-des 53701000.des: OMAP DES hw accel rev: 0.33
    [   17.305661] omap-aes 53501000.aes: OMAP AES hw accel rev: 0.1
    [   17.376569] omap-des 53701000.des: will run requests pump with realtime priority
    [   17.441107] unifi0: Chip ID 0x07  Function 1  Block Size 512  Name UniFi-4(UF60xx)
    [   17.449814] omap-sham 53100000.sham: will run requests pump with realtime priority
    [   17.573820] PM: bootloader does not support rtc-only!
    [   17.602423] omap-aes 53501000.aes: will run requests pump with realtime priority
    [   17.833963] unifi0: unifi_dl_patch 6d7559ac 0100060e
    [   18.602523] unifi0: SDIO block size 64 requires 8 padding chunks
    [   18.753991] unifi0: UniFi f/w protocol version 9.1 (driver 9.1)
    [   18.759958] unifi0: Firmware build 1089: 2010-10-05 14:50 cindr03_core_softmac_rom_sdio_gcc 1089 bfsw@eagle@630492
    [   20.940229] unifi0: Firmware patch 1727
    [   20.956113] unifi0: unifi0 is wlan0
    [   21.023217] unifi0: UniFi ready
    [   23.963835] OF: graph: no port node found in /ocp@44000000/interconnect@48000000/segment@300000/target-module@a8000/ocp2scp@0/phy@8000
    [   24.026958] remoteproc remoteproc1: 54434000.pru is available
    [   24.133232] remoteproc remoteproc2: 54438000.pru is available
    [   24.251782] remoteproc remoteproc3: 54474000.pru is available
    [   24.336212] remoteproc remoteproc4: 54478000.pru is available
    [   24.720208] usbcore: registered new interface driver usbfs
    [   24.743916] usbcore: registered new interface driver hub
    [   24.772871] usbcore: registered new device driver usb
    [   24.883021] xhci-hcd xhci-hcd.5.auto: xHCI Host Controller
    [   24.888596] xhci-hcd xhci-hcd.5.auto: new USB bus registered, assigned bus number 1
    [   24.938058] xhci-hcd xhci-hcd.5.auto: hcc params 0x0238f06d hci version 0x100 quirks 0x0000000002010010
    [   24.967020] xhci-hcd xhci-hcd.5.auto: irq 101, io mem 0x48390000
    [   24.993191] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.10
    [   25.025066] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [   25.051803] usb usb1: Product: xHCI Host Controller
    [   25.065380] usb usb1: Manufacturer: Linux 5.10.100-g7a7a3af903 xhci-hcd
    [   25.090820] usb usb1: SerialNumber: xhci-hcd.5.auto
    [   25.116358] hub 1-0:1.0: USB hub found
    [   25.129363] hub 1-0:1.0: 1 port detected
    [   25.148109] xhci-hcd xhci-hcd.5.auto: xHCI Host Controller
    [   25.172640] xhci-hcd xhci-hcd.5.auto: new USB bus registered, assigned bus number 2
    [   25.180371] xhci-hcd xhci-hcd.5.auto: Host supports USB 3.0 SuperSpeed
    [   25.211858] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [   25.243284] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.10
    [   25.272667] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [   25.300378] usb usb2: Product: xHCI Host Controller
    [   25.313172] usb usb2: Manufacturer: Linux 5.10.100-g7a7a3af903 xhci-hcd
    [   25.336093] usb usb2: SerialNumber: xhci-hcd.5.auto
    [   25.362551] hub 2-0:1.0: USB hub found
    [   25.374370] hub 2-0:1.0: 1 port detected
    [   25.403331] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   25.411867] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 3
    [   25.449130] xhci-hcd xhci-hcd.6.auto: hcc params 0x0238f06d hci version 0x100 quirks 0x0000000002010010
    [   25.484241] xhci-hcd xhci-hcd.6.auto: irq 102, io mem 0x483d0000
    [   25.504473] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.10
    [   25.529570] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [   25.556293] usb usb3: Product: xHCI Host Controller
    [   25.575440] usb usb3: Manufacturer: Linux 5.10.100-g7a7a3af903 xhci-hcd
    [   25.600782] usb usb3: SerialNumber: xhci-hcd.6.auto
    [   25.621144] hub 3-0:1.0: USB hub found
    [   25.637407] hub 3-0:1.0: 1 port detected
    [   25.657755] xhci-hcd xhci-hcd.6.auto: xHCI Host Controller
    [   25.673674] xhci-hcd xhci-hcd.6.auto: new USB bus registered, assigned bus number 4
    [   25.703647] xhci-hcd xhci-hcd.6.auto: Host supports USB 3.0 SuperSpeed
    [   25.732727] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
    [   25.746021] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.10
    [   25.776915] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
    [   25.804163] usb usb4: Product: xHCI Host Controller
    [   25.822922] usb usb4: Manufacturer: Linux 5.10.100-g7a7a3af903 xhci-hcd
    [   25.842990] usb usb4: SerialNumber: xhci-hcd.6.auto
    [   25.860899] hub 4-0:1.0: USB hub found
    [   25.876236] hub 4-0:1.0: 1 port detected
    [   28.286589] EXT4-fs (mmcblk1p3): recovery complete
    [   28.294669] EXT4-fs (mmcblk1p3): mounted filesystem with ordered data mode. Opts: (null)
    [   29.424453] unexport_store: status -22
    [   29.424668] gpio gpiochip0: Persistence not supported for GPIO 3
    [   29.457864] gpio gpiochip0: (gpio-0-31): gpiochip_lock_as_irq: tried to flag a GPIO set as output for IRQ
    [   29.509347] unexport_store: status -22
    [   29.509499] gpio gpiochip4: Persistence not supported for GPIO 13
    [   29.517896] unexport_store: status -22
    [   29.518062] gpio gpiochip3: Persistence not supported for GPIO 25
    [   29.533512] unexport_store: status -22
    [   29.533640] gpio gpiochip5: Persistence not supported for GPIO 13
    [   29.542165] gpio gpiochip5: (gpio-160-191): gpiochip_lock_as_irq: tried to flag a GPIO set as output for IRQ
    [   29.642537] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
    [   30.861182] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
    [   31.267937] cryptd: max_cpu_qlen set to 1000
    [   31.642646] Inside cpsw_ndo_open
    [   31.675715] cpsw-switch 4a100000.switch: starting ndev. mode: dual_mac
    [   31.715485] Inside cpsw_new.c cpsw_init_host_port
    [   31.758640] cpsw_init_host_port: Calling cpsw_init_host_port_dual_mac
    [   31.802172] cpsw_slave_open with slave 1
    [   32.034714] cpsw_slave_open with PHY 4a101000.mdio:14
    [   32.051885] Microsemi GE VSC8502 SyncE 4a101000.mdio:14: attached PHY driver [Microsemi GE VSC8502 SyncE] (mii_bus:phy_addr=4a101000.mdio:14, irq=POLL)
    [   32.170237] Inside cpsw_ndo_open
    [   32.177339] cpsw-switch 4a100000.switch: starting ndev. mode: dual_mac
    [   32.218468] cpsw_slave_open with slave 0
    [   32.433494] cpsw_slave_open with PHY 4a101000.mdio:00
    [   32.438602] Microsemi GE VSC8502 SyncE 4a101000.mdio:00: attached PHY driver [Microsemi GE VSC8502 SyncE] (mii_bus:phy_addr=4a101000.mdio:00, irq=POLL)
    [   32.607104] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
    [   33.122414] vmmcwl_fixed: disabling
    [   35.544740] EXT4-fs (mmcblk1p2): re-mounted. Opts: (null)
    [   35.602765] gpio gpiochip4: Persistence not supported for GPIO 3
    [   35.603854] gpio gpiochip0: Persistence not supported for GPIO 13
    [   49.844026] cpsw-switch 4a100000.switch eth1: Link is Up - 100Mbps/Full - flow control off
    [   49.852507] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    

  • Hi,

    Looking at the boot log the PHYs are being identified with the correct PHY addresses based on the DTS shown in the thread. The CPSW is reporting a link partner on eth1. If you do not do the steps in u-boot mentioned above these messages do not appear?  In this state you are able to get network traffic?

    [   32.051885] Microsemi GE VSC8502 SyncE 4a101000.mdio:14: attached PHY driver [Microsemi GE VSC8502 SyncE] (mii_bus:phy_addr=4a101000.mdio:14, irq=POLL)
    [   32.170237] Inside cpsw_ndo_open
    [   32.177339] cpsw-switch 4a100000.switch: starting ndev. mode: dual_mac
    [   32.218468] cpsw_slave_open with slave 0
    [   32.433494] cpsw_slave_open with PHY 4a101000.mdio:00
    [   32.438602] Microsemi GE VSC8502 SyncE 4a101000.mdio:00: attached PHY driver [Microsemi GE VSC8502 SyncE] (mii_bus:phy_addr=4a101000.mdio:00, irq=POLL)


    [   49.844026] cpsw-switch 4a100000.switch eth1: Link is Up - 100Mbps/Full - flow control off
    [   49.852507] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready

    In the log above you mentioned there are debug messages? Could you point out which one?

    Best Regards,

    Schuyler

  • Hi,

    To answer your questions....

    If you do not do the steps in u-boot mentioned above these messages do not appear?

    We do see the same messages if we don't initialize both PHYs in u-boot. The problem is the second phy (address 14) does not work.

    In this state you are able to get network traffic?

    We can only pass traffic on the first PHY but not on the second PHY. We still get link up/down messages from the Linux console when we plug/unplug the Ethernet cables on both PHYs.

    In the log above you mentioned there are debug messages? Could you point out which one?

    Below are some of the debug messages we had added.

    [   31.642646] Inside cpsw_ndo_open
    [   31.715485] Inside cpsw_new.c cpsw_init_host_port
    [   31.758640] cpsw_init_host_port: Calling cpsw_init_host_port_dual_mac
    [   31.802172] cpsw_slave_open with slave 1
    [   32.034714] cpsw_slave_open with PHY 4a101000.mdio:14
    [   32.170237] Inside cpsw_ndo_open
    [   32.218468] cpsw_slave_open with slave 0
    [   32.433494] cpsw_slave_open with PHY 4a101000.mdio:00

    To summarize, it appears the CPSW driver at the kernel level doesn't seem initialize the PHYs. If we initialize the first PHY in u-boot it works in the kernel. If we initialize the second PHY in u-boot the second PHY works in the kernel. If we initialize both PHYs in u-boot they both work in the kernel.

    Thanks,

    Tim

  • Hi,

    We have noticed some additional behavior I wanted to mention.

    On certain ethernet switches Neither PHY works. This is a switch we use frequently and it is a known good one. The link detect appears to be the most noticeable issue. The link status light on the switch does not light up when an ethernet cable is plugged in and the Linux kernel is booted. Strangely enough at the u-boot time the link light on the switch lights up properly. If I enter the u-boot command line the link light on the switch lights up properly. I can plug/unplug the cable and it works correctly for both PHYs. Leaving the cable plugged in and booting the kernel eventually causes the link light on the switch to turn off. It appears as though u-boot configures it correctly and somehow the Linux kernel cpsw driver seems to undo that configuration.

    Thanks,

    Tim

  • Hi,

    In my experience link detection is handled by the PHY independent of any software from the processor. From this last post just connecting the cable does not always yield a link detection. Also this should not matter about which link partner is used. 

    After the board boots could you please attach the results of ethtool -S eth1?  And ethtool eth1? Please do this without the cable attached to eth0. And reboot and do the same ethtool series for eth0 and please post those results.

    Best Regards,

    Schuyler

  • Hi,

    Attached is the requested output for eth0 & eth1. Please note these are connected to the switch which loses the link light after the Linux kernel boots.

    Thanks,

    Tim

    1222.eth0.txt
    root@am437x-evm:~# ethtool -S eth0
    NIC statistics:
         Good Rx Frames: 0
         Broadcast Rx Frames: 0
         Multicast Rx Frames: 0
         Pause Rx Frames: 0
         Rx CRC Errors: 0
         Rx Align/Code Errors: 0
         Oversize Rx Frames: 0
         Rx Jabbers: 0
         Undersize (Short) Rx Frames: 0
         Rx Fragments: 0
         Rx Octets: 0
         Good Tx Frames: 0
         Broadcast Tx Frames: 0
         Multicast Tx Frames: 0
         Pause Tx Frames: 0
         Deferred Tx Frames: 0
         Collisions: 0
         Single Collision Tx Frames: 0
         Multiple Collision Tx Frames: 0
         Excessive Collisions: 0
         Late Collisions: 0
         Tx Underrun: 0
         Carrier Sense Errors: 0
         Tx Octets: 0
         Rx + Tx 64 Octet Frames: 0
         Rx + Tx 65-127 Octet Frames: 0
         Rx + Tx 128-255 Octet Frames: 0
         Rx + Tx 256-511 Octet Frames: 0
         Rx + Tx 512-1023 Octet Frames: 0
         Rx + Tx 1024-Up Octet Frames: 0
         Net Octets: 0
         Rx Start of Frame Overruns: 0
         Rx Middle of Frame Overruns: 0
         Rx DMA Overruns: 0
         Rx DMA chan 0: head_enqueue: 1
         Rx DMA chan 0: tail_enqueue: 127
         Rx DMA chan 0: pad_enqueue: 0
         Rx DMA chan 0: misqueued: 0
         Rx DMA chan 0: desc_alloc_fail: 0
         Rx DMA chan 0: pad_alloc_fail: 0
         Rx DMA chan 0: runt_receive_buf: 0
         Rx DMA chan 0: runt_transmit_bu: 0
         Rx DMA chan 0: empty_dequeue: 0
         Rx DMA chan 0: busy_dequeue: 0
         Rx DMA chan 0: good_dequeue: 0
         Rx DMA chan 0: requeue: 0
         Rx DMA chan 0: teardown_dequeue: 0
         Tx DMA chan 0: head_enqueue: 0
         Tx DMA chan 0: tail_enqueue: 0
         Tx DMA chan 0: pad_enqueue: 0
         Tx DMA chan 0: misqueued: 0
         Tx DMA chan 0: desc_alloc_fail: 0
         Tx DMA chan 0: pad_alloc_fail: 0
         Tx DMA chan 0: runt_receive_buf: 0
         Tx DMA chan 0: runt_transmit_bu: 0
         Tx DMA chan 0: empty_dequeue: 0
         Tx DMA chan 0: busy_dequeue: 0
         Tx DMA chan 0: good_dequeue: 0
         Tx DMA chan 0: requeue: 0
         Tx DMA chan 0: teardown_dequeue: 0
    root@am437x-evm:~#
    root@am437x-evm:~#
    root@am437x-evm:~#
    root@am437x-evm:~#
    root@am437x-evm:~# ethtool eth0
    Settings for eth0:
            Supported ports: [ TP    MII ]
            Supported link modes:   10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Half 1000baseT/Full
            Supported pause frame use: Symmetric Receive-only
            Supports auto-negotiation: Yes
            Supported FEC modes: Not reported
            Advertised link modes:  10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Half 1000baseT/Full
            Advertised pause frame use: No
            Advertised auto-negotiation: Yes
            Advertised FEC modes: Not reported
            Speed: Unknown!
            Duplex: Unknown! (255)
            Auto-negotiation: on
            master-slave cfg: preferred master
            master-slave status: unknown
            Port: Twisted Pair
            PHYAD: 0
            Transceiver: external
            MDI-X: on (auto)
            Supports Wake-on: d
            Wake-on: d
            Current message level: 0x00000000 (0)
    
            Link detected: no
    root@am437x-evm:~#
    
    4846.eth1.txt
    root@am437x-evm:~# ethtool -S eth1
    NIC statistics:
         Good Rx Frames: 0
         Broadcast Rx Frames: 0
         Multicast Rx Frames: 0
         Pause Rx Frames: 0
         Rx CRC Errors: 0
         Rx Align/Code Errors: 0
         Oversize Rx Frames: 0
         Rx Jabbers: 0
         Undersize (Short) Rx Frames: 0
         Rx Fragments: 0
         Rx Octets: 0
         Good Tx Frames: 0
         Broadcast Tx Frames: 0
         Multicast Tx Frames: 0
         Pause Tx Frames: 0
         Deferred Tx Frames: 0
         Collisions: 0
         Single Collision Tx Frames: 0
         Multiple Collision Tx Frames: 0
         Excessive Collisions: 0
         Late Collisions: 0
         Tx Underrun: 0
         Carrier Sense Errors: 0
         Tx Octets: 0
         Rx + Tx 64 Octet Frames: 0
         Rx + Tx 65-127 Octet Frames: 0
         Rx + Tx 128-255 Octet Frames: 0
         Rx + Tx 256-511 Octet Frames: 0
         Rx + Tx 512-1023 Octet Frames: 0
         Rx + Tx 1024-Up Octet Frames: 0
         Net Octets: 0
         Rx Start of Frame Overruns: 0
         Rx Middle of Frame Overruns: 0
         Rx DMA Overruns: 0
         Rx DMA chan 0: head_enqueue: 1
         Rx DMA chan 0: tail_enqueue: 127
         Rx DMA chan 0: pad_enqueue: 0
         Rx DMA chan 0: misqueued: 0
         Rx DMA chan 0: desc_alloc_fail: 0
         Rx DMA chan 0: pad_alloc_fail: 0
         Rx DMA chan 0: runt_receive_buf: 0
         Rx DMA chan 0: runt_transmit_bu: 0
         Rx DMA chan 0: empty_dequeue: 0
         Rx DMA chan 0: busy_dequeue: 0
         Rx DMA chan 0: good_dequeue: 0
         Rx DMA chan 0: requeue: 0
         Rx DMA chan 0: teardown_dequeue: 0
         Tx DMA chan 0: head_enqueue: 0
         Tx DMA chan 0: tail_enqueue: 0
         Tx DMA chan 0: pad_enqueue: 0
         Tx DMA chan 0: misqueued: 0
         Tx DMA chan 0: desc_alloc_fail: 0
         Tx DMA chan 0: pad_alloc_fail: 0
         Tx DMA chan 0: runt_receive_buf: 0
         Tx DMA chan 0: runt_transmit_bu: 0
         Tx DMA chan 0: empty_dequeue: 0
         Tx DMA chan 0: busy_dequeue: 0
         Tx DMA chan 0: good_dequeue: 0
         Tx DMA chan 0: requeue: 0
         Tx DMA chan 0: teardown_dequeue: 0
    root@am437x-evm:~#
    root@am437x-evm:~#
    root@am437x-evm:~#
    root@am437x-evm:~#
    root@am437x-evm:~# ethtool eth1
    Settings for eth1:
            Supported ports: [ TP    MII ]
            Supported link modes:   10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Half 1000baseT/Full
            Supported pause frame use: Symmetric Receive-only
            Supports auto-negotiation: Yes
            Supported FEC modes: Not reported
            Advertised link modes:  10baseT/Half 10baseT/Full
                                    100baseT/Half 100baseT/Full
                                    1000baseT/Half 1000baseT/Full
            Advertised pause frame use: No
            Advertised auto-negotiation: Yes
            Advertised FEC modes: Not reported
            Speed: Unknown!
            Duplex: Unknown! (255)
            Auto-negotiation: on
            master-slave cfg: preferred master
            master-slave status: unknown
            Port: Twisted Pair
            PHYAD: 20
            Transceiver: external
            MDI-X: on (auto)
            Supports Wake-on: d
            Wake-on: d
            Current message level: 0x00000000 (0)
    
            Link detected: no
    root@am437x-evm:~#
    

  • Hi,

    For both interfaces ethtool is returning this:

    Link detected: no

    When you performed the ethtool command for both interfaces were the cables connected? 

    Link detection happens without interacting with software. The PHY are set to auto-negotiate, no SW is required to do this operation. Please perform your cable connection test and check for link lights without running any software neither u-boot or the kernel.  If the link detection issue happens again as you described this would point to something that is PHY related. 

    Is this happening on multiple boards?

    Best Regards,

    Schuyler

  • Hi,

    Yes, during the test above a cable was plugged in to the interface being tested. Only one cable was connected at a time, as you requested. They were connected to our problem switch where we don't always see a link light.

    If we remove our SD card and boot the board with no software running, we do not see a link light with the problem switch. If we do the same test with other switches we do see a link light after ~17 seconds. I agree this seems to point more towards the PHY hardware, however the fact that it works at u-boot time is strange.

    We tried this test on two different boards and it has the same behavior.

    If the link detect is purely hardware and not influenced by software, do you have an idea about what is happening when the link detect works at u-boot time? If we stop it at u-boot the link light remains on forever. If we unplug/plug the cable the link like turns off/on as expected. Continuing the boot to the kernel stops all link light activity. If I monitor the link light and the kernel boot messages the link light goes out right when the kernel gets to the part of bringing up the PHY drivers and configuring the PHYs.

    Thanks,

    Tim

  • Hi,

    As I mentioned earlier this appears to point to PHY HW issue. However the odd part is the link going out after Linux boots. Which root file system are you using? Since the ethtool is working there is a utility called phytool or something like it in the TI SDK root file system. This would allow reading the PHY reqisters.  Why link detection is dropping I cannot explain. Using phytool would allow reading the registers of the PHY to perhaps derive what is happening. For example one question is why is the link going down and then looks like it is staying down.

    Best Regards,

    Schuyler

  • Hi,

    The file system we are using is the base image (tisdk-base-image-am437x-evm.tar.xz) and we pull some items from the default image (tisdk-default-image-am437x-evm.tar.xz) to make our custom file system.

    I put phytool on the target and it is a nice tool. The funny thing is I didn't know phytool existed so I wrote my own utility that does exactly the same thing. I suspected the PHY registers were getting changed at kernel boot time vs what they are at u-boot time. I think these register changes are causing the link light to turn off.

    I dug a little deeper into the issue and I think my theory is correct....

    The problem is the 1000BASE-T Control (0x09) register is getting overwritten. Our PHY is setup to use RGMII but our reference clock is 25 MHz, preventing us from using gigabit ethernet speeds. At u-boot time I set this register to 0 which stops our PHY from advertising we support gigabit speeds. When the PHY driver runs at Linux kernel time somehow the register is set back to 0x700 which advertises we support gigabit. I modified the Linux driver for our PHY and again turned this advertisement off. Using my tool/phytool to read the PHY registers it shows that the register has been set to 0x300 which again is advertising we support gigabit speeds. Once the kernel boots if I again set the register to 0 the link light activates and we can begin passing packets on the interface. I also noticed if I soft reset the PHY using the PHY registers it runs the Linux PHY driver code again (I see my debug prints) which correctly sets this 1000BASE-T Control register to 0. The link is then detected and I am able to pass traffic. So it appears some other driver is overwriting my changes to the PHY at boot.

    Is there anyway in the .dts files to specify that we don't support gigabit ethernet?

    Does the CPSW driver manipulate the PHY after the PHY driver has run?

    Here is some commented output showing what I described above:

    root@am437x-evm:/ace/bin# ./phytool read eth0/0/1
    0x7949                                                         <------ Link is not detected
    root@am437x-evm:/ace/bin# ./phytool read eth0/0/9
    0x0300                                                         <------ PHY is advertising gigabit speeds
    root@am437x-evm:/ace/bin# ./phytool write eth0/0/0 0x8000      <------ PHY is soft reset
    [  178.242473] TIMT-DEBUG: register 9 before config 1792       <------ Debug code showing it was defaulted back to 0x700 advertising gigabit speeds
    [  178.248108] TIMT-DEBUG: register 9 after config 0           <------ Debug code turning off gigabit speed advertisements. Notice the link quickly activates.
    root@am437x-evm:/ace/bin# [  180.803177] cpsw-switch 4a100000.switch eth0: Link is Up - 100Mbps/Full - flow control off
    [  180.811692] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    
    root@am437x-evm:/ace/bin# ./phytool read eth0/0/9
    0000                                                           <------ Gigibit speed advertisement is off and has stayed off because other drivers didn't run
    root@am437x-evm:/ace/bin# ./phytool read eth0/0/1
    0x796d                                                         <------ Link is now detected
    

  • Hi,

    Based on my discovery above we have a workaround, which is not ideal, but it allows both PHYs to work on all switches. In the end we had to modify the u-boot CPSW driver to initialize both PHYs so they would be available at Linux kernel time. We were unable to figure out how to do this at Linux kernel time. We then had to modify the Microsemi Linux driver to properly configure both PHYs to operate at 10/100 speeds (described above). This doesn’t seem like the proper solution, but we don’t seem to have any other options at this point. We would have expected this setup to be configurable in the .dts file but after reverse engineering the driver, we can see this isn’t supported.

    You can consider this issue closed unless you have some information which may improve our solution. Thank you for the help.

    Tim