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.

Linux/AM3358: Ethernet PHY error

Part Number: AM3358
Other Parts Discussed in Thread: AM3352, , TMDSSK3358, TMDXEVM3358

Tool/software: Linux

What is causing this message in the dmesg log?

net eth0: phy "" not found on slave 1, err -19

here is more dmesg context + output from ethtool:

# dmesg | grep eth
[    1.462277] cpsw 4a100000.ethernet: No slave[1] phy_id, phy-handle, or fixed-link property
[    1.470702] cpsw 4a100000.ethernet: Detected MACID = 60:64:05:40:eb:5d
[    1.477497] cpsw 4a100000.ethernet: cpts: overflow check period 500 (jiffies)
[    1.498800] cpuidle: enable-method property 'ti,am3352' found operations
[   13.503974] net eth0: initializing cpsw version 1.12 (0)
[   13.560529] cpsw 4a100000.ethernet: initialized cpsw ale version 1.4
[   13.606469] cpsw 4a100000.ethernet: ALE Table size 1024
[   13.836478] net eth0: phy "" not found on slave 1, err -19
[   13.909576] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   15.925302] cpsw 4a100000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
[   15.933234] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
# 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
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 0
        Transceiver: external
        Auto-negotiation: on
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x00000000 (0)

        Link detected: yes
