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.

DP83822I: DP83822I + AM6442 RGMII - unable to get RX packets

Part Number: DP83822I

Hi all, I'm working through trying to get ethernet up and running in Linux on a custom board.
TISDK: ti-processor-sdk-linux-am64xx-evm-11.01.05.03
2 PHY on CPSW3G (going offboard)

1 PHY on ICSSG0 (AC coupled to onboard WIZ5500)

AM64 and all three phy are sourced from a clock buffer (LMK1C1104DQFR) off the same 25MHz clock(O 25,0-JT21CT-A-P-1,8-LF).

I've been able to get the phys recognized by the OS, drivers are loaded into the kernel (rather than modules). I also get link detection for the CPSW when plugging a cable in, and can read registers for the DP83822I.
Phy are about 3-5cm from the AM64.

Phy are strapped for RGMII (pin28 mode 3; 6K2 to 3v3, 1K96 to GND; pin 26 floating)
I can't get any RX. 

Dmesg output for mdio:

    Line 254: [    1.570121] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    Line 255: [    1.612422] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    Line 267: [    1.763282] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    Line 268: [    1.808416] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    Line 276: [    1.975083] davinci_mdio 8000f00.mdio: phy[9]: device 8000f00.mdio:09, driver TI DP83822
    Line 277: [    1.983421] davinci_mdio 8000f00.mdio: phy[17]: device 8000f00.mdio:11, driver TI DP83822
    Line 430: [   19.247684] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:09] driver [TI DP83822] (irq=POLL)
    Line 432: [   19.775258] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:11] driver [TI DP83822] (irq=POLL)
    Line 451: [   27.657776] davinci_mdio 30032400.mdio: Configuring MDIO in manual mode
    Line 452: [   27.778279] davinci_mdio 30032400.mdio: davinci mdio revision 1.7, bus freq 1000000
    Line 453: [   27.984691] davinci_mdio 30032400.mdio: phy[21]: device 30032400.mdio:15, driver TI DP83822
    Line 514: [   32.186445] TI DP83822 30032400.mdio:15: attached PHY driver (mii_bus:phy_addr=30032400.mdio:15, irq=POLL)

dmesg output for am65-cpsw:

  Line 253: [    1.555158] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:006
    Line 256: [    1.622800] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
    Line 257: [    1.630077] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512, Policers 32
    Line 258: [    1.640166] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
    Line 259: [    1.670072] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 16
    Line 430: [   19.247684] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:09] driver [TI DP83822] (irq=POLL)
    Line 431: [   19.294251] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
    Line 432: [   19.775258] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:11] driver [TI DP83822] (irq=POLL)
    Line 433: [   19.798737] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    Line 437: [   22.894501] am65-cpsw-nuss 8000000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx

DTS info

    aliases {
        serial0 = &mcu_uart0;
        serial1 = &main_uart0;
        i2c0 = &main_i2c0;
        i2c1 = &main_i2c1;
        mmc0 = &sdhci0;
        mmc1 = &sdhci1;
        ethernet0 = &cpsw_port1;          
        ethernet1 = &cpsw_port2;          
        ethernet2 = &icssg0_prueth_port0; 
        adc0 = &tscadc0;
        rtc0 = &ab1805_rtc;
        cpu0 = "/cpus/cpu@0";
        
    };

