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.

DP83826E: Changes

Part Number: DP83826E
Other Parts Discussed in Thread: TMDS64EVM, DP83869

Tool/software:

Hi experts,

I'm currently trying to get an DP83826E to work with ICSSG on a custom board with an AM642.

I built the Kernel based on version 10.01.10 from ti-linux-kernel repository.

I previously tested the two interfaces in MII mode on the evaluation board (TMDS64EVM) without any issues with the same built Kernel.

The evaluation board uses two DP83869 PHYs, so I assumed that the following adaptions in device tree and config would suffice.

Config change:

CONFIG_DP83822_PHY=m

Device Tree change on board level:

// ...

/ {
	compatible = "ti,am642-custom", "ti,am642";
	model = "Texas Instruments AM642 Custom";

	chosen {
		stdout-path = &main_uart0;
	};

	aliases {
		serial0 = &mcu_uart0;
		serial1 = &main_uart1;
		serial2 = &main_uart0;
		serial3 = &main_uart3;
		i2c0 = &main_i2c0;
		i2c1 = &main_i2c1;
		mmc0 = &sdhci0;
		ethernet0 = &icssg1_emac0;
	};

    // ...

	icssg1_eth: icssg1-eth {
		compatible = "ti,am642-icssg-prueth";
		pinctrl-names = "default";
		//pinctrl-0 = <&icssg1_rgmii1_pins_default>;
		pinctrl-0 = <&icssg1_mii1_pins_default>;
		sram = <&oc_sram>;
		ti,prus = <&pru1_0>, <&rtu1_0>, <&tx_pru1_0>, <&pru1_1>, <&rtu1_1>, <&tx_pru1_1>;
		firmware-name = "ti-pruss/am64x-sr2-pru0-prueth-fw.elf",
				"ti-pruss/am64x-sr2-rtu0-prueth-fw.elf",
				"ti-pruss/am64x-sr2-txpru0-prueth-fw.elf",
				"ti-pruss/am64x-sr2-pru1-prueth-fw.elf",
				"ti-pruss/am64x-sr2-rtu1-prueth-fw.elf",
				"ti-pruss/am64x-sr2-txpru1-prueth-fw.elf";

		ti,pruss-gp-mux-sel = <2>,	/* MII mode */
				      <2>,
				      <2>,
				      <2>,	/* MII mode */
				      <2>,
				      <2>;
		ti,mii-g-rt = <&icssg1_mii_g_rt>;
		ti,mii-rt = <&icssg1_mii_rt>;
		ti,iep = <&icssg1_iep0>,  <&icssg1_iep1>;
		ti,pa-stats = <&icssg1_pa_stats>;
		interrupt-parent = <&icssg1_intc>;
		interrupts = <24 0 2>, <25 1 3>;
		interrupt-names = "tx_ts0", "tx_ts1";
		dmas = <&main_pktdma 0xc200 15>, /* egress slice 0 */
		       <&main_pktdma 0xc201 15>, /* egress slice 0 */
		       <&main_pktdma 0xc202 15>, /* egress slice 0 */
		       <&main_pktdma 0xc203 15>, /* egress slice 0 */
		       <&main_pktdma 0xc204 15>, /* egress slice 1 */
		       <&main_pktdma 0xc205 15>, /* egress slice 1 */
		       <&main_pktdma 0xc206 15>, /* egress slice 1 */
		       <&main_pktdma 0xc207 15>, /* egress slice 1 */
		       <&main_pktdma 0x4200 15>, /* ingress slice 0 */
		       <&main_pktdma 0x4201 15>; /* ingress slice 1 */
		dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3",
			    "tx1-0", "tx1-1", "tx1-2", "tx1-3",
			    "rx0", "rx1";

		ethernet-ports {
			#address-cells = <1>;
			#size-cells = <0>;
			icssg1_emac0: port@0 {
				reg = <0>;
				phy-handle = <&icssg1_phy1>;
				//phy-mode = "rgmii-id";
				phy-mode = "mii";
				/* Filled in by bootloader */
				local-mac-address = [00 00 00 00 00 00];
			};
			icssg1_emac1: port@1 {
				reg = <1>;
				//phy-handle = <&icssg1_phy2>;
				/* Filled in by bootloader */
				local-mac-address = [00 00 00 00 00 00];
				status = "disabled";
			};
		};
	};
};

&main_pmx0 {
    icssg1_mdio1_pins_default: icssg1-mdio1-default-pins {
		pinctrl-single,pins = <
			AM64X_IOPAD(0x015c, PIN_OUTPUT, 0) /* (Y6) PRG1_MDIO0_MDC */
			AM64X_IOPAD(0x0158, PIN_INPUT, 0) /* (AA6) PRG1_MDIO0_MDIO */
		>;
	};
	
	icssg1_mii1_pins_default: icssg1-mii1-default-pins {
		pinctrl-single,pins = <
			AM64X_IOPAD(0x00f8, PIN_INPUT, 1) /* (V9) PRG1_PRU0_GPO16.PR1_MII_MT0_CLK */
			AM64X_IOPAD(0x00f4, PIN_OUTPUT, 0) /* (Y9) PRG1_PRU0_GPO15.PR1_MII0_TXEN */
			AM64X_IOPAD(0x00f0, PIN_OUTPUT, 0) /* (AA9) PRG1_PRU0_GPO14.PR1_MII0_TXD3 */
			AM64X_IOPAD(0x00ec, PIN_OUTPUT, 0) /* (W9) PRG1_PRU0_GPO13.PR1_MII0_TXD2 */
			AM64X_IOPAD(0x00e8, PIN_OUTPUT, 0) /* (U9) PRG1_PRU0_GPO12.PR1_MII0_TXD1 */
			AM64X_IOPAD(0x00e4, PIN_OUTPUT, 0) /* (AA8) PRG1_PRU0_GPO11.PR1_MII0_TXD0 */
			AM64X_IOPAD(0x00c8, PIN_INPUT, 1) /* (Y8) PRG1_PRU0_GPO4.PR1_MII0_RXDV */
			AM64X_IOPAD(0x00d0, PIN_INPUT, 1) /* (AA7) PRG1_PRU0_GPO6.PR1_MII_MR0_CLK */
			AM64X_IOPAD(0x00c4, PIN_INPUT, 1) /* (V8) PRG1_PRU0_GPO3.PR1_MII0_RXD3 */
			AM64X_IOPAD(0x00c0, PIN_INPUT, 1) /* (W8) PRG1_PRU0_GPO2.PR1_MII0_RXD2 */
			AM64X_IOPAD(0x00cc, PIN_INPUT, 1) /* (V13) PRG1_PRU0_GPO5.PR1_MII0_RXER */
			AM64X_IOPAD(0x00bc, PIN_INPUT, 1) /* (U8) PRG1_PRU0_GPO1.PR1_MII0_RXD1 */
			AM64X_IOPAD(0x00b8, PIN_INPUT, 1) /* (Y7) PRG1_PRU0_GPO0.PR1_MII0_RXD0 */
			AM64X_IOPAD(0x00d8, PIN_INPUT, 1) /* (W13) PRG1_PRU0_GPO8.PR1_MII0_RXLINK */
		>;
	};
	
	// ...
};