#

  • Hi Bill,

    It looks like you have some issues with integrating your ethernet PHY.

    Please provide the below info:
    - Do you use AM335x TI PSDK v4.03?
    - Do you use AM335x custom board? If yes, what ethernet PHY you are using? Share your DTS file for review.
    - Does your custom board ethernet works fine in u-boot (only kernel is the problem)?

    Check also below e2e threads:



    Regards,
    Pavel

  • Pavel Botev said:
    Do you use AM335x TI PSDK v4.03?

    Using:

     git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git 

    v4.9.69-2821-g89d085d

    Pavel Botev said:
    Do you use AM335x custom board?

    yes

    Pavel Botev said:
    what ethernet PHY you are using?

    KSZ8081RNAIA 

    Pavel Botev said:
    Share your DTS file for review.

    6175.devices.dts.txt
    /dts-v1/;
    
    #include "am33xx.dtsi"
    #include <dt-bindings/interrupt-controller/irq.h>
    
    / {
        model = "xxx";
        compatible = "xxx", "ti,am33xx";
    
        cpus {
            cpu@0 {
            };
        };
    
        chosen {
            stdout-path = &uart0;
        };
    
        memory@80000000 {
            device_type = "memory";
            reg = <0x80000000 0x20000000>; /* 512 MB */
        };
    
        leds {
            pinctrl-names = "default";
            pinctrl-0 = <&mygpio1_pins_default>;
    
            compatible = "gpio_leds";
    
            led0 {
                label = "heartbeat";
                gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;
                linux,default-trigger = "heartbeat";
                default-state = "off";
            };
    
            led1 {
                label = "cpu0";
                gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>;
                linux,default-trigger = "cpu0";
                default-state = "off";
            };
    
            led2 {
                label = "mmc1";
                gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
                linux,default-trigger = "mmc1";
                default-state = "off";
            };
    
            led3 {
                label = "eth0";
                gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
                linux,default-trigger = "eth0";
                default-state = "off";
            };
        };
    
        jtag {
            pinctrl-names = "default";
            pinxtrl-0 = <&mydebugss1_pins_default>;
        };
    
        vmmcsd_fixed: fixedregulator@0 {
            compatible = "regulator-fixed";
            regulator-name = "vmmcsd_fixed";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
        };
    
        wlan_1_en_reg: fixedregulator@1 {
            compatible = "regulator-fixed";
            regulator-name = "wlan-1-en-regulator";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
            startup-delay-us = <70000>;
    
            gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>; /* v8 */
            enable-active-high;
        };
    };
    
    &am33xx_pinmux {
        pinctrl-names = "default";
    
        myrtc1_pins_default: myrtc1_pins_default {
            pinctrl-single,pins = <
                0x1f8 ( PIN_INPUT | MUX_MODE0 ) /* (B5) RTC_PORz.RTC_PORz */
                0x200 ( PIN_OUTPUT | MUX_MODE0 ) /* (C5) EXT_WAKEUP.EXT_WAKEUP */
                0x1fc ( PIN_INPUT | MUX_MODE0 ) /* (C6) PMIC_POWER_EN.PMIC_POWER_EN */
                0x204 ( PIN_INPUT | MUX_MODE0 ) /* (B4) ENZ_KALDO_1P8V.ENZ_KALDO_1P8V */
            >;
        };
    
        mydebugss1_pins_default: mydebugss1_pins_default {
            pinctrl-single,pins = <
                0x1d0 ( PIN_INPUT | MUX_MODE0 ) /* (C11) TMS.TMS */
                0x1d4 ( PIN_INPUT | MUX_MODE0 ) /* (B11) TDI.TDI */
                0x1d8 ( PIN_OUTPUT | MUX_MODE0 ) /* (A11) TDO.TDO */
                0x1dc ( PIN_INPUT | MUX_MODE0 ) /* (A12) TCK.TCK */
                0x1e0 ( PIN_INPUT | MUX_MODE0 ) /* (B10) nTRST.nTRST */
                0x1e4 ( PIN_INPUT | MUX_MODE0 ) /* (C14) EMU0.EMU0 */
                0x1e8 ( PIN_INPUT | MUX_MODE0 ) /* (B14) EMU1.EMU1 */
            >;
        };
    
        mygpio1_pins_default: mygpio1_pins_default {
            pinctrl-single,pins = <
                0x164 ( PIN_INPUT | MUX_MODE7 ) /* (C18) eCAP0_in_PWM0_out.gpio0[7] */
                0x120 ( PIN_INPUT | MUX_MODE7 ) /* (K15) gmii1_txd2.gpio0[17] */
                0x1b0 ( PIN_OUTPUT | MUX_MODE7 ) /* (A15) xdma_event_intr0.gpio0[19] */
                0x74 ( PIN_INPUT | MUX_MODE7 ) /* (U17) gpmc_wpn.gpio0[31] */
            >;
        };
    
        mygpio2_pins_default: mygpio2_pins_default {
            pinctrl-single,pins = <
                0x90 ( PIN_INPUT | MUX_MODE7 ) /* (R7) gpmc_advn_ale.gpio2[2] */
                0x94 ( PIN_INPUT | MUX_MODE7 ) /* (T7) gpmc_oen_ren.gpio2[3] */
                0x98 ( PIN_INPUT | MUX_MODE7 ) /* (U6) gpmc_wen.gpio2[4] */
                0x9c ( PIN_INPUT | MUX_MODE7 ) /* (T6) gpmc_be0n_cle.gpio2[5] */
            >;
        };
    
        mygpio3_pins_default: mygpio3_pins_default {
            pinctrl-single,pins = <
                0x190 ( PIN_INPUT | MUX_MODE7 ) /* (A13) mcasp0_aclkx.gpio3[14] */
                0x194 ( PIN_INPUT | MUX_MODE7 ) /* (B13) mcasp0_fsx.gpio3[15] */
                0x1a0 ( PIN_INPUT | MUX_MODE7 ) /* (B12) mcasp0_aclkr.gpio3[18] */
                0x1ac ( PIN_INPUT | MUX_MODE7 ) /* (A14) mcasp0_ahclkx.gpio3[21] */
            >;
        };
    
        mygpio4_pins_default: mygpio4_pins_default {
            pinctrl-single,pins = <
                0x0 ( PIN_OUTPUT | MUX_MODE7 ) /* (U7) gpmc_ad0.gpio1[0] */
                0x4 ( PIN_OUTPUT | MUX_MODE7 ) /* (V7) gpmc_ad1.gpio1[1] */
                0x8 ( PIN_OUTPUT | MUX_MODE7 ) /* (R8) gpmc_ad2.gpio1[2] */
                0xc ( PIN_OUTPUT | MUX_MODE7 ) /* (T8) gpmc_ad3.gpio1[3] */
                0x50 ( PIN_OUTPUT | MUX_MODE7 ) /* (R14) gpmc_a4.gpio1[20] */
                0x54 ( PIN_OUTPUT_PULLUP | MUX_MODE7 ) /* (V15) gpmc_a5.gpio1[21] */
            >;
        };
    
        wlan_disc_1_pins: wlan_disc_1_pins {
            pinctrl-single,pins = <
                0x18 ( PIN_INPUT | MUX_MODE7 ) /* (R9) gpmc_ad6.gpio1[6] */
                0x14 ( PIN_OUTPUT_PULLDOWN | MUX_MODE7 ) /* (V8) gpmc_ad5.gpio1[5] */
                0x10 ( PIN_OUTPUT_PULLDOWN | MUX_MODE7 ) /* (U8) gpmc_ad4.gpio1[4] */
            >;
        };
    
        myglue1_pins_default: myglue1_pins_default {
            pinctrl-single,pins = <
                0x1b8 ( PIN_INPUT | MUX_MODE0 ) /* (A10) nRESETIN_OUT.nRESETIN_OUT */
                0x1c0 ( PIN_INPUT | MUX_MODE0 ) /* (B18) nNMI.nNMI */
            >;
        };
    
        mymdio1_pins_default: mymdio1_pins_default {
            pinctrl-single,pins = <
                0x14c ( PIN_OUTPUT | MUX_MODE0 ) /* (M18) mdio_clk.mdio_clk */
                0x148 ( PIN_INPUT | MUX_MODE0 ) /* (M17) mdio_data.mdio_data */
                0x11c ( PIN_OUTPUT_PULLUP | MUX_MODE7 ) /* (J18) gmii1_txd3.gpio0[16] */
            >;
        };
    
        myrmii1_pins_default: myrmii1_pins_default {
            pinctrl-single,pins = <
                0x10c ( PIN_INPUT | MUX_MODE1 ) /* (H17) gmii1_crs.rmii1_crs_dv */
                0x110 ( PIN_INPUT | MUX_MODE1 ) /* (J15) gmii1_rxer.rmii1_rxer */
                0x114 ( PIN_OUTPUT | MUX_MODE1 ) /* (J16) gmii1_txen.rmii1_txen */
                0x128 ( PIN_OUTPUT | MUX_MODE1 ) /* (K17) gmii1_txd0.rmii1_txd0 */
                0x124 ( PIN_OUTPUT | MUX_MODE1 ) /* (K16) gmii1_txd1.rmii1_txd1 */
                0x140 ( PIN_INPUT | MUX_MODE1 ) /* (M16) gmii1_rxd0.rmii1_rxd0 */
                0x13c ( PIN_INPUT | MUX_MODE1 ) /* (L15) gmii1_rxd1.rmii1_rxd1 */
                0x144 ( PIN_INPUT | MUX_MODE0 ) /* (H18) rmii1_refclk.rmii1_refclk */
            >;
        };
    
        mymmc1_pins_default: mymmc1_pins_default {
            pinctrl-single,pins = <
                0x100 ( PIN_INPUT | MUX_MODE0 ) /* (G17) mmc0_clk.mmc0_clk */
                0x104 ( PIN_INPUT | MUX_MODE0 ) /* (G18) mmc0_cmd.mmc0_cmd */
                0xfc ( PIN_INPUT | MUX_MODE0 ) /* (G16) mmc0_dat0.mmc0_dat0 */
                0xf8 ( PIN_INPUT | MUX_MODE0 ) /* (G15) mmc0_dat1.mmc0_dat1 */
                0xf4 ( PIN_INPUT | MUX_MODE0 ) /* (F18) mmc0_dat2.mmc0_dat2 */
                0xf0 ( PIN_INPUT | MUX_MODE0 ) /* (F17) mmc0_dat3.mmc0_dat3 */
                0x138 ( PIN_INPUT | MUX_MODE3 ) /* (L16) gmii1_rxd2.mmc0_dat4 */
                0x134 ( PIN_INPUT | MUX_MODE3 ) /* (L17) gmii1_rxd3.mmc0_dat5 */
                0x130 ( PIN_INPUT | MUX_MODE3 ) /* (L18) gmii1_rxclk.mmc0_dat6 */
                0x12c ( PIN_INPUT | MUX_MODE3 ) /* (K18) gmii1_txclk.mmc0_dat7 */
            >;
        };
    
        mymmc2_pins_default: mymmc2_pins_default {
            pinctrl-single,pins = <
                0x8c ( PIN_INPUT | MUX_MODE3 ) /* (V12) gpmc_clk.mmc2_clk */
                0x88 ( PIN_INPUT | MUX_MODE3 ) /* (T13) gpmc_csn3.mmc2_cmd */
                0x44 ( PIN_INPUT | MUX_MODE3 ) /* (V14) gpmc_a1.mmc2_dat0 */
                0x48 ( PIN_INPUT | MUX_MODE3 ) /* (U14) gpmc_a2.mmc2_dat1 */
                0x4c ( PIN_INPUT | MUX_MODE3 ) /* (T14) gpmc_a3.mmc2_dat2 */
                0x78 ( PIN_INPUT | MUX_MODE3 ) /* (U18) gpmc_be1n.mmc2_dat3 */
            >;
        };
    
        myi2c1_pins_default: myi2c1_pins_default {
            pinctrl-single,pins = <
                0x18c ( PIN_INPUT | MUX_MODE0 ) /* (C16) I2C0_SCL.I2C0_SCL */
                0x188 ( PIN_INPUT | MUX_MODE0 ) /* (C17) I2C0_SDA.I2C0_SDA */
            >;
        };
    
        myusb1_pins_default: myusb1_pins_default {
            pinctrl-single,pins = <
                0x21c ( PIN_OUTPUT | MUX_MODE0 ) /* (F16) USB0_DRVVBUS.USB0_DRVVBUS */
            >;
        };
    
        myspi1_pins_default: myspi1_pins_default {
            pinctrl-single,pins = <
                0x150 ( PIN_INPUT | MUX_MODE0 ) /* (A17) spi0_sclk.spi0_sclk */
                0x154 ( PIN_INPUT | MUX_MODE0 ) /* (B17) spi0_d0.spi0_d0 */
                0x158 ( PIN_INPUT | MUX_MODE0 ) /* (B16) spi0_d1.spi0_d1 */
                0x15c ( PIN_INPUT | MUX_MODE0 ) /* (A16) spi0_cs0.spi0_cs0 */
            >;
        };
    
        myuart1_pins_default: myuart1_pins_default {
            pinctrl-single,pins = <
                0x180 ( PIN_INPUT | MUX_MODE0 ) /* (D16) uart1_rxd.uart1_rxd */
                0x184 ( PIN_OUTPUT | MUX_MODE0 ) /* (D15) uart1_txd.uart1_txd */
                0x178 ( PIN_INPUT | MUX_MODE0 ) /* (D18) uart1_ctsn.uart1_ctsn */
                0x17c ( PIN_OUTPUT | MUX_MODE0 ) /* (D17) uart1_rtsn.uart1_rtsn */
            >;
        };
    
        myuart2_pins_default: myuart2_pins_default {
            pinctrl-single,pins = <
                0x170 ( PIN_INPUT | MUX_MODE0 ) /* (E15) uart0_rxd.uart0_rxd */
                0x174 ( PIN_OUTPUT | MUX_MODE0 ) /* (E16) uart0_txd.uart0_txd */
            >;
        };
    
    };
    
    &uart1 {
        pinctrl-names = "default";
        pinctrl-0 = <&myuart1_pins_default>;
    
        status = "okay";
    };
    
    &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&myuart2_pins_default>;
    
        status = "okay";
    };
    
    &i2c0 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&myi2c1_pins_default>;
        clock-frequency = <400000>;
        #address-cells = <1>;
        #size-cells = <0>;
    
    };
    
    
    &spi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&myspi1_pins_default>;
        status = "okay";
        flash: mx25u12835f@0 {
            #address-cells = <1>;
            #size-cells = <1>;
            compatible = "macronix,mx25u12835f", "jedec,spi-nor";
            spi-max-frequency = <66000000>;
            reg = <0>;
    
            partitions {
                compatible = "fixed-partitions";
                #address-cells = <1>;
                #size-cells = <1>;
                /* 0x00000->0x0ffff    spl 1 64KiB NLO */
                spl@0 {
                    reg = <0x0 0x10000>;
                };
                /* 0x10000->0x8ffff    u-boot uboot.img 512KB */
                u-boot@10000 {
                    reg = <0x10000 0x80000>;
                };
                /* 0x90000->0x10ffff    u-boot1 uboot.img 512KB */
                u-boot1@90000 {
                    reg = <0x90000 0x80000>;
                };
                /* 0x110000->0x12ffff    env1 128KB */
                u-boot-env1@110000 {
                    reg = <0x110000 0x20000>;
                };
                /* 0x130000->0x14ffff    env2 128KB */
                u-boot-env2@130000 {
                    reg = <0x130000 0x20000>;
                };
                /* 0x150000->0x15ffff    key  64KB      */
                key@150000 {
                    reg = <0x150000 0x10000>;
                };
                /* 0x160000->0x16ffff    oemkey  64KB     */
                oemkey@160000 {
                    reg = <0x160000 0x10000>;
                };
                /* 0x170000 ->0x96ffff emmc.img.gz 8MB  */
                emmcimggz@170000 {
                    reg = <0x170000 0x800000>;
                };
                /* 0x970000 ->0xffffff   empty   */
                empty@970000 {
                    reg = <0x900000 0x700000>;
                };
    
            };
        };
    };
    
    &usb {
        status = "okay";
    };
    
    &usb_ctrl_mod {
        status = "okay";
    };
    
    &usb0_phy {
        status = "okay";
    };
    
    &usb0 {
        status = "okay";
        dr_mode = "host";
        /* maximum-speed = "full-speed"; */
    };
    
    &cppi41dma {
        status = "okay";
        };
    
    &mmc3 {
        pinctrl-names = "default";
        pinctrl-0 = <&mymmc2_pins_default &wlan_disc_1_pins>;
        vmmc-supply = <&wlan_1_en_reg>;
        bus-width = <4>;
        status = "okay";
        ti,non-removable;
        ti,needs-special-hs-handling;
        cap-power-off-card;
        keep-power-in-suspend;
    
        #address-cells = <1>;
        #size-cells = <0>;
        wlcore@2 {
            compatible = "ti,wl1831";
            reg = <2>;
            interrupt-parent = <&gpio1>;
            interrupts = <6 IRQ_TYPE_EDGE_RISING>;
        };
    };
    
    &mmc1 {
        pinctrl-names = "default";
        pinctrl-0 = <&mymmc1_pins_default>;
        ti,non-removable;
        bus-width = <8>;
        status = "okay";
        vmmc-supply = <&vmmcsd_fixed>;
    };
    
    &davinci_mdio {
        pinctrl-names = "default";
        pintctrl-0 = <&mymdio1_pins_default>;
        status = "okay";
    };
    
    &cpsw_emac0 {
        phy_id = <&davinci_mdio>, <0>;
        phy-mode = "rmii";
        reset-gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
    };
    
    &phy_sel {
        rmii-clock-ext;
    };
    
    &mac {
        pinctrl-names = "default";
        pinctrl-0 = <&myrmii1_pins_default>;
        status = "okay";
    };
    
    &rtc {
        status = "disabled";
    };
    
    Pavel Botev said:
    Does your custom board ethernet works fine in u-boot (only kernel is the problem)?

    works in u-boot and kernel, but I do not know what is causing this message:

    [   14.278286] net eth0: phy "" not found on slave 1, err -19

    Pavel Botev said:
    Check also below e2e threads:

    I will read them.

  • Bill Morgan said:

    Using:

     git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git 

    v4.9.69-2821-g89d085d

    The latest AM335x TI PSDK v4.03 comes with kernel v4.9.69, which can be taken from:

    Linux Kernel

    The kernel git repository, branch and commit id can be found below:
    Based on Version: 4.9.69
    URL: git://git.ti.com/processor-sdk/processor-sdk-linux.git
    Branch: processor-sdk-linux-04.03.00
    Commit ID: bfe793963ed7b2af3e1c3dd32e7275f449e6259d
     
    Only this kernel is tested and validated. I would suggest you to try with it.
     
    Bill Morgan said:
    KSZ8081RNAIA 
     
    I will check your DTS file.
     
    Bill Morgan said:

    works in u-boot and kernel, but I do not know what is causing this message:

    [   14.278286] net eth0: phy "" not found on slave 1, err -19


     
    There is something wrong (SW or HW) with the PHY, check below file and functions:
     
    linux-kernel/drivers/net/ethernet/ti/cpsw.c
     
    cpsw_probe_dt()
     
    cpsw_slave_open()
     
     
     
    Regards,
    Pavel
  • I have check your DTS file.

    phy_id = <&davinci_mdio>, <0>;


    Does your PHY at addr 00000? Please check AM335x EVM/SK and AM437x EVM/SK schematics how PHY address is selected. From the log you have sent, seems you have issue with that phy_id value.

    cpsw_probe_dt()
    {

    parp = of_get_property(slave_node, "phy_id", &lenp);

    if (slave_data->phy_node) { }
    else if (of_phy_is_fixed_link(slave_node)) { }
    else if (parp) { }
    else {
    dev_err(&pdev->dev,
    "No slave[%d] phy_id, phy-handle, or fixed-link property\n", i);
    }

    cpsw_slave_open()
    {
    phy = phy_connect(priv->ndev, slave->data->phy_id, &cpsw_adjust_link, slave->data->phy_if);
    if (IS_ERR(phy)) {
    dev_err(priv->dev,
    "phy \"%s\" not found on slave %d, err %ld\n",
    slave->data->phy_id, slave->slave_num,
    PTR_ERR(phy));
  • Pavel Botev said:
    Does your PHY at addr 00000?

    yes

  • I have tested latest AM335x TI PSDK v4.03 on AM335x SK board. In this board we have Atheros AR8031 PHY on phy addr 0:

    phy_id = <&davinci_mdio>, <0>;

    And below is the console log I have:

    root@am335x-evm:~# dmesg | grep eth
    [    1.201493] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver Atheros 8031 ethernet
    [    1.210846] davinci_mdio 4a101000.mdio: phy[1]: device 4a101000.mdio:01, driver Atheros 8031 ethernet
    [    1.220903] cpsw 4a100000.ethernet: Detected MACID = c8:a0:30:a1:ce:56
    [    1.227796] cpsw 4a100000.ethernet: device node lookup for pps timer failed
    [    1.234900] cpsw 4a100000.ethernet: cpts: overflow check period 500 (jiffies)
    [    1.243057] cpsw 4a100000.ethernet: cpsw: Detected MACID = c8:a0:30:a1:ce:58
    [    1.263056] cpuidle: enable-method property 'ti,am3352' found operations
    [   26.026489] net eth1: initializing cpsw version 1.12 (0)
    [   26.026502] cpsw 4a100000.ethernet: initialized cpsw ale version 1.4
    [   26.026508] cpsw 4a100000.ethernet: ALE Table size 1024
    [   26.165328] Atheros 8031 ethernet 4a101000.mdio:01: attached PHY driver [Atheros 8031 ethernet] (mii_bus:phy_addr=4a101000.mdio:01, irq=-1)
    [   26.208133] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
    [   26.341777] net eth0: initializing cpsw version 1.12 (0)
    [   26.484607] Atheros 8031 ethernet 4a101000.mdio:00: attached PHY driver [Atheros 8031 ethernet] (mii_bus:phy_addr=4a101000.mdio:00, irq=-1)
    [   26.489149] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    [   35.495950] using random self ethernet address
    [   35.495957] using random host ethernet address
    [   35.495990] using host ethernet address: C8:A0:30:A1:CE:58
    [   35.495991] using random self ethernet address
    [   35.495994] using random host ethernet address
    [   35.500721] using host ethernet address: C8:A0:30:A1:CE:58

    I would suggest you:

    - try with the kernel that comes with PSDK v4.03

    - check your HW design of your ethernet PHY

     

    Regards,
    Pavel

  • cpsw 4a100000.ethernet: No slave[1] phy_id, phy-handle, or fixed-link property

    is my device tree missing a cpsw setting?

    devicetree.dts.txt
    /dts-v1/;
    
    #include "am33xx.dtsi"
    #include <dt-bindings/interrupt-controller/irq.h>
    
    / {
        model = "model";
        compatible = "ti,am33xx";
    
        cpus {
            cpu@0 {
            };
        };
    
        chosen {
            stdout-path = &uart0;
        };
    
        memory@80000000 {
            device_type = "memory";
            reg = <0x80000000 0x20000000>; /* 512 MB */
        };
    
        leds {
            pinctrl-names = "default";
            pinctrl-0 = <&mygpio1_pins_default>;
    
            compatible = "gpio_leds";
    
            led0 {
                label = "heartbeat";
                gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;
                linux,default-trigger = "heartbeat";
                default-state = "off";
            };
    
            led1 {
                label = "cpu0";
                gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>;
                linux,default-trigger = "cpu0";
                default-state = "off";
            };
    
            led2 {
                label = "mmc1";
                gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
                linux,default-trigger = "mmc1";
                default-state = "off";
            };
    
            led3 {
                label = "eth0";
                gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
                linux,default-trigger = "eth0";
                default-state = "off";
            };
        };
    
        jtag {
            pinctrl-names = "default";
            pinxtrl-0 = <&mydebugss1_pins_default>;
        };
    
        vmmcsd_fixed: fixedregulator@0 {
            compatible = "regulator-fixed";
            regulator-name = "vmmcsd_fixed";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
        };
    
        wlan_1_en_reg: fixedregulator@1 {
            compatible = "regulator-fixed";
            regulator-name = "wlan-1-en-regulator";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
            startup-delay-us = <70000>;
    
            gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>; /* v8 */
            enable-active-high;
        };
    };
    
    &am33xx_pinmux {
        pinctrl-names = "default";
    
        myrtc1_pins_default: myrtc1_pins_default {
            pinctrl-single,pins = <
                0x1f8 ( PIN_INPUT | MUX_MODE0 ) /* (B5) RTC_PORz.RTC_PORz */
                0x200 ( PIN_OUTPUT | MUX_MODE0 ) /* (C5) EXT_WAKEUP.EXT_WAKEUP */
                0x1fc ( PIN_INPUT | MUX_MODE0 ) /* (C6) PMIC_POWER_EN.PMIC_POWER_EN */
                0x204 ( PIN_INPUT | MUX_MODE0 ) /* (B4) ENZ_KALDO_1P8V.ENZ_KALDO_1P8V */
            >;
        };
    
        mydebugss1_pins_default: mydebugss1_pins_default {
            pinctrl-single,pins = <
                0x1d0 ( PIN_INPUT | MUX_MODE0 ) /* (C11) TMS.TMS */
                0x1d4 ( PIN_INPUT | MUX_MODE0 ) /* (B11) TDI.TDI */
                0x1d8 ( PIN_OUTPUT | MUX_MODE0 ) /* (A11) TDO.TDO */
                0x1dc ( PIN_INPUT | MUX_MODE0 ) /* (A12) TCK.TCK */
                0x1e0 ( PIN_INPUT | MUX_MODE0 ) /* (B10) nTRST.nTRST */
                0x1e4 ( PIN_INPUT | MUX_MODE0 ) /* (C14) EMU0.EMU0 */
                0x1e8 ( PIN_INPUT | MUX_MODE0 ) /* (B14) EMU1.EMU1 */
            >;
        };
    
        mygpio1_pins_default: mygpio1_pins_default {
            pinctrl-single,pins = <
                0x164 ( PIN_INPUT | MUX_MODE7 ) /* (C18) eCAP0_in_PWM0_out.gpio0[7] */
                0x120 ( PIN_INPUT | MUX_MODE7 ) /* (K15) gmii1_txd2.gpio0[17] */
                0x1b0 ( PIN_OUTPUT | MUX_MODE7 ) /* (A15) xdma_event_intr0.gpio0[19] */
                0x74 ( PIN_INPUT | MUX_MODE7 ) /* (U17) gpmc_wpn.gpio0[31] */
            >;
        };
    
        mygpio2_pins_default: mygpio2_pins_default {
            pinctrl-single,pins = <
                0x90 ( PIN_INPUT | MUX_MODE7 ) /* (R7) gpmc_advn_ale.gpio2[2] */
                0x94 ( PIN_INPUT | MUX_MODE7 ) /* (T7) gpmc_oen_ren.gpio2[3] */
                0x98 ( PIN_INPUT | MUX_MODE7 ) /* (U6) gpmc_wen.gpio2[4] */
                0x9c ( PIN_INPUT | MUX_MODE7 ) /* (T6) gpmc_be0n_cle.gpio2[5] */
            >;
        };
    
        mygpio3_pins_default: mygpio3_pins_default {
            pinctrl-single,pins = <
                0x190 ( PIN_INPUT | MUX_MODE7 ) /* (A13) mcasp0_aclkx.gpio3[14] */
                0x194 ( PIN_INPUT | MUX_MODE7 ) /* (B13) mcasp0_fsx.gpio3[15] */
                0x1a0 ( PIN_INPUT | MUX_MODE7 ) /* (B12) mcasp0_aclkr.gpio3[18] */
                0x1ac ( PIN_INPUT | MUX_MODE7 ) /* (A14) mcasp0_ahclkx.gpio3[21] */
            >;
        };
    
        mygpio4_pins_default: mygpio4_pins_default {
            pinctrl-single,pins = <
                0x0 ( PIN_OUTPUT | MUX_MODE7 ) /* (U7) gpmc_ad0.gpio1[0] */
                0x4 ( PIN_OUTPUT | MUX_MODE7 ) /* (V7) gpmc_ad1.gpio1[1] */
                0x8 ( PIN_OUTPUT | MUX_MODE7 ) /* (R8) gpmc_ad2.gpio1[2] */
                0xc ( PIN_OUTPUT | MUX_MODE7 ) /* (T8) gpmc_ad3.gpio1[3] */
                0x50 ( PIN_OUTPUT | MUX_MODE7 ) /* (R14) gpmc_a4.gpio1[20] */
                0x54 ( PIN_OUTPUT_PULLUP | MUX_MODE7 ) /* (V15) gpmc_a5.gpio1[21] */
            >;
        };
    
        wlan_disc_1_pins: wlan_disc_1_pins {
            pinctrl-single,pins = <
                0x18 ( PIN_INPUT | MUX_MODE7 ) /* (R9) gpmc_ad6.gpio1[6] */
                0x14 ( PIN_OUTPUT_PULLDOWN | MUX_MODE7 ) /* (V8) gpmc_ad5.gpio1[5] */
                0x10 ( PIN_OUTPUT_PULLDOWN | MUX_MODE7 ) /* (U8) gpmc_ad4.gpio1[4] */
            >;
        };
    
        myglue1_pins_default: myglue1_pins_default {
            pinctrl-single,pins = <
                0x1b8 ( PIN_INPUT | MUX_MODE0 ) /* (A10) nRESETIN_OUT.nRESETIN_OUT */
                0x1c0 ( PIN_INPUT | MUX_MODE0 ) /* (B18) nNMI.nNMI */
            >;
        };
    
        mymdio1_pins_default: mymdio1_pins_default {
            pinctrl-single,pins = <
                0x14c ( PIN_OUTPUT | MUX_MODE0 ) /* (M18) mdio_clk.mdio_clk */
                0x148 ( PIN_INPUT | MUX_MODE0 ) /* (M17) mdio_data.mdio_data */
                0x11c ( PIN_OUTPUT_PULLUP | MUX_MODE7 ) /* (J18) gmii1_txd3.gpio0[16] */
            >;
        };
    
        myrmii1_pins_default: myrmii1_pins_default {
            pinctrl-single,pins = <
                0x10c ( PIN_INPUT | MUX_MODE1 ) /* (H17) gmii1_crs.rmii1_crs_dv */
                0x110 ( PIN_INPUT | MUX_MODE1 ) /* (J15) gmii1_rxer.rmii1_rxer */
                0x114 ( PIN_OUTPUT | MUX_MODE1 ) /* (J16) gmii1_txen.rmii1_txen */
                0x128 ( PIN_OUTPUT | MUX_MODE1 ) /* (K17) gmii1_txd0.rmii1_txd0 */
                0x124 ( PIN_OUTPUT | MUX_MODE1 ) /* (K16) gmii1_txd1.rmii1_txd1 */
                0x140 ( PIN_INPUT | MUX_MODE1 ) /* (M16) gmii1_rxd0.rmii1_rxd0 */
                0x13c ( PIN_INPUT | MUX_MODE1 ) /* (L15) gmii1_rxd1.rmii1_rxd1 */
                0x144 ( PIN_INPUT | MUX_MODE0 ) /* (H18) rmii1_refclk.rmii1_refclk */
            >;
        };
    
        mymmc1_pins_default: mymmc1_pins_default {
            pinctrl-single,pins = <
                0x100 ( PIN_INPUT | MUX_MODE0 ) /* (G17) mmc0_clk.mmc0_clk */
                0x104 ( PIN_INPUT | MUX_MODE0 ) /* (G18) mmc0_cmd.mmc0_cmd */
                0xfc ( PIN_INPUT | MUX_MODE0 ) /* (G16) mmc0_dat0.mmc0_dat0 */
                0xf8 ( PIN_INPUT | MUX_MODE0 ) /* (G15) mmc0_dat1.mmc0_dat1 */
                0xf4 ( PIN_INPUT | MUX_MODE0 ) /* (F18) mmc0_dat2.mmc0_dat2 */
                0xf0 ( PIN_INPUT | MUX_MODE0 ) /* (F17) mmc0_dat3.mmc0_dat3 */
                0x138 ( PIN_INPUT | MUX_MODE3 ) /* (L16) gmii1_rxd2.mmc0_dat4 */
                0x134 ( PIN_INPUT | MUX_MODE3 ) /* (L17) gmii1_rxd3.mmc0_dat5 */
                0x130 ( PIN_INPUT | MUX_MODE3 ) /* (L18) gmii1_rxclk.mmc0_dat6 */
                0x12c ( PIN_INPUT | MUX_MODE3 ) /* (K18) gmii1_txclk.mmc0_dat7 */
            >;
        };
    
        mymmc2_pins_default: mymmc2_pins_default {
            pinctrl-single,pins = <
                0x8c ( PIN_INPUT | MUX_MODE3 ) /* (V12) gpmc_clk.mmc2_clk */
                0x88 ( PIN_INPUT | MUX_MODE3 ) /* (T13) gpmc_csn3.mmc2_cmd */
                0x44 ( PIN_INPUT | MUX_MODE3 ) /* (V14) gpmc_a1.mmc2_dat0 */
                0x48 ( PIN_INPUT | MUX_MODE3 ) /* (U14) gpmc_a2.mmc2_dat1 */
                0x4c ( PIN_INPUT | MUX_MODE3 ) /* (T14) gpmc_a3.mmc2_dat2 */
                0x78 ( PIN_INPUT | MUX_MODE3 ) /* (U18) gpmc_be1n.mmc2_dat3 */
            >;
        };
    
        myi2c1_pins_default: myi2c1_pins_default {
            pinctrl-single,pins = <
                0x18c ( PIN_INPUT | MUX_MODE0 ) /* (C16) I2C0_SCL.I2C0_SCL */
                0x188 ( PIN_INPUT | MUX_MODE0 ) /* (C17) I2C0_SDA.I2C0_SDA */
            >;
        };
    
        myusb1_pins_default: myusb1_pins_default {
            pinctrl-single,pins = <
                0x21c ( PIN_OUTPUT | MUX_MODE0 ) /* (F16) USB0_DRVVBUS.USB0_DRVVBUS */
            >;
        };
    
        myspi1_pins_default: myspi1_pins_default {
            pinctrl-single,pins = <
                0x150 ( PIN_INPUT | MUX_MODE0 ) /* (A17) spi0_sclk.spi0_sclk */
                0x154 ( PIN_INPUT | MUX_MODE0 ) /* (B17) spi0_d0.spi0_d0 */
                0x158 ( PIN_INPUT | MUX_MODE0 ) /* (B16) spi0_d1.spi0_d1 */
                0x15c ( PIN_INPUT | MUX_MODE0 ) /* (A16) spi0_cs0.spi0_cs0 */
            >;
        };
    
        myuart1_pins_default: myuart1_pins_default {
            pinctrl-single,pins = <
                0x180 ( PIN_INPUT | MUX_MODE0 ) /* (D16) uart1_rxd.uart1_rxd */
                0x184 ( PIN_OUTPUT | MUX_MODE0 ) /* (D15) uart1_txd.uart1_txd */
                0x178 ( PIN_INPUT | MUX_MODE0 ) /* (D18) uart1_ctsn.uart1_ctsn */
                0x17c ( PIN_OUTPUT | MUX_MODE0 ) /* (D17) uart1_rtsn.uart1_rtsn */
            >;
        };
    
        myuart2_pins_default: myuart2_pins_default {
            pinctrl-single,pins = <
                0x170 ( PIN_INPUT | MUX_MODE0 ) /* (E15) uart0_rxd.uart0_rxd */
                0x174 ( PIN_OUTPUT | MUX_MODE0 ) /* (E16) uart0_txd.uart0_txd */
            >;
        };
    
    };
    
    &uart1 {
        pinctrl-names = "default";
        pinctrl-0 = <&myuart1_pins_default>;
    
        status = "okay";
    };
    
    &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&myuart2_pins_default>;
    
        status = "okay";
    };
    
    &i2c0 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&myi2c1_pins_default>;
        clock-frequency = <400000>;
        #address-cells = <1>;
        #size-cells = <0>;
    
    };
    
    
    &spi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&myspi1_pins_default>;
        status = "okay";
        flash: mx25u12835f@0 {
            #address-cells = <1>;
            #size-cells = <1>;
            compatible = "macronix,mx25u12835f", "jedec,spi-nor";
            spi-max-frequency = <66000000>;
            reg = <0>;
    
            partitions {
                compatible = "fixed-partitions";
                #address-cells = <1>;
                #size-cells = <1>;
                /* 0x00000->0x0ffff    spl 1 64KiB NLO */
                spl@0 {
                    reg = <0x0 0x10000>;
                };
                /* 0x10000->0x8ffff    u-boot uboot.img 512KB */
                u-boot@10000 {
                    reg = <0x10000 0x80000>;
                };
                /* 0x90000->0x10ffff    u-boot1 uboot.img 512KB */
                u-boot1@90000 {
                    reg = <0x90000 0x80000>;
                };
                /* 0x110000->0x12ffff    env1 128KB */
                u-boot-env1@110000 {
                    reg = <0x110000 0x20000>;
                };
                /* 0x130000->0x14ffff    env2 128KB */
                u-boot-env2@130000 {
                    reg = <0x130000 0x20000>;
                };
                /* 0x150000->0x15ffff    key  64KB      */
                key@150000 {
                    reg = <0x150000 0x10000>;
                };
                /* 0x160000->0x16ffff    oemkey  64KB     */
                oemkey@160000 {
                    reg = <0x160000 0x10000>;
                };
                /* 0x170000 ->0x96ffff emmc.img.gz 8MB  */
                emmcimggz@170000 {
                    reg = <0x170000 0x800000>;
                };
                /* 0x970000 ->0xffffff   empty   */
                empty@970000 {
                    reg = <0x900000 0x700000>;
                };
    
            };
        };
    };
    
    &usb {
        status = "okay";
    };
    
    &usb_ctrl_mod {
        status = "okay";
    };
    
    &usb0_phy {
        status = "okay";
    };
    
    &usb0 {
        status = "okay";
        dr_mode = "host";
        /* maximum-speed = "full-speed"; */
    };
    
    &cppi41dma {
        status = "okay";
        };
    
    &mmc3 {
        pinctrl-names = "default";
        pinctrl-0 = <&mymmc2_pins_default &wlan_disc_1_pins>;
        vmmc-supply = <&wlan_1_en_reg>;
        bus-width = <4>;
        status = "okay";
        ti,non-removable;
        ti,needs-special-hs-handling;
        cap-power-off-card;
        keep-power-in-suspend;
    
        #address-cells = <1>;
        #size-cells = <0>;
        wlcore@2 {
            compatible = "ti,wl1831";
            reg = <2>;
            interrupt-parent = <&gpio1>;
            interrupts = <6 IRQ_TYPE_EDGE_RISING>;
        };
    };
    
    &mmc1 {
        pinctrl-names = "default";
        pinctrl-0 = <&mymmc1_pins_default>;
        ti,non-removable;
        bus-width = <8>;
        status = "okay";
        vmmc-supply = <&vmmcsd_fixed>;
    };
    
    &davinci_mdio {
        pinctrl-names = "default";
        pintctrl-0 = <&mymdio1_pins_default>;
        status = "okay";
    };
    
    &cpsw_emac0 {
        phy_id = <&davinci_mdio>, <0>;
        phy-mode = "rmii";
        reset-gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
    };
    
    &phy_sel {
        rmii-clock-ext;
    };
    
    &mac {
        pinctrl-names = "default";
        pinctrl-0 = <&myrmii1_pins_default>;
        status = "okay";
    };
    
    &rtc {
        status = "disabled";
    };
    

  • Bill,

    The below line looks suspicious to me:

    &davinci_mdio {
        pinctrl-names = "default";
        pintctrl-0 = <&mymdio1_pins_default>;
        status = "okay";
    };

    &cpsw_emac0 {
        phy_id = <&davinci_mdio>, <0>;
        phy-mode = "rmii";
        reset-gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
    };

    I would suggest you to check this pin with scope and verify that is really generating reset to the external ethernet PHY. And looks like "reset-gpios" entry should be in "davinci_mdio" node, not in "cpsw_emac" node. Check the below pointers for reference:

    linux-kernel/Documentation/devicetree/bindings/net/davinci-mdio.txt

    linux-kernel/arch/arm/boot/dts/am335x-icev2.dts

     

    Regards,
    Pavel

  • Thanks, I moved reset-gpios from cpsw_emac0 to davinci_mdio.

    It did not fix the issue.

    boot log:

    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 4.9.69-g89d085d1a4  (gcc version 6.4.0 (GCC) ) #5 PREEMPT Mon Jun 18 08:47:34 CDT 2018
    [    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
    [    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    [    0.000000] OF: fdt:Machine model: xxx
    [    0.000000] efi: Getting EFI parameters from FDT:
    [    0.000000] efi: UEFI not found.
    [    0.000000] cma: Reserved 48 MiB at 0x9d000000
    [    0.000000] Memory policy: Data cache writeback
    [    0.000000] On node 0 totalpages: 131072
    [    0.000000] free_area_init_node: node 0, pgdat c0c434a4, node_mem_map dcb61000
    [    0.000000]   Normal zone: 1152 pages used for memmap
    [    0.000000]   Normal zone: 0 pages reserved
    [    0.000000]   Normal zone: 131072 pages, LIFO batch:31
    [    0.000000] CPU: All CPU(s) started in SVC mode.
    [    0.000000] AM335X ES2.1 (sgx neon)
    [    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
    [    0.000000] pcpu-alloc: [0] 0
    [    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129920
    [    0.000000] Kernel command line: console=ttyS0,115200 ramdisk_size=327680 root=/dev/ram0 rw rootfstype=ext2
    [    0.000000] PID hash table entries: 2048 (order: 1, 8192 bytes)
    [    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
    [    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
    [    0.000000] Memory: 416576K/524288K available (7168K kernel code, 279K rwdata, 2416K rodata, 1024K init, 287K bss, 58560K reserved, 49152K cma-reserved, 0K highmem)
    [    0.000000] Virtual kernel memory layout:
    [    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    [    0.000000]     fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    [    0.000000]     vmalloc : 0xe0800000 - 0xff800000   ( 496 MB)
    [    0.000000]     lowmem  : 0xc0000000 - 0xe0000000   ( 512 MB)
    [    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    [    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
    [    0.000000]       .text : 0xc0008000 - 0xc0800000   (8160 kB)
    [    0.000000]       .init : 0xc0b00000 - 0xc0c00000   (1024 kB)
    [    0.000000]       .data : 0xc0c00000 - 0xc0c45c70   ( 280 kB)
    [    0.000000]        .bss : 0xc0c45c70 - 0xc0c8d9f4   ( 288 kB)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [    0.000000] Preemptible hierarchical RCU implementation.
    [    0.000000]  Build-time adjustment of leaf fanout to 32.
    [    0.000000] NR_IRQS:16 nr_irqs:16 16
    [    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
    [    0.000000] OMAP clockevent source: timer2 at 26000000 Hz
    [    0.000015] sched_clock: 32 bits at 26MHz, resolution 38ns, wraps every 82595524588ns
    [    0.000035] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 73510017198 ns
    [    0.000045] OMAP clocksource: timer1 at 26000000 Hz
    [    0.000204] clocksource_probe: no matching clocksources found
    [    0.000377] Console: colour dummy device 80x30
    [    0.000419] Calibrating delay loop... 795.44 BogoMIPS (lpj=3977216)
    [    0.089132] pid_max: default: 32768 minimum: 301
    [    0.089250] Security Framework initialized
    [    0.089290] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.089301] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
    [    0.090127] CPU: Testing write buffer coherency: ok
    [    0.090514] Setting up static identity map for 0x80100000 - 0x80100060
    [    0.091373] EFI services will not be available.
    [    0.092782] devtmpfs: initialized
    [    0.104029] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
    [    0.104418] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
    [    0.104445] futex hash table entries: 256 (order: -1, 3072 bytes)
    [    0.108122] pinctrl core: initialized pinctrl subsystem
    [    0.109592] NET: Registered protocol family 16
    [    0.111567] DMA: preallocated 256 KiB pool for atomic coherent allocations
    [    0.126861] omap_hwmod: debugss: _wait_target_disable failed
    [    0.193894] omap_hwmod: cpgmac0: _wait_target_disable failed
    [    0.219129] cpuidle: using governor ladder
    [    0.249117] cpuidle: using governor menu
    [    0.253597] gpio gpiochip0: (gpio): added GPIO chardev (254:0)
    [    0.253990] gpiochip_setup_dev: registered GPIOs 0 to 31 on device: gpiochip0 (gpio)
    [    0.255473] OMAP GPIO hardware version 0.1
    [    0.256349] gpio gpiochip1: (gpio): added GPIO chardev (254:1)
    [    0.256690] gpiochip_setup_dev: registered GPIOs 32 to 63 on device: gpiochip1 (gpio)
    [    0.258807] gpio gpiochip2: (gpio): added GPIO chardev (254:2)
    [    0.259296] gpiochip_setup_dev: registered GPIOs 64 to 95 on device: gpiochip2 (gpio)
    [    0.261365] gpio gpiochip3: (gpio): added GPIO chardev (254:3)
    [    0.261691] gpiochip_setup_dev: registered GPIOs 96 to 127 on device: gpiochip3 (gpio)
    [    0.270698] No ATAGs?
    [    0.270725] hw-breakpoint: debug architecture 0x4 unsupported.
    [    0.307506] edma 49000000.edma: TI EDMA DMA engine driver
    [    0.307834] of_get_named_gpiod_flags: can't parse 'gpio' property of node '/fixedregulator@0[0]'
    [    0.308200] of_get_named_gpiod_flags: parsed 'gpio' property of node '/fixedregulator@1[0]' - status (0)
    [    0.311321] omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/myi2c1_pins_default, deferring probe
    [    0.311449] media: Linux media interface: v0.10
    [    0.311506] Linux video capture interface: v2.00
    [    0.311548] pps_core: LinuxPPS API ver. 1 registered
    [    0.311556] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.311589] PTP clock support registered
    [    0.311630] EDAC MC: Ver: 3.0.0
    [    0.312731] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
    [    0.313077] Advanced Linux Sound Architecture Driver Initialized.
    [    0.314374] clocksource: Switched to clocksource timer1
    [    0.325242] NET: Registered protocol family 2
    [    0.326055] TCP established hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.326110] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
    [    0.326157] TCP: Hash tables configured (established 4096 bind 4096)
    [    0.326227] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [    0.326245] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [    0.326386] NET: Registered protocol family 1
    [    0.326819] RPC: Registered named UNIX socket transport module.
    [    0.326835] RPC: Registered udp transport module.
    [    0.326841] RPC: Registered tcp transport module.
    [    0.326848] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.326862] PCI: CLS 0 bytes, default 64
    [    0.327401] Trying to unpack rootfs image as initramfs...
    [    0.328221] rootfs image is not initramfs (no cpio magic); looks like an initrd
    [    0.607457] Freeing initrd memory: 41400K
    [    0.607964] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
    [    0.610601] workingset: timestamp_bits=14 max_order=17 bucket_order=3
    [    0.618724] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.619698] NFS: Registering the id_resolver key type
    [    0.619743] Key type id_resolver registered
    [    0.619751] Key type id_legacy registered
    [    0.619801] ntfs: driver 2.1.32 [Flags: R/O].
    [    0.625384] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
    [    0.625407] io scheduler noop registered
    [    0.625415] io scheduler deadline registered
    [    0.625584] io scheduler cfq registered (default)
    [    0.626817] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
    [    0.692580] Serial: 8250/16550 driver, 10 ports, IRQ sharing disabled
    [    0.696473] console [ttyS0] disabled
    [    0.696572] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 158, base_baud = 3000000) is a 8250
    [    1.288050] console [ttyS0] enabled
    [    1.292710] 48022000.serial: ttyS1 at MMIO 0x48022000 (irq = 159, base_baud = 3000000) is a 8250
    [    1.303317] omap_rng 48310000.rng: OMAP Random Number Generator ver. 20
    [    1.310206] [drm] Initialized
    [    1.327413] brd: module loaded
    [    1.337353] loop: module loaded
    [    1.343176] m25p80 spi1.0: mx25u12835f (16384 Kbytes)
    [    1.348482] 9 ofpart partitions found on MTD device spi1.0
    [    1.353995] Creating 9 MTD partitions on "spi1.0":
    [    1.358843] 0x000000000000-0x000000010000 : "spl"
    [    1.365003] 0x000000010000-0x000000090000 : "u-boot"
    [    1.371169] 0x000000090000-0x000000110000 : "u-boot1"
    [    1.377509] 0x000000110000-0x000000130000 : "u-boot-env1"
    [    1.384122] 0x000000130000-0x000000150000 : "u-boot-env2"
    [    1.390783] 0x000000150000-0x000000160000 : "key"
    [    1.396691] 0x000000160000-0x000000170000 : "oemkey"
    [    1.402840] 0x000000170000-0x000000970000 : "emmcimggz"
    [    1.409310] 0x000000900000-0x000001000000 : "empty"
    [    1.416133] libphy: Fixed MDIO Bus: probed
    [    1.435047] davinci_mdio 4a101000.mdio: GPIO lookup for consumer reset
    [    1.435059] davinci_mdio 4a101000.mdio: using device tree for GPIO lookup
    [    1.435082] of_get_named_gpiod_flags: parsed 'reset-gpios' property of node '/ocp/ethernet@4a100000/mdio@4a101000[0]' - status (0)
    [    1.494454] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
    [    1.500588] davinci_mdio 4a101000.mdio: detected phy mask fffffffe
    [    1.507830] libphy: 4a101000.mdio: probed
    [    1.511873] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver Micrel KSZ8081 or KSZ8091
    [    1.522324] cpsw 4a100000.ethernet: No slave[1] phy_id, phy-handle, or fixed-link property
    [    1.530749] cpsw 4a100000.ethernet: Detected MACID = 60:64:05:40:eb:33
    [    1.537535] cpsw 4a100000.ethernet: cpts: overflow check period 500 (jiffies)
    [    1.546572] mousedev: PS/2 mouse device common for all mice
    [    1.552726] i2c /dev entries driver
    [    1.558806] cpuidle: enable-method property 'ti,am3352' found operations
    [    1.566568] omap_hsmmc 48060000.mmc: GPIO lookup for consumer cd
    [    1.566578] omap_hsmmc 48060000.mmc: using device tree for GPIO lookup
    [    1.566589] of_get_named_gpiod_flags: can't parse 'cd-gpios' property of node '/ocp/mmc@48060000[0]'
    [    1.566596] of_get_named_gpiod_flags: can't parse 'cd-gpio' property of node '/ocp/mmc@48060000[0]'
    [    1.566603] omap_hsmmc 48060000.mmc: using lookup tables for GPIO lookup
    [    1.566610] omap_hsmmc 48060000.mmc: lookup for GPIO cd failed
    [    1.566620] omap_hsmmc 48060000.mmc: GPIO lookup for consumer wp
    [    1.566625] omap_hsmmc 48060000.mmc: using device tree for GPIO lookup
    [    1.566632] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@48060000[0]'
    [    1.566638] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@48060000[0]'
    [    1.566644] omap_hsmmc 48060000.mmc: using lookup tables for GPIO lookup
    [    1.566649] omap_hsmmc 48060000.mmc: lookup for GPIO wp failed
    [    1.617502] omap_hwmod: cpgmac0: _wait_target_disable failed
    [    1.624818] omap_hsmmc 47810000.mmc: GPIO lookup for consumer cd
    [    1.624830] omap_hsmmc 47810000.mmc: using device tree for GPIO lookup
    [    1.624842] of_get_named_gpiod_flags: can't parse 'cd-gpios' property of node '/ocp/mmc@47810000[0]'
    [    1.624851] of_get_named_gpiod_flags: can't parse 'cd-gpio' property of node '/ocp/mmc@47810000[0]'
    [    1.624859] omap_hsmmc 47810000.mmc: using lookup tables for GPIO lookup
    [    1.624869] omap_hsmmc 47810000.mmc: lookup for GPIO cd failed
    [    1.624880] omap_hsmmc 47810000.mmc: GPIO lookup for consumer wp
    [    1.624887] omap_hsmmc 47810000.mmc: using device tree for GPIO lookup
    [    1.624896] of_get_named_gpiod_flags: can't parse 'wp-gpios' property of node '/ocp/mmc@47810000[0]'
    [    1.624904] of_get_named_gpiod_flags: can't parse 'wp-gpio' property of node '/ocp/mmc@47810000[0]'
    [    1.624911] omap_hsmmc 47810000.mmc: using lookup tables for GPIO lookup
    [    1.624919] omap_hsmmc 47810000.mmc: lookup for GPIO wp failed
    [    1.680545] mmc0: new high speed MMC card at address 0001
    [    1.686813] mmcblk0: mmc0:0001 Q2J55L 7.09 GiB
    [    1.691722] mmcblk0boot0: mmc0:0001 Q2J55L partition 1 16.0 MiB
    [    1.698070] mmcblk0boot1: mmc0:0001 Q2J55L partition 2 16.0 MiB
    [    1.705725]  mmcblk0: p1 p2
    [    1.775115] ledtrig-cpu: registered to indicate activity on CPUs
    [    1.787297] NET: Registered protocol family 10
    [    1.792473] omap_hsmmc 47810000.mmc: card claims to support voltages below defined range
    [    1.801665] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    1.802708] NET: Registered protocol family 17
    [    1.803021] Key type dns_resolver registered
    [    1.803232] omap_voltage_late_init: Voltage driver support not added
    [    1.832918] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
    [    1.839901] ALSA device list:
    [    1.842897]   No soundcards found.
    [    1.847360] RAMDISK: gzip image found at block 0
    [    1.860189] random: fast init done
    [    1.876494] mmc1: new high speed SDIO card at address 0001
    [    5.842427] EXT4-fs (ram0): mounting ext2 file system using the ext4 subsystem
    [    5.851348] EXT4-fs (ram0): mounted filesystem without journal. Opts: (null)
    [    5.858750] VFS: Mounted root (ext2 filesystem) on device 1:0.
    [    5.865280] devtmpfs: mounted
    [    5.869812] Freeing unused kernel memory: 1024K
    [    5.915212] systemd[1]: System time before build time, advancing clock.
    [    5.944987] systemd[1]: systemd 230 running in system mode. (-PAM -AUDIT -SELINUX -IMA -APPARMOR -SMACK +SYSVINIT -UTMP -LIBCRYPTSETUP -GCRYPT +GNUTLS +ACL -XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN)
    [    5.963820] systemd[1]: Detected architecture arm.
    [    5.994862] systemd[1]: Set hostname to <xxx>.
    [    5.999868] systemd[1]: Initializing machine ID from random generator.
    [    6.184998] systemd[1]: Listening on Journal Socket (/dev/log).
    [    6.215291] systemd[1]: Listening on Network Service Netlink Socket.
    [    6.257106] systemd[1]: Created slice System Slice.
    [    6.284779] systemd[1]: Reached target Remote File Systems.
    [    6.315023] systemd[1]: Listening on Journal Socket.
    [    6.350230] systemd[1]: Mounting Configuration File System...
    [    6.673835] EXT4-fs (ram0): re-mounted. Opts: (null)
    [    7.625281] systemd-journald[124]: Received request to flush runtime journal from PID 1
    [   10.918989] omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
    [   11.488006] omap-sham 53100000.sham: hw accel on OMAP rev 4.3
    [   11.572723] remoteproc remoteproc0: wkup_m3 is available
    [   11.601881] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
    [   11.638103] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
    [   11.639332] omap-aes 53500000.aes: OMAP AES hw accel rev: 3.2
    [   11.640156] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
    [   11.642021] omap-aes 53500000.aes: will run requests pump with realtime priority
    [   11.645289] omap_hwmod: cpgmac0: _wait_target_disable failed
    [   11.683607] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
    [   11.715847] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: (null)
    [   11.952972] remoteproc remoteproc0: powering up wkup_m3
    [   12.000209] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 224244
    [   12.057275] wkup_m3_ipc 44e11324.wkup_m3_ipc: CM3 Firmware Version = 0x192
    [   12.111519] remoteproc remoteproc0: remote processor wkup_m3 is now up
    [   12.125522] EXT4-fs (mmcblk0p2): recovery complete
    [   12.126009] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)
    [   14.058362] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer reset
    [   14.058381] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup
    [   14.058396] of_get_named_gpiod_flags: can't parse 'reset-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
    [   14.058404] of_get_named_gpiod_flags: can't parse 'reset-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
    [   14.058411] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup
    [   14.058420] am335x-phy-driver 47401300.usb-phy: lookup for GPIO reset failed
    [   14.058428] am335x-phy-driver 47401300.usb-phy: GPIO lookup for consumer vbus-detect
    [   14.058434] am335x-phy-driver 47401300.usb-phy: using device tree for GPIO lookup
    [   14.058441] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpios' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
    [   14.058447] of_get_named_gpiod_flags: can't parse 'vbus-detect-gpio' property of node '/ocp/usb@47400000/usb-phy@47401300[0]'
    [   14.058453] am335x-phy-driver 47401300.usb-phy: using lookup tables for GPIO lookup
    [   14.058459] am335x-phy-driver 47401300.usb-phy: lookup for GPIO vbus-detect failed
    [   14.058532] 47401300.usb-phy supply vcc not found, using dummy regulator
    [   14.079046] usbcore: registered new interface driver usbfs
    [   14.079123] usbcore: registered new interface driver hub
    [   14.094736] usbcore: registered new device driver usb
    [   14.211222] musb-hdrc musb-hdrc.0: MUSB HDRC host driver
    [   14.261094] musb-hdrc musb-hdrc.0: new USB bus registered, assigned bus number 1
    [   14.308610] hub 1-0:1.0: USB hub found
    [   14.327770] hub 1-0:1.0: 1 port detected
    [   14.585818] wl18xx_driver wl18xx.0.auto: Direct firmware load for ti-connectivity/wl1271-nvs.bin failed with error -2
    [   15.062051] wlcore: wl18xx HW: 183x or 180x, PG 2.2 (ROM 0x11)
    [   15.111514] wlcore: loaded
    [   15.946607] wlcore: PHY firmware version: Rev 8.2.0.0.242
    [   16.088366] wlcore: firmware booted (Rev 8.9.0.0.78)
    [   16.136361] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
    [   16.218096] net eth0: initializing cpsw version 1.12 (0)
    [   16.254596] cpsw 4a100000.ethernet: initialized cpsw ale version 1.4
    [   16.261001] cpsw 4a100000.ethernet: ALE Table size 1024
    [   16.395170] Micrel KSZ8081 or KSZ8091 4a101000.mdio:00: attached PHY driver [Micrel KSZ8081 or KSZ8091] (mii_bus:phy_addr=4a101000.mdio:00, irq=-1)
    [   16.427922] libphy: PHY  not found
    [   16.431364] net eth0: phy "" not found on slave 1, err -19
    [   16.468911] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    [   18.485333] cpsw 4a100000.ethernet eth0: Link is Up - 10Mbps/Half - flow control off
    [   18.493186] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    [   19.418842] random: crng init done
    

  • Please provide your latest DTS file for review.

    You can also check your HW design of your ethernet PHY. Check if your PHY is properly power supplied and that is properly reset by the GPIO pin.

    Regards,
    Pavel
  • in your DTS:

        mymdio1_pins_default: mymdio1_pins_default {
            pinctrl-single,pins = <
                0x14c ( PIN_OUTPUT | MUX_MODE0 ) /* (M18) mdio_clk.mdio_clk */
                0x148 ( PIN_INPUT | MUX_MODE0 ) /* (M17) mdio_data.mdio_data */
                0x11c ( PIN_OUTPUT_PULLUP | MUX_MODE7 ) /* (J18) gmii1_txd3.gpio0[16] */
            >;
        };

    But according to datasheet: "Management Interface (MII) Data I/O. This pin has a weak pull-up, is opendrain, and requires an external 1.0 kΩ pull-up resistor."

    - Did you add an external pullup?
    - U-boot: what is your mux settings in mux.c
    - U-boot: do you use DM_ETH? (are your dts settings the same?)

    Regards.

  • Pavel Botev said:
    Please provide your latest DTS file for review.

    I dumped the device tree with the device tree compiler:

    output:

    /dts-v1/;
    
    / {
    	compatible = "ti,am33xx";
    	model = "xxx";
    	interrupt-parent = <0x1>;
    	#address-cells = <0x1>;
    	#size-cells = <0x1>;
    
    	fixedregulator@1 {
    		compatible = "regulator-fixed";
    		enable-active-high;
    		gpio = <0x39 0x5 0x0>;
    		phandle = <0x38>;
    		startup-delay-us = <0x11170>;
    		regulator-min-microvolt = <0x1b7740>;
    		regulator-max-microvolt = <0x1b7740>;
    		regulator-name = "wlan-1-en-regulator";
    		linux,phandle = <0x38>;
    	};
    
    	opp_table0 {
    		compatible = "operating-points-v2-ti-cpu";
    		ti,syscon-rev = <0x5 0x600>;
    		phandle = <0x2>;
    		linux,phandle = <0x2>;
    		ti,syscon-efuse = <0x5 0x7fc 0x1fff 0x0>;
    
    		opp100@500000000 {
    			opp-microvolt = <0x10c8e0 0x1072f0 0x111ed0>;
    			opp-hz = <0x0 0x1dcd6500>;
    			opp-supported-hw = <0x1 0xffff>;
    		};
    
    		oppturbo@720000000 {
    			opp-microvolt = <0x1339e0 0x12d770 0x139c50>;
    			opp-hz = <0x0 0x2aea5400>;
    			opp-supported-hw = <0x1 0xffff>;
    		};
    
    		opp100@600000000 {
    			opp-microvolt = <0x10c8e0 0x1072f0 0x111ed0>;
    			opp-hz = <0x0 0x23c34600>;
    			opp-supported-hw = <0x6 0x40>;
    		};
    
    		oppnitro@1000000000 {
    			opp-microvolt = <0x1437c8 0x13d044 0x149f4c>;
    			opp-hz = <0x0 0x3b9aca00>;
    			opp-supported-hw = <0x4 0x200>;
    		};
    
    		opp100@300000000 {
    			opp-microvolt = <0x10c8e0 0x1072f0 0x111ed0>;
    			opp-hz = <0x0 0x11e1a300>;
    			opp-suspend;
    			opp-supported-hw = <0x6 0x20>;
    		};
    
    		opp50@300000000 {
    			opp-microvolt = <0xe7ef0 0xe34b8 0xec928>;
    			opp-hz = <0x0 0x11e1a300>;
    			opp-suspend;
    			opp-supported-hw = <0x6 0x10>;
    		};
    
    		opp120@720000000 {
    			opp-microvolt = <0x124f80 0x11f1c0 0x12ad40>;
    			opp-hz = <0x0 0x2aea5400>;
    			opp-supported-hw = <0x6 0x80>;
    		};
    
    		opp120@600000000 {
    			opp-microvolt = <0x124f80 0x11f1c0 0x12ad40>;
    			opp-hz = <0x0 0x23c34600>;
    			opp-supported-hw = <0x1 0xffff>;
    		};
    
    		oppturbo@800000000 {
    			opp-microvolt = <0x1339e0 0x12d770 0x139c50>;
    			opp-hz = <0x0 0x2faf0800>;
    			opp-supported-hw = <0x6 0x100>;
    		};
    
    		opp100@275000000 {
    			opp-microvolt = <0x10c8e0 0x1072f0 0x111ed0>;
    			opp-hz = <0x0 0x10642ac0>;
    			opp-suspend;
    			opp-supported-hw = <0x1 0xff>;
    		};
    	};
    
    	soc {
    		compatible = "ti,omap-infra";
    
    		mpu {
    			compatible = "ti,omap3-mpu";
    			ti,hwmods = "mpu";
    			pm-sram = <0x6 0x7>;
    		};
    	};
    
    	ocp {
    		compatible = "simple-bus";
    		ti,hwmods = "l3_main";
    		ranges;
    		#address-cells = <0x1>;
    		#size-cells = <0x1>;
    
    		gpio@481ae000 {
    			compatible = "ti,omap4-gpio";
    			ti,hwmods = "gpio4";
    			gpio-controller;
    			#interrupt-cells = <0x2>;
    			interrupts = <0x3e>;
    			reg = <0x481ae000 0x1000>;
    			#gpio-cells = <0x2>;
    			interrupt-controller;
    		};
    
    		mmc@48060000 {
    			compatible = "ti,omap4-hsmmc";
    			ti,hwmods = "mmc1";
    			ti,non-removable;
    			status = "okay";
    			interrupt-parent = <0x1>;
    			ti,dual-volt;
    			interrupts = <0x40>;
    			bus-width = <0x8>;
    			ti,needs-special-reset;
    			dma-names = "tx", "rx";
    			reg = <0x48060000 0x1000>;
    			pinctrl-0 = <0x34>;
    			dmas = <0x33 0x18 0x0 0x0 0x33 0x19 0x0 0x0>;
    			vmmc-supply = <0x35>;
    			pinctrl-names = "default";
    			ti,needs-special-hs-handling;
    		};
    
    		pruss_soc_bus@4a326000 {
    			compatible = "ti,am3356-pruss-soc-bus";
    			ti,hwmods = "pruss";
    			ranges;
    			status = "disabled";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			reg = <0x4a326000 0x2000>;
    
    			pruss@4a300000 {
    				compatible = "ti,am3356-pruss";
    				reg-names = "dram0", "dram1", "shrdram2", "cfg", "iep", "mii_rt";
    				ranges;
    				status = "disabled";
    				#address-cells = <0x1>;
    				#size-cells = <0x1>;
    				reg = <0x4a300000 0x2000 0x4a302000 0x2000 0x4a310000 0x3000 0x4a326000 0x2000 0x4a32e000 0x31c 0x4a332000 0x58>;
    
    				pru@4a338000 {
    					compatible = "ti,am3356-pru";
    					reg-names = "iram", "control", "debug";
    					status = "disabled";
    					interrupt-parent = <0x4a>;
    					interrupts = <0x12 0x13>;
    					label = "pru1";
    					reg = <0x4a338000 0x2000 0x4a324000 0x400 0x4a324400 0x100>;
    					interrupt-names = "vring", "kick";
    				};
    
    				mdio@4a332400 {
    					compatible = "ti,davinci_mdio";
    					clocks = <0x12>;
    					clock-names = "fck";
    					status = "disabled";
    					#address-cells = <0x1>;
    					#size-cells = <0x0>;
    					reg = <0x4a332400 0x90>;
    					bus_freq = <0xf4240>;
    				};
    
    				pru@4a334000 {
    					compatible = "ti,am3356-pru";
    					reg-names = "iram", "control", "debug";
    					status = "disabled";
    					interrupt-parent = <0x4a>;
    					interrupts = <0x10 0x11>;
    					label = "pru0";
    					reg = <0x4a334000 0x2000 0x4a322000 0x400 0x4a322400 0x100>;
    					interrupt-names = "vring", "kick";
    				};
    
    				intc@4a320000 {
    					compatible = "ti,am3356-pruss-intc";
    					reg-names = "intc";
    					#interrupt-cells = <0x1>;
    					interrupts = <0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b>;
    					phandle = <0x4a>;
    					reg = <0x4a320000 0x2000>;
    					linux,phandle = <0x4a>;
    					interrupt-names = "host2", "host3", "host4", "host5", "host6", "host7", "host8", "host9";
    					interrupt-controller;
    				};
    			};
    		};
    
    		tscadc@44e0d000 {
    			compatible = "ti,am3359-tscadc";
    			ti,hwmods = "adc_tsc";
    			status = "disabled";
    			interrupt-parent = <0x1>;
    			interrupts = <0x10>;
    			dma-names = "fifo0", "fifo1";
    			reg = <0x44e0d000 0x1000>;
    			dmas = <0x2c 0x35 0x0 0x2c 0x39 0x0>;
    
    			adc {
    				compatible = "ti,am3359-adc";
    				#io-channel-cells = <0x1>;
    			};
    
    			tsc {
    				compatible = "ti,am3359-tsc";
    			};
    		};
    
    		gpio@44e07000 {
    			compatible = "ti,omap4-gpio";
    			ti,hwmods = "gpio1";
    			gpio-controller;
    			#interrupt-cells = <0x2>;
    			interrupts = <0x60>;
    			phandle = <0x48>;
    			reg = <0x44e07000 0x1000>;
    			#gpio-cells = <0x2>;
    			linux,phandle = <0x48>;
    			interrupt-controller;
    		};
    
    		serial@481a6000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart4";
    			status = "disabled";
    			interrupts = <0x2c>;
    			reg = <0x481a6000 0x2000>;
    			clock-frequency = <0x2dc6c00>;
    		};
    
    		sgx@56000000 {
    			compatible = "ti,am3352-sgx530", "img,sgx530";
    			clocks = <0x4b>;
    			ti,hwmods = "gfx";
    			clock-names = "fclk";
    			status = "disabled";
    			interrupts = <0x25>;
    			reg = <0x56000000 0x10000>;
    		};
    
    		rng@48310000 {
    			compatible = "ti,omap4-rng";
    			ti,hwmods = "rng";
    			interrupts = <0x6f>;
    			reg = <0x48310000 0x2000>;
    		};
    
    		mmc@481d8000 {
    			compatible = "ti,omap4-hsmmc";
    			ti,hwmods = "mmc2";
    			status = "disabled";
    			interrupt-parent = <0x1>;
    			interrupts = <0x1c>;
    			ti,needs-special-reset;
    			dma-names = "tx", "rx";
    			reg = <0x481d8000 0x1000>;
    			dmas = <0x2c 0x2 0x0 0x2c 0x3 0x0>;
    		};
    
    		usb@47400000 {
    			compatible = "ti,am33xx-usb";
    			ti,hwmods = "usb_otg_hs";
    			ranges;
    			status = "okay";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			reg = <0x47400000 0x1000>;
    
    			control@44e10620 {
    				compatible = "ti,am335x-usb-ctrl-module";
    				reg-names = "phy_ctrl", "wakeup";
    				status = "okay";
    				phandle = <0x3d>;
    				reg = <0x44e10620 0x10 0x44e10648 0x4>;
    				linux,phandle = <0x3d>;
    			};
    
    			usb@47401800 {
    				mentor,num-eps = <0x10>;
    				mentor,power = <0x1f4>;
    				compatible = "ti,musb-am33xx";
    				reg-names = "mc", "control";
    				status = "disabled";
    				mentor,multipoint = <0x1>;
    				interrupts = <0x13>;
    				dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15";
    				mentor,ram-bits = <0xc>;
    				phys = <0x40>;
    				reg = <0x47401c00 0x400 0x47401800 0x200>;
    				dmas = <0x3f 0xf 0x0 0x3f 0x10 0x0 0x3f 0x11 0x0 0x3f 0x12 0x0 0x3f 0x13 0x0 0x3f 0x14 0x0 0x3f 0x15 0x0 0x3f 0x16 0x0 0x3f 0x17 0x0 0x3f 0x18 0x0 0x3f 0x19 0x0 0x3f 0x1a 0x0 0x3f 0x1b 0x0 0x3f 0x1c 0x0 0x3f 0x1d 0x0 0x3f 0xf 0x1 0x3f 0x10 0x1 0x3f 0x11 0x1 0x3f 0x12 0x1 0x3f 0x13 0x1 0x3f 0x14 0x1 0x3f 0x15 0x1 0x3f 0x16 0x1 0x3f 0x17 0x1 0x3f 0x18 0x1 0x3f 0x19 0x1 0x3f 0x1a 0x1 0x3f 0x1b 0x1 0x3f 0x1c 0x1 0x3f 0x1d 0x1>;
    				dr_mode = "otg";
    				interrupt-names = "mc";
    			};
    
    			dma-controller@47402000 {
    				#dma-cells = <0x2>;
    				compatible = "ti,am3359-cppi41";
    				reg-names = "glue", "controller", "scheduler", "queuemgr";
    				#dma-requests = <0x100>;
    				status = "okay";
    				interrupts = <0x11>;
    				phandle = <0x3f>;
    				reg = <0x47400000 0x1000 0x47402000 0x1000 0x47403000 0x1000 0x47404000 0x4000>;
    				linux,phandle = <0x3f>;
    				#dma-channels = <0x1e>;
    				interrupt-names = "glue";
    			};
    
    			usb-phy@47401300 {
    				compatible = "ti,am335x-usb-phy";
    				reg-names = "phy";
    				status = "okay";
    				phandle = <0x3e>;
    				reg = <0x47401300 0x100>;
    				ti,ctrl_mod = <0x3d>;
    				linux,phandle = <0x3e>;
    			};
    
    			usb@47401000 {
    				mentor,num-eps = <0x10>;
    				mentor,power = <0x1f4>;
    				compatible = "ti,musb-am33xx";
    				reg-names = "mc", "control";
    				status = "okay";
    				mentor,multipoint = <0x1>;
    				interrupts = <0x12>;
    				dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15";
    				mentor,ram-bits = <0xc>;
    				phys = <0x3e>;
    				reg = <0x47401400 0x400 0x47401000 0x200>;
    				dmas = <0x3f 0x0 0x0 0x3f 0x1 0x0 0x3f 0x2 0x0 0x3f 0x3 0x0 0x3f 0x4 0x0 0x3f 0x5 0x0 0x3f 0x6 0x0 0x3f 0x7 0x0 0x3f 0x8 0x0 0x3f 0x9 0x0 0x3f 0xa 0x0 0x3f 0xb 0x0 0x3f 0xc 0x0 0x3f 0xd 0x0 0x3f 0xe 0x0 0x3f 0x0 0x1 0x3f 0x1 0x1 0x3f 0x2 0x1 0x3f 0x3 0x1 0x3f 0x4 0x1 0x3f 0x5 0x1 0x3f 0x6 0x1 0x3f 0x7 0x1 0x3f 0x8 0x1 0x3f 0x9 0x1 0x3f 0xa 0x1 0x3f 0xb 0x1 0x3f 0xc 0x1 0x3f 0xd 0x1 0x3f 0xe 0x1>;
    				dr_mode = "host";
    				interrupt-names = "mc";
    			};
    
    			usb-phy@47401b00 {
    				compatible = "ti,am335x-usb-phy";
    				reg-names = "phy";
    				status = "disabled";
    				phandle = <0x40>;
    				reg = <0x47401b00 0x100>;
    				ti,ctrl_mod = <0x3d>;
    				linux,phandle = <0x40>;
    			};
    		};
    
    		gpio@4804c000 {
    			compatible = "ti,omap4-gpio";
    			ti,hwmods = "gpio2";
    			gpio-controller;
    			#interrupt-cells = <0x2>;
    			interrupts = <0x62>;
    			phandle = <0x39>;
    			reg = <0x4804c000 0x1000>;
    			#gpio-cells = <0x2>;
    			linux,phandle = <0x39>;
    			interrupt-controller;
    		};
    
    		timer@48046000 {
    			compatible = "ti,am335x-timer";
    			ti,timer-pwm;
    			ti,hwmods = "timer5";
    			interrupts = <0x5d>;
    			reg = <0x48046000 0x400>;
    		};
    
    		spinlock@480ca000 {
    			compatible = "ti,omap4-hwspinlock";
    			#hwlock-cells = <0x1>;
    			ti,hwmods = "spinlock";
    			reg = <0x480ca000 0x1000>;
    		};
    
    		gpmc@50000000 {
    			compatible = "ti,am3352-gpmc";
    			ti,hwmods = "gpmc";
    			gpio-controller;
    			gpmc,num-waitpins = <0x2>;
    			ti,no-idle-on-init;
    			status = "disabled";
    			#interrupt-cells = <0x2>;
    			#address-cells = <0x2>;
    			interrupts = <0x64>;
    			gpmc,num-cs = <0x7>;
    			#size-cells = <0x1>;
    			dma-names = "rxtx";
    			reg = <0x50000000 0x2000>;
    			#gpio-cells = <0x2>;
    			dmas = <0x2c 0x34 0x0>;
    			interrupt-controller;
    		};
    
    		aes@53500000 {
    			compatible = "ti,omap4-aes";
    			ti,hwmods = "aes";
    			interrupts = <0x67>;
    			dma-names = "tx", "rx";
    			reg = <0x53500000 0xa0>;
    			dmas = <0x2c 0x6 0x0 0x2c 0x5 0x0>;
    		};
    
    		epwmss@48304000 {
    			compatible = "ti,am33xx-pwmss";
    			ti,hwmods = "epwmss2";
    			ranges = <0x48304100 0x48304100 0x80 0x48304180 0x48304180 0x80 0x48304200 0x48304200 0x80>;
    			status = "disabled";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			reg = <0x48304000 0x10>;
    
    			ecap@48304100 {
    				compatible = "ti,am3352-ecap", "ti,am33xx-ecap";
    				clocks = <0x28>;
    				clock-names = "fck";
    				status = "disabled";
    				interrupts = <0x3d>;
    				reg = <0x48304100 0x80>;
    				interrupt-names = "ecap2";
    				#pwm-cells = <0x3>;
    			};
    
    			pwm@48304200 {
    				compatible = "ti,am3352-ehrpwm", "ti,am33xx-ehrpwm";
    				clocks = <0x43 0x28>;
    				clock-names = "tbclk", "fck";
    				status = "disabled";
    				reg = <0x48304200 0x80>;
    				#pwm-cells = <0x3>;
    			};
    		};
    
    		mmc@47810000 {
    			compatible = "ti,omap4-hsmmc";
    			ti,hwmods = "mmc3";
    			keep-power-in-suspend;
    			ti,non-removable;
    			status = "okay";
    			interrupt-parent = <0x1>;
    			#address-cells = <0x1>;
    			interrupts = <0x1d>;
    			bus-width = <0x4>;
    			ti,needs-special-reset;
    			#size-cells = <0x0>;
    			dma-names = "tx", "rx";
    			reg = <0x47810000 0x1000>;
    			pinctrl-0 = <0x36 0x37>;
    			dmas = <0x33 0xc 0x0 0x1 0x33 0xd 0x0 0x2>;
    			vmmc-supply = <0x38>;
    			pinctrl-names = "default";
    			cap-power-off-card;
    			ti,needs-special-hs-handling;
    
    			wlcore@2 {
    				compatible = "ti,wl1831";
    				interrupt-parent = <0x39>;
    				interrupts = <0x6 0x4>;
    				reg = <0x2>;
    			};
    		};
    
    		timer@48040000 {
    			compatible = "ti,am335x-timer";
    			ti,hwmods = "timer2";
    			status = "disabled";
    			interrupts = <0x44>;
    			reg = <0x48040000 0x400>;
    		};
    
    		emif@4c000000 {
    			compatible = "ti,emif-am3352";
    			sram = <0x6 0x7>;
    			reg = <0x4c000000 0x1000>;
    		};
    
    		can@481cc000 {
    			compatible = "ti,am3352-d_can";
    			clocks = <0x3a>;
    			ti,hwmods = "d_can0";
    			syscon-raminit = <0x5 0x644 0x0>;
    			clock-names = "fck";
    			status = "disabled";
    			interrupts = <0x34>;
    			reg = <0x481cc000 0x2000>;
    		};
    
    		ethernet@4a100000 {
    			compatible = "ti,am335x-cpsw", "ti,cpsw";
    			clocks = <0x44 0x45>;
    			ale_entries = <0x400>;
    			ti,hwmods = "cpgmac0";
    			clock-names = "fck", "cpts";
    			ranges;
    			active_slave = <0x0>;
    			bd_ram_size = <0x2000>;
    			status = "okay";
    			interrupt-parent = <0x1>;
    			#address-cells = <0x1>;
    			interrupts = <0x28 0x29 0x2a 0x2b>;
    			#size-cells = <0x1>;
    			cpts_clock_mult = <0x80000000>;
    			reg = <0x4a100000 0x800 0x4a101200 0x100>;
    			pinctrl-0 = <0x46>;
    			slaves = <0x2>;
    			syscon = <0x5>;
    			cpts_clock_shift = <0x1d>;
    			cpdma_channels = <0x8>;
    			mac_control = <0x20>;
    			pinctrl-names = "default";
    
    			slave@4a100200 {
    				mac-address = [60 64 05 40 eb 33];
    				local-mac-address = [60 64 05 40 eb 33];
    				phy-mode = "rmii";
    				phy_id = <0x49 0x0>;
    			};
    
    			mdio@4a101000 {
    				compatible = "ti,cpsw-mdio", "ti,davinci_mdio";
    				ti,hwmods = "davinci_mdio";
    				status = "okay";
    				#address-cells = <0x1>;
    				pintctrl-0 = <0x47>;
    				reset-gpios = <0x48 0x10 0x1>;
    				#size-cells = <0x0>;
    				phandle = <0x49>;
    				reg = <0x4a101000 0x100>;
    				bus_freq = <0xf4240>;
    				linux,phandle = <0x49>;
    				pinctrl-names = "default";
    			};
    
    			slave@4a100300 {
    				mac-address = [60 64 05 40 eb 35];
    				local-mac-address = [60 64 05 40 eb 35];
    			};
    
    			cpsw-phy-sel@44e10650 {
    				compatible = "ti,am3352-cpsw-phy-sel";
    				reg-names = "gmii-sel";
    				rmii-clock-ext;
    				reg = <0x44e10650 0x4>;
    			};
    		};
    
    		spi@481a0000 {
    			compatible = "ti,omap4-mcspi";
    			ti,hwmods = "spi1";
    			status = "disabled";
    			#address-cells = <0x1>;
    			interrupts = <0x7d>;
    			#size-cells = <0x0>;
    			dma-names = "tx0", "rx0", "tx1", "rx1";
    			reg = <0x481a0000 0x400>;
    			dmas = <0x2c 0x2a 0x0 0x2c 0x2b 0x0 0x2c 0x2c 0x0 0x2c 0x2d 0x0>;
    			ti,spi-num-cs = <0x2>;
    		};
    
    		rtc@44e3e000 {
    			compatible = "ti,am3352-rtc", "ti,da830-rtc";
    			clocks = <0x15>;
    			ti,hwmods = "rtc";
    			clock-names = "int-clk";
    			status = "disabled";
    			interrupts = <0x4b 0x4c>;
    			reg = <0x44e3e000 0x1000>;
    		};
    
    		sham@53100000 {
    			compatible = "ti,omap4-sham";
    			ti,hwmods = "sham";
    			interrupts = <0x6d>;
    			dma-names = "rx";
    			reg = <0x53100000 0x200>;
    			dmas = <0x2c 0x24 0x0>;
    		};
    
    		serial@48022000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart2";
    			status = "okay";
    			interrupts = <0x49>;
    			dma-names = "tx", "rx";
    			reg = <0x48022000 0x2000>;
    			clock-frequency = <0x2dc6c00>;
    			pinctrl-0 = <0x31>;
    			dmas = <0x2c 0x1c 0x0 0x2c 0x1d 0x0>;
    			pinctrl-names = "default";
    		};
    
    		serial@481a8000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart5";
    			status = "disabled";
    			interrupts = <0x2d>;
    			reg = <0x481a8000 0x2000>;
    			clock-frequency = <0x2dc6c00>;
    		};
    
    		tptc@49900000 {
    			compatible = "ti,edma3-tptc";
    			ti,hwmods = "tptc1";
    			interrupts = <0x71>;
    			phandle = <0x2e>;
    			reg = <0x49900000 0x100000>;
    			linux,phandle = <0x2e>;
    			interrupt-names = "edma3_tcerrint";
    		};
    
    		timer@48048000 {
    			compatible = "ti,am335x-timer";
    			ti,timer-pwm;
    			ti,hwmods = "timer6";
    			interrupts = <0x5e>;
    			reg = <0x48048000 0x400>;
    		};
    
    		spi@48030000 {
    			compatible = "ti,omap4-mcspi";
    			ti,hwmods = "spi0";
    			status = "okay";
    			#address-cells = <0x1>;
    			interrupts = <0x41>;
    			#size-cells = <0x0>;
    			dma-names = "tx0", "rx0", "tx1", "rx1";
    			reg = <0x48030000 0x400>;
    			pinctrl-0 = <0x3c>;
    			dmas = <0x2c 0x10 0x0 0x2c 0x11 0x0 0x2c 0x12 0x0 0x2c 0x13 0x0>;
    			ti,spi-num-cs = <0x2>;
    			pinctrl-names = "default";
    
    			mx25u12835f@0 {
    				compatible = "macronix,mx25u12835f", "jedec,spi-nor";
    				#address-cells = <0x1>;
    				#size-cells = <0x1>;
    				reg = <0x0>;
    				spi-max-frequency = <0x3ef1480>;
    
    				partitions {
    					compatible = "fixed-partitions";
    					#address-cells = <0x1>;
    					#size-cells = <0x1>;
    
    					key@150000 {
    						reg = <0x150000 0x10000>;
    					};
    
    					u-boot-env1@110000 {
    						reg = <0x110000 0x20000>;
    					};
    
    					empty@970000 {
    						reg = <0x900000 0x700000>;
    					};
    
    					u-boot1@90000 {
    						reg = <0x90000 0x80000>;
    					};
    
    					u-boot-env2@130000 {
    						reg = <0x130000 0x20000>;
    					};
    
    					oemkey@160000 {
    						reg = <0x160000 0x10000>;
    					};
    
    					spl@0 {
    						reg = <0x0 0x10000>;
    					};
    
    					emmcimggz@170000 {
    						reg = <0x170000 0x800000>;
    					};
    
    					u-boot@10000 {
    						reg = <0x10000 0x80000>;
    					};
    				};
    			};
    		};
    
    		timer@48042000 {
    			compatible = "ti,am335x-timer";
    			ti,hwmods = "timer3";
    			interrupts = <0x45>;
    			reg = <0x48042000 0x400>;
    		};
    
    		mcasp@4803C000 {
    			compatible = "ti,am33xx-mcasp-audio";
    			reg-names = "mpu", "dat";
    			ti,hwmods = "mcasp1";
    			status = "disabled";
    			interrupts = <0x52 0x53>;
    			dma-names = "tx", "rx";
    			reg = <0x4803c000 0x2000 0x46400000 0x400000>;
    			dmas = <0x2c 0xa 0x2 0x2c 0xb 0x2>;
    			interrupt-names = "tx", "rx";
    		};
    
    		epwmss@48300000 {
    			compatible = "ti,am33xx-pwmss";
    			ti,hwmods = "epwmss0";
    			ranges = <0x48300100 0x48300100 0x80 0x48300180 0x48300180 0x80 0x48300200 0x48300200 0x80>;
    			status = "disabled";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			reg = <0x48300000 0x10>;
    
    			ecap@48300100 {
    				compatible = "ti,am3352-ecap", "ti,am33xx-ecap";
    				clocks = <0x28>;
    				clock-names = "fck";
    				status = "disabled";
    				interrupts = <0x1f>;
    				reg = <0x48300100 0x80>;
    				interrupt-names = "ecap0";
    				#pwm-cells = <0x3>;
    			};
    
    			pwm@48300200 {
    				compatible = "ti,am3352-ehrpwm", "ti,am33xx-ehrpwm";
    				clocks = <0x41 0x28>;
    				clock-names = "tbclk", "fck";
    				status = "disabled";
    				reg = <0x48300200 0x80>;
    				#pwm-cells = <0x3>;
    			};
    		};
    
    		mcasp@48038000 {
    			compatible = "ti,am33xx-mcasp-audio";
    			reg-names = "mpu", "dat";
    			ti,hwmods = "mcasp0";
    			status = "disabled";
    			interrupts = <0x50 0x51>;
    			dma-names = "tx", "rx";
    			reg = <0x48038000 0x2000 0x46000000 0x400000>;
    			dmas = <0x2c 0x8 0x2 0x2c 0x9 0x2>;
    			interrupt-names = "tx", "rx";
    		};
    
    		tptc@49800000 {
    			compatible = "ti,edma3-tptc";
    			ti,hwmods = "tptc0";
    			interrupts = <0x70>;
    			phandle = <0x2d>;
    			reg = <0x49800000 0x100000>;
    			linux,phandle = <0x2d>;
    			interrupt-names = "edma3_tcerrint";
    		};
    
    		lcdc@4830e000 {
    			compatible = "ti,am33xx-tilcdc";
    			ti,hwmods = "lcdc";
    			status = "disabled";
    			interrupt-parent = <0x1>;
    			interrupts = <0x24>;
    			reg = <0x4830e000 0x1000>;
    		};
    
    		wdt@44e35000 {
    			compatible = "ti,omap3-wdt";
    			ti,hwmods = "wd_timer2";
    			interrupts = <0x5b>;
    			reg = <0x44e35000 0x1000>;
    		};
    
    		serial@481aa000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart6";
    			status = "disabled";
    			interrupts = <0x2e>;
    			reg = <0x481aa000 0x2000>;
    			clock-frequency = <0x2dc6c00>;
    		};
    
    		elm@48080000 {
    			compatible = "ti,am3352-elm";
    			ti,hwmods = "elm";
    			status = "disabled";
    			interrupts = <0x4>;
    			reg = <0x48080000 0x2000>;
    		};
    
    		serial@44e09000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart1";
    			status = "okay";
    			interrupts = <0x48>;
    			dma-names = "tx", "rx";
    			reg = <0x44e09000 0x2000>;
    			clock-frequency = <0x2dc6c00>;
    			pinctrl-0 = <0x30>;
    			dmas = <0x2c 0x1a 0x0 0x2c 0x1b 0x0>;
    			pinctrl-names = "default";
    		};
    
    		can@481d0000 {
    			compatible = "ti,am3352-d_can";
    			clocks = <0x3b>;
    			ti,hwmods = "d_can1";
    			syscon-raminit = <0x5 0x644 0x1>;
    			clock-names = "fck";
    			status = "disabled";
    			interrupts = <0x37>;
    			reg = <0x481d0000 0x2000>;
    		};
    
    		i2c@4819c000 {
    			compatible = "ti,omap4-i2c";
    			ti,hwmods = "i2c3";
    			status = "disabled";
    			#address-cells = <0x1>;
    			interrupts = <0x1e>;
    			#size-cells = <0x0>;
    			reg = <0x4819c000 0x1000>;
    		};
    
    		serial@48024000 {
    			compatible = "ti,am3352-uart", "ti,omap3-uart";
    			ti,hwmods = "uart3";
    			status = "disabled";
    			interrupts = <0x4a>;
    			dma-names = "tx", "rx";
    			reg = <0x48024000 0x2000>;
    			clock-frequency = <0x2dc6c00>;
    			dmas = <0x2c 0x1e 0x0 0x2c 0x1f 0x0>;
    		};
    
    		interrupt-controller@48200000 {
    			compatible = "ti,am33xx-intc";
    			#interrupt-cells = <0x1>;
    			phandle = <0x1>;
    			reg = <0x48200000 0x1000>;
    			linux,phandle = <0x1>;
    			interrupt-controller;
    		};
    
    		i2c@4802a000 {
    			compatible = "ti,omap4-i2c";
    			ti,hwmods = "i2c2";
    			status = "disabled";
    			#address-cells = <0x1>;
    			interrupts = <0x47>;
    			#size-cells = <0x0>;
    			reg = <0x4802a000 0x1000>;
    		};
    
    		gpio@481ac000 {
    			compatible = "ti,omap4-gpio";
    			ti,hwmods = "gpio3";
    			gpio-controller;
    			#interrupt-cells = <0x2>;
    			interrupts = <0x20>;
    			reg = <0x481ac000 0x1000>;
    			#gpio-cells = <0x2>;
    			interrupt-controller;
    		};
    
    		timer@4804a000 {
    			compatible = "ti,am335x-timer";
    			ti,timer-pwm;
    			ti,hwmods = "timer7";
    			interrupts = <0x5f>;
    			reg = <0x4804a000 0x400>;
    		};
    
    		timer@44e31000 {
    			compatible = "ti,am335x-timer-1ms";
    			ti,hwmods = "timer1";
    			ti,timer-alwon;
    			status = "disabled";
    			interrupts = <0x43>;
    			reg = <0x44e31000 0x400>;
    		};
    
    		timer@48044000 {
    			compatible = "ti,am335x-timer";
    			ti,timer-pwm;
    			ti,hwmods = "timer4";
    			interrupts = <0x5c>;
    			reg = <0x48044000 0x400>;
    		};
    
    		edma@49000000 {
    			#dma-cells = <0x2>;
    			compatible = "ti,edma3-tpcc";
    			dma-requests = <0x40>;
    			reg-names = "edma3_cc";
    			ti,hwmods = "tpcc";
    			ti,tptcs = <0x2d 0x7 0x2e 0x5 0x2f 0x0>;
    			interrupts = <0xc 0xd 0xe>;
    			phandle = <0x2c>;
    			reg = <0x49000000 0x10000>;
    			linux,phandle = <0x2c>;
    			interrupt-names = "edma3_ccint", "edma3_mperr", "edma3_ccerrint";
    			ti,edma-memcpy-channels = <0x14 0x15>;
    		};
    
    		mailbox@480C8000 {
    			compatible = "ti,omap4-mailbox";
    			ti,hwmods = "mailbox";
    			ti,mbox-num-users = <0x4>;
    			ti,mbox-num-fifos = <0x8>;
    			#mbox-cells = <0x1>;
    			interrupts = <0x4d>;
    			phandle = <0x2a>;
    			reg = <0x480c8000 0x200>;
    			linux,phandle = <0x2a>;
    
    			mbox_pru1 {
    				ti,mbox-tx = <0x4 0x0 0x0>;
    				ti,mbox-rx = <0x5 0x0 0x0>;
    			};
    
    			mbox_pru0 {
    				ti,mbox-tx = <0x2 0x0 0x0>;
    				ti,mbox-rx = <0x3 0x0 0x0>;
    			};
    
    			wkup_m3 {
    				ti,mbox-send-noirq;
    				ti,mbox-tx = <0x0 0x0 0x0>;
    				ti,mbox-rx = <0x0 0x0 0x3>;
    				phandle = <0x2b>;
    				linux,phandle = <0x2b>;
    			};
    		};
    
    		epwmss@48302000 {
    			compatible = "ti,am33xx-pwmss";
    			ti,hwmods = "epwmss1";
    			ranges = <0x48302100 0x48302100 0x80 0x48302180 0x48302180 0x80 0x48302200 0x48302200 0x80>;
    			status = "disabled";
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			reg = <0x48302000 0x10>;
    
    			pwm@48302200 {
    				compatible = "ti,am3352-ehrpwm", "ti,am33xx-ehrpwm";
    				clocks = <0x42 0x28>;
    				clock-names = "tbclk", "fck";
    				status = "disabled";
    				reg = <0x48302200 0x80>;
    				#pwm-cells = <0x3>;
    			};
    
    			ecap@48302100 {
    				compatible = "ti,am3352-ecap", "ti,am33xx-ecap";
    				clocks = <0x28>;
    				clock-names = "fck";
    				status = "disabled";
    				interrupts = <0x2f>;
    				reg = <0x48302100 0x80>;
    				interrupt-names = "ecap1";
    				#pwm-cells = <0x3>;
    			};
    		};
    
    		ocmcram@40300000 {
    			compatible = "mmio-sram";
    			ranges = <0x0 0x40300000 0x10000>;
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    			reg = <0x40300000 0x10000>;
    
    			pm-sram-data@1000 {
    				compatible = "ti,sram";
    				phandle = <0x7>;
    				reg = <0x1000 0x1000>;
    				pool;
    				linux,phandle = <0x7>;
    			};
    
    			pm-sram-code@0 {
    				compatible = "ti,sram";
    				phandle = <0x6>;
    				reg = <0x0 0x1000>;
    				linux,phandle = <0x6>;
    				protect-exec;
    			};
    		};
    
    		l4_wkup@44c00000 {
    			compatible = "ti,am3-l4-wkup", "simple-bus";
    			ranges = <0x0 0x44c00000 0x280000>;
    			#address-cells = <0x1>;
    			#size-cells = <0x1>;
    
    			wkup_m3@100000 {
    				ti,pm-firmware = "am335x-pm-firmware.elf";
    				compatible = "ti,am3352-wkup-m3";
    				reg-names = "umem", "dmem";
    				ti,hwmods = "wkup_m3";
    				phandle = <0x29>;
    				reg = <0x100000 0x4000 0x180000 0x2000>;
    				linux,phandle = <0x29>;
    			};
    
    			scm@210000 {
    				compatible = "ti,am3-scm", "simple-bus";
    				#pinctrl-cells = <0x1>;
    				ranges = <0x0 0x210000 0x2000>;
    				#address-cells = <0x1>;
    				#size-cells = <0x1>;
    				reg = <0x210000 0x2000>;
    
    				scm_conf@0 {
    					compatible = "syscon", "simple-bus";
    					ranges = <0x0 0x0 0x800>;
    					#address-cells = <0x1>;
    					#size-cells = <0x1>;
    					phandle = <0x5>;
    					reg = <0x0 0x800>;
    					linux,phandle = <0x5>;
    
    					clocks {
    						#address-cells = <0x1>;
    						#size-cells = <0x0>;
    
    						sha0_fck {
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							#clock-cells = <0x0>;
    							clock-div = <0x1>;
    						};
    
    						dcan0_fck {
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							#clock-cells = <0x0>;
    							phandle = <0x3a>;
    							linux,phandle = <0x3a>;
    							clock-div = <0x1>;
    						};
    
    						mcasp0_fck {
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							#clock-cells = <0x0>;
    							clock-div = <0x1>;
    						};
    
    						ehrpwm1_tbclk@44e10664 {
    							compatible = "ti,gate-clock";
    							clocks = <0x28>;
    							#clock-cells = <0x0>;
    							phandle = <0x42>;
    							reg = <0x664>;
    							ti,bit-shift = <0x1>;
    							linux,phandle = <0x42>;
    						};
    
    						adc_tsc_fck {
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							#clock-cells = <0x0>;
    							clock-div = <0x1>;
    						};
    
    						dcan1_fck {
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							#clock-cells = <0x0>;
    							phandle = <0x3b>;
    							linux,phandle = <0x3b>;
    							clock-div = <0x1>;
    						};
    
    						mcasp1_fck {
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							#clock-cells = <0x0>;
    							clock-div = <0x1>;
    						};
    
    						sys_clkin_ck@40 {
    							compatible = "ti,mux-clock";
    							clocks = <0x24 0x25 0x26 0x27>;
    							#clock-cells = <0x0>;
    							phandle = <0x8>;
    							reg = <0x40>;
    							ti,bit-shift = <0x16>;
    							linux,phandle = <0x8>;
    						};
    
    						smartreflex0_fck {
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							#clock-cells = <0x0>;
    							clock-div = <0x1>;
    						};
    
    						ehrpwm0_tbclk@44e10664 {
    							compatible = "ti,gate-clock";
    							clocks = <0x28>;
    							#clock-cells = <0x0>;
    							phandle = <0x41>;
    							reg = <0x664>;
    							ti,bit-shift = <0x0>;
    							linux,phandle = <0x41>;
    						};
    
    						aes0_fck {
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							#clock-cells = <0x0>;
    							clock-div = <0x1>;
    						};
    
    						rng_fck {
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							#clock-cells = <0x0>;
    							clock-div = <0x1>;
    						};
    
    						smartreflex1_fck {
    							compatible = "fixed-factor-clock";
    							clocks = <0x8>;
    							clock-mult = <0x1>;
    							#clock-cells = <0x0>;
    							clock-div = <0x1>;
    						};
    
    						ehrpwm2_tbclk@44e10664 {
    							compatible = "ti,gate-clock";
    							clocks = <0x28>;
    							#clock-cells = <0x0>;
    							phandle = <0x43>;
    							reg = <0x664>;
    							ti,bit-shift = <0x2>;
    							linux,phandle = <0x43>;
    						};
    					};
    				};
    
    				pinmux@800 {
    					compatible = "pinctrl-single";
    					pinctrl-single,function-mask = <0x7f>;
    					pinctrl-single,register-width = <0x20>;
    					#pinctrl-cells = <0x1>;
    					#address-cells = <0x1>;
    					#size-cells = <0x0>;
    					reg = <0x800 0x238>;
    					pinctrl-names = "default";
    
    					myrtc1_pins_default {
    						pinctrl-single,pins = <0x1f8 0x28 0x200 0x8 0x1fc 0x28 0x204 0x28>;
    					};
    
    					mygpio4_pins_default {
    						pinctrl-single,pins = <0x0 0xf 0x4 0xf 0x8 0xf 0xc 0xf 0x50 0xf 0x54 0x17>;
    					};
    
    					mydebugss1_pins_default {
    						pinctrl-single,pins = <0x1d0 0x28 0x1d4 0x28 0x1d8 0x8 0x1dc 0x28 0x1e0 0x28 0x1e4 0x28 0x1e8 0x28>;
    						phandle = <0x4d>;
    						linux,phandle = <0x4d>;
    					};
    
    					wlan_disc_1_pins {
    						pinctrl-single,pins = <0x18 0x2f 0x14 0x7 0x10 0x7>;
    						phandle = <0x37>;
    						linux,phandle = <0x37>;
    					};
    
    					myuart1_pins_default {
    						pinctrl-single,pins = <0x180 0x28 0x184 0x8 0x178 0x28 0x17c 0x8>;
    						phandle = <0x31>;
    						linux,phandle = <0x31>;
    					};
    
    					myrmii1_pins_default {
    						pinctrl-single,pins = <0x10c 0x29 0x110 0x29 0x114 0x9 0x128 0x9 0x124 0x9 0x140 0x29 0x13c 0x29 0x144 0x28>;
    						phandle = <0x46>;
    						linux,phandle = <0x46>;
    					};
    
    					mymdio1_pins_default {
    						pinctrl-single,pins = <0x14c 0x8 0x148 0x28 0x11c 0x17>;
    						phandle = <0x47>;
    						linux,phandle = <0x47>;
    					};
    
    					myusb1_pins_default {
    						pinctrl-single,pins = <0x21c 0x8>;
    					};
    
    					myi2c1_pins_default {
    						pinctrl-single,pins = <0x18c 0x28 0x188 0x28>;
    						phandle = <0x32>;
    						linux,phandle = <0x32>;
    					};
    
    					myglue1_pins_default {
    						pinctrl-single,pins = <0x1b8 0x28 0x1c0 0x28>;
    					};
    
    					myuart2_pins_default {
    						pinctrl-single,pins = <0x170 0x28 0x174 0x8>;
    						phandle = <0x30>;
    						linux,phandle = <0x30>;
    					};
    
    					mygpio1_pins_default {
    						pinctrl-single,pins = <0x164 0x2f 0x120 0x2f 0x1b0 0xf 0x74 0x2f>;
    						phandle = <0x4c>;
    						linux,phandle = <0x4c>;
    					};
    
    					mymmc1_pins_default {
    						pinctrl-single,pins = <0x100 0x28 0x104 0x28 0xfc 0x28 0xf8 0x28 0xf4 0x28 0xf0 0x28 0x138 0x2b 0x134 0x2b 0x130 0x2b 0x12c 0x2b>;
    						phandle = <0x34>;
    						linux,phandle = <0x34>;
    					};
    
    					mygpio2_pins_default {
    						pinctrl-single,pins = <0x90 0x2f 0x94 0x2f 0x98 0x2f 0x9c 0x2f>;
    					};
    
    					myspi1_pins_default {
    						pinctrl-single,pins = <0x150 0x28 0x154 0x28 0x158 0x28 0x15c 0x28>;
    						phandle = <0x3c>;
    						linux,phandle = <0x3c>;
    					};
    
    					mymmc2_pins_default {
    						pinctrl-single,pins = <0x8c 0x2b 0x88 0x2b 0x44 0x2b 0x48 0x2b 0x4c 0x2b 0x78 0x2b>;
    						phandle = <0x36>;
    						linux,phandle = <0x36>;
    					};
    
    					mygpio3_pins_default {
    						pinctrl-single,pins = <0x190 0x2f 0x194 0x2f 0x1a0 0x2f 0x1ac 0x2f>;
    					};
    				};
    
    				dma-router@f90 {
    					#dma-cells = <0x3>;
    					compatible = "ti,am335x-edma-crossbar";
    					dma-requests = <0x20>;
    					dma-masters = <0x2c>;
    					phandle = <0x33>;
    					reg = <0xf90 0x40>;
    					linux,phandle = <0x33>;
    				};
    
    				wkup_m3_ipc@1324 {
    					compatible = "ti,am3352-wkup-m3-ipc";
    					ti,rproc = <0x29>;
    					interrupts = <0x4e>;
    					mboxes = <0x2a 0x2b>;
    					reg = <0x1324 0x24>;
    				};
    
    				clockdomains {
    				};
    			};
    
    			prcm@200000 {
    				compatible = "ti,am3-prcm";
    				reg = <0x200000 0x4000>;
    
    				clocks {
    					#address-cells = <0x1>;
    					#size-cells = <0x0>;
    
    					dpll_per_m2_div4_wkupdm_ck {
    						compatible = "fixed-factor-clock";
    						clocks = <0xf>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						clock-div = <0x4>;
    					};
    
    					dpll_core_m4_div2_ck {
    						compatible = "fixed-factor-clock";
    						clocks = <0x12>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						phandle = <0x19>;
    						linux,phandle = <0x19>;
    						clock-div = <0x2>;
    					};
    
    					trace_clk_div_ck@414 {
    						compatible = "ti,divider-clock";
    						clocks = <0x22>;
    						ti,max-div = <0x40>;
    						ti,index-power-of-two;
    						#clock-cells = <0x0>;
    						reg = <0x414>;
    						ti,bit-shift = <0x18>;
    					};
    
    					dpll_core_m5_ck@484 {
    						compatible = "ti,divider-clock";
    						clocks = <0xa>;
    						ti,max-div = <0x1f>;
    						ti,index-starts-at-one;
    						#clock-cells = <0x0>;
    						phandle = <0x1a>;
    						reg = <0x484>;
    						linux,phandle = <0x1a>;
    					};
    
    					tclkin_ck {
    						compatible = "fixed-clock";
    						#clock-cells = <0x0>;
    						phandle = <0x16>;
    						clock-frequency = <0xb71b00>;
    						linux,phandle = <0x16>;
    					};
    
    					stm_clk_div_ck@414 {
    						compatible = "ti,divider-clock";
    						clocks = <0x21>;
    						ti,max-div = <0x40>;
    						ti,index-power-of-two;
    						#clock-cells = <0x0>;
    						reg = <0x414>;
    						ti,bit-shift = <0x1b>;
    					};
    
    					pruss_ocp_gclk@530 {
    						compatible = "ti,mux-clock";
    						clocks = <0x13 0x14>;
    						#clock-cells = <0x0>;
    						reg = <0x530>;
    					};
    
    					dpll_ddr_m2_ck@4a0 {
    						compatible = "ti,divider-clock";
    						clocks = <0xb>;
    						ti,max-div = <0x1f>;
    						ti,index-starts-at-one;
    						#clock-cells = <0x0>;
    						phandle = <0xc>;
    						reg = <0x4a0>;
    						linux,phandle = <0xc>;
    					};
    
    					dpll_ddr_m2_div2_ck {
    						compatible = "fixed-factor-clock";
    						clocks = <0xc>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						clock-div = <0x2>;
    					};
    
    					dpll_mpu_ck@488 {
    						compatible = "ti,am3-dpll-clock";
    						clocks = <0x8 0x8>;
    						#clock-cells = <0x0>;
    						phandle = <0x3>;
    						reg = <0x488 0x420 0x42c>;
    						linux,phandle = <0x3>;
    					};
    
    					dpll_per_m2_ck@4ac {
    						compatible = "ti,divider-clock";
    						clocks = <0xe>;
    						ti,max-div = <0x1f>;
    						ti,index-starts-at-one;
    						#clock-cells = <0x0>;
    						phandle = <0xf>;
    						reg = <0x4ac>;
    						linux,phandle = <0xf>;
    					};
    
    					cefuse_fck@a20 {
    						compatible = "ti,gate-clock";
    						clocks = <0x8>;
    						#clock-cells = <0x0>;
    						reg = <0xa20>;
    						ti,bit-shift = <0x1>;
    					};
    
    					gfx_fclk_clksel_ck@52c {
    						compatible = "ti,mux-clock";
    						clocks = <0x12 0xf>;
    						#clock-cells = <0x0>;
    						phandle = <0x1c>;
    						reg = <0x52c>;
    						ti,bit-shift = <0x1>;
    						linux,phandle = <0x1c>;
    					};
    
    					lcd_gclk@534 {
    						compatible = "ti,mux-clock";
    						clocks = <0x14 0x1a 0xf>;
    						#clock-cells = <0x0>;
    						phandle = <0x1d>;
    						reg = <0x534>;
    						linux,phandle = <0x1d>;
    						ti,set-rate-parent;
    					};
    
    					clkout2_div_ck@700 {
    						compatible = "ti,divider-clock";
    						clocks = <0x1e>;
    						ti,max-div = <0x8>;
    						#clock-cells = <0x0>;
    						phandle = <0x23>;
    						reg = <0x700>;
    						ti,bit-shift = <0x3>;
    						linux,phandle = <0x23>;
    					};
    
    					l4ls_gclk {
    						compatible = "fixed-factor-clock";
    						clocks = <0x19>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						phandle = <0x28>;
    						linux,phandle = <0x28>;
    						clock-div = <0x1>;
    					};
    
    					dpll_mpu_m2_ck@4a8 {
    						compatible = "ti,divider-clock";
    						clocks = <0x3>;
    						ti,max-div = <0x1f>;
    						ti,index-starts-at-one;
    						#clock-cells = <0x0>;
    						reg = <0x4a8>;
    					};
    
    					virt_25000000_ck {
    						compatible = "fixed-clock";
    						#clock-cells = <0x0>;
    						phandle = <0x26>;
    						clock-frequency = <0x17d7840>;
    						linux,phandle = <0x26>;
    					};
    
    					gpio1_dbclk@ac {
    						compatible = "ti,gate-clock";
    						clocks = <0x15>;
    						#clock-cells = <0x0>;
    						reg = <0xac>;
    						ti,bit-shift = <0x12>;
    					};
    
    					dpll_per_m2_div4_ck {
    						compatible = "fixed-factor-clock";
    						clocks = <0xf>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						clock-div = <0x4>;
    					};
    
    					gpio2_dbclk@b0 {
    						compatible = "ti,gate-clock";
    						clocks = <0x15>;
    						#clock-cells = <0x0>;
    						reg = <0xb0>;
    						ti,bit-shift = <0x12>;
    					};
    
    					dpll_ddr_ck@494 {
    						compatible = "ti,am3-dpll-no-gate-clock";
    						clocks = <0x8 0x8>;
    						#clock-cells = <0x0>;
    						phandle = <0xb>;
    						reg = <0x494 0x434 0x440>;
    						linux,phandle = <0xb>;
    					};
    
    					stm_pmd_clock_mux_ck@414 {
    						compatible = "ti,mux-clock";
    						clocks = <0x1f 0x20>;
    						#clock-cells = <0x0>;
    						phandle = <0x21>;
    						reg = <0x414>;
    						ti,bit-shift = <0x16>;
    						linux,phandle = <0x21>;
    					};
    
    					dpll_core_m4_ck@480 {
    						compatible = "ti,divider-clock";
    						clocks = <0xa>;
    						ti,max-div = <0x1f>;
    						ti,index-starts-at-one;
    						#clock-cells = <0x0>;
    						phandle = <0x12>;
    						reg = <0x480>;
    						linux,phandle = <0x12>;
    					};
    
    					dpll_core_ck@490 {
    						compatible = "ti,am3-dpll-core-clock";
    						clocks = <0x8 0x8>;
    						#clock-cells = <0x0>;
    						phandle = <0x9>;
    						reg = <0x490 0x45c 0x468>;
    						linux,phandle = <0x9>;
    					};
    
    					gpio0_dbclk_mux_ck@53c {
    						compatible = "ti,mux-clock";
    						clocks = <0x17 0x18 0x15>;
    						#clock-cells = <0x0>;
    						phandle = <0x1b>;
    						reg = <0x53c>;
    						linux,phandle = <0x1b>;
    					};
    
    					gpio3_dbclk@b4 {
    						compatible = "ti,gate-clock";
    						clocks = <0x15>;
    						#clock-cells = <0x0>;
    						reg = <0xb4>;
    						ti,bit-shift = <0x12>;
    					};
    
    					usbotg_fck@47c {
    						compatible = "ti,gate-clock";
    						clocks = <0xe>;
    						#clock-cells = <0x0>;
    						reg = <0x47c>;
    						ti,bit-shift = <0x8>;
    					};
    
    					sysclk_div_ck {
    						compatible = "fixed-factor-clock";
    						clocks = <0x12>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						clock-div = <0x1>;
    					};
    
    					l3s_gclk {
    						compatible = "fixed-factor-clock";
    						clocks = <0x19>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						clock-div = <0x1>;
    					};
    
    					clkdiv32k_ick@14c {
    						compatible = "ti,gate-clock";
    						clocks = <0x11>;
    						#clock-cells = <0x0>;
    						phandle = <0x15>;
    						reg = <0x14c>;
    						ti,bit-shift = <0x1>;
    						linux,phandle = <0x15>;
    					};
    
    					gfx_fck_div_ck@52c {
    						compatible = "ti,divider-clock";
    						clocks = <0x1c>;
    						ti,max-div = <0x2>;
    						#clock-cells = <0x0>;
    						phandle = <0x4b>;
    						reg = <0x52c>;
    						linux,phandle = <0x4b>;
    					};
    
    					timer1_fck@528 {
    						compatible = "ti,mux-clock";
    						clocks = <0x8 0x15 0x16 0x17 0x18>;
    						#clock-cells = <0x0>;
    						reg = <0x528>;
    					};
    
    					dbg_sysclk_ck@414 {
    						compatible = "ti,gate-clock";
    						clocks = <0x8>;
    						#clock-cells = <0x0>;
    						phandle = <0x1f>;
    						reg = <0x414>;
    						ti,bit-shift = <0x13>;
    						linux,phandle = <0x1f>;
    					};
    
    					clkout2_ck@700 {
    						compatible = "ti,gate-clock";
    						clocks = <0x23>;
    						#clock-cells = <0x0>;
    						reg = <0x700>;
    						ti,bit-shift = <0x7>;
    					};
    
    					l4fw_gclk {
    						compatible = "fixed-factor-clock";
    						clocks = <0x19>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						clock-div = <0x1>;
    					};
    
    					l3_gclk {
    						compatible = "fixed-factor-clock";
    						clocks = <0x12>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						phandle = <0x13>;
    						linux,phandle = <0x13>;
    						clock-div = <0x1>;
    					};
    
    					cpsw_cpts_rft_clk@520 {
    						compatible = "ti,mux-clock";
    						clocks = <0x1a 0x12>;
    						#clock-cells = <0x0>;
    						phandle = <0x45>;
    						reg = <0x520>;
    						linux,phandle = <0x45>;
    					};
    
    					trace_pmd_clk_mux_ck@414 {
    						compatible = "ti,mux-clock";
    						clocks = <0x1f 0x20>;
    						#clock-cells = <0x0>;
    						phandle = <0x22>;
    						reg = <0x414>;
    						ti,bit-shift = <0x14>;
    						linux,phandle = <0x22>;
    					};
    
    					clk_24mhz {
    						compatible = "fixed-factor-clock";
    						clocks = <0xf>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						phandle = <0x10>;
    						linux,phandle = <0x10>;
    						clock-div = <0x8>;
    					};
    
    					timer7_fck@504 {
    						compatible = "ti,mux-clock";
    						clocks = <0x16 0x8 0x15>;
    						#clock-cells = <0x0>;
    						reg = <0x504>;
    					};
    
    					ieee5000_fck@e4 {
    						compatible = "ti,gate-clock";
    						clocks = <0x19>;
    						#clock-cells = <0x0>;
    						reg = <0xe4>;
    						ti,bit-shift = <0x1>;
    					};
    
    					virt_26000000_ck {
    						compatible = "fixed-clock";
    						#clock-cells = <0x0>;
    						phandle = <0x27>;
    						clock-frequency = <0x18cba80>;
    						linux,phandle = <0x27>;
    					};
    
    					sysclkout_pre_ck@700 {
    						compatible = "ti,mux-clock";
    						clocks = <0x18 0x13 0xc 0xf 0x1d>;
    						#clock-cells = <0x0>;
    						phandle = <0x1e>;
    						reg = <0x700>;
    						linux,phandle = <0x1e>;
    					};
    
    					mmu_fck@914 {
    						compatible = "ti,gate-clock";
    						clocks = <0x12>;
    						#clock-cells = <0x0>;
    						reg = <0x914>;
    						ti,bit-shift = <0x1>;
    					};
    
    					timer6_fck@51c {
    						compatible = "ti,mux-clock";
    						clocks = <0x16 0x8 0x15>;
    						#clock-cells = <0x0>;
    						reg = <0x51c>;
    					};
    
    					wdt1_fck@538 {
    						compatible = "ti,mux-clock";
    						clocks = <0x17 0x15>;
    						#clock-cells = <0x0>;
    						reg = <0x538>;
    					};
    
    					cpsw_125mhz_gclk {
    						compatible = "fixed-factor-clock";
    						clocks = <0x1a>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						phandle = <0x44>;
    						linux,phandle = <0x44>;
    						clock-div = <0x2>;
    					};
    
    					dpll_per_ck@48c {
    						compatible = "ti,am3-dpll-no-gate-j-type-clock";
    						clocks = <0x8 0x8>;
    						#clock-cells = <0x0>;
    						phandle = <0xe>;
    						reg = <0x48c 0x470 0x49c>;
    						linux,phandle = <0xe>;
    					};
    
    					dbg_clka_ck@414 {
    						compatible = "ti,gate-clock";
    						clocks = <0x12>;
    						#clock-cells = <0x0>;
    						phandle = <0x20>;
    						reg = <0x414>;
    						ti,bit-shift = <0x1e>;
    						linux,phandle = <0x20>;
    					};
    
    					dpll_disp_ck@498 {
    						compatible = "ti,am3-dpll-no-gate-clock";
    						clocks = <0x8 0x8>;
    						#clock-cells = <0x0>;
    						phandle = <0xd>;
    						reg = <0x498 0x448 0x454>;
    						linux,phandle = <0xd>;
    					};
    
    					virt_19200000_ck {
    						compatible = "fixed-clock";
    						#clock-cells = <0x0>;
    						phandle = <0x24>;
    						clock-frequency = <0x124f800>;
    						linux,phandle = <0x24>;
    					};
    
    					timer5_fck@518 {
    						compatible = "ti,mux-clock";
    						clocks = <0x16 0x8 0x15>;
    						#clock-cells = <0x0>;
    						reg = <0x518>;
    					};
    
    					clk_rc32k_ck {
    						compatible = "fixed-clock";
    						#clock-cells = <0x0>;
    						phandle = <0x17>;
    						clock-frequency = <0x7d00>;
    						linux,phandle = <0x17>;
    					};
    
    					mmc_clk {
    						compatible = "fixed-factor-clock";
    						clocks = <0xf>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						clock-div = <0x2>;
    					};
    
    					dpll_core_m6_ck@4d8 {
    						compatible = "ti,divider-clock";
    						clocks = <0xa>;
    						ti,max-div = <0x1f>;
    						ti,index-starts-at-one;
    						#clock-cells = <0x0>;
    						reg = <0x4d8>;
    					};
    
    					l4_rtc_gclk {
    						compatible = "fixed-factor-clock";
    						clocks = <0x12>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						clock-div = <0x2>;
    					};
    
    					clkdiv32k_ck {
    						compatible = "fixed-factor-clock";
    						clocks = <0x10>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						phandle = <0x11>;
    						linux,phandle = <0x11>;
    						clock-div = <0x2dc>;
    					};
    
    					timer3_fck@50c {
    						compatible = "ti,mux-clock";
    						clocks = <0x16 0x8 0x15>;
    						#clock-cells = <0x0>;
    						reg = <0x50c>;
    					};
    
    					timer4_fck@510 {
    						compatible = "ti,mux-clock";
    						clocks = <0x16 0x8 0x15>;
    						#clock-cells = <0x0>;
    						reg = <0x510>;
    					};
    
    					l4hs_gclk {
    						compatible = "fixed-factor-clock";
    						clocks = <0x12>;
    						clock-mult = <0x1>;
    						#clock-cells = <0x0>;
    						clock-div = <0x1>;
    					};
    
    					timer2_fck@508 {
    						compatible = "ti,mux-clock";
    						clocks = <0x16 0x8 0x15>;
    						#clock-cells = <0x0>;
    						reg = <0x508>;
    					};
    
    					clk_32768_ck {
    						compatible = "fixed-clock";
    						#clock-cells = <0x0>;
    						phandle = <0x18>;
    						clock-frequency = <0x8000>;
    						linux,phandle = <0x18>;
    					};
    
    					dpll_disp_m2_ck@4a4 {
    						compatible = "ti,divider-clock";
    						clocks = <0xd>;
    						ti,max-div = <0x1f>;
    						ti,index-starts-at-one;
    						#clock-cells = <0x0>;
    						phandle = <0x14>;
    						reg = <0x4a4>;
    						linux,phandle = <0x14>;
    						ti,set-rate-parent;
    					};
    
    					virt_24000000_ck {
    						compatible = "fixed-clock";
    						#clock-cells = <0x0>;
    						phandle = <0x25>;
    						clock-frequency = <0x16e3600>;
    						linux,phandle = <0x25>;
    					};
    
    					gpio0_dbclk@408 {
    						compatible = "ti,gate-clock";
    						clocks = <0x1b>;
    						#clock-cells = <0x0>;
    						reg = <0x408>;
    						ti,bit-shift = <0x12>;
    					};
    
    					dpll_core_x2_ck {
    						compatible = "ti,am3-dpll-x2-clock";
    						clocks = <0x9>;
    						#clock-cells = <0x0>;
    						phandle = <0xa>;
    						linux,phandle = <0xa>;
    					};
    				};
    
    				clockdomains {
    
    					clk_24mhz_clkdm {
    						compatible = "ti,clockdomain";
    						clocks = <0x15>;
    					};
    				};
    			};
    		};
    
    		tptc@49a00000 {
    			compatible = "ti,edma3-tptc";
    			ti,hwmods = "tptc2";
    			interrupts = <0x72>;
    			phandle = <0x2f>;
    			reg = <0x49a00000 0x100000>;
    			linux,phandle = <0x2f>;
    			interrupt-names = "edma3_tcerrint";
    		};
    
    		i2c@44e0b000 {
    			compatible = "ti,omap4-i2c";
    			ti,hwmods = "i2c1";
    			status = "okay";
    			#address-cells = <0x1>;
    			interrupts = <0x46>;
    			#size-cells = <0x0>;
    			reg = <0x44e0b000 0x1000>;
    			clock-frequency = <0x61a80>;
    			pinctrl-0 = <0x32>;
    			pinctrl-names = "default";
    		};
    	};
    
    	leds {
    		compatible = "gpio_leds";
    		pinctrl-0 = <0x4c>;
    		pinctrl-names = "default";
    
    		led2 {
    			gpios = <0x48 0x1a 0x0>;
    			label = "mmc1";
    			default-state = "off";
    			linux,default-trigger = "mmc1";
    		};
    
    		led0 {
    			gpios = <0x48 0x16 0x0>;
    			label = "heartbeat";
    			default-state = "off";
    			linux,default-trigger = "heartbeat";
    		};
    
    		led3 {
    			gpios = <0x48 0x1b 0x0>;
    			label = "eth0";
    			default-state = "off";
    			linux,default-trigger = "eth0";
    		};
    
    		led1 {
    			gpios = <0x48 0x17 0x0>;
    			label = "cpu0";
    			default-state = "off";
    			linux,default-trigger = "cpu0";
    		};
    	};
    
    	aliases {
    		i2c1 = "/ocp/i2c@4802a000";
    		usb1 = "/ocp/usb@47400000/usb@47401800";
    		serial5 = "/ocp/serial@481aa000";
    		d_can0 = "/ocp/can@481cc000";
    		phy1 = "/ocp/usb@47400000/usb-phy@47401b00";
    		ethernet0 = "/ocp/ethernet@4a100000/slave@4a100200";
    		serial3 = "/ocp/serial@481a6000";
    		serial1 = "/ocp/serial@48022000";
    		i2c2 = "/ocp/i2c@4819c000";
    		i2c0 = "/ocp/i2c@44e0b000";
    		d_can1 = "/ocp/can@481d0000";
    		ethernet1 = "/ocp/ethernet@4a100000/slave@4a100300";
    		usb0 = "/ocp/usb@47400000/usb@47401000";
    		serial4 = "/ocp/serial@481a8000";
    		phy0 = "/ocp/usb@47400000/usb-phy@47401300";
    		serial2 = "/ocp/serial@48024000";
    		serial0 = "/ocp/serial@44e09000";
    	};
    
    	chosen {
    		stdout-path = "/ocp/serial@44e09000";
    		bootargs = "console=ttyS0,115200 ramdisk_size=327680 root=/dev/ram0 rw rootfstype=ext2";
    		linux,initrd-start = <0x8d71b000>;
    		linux,initrd-end = <0x8ffff646>;
    	};
    
    	jtag {
    		pinxtrl-0 = <0x4d>;
    		pinctrl-names = "default";
    	};
    
    	fixedregulator@0 {
    		compatible = "regulator-fixed";
    		phandle = <0x35>;
    		regulator-min-microvolt = <0x1b7740>;
    		regulator-max-microvolt = <0x1b7740>;
    		regulator-name = "vmmcsd_fixed";
    		linux,phandle = <0x35>;
    	};
    
    	memory@80000000 {
    		device_type = "memory";
    		reg = <0x80000000 0x20000000>;
    	};
    
    	pmu {
    		compatible = "arm,cortex-a8-pmu";
    		interrupts = <0x3>;
    	};
    
    	cpus {
    		#address-cells = <0x1>;
    		#size-cells = <0x0>;
    
    		idle-states {
    
    			mpu_gate {
    				compatible = "arm,idle-state";
    				ti,idle-wkup-m3;
    				phandle = <0x4>;
    				exit-latency-us = <0x5a>;
    				entry-latency-us = <0x28>;
    				linux,phandle = <0x4>;
    				min-residency-us = <0x12c>;
    			};
    		};
    
    		cpu@0 {
    			compatible = "arm,cortex-a8";
    			clocks = <0x3>;
    			cpu-idle-states = <0x4>;
    			device_type = "cpu";
    			clock-names = "cpu";
    			enable-method = "ti,am3352";
    			operating-points-v2 = <0x2>;
    			reg = <0x0>;
    			clock-latency = <0x493e0>;
    		};
    	};
    };
    

  • Pavel Botev said:

    I have tested latest AM335x TI PSDK v4.03 on AM335x SK board. In this board we have Atheros AR8031 PHY on phy addr 0:

    phy_id = <&davinci_mdio>, <0>;

    And below is the console log I have:

    root@am335x-evm:~# dmesg | grep eth
    [    1.201493] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver Atheros 8031 ethernet
    [    1.210846] davinci_mdio 4a101000.mdio: phy[1]: device 4a101000.mdio:01, driver Atheros 8031 ethernet

    Why do you have device tree settings for 2 PHYs (phy[0] and phy[1]) when the SK board only has 1 PHY?

  • I think I have found the cause of the errors.

    If the EVM board has 1 PHY, why does the am335x-evm.dts have 2?

    &cpsw_emac0 {
            phy_id = <&davinci_mdio>, <0>;
            phy-mode = "rgmii-txid";
    };
    
    &cpsw_emac1 {
            phy_id = <&davinci_mdio>, <1>;
            phy-mode = "rgmii-txid";
    };
    

    my board has 1 PHY so I have 1 phy in the device tree I only have 1 cpsw_emac0 phy setting.

    If I add slaves <1> the errors go away.

    Is this the right thing to do?

    &davinci_mdio {
        pinctrl-names = "default";
        pintctrl-0 = <&mymdio1_pins_default>;
        status = "okay";
        reset-gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
    };
    
    &cpsw_emac0 {
        phy_id = <&davinci_mdio>, <0>;
        phy-mode = "rmii";
    };
    
    &phy_sel {
        rmii-clock-ext;
    };
    
    &mac {
        pinctrl-names = "default";
        pinctrl-0 = <&myrmii1_pins_default>;
        status = "okay";
        slaves = <1>;
    };
    
    

     

     

  • I think "slaves = <1>;" is the correct implementation. That's in line with the implementation for the AM335x BeagleBone (i.e. inside am335x-bone-common.dtsi).
  • Bill Morgan said:
    Pavel Botev

    I have tested latest AM335x TI PSDK v4.03 on AM335x SK board. In this board we have Atheros AR8031 PHY on phy addr 0:

    phy_id = <&davinci_mdio>, <0>;

    And below is the console log I have:

    root@am335x-evm:~# dmesg | grep eth
    [    1.201493] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver Atheros 8031 ethernet
    [    1.210846] davinci_mdio 4a101000.mdio: phy[1]: device 4a101000.mdio:01, driver Atheros 8031 ethernet

    Why do you have device tree settings for 2 PHYs (phy[0] and phy[1]) when the SK board only has 1 PHY?

    Bill,

    Note that we have several AM335x reference boards: EVM, SK (StarterKit), BBB, ICE. See below link:

    http://www.ti.com/product/AM3358/toolssoftware#desKits

    My console log is based on AM335x SK TMDSSK3358 board. I can see in schematic that we have two PHYs, RGMIII1 U23 and RGMII2 U24.

    Regarding AM335x EVM TMDXEVM3358, I agree with you. This EVM has only one ethernet PHY, while EVM DTS file describe two and should be fixed.

    Regards,
    Pavel

  • My mistake I was looking at EVM and not SK.

    I agree with you that:

    SK has 2 PHYs

    EVM has 1 PHYs

  • Bill,

    You were right that the am335x-evm.dts file incorrectly shows 2 PHYs. I filed a bug to have that fixed. Thanks for the note.

    Brad
  • On EVM, I wonder why Linux doesn't print an error when it tries to probe a 2nd PHY that doesn't exist.