/* ICSSG0 PRUETH single-EMAC on RGMII1 (port0) */
    icssg0_prueth: icssg0-eth {
        status = "okay";
        compatible = "ti,am642-icssg-prueth";
        sram = <&oc_sram>;          
        pinctrl-names = "default";
        pinctrl-0 = <&mypruicssg0rgmii1_pins_default &icssg0_phy_ctrl_pins_default>;
        ti,prus = <&pru0_0>, <&rtu0_0>, <&tx_pru0_0>, <&pru0_1>, <&rtu0_1>, <&tx_pru0_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 = <&icssg0_mii_g_rt>;
        ti,mii-rt = <&icssg0_mii_rt>;
        ti,iep = <&icssg0_iep0>,  <&icssg0_iep1>;
        ti,pa-stats = <&icssg0_pa_stats>;
        interrupt-parent = <&icssg0_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>;

            icssg0_prueth_port0: port@0 {
                reg = <0>;
                phy-mode   = "rgmii-id";
                phy-handle = <&icssg0_phy1>;
                local-mac-address = [00 00 00 00 00 00];

            };

            port@1 {reg = <1>;    status = "disabled"; fixed-link { speed = <100>; full-duplex; };     }; 
        };
    };



    cpsw3g_phy9_ctrl_pins: cpsw3g-phy9-ctrl-default-pins {
        pinctrl-single,pins = <
            AM64X_IOPAD(0x0020, PIN_OUTPUT_PULLUP, 7) /* (P20) OSPI0_D5.GPIO0_8 */
            AM64X_IOPAD(0x00a0, PIN_INPUT_PULLUP, 7) /* (N16) GPMC0_WPn.GPIO0_39 */
        >;
    };

    /* PHY 11 Control Pins */
    cpsw3g_phy11_ctrl_pins: cpsw3g-phy11-ctrl-default-pins {
        pinctrl-single,pins = <
            AM64X_IOPAD(0x0024, PIN_OUTPUT_PULLUP, 7) /* (N18) OSPI0_D6.GPIO0_9 */
            AM64X_IOPAD(0x00a4, PIN_INPUT_PULLUP, 7) /* (N17) GPMC0_DIR.GPIO0_40 */
        >;
    };


    cpsw_rgmii2_pins_default: cpsw-rgmii2-default-pins {
        bootph-all;
        pinctrl-single,pins = <
            AM64X_IOPAD(0x0108, PIN_INPUT, 4) /* (W11) PRG1_PRU1_GPO0.RGMII2_RD0 */
            AM64X_IOPAD(0x010c, PIN_INPUT, 4) /* (V11) PRG1_PRU1_GPO1.RGMII2_RD1 */
            AM64X_IOPAD(0x0110, PIN_INPUT, 4) /* (AA12) PRG1_PRU1_GPO2.RGMII2_RD2 */
            AM64X_IOPAD(0x0114, PIN_INPUT, 4) /* (Y12) PRG1_PRU1_GPO3.RGMII2_RD3 */
            AM64X_IOPAD(0x0120, PIN_INPUT, 4) /* (U11) PRG1_PRU1_GPO6.RGMII2_RXC */
            AM64X_IOPAD(0x0118, PIN_INPUT, 4) /* (W12) PRG1_PRU1_GPO4.RGMII2_RX_CTL */
            AM64X_IOPAD(0x0134, PIN_OUTPUT, 4) /* (AA10) PRG1_PRU1_GPO11.RGMII2_TD0 */
            AM64X_IOPAD(0x0138, PIN_OUTPUT, 4) /* (V10) PRG1_PRU1_GPO12.RGMII2_TD1 */
            AM64X_IOPAD(0x013c, PIN_OUTPUT, 4) /* (U10) PRG1_PRU1_GPO13.RGMII2_TD2 */
            AM64X_IOPAD(0x0140, PIN_OUTPUT, 4) /* (AA11) PRG1_PRU1_GPO14.RGMII2_TD3 */
            AM64X_IOPAD(0x0148, PIN_OUTPUT, 4) /* (Y10) PRG1_PRU1_GPO16.RGMII2_TXC */
            AM64X_IOPAD(0x0144, PIN_OUTPUT, 4) /* (Y11) PRG1_PRU1_GPO15.RGMII2_TX_CTL */
        >;
    };
        /* CPSW RGMII1/2 combined group */
    cpsw_rgmii1_pins_default: cpsw-rgmii1-default-pins {
        pinctrl-single,pins = <
            AM64X_IOPAD(0x011c, PIN_INPUT, 4) /* (AA13) PRG1_PRU1_GPO5.RGMII1_RD0 */
            AM64X_IOPAD(0x0128, PIN_INPUT, 4) /* (U12) PRG1_PRU1_GPO8.RGMII1_RD1 */
            AM64X_IOPAD(0x0150, PIN_INPUT, 4) /* (Y13) PRG1_PRU1_GPO18.RGMII1_RD2 */
            AM64X_IOPAD(0x0154, PIN_INPUT, 4) /* (V12) PRG1_PRU1_GPO19.RGMII1_RD3 */
            AM64X_IOPAD(0x00d8, PIN_INPUT, 4) /* (W13) PRG1_PRU0_GPO8.RGMII1_RXC */
            AM64X_IOPAD(0x00cc, PIN_INPUT, 4) /* (V13) PRG1_PRU0_GPO5.RGMII1_RX_CTL */
            AM64X_IOPAD(0x0124, PIN_OUTPUT, 4) /* (V15) PRG1_PRU1_GPO7.RGMII1_TD0 */
            AM64X_IOPAD(0x012c, PIN_OUTPUT, 4) /* (V14) PRG1_PRU1_GPO9.RGMII1_TD1 */
            AM64X_IOPAD(0x0130, PIN_OUTPUT, 4) /* (W14) PRG1_PRU1_GPO10.RGMII1_TD2 */
            AM64X_IOPAD(0x014c, PIN_OUTPUT, 4) /* (AA14) PRG1_PRU1_GPO17.RGMII1_TD3 */
            AM64X_IOPAD(0x00e0, PIN_OUTPUT, 4) /* (U14) PRG1_PRU0_GPO10.RGMII1_TXC */
            AM64X_IOPAD(0x00dc, PIN_OUTPUT, 4) /* (U15) PRG1_PRU0_GPO9.RGMII1_TX_CTL */
        >;
    };


    /* CPSW MDIO */
    mymdio1_pins_default: mymdio1-default-pins {
        bootph-all;
        pinctrl-single,pins = <
            AM64X_IOPAD(0x015c, PIN_OUTPUT, 4) /* (Y6) PRG1_MDIO0_MDC.MDIO0_MDC */
            AM64X_IOPAD(0x0158, PIN_INPUT, 4) /* (AA6) PRG1_MDIO0_MDIO.MDIO0_MDIO */
        >;
    };