&cpsw3g {
	status = "disabled";
};

// ...

&icssg1_mdio {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&icssg1_mdio1_pins_default>;

	icssg1_phy1: ethernet-phy@1f {
		reg = <0x1f>;
		tx-internal-delay-ps = <250>;
		rx-internal-delay-ps = <2000>;
	};
};

With the adjustments I get always the following error from the mdio driver:

[    7.091610] davinci_mdio 300b2400.mdio: Configuring MDIO in manual mode
[    7.365821] davinci_mdio 300b2400.mdio: davinci mdio revision 1.7, bus freq 1000000
[    7.396256] mdio_bus 300b2400.mdio: MDIO device at address 31 is missing.
...
[   10.239699] icssg-prueth icssg1-eth: port 1: using random MAC addr: 82:6c:f2:4a:06:1a
[   10.591384] icssg-prueth icssg1-eth: couldn't connect to phy ethernet-phy@1
[   10.600669] icssg-prueth icssg1-eth: can't connect to MII0 PHY, error --19

I also checked the PHY IDs inside the driver and saw that the following two IDs are defined:

#define DP83826C_PHY_ID		0x2000a130
#define DP83826NC_PHY_ID	0x2000a110

I get the same error message when adding the PHY ID 0x2000a131, which I think should be the correct one for my case.

Adding a compatible to the ethernet-phy node seems to work first, but no link is detected.

compatible = "ethernet-phy-id2000.a131", "ethernet-phy-ieee802.3-c22";

[    7.452274] davinci_mdio 300b2400.mdio: Configuring MDIO in manual mode
[    7.533461] davinci_mdio 300b2400.mdio: davinci mdio revision 1.7, bus freq 1000000
[    7.651433] davinci_mdio 300b2400.mdio: phy[2]: device 300b2400.mdio:1f, driver TI DP83826E
[   10.326676] TI DP83826E 300b2400.mdio:1f: attached PHY driver (mii_bus:phy_addr=300b2400.mdio:1f, irq=POLL)

[   10.193498] icssg-prueth icssg1-eth: port 1: using random MAC addr: ea:2e:14:59:20:d8
[   10.349487] icssg-prueth icssg1-eth: TI PRU ethernet driver initialized: single EMAC mode

I'm quite inexperienced with this topic and unsure what I should look for.

Could you tell me, if the DP83826E can be used with ICSSG and the dp83822.c driver?