/* ICSSG0 MDIO */
    mypruicssg0mdio1_pins_default: mypruicssg0mdio1-default-pins {
        pinctrl-single,pins = <
            AM64X_IOPAD(0x0204, PIN_OUTPUT, 0) /* (P3) PRG0_MDIO0_MDC */
            AM64X_IOPAD(0x0200, PIN_INPUT, 0) /* (P2) PRG0_MDIO0_MDIO */
        >;
    };
    icssg0_phy_ctrl_pins_default: icssg0-phy-ctrl-default-pins {
        pinctrl-single,pins = <
            AM64X_IOPAD(0x021c, PIN_OUTPUT_PULLUP, 7) /* (B14) SPI1_CS0.GPIO1_47 */

            AM64X_IOPAD(0x0228, PIN_INPUT_PULLUP, 7) /* (B15) SPI1_D0.GPIO1_50 */

        >;
    };
    /* ICSSG0 RGMII1 */
    mypruicssg0rgmii1_pins_default: mypruicssg0rgmii1-default-pins {
        bootph-all;
        pinctrl-single,pins = <
            AM64X_IOPAD(0x0160, PIN_INPUT, 2) /* (Y1) PRG0_PRU0_GPO0.PRG0_RGMII1_RD0 */
            AM64X_IOPAD(0x0164, PIN_INPUT, 2) /* (R4) PRG0_PRU0_GPO1.PRG0_RGMII1_RD1 */
            AM64X_IOPAD(0x0168, PIN_INPUT, 2) /* (U2) PRG0_PRU0_GPO2.PRG0_RGMII1_RD2 */
            AM64X_IOPAD(0x016c, PIN_INPUT, 2) /* (V2) PRG0_PRU0_GPO3.PRG0_RGMII1_RD3 */
            AM64X_IOPAD(0x0178, PIN_INPUT, 2) /* (T3) PRG0_PRU0_GPO6.PRG0_RGMII1_RXC */
            AM64X_IOPAD(0x0170, PIN_INPUT, 2) /* (AA2) PRG0_PRU0_GPO4.PRG0_RGMII1_RX_CTL */
            AM64X_IOPAD(0x018c, PIN_OUTPUT, 2) /* (Y3) PRG0_PRU0_GPO11.PRG0_RGMII1_TD0 */
            AM64X_IOPAD(0x0190, PIN_OUTPUT, 2) /* (AA3) PRG0_PRU0_GPO12.PRG0_RGMII1_TD1 */
            AM64X_IOPAD(0x0194, PIN_OUTPUT, 2) /* (R6) PRG0_PRU0_GPO13.PRG0_RGMII1_TD2 */
            AM64X_IOPAD(0x0198, PIN_OUTPUT, 2) /* (V4) PRG0_PRU0_GPO14.PRG0_RGMII1_TD3 */
            AM64X_IOPAD(0x01a0, PIN_INPUT, 2) /* (U4) PRG0_PRU0_GPO16.PRG0_RGMII1_TXC */
            AM64X_IOPAD(0x019c, PIN_OUTPUT, 2) /* (T5) PRG0_PRU0_GPO15.PRG0_RGMII1_TX_CTL */
        >;
    };


/* ---------- ETHERNET (CPSW + ICSSG0) ---------- */

/* CPSW core */
&cpsw3g {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&cpsw_rgmii1_pins_default 
                 &cpsw_rgmii2_pins_default 
                 &cpsw3g_phy9_ctrl_pins 
                 &cpsw3g_phy11_ctrl_pins>;
    /* Map HW8_TS_PUSH to GENF1 */
    cpts@3d000 { ti,pps = <7 1>; };
};

/* CPSW ports: RGMII */
&cpsw_port1 { phy-mode = "rgmii-rxid"; phy-handle = <&cpsw3g_phy11>; status = "okay";    ti,mac-idle-ctrl = <2>; ti,syscon-efuse = <&main_conf 0x4044>;};
&cpsw_port2 { phy-mode = "rgmii-rxid"; phy-handle = <&cpsw3g_phy9>; status = "okay";     ti,mac-idle-ctrl = <2>; ti,syscon-efuse = <&main_conf 0x4048>;};

/* CPSW MDIO + DP83822 PHYs (with resets and IRQs) */
&cpsw3g_mdio {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&mymdio1_pins_default>;


    /* MDIO address 11 (RGMII1) — reset on P20 -> GPIO0_6 */
    cpsw3g_phy9: ethernet-phy@9 {
        reg = <0x09>;

        compatible = "ethernet-phy-id2000.a240","ti,dp83822";
         rx-internal-delay-ps = <2000>;        /* enable RX delay (fixed by driver) */
        /* tx-internal-delay-ps = <2000>;      */    /* enable RX delay (fixed by driver) */

        reset-gpios = <&main_gpio0 8 GPIO_ACTIVE_LOW>;    /* P20 RESET_PHY_0 */
        /*
        interrupt-parent = <&main_gpio0>;
        interrupts = <39 IRQ_TYPE_EDGE_FALLING>;    */          /* N16 INT_PWDN_N.0 */
        reset-assert-us = <10000>; 
        reset-deassert-us = <50000>;
    };

    /* MDIO address 9 (RGMII2) — reset on N18 -> GPIO0_7 */
    cpsw3g_phy11: ethernet-phy@11 {
        reg = <0x11>;

        compatible = "ethernet-phy-id2000.a240","ti,dp83822";
        rx-internal-delay-ps = <2000>;         /* enable RX delay */
        /*tx-internal-delay-ps = <2000>;  */  /* enable RX delay */
        reset-gpios = <&main_gpio0 9 GPIO_ACTIVE_LOW>;    /* N18 RESET_PHY_1 */
        /*
        interrupt-parent = <&main_gpio0>;
        interrupts = <40 IRQ_TYPE_EDGE_FALLING>; */             /* N17 INT_PWDN_N.1 */
        reset-assert-us = <10000>; 
        reset-deassert-us = <50000>;
    };
};

/* ICSSG0 MDIO + DP83822 PHY @  (0x15) with reset on B14 -> GPIO1_47 */
&icssg0_mdio {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&mypruicssg0mdio1_pins_default>;
    power-domains = <&k3_pds 81 TI_SCI_PD_EXCLUSIVE>;
    icssg0_phy1: ethernet-phy@15 {
        reg = <0x15>; /* 15 */
        compatible = "ethernet-phy-id2000.a240","ti,dp83822";        
        rx-internal-delay-ps = <2000>;         /* enable RX delay */
        tx-internal-delay-ps = <2000>;         /* enable RX delay */
        reset-gpios = <&main_gpio1 47 GPIO_ACTIVE_LOW>;   /* B14 RESET_PHY_4 */
        /*
        interrupt-parent = <&main_gpio1>;
        interrupts = <50 IRQ_TYPE_EDGE_FALLING>; */            /* B15 INT_PWDN_N.4 */
        reset-assert-us = <10000>;
        reset-deassert-us = <50000>;
    };
};