And if yes, do you see something I missed?

  • Hi Martin,

    DP83826E can be used with 822 driver and ICSSG.

    It seems DTS config is correct to probe and identify PHY, but there is some missing register/DTS config or schematic issue for proper link on MAC or MDI side connection. 

    Adding a compatible to the ethernet-phy node seems to work first, but no link is detected.

    For this, could you clarify if you are referring to MAC or MDI-side link? From cable side, PHY register 0x1[2] can be referenced to confirm link status on MDI-side after connecting cable to valid link partner.

    From MAC-side, I believe there is some log reported by AM642 if MII communication is up. Please share the log observed during link failure.

    Thank you,
    Evan

  • It seems that it's already on MAC side.

    When I try to read from any register, like with phytool or mdio-tool I get always back 0xffff.

    Probed phyaddr: 31
    PHY: 31|REG: 0 ---> 0xffff
    
    Probed phyaddr: 31
    PHY: 31|REG: 1 ---> 0xffff
    
    Probed phyaddr: 31
    PHY: 31|REG: 2 ---> 0xffff
    
    ...

    Also ethtool is failing getting some values.

    Settings for eth0:
            Supported ports: [ TP    MII ]
            Supported link modes:   10baseT/Full
                                    100baseT/Full
            Supported pause frame use: No
            Supports auto-negotiation: Yes
            Supported FEC modes: Not reported
            Advertised link modes:  10baseT/Full
                                    100baseT/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: forced master
            master-slave status: resolution error
            Port: Twisted Pair
            PHYAD: 31
            Transceiver: external
            MDI-X: Unknown
            Current message level: 0x00000000 (0)
                                  
            Link detected: no

    I don't see anything inside the log which helps me understanding the problem.

    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 6.6.58-ti (test@builder) (aarch64-linux-gnu-gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #3 SMP PREEMPT Fri Jun 13 11:18:02 UTC 2025
    [    0.000000] KASLR disabled due to lack of seed
    [    0.000000] Machine model: Texas Instruments AM642 Custom
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: bootconsole [ns16550a0] enabled
    [    0.000000] efi: UEFI not found.
    [    0.000000] OF: reserved mem: 0x0000000090000000..0x0000000090ffffff (16384 KiB) nomap non-reusable r5f-ddr-memory@90000000
    [    0.000000] OF: reserved mem: 0x000000009e800000..0x000000009fffffff (24576 KiB) nomap non-reusable optee@9e800000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a0000000..0x00000000a00fffff (1024 KiB) nomap non-reusable r5f-dma-memory@a0000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a0100000..0x00000000a0ffffff (15360 KiB) nomap non-reusable r5f-memory@a0100000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a1000000..0x00000000a10fffff (1024 KiB) nomap non-reusable r5f-dma-memory@a1000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a1100000..0x00000000a1ffffff (15360 KiB) nomap non-reusable r5f-memory@a1100000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a2000000..0x00000000a20fffff (1024 KiB) nomap non-reusable r5f-dma-memory@a2000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a2100000..0x00000000a2ffffff (15360 KiB) nomap non-reusable r5f-memory@a2100000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a3000000..0x00000000a30fffff (1024 KiB) nomap non-reusable r5f-dma-memory@a3000000
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
    [    0.000000] OF: reserved mem: 0x00000000a3100000..0x00000000a3ffffff (15360 KiB) nomap non-reusable r5f-memory@a3100000
    [    0.000000] OF: reserved mem: 0x00000000a5000000..0x00000000a57fffff (8192 KiB) nomap non-reusable ipc-memories@a5000000
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x000000008fffffff]
    [    0.000000]   node   0: [mem 0x0000000090000000-0x0000000090ffffff]
    [    0.000000]   node   0: [mem 0x0000000091000000-0x000000009e7fffff]
    [    0.000000]   node   0: [mem 0x000000009e800000-0x00000000a3ffffff]
    [    0.000000]   node   0: [mem 0x00000000a4000000-0x00000000a4ffffff]
    [    0.000000]   node   0: [mem 0x00000000a5000000-0x00000000a57fffff]
    [    0.000000]   node   0: [mem 0x00000000a5800000-0x00000000ffffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000] cma: Reserved 32 MiB at 0x00000000fba00000 on node -1
    [    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] psci: SMC Calling Convention v1.4
    [    0.000000] percpu: Embedded 20 pages/cpu s43176 r8192 d30552 u81920
    [    0.000000] pcpu-alloc: s43176 r8192 d30552 u81920 alloc=20*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1 
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: detected: GIC system register CPU interface
    [    0.000000] CPU features: detected: ARM erratum 845719
    [    0.000000] alternatives: applying boot alternatives
    [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=PARTUUID=146266fc-01 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
    [    0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
    [    0.000000] software IO TLB: area num 2.
    [    0.000000] software IO TLB: mapped [mem 0x00000000f7800000-0x00000000fb800000] (64MB)
    [    0.000000] Memory: 1821860K/2097152K available (12608K kernel code, 1272K rwdata, 4196K rodata, 2496K init, 529K bss, 242524K reserved, 32768K cma-reserved)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu:     RCU event tracing is enabled.
    [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [    0.000000]  Trampoline variant of Tasks RCU enabled.
    [    0.000000]  Tracing variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [    0.000000] GICv3: 256 SPIs implemented
    [    0.000000] GICv3: 0 Extended SPIs implemented
    [    0.000000] Root IRQ handler: gic_handle_irq
    [    0.000000] GICv3: GICv3 features: 16 PPIs
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [    0.000000] ITS: using cache flushing for cmd queue
    [    0.000000] GICv3: using LPI property table @0x0000000080040000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080050000
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [    0.000001] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [    0.008627] Console: colour dummy device 80x25
    [    0.013236] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [    0.023915] pid_max: default: 32768 minimum: 301
    [    0.028745] LSM: initializing lsm=capability,selinux,integrity
    [    0.034740] SELinux:  Initializing.
    [    0.038467] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.046050] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.056282] RCU Tasks: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1.
    [    0.063639] RCU Tasks Trace: Setting shift to 1 and lim to 1 rcu_task_cb_adjust=1.
    [    0.071638] rcu: Hierarchical SRCU implementation.
    [    0.076553] rcu:     Max phase no-delay instances is 1000.
    [    0.082217] Platform MSI: msi-controller@1820000 domain created
    [    0.088591] PCI/MSI: /bus@f4000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [    0.098114] EFI services will not be available.
    [    0.103114] smp: Bringing up secondary CPUs ...
    [    0.108780] Detected VIPT I-cache on CPU1
    [    0.108879] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000
    [    0.108898] GICv3: CPU1: using allocated LPI pending table @0x0000000080060000
    [    0.108962] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [    0.109125] smp: Brought up 1 node, 2 CPUs
    [    0.138521] SMP: Total of 2 processors activated.
    [    0.143334] CPU features: detected: 32-bit EL0 Support
    [    0.148610] CPU features: detected: CRC32 instructions
    [    0.153942] CPU: All CPU(s) started at EL2
    [    0.158140] alternatives: applying system-wide alternatives
    [    0.165924] devtmpfs: initialized
    [    0.180019] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.190040] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.198483] pinctrl core: initialized pinctrl subsystem
    [    0.204514] DMI not present or invalid.
    [    0.209519] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.216752] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [    0.224218] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [    0.232334] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [    0.240540] audit: initializing netlink subsys (disabled)
    [    0.246371] audit: type=2000 audit(0.148:1): state=initialized audit_enabled=0 res=1
    [    0.246995] thermal_sys: Registered thermal governor 'step_wise'
    [    0.254321] thermal_sys: Registered thermal governor 'power_allocator'
    [    0.260539] cpuidle: using governor menu
    [    0.271449] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [    0.278467] ASID allocator initialised with 65536 entries
    [    0.289523] /bus@f4000/interrupt-controller@1800000: Fixed dependency cycle(s) with /bus@f4000/interrupt-controller@1800000
    [    0.306260] /bus@f4000/pinctrl@a40000: Fixed dependency cycle(s) with /bus@f4000/pinctrl@a40000/cpsw-cpts-pps
    [    0.320235] Modules: 27440 pages in range for non-PLT usage
    [    0.320256] Modules: 518960 pages in range for PLT usage
    [    0.327169] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
    [    0.339609] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
    [    0.346017] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
    [    0.352955] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
    [    0.359361] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.366298] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
    [    0.372703] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
    [    0.379640] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
    [    0.388097] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR2.0 JTAGID[0x1bb3802f] Detected
    [    0.397672] iommu: Default domain type: Translated
    [    0.402611] iommu: DMA domain TLB invalidation policy: strict mode
    [    0.409351] SCSI subsystem initialized
    [    0.413486] libata version 3.00 loaded.
    [    0.413749] usbcore: registered new interface driver usbfs
    [    0.419401] usbcore: registered new interface driver hub
    [    0.424871] usbcore: registered new device driver usb
    [    0.430552] pps_core: LinuxPPS API ver. 1 registered
    [    0.435633] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.444980] PTP clock support registered
    [    0.449479] EDAC MC: Ver: 3.0.0
    [    0.453556] scmi_core: SCMI protocol bus registered
    [    0.459091] FPGA manager framework
    [    0.462685] Advanced Linux Sound Architecture Driver Initialized.
    [    0.470181] vgaarb: loaded
    [    0.473531] clocksource: Switched to clocksource arch_sys_counter
    [    0.480117] VFS: Disk quotas dquot_6.6.0
    [    0.484184] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    0.499801] NET: Registered PF_INET protocol family
    [    0.505147] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [    0.514841] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
    [    0.523691] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.531632] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.539863] TCP bind hash table entries: 16384 (order: 7, 524288 bytes, linear)
    [    0.547899] TCP: Hash tables configured (established 16384 bind 16384)
    [    0.554862] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.561817] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.569379] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.575834] RPC: Registered named UNIX socket transport module.
    [    0.581952] RPC: Registered udp transport module.
    [    0.586762] RPC: Registered tcp transport module.
    [    0.591570] RPC: Registered tcp-with-tls transport module.
    [    0.597175] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.603767] NET: Registered PF_XDP protocol family
    [    0.608687] PCI: CLS 0 bytes, default 64
    [    0.614477] Initialise system trusted keyrings
    [    0.619410] workingset: timestamp_bits=46 max_order=19 bucket_order=0
    [    0.626481] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.632939] NFS: Registering the id_resolver key type
    [    0.638214] Key type id_resolver registered
    [    0.642494] Key type id_legacy registered
    [    0.646618] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.653471] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.700732] Key type asymmetric registered
    [    0.704946] Asymmetric key parser 'x509' registered
    [    0.710015] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
    [    0.717882] io scheduler mq-deadline registered
    [    0.722529] io scheduler kyber registered
    [    0.726683] io scheduler bfq registered
    [    0.733871] pinctrl-single 4084000.pinctrl: 33 pins, size 132
    [    0.740373] pinctrl-single f4000.pinctrl: 180 pins, size 720
    [    0.747849] pinctrl-single a40000.pinctrl: 512 pins, size 2048
    [    0.761412] Serial: 8250/16550 driver, 12 ports, IRQ sharing enabled
    [    0.782523] loop: module loaded
    [    0.787055] megasas: 07.725.01.00-rc1
    [    0.795359] tun: Universal TUN/TAP device driver, 1.6
    [    0.802073] VFIO - User Level meta-driver version: 0.3
    [    0.808801] usbcore: registered new interface driver usb-storage
    [    0.815580] i2c_dev: i2c /dev entries driver
    [    0.821192] sdhci: Secure Digital Host Controller Interface driver
    [    0.827561] sdhci: Copyright(c) Pierre Ossman
    [    0.832262] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.838683] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.845184] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [    0.852611] usbcore: registered new interface driver usbhid
    [    0.858331] usbhid: USB HID core driver
    [    0.863934] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
    [    0.875284] Initializing XFRM netlink socket
    [    0.879776] NET: Registered PF_PACKET protocol family
    [    0.885069] Key type dns_resolver registered
    [    0.899574] registered taskstats version 1
    [    0.903932] Loading compiled-in X.509 certificates
    [    0.924992] ti-sci 44043000.system-controller: ABI: 3.1 (firmware rev 0x0009 '9.2.8--v09.02.08 (Kool Koala)')
    [    1.030223] ti-sci-intr 4210000.interrupt-controller: Interrupt Router 5 domain created
    [    1.038746] ti-sci-intr bus@f4000:interrupt-controller@a00000: Interrupt Router 3 domain created
    [    1.048128] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
    [    1.057227] ti-udma 485c0100.dma-controller: Number of rings: 68
    [    1.065185] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
    [    1.075613] ti-udma 485c0000.dma-controller: Number of rings: 288
    [    1.093750] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
    [    1.105313] printk: console [ttyS2] disabled
    [    1.110370] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 307, base_baud = 3000000) is a 8250
    [    1.119313] printk: console [ttyS2] enabled
    [    1.127778] printk: bootconsole [ns16550a0] disabled
    [    1.146151] spi-nor spi0.0: spi-nor-generic (32768 Kbytes)
    [    1.155823] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [    1.226903] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [    1.232455] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
    [    1.240430] xhci-hcd xhci-hcd.0.auto: hcc params 0x200073c9 hci version 0x100 quirks 0x0000002000008010
    [    1.249878] xhci-hcd xhci-hcd.0.auto: irq 311, io mem 0x0f410000
    [    1.256108] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
    [    1.261603] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2
    [    1.269266] xhci-hcd xhci-hcd.0.auto: Host supports USB 3.0 SuperSpeed
    [    1.276789] hub 1-0:1.0: USB hub found
    [    1.280615] hub 1-0:1.0: 1 port detected
    [    1.284962] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
    [    1.293861] hub 2-0:1.0: USB hub found
    [    1.297663] hub 2-0:1.0: 1 port detected
    [    1.304488] mmc0: CQHCI version 5.10
    [    1.318062] clk: Disabling unused clocks
    [    1.340609] ALSA device list:
    [    1.343612]   No soundcards found.
    [    1.348275] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [    1.356105] Waiting for root device PARTUUID=146266fc-01...
    [    1.412429] mmc0: Command Queue Engine enabled
    [    1.416932] mmc0: new HS200 MMC card at address 0001
    [    1.422845] mmcblk0: mmc0:0001 AAM20E 29.6 GiB
    [    1.430816]  mmcblk0: p1 p2 p3 < p5 p6 >
    [    1.436183] mmcblk0boot0: mmc0:0001 AAM20E 31.5 MiB
    [    1.442842] mmcblk0boot1: mmc0:0001 AAM20E 31.5 MiB
    [    1.449152] mmcblk0rpmb: mmc0:0001 AAM20E 4.00 MiB, chardev (240:0)
    [    1.468263] EXT4-fs (mmcblk0p1): mounted filesystem 59602787-5133-41c9-a643-0ad8043410fc r/w with ordered data mode. Quota mode: none.
    [    1.480505] VFS: Mounted root (ext4 filesystem) on device 179:1.
    [    1.489614] devtmpfs: mounted
    [    1.494353] Freeing unused kernel memory: 2496K
    [    1.499086] Run /sbin/init as init process
    [    1.503299]   with arguments:
    [    1.503308]     /sbin/init
    [    1.503313]   with environment:
    [    1.503316]     HOME=/
    [    1.503320]     TERM=linux
    [    1.669942] systemd[1]: System time before build time, advancing clock.
    [    1.718225] NET: Registered PF_INET6 protocol family
    [    1.724638] Segment Routing with IPv6
    [    1.728461] In-situ OAM (IOAM) with IPv6
    [    1.774721] systemd[1]: systemd 252.31-1~deb12u1 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -BPF_FRAMEWORK -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified)
    [    1.807623] systemd[1]: Detected architecture arm64.
    [    1.827969] systemd[1]: Hostname set to <sitara>.
    [    2.648914] systemd[1]: Queued start job for default target multi-user.target.
    [    2.683491] systemd[1]: Created slice system-getty.slice - Slice /system/getty.
    [    2.708459] systemd[1]: Created slice system-modprobe.slice - Slice /system/modprobe.
    [    2.736231] systemd[1]: Created slice system-serial\x2dgetty.slice - Slice /system/serial-getty.
    [    2.763615] systemd[1]: Created slice user.slice - User and Session Slice.
    [    2.786558] systemd[1]: Started systemd-ask-password-console.path - Dispatch Password Requests to Console Directory Watch.
    [    2.814274] systemd[1]: Started systemd-ask-password-wall.path - Forward Password Requests to Wall Directory Watch.
    [    2.842044] systemd[1]: proc-sys-fs-binfmt_misc.automount - Arbitrary Executable File Formats File System Automount Point was skipped because of an unmet condition check (ConditionPathExists=/proc/sys/fs/binfmt_misc).
    [    2.861598] systemd[1]: Expecting device dev-mmcblk0p5.device - /dev/mmcblk0p5...
    [    2.885778] systemd[1]: Expecting device dev-mmcblk0p6.device - /dev/mmcblk0p6...
    [    2.909769] systemd[1]: Expecting device dev-ttyS2.device - /dev/ttyS2...
    [    2.933848] systemd[1]: Reached target cryptsetup.target - Local Encrypted Volumes.
    [    2.957916] systemd[1]: Reached target integritysetup.target - Local Integrity Protected Volumes.
    [    2.982006] systemd[1]: Reached target paths.target - Path Units.
    [    3.006016] systemd[1]: Reached target slices.target - Slice Units.
    [    3.029936] systemd[1]: Reached target swap.target - Swaps.
    [    3.049943] systemd[1]: Reached target veritysetup.target - Local Verity Protected Volumes.
    [    3.074503] systemd[1]: Listening on dm-event.socket - Device-mapper event daemon FIFOs.
    [    3.098858] systemd[1]: Listening on lvm2-lvmpolld.socket - LVM2 poll daemon socket.
    [    3.173205] systemd[1]: Listening on rpcbind.socket - RPCbind Server Activation Socket.
    [    3.198543] systemd[1]: Listening on systemd-initctl.socket - initctl Compatibility Named Pipe.
    [    3.223764] systemd[1]: Listening on systemd-journald-audit.socket - Journal Audit Socket.
    [    3.251047] systemd[1]: Listening on systemd-journald-dev-log.socket - Journal Socket (/dev/log).
    [    3.278974] systemd[1]: Listening on systemd-journald.socket - Journal Socket.
    [    3.309667] systemd[1]: Listening on systemd-udevd-control.socket - udev Control Socket.
    [    3.334755] systemd[1]: Listening on systemd-udevd-kernel.socket - udev Kernel Socket.
    [    3.386101] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
    [    3.417442] systemd[1]: Mounting dev-mqueue.mount - POSIX Message Queue File System...
    [    3.447908] systemd[1]: Mounting sys-kernel-debug.mount - Kernel Debug File System...
    [    3.474463] systemd[1]: sys-kernel-tracing.mount - Kernel Trace File System was skipped because of an unmet condition check (ConditionPathExists=/sys/kernel/tracing).
    [    3.489832] systemd[1]: auth-rpcgss-module.service - Kernel Module supporting RPCSEC_GSS was skipped because of an unmet condition check (ConditionPathExists=/etc/krb5.keytab).
    [    3.506343] systemd[1]: Finished blk-availability.service - Availability of block devices.
    [    3.554495] systemd[1]: Starting kmod-static-nodes.service - Create List of Static Device Nodes...
    [    3.588213] systemd[1]: Starting lvm2-monitor.service - Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling...
    [    3.647140] systemd[1]: Starting modprobe@configfs.service - Load Kernel Module configfs...
    [    3.682308] systemd[1]: Starting modprobe@dm_mod.service - Load Kernel Module dm_mod...
    [    3.712047] device-mapper: ioctl: 4.48.0-ioctl (2023-03-01) initialised: dm-devel@redhat.com
    [    3.738650] systemd[1]: Starting modprobe@drm.service - Load Kernel Module drm...
    [    3.806618] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore...
    [    3.845511] systemd[1]: Starting modprobe@fuse.service - Load Kernel Module fuse...
    [    3.877079] fuse: init (API version 7.39)
    [    3.906566] systemd[1]: Starting modprobe@loop.service - Load Kernel Module loop...
    [    3.962612] systemd[1]: Starting systemd-journald.service - Journal Service...
    [    4.047615] systemd[1]: Starting systemd-modules-load.service - Load Kernel Modules...
    [    4.104458] systemd[1]: Starting systemd-remount-fs.service - Remount Root and Kernel File Systems...
    [    4.190351] systemd[1]: Starting systemd-udev-trigger.service - Coldplug All udev Devices...
    [    4.248413] systemd[1]: Started systemd-journald.service - Journal Service.
    [    4.677648] random: crng init done
    [    4.741222] systemd-journald[99]: Received client request to flush runtime journal.
    [    6.153870] EXT4-fs (mmcblk0p5): mounted filesystem b9e09660-3117-4300-b044-8a4b92252bb1 r/w with ordered data mode. Quota mode: none.
    [    6.182246] EXT4-fs (mmcblk0p6): mounted filesystem b9e09660-3117-4300-b044-8a4b92252bb1 r/w with ordered data mode. Quota mode: none.
    [    6.522316] omap-mailbox 29020000.mailbox: omap mailbox rev 0x66fc9100
    [    6.543892] omap-mailbox 29040000.mailbox: omap mailbox rev 0x66fc9100
    [    6.567912] omap-mailbox 29060000.mailbox: omap mailbox rev 0x66fc9100
    [    6.925509] platform 78000000.r5f: configured R5F for remoteproc mode
    [    6.953127] platform 78000000.r5f: assigned reserved memory node r5f-dma-memory@a0000000
    [    7.054097] remoteproc remoteproc0: 78000000.r5f is available
    [    7.070932] remoteproc remoteproc0: powering up 78000000.r5f
    [    7.076803] remoteproc remoteproc0: Booting fw image am64-main-r5f0_0-fw, size 92288
    [    7.140583] rproc-virtio rproc-virtio.1.auto: assigned reserved memory node r5f-dma-memory@a0000000
    [    7.154642] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    7.155106] virtio_rpmsg_bus virtio0: creating channel ti.ipc4.ping-pong addr 0xd
    [    7.165780] rproc-virtio rproc-virtio.1.auto: registered virtio0 (type 7)
    [    7.167894] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xe
    [    7.176966] remoteproc remoteproc0: remote processor 78000000.r5f is now up
    [    7.194259] platform 78200000.r5f: configured R5F for remoteproc mode
    [    7.242182] platform 78200000.r5f: assigned reserved memory node r5f-dma-memory@a1000000
    [    7.251723] davinci_mdio 300b2400.mdio: Configuring MDIO in manual mode
    [    7.257376] remoteproc remoteproc1: 78200000.r5f is available
    [    7.267758] remoteproc remoteproc1: powering up 78200000.r5f
    [    7.275066] remoteproc remoteproc1: Booting fw image am64-main-r5f0_1-fw, size 92416
    [    7.294634] rproc-virtio rproc-virtio.2.auto: assigned reserved memory node r5f-dma-memory@a1000000
    [    7.312051] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    7.313127] virtio_rpmsg_bus virtio1: creating channel ti.ipc4.ping-pong addr 0xd
    [    7.322918] rproc-virtio rproc-virtio.2.auto: registered virtio1 (type 7)
    [    7.325393] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0xe
    [    7.332734] davinci_mdio 300b2400.mdio: davinci mdio revision 1.7, bus freq 1000000
    [    7.346816] remoteproc remoteproc1: remote processor 78200000.r5f is now up
    [    7.378471] platform 78400000.r5f: configured R5F for remoteproc mode
    [    7.411806] platform 78400000.r5f: assigned reserved memory node r5f-dma-memory@a2000000
    [    7.433848] remoteproc remoteproc2: 78400000.r5f is available
    [    7.434822] davinci_mdio 300b2400.mdio: phy[31]: device 300b2400.mdio:1f, driver TI DP83826E
    [    7.444425] remoteproc remoteproc2: powering up 78400000.r5f
    [    7.457438] remoteproc remoteproc2: Booting fw image am64-main-r5f1_0-fw, size 92416
    [    7.478177] rproc-virtio rproc-virtio.3.auto: assigned reserved memory node r5f-dma-memory@a2000000
    [    7.498928] virtio_rpmsg_bus virtio2: rpmsg host is online
    [    7.504620] virtio_rpmsg_bus virtio2: creating channel ti.ipc4.ping-pong addr 0xd
    [    7.512425] virtio_rpmsg_bus virtio2: creating channel rpmsg_chrdev addr 0xe
    [    7.534789] rproc-virtio rproc-virtio.3.auto: registered virtio2 (type 7)
    [    7.547765] remoteproc remoteproc3: 3000a000.txpru is available
    [    7.555240] remoteproc remoteproc2: remote processor 78400000.r5f is now up
    [    7.555278] platform 78600000.r5f: configured R5F for remoteproc mode
    [    7.576299] remoteproc remoteproc5: 3000c000.txpru is available
    [    7.599588] platform 78600000.r5f: assigned reserved memory node r5f-dma-memory@a3000000
    [    7.636901] remoteproc remoteproc6: 3008a000.txpru is available
    [    7.658459] remoteproc remoteproc4: 78600000.r5f is available
    [    7.689032] remoteproc remoteproc7: 3008c000.txpru is available
    [    7.715998] remoteproc remoteproc4: powering up 78600000.r5f
    [    7.729763] remoteproc remoteproc4: Booting fw image am64-main-r5f1_1-fw, size 92416
    [    7.751579] rproc-virtio rproc-virtio.4.auto: assigned reserved memory node r5f-dma-memory@a3000000
    [    7.766714] virtio_rpmsg_bus virtio3: rpmsg host is online
    [    7.767105] virtio_rpmsg_bus virtio3: creating channel ti.ipc4.ping-pong addr 0xd
    [    7.781771] rproc-virtio rproc-virtio.4.auto: registered virtio3 (type 7)
    [    7.782424] virtio_rpmsg_bus virtio3: creating channel rpmsg_chrdev addr 0xe
    [    7.793108] remoteproc remoteproc4: remote processor 78600000.r5f is now up
    [   10.117766] remoteproc remoteproc8: 300b4000.pru is available
    [   10.127172] remoteproc remoteproc9: 30084000.rtu is available
    [   10.142323] remoteproc remoteproc10: 30038000.pru is available
    [   10.157754] remoteproc remoteproc11: 30006000.rtu is available
    [   10.176319] remoteproc remoteproc12: 30034000.pru is available
    [   10.184688] remoteproc remoteproc13: 30004000.rtu is available
    [   10.198066] icssg-prueth icssg1-eth: port 1: using random MAC addr: ae:de:16:ed:b2:6e
    [   10.226978] TI DP83826E 300b2400.mdio:1f: attached PHY driver (mii_bus:phy_addr=300b2400.mdio:1f, irq=POLL)
    [   10.246756] icssg-prueth icssg1-eth: TI PRU ethernet driver initialized: single EMAC mode
    [   10.269024] remoteproc remoteproc14: 300b8000.pru is available
    [   10.285010] remoteproc remoteproc15: 30086000.rtu is available
    [   12.794169] remoteproc remoteproc8: powering up 300b4000.pru
    [   12.808146] remoteproc remoteproc8: Booting fw image ti-pruss/am65x-sr2-pru0-prueth-fw.elf, size 39464
    [   12.818743] remoteproc remoteproc8: unsupported resource 5
    [   12.824902] remoteproc remoteproc8: remote processor 300b4000.pru is now up
    [   12.836815] remoteproc remoteproc9: powering up 30084000.rtu
    [   12.845954] remoteproc remoteproc9: Booting fw image ti-pruss/am65x-sr2-rtu0-prueth-fw.elf, size 31140
    [   12.867557] remoteproc remoteproc9: remote processor 30084000.rtu is now up
    [   12.876718] remoteproc remoteproc6: powering up 3008a000.txpru
    [   12.886028] remoteproc remoteproc6: Booting fw image ti-pruss/am65x-sr2-txpru0-prueth-fw.elf, size 39068
    [   12.895755] remoteproc remoteproc6: remote processor 3008a000.txpru is now up
    [   12.909091] pps pps0: new PPS source ptp1

    I also wonder why no phy is detected without the compatible string.

    Shouldn't the PHY be automatically detected via the PHY-ID, and then the correct driver probed, like with DP83869?

  • Hi Martin,

    The compatible string in DTS is used by Kernel to identify which driver to use with assigned PHY address. I have one confusion with DTS config:

    icssg1_phy1: ethernet-phy@1f {
    reg = <0x1f>;

    icssg1_emac1: port@1 {
    reg = <1>;

    Is the PHY strapped for address 0x0, 0x1, or 0x1F? The reg =<x> string should match the strapped PHY address.

    It's unclear why the PHY driver is identified correctly over MDIO, but register writes are failing. If address is configured correctly in DTS and phytool arguments, I expect both driver identification and register access to function

    Thank you,
    Evan

  • Hi Evan,

    ok yes, the address 0x1f doesn't make sense in my case.

    I wasn't aware that the PHY address is strapped and I mixed it up with the device address I found in source code and datasheet.

    I need to clarify something with the person responsible for the layout, because I found here one thing which is unclear to me.

    When this is clarified I would write again here.
    Maybe this solves the issue I currently have.

    Just for my understanding, if the PHY is in Enhanced Mode (ModeSelect pin is pulled-up), then Strap 2-4 is used for PHY address strap? So the PHY address should be in the range of 0..7?

    You marked also the reg of icssg1_emac1 in your answer, but this property can differ from reg of icssg1_phy1. Or am I wrong with that assumption?

    Thanks for your help!

  • Hi Martin,

    if the PHY is in Enhanced Mode (ModeSelect pin is pulled-up), then Strap 2-4 is used for PHY address strap? So the PHY address should be in the range of 0..7?

    Yes, this is correct.

    You marked also the reg of icssg1_emac1 in your answer, but this property can differ from reg of icssg1_phy1. Or am I wrong with that assumption?

    Sorry for the confusion here, icssg1_emac1 is independent from PHY config. icssg1_phy1 is the DTS entry to focus on relative to PHY straps.

    Please let me know if you face any issues after changing phy1 reg<x> config to match strapped address.

    Thank you,
    Evan

  • Hi Evan,

    it took a bit more time to get a response.

    It seems that the layout was taken from another custom board design which was RTOS based .

    During initialization, pins such as CRS/LED3/Strap3, PWRDN/INT, and RST_N were controlled manually.

    I'm not sure yet where or how I can add such logic within Linux so that these pins will be controlled before or during the probe of the PHY.

    Do you have any hints or keywords that might help me?

    As I understand it, the driver doesn't support adding a "reset-gpios" property to DTS, as it does with the PCIe controller.

    Or did I miss something?

    Overall, it shouldn't be a problem with the driver or the PHY, it's more of a layout issue.

  • Hi Martin,

    I'm not clear how to control these pins before/during probe either, but I assume this would be in the device tree / driver for the AM642. If you need further debug help on this, please open a new thread targeted at AM642 config.

    For PHY-side config, below yaml details available options:
    https://www.kernel.org/doc/Documentation/devicetree/bindings/net/ti%2Cdp83822.yaml

    Please let me know if you see any PHY-specific issues.

    Thank you,
    Evan

  • Hi Evan,

    to keep it simple I just connected RST_N to PORz_OUT, similar to the layout of the EVM.

    With that change the communication with the PHY works fine.

    ...
    [    6.977330] davinci_mdio 300b2400.mdio: Configuring MDIO in manual mode
    [    7.081460] davinci_mdio 300b2400.mdio: davinci mdio revision 1.7, bus freq 1000000
    [    7.173862] davinci_mdio 300b2400.mdio: phy[2]: device 300b2400.mdio:02, driver TI DP83826E
    [   10.543542] icssg-prueth icssg1-eth: port 1: using random MAC addr: ba:8f:84:73:8c:34
    [   10.556965] TI DP83826E 300b2400.mdio:02: attached PHY driver (mii_bus:phy_addr=300b2400.mdio:02, irq=POLL)
    [   10.566821] icssg-prueth icssg1-eth: TI PRU ethernet driver initialized: single EMAC mode
    ...
    [   13.055483] icssg-prueth icssg1-eth eth0: Link is Up - 100Mbps/Full - flow control off
    ...
    

    PHY: 2|REG: 1 ---> 0x786d
    --> Link Status = 1
    
    PHY: 2|REG: 2 ---> 0x2000
    PHY: 2|REG: 3 ---> 0xa131
    --> PHY ID 0x2000a131
    

    The only change I did inside the PHY driver was the following to add the PHY-ID of that version.

    diff --git a/drivers/net/phy/dp83822.c b/drivers/net/phy/dp83822.c
    index 29e1cbea6dc0..b3fd9bc754e1 100644
    --- a/drivers/net/phy/dp83822.c
    +++ b/drivers/net/phy/dp83822.c
    @@ -19,6 +19,7 @@
     #define DP83825CM_PHY_ID       0x2000a160
     #define DP83825CS_PHY_ID       0x2000a170
     #define DP83826C_PHY_ID                0x2000a130
    +#define DP83826E_PHY_ID                0x2000a131
     #define DP83826NC_PHY_ID       0x2000a110
     
     #define DP83822_DEVADDR                0x1f
    @@ -631,6 +632,7 @@ static int dp83822_resume(struct phy_device *phydev)
     static struct phy_driver dp83822_driver[] = {
            DP83822_PHY_DRIVER(DP83822_PHY_ID, "TI DP83822"),
            DP8382X_PHY_DRIVER(DP83825I_PHY_ID, "TI DP83825I"),
    +       DP8382X_PHY_DRIVER(DP83826E_PHY_ID, "TI DP83826E"),
            DP8382X_PHY_DRIVER(DP83826C_PHY_ID, "TI DP83826C"),
            DP8382X_PHY_DRIVER(DP83826NC_PHY_ID, "TI DP83826NC"),
            DP8382X_PHY_DRIVER(DP83825S_PHY_ID, "TI DP83825S"),
    @@ -642,6 +644,7 @@ module_phy_driver(dp83822_driver);
     static struct mdio_device_id __maybe_unused dp83822_tbl[] = {
            { DP83822_PHY_ID, 0xfffffff0 },
            { DP83825I_PHY_ID, 0xfffffff0 },
    +       { DP83826E_PHY_ID, 0xfffffff0 },
            { DP83826C_PHY_ID, 0xfffffff0 },
            { DP83826NC_PHY_ID, 0xfffffff0 },
            { DP83825S_PHY_ID, 0xfffffff0 },

    However, I still can't use it properly. At least, no IP address is retrieved, and I can't reach anything if a static IP address is assigned.

    $ sudo ethtool eth0
    Settings for eth0:
            Supported ports: [ TP    MII ]
            Supported link modes:   10baseT/Full
                                    100baseT/Full
            Supported pause frame use: No
            Supports auto-negotiation: Yes
            Supported FEC modes: Not reported
            Advertised link modes:  10baseT/Full
                                    100baseT/Full
            Advertised pause frame use: No
            Advertised auto-negotiation: Yes
            Advertised FEC modes: Not reported
            Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                                 100baseT/Half 100baseT/Full
            Link partner advertised pause frame use: Symmetric Receive-only
            Link partner advertised auto-negotiation: Yes
            Link partner advertised FEC modes: Not reported
            Speed: 100Mb/s
            Duplex: Full
            Auto-negotiation: on
            Port: Twisted Pair
            PHYAD: 2
            Transceiver: external
            MDI-X: Unknown
            Current message level: 0x00000000 (0)
                                  
            Link detected: yes
    
    $ ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host noprefixroute 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
        link/ether 96:ba:e6:e7:2e:c8 brd ff:ff:ff:ff:ff:ff
        inet 10.42.0.10/24 brd 10.42.0.255 scope global noprefixroute eth0
           valid_lft forever preferred_lft forever
        inet6 fe80::94ba:e6ff:fee7:2ec8/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    
    $ ping 10.42.0.1
    PING 10.42.0.1 (10.42.0.1) 56(84) bytes of data.
    From 10.42.0.10 icmp_seq=9 Destination Host Unreachable
    From 10.42.0.10 icmp_seq=10 Destination Host Unreachable
    From 10.42.0.10 icmp_seq=11 Destination Host Unreachable
    ^C
    --- 10.42.0.1 ping statistics ---
    13 packets transmitted, 0 received, +3 errors, 100% packet loss, time 12294ms
    pipe 4
    
    
    $ ip -s -s link show dev eth0
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
        link/ether 96:ba:e6:e7:2e:c8 brd ff:ff:ff:ff:ff:ff
        RX:  bytes packets errors dropped  missed   mcast           
              5056      37      0       0       0      37 
        RX errors:  length    crc   frame    fifo overrun
                         0      0       0       0       0 
        TX:  bytes packets errors dropped carrier collsns           
                 0       0      0       0       0       0 
        TX errors: aborted   fifo  window heartbt transns
                         0      0       0       0       2 
                         

    When I trigger negotiation I get error messages like shown below.

    $ sudo ethtool -r eth0
    [ 2039.549431] icssg-prueth icssg1-eth eth0: Link is Down
    [ 2039.565210] icssg-prueth icssg1-eth eth0: timeout waiting for command done
    [ 2040.573540] icssg-prueth icssg1-eth eth0: Link is Up - 100Mbps/Full - flow control off
    [ 2040.592340] icssg-prueth icssg1-eth eth0: timeout waiting for command done
    [ 2056.061195] icssg-prueth icssg1-eth eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 15464 ms
    [ 2061.181197] icssg-prueth icssg1-eth eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 20584 ms
    [ 2066.045196] icssg-prueth icssg1-eth eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 25448 ms
    ...

    Do you have any ideas about what I can check to find the problem?

    Is this more of an issue with ICSSG than with the PHY driver?

  • Hi Martin,

    Glad to see the PHY is detected with driver binding properly. The ethtool log shows PHY status is good, with link detected - I expect communication to work from PHY-side.

    [ 2056.061195] icssg-prueth icssg1-eth eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 15464 ms

    I'm unfamiliar with this NETDEV error, this suggests something from ICSSG side. When performing ping on the static IP address, do you see any outgoing ARPs in Wireshark? If so, this may be an IP config issue on the link partner side.

    Thank you,
    Evan

  • Hi Evan,

    I ran a quick test with Wireshark.

    I see the ARPs coming from my host system, but I don't see a single packet coming from the board.

    I will probably do a test with kernel version 6.12, like with the latest SDK, and/or check the pinmux again.

    I don't want to bother you any longer if it's not a PHY-related issue.

    Once I identify the source of the problem, I might create a new issue.

    Thanks for your support!