ethtool + mii-tool +  phytool

root@am64xx-evm:/usr/share/wl18xx# ethtool eth0
Settings for eth0:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Supported pause frame use: Symmetric
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Advertised pause frame use: Symmetric
        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: 17
        Transceiver: external
        MDI-X: Unknown
        Supports Wake-on: gs
        Wake-on: d
        SecureOn password: 00:00:00:00:00:00
        Current message level: 0x000020f7 (8439)
                               drv probe link ifdown ifup rx_err tx_err hw
        Link detected: yes
root@am64xx-evm:/usr/share/wl18xx# ethtool eth1
Settings for eth1:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Supported pause frame use: Symmetric
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Speed: 10Mb/s
        Duplex: Half
        Auto-negotiation: on
        Port: Twisted Pair
        PHYAD: 9
        Transceiver: external
        MDI-X: Unknown
        Supports Wake-on: gs
        Wake-on: d
        SecureOn password: 00:00:00:00:00:00
        Current message level: 0x000020f7 (8439)
                               drv probe link ifdown ifup rx_err tx_err hw
        Link detected: no
root@am64xx-evm:/usr/share/wl18xx# ethtool -S eth0 | grep -E "rx|tx"
     p0_rx_good_frames: 92
     p0_rx_broadcast_frames: 76
     p0_rx_multicast_frames: 16
     p0_rx_crc_errors: 0
     p0_rx_oversized_frames: 0
     p0_rx_undersized_frames: 0
     p0_rx_octets: 27196
     p0_tx_good_frames: 0
     p0_tx_broadcast_frames: 0
     p0_tx_multicast_frames: 0
     p0_tx_octets: 0
     p0_tx_64B_frames: 0
     p0_tx_65_to_127B_frames: 16
     p0_tx_128_to_255B_frames: 0
     p0_tx_256_to_511B_frames: 76
     p0_tx_512_to_1023B_frames: 0
     p0_tx_1024B_frames: 0
     p0_rx_bottom_fifo_drop: 0
     p0_rx_port_mask_drop: 0
     p0_rx_top_fifo_drop: 0
     p0_tx_mem_protect_err: 0
     p0_tx_pri0: 0
     p0_tx_pri1: 0
     p0_tx_pri2: 0
     p0_tx_pri3: 0
     p0_tx_pri4: 0
     p0_tx_pri5: 0
     p0_tx_pri6: 0
     p0_tx_pri7: 0
     p0_tx_pri0_bcnt: 0
     p0_tx_pri1_bcnt: 0
     p0_tx_pri2_bcnt: 0
     p0_tx_pri3_bcnt: 0
     p0_tx_pri4_bcnt: 0
     p0_tx_pri5_bcnt: 0
     p0_tx_pri6_bcnt: 0
     p0_tx_pri7_bcnt: 0
     p0_tx_pri0_drop: 0
     p0_tx_pri1_drop: 0
     p0_tx_pri2_drop: 0
     p0_tx_pri3_drop: 0
     p0_tx_pri4_drop: 0
     p0_tx_pri5_drop: 0
     p0_tx_pri6_drop: 0
     p0_tx_pri7_drop: 0
     p0_tx_pri0_drop_bcnt: 0
     p0_tx_pri1_drop_bcnt: 0
     p0_tx_pri2_drop_bcnt: 0
     p0_tx_pri3_drop_bcnt: 0
     p0_tx_pri4_drop_bcnt: 0
     p0_tx_pri5_drop_bcnt: 0
     p0_tx_pri6_drop_bcnt: 0
     p0_tx_pri7_drop_bcnt: 0
     rx_good_frames: 0
     rx_broadcast_frames: 0
     rx_multicast_frames: 0
     rx_pause_frames: 0
     rx_crc_errors: 0
     rx_align_code_errors: 0
     rx_oversized_frames: 0
     rx_jabber_frames: 0
     rx_undersized_frames: 0
     rx_fragments: 0
     rx_octets: 0
     tx_good_frames: 92
     tx_broadcast_frames: 76
     tx_multicast_frames: 16
     tx_pause_frames: 0
     tx_deferred_frames: 0
     tx_collision_frames: 0
     tx_single_coll_frames: 0
     tx_mult_coll_frames: 0
     tx_excessive_collisions: 0
     tx_late_collisions: 0
     rx_ipg_error: 0
     tx_carrier_sense_errors: 0
     tx_octets: 27196
     tx_64B_frames: 0
     tx_65_to_127B_frames: 16
     tx_128_to_255B_frames: 0
     tx_256_to_511B_frames: 76
     tx_512_to_1023B_frames: 0
     tx_1024B_frames: 0
     rx_bottom_fifo_drop: 0
     rx_port_mask_drop: 0
     rx_top_fifo_drop: 0
     iet_rx_assembly_err: 0
     iet_rx_assembly_ok: 0
     iet_rx_smd_err: 0
     iet_rx_frag: 0
     iet_tx_hold: 0
     iet_tx_frag: 0
     tx_mem_protect_err: 0
     tx_pri0: 92
     tx_pri1: 0
     tx_pri2: 0
     tx_pri3: 0
     tx_pri4: 0
     tx_pri5: 0
     tx_pri6: 0
     tx_pri7: 0
     tx_pri0_bcnt: 27196
     tx_pri1_bcnt: 0
     tx_pri2_bcnt: 0
     tx_pri3_bcnt: 0
     tx_pri4_bcnt: 0
     tx_pri5_bcnt: 0
     tx_pri6_bcnt: 0
     tx_pri7_bcnt: 0
     tx_pri0_drop: 0
     tx_pri1_drop: 0
     tx_pri2_drop: 0
     tx_pri3_drop: 0
     tx_pri4_drop: 0
     tx_pri5_drop: 0
     tx_pri6_drop: 0
     tx_pri7_drop: 0
     tx_pri0_drop_bcnt: 0
     tx_pri1_drop_bcnt: 0
     tx_pri2_drop_bcnt: 0
     tx_pri3_drop_bcnt: 0
     tx_pri4_drop_bcnt: 0
     tx_pri5_drop_bcnt: 0
     tx_pri6_drop_bcnt: 0
     tx_pri7_drop_bcnt: 0
root@am64xx-evm:/usr/share/wl18xx# mii-tool -v eth0 2>/dev/null || true
eth0: negotiated 100baseTx-FD flow-control, link ok
  product info: vendor 08:00:28, model 36 rev 0
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
  link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control

root@am64xx-evm:/usr/share/wl18xx# phytool read eth0/0x11/0x17                                                                             
0x1a49
root@am64xx-evm:/usr/share/wl18xx# phytool read eth0/0x09/0x17                                                                             
0x1a41


Realistically, my goal is to try to get one of the offboard ethernet (eth0: RGMII2) up and running. I don't believe I have been able to successfully put the phy into loopback mode to test that way - I'm hoping for some next steps :D

 

  

  • Hi James,

    Its good that you have link detection and register access to the PHY. By 'I can't get any RX' are you saying the transmit path works, yet the receive path does not? If so, you have the right idea with testing loopback. Specifically MII loopback, to test the integrity of the MAC interface.

    To perform MII loopback, first set register 0x0000[14] to place the PHY in MII loopback mode. This takes any data received from the MAC and loops it directly back to the MAC at the MII pins. Next, send data from the MAC to the PHY and check that this data is successfully received back from the PHY. If the data is coming back to the MAC with errors, there is an issue with the MAC interface.

    Best,

    Shane

  • I've been able to observe a BOOTP request when the BOOTPIN settings were set for load over ethernet, triggering the appropriate response; however I've not been able to capture anything outbound from U-BOOT and onwards into when the OS is running. I'll try to poke an oscope onto the interface at some point tomorrow as well.

  • Sounds good, certainly let me know any updates Slight smile

    Best,

    Shane